FairRoot/PandaRoot
PndKFParticleFinderPID.cxx
Go to the documentation of this file.
1 //-----------------------------------------------------------
2 //-----------------------------------------------------------
3 
4 // Panda Headers ----------------------
6 #include "PndPidCandidate.h"
7 #include "PndMCTrack.h"
8 
9 #include "FairRunAna.h"
10 
11 //ROOT headers
12 #include "TClonesArray.h"
13 
14 //c++ and std headers
15 #include <iostream>
16 
18  FairTask(name, iVerbose), fChargedTrackBranchName(""), fNeutralTrackBranchName(""), fMCTracksBranchName(""),
19  fChargedTrackArray(0), fNeutralTrackArray(0), fMCTrackArray(0),
20  fPIDMode(0), fPID(0)
21 {
22 }
23 
25 {
26 }
27 
29 {
30  //Get ROOT Manager
31  FairRootManager* ioman= FairRootManager::Instance();
32 
33  if(ioman==0)
34  {
35  Error("PndKFParticleFinderPID::Init","RootManager not instantiated!");
36  return kERROR;
37  }
38 
39  // Get charged tracks
40  fChargedTrackArray=(TClonesArray*) ioman->GetObject(fChargedTrackBranchName);
41  if(fChargedTrackArray==0)
42  {
43  Error("PndKFParticleFinderPID::Init","Charged track array not found! Stop the execution.");
44  return kERROR;
45  }
46 
47  // Get neutral tracks
48  fNeutralTrackArray=(TClonesArray*) ioman->GetObject(fNeutralTrackBranchName);
49  if(fNeutralTrackArray==0)
50  {
51  Error("PndKFParticleFinderPID::Init","Neutral track array not found! Will continue without gamma reconstruction.");
52  }
53 
54  if(fPIDMode==1)
55  {
56  //MC Tracks
57  fMCTrackArray=(TClonesArray*) ioman->GetObject(fMCTracksBranchName);
58  if(fMCTrackArray==0)
59  {
60  Error("StandaloneHitGenerator::Init","MC track array not found! Stop the execution.");
61  return kERROR;
62  }
63  }
64 
65  return kSUCCESS;
66 }
67 
69 {
70  fPID.clear();
71 
72  Int_t nTracks=fChargedTrackArray->GetEntriesFast();
73  fPID.resize(nTracks, -1);
74 
75  if(fPIDMode==1)
76  SetMCPID();
77  if(fPIDMode==2)
78  SetRecoPID();
79 }
80 
82 {
83 }
84 
86 {
87  Int_t nTracks=fChargedTrackArray->GetEntriesFast();
88  for(int iTr=0; iTr<nTracks; iTr++)
89  {
91  if(!inTrack) continue;
92  Int_t iMC = inTrack->GetMcIndex();
93 
94  if(iMC >= 0)
95  {
96  PndMCTrack *pndMCTrack = (PndMCTrack*)fMCTrackArray->At(iMC);
97  if(TMath::Abs(pndMCTrack->GetPdgCode()) > 2500)
98  continue;
99  fPID[iTr] = pndMCTrack->GetPdgCode();
100  }
101  }
102 }
103 
105 {
106 }
107 
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
Int_t GetMcIndex() const
static T Abs(const T &x)
Definition: PndCAMath.h:39
int fPID
Definition: poormantracks.C:16
PndKFParticleFinderPID(const char *name="PndKFParticleFinderPID", Int_t iVerbose=0)
TString fMCTracksBranchName
Name of the input TCA.
TString fNeutralTrackBranchName
Name of the input TCA.
TString name
ClassImp(PndAnaContFact)
Int_t iVerbose
TClonesArray * fChargedTrackArray
Name of the input TCA with MC tracks.
virtual void Exec(Option_t *opt)