FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndMdtTrkProducerIdeal Class Reference

#include <PndMdtTrkProducerIdeal.h>

Inheritance diagram for PndMdtTrkProducerIdeal:

Public Member Functions

 PndMdtTrkProducerIdeal ()
 
 ~PndMdtTrkProducerIdeal ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
PndMdtTrkAddTrk (PndMdtTrk *track)
 

Private Member Functions

 ClassDef (PndMdtTrkProducerIdeal, 1)
 

Private Attributes

TClonesArray * fPointArray
 
TClonesArray * fHitArray
 
TClonesArray * fMCArray
 
TClonesArray * fTrkArray
 

Detailed Description

Definition at line 10 of file PndMdtTrkProducerIdeal.h.

Constructor & Destructor Documentation

PndMdtTrkProducerIdeal::PndMdtTrkProducerIdeal ( )

Default constructor

Definition at line 32 of file PndMdtTrkProducerIdeal.cxx.

32  :
33  FairTask("Ideal MDT Tracklet Producer") {
34 
35 }
PndMdtTrkProducerIdeal::~PndMdtTrkProducerIdeal ( )

Destructor

Definition at line 39 of file PndMdtTrkProducerIdeal.cxx.

39 { }

Member Function Documentation

PndMdtTrk * PndMdtTrkProducerIdeal::AddTrk ( PndMdtTrk track)

Definition at line 148 of file PndMdtTrkProducerIdeal.cxx.

References fTrkArray.

Referenced by Exec().

148  {
149  // Creates a new hit in the TClonesArray.
150 
151  TClonesArray& trkRef = *fTrkArray;
152  Int_t size = trkRef.GetEntriesFast();
153  return new(trkRef[size]) PndMdtTrk(*track);
154 }
PndMdtTrkProducerIdeal::ClassDef ( PndMdtTrkProducerIdeal  ,
 
)
private
void PndMdtTrkProducerIdeal::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 98 of file PndMdtTrkProducerIdeal.cxx.

References AddTrk(), fHitArray, fMCArray, fPointArray, fTrkArray, PndMdtHit::GetLayerID(), PndMdtHit::GetModule(), PndMdtTrk::GetModule(), PndMCTrack::GetNPoints(), kMDT, nHits, PndMdtTrk::SetHitCount(), PndMdtTrk::SetHitIndex(), and PndMdtTrk::SetModule().

98  {
99 
100  // Reset output array
101  if ( ! fTrkArray ) Fatal("Exec", "No TrkArray");
102 
103  fTrkArray->Clear();
104 
105  Int_t nHits = fHitArray->GetEntriesFast();
106  if (nHits==0) return; // exit if the event contains no Mdt hits
107 
108  PndMCTrack *mcTrack = NULL;
109  PndMdtHit *mdtHit = NULL;
110  PndMdtPoint *mdtPoint = NULL;
111 
112  // Loop over MCTrack
113  Int_t nMCTrack = fMCArray->GetEntriesFast();
114 
115  for (Int_t iMc=0; iMc<nMCTrack; iMc++) {
116  mcTrack = (PndMCTrack*) fMCArray->At(iMc);
117  if (mcTrack->GetNPoints(kMDT)==0) continue;
118 
119  PndMdtTrk *mdtTrk = new PndMdtTrk();
120  Int_t mdtCount = 0;
121  for (Int_t iHit=0; iHit<nHits; iHit++) {
122  mdtHit = (PndMdtHit*) fHitArray->At(iHit);
123  mdtPoint = (PndMdtPoint*)fPointArray->At(mdtHit->GetRefIndex());
124  if (mdtPoint->GetTrackID()!= iMc) continue;
125 
126  mdtTrk->SetHitIndex(mdtHit->GetLayerID(), iHit);
127  if (mdtTrk->GetModule()==0)
128  {
129  mdtTrk->SetModule(mdtHit->GetModule());
130  }
131  else if (mdtHit->GetModule()!= mdtTrk->GetModule())
132  {
133  mdtTrk->SetModule(10);
134  }
135 
136  mdtCount++;
137  } // end of MdtHit loop
138 
139  mdtTrk->SetHitCount(mdtCount);
140  if (mdtCount>0) AddTrk(mdtTrk);
141 
142  } // end of MCTrack loop
143 
144 }
PndMdtTrk * AddTrk(PndMdtTrk *track)
Short_t GetLayerID() const
Definition: PndMdtHit.h:34
Int_t GetNPoints(DetectorId detId) const
Definition: PndMCTrack.cxx:120
Int_t GetModule() const
Definition: PndMdtTrk.h:48
void SetHitIndex(Int_t lay, Int_t trackId)
Definition: PndMdtTrk.h:88
int nHits
Definition: RiemannTest.C:16
void SetModule(Int_t mod)
Definition: PndMdtTrk.h:66
void SetHitCount(Int_t hit)
Definition: PndMdtTrk.h:62
Short_t GetModule() const
Definition: PndMdtHit.h:32
InitStatus PndMdtTrkProducerIdeal::Init ( )
virtual

Virtual method Init

Definition at line 45 of file PndMdtTrkProducerIdeal.cxx.

References fHitArray, fMCArray, fPointArray, and fTrkArray.

45  {
46 
47  cout << "-I- PndMdtTrkProducerIdeal::Init: "
48  << "INITIALIZATION *********************" << endl;
49 
50  //FairRun* sim = FairRun::Instance(); //[R.K. 01/2017] unused variable?
51  //FairRuntimeDb* rtdb=sim->GetRuntimeDb(); //[R.K. 01/2017] unused variable?
52 
53  // Get RootManager
54  FairRootManager* ioman = FairRootManager::Instance();
55  if ( ! ioman ) {
56  cout << "-E- PndMdtTrkProducerIdeal::Init: "
57  << "RootManager not instantiated!" << endl;
58  return kFATAL;
59  }
60 
61  // Get input array
62  fMCArray = (TClonesArray*) ioman->GetObject("MCTrack");
63  if ( ! fMCArray ) {
64  cout << "-W- PndMdtTrkProducerIdeal::Init: "
65  << "No MCTrack array!" << endl;
66  return kERROR;
67  }
68 
69  fPointArray = (TClonesArray*) ioman->GetObject("MdtPoint");
70  if ( ! fPointArray ) {
71  cout << "-W- PndMdtTrkProducerIdeal::Init: "
72  << "No MdtPoint array!" << endl;
73  return kERROR;
74  }
75 
76  fHitArray = (TClonesArray*) ioman->GetObject("MdtHit");
77  if ( ! fHitArray ) {
78  cout << "-W- PndMdtTrkProducerIdeal::Init: "
79  << "No MdtHit array!" << endl;
80  return kERROR;
81  }
82 
83  // Create and register output array
84  fTrkArray = new TClonesArray("PndMdtTrk");
85 
86  ioman->Register("MdtTrk","Mdt",fTrkArray,kTRUE);
87 
88  cout << "-I- PndMdtTrkProducerIdeal: Intialization successfull" << endl;
89 
90  return kSUCCESS;
91 
92 }

Member Data Documentation

TClonesArray* PndMdtTrkProducerIdeal::fHitArray
private

Input array of PndMdtHit

Definition at line 38 of file PndMdtTrkProducerIdeal.h.

Referenced by Exec(), and Init().

TClonesArray* PndMdtTrkProducerIdeal::fMCArray
private

Input array of PndMCTrack

Definition at line 41 of file PndMdtTrkProducerIdeal.h.

Referenced by Exec(), and Init().

TClonesArray* PndMdtTrkProducerIdeal::fPointArray
private

Input array of PndMdtPoint

Definition at line 35 of file PndMdtTrkProducerIdeal.h.

Referenced by Exec(), and Init().

TClonesArray* PndMdtTrkProducerIdeal::fTrkArray
private

Output array of PndMdtTrk

Definition at line 44 of file PndMdtTrkProducerIdeal.h.

Referenced by AddTrk(), Exec(), and Init().


The documentation for this class was generated from the following files: