102 FairMCPoint* point = NULL;
115 Int_t nMCTrackSum = 0;
116 map<Int_t, Int_t>::iterator it;
117 TClonesArray *points =
nullptr;
120 Int_t nTracks = fTracks->GetEntriesFast();
121 for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
124 cout <<
"-W- CbmStsMatchTracks::Exec: Empty StsTrack at "
130 nAll = nTrue = nWrong = nFake = nMCTracks = 0;
132 if (fVerbose > 2) cout << endl <<
"Track " << iTrack <<
", Hits "
136 for (Int_t iHit=0; iHit<nHits; iHit++) {
139 cout <<
"-E- CbmStsMatchTracks::Exec: "
140 <<
"No StsHit " << iHit <<
" for track " << iTrack << endl;
144 iPoint = hit->GetRefIndex();
151 if (fPointsSi && hit->
GetStationNr() < 5 && hit->GetDx() < 0.01)
154 point = (FairMCPoint*) points->At(iPoint);
156 cout <<
"-E- CbmStsMatchTracks::Exec: "
157 <<
"Empty MCPoint " << iPoint <<
" from MapsHit " << iHit
158 <<
" (track " << iTrack <<
")" << endl;
162 iMCTrack = point->GetTrackID();
163 if ( fVerbose > 2 ) cout <<
"Track " << iTrack <<
", MAPS hit "
165 <<
", StsPoint " << iPoint <<
", MCTrack "
167 fMatchMap[iMCTrack]++;
173 for (it=fMatchMap.begin(); it!=fMatchMap.end(); it++) {
174 if (fVerbose > 2) cout << it->second
175 <<
" common points wth MCtrack "
176 << it->first << endl;
179 if ( it->second > nTrue ) {
180 iMCTrack = it->first;
184 nWrong = nAll - nTrue;
185 if (fVerbose>1) cout <<
"-I- CbmStsMatchTracks: StsTrack " << iTrack
186 <<
", MCTrack " << iMCTrack <<
", true "
187 << nTrue <<
", wrong " << nWrong <<
", fake "
188 << nFake <<
", #MCTracks " << nMCTracks << endl;
200 nMCTrackSum += nMCTracks;
207 if ( nHitSum) qTrue = Double_t(nTrueSum) / Double_t(nHitSum) * 100.;
209 Double_t qWrong = Double_t(nWrongSum) / Double_t(nHitSum) * 100.;
210 Double_t qFake = Double_t(nFakeSum) / Double_t(nHitSum) * 100.;
211 Double_t qMC = Double_t(nMCTrackSum) / Double_t(nTracks);
213 cout <<
"-------------------------------------------------------"
215 cout <<
"-I- Sts Track Matching -I-"
217 cout <<
"Reconstructed StsTracks : " << nTracks << endl;;
218 cout <<
"True hit assignments : " << qTrue <<
" %" << endl;
219 cout <<
"Wrong hit assignments : " << qWrong <<
" %" << endl;
220 cout <<
"Fake hit assignments : " << qFake <<
" %" << endl;
221 cout <<
"MCTracks per StsTrack : " << qMC << endl;
222 cout <<
"--------------------------------------------------------"
226 if ( warn) cout <<
"- ";
228 cout << setw(15) << left << fName <<
": " << setprecision(4) << setw(8)
229 << fixed << right << fTimer.RealTime() <<
" s, matches "
230 << nTracks <<
", hit quota " << qTrue <<
" %" << endl;
234 if ( warn ) fNEventsFailed++;
237 fTime += fTimer.RealTime();
238 fNTrackMatches += Double_t(nTracks);
239 fNAllHits += Double_t(nHitSum);
240 fNTrueHits += Double_t(nTrueSum);
252 FairRootManager* ioman = FairRootManager::Instance();
254 cout <<
"-E- CbmStsMatchTracks::Init: "
255 <<
"RootManager not instantised!" << endl;
260 fHits = (TClonesArray*) ioman->GetObject(
"StsHit");
262 cout <<
"-W- CbmStsMatchTracks::Init: No StsHit array!"
267 fTracks = (TClonesArray*) ioman->GetObject(
"StsTrack");
269 cout <<
"-E- CbmStsMatchTracks::Init: No StsTrack array!" << endl;
274 fPoints = (TClonesArray*) ioman->GetObject(
"StsPoint");
279 fPointsSi = (TClonesArray*) ioman->GetObject(
"SiliconPoint");
282 fMatches =
new TClonesArray(
"CbmTrackMatch",100);
283 ioman->Register(
"StsTrackMatch",
"STS", fMatches, kTRUE);
297 cout <<
"============================================================"
299 cout <<
"===== " << GetName() <<
": Run summary " << endl;
300 cout <<
"===== " << endl;
301 cout <<
"===== Good events : " << setw(6) << fNEvents << endl;
302 cout <<
"===== Failed events : " << setw(6) << fNEventsFailed << endl;
303 cout <<
"===== Average time : " << setprecision(4) << setw(8) << right
304 << fTime / Double_t(fNEvents) <<
" s" << endl;
305 cout <<
"===== " << endl;
306 cout <<
"===== Tracks per event : " << fixed << setprecision(0)
307 << fNTrackMatches / Double_t(fNEvents) << endl;
308 cout << setprecision(2);
309 cout <<
"===== True hits : " << fixed << setw(6) << right
310 << fNTrueHits / fNAllHits * 100. <<
" %" << endl;
311 cout <<
"============================================================"