FairShip
Loading...
Searching...
No Matches
UpstreamTagger Class Reference

Upstream Background Tagger (UBT) detector. More...

#include <UpstreamTagger.h>

Inheritance diagram for UpstreamTagger:
Collaboration diagram for UpstreamTagger:

Public Member Functions

 UpstreamTagger (const char *Name, Bool_t Active)
 
 UpstreamTagger ()
 
Bool_t ProcessHits (FairVolume *v=0) override
 
void SetZposition (Double_t z)
 
void SetBoxDimensions (Double_t x, Double_t y, Double_t z)
 
void ConstructGeometry () override
 
- Public Member Functions inherited from SHiP::Detector< UpstreamTaggerPoint >
 Detector ()=default
 
 Detector (const char *Name, Bool_t Active, Int_t detID)
 
 Detector (const char *Name, Bool_t Active)
 
 ~Detector () override=default
 
UpstreamTaggerPointAddHit (Args &&... args)
 
void ConstructGeometry () override=0
 
void Initialize () override
 
void Reset () override
 
void EndOfEvent () override
 
void Register () override
 
TClonesArray * GetCollection (Int_t iColl) const override
 
void UpdatePointTrackIndices (const std::map< Int_t, Int_t > &indexMap) override
 Update track indices in point collection after track filtering.
 
void SetSpecialPhysicsCuts () override
 
void FinishPrimary () override
 
void FinishRun () override
 
void BeginPrimary () override
 
void PostTrack () override
 
void PreTrack () override
 
void BeginEvent () override
 
void CopyClones (TClonesArray *cl1, TClonesArray *cl2, Int_t offset) override
 
- Public Member Functions inherited from ISTLPointContainer
virtual void UpdatePointTrackIndices (const std::map< Int_t, Int_t > &indexMap)=0
 Update track indices in point collection after track filtering.
 
virtual ~ISTLPointContainer ()=default
 

Public Attributes

Double_t module [11][3]
 
Double_t det_zPos
 
Double_t xbox_fulldet = 4.4 * m
 z-position of detector (set via SetZposition)
 
Double_t ybox_fulldet = 6.4 * m
 X dimension (default: 4.4 m)
 
Double_t zbox_fulldet
 Y dimension (default: 6.4 m)
 

Private Member Functions

 UpstreamTagger (const UpstreamTagger &)=delete
 
UpstreamTaggeroperator= (const UpstreamTagger &)=delete
 

Private Attributes

TGeoVolume * UpstreamTagger_fulldet
 Z dimension/thickness (default: 16 cm)
 
TGeoVolume * scoringPlaneUBText
 

Additional Inherited Members

- Protected Attributes inherited from SHiP::Detector< UpstreamTaggerPoint >
Int_t fEventID
 
Int_t fTrackID
 event index
 
Int_t fVolumeID
 track index
 
TLorentzVector fPos
 volume id
 
TLorentzVector fMom
 position at entrance
 
Double_t fTime
 momentum at entrance
 
Double_t fLength
 time
 
Double_t fELoss
 length
 
std::vector< UpstreamTaggerPoint > * fDetPoints
 energy loss
 
TGeoVolume * fDetector
 

Detailed Description

Upstream Background Tagger (UBT) detector.

The UBT is a simplified scoring plane detector implemented as a vacuum box. It serves as a background tagging device upstream of the decay volume.

Historical Note: The UBT was previously implemented as a detailed RPC (Resistive Plate Chamber) with multiple material layers (Glass, PMMA, Freon SF6, FR4, Aluminium, strips). It was simplified to a single vacuum box scoring plane to avoid geometry overlaps and reduce simulation complexity while maintaining its physics purpose. See commits 178787588 and related for the simplification history.

Current Implementation:

Definition at line 44 of file UpstreamTagger.h.

Constructor & Destructor Documentation

◆ UpstreamTagger() [1/3]

UpstreamTagger::UpstreamTagger ( const char *  Name,
Bool_t  Active 
)

Name : Detector Name Active: kTRUE for active detectors (ProcessHits() will be called) kFALSE for inactive detectors

Definition at line 53 of file UpstreamTagger.cxx.

54 : Detector(name, active, kUpstreamTagger),
55 det_zPos(0),
@ kUpstreamTagger
TGeoVolume * scoringPlaneUBText
Double_t det_zPos
TGeoVolume * UpstreamTagger_fulldet
Z dimension/thickness (default: 16 cm)

◆ UpstreamTagger() [2/3]

UpstreamTagger::UpstreamTagger ( )

default constructor

Definition at line 47 of file UpstreamTagger.cxx.

48 : Detector("UpstreamTagger", kTRUE, kUpstreamTagger),
49 det_zPos(0),

◆ UpstreamTagger() [3/3]

UpstreamTagger::UpstreamTagger ( const UpstreamTagger )
privatedelete

container for data points

Member Function Documentation

◆ ConstructGeometry()

void UpstreamTagger::ConstructGeometry ( )
overridevirtual

Create the detector geometry

Implements SHiP::Detector< UpstreamTaggerPoint >.

Definition at line 114 of file UpstreamTagger.cxx.

114 {
115 TGeoVolume* top = gGeoManager->GetTopVolume();
116
118
120
122
123 ShipGeo::InitMedium("vacuum");
124 TGeoMedium* Vacuum_box = gGeoManager->GetMedium("vacuum");
126
127 // Adding UBT Extension
128 if (!Vacuum_box) {
129 Fatal("ConstructGeometry", "Medium 'vacuum' not found.");
130 }
131
133 gGeoManager->MakeBox("Upstream_Tagger", Vacuum_box, xbox_fulldet / 2.0,
134 ybox_fulldet / 2.0, zbox_fulldet / 2.0);
135 UpstreamTagger_fulldet->SetLineColor(kGreen);
136
137 top->AddNode(UpstreamTagger_fulldet, 1,
138 new TGeoTranslation(0.0, 0.0, det_zPos));
139 AddSensitiveVolume(UpstreamTagger_fulldet);
140 cout << " Z Position (Upstream Tagger1) " << det_zPos << endl;
142
143 return;
144}
Double_t ybox_fulldet
X dimension (default: 4.4 m)
Double_t xbox_fulldet
z-position of detector (set via SetZposition)
Double_t zbox_fulldet
Y dimension (default: 6.4 m)
Int_t InitMedium(const char *name)
Definition: ShipGeoUtil.h:20

◆ operator=()

UpstreamTagger & UpstreamTagger::operator= ( const UpstreamTagger )
privatedelete

◆ ProcessHits()

Bool_t UpstreamTagger::ProcessHits ( FairVolume *  v = 0)
override

this method is called for each step during simulation (see FairMCApplication::Stepping())

This method is called from the MC stepping

Definition at line 59 of file UpstreamTagger.cxx.

59 {
61 // Set parameters at entrance of volume. Reset ELoss.
62 if (gMC->IsTrackEntering()) {
63 fELoss = 0.;
64 fTime = gMC->TrackTime() * 1.0e09;
65 fLength = gMC->TrackLength();
66 gMC->TrackPosition(fPos);
67 gMC->TrackMomentum(fMom);
68 }
69
70 // Sum energy loss for all steps in the active volume
71 fELoss += gMC->Edep();
72
73 // Create vetoPoint at exit of active volume
74 if (gMC->IsTrackExiting() || gMC->IsTrackStop() ||
75 gMC->IsTrackDisappeared()) {
76 if (fELoss == 0.) {
77 return kFALSE;
78 }
79
80 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
81 fEventID = gMC->CurrentEvent();
82 Int_t uniqueId;
83 gMC->CurrentVolID(uniqueId);
84 if (uniqueId > 1000000) // Solid scintillator case
85 {
86 Int_t vcpy;
87 gMC->CurrentVolOffID(1, vcpy);
88 if (vcpy == 5) uniqueId += 4; // Copy of half
89 }
90
91 TParticle* p = gMC->GetStack()->GetCurrentTrack();
92 Int_t pdgCode = p->GetPdgCode();
93 TLorentzVector Pos;
94 gMC->TrackPosition(Pos);
95 TLorentzVector Mom;
96 gMC->TrackMomentum(Mom);
97 Double_t xmean = (fPos.X() + Pos.X()) / 2.;
98 Double_t ymean = (fPos.Y() + Pos.Y()) / 2.;
99 Double_t zmean = (fPos.Z() + Pos.Z()) / 2.;
100
101 AddHit(fEventID, fTrackID, uniqueId, TVector3(xmean, ymean, zmean),
102 TVector3(fMom.Px(), fMom.Py(), fMom.Pz()), fTime, fLength, fELoss,
103 pdgCode, TVector3(Pos.X(), Pos.Y(), Pos.Z()),
104 TVector3(Mom.Px(), Mom.Py(), Mom.Pz()));
105
106 // Increment number of veto det points in TParticle
107 ShipStack* stack = dynamic_cast<ShipStack*>(gMC->GetStack());
108 stack->AddPoint(kUpstreamTagger);
109 }
110
111 return kTRUE;
112}
TLorentzVector fPos
volume id
Definition: Detector.h:87
Double_t fTime
momentum at entrance
Definition: Detector.h:89
UpstreamTaggerPoint * AddHit(Args &&... args)
Definition: Detector.h:38
TLorentzVector fMom
position at entrance
Definition: Detector.h:88
ROOT p
Definition: makeDecay.py:76

◆ SetBoxDimensions()

void UpstreamTagger::SetBoxDimensions ( Double_t  x,
Double_t  y,
Double_t  z 
)
inline

Definition at line 62 of file UpstreamTagger.h.

◆ SetZposition()

void UpstreamTagger::SetZposition ( Double_t  z)
inline

Sets detector position and sizes

Definition at line 61 of file UpstreamTagger.h.

61{ det_zPos = z; }

Member Data Documentation

◆ det_zPos

Double_t UpstreamTagger::det_zPos

Detector parameters.

Definition at line 76 of file UpstreamTagger.h.

◆ module

Double_t UpstreamTagger::module[11][3]

Definition at line 71 of file UpstreamTagger.h.

◆ scoringPlaneUBText

TGeoVolume* UpstreamTagger::scoringPlaneUBText
private

Definition at line 85 of file UpstreamTagger.h.

◆ UpstreamTagger_fulldet

TGeoVolume* UpstreamTagger::UpstreamTagger_fulldet
private

Z dimension/thickness (default: 16 cm)

Definition at line 84 of file UpstreamTagger.h.

◆ xbox_fulldet

Double_t UpstreamTagger::xbox_fulldet = 4.4 * m

z-position of detector (set via SetZposition)

Definition at line 78 of file UpstreamTagger.h.

◆ ybox_fulldet

Double_t UpstreamTagger::ybox_fulldet = 6.4 * m

X dimension (default: 4.4 m)

Definition at line 79 of file UpstreamTagger.h.

◆ zbox_fulldet

Double_t UpstreamTagger::zbox_fulldet
Initial value:
=
16.0 * cm
Double_t cm

Y dimension (default: 6.4 m)

Definition at line 80 of file UpstreamTagger.h.


The documentation for this class was generated from the following files: