SND@LHC Software
Loading...
Searching...
No Matches
ShipStack Class Reference

#include <ShipStack.h>

Inheritance diagram for ShipStack:
Collaboration diagram for ShipStack:

Public Member Functions

 ShipStack (Int_t size=100)
 
virtual ~ShipStack ()
 
virtual void PushTrack (Int_t toBeDone, Int_t parentID, Int_t pdgCode, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t time, Double_t polx, Double_t poly, Double_t polz, TMCProcess proc, Int_t &ntr, Double_t weight, Int_t is)
 
virtual void PushTrack (Int_t toBeDone, Int_t parentID, Int_t pdgCode, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t time, Double_t polx, Double_t poly, Double_t polz, TMCProcess proc, Int_t &ntr, Double_t weight, Int_t is, Int_t secondParentId)
 
virtual TParticle * PopNextTrack (Int_t &iTrack)
 
virtual TParticle * PopPrimaryForTracking (Int_t iPrim)
 
virtual void SetCurrentTrack (Int_t iTrack)
 
virtual Int_t GetNtrack () const
 
virtual Int_t GetNprimary () const
 
virtual TParticle * GetCurrentTrack () const
 
virtual Int_t GetCurrentTrackNumber () const
 
virtual Int_t GetCurrentParentTrackNumber () const
 
virtual void AddParticle (TParticle *part)
 
virtual void FillTrackArray ()
 
virtual void UpdateTrackIndex (TRefArray *detArray=0)
 
virtual void Reset ()
 
virtual void Register ()
 
virtual void Print (Int_t iVerbose=0) const
 
void StoreSecondaries (Bool_t choice=kTRUE)
 
void SetMinPoints (Int_t min)
 
void SetEnergyCut (Double_t eMin)
 
void StoreMothers (Bool_t choice=kTRUE)
 
void AddPoint (DetectorId iDet)
 
void AddPoint (DetectorId iDet, Int_t iTrack)
 
TParticle * GetParticle (Int_t trackId) const
 
TClonesArray * GetListOfParticles ()
 

Private Member Functions

void SelectTracks ()
 
 ShipStack (const ShipStack &)
 
ShipStackoperator= (const ShipStack &)
 

Private Attributes

std::stack< TParticle * > fStack
 
TClonesArray * fParticles
 
TClonesArray * fTracks
 
std::map< Int_t, Bool_t > fStoreMap
 
std::map< Int_t, Bool_t >::iterator fStoreIter
 
std::map< Int_t, Int_t > fIndexMap
 
std::map< Int_t, Int_t >::iterator fIndexIter
 
std::map< std::pair< Int_t, Int_t >, Int_t > fPointsMap
 
Int_t fCurrentTrack
 
Int_t fNPrimaries
 Index of current track.
 
Int_t fNParticles
 Number of primary particles.
 
Int_t fNTracks
 Number of entries in fParticles.
 
Int_t fIndex
 Number of entries in fTracks.
 
Bool_t fStoreSecondaries
 Used for merging.
 
Int_t fMinPoints
 
Double32_t fEnergyCut
 
Bool_t fStoreMothers
 

Detailed Description

Definition at line 46 of file ShipStack.h.

Constructor & Destructor Documentation

◆ ShipStack() [1/2]

ShipStack::ShipStack ( Int_t  size = 100)

Default constructor param size Estimated track number

Definition at line 29 of file ShipStack.cxx.

30 : FairGenericStack(),
31 fStack(),
32 fParticles(new TClonesArray("TParticle", size)),
33 fTracks(new TClonesArray("ShipMCTrack", size)),
34 fStoreMap(),
35 fStoreIter(),
36 fIndexMap(),
37 fIndexIter(),
38 fPointsMap(),
39 fCurrentTrack(-1),
40 fNPrimaries(0),
41 fNParticles(0),
42 fNTracks(0),
43 fIndex(0),
44 fStoreSecondaries(kTRUE),
45 fMinPoints(1),
46 fEnergyCut(0.),
47 fStoreMothers(kTRUE)
48{
49}
Int_t fMinPoints
Definition ShipStack.h:238
Bool_t fStoreMothers
Definition ShipStack.h:240
std::map< std::pair< Int_t, Int_t >, Int_t > fPointsMap
Definition ShipStack.h:225
Int_t fNTracks
Number of entries in fParticles.
Definition ShipStack.h:232
std::map< Int_t, Int_t > fIndexMap
Definition ShipStack.h:220
Int_t fIndex
Number of entries in fTracks.
Definition ShipStack.h:233
std::map< Int_t, Bool_t >::iterator fStoreIter
Definition ShipStack.h:216
Double32_t fEnergyCut
Definition ShipStack.h:239
TClonesArray * fTracks
Definition ShipStack.h:211
Bool_t fStoreSecondaries
Used for merging.
Definition ShipStack.h:237
Int_t fNParticles
Number of primary particles.
Definition ShipStack.h:231
std::map< Int_t, Bool_t > fStoreMap
Definition ShipStack.h:215
Int_t fNPrimaries
Index of current track.
Definition ShipStack.h:230
std::stack< TParticle * > fStack
Definition ShipStack.h:201
std::map< Int_t, Int_t >::iterator fIndexIter
Definition ShipStack.h:221
TClonesArray * fParticles
Definition ShipStack.h:207
Int_t fCurrentTrack
Definition ShipStack.h:229

◆ ~ShipStack()

ShipStack::~ShipStack ( )
virtual

Destructor

Definition at line 56 of file ShipStack.cxx.

57{
58 if (fParticles) {
59 fParticles->Delete();
60 delete fParticles;
61 }
62 if (fTracks) {
63 fTracks->Delete();
64 delete fTracks;
65 }
66}

◆ ShipStack() [2/2]

ShipStack::ShipStack ( const ShipStack )
private

Member Function Documentation

◆ AddParticle()

void ShipStack::AddParticle ( TParticle *  part)
virtual

Add a TParticle to the fParticles array

Definition at line 211 of file ShipStack.cxx.

212{
213 TClonesArray& array = *fParticles;
214 TParticle* newPart = new(array[fIndex]) TParticle(*oldPart);
215 newPart->SetWeight(oldPart->GetWeight());
216 newPart->SetUniqueID(oldPart->GetUniqueID());
217 fIndex++;
218}

◆ AddPoint() [1/2]

void ShipStack::AddPoint ( DetectorId  iDet)

Increment number of points for the current track in a given detector

Parameters
iDetDetector unique identifier

Definition at line 373 of file ShipStack.cxx.

374{
375 Int_t iDet = detId;
376// cout << "Add point for Detektor" << iDet << endl;
377 pair<Int_t, Int_t> a(fCurrentTrack, iDet);
378 if ( fPointsMap.find(a) == fPointsMap.end() ) { fPointsMap[a] = 1; }
379 else { fPointsMap[a]++; }
380}

◆ AddPoint() [2/2]

void ShipStack::AddPoint ( DetectorId  iDet,
Int_t  iTrack 
)

Increment number of points for an arbitrary track in a given detector

Parameters
iDetDetector unique identifier
iTrackTrack number

Definition at line 386 of file ShipStack.cxx.

387{
388 if ( iTrack < 0 ) { return; }
389 Int_t iDet = detId;
390 pair<Int_t, Int_t> a(iTrack, iDet);
391 if ( fPointsMap.find(a) == fPointsMap.end() ) { fPointsMap[a] = 1; }
392 else { fPointsMap[a]++; }
393}

◆ FillTrackArray()

void ShipStack::FillTrackArray ( )
virtual

Fill the MCTrack output array, applying filter criteria

Definition at line 224 of file ShipStack.cxx.

225{
226
227 LOG(DEBUG) << "ShipStack: Filling MCTrack array...";
228
229 // --> Reset index map and number of output tracks
230 fIndexMap.clear();
231 fNTracks = 0;
232
233 // --> Check tracks for selection criteria
234 SelectTracks();
235
236 // --> Loop over fParticles array and copy selected tracks
237 for (Int_t iPart=0; iPart<fNParticles; iPart++) {
238
239 fStoreIter = fStoreMap.find(iPart);
240 if (fStoreIter == fStoreMap.end() ) {
241 LOGF(fatal, "ShipStack: Particle %i not found in storage map! ", iPart);
242 }
243 Bool_t store = (*fStoreIter).second;
244
245 if (store) {
247 new( (*fTracks)[fNTracks]) ShipMCTrack(GetParticle(iPart));
248 fIndexMap[iPart] = fNTracks;
249 // --> Set the number of points in the detectors for this track
250 for (Int_t iDet = kEmulsionDet; iDet < kEndOfList; iDet++) {
251 pair<Int_t, Int_t> a(iPart, iDet);
252 track->SetNPoints(iDet, fPointsMap[a]);
253 }
254 fNTracks++;
255 } else { fIndexMap[iPart] = -2; }
256
257 }
258
259 // --> Map index for primary mothers
260 fIndexMap[-1] = -1;
261
262 // --> Screen output
263 //Print(1);
264
265}
@ kEmulsionDet
@ kEndOfList
TParticle * GetParticle(Int_t trackId) const
void SelectTracks()

◆ GetCurrentParentTrackNumber()

Int_t ShipStack::GetCurrentParentTrackNumber ( ) const
virtual

Get the track number of the parent of the current track Declared in TVirtualMCStack

Definition at line 400 of file ShipStack.cxx.

401{
402 TParticle* currentPart = GetCurrentTrack();
403 if ( currentPart ) { return currentPart->GetFirstMother(); }
404 else { return -1; }
405}
virtual TParticle * GetCurrentTrack() const

◆ GetCurrentTrack()

TParticle * ShipStack::GetCurrentTrack ( ) const
virtual

Get the current track's particle Declared in TVirtualMCStack

Definition at line 198 of file ShipStack.cxx.

199{
200 TParticle* currentPart = GetParticle(fCurrentTrack);
201 if ( ! currentPart) {
202 LOG(warn) << "ShipStack: Current track not found in stack!";
203 }
204 return currentPart;
205}

◆ GetCurrentTrackNumber()

virtual Int_t ShipStack::GetCurrentTrackNumber ( ) const
inlinevirtual

Get the number of the current track Declared in TVirtualMCStack

Definition at line 137 of file ShipStack.h.

137{ return fCurrentTrack; }

◆ GetListOfParticles()

TClonesArray * ShipStack::GetListOfParticles ( )
inline

Definition at line 194 of file ShipStack.h.

194{ return fParticles; }

◆ GetNprimary()

virtual Int_t ShipStack::GetNprimary ( ) const
inlinevirtual

Get number of primary tracks Declared in TVirtualMCStack

Definition at line 125 of file ShipStack.h.

125{ return fNPrimaries; }

◆ GetNtrack()

virtual Int_t ShipStack::GetNtrack ( ) const
inlinevirtual

Get total number of tracks Declared in TVirtualMCStack

Definition at line 119 of file ShipStack.h.

119{ return fNParticles; }

◆ GetParticle()

TParticle * ShipStack::GetParticle ( Int_t  trackId) const

Accessors

Definition at line 411 of file ShipStack.cxx.

412{
413 if (trackID < 0 || trackID >= fNParticles) {
414 LOGF(fatal, "ShipStack: Particle index %i out of range. Max=%i", trackID, fNParticles);
415 }
416 return (TParticle*)fParticles->At(trackID);
417}

◆ operator=()

ShipStack & ShipStack::operator= ( const ShipStack )
private

◆ PopNextTrack()

TParticle * ShipStack::PopNextTrack ( Int_t &  iTrack)
virtual

Get next particle for tracking from the stack. Declared in TVirtualMCStack

Parameters
iTrackindex of popped track (return)
Returns
Pointer to the TParticle of the track

Definition at line 141 of file ShipStack.cxx.

142{
143
144 // If end of stack: Return empty pointer
145 if (fStack.empty()) {
146 iTrack = -1;
147 return NULL;
148 }
149
150 // If not, get next particle from stack
151 TParticle* thisParticle = fStack.top();
152 fStack.pop();
153
154 if ( !thisParticle) {
155 iTrack = 0;
156 return NULL;
157 }
158
159 fCurrentTrack = thisParticle->GetStatusCode();
160 iTrack = fCurrentTrack;
161
162 return thisParticle;
163
164}

◆ PopPrimaryForTracking()

TParticle * ShipStack::PopPrimaryForTracking ( Int_t  iPrim)
virtual

Get primary particle by index for tracking from stack Declared in TVirtualMCStack

Parameters
iPrimindex of primary particle
Returns
Pointer to the TParticle of the track

Definition at line 170 of file ShipStack.cxx.

171{
172
173 // Get the iPrimth particle from the fStack TClonesArray. This
174 // should be a primary (if the index is correct).
175
176 // Test for index
177 if (iPrim < 0 || iPrim >= fNPrimaries) {
178 LOGF(fatal, "ShipStack: Primary index out of range! %i ", iPrim);
179 }
180
181 // Return the iPrim-th TParticle from the fParticle array. This should be
182 // a primary.
183 TParticle* part = (TParticle*)fParticles->At(iPrim);
184 /* do not understand the logic behind this !!! TR July 2014
185 if ( ! (part->GetMother(0) < 0) ) {
186 fLogger->Fatal(MESSAGE_ORIGIN, "ShipStack:: Not a primary track! %i ",iPrim);
187 Fatal("ShipStack::PopPrimaryForTracking", "Not a primary track");
188 }*/
189 if(!part->TestBit(kDoneBit)) return NULL;
190 else return part;
191
192}
@ kDoneBit
Definition ShipStack.h:44

◆ Print()

void ShipStack::Print ( Int_t  iVerbose = 0) const
virtual

Output to screen

Parameters
iVerbose0=events summary, 1=track info

Definition at line 354 of file ShipStack.cxx.

355{
356 cout << "-I- ShipStack: Number of primaries = "
357 << fNPrimaries << endl;
358 cout << " Total number of particles = "
359 << fNParticles << endl;
360 cout << " Number of tracks in output = "
361 << fNTracks << endl;
362 if (iVerbose) {
363 for (Int_t iTrack=0; iTrack<fNTracks; iTrack++) {
364 ((ShipMCTrack*) fTracks->At(iTrack))->Print(iTrack);
365 }
366 }
367}
virtual void Print(Int_t iVerbose=0) const

◆ PushTrack() [1/2]

void ShipStack::PushTrack ( Int_t  toBeDone,
Int_t  parentID,
Int_t  pdgCode,
Double_t  px,
Double_t  py,
Double_t  pz,
Double_t  e,
Double_t  vx,
Double_t  vy,
Double_t  vz,
Double_t  time,
Double_t  polx,
Double_t  poly,
Double_t  polz,
TMCProcess  proc,
Int_t &  ntr,
Double_t  weight,
Int_t  is 
)
virtual

Add a TParticle to the stack. Declared in TVirtualMCStack

Parameters
toBeDoneFlag for tracking
parentIDIndex of mother particle
pdgCodeParticle type (PDG encoding)
px,py,pzMomentum components at start vertex [GeV]
eTotal energy at start vertex [GeV]
vx,vy,vzCoordinates of start vertex [cm]
timeStart time of track [s]
polx,poly,polzPolarisation vector
procProduction mechanism (VMC encoding)
ntrTrack number (filled by the stack)
weightParticle weight
isGeneration status code (whatever that means)

Definition at line 69 of file ShipStack.cxx.

75{
76
77 PushTrack( toBeDone, parentId, pdgCode,
78 px, py, pz,
79 e, vx, vy, vz,
80 time, polx, poly,
81 polz, proc, ntr,
82 weight, is, -1);
83}
virtual void PushTrack(Int_t toBeDone, Int_t parentID, Int_t pdgCode, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t time, Double_t polx, Double_t poly, Double_t polz, TMCProcess proc, Int_t &ntr, Double_t weight, Int_t is)
Definition ShipStack.cxx:69

◆ PushTrack() [2/2]

void ShipStack::PushTrack ( Int_t  toBeDone,
Int_t  parentID,
Int_t  pdgCode,
Double_t  px,
Double_t  py,
Double_t  pz,
Double_t  e,
Double_t  vx,
Double_t  vy,
Double_t  vz,
Double_t  time,
Double_t  polx,
Double_t  poly,
Double_t  polz,
TMCProcess  proc,
Int_t &  ntr,
Double_t  weight,
Int_t  is,
Int_t  secondParentId 
)
virtual

Definition at line 88 of file ShipStack.cxx.

94{
95 // cout << "ShipStack: " << fNParticles << " " << pdgCode << " " << parentId << " " << secondparentID<<" "<<proc<< endl;
96
97 // --> Get TParticle array
98 TClonesArray& partArray = *fParticles;
99
100 // --> Create new TParticle and add it to the TParticle array
101 Int_t trackId = fNParticles;
102 Int_t nPoints = 0;
103 Int_t daughter1Id = -1;
104 Int_t daughter2Id = -1;
105 TParticle* particle =
106 new(partArray[fNParticles++]) TParticle(pdgCode, trackId, parentId,nPoints,
107 daughter1Id, daughter2Id, px, py, pz, e, vx, vy, vz, time);
108// from root, how does this fit ? misuse of status and mother2 ??? status is used for trackID definetely
109// TParticle(Int_t pdg, Int_t status, Int_t mother1, Int_t mother2,
110// Int_t daughter1, Int_t daughter2, Double_t px, Double_t py, Double_t pz, Double_t etot, Double_t vx, Double_t vy, Double_t vz, Double_t time)
111 particle->SetPolarisation(polx, poly, polz);
112 particle->SetWeight(weight);
113 particle->SetUniqueID(proc);
114// TR August 2014, still trying to understand the logic of FairRoot, due to misuse of secondparentID, all is a big mess
115 if (parentId < 0){
116 particle->SetFirstMother(secondparentID);
117 particle->SetLastMother(secondparentID);
118 }
119 else {
120 particle->SetFirstMother(parentId);
121 particle->SetLastMother(parentId);
122 }
123 // --> Increment counter
124 if (parentId < 0) { fNPrimaries++; }
125
126 // --> Set argument variable
127 ntr = trackId;
128
129 // --> Push particle on the stack if toBeDone is set
130 if (toBeDone == 1) {
131 particle->SetBit(kDoneBit);
132 fStack.push(particle);
133 }
134
135}

◆ Register()

void ShipStack::Register ( )
virtual

Register the MCTrack array to the Root Manager

Definition at line 345 of file ShipStack.cxx.

346{
347 FairRootManager::Instance()->Register("MCTrack", "Stack", fTracks,kTRUE);
348}

◆ Reset()

void ShipStack::Reset ( )
virtual

Resets arrays and stack and deletes particles and tracks

Definition at line 330 of file ShipStack.cxx.

331{
332 fIndex = 0;
333 fCurrentTrack = -1;
335 while (! fStack.empty() ) { fStack.pop(); }
336 fParticles->Clear();
337 fTracks->Clear();
338 fPointsMap.clear();
339}

◆ SelectTracks()

void ShipStack::SelectTracks ( )
private

Mark tracks for output using selection criteria

Definition at line 423 of file ShipStack.cxx.

424{
425
426 // --> Clear storage map
427 fStoreMap.clear();
428
429 // --> Check particles in the fParticle array
430 for (Int_t i=0; i<fNParticles; i++) {
431
432 TParticle* thisPart = GetParticle(i);
433 Bool_t store = kTRUE;
434
435 // --> Get track parameters
436 Int_t iMother = thisPart->GetMother(0);
437 TLorentzVector p;
438 thisPart->Momentum(p);
439 Double_t energy = p.E();
440 Double_t mass = p.M();
441// Double_t mass = thisPart->GetMass();
442 Double_t eKin = energy - mass;
443
444 // --> Calculate number of points
445 Int_t nPoints = 0;
446 for (Int_t iDet = kEmulsionDet; iDet < kEndOfList; iDet++) {
447 pair<Int_t, Int_t> a(i, iDet);
448 if ( fPointsMap.find(a) != fPointsMap.end() ) {
449 nPoints += fPointsMap[a];
450 }
451 }
452
453 // --> Check for cuts (store primaries in any case)
454 if (iMother < 0) { store = kTRUE; }
455 else {
456 if (!fStoreSecondaries) { store = kFALSE; }
457 if (nPoints < fMinPoints) { store = kFALSE; }
458 if (eKin < fEnergyCut) { store = kFALSE; }
459 if ((nPoints >= fMinPoints && fMinPoints > 0) || (eKin >= fEnergyCut && fEnergyCut > 0)) {
460 store=kTRUE;
461 }
462 }
463 // --> Set storage flag
464 fStoreMap[i] = store;
465// special case for Ship generators, want to keep all original particles with their mother daughter relationship
466// independent if tracked or not. apply a dirty trick and use second mother to identify original generator particles.
467// doesn't work, always true: Int_t iMother2 = GetParticle(i)->GetMother(1); maybe should set Mother2 to -1 in the generator
468// if (iMother == iMother2) {fStoreMap[i] = kTRUE;}
469 }
470 // --> If flag is set, flag recursively mothers of selected tracks
471 if (fStoreMothers) {
472 for (Int_t i=0; i<fNParticles; i++) {
473 if (fStoreMap[i]) {
474 Int_t iMother = GetParticle(i)->GetMother(0);
475 {
476 while(iMother >= 0)
477 {
478 fStoreMap[iMother] = kTRUE;
479 iMother = GetParticle(iMother)->GetMother(0);
480 }
481 }
482 }
483 }
484 }
485
486}
int i
Definition ShipAna.py:86
mass(particle)
Definition hnl.py:47

◆ SetCurrentTrack()

virtual void ShipStack::SetCurrentTrack ( Int_t  iTrack)
inlinevirtual

Set the current track number Declared in TVirtualMCStack

Parameters
iTracktrack number

Definition at line 113 of file ShipStack.h.

113{ fCurrentTrack = iTrack; }

◆ SetEnergyCut()

void ShipStack::SetEnergyCut ( Double_t  eMin)
inline

Definition at line 175 of file ShipStack.h.

175{ fEnergyCut = eMin; }

◆ SetMinPoints()

void ShipStack::SetMinPoints ( Int_t  min)
inline

Definition at line 174 of file ShipStack.h.

174{ fMinPoints = min; }

◆ StoreMothers()

void ShipStack::StoreMothers ( Bool_t  choice = kTRUE)
inline

Definition at line 176 of file ShipStack.h.

176{ fStoreMothers = choice; }

◆ StoreSecondaries()

void ShipStack::StoreSecondaries ( Bool_t  choice = kTRUE)
inline

Modifiers

Definition at line 173 of file ShipStack.h.

173{ fStoreSecondaries = choice; }

◆ UpdateTrackIndex()

void ShipStack::UpdateTrackIndex ( TRefArray *  detArray = 0)
virtual

Update the track index in the MCTracks and MCPoints

Definition at line 271 of file ShipStack.cxx.

272{
273
274 LOG(DEBUG) << "ShipStack: Updating track indizes...";
275 Int_t nColl = 0;
276
277 // First update mother ID in MCTracks
278 for (Int_t i=0; i<fNTracks; i++) {
280 Int_t iMotherOld = track->GetMotherId();
281 fIndexIter = fIndexMap.find(iMotherOld);
282 if (fIndexIter == fIndexMap.end()) {
283 LOGF(fatal, "ShipStack: Particle index %i not found in dex map! ", iMotherOld);
284 }
285 track->SetMotherId( (*fIndexIter).second );
286 }
287
288
289 if(fDetList==0) {
290 // Now iterate through all active detectors
291 fDetIter = detList->MakeIterator();
292 fDetIter->Reset();
293 } else {
294 fDetIter->Reset();
295 }
296
297 FairDetector* det = NULL;
298 while( (det = (FairDetector*)fDetIter->Next() ) ) {
299
300
301 // --> Get hit collections from detector
302 Int_t iColl = 0;
303 TClonesArray* hitArray;
304 while ( (hitArray = det->GetCollection(iColl++)) ) {
305 nColl++;
306 Int_t nPoints = hitArray->GetEntriesFast();
307
308 // --> Update track index for all MCPoints in the collection
309 for (Int_t iPoint=0; iPoint<nPoints; iPoint++) {
310 FairMCPoint* point = (FairMCPoint*)hitArray->At(iPoint);
311 Int_t iTrack = point->GetTrackID();
312
313 fIndexIter = fIndexMap.find(iTrack);
314 if (fIndexIter == fIndexMap.end()) {
315 LOGF(fatal, "ShipStack: Particle index %i not found in index map! ", iTrack);
316 }
317 point->SetTrackID((*fIndexIter).second);
318 point->SetLink(FairLink("MCTrack", (*fIndexIter).second));
319 }
320
321 } // Collections of this detector
322 } // List of active detectors
323 LOGF(debug, "...stack and %i collections updated.", nColl);
324}

Member Data Documentation

◆ fCurrentTrack

Int_t ShipStack::fCurrentTrack
private

Some indizes and counters

Definition at line 229 of file ShipStack.h.

◆ fEnergyCut

Double32_t ShipStack::fEnergyCut
private

Definition at line 239 of file ShipStack.h.

◆ fIndex

Int_t ShipStack::fIndex
private

Number of entries in fTracks.

Definition at line 233 of file ShipStack.h.

◆ fIndexIter

std::map<Int_t,Int_t>::iterator ShipStack::fIndexIter
private

Definition at line 221 of file ShipStack.h.

◆ fIndexMap

std::map<Int_t, Int_t> ShipStack::fIndexMap
private

STL map from particle index to track index

Definition at line 220 of file ShipStack.h.

◆ fMinPoints

Int_t ShipStack::fMinPoints
private

Definition at line 238 of file ShipStack.h.

◆ fNParticles

Int_t ShipStack::fNParticles
private

Number of primary particles.

Definition at line 231 of file ShipStack.h.

◆ fNPrimaries

Int_t ShipStack::fNPrimaries
private

Index of current track.

Definition at line 230 of file ShipStack.h.

◆ fNTracks

Int_t ShipStack::fNTracks
private

Number of entries in fParticles.

Definition at line 232 of file ShipStack.h.

◆ fParticles

TClonesArray* ShipStack::fParticles
private

Array of TParticles (contains all TParticles put into or created by the transport

Definition at line 207 of file ShipStack.h.

◆ fPointsMap

std::map<std::pair<Int_t, Int_t>, Int_t> ShipStack::fPointsMap
private

STL map from track index and detector ID to number of MCPoints

Definition at line 225 of file ShipStack.h.

◆ fStack

std::stack<TParticle*> ShipStack::fStack
private

STL stack (FILO) used to handle the TParticles for tracking

Definition at line 201 of file ShipStack.h.

◆ fStoreIter

std::map<Int_t,Bool_t>::iterator ShipStack::fStoreIter
private

Definition at line 216 of file ShipStack.h.

◆ fStoreMap

std::map<Int_t, Bool_t> ShipStack::fStoreMap
private

STL map from particle index to storage flag

Definition at line 215 of file ShipStack.h.

◆ fStoreMothers

Bool_t ShipStack::fStoreMothers
private

Definition at line 240 of file ShipStack.h.

◆ fStoreSecondaries

Bool_t ShipStack::fStoreSecondaries
private

Used for merging.

Variables defining the criteria for output selection

Definition at line 237 of file ShipStack.h.

◆ fTracks

TClonesArray* ShipStack::fTracks
private

Array of FairMCTracks containg the tracks written to the output

Definition at line 211 of file ShipStack.h.


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