3 //___________________________________________________________________________
4 /////////////////////////////////////////////////////////////////////////////
6 // File reader for HLT tracks ESD //
8 // loizides@ikf.uni-frankfurt.de //
9 /////////////////////////////////////////////////////////////////////////////
11 #include <Riostream.h>
14 #include <TObjString.h>
18 #include <AliESDtrack.h>
19 #include <AliESDHLTtrack.h>
20 #include <AliKalmanTrack.h>
21 #include <AliJetEventParticles.h>
22 #include "AliJetParticlesReaderHLT.h"
24 ClassImp(AliJetParticlesReaderHLT)
26 AliJetParticlesReaderHLT::AliJetParticlesReaderHLT(Bool_t bMapper, const Char_t* esdfilename) :
27 AliJetParticlesReaderESD(0,esdfilename),
28 fTrackerType(bMapper),
35 /********************************************************************/
37 AliJetParticlesReaderHLT::AliJetParticlesReaderHLT(
40 const Char_t* esdfilename) :
41 AliJetParticlesReaderESD(0,dirs,esdfilename),
42 fTrackerType(bMapper),
50 /********************************************************************/
52 AliJetParticlesReaderHLT::~AliJetParticlesReaderHLT()
57 Int_t AliJetParticlesReaderHLT::ReadESD(AliESD* esd)
63 Error("ReadESD","ESD is NULL");
67 Float_t mf = esd->GetMagneticField();
70 Error("ReadESD","Magnetic Field is 0. Skipping to next event.");
73 AliKalmanTrack::SetMagneticField(mf/10.);
75 Info("ReadESD","Reading Event %d",fCurrentEvent);
76 if((!fOwner) || (fEventParticles==0))
77 fEventParticles = new AliJetEventParticles();
81 ntr =esd->GetNumberOfHLTHoughTracks();
82 Info("ReadESD","Found %d conformal tracks.",ntr);
84 ntr=esd->GetNumberOfHLTHoughTracks();
85 Info("ReadESD","Found %d hough tracks.",ntr);
87 fEventParticles->Reset(ntr);
91 headdesc+=esd->GetRunNumber();
93 headdesc+=esd->GetEventNumber();
94 fEventParticles->SetHeader(headdesc);
96 Double_t vertexpos[3];//vertex position
97 const AliESDVertex* kvertex = esd->GetVertex();
100 Info("ReadESD","ESD returned NULL pointer to vertex - assuming (0.0,0.0,0.0)");
107 kvertex->GetXYZ(vertexpos);
110 fEventParticles->SetVertex(vertexpos[0],vertexpos[1],vertexpos[2]);
112 for (Int_t i = 0;i<ntr; i++) {
113 AliESDHLTtrack *kesdtrack;
115 kesdtrack=esd->GetHLTConfMapTrack(i);
117 kesdtrack=esd->GetHLTHoughTrack(i);
122 Error("ReadESD","Can not get track %d", i);
126 //const Float_t kpid=kesdtrack->GetPID();
127 const Int_t knhits=kesdtrack->GetNHits();
128 const Int_t kweight=kesdtrack->GetWeight();
129 //cout << i << " " << kweight << " " << knhits << endl;
130 if((fMinHits>0) && (knhits<fMinHits)) continue;
131 if(kweight>1000) continue; //avoid ghosts
132 if((fMinWeight>0) && (kweight<fMinWeight)) continue;
134 const Float_t kpx=kesdtrack->GetPx();
135 const Float_t kpy=kesdtrack->GetPy();
136 const Float_t kpz=kesdtrack->GetPz();
137 const Float_t kpt=kesdtrack->GetPt();
138 const Float_t kp=TMath::Sqrt(kpz*kpz+kpt*kpt);
139 const Float_t keta=0.5*TMath::Log((kp+kpz+1e-30)/(kp-kpz+1e-30));
140 const Float_t kphi=TMath::Pi()+TMath::ATan2(-kpy,-kpx);
142 if(IsAcceptedParticle(kpt,kphi,keta))
143 fEventParticles->AddParticle(kpx,kpy,kpz,kp,i,kesdtrack->GetMCid(),knhits,kpt,kphi,keta);