CbmRoot
CbmGlobalTrackingQA.cxx
Go to the documentation of this file.
1 /*
2  * To change this license header, choose License Headers in Project Properties.
3  * To change this template file, choose Tools | Templates
4  * and open the template in the editor.
5  */
6 
7 #include "CbmGlobalTrackingQA.h"
8 
9 #include <FairLogger.h>
10 #include <map>
11 
12 #include "CbmDigiManager.h"
13 #include "CbmGlobalTrack.h"
14 #include "CbmMCDataManager.h"
15 #include "CbmMCTrack.h"
16 #include "CbmStsCluster.h"
17 #include "CbmStsDigi.h"
18 #include "CbmStsHit.h"
19 #include "CbmStsPoint.h"
20 #include "CbmStsTrack.h"
21 #include "CbmTofPoint.h"
22 
23 using std::cout;
24 using std::endl;
25 using std::list;
26 using std::map;
27 using std::set;
28 using std::vector;
29 
30 
32 
34  // FairRootManager
35  FairRootManager* ioman = FairRootManager::Instance();
36  if (nullptr == ioman) LOG(fatal) << "No FairRootManager";
37 
38  // MC data
39  CbmMCDataManager* mcManager =
40  static_cast<CbmMCDataManager*>(ioman->GetObject("MCDataManager"));
41  if (nullptr == mcManager) LOG(fatal) << "No MC data manager";
42  fMCTracks = mcManager->InitBranch("MCTrack");
43  if (nullptr == fMCTracks) LOG(fatal) << "No MC tracks";
44  fStsMCPoints = mcManager->InitBranch("StsPoint");
45  if (nullptr == fStsMCPoints) LOG(fatal) << "No STS MC points";
46  fTofMCPoints = mcManager->InitBranch("TofPoint");
47  if (nullptr == fTofMCPoints) LOG(fatal) << "No ToF MC points";
48 
49  // Digi data
51  fDigiMan->Init();
52  if (!fDigiMan->IsPresent(ECbmModuleId::kSts)) LOG(fatal) << "No STS digis";
54  LOG(fatal) << "No STS digi matches";
55  if (!fDigiMan->IsPresent(ECbmModuleId::kTof)) LOG(fatal) << "No ToF digis";
56 
57  // STS data
58  fStsClusters = static_cast<TClonesArray*>(ioman->GetObject("StsCluster"));
59  if (nullptr == fStsClusters) LOG(fatal) << "No STS clusters";
60  fStsHits = static_cast<TClonesArray*>(ioman->GetObject("StsHit"));
61  if (nullptr == fStsHits) LOG(fatal) << "No STS hits";
62  fStsTracks = static_cast<TClonesArray*>(ioman->GetObject("StsTrack"));
63  if (nullptr == fStsTracks) LOG(fatal) << "No STS tracks";
64 
65  // TOF data
66  fTofHits = static_cast<TClonesArray*>(ioman->GetObject("TofHit"));
67  if (nullptr == fTofHits) LOG(fatal) << "No ToF hits";
68  fTofHitMatches = static_cast<TClonesArray*>(ioman->GetObject("TofHitMatch"));
69  if (nullptr == fTofHitMatches) LOG(fatal) << "No ToF hit matches";
70 
71  // Global track
72  fGlobalTracks = static_cast<TClonesArray*>(ioman->GetObject("GlobalTrack"));
73  if (nullptr == fGlobalTracks) LOG(fatal) << "No global tracks";
74 
75  // Internal arrays
76  fTracks.resize(fNofEvents);
77 
78  for (int i = 0; i < fNofEvents; ++i) {
79  int nofTracks = fMCTracks->Size(0, i);
80 
81  if (nofTracks > 0) fTracks[i].resize(nofTracks);
82 
83  vector<TrackData>& evTracks = fTracks[i];
84 
85  for (int j = 0; j < nofTracks; ++j) {
86  TrackData& track = evTracks[j];
87  track.hasSts = false;
88  track.z = -1000;
89  track.use = false;
90  track.evN = i;
91  track.ind = j;
92  track.used = false;
93  const CbmMCTrack* mcTrack =
94  static_cast<const CbmMCTrack*>(fMCTracks->Get(0, i, j));
95  int motherId = mcTrack->GetMotherId();
96 
97  if (motherId < 0)
98  track.parent = 0;
99  else {
100  track.parent = &evTracks[motherId];
101  evTracks[motherId].offsprings.push_back(&track);
102  }
103  }
104  }
105 
106 
107  fStsPoints.resize(fNofEvents);
108 
109  for (int i = 0; i < fNofEvents; ++i) {
110  int nofStsPoints = fStsMCPoints->Size(0, i);
111 
112  if (nofStsPoints > 0) fStsPoints[i].resize(nofStsPoints);
113 
114  vector<PointData>& evPoints = fStsPoints[i];
115 
116  for (int j = 0; j < nofStsPoints; ++j) {
117  PointData& point = evPoints[j];
118  point.evN = i;
119  point.ind = j;
120  const CbmStsPoint* stsPoint =
121  static_cast<const CbmStsPoint*>(fStsMCPoints->Get(0, i, j));
122  Int_t trackId = stsPoint->GetTrackID();
123  fTracks[i][trackId].hasSts = true;
124  TrackData& track = fTracks[i][trackId];
125  point.track = &track;
126  point.x = (stsPoint->GetXIn() + stsPoint->GetXOut()) / 2;
127  point.y = (stsPoint->GetYIn() + stsPoint->GetYOut()) / 2;
128  point.z = (stsPoint->GetZIn() + stsPoint->GetZOut()) / 2;
129  point.t = stsPoint->GetTime();
130  }
131  }
132 
133 
134  fTofPoints.resize(fNofEvents);
135 
136  for (int i = 0; i < fNofEvents; ++i) {
137  int nofTofPoints = fTofMCPoints->Size(0, i);
138 
139  if (nofTofPoints > 0) fTofPoints[i].resize(nofTofPoints);
140 
141  vector<PointData>& evPoints = fTofPoints[i];
142 
143  for (int j = 0; j < nofTofPoints; ++j) {
144  PointData& point = evPoints[j];
145  point.evN = i;
146  point.ind = j;
147  const CbmTofPoint* tofPoint =
148  static_cast<const CbmTofPoint*>(fTofMCPoints->Get(0, i, j));
149  Int_t trackId = tofPoint->GetTrackID();
150  TrackData& track = fTracks[i][trackId];
151  point.track = &track;
152  point.x = tofPoint->GetX();
153  point.y = tofPoint->GetY();
154  point.z = tofPoint->GetZ();
155  point.t = tofPoint->GetTime();
156  track.tofPoints.push_back(&point);
157 
158  if (track.z > 0 && !track.use) {
159  double deltaZ = point.z - track.z;
160  track.tx = (point.x - track.x) / deltaZ;
161  track.ty = (point.y - track.y) / deltaZ;
162  track.use = true;
163  }
164  }
165  }
166 
167  return kSUCCESS;
168 }
169 
171  Int_t tofHitInd,
172  bool deepSearch) const {
173  set<TrackData*> tofMCTracks;
174 
175  const CbmMatch* tofHitMatch =
176  static_cast<const CbmMatch*>(fTofHitMatches->At(tofHitInd));
177  int nofTofPoints = tofHitMatch->GetNofLinks();
178 
179  for (Int_t j = 0; j < nofTofPoints; ++j) {
180  const CbmLink& pointLnk = tofHitMatch->GetLink(j);
181  Int_t evN = pointLnk.GetEntry() - 1;
182  Int_t pointInd = pointLnk.GetIndex();
183  tofMCTracks.insert(fTofPoints[evN][pointInd].track);
184  }
185 
186 
187  for (set<TrackData*>::const_iterator i = tofMCTracks.begin();
188  i != tofMCTracks.end();
189  ++i) {
190  const TrackData* tofMCTrack = *i;
191 
192  if (deepSearch) {
193  for (const TrackData* mcTrack = tofMCTrack; 0 != mcTrack;
194  mcTrack = mcTrack->parent) {
195  if (mcTrack == stsMCTrack) return true;
196  }
197  } else if (tofMCTrack == stsMCTrack)
198  return true;
199  }
200 
201  return false;
202 }
203 
204 bool CbmGlobalTrackingQA::SemiTofTrack(const TrackData* mcTrack) const {
205  if (!mcTrack->tofPoints.empty()) return true;
206 
207  for (list<TrackData*>::const_iterator i = mcTrack->offsprings.begin();
208  i != mcTrack->offsprings.end();
209  ++i) {
210  if (SemiTofTrack(*i)) return true;
211  }
212 
213  return false;
214 }
215 
220 
225 
229 
230 void CbmGlobalTrackingQA::Exec(Option_t*) {
231  Int_t nofHits = fTofHits->GetEntriesFast();
232 
233  for (int i = 0; i < nofHits; ++i) {
234  const CbmTofHit* tofHit = static_cast<const CbmTofHit*>(fTofHits->At(i));
235  const CbmMatch* hitMatch =
236  static_cast<const CbmMatch*>(fTofHitMatches->At(i));
237  int nofPoints = hitMatch->GetNofLinks();
238  for (Int_t k = 0; k < nofPoints; ++k) {
239  const CbmLink& pointLnk = hitMatch->GetLink(k);
240  Int_t evN = pointLnk.GetEntry() - 1;
241  Int_t pointInd = pointLnk.GetIndex();
242  const PointData& point = fTofPoints[evN][pointInd];
243  point.track->tofHits.insert(tofHit);
244  }
245  } //for (int i = 0; i < nofHits; ++i)
246 
247  int nofGlobalTracks = fGlobalTracks->GetEntriesFast();
248 
249  for (int i = 0; i < nofGlobalTracks; ++i) {
250  const CbmGlobalTrack* globalTrack =
251  static_cast<const CbmGlobalTrack*>(fGlobalTracks->At(i));
252  int stsTrackInd = globalTrack->GetStsTrackIndex();
253 
254  if (stsTrackInd < 0) continue;
255 
256  const CbmStsTrack* stsTrack =
257  static_cast<const CbmStsTrack*>(fStsTracks->At(stsTrackInd));
258  map<TrackData*, int> stsMCTracks;
259  int nofStsHits = stsTrack->GetNofHits();
260  int nofStsMatches = 0;
261 
262  for (int j = 0; j < nofStsHits; ++j) {
263  int stsHitInd = stsTrack->GetHitIndex(j);
264  const CbmStsHit* stsHit =
265  static_cast<const CbmStsHit*>(fStsHits->At(stsHitInd));
266  int frontClusterInd = stsHit->GetFrontClusterId();
267  int backClusterInd = stsHit->GetBackClusterId();
268  const CbmStsCluster* frontCluster =
269  static_cast<const CbmStsCluster*>(fStsClusters->At(frontClusterInd));
270  const CbmStsCluster* backCluster =
271  static_cast<const CbmStsCluster*>(fStsClusters->At(backClusterInd));
272  int nofFrontDigis = frontCluster->GetNofDigis();
273 
274  for (int k = 0; k < nofFrontDigis; ++k) {
275  int stsDigiInd = frontCluster->GetDigi(k);
276  const CbmMatch* stsDigiMatch =
277  fDigiMan->GetMatch(ECbmModuleId::kSts, stsDigiInd);
278  int nofLinks = stsDigiMatch->GetNofLinks();
279 
280  for (int l = 0; l < nofLinks; ++l) {
281  const CbmLink& link = stsDigiMatch->GetLink(l);
282  int eventId = link.GetEntry();
283  int mcPointId = link.GetIndex();
284  ++nofStsMatches;
285  map<TrackData*, int>::iterator iter =
286  stsMCTracks.find(fStsPoints[eventId][mcPointId].track);
287 
288  if (iter != stsMCTracks.end())
289  ++iter->second;
290  else
291  stsMCTracks[fStsPoints[eventId][mcPointId].track] = 1;
292  }
293  }
294 
295  int nofBackDigis = backCluster->GetNofDigis();
296 
297  for (int k = 0; k < nofBackDigis; ++k) {
298  int stsDigiInd = backCluster->GetDigi(k);
299  const CbmMatch* stsDigiMatch =
300  fDigiMan->GetMatch(ECbmModuleId::kSts, stsDigiInd);
301  int nofLinks = stsDigiMatch->GetNofLinks();
302 
303  for (int l = 0; l < nofLinks; ++l) {
304  const CbmLink& link = stsDigiMatch->GetLink(l);
305  int eventId = link.GetEntry();
306  int mcPointId = link.GetIndex();
307  ++nofStsMatches;
308  map<TrackData*, int>::iterator iter =
309  stsMCTracks.find(fStsPoints[eventId][mcPointId].track);
310 
311  if (iter != stsMCTracks.end())
312  ++iter->second;
313  else
314  stsMCTracks[fStsPoints[eventId][mcPointId].track] = 1;
315  }
316  }
317  } // for (int j = 0; j < nofStsHits; ++j)
318 
319  if (stsMCTracks.empty()) continue;
320 
321  map<TrackData*, int>::iterator lastStsTrackIter = stsMCTracks.end();
322  --lastStsTrackIter;
323 
324  if (lastStsTrackIter->second < 0.7 * nofStsMatches) continue;
325 
326  int tofHitInd = globalTrack->GetTofHitIndex();
327 
328  if (lastStsTrackIter->first->tofPoints.empty()) {
329  if (SemiTofTrack(lastStsTrackIter->first)) {
331 
332  if (tofHitInd >= 0) {
333  if (CheckMatch(lastStsTrackIter->first, tofHitInd, true))
335  else
337  } else
339  } else {
340  ++nofNonTofTracks;
341 
342  if (tofHitInd >= 0)
344  else
346  }
347  }
348 
349  if (lastStsTrackIter->first->tofPoints.empty()
350  || lastStsTrackIter->first->tofHits.empty())
351  continue;
352 
354 
355  if (tofHitInd < 0) {
357  continue;
358  }
359 
360  if (CheckMatch(lastStsTrackIter->first, tofHitInd))
362  else
364  } //for (int i = 0; i < nofGlobalTracks; ++i)
365 }
366 
368  double eff = 100 * nofCorMergedReferenceTofTracks;
369  eff /= nofReferenceTofTracks;
370  cout << "The correctly merged reference tracks: " << eff << " % ["
372  << " ]" << endl;
373  eff = 100 * nofWroMergedReferenceTofTracks;
374  eff /= nofReferenceTofTracks;
375  cout << "The incorrectly merged reference tracks: " << eff << " % ["
377  << " ]" << endl;
378  eff = 100 * nofNonMergedReferenceTofTracks;
379  eff /= nofReferenceTofTracks;
380  cout << "The non merged reference tracks: " << eff << " % ["
382  << " ]" << endl;
383 
384  eff = 100 * nofCorMergedSemiTofTracks;
385  eff /= nofSemiTofTracks;
386  cout << "The correctly merged semi ToF tracks: " << eff << " % ["
387  << nofCorMergedSemiTofTracks << " / " << nofSemiTofTracks << " ]"
388  << endl;
389  eff = 100 * nofWroMergedSemiTofTracks;
390  eff /= nofSemiTofTracks;
391  cout << "The incorrectly merged semi ToF tracks: " << eff << " % ["
392  << nofWroMergedSemiTofTracks << " / " << nofSemiTofTracks << " ]"
393  << endl;
394  eff = 100 * nofNonMergedReferenceTofTracks;
395  eff /= nofSemiTofTracks;
396  cout << "The non merged semi ToF tracks: " << eff << " % ["
397  << nofNonMergedReferenceTofTracks << " / " << nofSemiTofTracks << " ]"
398  << endl;
399 
400  eff = 100 * nofMergedNonTofTracks;
401  eff /= nofNonTofTracks;
402  cout << "The merged non ToF tracks: " << eff << " % ["
403  << nofMergedNonTofTracks << " / " << nofNonTofTracks << " ]" << endl;
404  eff = 100 * nofNonMergedNonTofTracks;
405  eff /= nofNonTofTracks;
406  cout << "The non merged non ToF tracks: " << eff << " % ["
407  << nofNonMergedNonTofTracks << " / " << nofNonTofTracks << " ]" << endl;
408 }
409 
CbmMCTrack::GetMotherId
Int_t GetMotherId() const
Definition: CbmMCTrack.h:71
CbmGlobalTrackingQA::fGlobalTracks
TClonesArray * fGlobalTracks
Definition: CbmGlobalTrackingQA.h:104
CbmGlobalTrackingQA::fMCTracks
CbmMCDataArray * fMCTracks
Definition: CbmGlobalTrackingQA.h:108
CbmMatch
Definition: CbmMatch.h:22
CbmMCDataManager.h
CbmGlobalTrackingQA::TrackData::tofHits
std::set< const CbmTofHit * > tofHits
Definition: CbmGlobalTrackingQA.h:47
CbmMatch::GetLink
const CbmLink & GetLink(Int_t i) const
Definition: CbmMatch.h:35
CbmMatch::GetNofLinks
Int_t GetNofLinks() const
Definition: CbmMatch.h:38
CbmGlobalTrackingQA::PointData::ind
int ind
Definition: CbmGlobalTrackingQA.h:79
CbmStsCluster
Data class for STS clusters.
Definition: CbmStsCluster.h:31
CbmStsPoint::GetXOut
Double_t GetXOut() const
Definition: CbmStsPoint.h:84
CbmGlobalTrackingQA::fTofMCPoints
CbmMCDataArray * fTofMCPoints
Definition: CbmGlobalTrackingQA.h:111
CbmGlobalTrackingQA::PointData::y
scaltype y
Definition: CbmGlobalTrackingQA.h:74
CbmGlobalTrackingQA
Definition: CbmGlobalTrackingQA.h:31
CbmMCDataArray::Size
Int_t Size(Int_t fileNumber, Int_t eventNumber)
Definition: CbmMCDataArray.cxx:133
CbmDigiManager::Init
InitStatus Init()
Initialisation.
Definition: CbmDigiManager.cxx:71
CbmGlobalTrackingQA::fTofHitMatches
TClonesArray * fTofHitMatches
Definition: CbmGlobalTrackingQA.h:105
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmGlobalTrackingQA::fStsMCPoints
CbmMCDataArray * fStsMCPoints
Definition: CbmGlobalTrackingQA.h:109
CbmMCDataManager::InitBranch
CbmMCDataArray * InitBranch(const char *name)
Definition: CbmMCDataManager.cxx:106
CbmGlobalTrack.h
CbmStsPoint::GetZOut
Double_t GetZOut() const
Definition: CbmStsPoint.h:86
CbmStsHit::GetFrontClusterId
Int_t GetFrontClusterId() const
Definition: CbmStsHit.h:93
CbmGlobalTrackingQA::PointData
Definition: CbmGlobalTrackingQA.h:72
CbmGlobalTrackingQA.h
nofReferenceTofTracks
int nofReferenceTofTracks
Definition: CbmGlobalTrackingQA.cxx:216
CbmGlobalTrackingQA::PointData::track
TrackData * track
Definition: CbmGlobalTrackingQA.h:77
ECbmModuleId::kTof
@ kTof
Time-of-flight Detector.
CbmStsPoint
Definition: CbmStsPoint.h:27
CbmGlobalTrackingQA::TrackData::offsprings
std::list< TrackData * > offsprings
Definition: CbmGlobalTrackingQA.h:50
CbmGlobalTrackingQA::fStsHits
TClonesArray * fStsHits
Definition: CbmGlobalTrackingQA.h:106
CbmDigiManager::IsPresent
static Bool_t IsPresent(ECbmModuleId systemId)
Presence of a digi branch.
Definition: CbmDigiManager.cxx:112
CbmStsTrack::GetNofHits
virtual Int_t GetNofHits() const
Definition: CbmStsTrack.h:76
CbmGlobalTrackingQA::fTracks
std::vector< std::vector< TrackData > > fTracks
Definition: CbmGlobalTrackingQA.h:112
CbmDigiManager::Instance
static CbmDigiManager * Instance()
Static instance.
Definition: CbmDigiManager.h:93
CbmGlobalTrackingQA::PointData::x
scaltype x
Definition: CbmGlobalTrackingQA.h:73
CbmCluster::GetNofDigis
Int_t GetNofDigis() const
Number of digis in cluster.
Definition: CbmCluster.h:69
CbmDigiManager::IsMatchPresent
static Bool_t IsMatchPresent(ECbmModuleId systemId)
Presence of a digi match branch.
Definition: CbmDigiManager.cxx:104
CbmGlobalTrackingQA::TrackData::hasSts
bool hasSts
Definition: CbmGlobalTrackingQA.h:36
CbmGlobalTrackingQA::TrackData::ty
scaltype ty
Definition: CbmGlobalTrackingQA.h:42
CbmStsHit
data class for a reconstructed 3-d hit in the STS
Definition: CbmStsHit.h:31
nofWroMergedSemiTofTracks
int nofWroMergedSemiTofTracks
Definition: CbmGlobalTrackingQA.cxx:223
CbmStsDigi.h
CbmGlobalTrackingQA::TrackData::evN
int evN
Definition: CbmGlobalTrackingQA.h:45
CbmStsTrack.h
Data class for STS tracks.
CbmGlobalTrack::GetStsTrackIndex
Int_t GetStsTrackIndex() const
Definition: CbmGlobalTrack.h:38
CbmGlobalTrackingQA::SemiTofTrack
bool SemiTofTrack(const TrackData *mcTrack) const
Definition: CbmGlobalTrackingQA.cxx:204
nofWroMergedReferenceTofTracks
int nofWroMergedReferenceTofTracks
Definition: CbmGlobalTrackingQA.cxx:218
CbmGlobalTrackingQA::TrackData::tx
scaltype tx
Definition: CbmGlobalTrackingQA.h:41
CbmGlobalTrackingQA::Exec
void Exec(Option_t *opt)
Definition: CbmGlobalTrackingQA.cxx:230
nofNonTofTracks
int nofNonTofTracks
Definition: CbmGlobalTrackingQA.cxx:226
CbmGlobalTrackingQA::fDigiMan
CbmDigiManager * fDigiMan
Definition: CbmGlobalTrackingQA.h:101
CbmGlobalTrackingQA::TrackData::x
scaltype x
Definition: CbmGlobalTrackingQA.h:37
CbmGlobalTrackingQA::PointData::t
scaltype t
Definition: CbmGlobalTrackingQA.h:76
CbmMCDataArray::Get
TObject * Get(const CbmLink *lnk)
Definition: CbmMCDataArray.h:47
CbmStsPoint::GetYOut
Double_t GetYOut() const
Definition: CbmStsPoint.h:85
CbmTrack::GetHitIndex
Int_t GetHitIndex(Int_t iHit) const
Definition: CbmTrack.h:54
CbmGlobalTrackingQA::PointData::evN
int evN
Definition: CbmGlobalTrackingQA.h:78
CbmDigiManager::GetMatch
const CbmMatch * GetMatch(ECbmModuleId systemId, UInt_t index) const
Get a match object.
Definition: CbmDigiManager.cxx:54
CbmGlobalTrackingQA::TrackData::use
bool use
Definition: CbmGlobalTrackingQA.h:44
CbmGlobalTrackingQA::TrackData::z
scaltype z
Definition: CbmGlobalTrackingQA.h:39
ClassImp
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
Definition: CbmConverterManager.cxx:12
CbmStsPoint::GetXIn
Double_t GetXIn() const
Definition: CbmStsPoint.h:81
CbmGlobalTrackingQA::TrackData::y
scaltype y
Definition: CbmGlobalTrackingQA.h:38
CbmGlobalTrackingQA::fStsPoints
std::vector< std::vector< PointData > > fStsPoints
Definition: CbmGlobalTrackingQA.h:114
CbmGlobalTrackingQA::Finish
void Finish()
Definition: CbmGlobalTrackingQA.cxx:367
CbmGlobalTrackingQA::TrackData::parent
TrackData * parent
Definition: CbmGlobalTrackingQA.h:49
CbmStsPoint::GetYIn
Double_t GetYIn() const
Definition: CbmStsPoint.h:82
CbmMCDataManager
Task class creating and managing CbmMCDataArray objects.
Definition: CbmMCDataManager.h:27
CbmGlobalTrackingQA::fNofEvents
Int_t fNofEvents
Definition: CbmGlobalTrackingQA.h:115
CbmGlobalTrackingQA::PointData::z
scaltype z
Definition: CbmGlobalTrackingQA.h:75
nofCorMergedSemiTofTracks
int nofCorMergedSemiTofTracks
Definition: CbmGlobalTrackingQA.cxx:222
CbmGlobalTrackingQA::TrackData::ind
int ind
Definition: CbmGlobalTrackingQA.h:46
CbmGlobalTrack
Definition: CbmGlobalTrack.h:26
CbmStsPoint.h
CbmMCTrack.h
CbmStsHit::GetBackClusterId
Int_t GetBackClusterId() const
Definition: CbmStsHit.h:69
CbmDigiManager.h
CbmGlobalTrackingQA::fStsTracks
TClonesArray * fStsTracks
Definition: CbmGlobalTrackingQA.h:103
CbmGlobalTrackingQA::Init
InitStatus Init()
Definition: CbmGlobalTrackingQA.cxx:33
CbmMCTrack
Definition: CbmMCTrack.h:34
nofSemiTofTracks
int nofSemiTofTracks
Definition: CbmGlobalTrackingQA.cxx:221
CbmStsPoint::GetZIn
Double_t GetZIn() const
Definition: CbmStsPoint.h:83
CbmTofPoint.h
CbmGlobalTrackingQA::CheckMatch
bool CheckMatch(const TrackData *stsMCTrack, Int_t tofHitInd, bool deepSearch=false) const
Definition: CbmGlobalTrackingQA.cxx:170
nofCorMergedReferenceTofTracks
int nofCorMergedReferenceTofTracks
Definition: CbmGlobalTrackingQA.cxx:217
CbmGlobalTrackingQA::TrackData::tofPoints
std::list< PointData * > tofPoints
Definition: CbmGlobalTrackingQA.h:43
CbmGlobalTrackingQA::TrackData::used
bool used
Definition: CbmGlobalTrackingQA.h:48
CbmGlobalTrackingQA::TrackData
Definition: CbmGlobalTrackingQA.h:35
CbmTofPoint
Geometric intersection of a MC track with a TOFb detector.
Definition: CbmTofPoint.h:40
CbmTofHit
Definition: core/data/tof/CbmTofHit.h:26
CbmGlobalTrack::GetTofHitIndex
Int_t GetTofHitIndex() const
Definition: CbmGlobalTrack.h:42
CbmStsCluster.h
Data class for STS clusters.
CbmGlobalTrackingQA::CbmGlobalTrackingQA
CbmGlobalTrackingQA()
Definition: CbmGlobalTrackingQA.cxx:31
CbmGlobalTrackingQA::fTofHits
TClonesArray * fTofHits
Definition: CbmGlobalTrackingQA.h:102
CbmStsTrack
Definition: CbmStsTrack.h:37
nofNonMergedReferenceTofTracks
int nofNonMergedReferenceTofTracks
Definition: CbmGlobalTrackingQA.cxx:219
nofMergedNonTofTracks
int nofMergedNonTofTracks
Definition: CbmGlobalTrackingQA.cxx:227
ECbmModuleId::kSts
@ kSts
Silicon Tracking System.
CbmCluster::GetDigi
Int_t GetDigi(Int_t index) const
Get digi at position index.
Definition: CbmCluster.h:76
CbmGlobalTrackingQA::fStsClusters
TClonesArray * fStsClusters
Definition: CbmGlobalTrackingQA.h:107
CbmGlobalTrackingQA::fTofPoints
std::vector< std::vector< PointData > > fTofPoints
Definition: CbmGlobalTrackingQA.h:113
nofNonMergedSemiTofTracks
int nofNonMergedSemiTofTracks
Definition: CbmGlobalTrackingQA.cxx:224
CbmStsHit.h
Data class for a reconstructed hit in the STS.
nofNonMergedNonTofTracks
int nofNonMergedNonTofTracks
Definition: CbmGlobalTrackingQA.cxx:228