CbmRoot
Loading...
Searching...
No Matches
PairAnalysisEvent.cxx
Go to the documentation of this file.
1/* Copyright (C) 2015-2020 Justus-Liebig-Universitaet Giessen, Giessen
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Julian Book [committer], Florian Uhlig */
4/*
5 Event that holds all information needed for the of analysis (including fast simulations).
6 Init() the PairAnalysisTrack array fTracks and provides easy access to:
7
8 hits GetHits( ECbmModuleId det)
9 hit matches GetHitMatches(ECbmModuleId det)
10 points GetPoints( ECbmModuleId det)
11
12 clusters GetCluster( ECbmModuleId det)
13
14 for each sub-detector.
15
16*/
17
18#include "PairAnalysisEvent.h"
19
20#include "CbmGlobalTrack.h"
21#include "CbmKFVertex.h"
22#include "CbmMCTrack.h"
23#include "CbmMuchTrack.h"
24#include "CbmRichRing.h"
25#include "CbmStsTrack.h"
26#include "CbmTofHit.h"
27#include "CbmTrackMatchNew.h"
28#include "CbmTrdTrack.h"
29#include "CbmVertex.h"
30
31#include "FairMCEventHeader.h"
32#include "FairMCPoint.h"
33#include "FairRootManager.h"
34#include "FairTrackParam.h"
35
36#include <Rtypes.h>
37#include <TArrayS.h>
38#include <TMatrixFSym.h>
39#include <TObjArray.h>
40#include <TParticle.h>
41
42#include "PairAnalysisTrack.h"
43
45
47 : TNamed()
48 , fTracks(new TObjArray(1)) // array of papa tracks
49{
50 //
51 // Default Constructor
52 //
53 fTracks->SetOwner(kTRUE);
54}
55
56//______________________________________________
57PairAnalysisEvent::PairAnalysisEvent(const char* name, const char* title)
58 : TNamed(name, title)
59 , fTracks(new TObjArray(1)) // array of papa tracks
60{
61 //
62 // Named Constructor
63 //
64 fTracks->SetOwner(kTRUE);
65}
66
67//______________________________________________
69{
70 //
71 // Default Destructor
72 //
73 delete fPrimVertex;
74
75 // fTracks->Clear("C");
76 fGlobalTracks->Delete(); //global tracks
77 fMCHeader->Delete(); //mc tracks
78 fEvHeader->Delete(); //rec header
79 fMCTracks->Delete(); //mc tracks
80
81 fTrdTracks->Delete(); //TRD tracks
82 fStsTracks->Delete(); //STS tracks
83 fMuchTracks->Delete(); //MUCH tracks
84 fRichRings->Delete(); //RICH rings
85
86 fStsMatches->Delete(); //STS matches
87 fMuchMatches->Delete(); //MUCH matches
88 fTrdMatches->Delete(); //TRD matches
89 fRichMatches->Delete(); //RICH matches
90
91 fMvdPoints->Delete(); //MVD hits
92 fStsPoints->Delete(); //STS hits
93 fMuchPoints->Delete(); //MUCH hits
94 fRichPoints->Delete(); //RICH hits
95 fTrdPoints->Delete(); //TRD hits
96 fTofPoints->Delete(); //TOF matches
97
98 fMvdHits->Delete(); //MVD hits
99 fStsHits->Delete(); //STS hits
100 fMuchHits->Delete(); //MUCH hits
101 fMuchHitsStraw->Delete(); //MUCH hits
102 fTrdHits->Delete(); //TRD hits
103 fRichHits->Delete(); //RICH hits
104 fTofHits->Delete(); //TOF hits
105
106 fTrdCluster->Delete(); //TRD cluster
107
108 fRichProjection->Delete();
109 fMvdHitMatches->Delete(); //MVD hits
110 fStsHitMatches->Delete(); //STS hits
111 fMuchHitMatches->Delete(); //MUCH hits
112 fRichHitMatches->Delete(); //RICH hits
113 fTrdHitMatches->Delete(); //TRD hits
114 fTofHitMatches->Delete(); //TOF hits
115
116 fFastTracks->Delete();
117}
118
119//______________________________________________
120void PairAnalysisEvent::SetInput(FairRootManager* man)
121{
122 //
123 // setup the track/hit branches
124 //
125 fGlobalTracks = (TClonesArray*) man->GetObject("GlobalTrack");
126 fTrdTracks = (TClonesArray*) man->GetObject("TrdTrack");
127 fStsTracks = (TClonesArray*) man->GetObject("StsTrack");
128 fMuchTracks = (TClonesArray*) man->GetObject("MuchTrack");
129 fRichRings = (TClonesArray*) man->GetObject("RichRing");
130 // fPrimVertex = (CbmVertex*) man->GetObject("PrimaryVertex"); // Get pointer to PrimaryVertex object from IOManager if it exists
131 // Get pointer to PrimaryVertex object from IOManager if it exists
132 // The old name for the object is "PrimaryVertex" the new one
133 // "PrimaryVertex." Check first for the new name
134 fPrimVertex = dynamic_cast<CbmVertex*>(man->GetObject("PrimaryVertex."));
135 if (nullptr == fPrimVertex) { fPrimVertex = dynamic_cast<CbmVertex*>(man->GetObject("PrimaryVertex")); }
136 // MC matches and tracks
137 fMCHeader = (FairMCEventHeader*) man->GetObject("MCEventHeader.");
138 fEvHeader = (FairEventHeader*) man->GetObject("EventHeader.");
139 fMCTracks = (TClonesArray*) man->GetObject("MCTrack");
140 fStsMatches = (TClonesArray*) man->GetObject("StsTrackMatch");
141 fMuchMatches = (TClonesArray*) man->GetObject("MuchTrackMatch");
142 fTrdMatches = (TClonesArray*) man->GetObject("TrdTrackMatch");
143 fRichMatches = (TClonesArray*) man->GetObject("RichRingMatch");
144 // hits
145 fMvdHits = (TClonesArray*) man->GetObject("MvdHit");
146 fStsHits = (TClonesArray*) man->GetObject("StsHit");
147 fMuchHits = (TClonesArray*) man->GetObject("MuchPixelHit");
148 fMuchHitsStraw = (TClonesArray*) man->GetObject("MuchStrawHit");
149 fTrdHits = (TClonesArray*) man->GetObject("TrdHit");
150 fRichHits = (TClonesArray*) man->GetObject("RichHit");
151 fTofHits = (TClonesArray*) man->GetObject("TofHit");
152 // hit matches (matches are accessed directly via CbmHit::GetMatch)
153 fMvdHitMatches = (TClonesArray*) man->GetObject("MvdHitMatch"); //needed for mvd matching
154 fStsHitMatches = (TClonesArray*) man->GetObject("StsHitMatch");
155 fRichHitMatches = (TClonesArray*) man->GetObject("RichHitMatch");
156 fTrdHitMatches = (TClonesArray*) man->GetObject("TrdHitMatch");
157 fTofHitMatches = (TClonesArray*) man->GetObject("TofHitMatch");
158 fMuchHitMatches = (TClonesArray*) man->GetObject("MuchPixelHitMatch");
159 // fMuchHitStrawMatches = (TClonesArray*) man->GetObject("MuchStrawHitMatch");
160 // mc points
161 fMvdPoints = (TClonesArray*) man->GetObject("MvdPoint");
162 fStsPoints = (TClonesArray*) man->GetObject("StsPoint");
163 fRichPoints = (TClonesArray*) man->GetObject("RichPoint");
164 fMuchPoints = (TClonesArray*) man->GetObject("MuchPoint");
165 fTrdPoints = (TClonesArray*) man->GetObject("TrdPoint");
166 fTofPoints = (TClonesArray*) man->GetObject("TofPoint");
167 // cluster
168 fTrdCluster = (TClonesArray*) man->GetObject("TrdCluster");
169
170 fRichProjection = (TClonesArray*) man->GetObject("RichProjection");
171 // fast track
172 fFastTracks = (TClonesArray*) man->GetObject("FastTrack");
173
174 // if(fMCTracks) printf("PairAnalysisEvent::SetInput: size of mc array: %04d \n",fMCTracks->GetSize());
175}
176
177//______________________________________________
179{
180 //
181 // initialization of track arrays
182 //
183 fTracks->Clear("C");
184 if (!fGlobalTracks && !fFastTracks) return;
185
186 // DEBUG stuff
187 if (0) {
188 fprintf(stderr, "check %s: has %d points in %p \n", "MVD", GetNumberOfPoints(ECbmModuleId::kMvd),
190 fprintf(stderr, "check %s: has %d points in %p \n", "STS", GetNumberOfPoints(ECbmModuleId::kSts),
192 fprintf(stderr, "check %s: has %d points in %p \n", "RICH", GetNumberOfPoints(ECbmModuleId::kRich),
194 fprintf(stderr, "check %s: has %d points in %p \n", "TRD", GetNumberOfPoints(ECbmModuleId::kTrd),
196 fprintf(stderr, "check %s: has %d points in %p \n", "TOF", GetNumberOfPoints(ECbmModuleId::kTof),
198
199 fprintf(stderr, "check %s: has %d hitMatches in %p \n", "MVD", GetNumberOfHitMatches(ECbmModuleId::kMvd),
201 fprintf(stderr, "check %s: has %d hitMatches in %p \n", "STS", GetNumberOfHitMatches(ECbmModuleId::kSts),
203 fprintf(stderr, "check %s: has %d hitMatches in %p \n", "RICH", GetNumberOfHitMatches(ECbmModuleId::kRich),
205 fprintf(stderr, "check %s: has %d hitMatches in %p \n", "TRD", GetNumberOfHitMatches(ECbmModuleId::kTrd),
207 fprintf(stderr, "check %s: has %d hitMatches in %p \n", "TOF", GetNumberOfHitMatches(ECbmModuleId::kTof),
209
210 fprintf(stderr, "check %s: has %d hits in %p \n", "MVD", GetNumberOfHits(ECbmModuleId::kMvd),
212 fprintf(stderr, "check %s: has %d hits in %p \n", "STS", GetNumberOfHits(ECbmModuleId::kSts),
214 fprintf(stderr, "check %s: has %d hits in %p \n", "RICH", GetNumberOfHits(ECbmModuleId::kRich),
216 fprintf(stderr, "check %s: has %d hits in %p \n", "TRD", GetNumberOfHits(ECbmModuleId::kTrd),
218 fprintf(stderr, "check %s: has %d hits in %p \n", "TOF", GetNumberOfHits(ECbmModuleId::kTof),
220 }
221
222 // get primary kf vertex or create one from mc header
223 CbmKFVertex* vtx = 0x0;
224 if (!fPrimVertex && fMCHeader) {
225 TMatrixFSym cov(3);
226 fPrimVertex = new CbmVertex("mcvtx", "mc vtx", fMCHeader->GetX(), fMCHeader->GetY(), fMCHeader->GetZ(), 1.0, 1,
227 fMCHeader->GetNPrim(), cov);
228 }
229 else if (!fPrimVertex && !fMCHeader) {
230 TMatrixFSym cov(3);
231 fPrimVertex = new CbmVertex("defaultvtx", "default vtx", 0., 0., 0., 1.0, 1,
232 TMath::Max(fGlobalTracks->GetEntriesFast(), fFastTracks->GetEntriesFast()), cov);
233 }
234 if (fPrimVertex) vtx = new CbmKFVertex(*fPrimVertex);
235
236 TArrayS matches;
237 if (fMCTracks) matches.Set(fMCTracks->GetEntriesFast());
238
240 for (Int_t i = 0; i < (fGlobalTracks ? fGlobalTracks->GetEntriesFast() : 0); i++) {
241 // global track
242 CbmGlobalTrack* gtrk = static_cast<CbmGlobalTrack*>(fGlobalTracks->UncheckedAt(i));
243 if (!gtrk) continue;
244
245 Int_t itrd = gtrk->GetTrdTrackIndex();
246 Int_t ists = gtrk->GetStsTrackIndex();
247 Int_t irich = gtrk->GetRichRingIndex();
248 Int_t itof = gtrk->GetTofHitIndex();
249 Int_t imuch = gtrk->GetMuchTrackIndex();
250
251 // reconstructed tracks
252 CbmTrdTrack* trdTrack = 0x0;
253 if (fTrdTracks && itrd >= 0) trdTrack = static_cast<CbmTrdTrack*>(fTrdTracks->At(itrd));
254 CbmStsTrack* stsTrack = 0x0;
255 if (fStsTracks && ists >= 0) stsTrack = static_cast<CbmStsTrack*>(fStsTracks->At(ists));
256 CbmRichRing* richRing = 0x0;
257 if (fRichRings && irich >= 0) richRing = static_cast<CbmRichRing*>(fRichRings->At(irich));
258 CbmTofHit* tofHit = 0x0;
259 if (fTofHits && itof >= 0) tofHit = static_cast<CbmTofHit*>(fTofHits->At(itof));
260 CbmMuchTrack* muchTrack = 0x0;
261 if (fMuchTracks && imuch >= 0) muchTrack = static_cast<CbmMuchTrack*>(fMuchTracks->At(imuch));
262
263 // track and TOFhit matches
264 CbmTrackMatchNew* stsMatch = 0x0;
265 if (fStsMatches && stsTrack) stsMatch = static_cast<CbmTrackMatchNew*>(fStsMatches->At(ists));
266 Int_t istsMC = (stsMatch && stsMatch->GetNofHits() > 0 ? stsMatch->GetMatchedLink().GetIndex() : -1);
267 CbmTrackMatchNew* muchMatch = 0x0;
268 if (fMuchMatches && muchTrack) muchMatch = static_cast<CbmTrackMatchNew*>(fMuchMatches->At(imuch));
269 Int_t imuchMC = (muchMatch && muchMatch->GetNofHits() > 0 ? muchMatch->GetMatchedLink().GetIndex() : -1);
270 CbmTrackMatchNew* trdMatch = 0x0;
271 if (fTrdMatches && trdTrack) trdMatch = static_cast<CbmTrackMatchNew*>(fTrdMatches->At(itrd));
272 Int_t itrdMC = (trdMatch ? trdMatch->GetMatchedLink().GetIndex() : -1);
273 CbmTrackMatchNew* richMatch = 0x0;
274 if (fRichMatches && richRing) richMatch = static_cast<CbmTrackMatchNew*>(fRichMatches->At(irich));
275 Int_t irichMC = (richMatch && richMatch->GetNofHits() > 0 ? richMatch->GetMatchedLink().GetIndex() : -1);
276 CbmMatch* tofMatch = 0x0;
277 if (fTofHitMatches && tofHit)
278 tofMatch = static_cast<CbmMatch*>(fTofHitMatches->At(itof)); //tofMatch = tofHit->GetMatch();
279 FairMCPoint* tofPoint = 0x0;
280 if (tofMatch && tofMatch->GetNofLinks() > 0)
281 tofPoint = static_cast<FairMCPoint*>(fTofPoints->At(tofMatch->GetMatchedLink().GetIndex()));
282 Int_t itofMC = (tofPoint ? tofPoint->GetTrackID() : -1);
283
284 Int_t imvdMC = GetMvdMatchingIndex(stsTrack);
285
286 // rich projection
287 FairTrackParam* richProj = 0x0;
288 if (fRichProjection) richProj = static_cast<FairTrackParam*>(fRichProjection->At(i));
289
290 // monte carlo track based on the STS match!!!
291 Int_t iMC = istsMC;
292 CbmMCTrack* mcTrack = 0x0;
293 if (fMCTracks && iMC >= 0) mcTrack = static_cast<CbmMCTrack*>(fMCTracks->At(iMC));
294 // increment position in matching array
295 if (mcTrack && fMCTracks) matches[iMC]++;
296
297 // build papa track
298 fTracks->AddAtAndExpand(new PairAnalysisTrack(vtx, gtrk, stsTrack, muchTrack, trdTrack, richRing, tofHit, mcTrack,
299 stsMatch, muchMatch, trdMatch, richMatch, richProj, i),
300 i);
301
302 // set MC label and matching bits
303 PairAnalysisTrack* tr = static_cast<PairAnalysisTrack*>(fTracks->UncheckedAt(i));
304 if (iMC < 0) iMC = -999; // STS tracks w/o MC matching
305 tr->SetLabel(iMC);
306 // NOTE: sts track matching might include mvd points
307 tr->SetBit(BIT(14 + ToIntegralType(ECbmModuleId::kMvd)), (iMC == imvdMC));
308 tr->SetBit(BIT(14 + ToIntegralType(ECbmModuleId::kSts)), (iMC == istsMC));
309 tr->SetBit(BIT(14 + ToIntegralType(ECbmModuleId::kRich)), (iMC == irichMC));
310 tr->SetBit(BIT(14 + ToIntegralType(ECbmModuleId::kTrd)), (iMC == itrdMC));
311 tr->SetBit(BIT(14 + ToIntegralType(ECbmModuleId::kTof)), (iMC == itofMC));
312 tr->SetBit(BIT(14 + ToIntegralType(ECbmModuleId::kMuch)), (iMC == imuchMC));
313 }
314
315 // loop over all fast tracks and add them
316 // NOTE: only when there are no global tracks
317 if (!fGlobalTracks || !fGlobalTracks->GetEntriesFast()) {
318
319 // loop over all fast tracks
320 for (Int_t i = 0; i < (fFastTracks ? fFastTracks->GetEntriesFast() : 0); i++) {
321 // fast(sim) track
322 TParticle* ftrk = static_cast<TParticle*>(fFastTracks->UncheckedAt(i));
323 if (!ftrk) continue;
324
325 // monte carlo track
326 Int_t iMC = ftrk->GetFirstMother();
327 CbmMCTrack* mcTrack = 0x0;
328 if (fMCTracks && iMC >= 0) mcTrack = static_cast<CbmMCTrack*>(fMCTracks->At(iMC));
329 // increment position in matching array
330 if (mcTrack && fMCTracks) matches[iMC]++;
331 // build papa track
332 fTracks->AddAtAndExpand(new PairAnalysisTrack(ftrk, mcTrack), i);
333 }
334 }
335
336 // number of multiple matched tracks
337 fMultiMatch = (Int_t) matches.GetSum();
338}
339
340
341//______________________________________________
343{
344 //
345 // intialize the papa track and return it
346 //
347
348 // check intitialisation
349 if (fTracks->GetSize() < 0 || UInt_t(fTracks->GetSize()) <= pos || !fTracks->UncheckedAt(pos))
350 Fatal("PairAnalysisEvent::GetTrack", "Event initialisation failed somehow !!!");
351
352 return static_cast<PairAnalysisTrack*>(fTracks->UncheckedAt(pos));
353}
354
355//______________________________________________
357{
358 //
359 // number of track matches
360 //
361 switch (det) {
362 case ECbmModuleId::kSts: return (fStsMatches ? fStsMatches->GetEntriesFast() : 0);
363 case ECbmModuleId::kMuch: return (fMuchMatches ? fMuchMatches->GetEntriesFast() : 0);
364 case ECbmModuleId::kTrd: return (fTrdMatches ? fTrdMatches->GetEntriesFast() : 0);
365 case ECbmModuleId::kRich: return (fRichMatches ? fRichMatches->GetEntriesFast() : 0);
366 default: return 0;
367 }
368}
369
370//______________________________________________
372{
373 //
374 // number of hit matches
375 //
376 if (!GetHitMatches(det)) { return 0; }
377 else {
378 return (GetHitMatches(det)->GetEntriesFast());
379 }
380}
381
382//______________________________________________
384{
385 //
386 // number of reconstructed hits
387 //
388 if (!GetHits(det)) { return 0; }
389 else {
390 return (GetHits(det)->GetEntriesFast());
391 }
392}
393
394//______________________________________________
396{
397 //
398 // number of reconstructed hits
399 //
400 if (!GetPoints(det)) { return 0; }
401 else {
402 return (GetPoints(det)->GetEntriesFast());
403 }
404}
405
406//______________________________________________
408{
409 //
410 // get hits array for certain detector
411 //
412 //TODO: add much straw hits
413 switch (det) {
414 case ECbmModuleId::kMvd: return fMvdHits;
415 case ECbmModuleId::kSts: return fStsHits;
416 case ECbmModuleId::kMuch: return fMuchHits; //pixel
417 case ECbmModuleId::kTrd: return fTrdHits;
418 case ECbmModuleId::kRich: return fRichHits;
419 case ECbmModuleId::kTof: return fTofHits;
420 default: return 0x0;
421 }
422}
423
424//______________________________________________
426{
427 //
428 // get hit matches array for certain detector
429 //
430 //TODO: add much straw hits
431 switch (det) {
434 case ECbmModuleId::kMuch: return fMuchHitMatches; //pixel
438 default: return 0x0;
439 }
440}
441
442//______________________________________________
444{
445 //
446 // get mc points array for certain detector
447 //
448 switch (det) {
449 case ECbmModuleId::kMvd: return fMvdPoints;
450 case ECbmModuleId::kSts: return fStsPoints;
451 case ECbmModuleId::kMuch: return fMuchPoints;
452 case ECbmModuleId::kTrd: return fTrdPoints;
453 case ECbmModuleId::kRich: return fRichPoints;
454 case ECbmModuleId::kTof: return fTofPoints;
455 default: return 0x0;
456 }
457}
458
459//______________________________________________
461{
462 //
463 // get cluster array for certain detector
464 //
465 switch (det) {
466 // case ECbmModuleId::kMvd: return fMvdCluster;
467 // case ECbmModuleId::kSts: return fStsCluster;
468 // case ECbmModuleId::kMuch:return fMuchCluster; //pixel
469 case ECbmModuleId::kTrd: return fTrdCluster;
470 // case ECbmModuleId::kRich:return fRichCluster;
471 // case ECbmModuleId::kTof: return fTofCluster;
472 default: return 0x0;
473 }
474}
475
476//______________________________________________
477void PairAnalysisEvent::Clear(Option_t* /*opt*/)
478{
479 //
480 // clear arrays
481 //
482 fTracks->Clear("C");
483 // fGlobalTracks->Delete(); //global tracks
484 // fTrdTracks->Delete(); //TRD tracks
485 // fStsTracks->Delete(); //STS tracks
486 // fMCTracks->Delete(); //mc tracks
487 // fStsMatches->Delete(); //STS matches
488}
489
490//______________________________________________
492{
493 //
494 // calculate the standalone mvd mc matching
495 //
496 Int_t idx = -1;
497 if (!track || !fMvdHitMatches) return idx;
498
499 CbmTrackMatchNew* trackMatch = new CbmTrackMatchNew();
500
501 Int_t nofMvdHits = track->GetNofMvdHits();
502 for (Int_t iHit = 0; iHit < nofMvdHits; iHit++) {
503 const CbmMatch* hitMatch = static_cast<CbmMatch*>(fMvdHitMatches->At(track->GetMvdHitIndex(iHit)));
504 if (!hitMatch) continue;
505 Int_t nofLinks = hitMatch->GetNofLinks();
506 for (Int_t iLink = 0; iLink < nofLinks; iLink++) {
507 const CbmLink& link = hitMatch->GetLink(iLink);
508 const FairMCPoint* point = static_cast<const FairMCPoint*>(fMvdPoints->At(link.GetIndex()));
509 if (NULL == point) continue;
510 trackMatch->AddLink(CbmLink(1., point->GetTrackID(), link.GetEntry(), link.GetFile()));
511 }
512 }
513 if (trackMatch->GetNofLinks()) { idx = trackMatch->GetMatchedLink().GetIndex(); }
514
515 //delete surplus stuff
516 delete trackMatch;
517
518 return idx;
519}
XPU_D constexpr auto ToIntegralType(T enumerator) -> typename std::underlying_type< T >::type
Definition CbmDefs.h:29
ECbmModuleId
Definition CbmDefs.h:39
@ kMvd
Micro-Vertex Detector.
@ kTrd
Transition Radiation Detector.
@ kTof
Time-of-flight Detector.
@ kSts
Silicon Tracking System.
@ kMuch
Muon detection system.
@ kRich
Ring-Imaging Cherenkov Detector.
Data class for STS tracks.
TClonesArray * richProj
ClassImp(PairAnalysisEvent) PairAnalysisEvent
#define BIT(n)
Definition RTypes.h:14
int32_t GetStsTrackIndex() const
int32_t GetRichRingIndex() const
int32_t GetTofHitIndex() const
int32_t GetMuchTrackIndex() const
int32_t GetTrdTrackIndex() const
const CbmLink & GetLink(int32_t i) const
Definition CbmMatch.h:39
int32_t GetNofLinks() const
Definition CbmMatch.h:42
void AddLink(const CbmLink &newLink)
Definition CbmMatch.cxx:47
const CbmLink & GetMatchedLink() const
Definition CbmMatch.h:41
int32_t GetNofMvdHits() const
Definition CbmStsTrack.h:87
int32_t GetMvdHitIndex(int32_t iHit) const
Definition CbmStsTrack.h:75
int32_t GetNofHits() const
TClonesArray * fMuchTracks
TClonesArray * fTofPoints
Int_t GetNumberOfHits(ECbmModuleId det) const
TClonesArray * fTrdMatches
TClonesArray * fMvdHitMatches
TClonesArray * GetCluster(ECbmModuleId det) const
TClonesArray * GetHits(ECbmModuleId det) const
Int_t GetNumberOfMatches(ECbmModuleId det) const
TClonesArray * fTrdPoints
Int_t GetNumberOfHitMatches(ECbmModuleId det) const
TClonesArray * fMuchMatches
TClonesArray * fMvdHits
TClonesArray * fStsHitMatches
Int_t GetNumberOfPoints(ECbmModuleId det) const
TClonesArray * fTrdCluster
FairMCEventHeader * fMCHeader
TClonesArray * fRichHits
TClonesArray * fMCTracks
TClonesArray * fRichRings
TClonesArray * fRichMatches
FairEventHeader * fEvHeader
TClonesArray * fStsPoints
TClonesArray * fTofHitMatches
TClonesArray * fGlobalTracks
TClonesArray * fMuchHitsStraw
TClonesArray * fTrdHits
TClonesArray * fMuchHits
TClonesArray * fTrdHitMatches
Int_t GetMvdMatchingIndex(CbmStsTrack *track) const
void SetInput(FairRootManager *man)
TClonesArray * fStsHits
TClonesArray * fRichProjection
virtual void Clear(Option_t *opt="C")
PairAnalysisTrack * GetTrack(UInt_t pos)
TClonesArray * fMvdPoints
TClonesArray * fRichHitMatches
TClonesArray * GetPoints(ECbmModuleId det) const
TClonesArray * fMuchPoints
TClonesArray * fStsMatches
TClonesArray * fStsTracks
TClonesArray * fMuchHitMatches
TClonesArray * fTrdTracks
TClonesArray * fRichPoints
TClonesArray * fFastTracks
TClonesArray * GetHitMatches(ECbmModuleId det) const
TClonesArray * fTofHits
void SetLabel(Int_t lbl)