53 FairRootManager* ioman = FairRootManager::Instance();
54 if (NULL == ioman) LOG(fatal) << GetName() <<
" Init: RootManager not instantised!";
56 fMcTracks = (TClonesArray*) ioman->GetObject(
"MCTrack");
57 if (NULL ==
fMcTracks) LOG(fatal) << GetName() <<
" Init: No MCTrack array!";
59 fTrdPoints = (TClonesArray*) ioman->GetObject(
"TrdPoint");
60 if (NULL ==
fTrdPoints) LOG(fatal) << GetName() <<
" Init: No TrdPoint array!";
62 TClonesArray* digis = (TClonesArray*) ioman->GetObject(
"TrdDigi");
69 if (NULL ==
fTrdHitMatches) LOG(fatal) << GetName() <<
"Init: No TrdHitMatch array!";
79 if (NULL == trdHits) LOG(fatal) << GetName() <<
" DoFind: No TrdHitArray!";
80 if (NULL == trdTracks) LOG(fatal) << GetName() <<
" DoFind: No TrdTrackArray!";
82 Int_t nofTrdHits = trdHits->GetEntriesFast();
85 map<Int_t, CbmTrdTrack*> mcTrackToTrdTrack;
86 for (Int_t iHit = 0; iHit < nofTrdHits; iHit++) {
88 if (NULL == trdHit)
continue;
99 if (trdPointInd < 0)
continue;
100 FairMCPoint* trdPoint =
static_cast<FairMCPoint*
>(
fTrdPoints->At(trdPointInd));
101 if (NULL == trdPoint)
continue;
103 int mcTrackInd = trdPoint->GetTrackID();
104 if (NULL == mcTrackToTrdTrack[mcTrackInd]) mcTrackToTrdTrack[mcTrackInd] =
new CbmTrdTrack();
105 mcTrackToTrdTrack[mcTrackInd]->AddHit(iHit,
kTRDHIT);
109 for (map<int, CbmTrdTrack*>::iterator it = mcTrackToTrdTrack.begin(); it != mcTrackToTrdTrack.end(); ++it) {
110 new ((*trdTracks)[trackCount])
CbmTrdTrack(*it->second);
114 return mcTrackToTrdTrack.size();