@@ -103,6 +103,13 @@ void Detector::InitializeO2Detector()
103103Bool_t Detector::ProcessHits (FairVolume* vol)
104104{
105105 // This is step manager
106+ if (fMC ->IsTrackEntering () && !fMC ->IsNewTrack () && fMC ->TrackCharge () != 0 ) { // one reference per charged particle, first entry from outside
107+ auto o2stack = static_cast <o2::data::Stack*>(fMC ->GetStack ());
108+ if (o2stack->GetCurrentTrackNumber () != mTrackRefLastTrackID ) {
109+ mTrackRefLastTrackID = o2stack->GetCurrentTrackNumber ();
110+ o2stack->addTrackReference (o2::TrackReference (*fMC , GetDetId ()));
111+ }
112+ }
106113 // do not track neutral particles
107114 if (!(fMC ->TrackCharge ())) {
108115 return kFALSE ;
@@ -138,7 +145,7 @@ Bool_t Detector::ProcessHits(FairVolume* vol)
138145 // FDA 3 = 12-15
139146
140147 Float_t fFDDLightYield (12.8e6 );
141- // BC420 yield is 0.64 of antracene which is 20k photons/MeV = 12800/MeV = 12.8e6/GeV
148+ // BC420 yield is 0.64 of antracene which is 20k photons/MeV = 12800/MeV = 12.8e6/GeV
142149
143150 Float_t destep_ad = fMC ->Edep ();
144151 Int_t nPhotonsInStep_ad = Int_t (fFDDLightYield * destep_ad);
@@ -164,7 +171,7 @@ Bool_t Detector::ProcessHits(FairVolume* vol)
164171 if (fMC ->IsTrackExiting () || fMC ->IsTrackStop () || fMC ->IsTrackDisappeared ()) {
165172 Int_t trackID = fMC ->GetStack ()->GetCurrentTrackNumber ();
166173
167- Float_t time = fMC ->TrackTime () * 1.0e9 ; // time from seconds to ns
174+ Float_t time = fMC ->TrackTime () * 1.0e9 ; // time from seconds to ns
168175
169176 addHit (trackID, ADsector, vPos, time, eloss_ad, nPhotons_ad);
170177 return kTRUE ;
@@ -176,7 +183,7 @@ Bool_t Detector::ProcessHits(FairVolume* vol)
176183// _____________________________________________________________________________
177184Hit* Detector::addHit (int trackID, unsigned short detID, const TVector3& Pos, double Time, double eLoss, int nPhot)
178185{
179- // LOG(info) << "FDD hit "<<trackID<<" "<<detID<<" "<<Time<<" "<<eLoss<<" "<<nPhot;
186+ // LOG(info) << "FDD hit "<<trackID<<" "<<detID<<" "<<Time<<" "<<eLoss<<" "<<nPhot;
180187 mHits ->emplace_back (trackID, detID, Pos, Time, eLoss, nPhot);
181188 auto stack = (o2::data::Stack*)fMC ->GetStack ();
182189 stack->addHit (GetDetId ());
@@ -373,4 +380,5 @@ void Detector::Reset()
373380 if (!o2::utils::ShmManager::Instance ().isOperational ()) {
374381 mHits ->clear ();
375382 }
383+ mTrackRefLastTrackID = -1 ;
376384}
0 commit comments