5d60c8f9 |
1 | // $Id$ |
2 | |
3 | //___________________________________________________________________________ |
4 | ///////////////////////////////////////////////////////////////////////////// |
5 | // // |
6 | // File reader for HLT tracks ESD // |
7 | // // |
8 | // loizides@ikf.uni-frankfurt.de // |
9 | ///////////////////////////////////////////////////////////////////////////// |
10 | |
11 | #include <Riostream.h> |
12 | #include <TMath.h> |
13 | #include <TString.h> |
14 | #include <TObjString.h> |
15 | #include <TTree.h> |
16 | #include <TFile.h> |
17 | #include <AliESD.h> |
18 | #include <AliESDtrack.h> |
19 | #include <AliESDHLTtrack.h> |
20 | #include <AliJetEventParticles.h> |
21 | #include "AliJetParticlesReaderHLT.h" |
22 | |
23 | ClassImp(AliJetParticlesReaderHLT) |
24 | |
25 | AliJetParticlesReaderHLT::AliJetParticlesReaderHLT(Bool_t bMapper, const Char_t* esdfilename) : |
26 | AliJetParticlesReaderESD(esdfilename), |
27 | fTrackerType(bMapper) |
28 | { |
29 | //constructor |
30 | } |
31 | |
32 | /********************************************************************/ |
33 | |
34 | AliJetParticlesReaderHLT::AliJetParticlesReaderHLT( |
35 | Bool_t bMapper, |
36 | TObjArray* dirs, |
37 | const Char_t* esdfilename) : |
38 | AliJetParticlesReaderESD(dirs,esdfilename), |
39 | fTrackerType(bMapper) |
40 | { |
41 | //constructor |
42 | } |
43 | |
44 | /********************************************************************/ |
45 | |
46 | AliJetParticlesReaderHLT::~AliJetParticlesReaderHLT() |
47 | { |
48 | //desctructor |
49 | } |
50 | |
51 | Int_t AliJetParticlesReaderHLT::ReadESD(AliESD* esd) |
52 | { |
53 | //Reads one ESD |
54 | |
55 | if (esd == 0) |
56 | { |
57 | Error("ReadESD","ESD is NULL"); |
58 | return kFALSE; |
59 | } |
60 | |
61 | Info("ReadESD","Reading Event %d",fCurrentEvent); |
62 | if((!fOwner) || (fEventParticles==0)) |
63 | fEventParticles = new AliJetEventParticles(); |
64 | |
65 | Double_t vertexpos[3];//vertex position |
66 | const AliESDVertex* kvertex = esd->GetVertex(); |
67 | if (kvertex == 0) |
68 | { |
69 | Info("ReadESD","ESD returned NULL pointer to vertex - assuming (0.0,0.0,0.0)"); |
70 | vertexpos[0] = 0.0; |
71 | vertexpos[1] = 0.0; |
72 | vertexpos[2] = 0.0; |
73 | } |
74 | else |
75 | { |
76 | kvertex->GetXYZ(vertexpos); |
77 | } |
78 | |
79 | fEventParticles->SetVertex(vertexpos[0],vertexpos[1],vertexpos[2]); |
80 | |
81 | if(fTrackerType){ |
82 | const Int_t kntr =esd->GetNumberOfHLTHoughTracks(); |
83 | Info("ReadESD","Found %d conformal tracks.",kntr); |
84 | for (Int_t i = 0;i<kntr; i++) { |
85 | const AliESDHLTtrack *kesdtrack=esd->GetHLTConfMapTrack(i); |
86 | |
87 | if (kesdtrack == 0) |
88 | { |
89 | Error("ReadESD","Can not get track %d", i); |
90 | continue; |
91 | } |
92 | |
93 | //const Float_t kpid=kesdtrack->GetPID(); |
94 | //const Int_t knhits=kesdtrack->GetNHits(); |
95 | const Float_t kpx=kesdtrack->GetPx(); |
96 | const Float_t kpy=kesdtrack->GetPy(); |
97 | const Float_t kpz=kesdtrack->GetPz(); |
98 | const Float_t kpt=kesdtrack->GetPt(); |
99 | const Float_t kp=TMath::Sqrt(kpz*kpz+kpt*kpt); |
100 | const Float_t keta=0.5*TMath::Log((kp+kpz+1e-30)/(kp-kpz+1e-30)); |
101 | const Float_t kphi=TMath::Pi()+TMath::ATan2(-kpy,-kpx); |
102 | |
103 | if(IsAcceptedParticle(kpt,kphi,keta)) |
104 | fEventParticles->AddParticle(kpx,kpy,kpz,kp,i,kesdtrack->GetMCid(),kpt,kphi,keta); |
105 | |
106 | } //loop over conf tracks |
107 | } else { |
108 | const Int_t kntr=esd->GetNumberOfHLTHoughTracks(); |
109 | Info("ReadESD","Found %d hough tracks.",kntr); |
110 | |
111 | for (Int_t i = 0;i<kntr; i++) { |
112 | const AliESDHLTtrack *kesdtrack=esd->GetHLTHoughTrack(i); |
113 | |
114 | if (kesdtrack == 0) |
115 | { |
116 | Error("ReadESD","Can not get track %d", i); |
117 | continue; |
118 | } |
119 | |
120 | //const Float_t kweight=kesdtrack->GetWeight(); |
121 | const Float_t kpx=kesdtrack->GetPx(); |
122 | const Float_t kpy=kesdtrack->GetPy(); |
123 | const Float_t kpz=kesdtrack->GetPz(); |
124 | |
125 | const Float_t kpt=kesdtrack->GetPt(); |
126 | const Float_t kp=TMath::Sqrt(kpz*kpz+kpt*kpt); |
127 | const Float_t keta=0.5*TMath::Log((kp+kpz+1e-30)/(kp-kpz+1e-30)); |
128 | const Float_t kphi=TMath::Pi()+TMath::ATan2(-kpy,-kpx); |
129 | |
130 | if(IsAcceptedParticle(kpt,kphi,keta)) |
131 | fEventParticles->AddParticle(kpx,kpy,kpz,kp,i,kesdtrack->GetMCid(),kpt,kphi,keta); |
132 | } //loop over hough tracks |
133 | } |
134 | return kTRUE; |
135 | } |