FairRoot/PandaRoot
PndTrkAddTCA.cxx
Go to the documentation of this file.
1 //
3 // PndTrkAddTCA
4 //
5 // Class to add primaries and secondaries
6 //
7 // authors: Lia Lavezzi - University of Torino (2015)
8 //
10 
11 #include "PndTrkAddTCA.h"
12 
13 // track(cand)
14 #include "PndTrackCand.h"
15 #include "PndTrackCandHit.h"
16 #include "PndTrack.h"
17 
18 // fairroot
19 #include "FairRootManager.h"
20 #include "FairRunAna.h"
21 #include "FairRuntimeDb.h"
22 // ROOT
23 #include "TClonesArray.h"
24 
25 #include <iostream>
26 
27 using namespace std;
28 
29 // ----- Default constructor -------------------------------------------
30 PndTrkAddTCA::PndTrkAddTCA() : FairTask("add TCAs", 0) {}
31 
32 // ----- Destructor ----------------------------------------------------
34 
35  delete fPrimaryTrackArray;
36  delete fSecondaryTrackArray;
37  delete fTrackArray;
38 
39 }
40 // -------------------------------------------------------------------------
41 
42 
43 
44 // ----- Public method Init --------------------------------------------
45 InitStatus PndTrkAddTCA::Init() {
46 
47  fEventCounter = 0;
48 
49  // Get RootManager
50  FairRootManager* ioman = FairRootManager::Instance();
51  if ( ! ioman ) {
52  cout << "-E- PndTrkAddTCA::Init: "
53  << "RootManager not instantiated, return!" << endl;
54  return kFATAL;
55  }
56 
57  // -- HITS -------------------------------------------------
58  //
59  // I
60  fPrimaryTrackArray = (TClonesArray*) ioman->GetObject("SttMvdGemTrack");
61  if ( ! fPrimaryTrackArray ) {
62  cout << "-W- PndTrkAddTCA::Init: No primary track array, return!" << endl;
63  return kERROR;
64  }
65  //
66  // II
67  fSecondaryTrackArray = (TClonesArray*) ioman->GetObject("Track");
68  if ( ! fSecondaryTrackArray ) {
69  cout << "-W- PndTrkAddTCA::Init: No secondary track array, return!" << endl;
70  return kERROR;
71  }
72 
73 
74  fTrackArray = new TClonesArray("PndTrack");
75  fTrackCandArray = new TClonesArray("PndTrackCand");
76  ioman->Register("CombiTrack", "pr", fTrackArray, kTRUE);
77  ioman->Register("CombiTrackCand", "pr", fTrackCandArray, kTRUE);
78 
79  return kSUCCESS;
80 
81 }
82 
83 // -------------------------------------------------------------------------
84 void PndTrkAddTCA::Exec(Option_t*) {
85  fTrackArray->Delete();
86  fTrackCandArray->Delete();
87 
88  if(fVerbose) cout << "PndTrkAddTCA:: *********************** " << fEventCounter << " ***********************" << endl;
89  fEventCounter++;
90 
91  PndTrack *track = NULL;
92  // primaries
93  for(int itrk = 0; itrk < fPrimaryTrackArray->GetEntriesFast(); itrk++) {
94  track = (PndTrack*) fPrimaryTrackArray->At(itrk);
95 
96  TClonesArray& clref = *fTrackArray;
97  Int_t size = clref.GetEntriesFast();
98  PndTrack *outputtrack = new(clref[size]) PndTrack(track->GetParamFirst(),track->GetParamLast(), track->GetTrackCand());
99  outputtrack->SetFlag(333);
100  if(fabs(outputtrack->GetParamFirst().GetMomentum().Z()) < 1e-10) outputtrack->SetFlag(-333);
101 
102  TClonesArray& clref2 = *fTrackCandArray;
103  size = clref2.GetEntriesFast();
104  new(clref2[size]) PndTrackCand(track->GetTrackCand()); //PndTrackCand *outputtrackcand = //[R.K.03/2017] unused variable
105  }
106 
107  // secondaries
108  for(int itrk = 0; itrk < fSecondaryTrackArray->GetEntriesFast(); itrk++) {
109  track = (PndTrack*) fSecondaryTrackArray->At(itrk);
110 
111  TClonesArray& clref = *fTrackArray;
112  Int_t size = clref.GetEntriesFast();
113  PndTrack *outputtrack = new(clref[size]) PndTrack(track->GetParamFirst(),track->GetParamLast(), track->GetTrackCand());
114  outputtrack->SetFlag(track->GetFlag());
115 
116  TClonesArray& clref2 = *fTrackCandArray;
117  size = clref2.GetEntriesFast();
118  new(clref2[size]) PndTrackCand(track->GetTrackCand()); //PndTrackCand *outputtrackcand = //[R.K.03/2017] unused variable
119  }
120 
121 
122 }
123 
124 
virtual InitStatus Init()
int fVerbose
Definition: poormantracks.C:24
Int_t fEventCounter
Definition: PndTrkAddTCA.h:35
Int_t GetFlag() const
Definition: PndTrack.h:33
TClonesArray * fTrackCandArray
Definition: PndTrkAddTCA.h:40
TClonesArray * fTrackArray
Definition: PndTrkAddTCA.h:36
TClonesArray * fPrimaryTrackArray
Definition: PndTrkAddTCA.h:37
PndTrackCand GetTrackCand()
Definition: PndTrack.h:47
PndMCTrack * track
Definition: anaLmdCluster.C:89
FairTrackParP GetParamLast()
Definition: PndTrack.h:50
TClonesArray * fSecondaryTrackArray
Definition: PndTrkAddTCA.h:38
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
virtual void Exec(Option_t *opt)
void SetFlag(Int_t i)
Definition: PndTrack.h:38
ClassImp(PndAnaContFact)
FairTrackParP GetParamFirst()
Definition: PndTrack.h:49