1 // The following macro runs the HLT ITS tracker over the HLT
2 // tracks stored in the ESD and stores the output tracks in a
3 // separate ESD file AliESDits.root
5 #if !defined(__CINT__) || defined(__MAKECINT__)
12 #include <TProfile2D.h>
14 #include <TGraphErrors.h>
16 #include <TParticle.h>
20 #include <TStopwatch.h>
24 #include "AliHeader.h"
25 #include "AliTrackReference.h"
26 #include "AliRunLoader.h"
28 #include "AliITSLoader.h"
29 #include "AliITSgeom.h"
30 #include "AliITStrackerV2.h"
34 #include "AliGenEventHeader.h"
36 #include "AliHLTITStrack.h"
37 #include "AliHLTITStracker.h"
38 #include "AliHLTITSVertexerZ.h"
41 //extern TSystem *gSystem;
43 Int_t RunHLTITS(Int_t nev=1,Int_t run=0) {
45 // gSystem->Load("libAliHLTITS.so");
51 delete gAlice->GetRunLoader();
56 AliRunLoader *rl = AliRunLoader::Open("galice.root");
58 cerr<<"Can not open session"<<endl;
61 Int_t retval = rl->LoadgAlice();
63 cerr<<"AliESDtest.C : LoadgAlice returned error"<<endl;
67 retval = rl->LoadHeader();
69 cerr<<"AliESDtest.C : LoadHeader returned error"<<endl;
73 gAlice=rl->GetAliRun();
75 AliTracker::SetFieldMap(gAlice->Field());
77 AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader");
79 cerr<<"AliESDtest.C : Can not get the ITS loader"<<endl;
82 itsl->LoadRecPoints("read");
84 AliITS *dITS = (AliITS*)gAlice->GetDetector("ITS");
86 cerr<<"AliESDtest.C : Can not find the ITS detector !"<<endl;
89 // AliITSgeom *geom = dITS->GetITSgeom();
90 AliITSgeom *geom = new AliITSgeom();
91 geom->ReadNewFile("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det");
93 //An instance of the HLT ITS tracker
94 AliHLTITStracker itsTracker(geom);
96 TFile *ef=TFile::Open("AliESDs.root");
97 if (!ef || !ef->IsOpen()) {cerr<<"Can't AliESDs.root !\n"; return 1;}
98 AliESD* event = new AliESD;
99 TTree* tree = (TTree*) ef->Get("esdTree");
100 if (!tree) {cerr<<"no ESD tree found\n"; return 1;};
101 tree->SetBranchAddress("ESD", &event);
103 TFile *itsf=TFile::Open("AliESDits.root","RECREATE");
104 if ((!itsf)||(!itsf->IsOpen())) {
105 cerr<<"Can't AliESDits.root !\n"; return 1;
109 if (nev>rl->GetNumberOfEvents()) nev=rl->GetNumberOfEvents();
110 //The loop over events
111 for (Int_t i=0; i<nev; i++) {
113 cerr<<"\n\nProcessing event number : "<<i<<endl;
118 rl->GetHeader()->GenEventHeader()->PrimaryVertex(v);
119 Double_t vtx[3]={v[0],v[1],v[2]};
120 Double_t cvtx[3]={0.005,0.005,0.010};
121 cout<<"MC vertex position: "<<v[2]<<endl;
123 AliHLTITSVertexerZ vertexer("null");
124 AliESDVertex* vertex = NULL;
127 TTree* treeClusters = itsl->TreeR();
128 // vertex = vertexer.FindVertexForCurrentEvent(i);
129 // AliESDVertex *vertex = vertexer.FindVertexForCurrentEvent(geom,treeClusters);
130 vertex = new AliESDVertex(vtx,cvtx);
134 cerr<<"Vertex not found"<<endl;
135 vertex = new AliESDVertex(vtx,cvtx);
138 vertex->SetTruePos(vtx); // store also the vertex from MC
141 event->SetVertex(vertex);
145 vertex->GetXYZ(vtxPos);
146 vertex->GetSigmaXYZ(vtxErr);
147 itsTracker.SetVertex(vtxPos,vtxErr);
149 TTree *itsTree=itsl->TreeR();
151 cerr<<"Can't get the ITS cluster tree !\n";
154 itsTracker.LoadClusters(itsTree);
155 rc+=itsTracker.Clusters2Tracks(event);
156 // rc+=itsTracker.PropagateBack(event);
157 itsTracker.UnloadClusters();
160 TTree* tree = new TTree("esdTree", "Tree with ESD objects");
161 tree->Branch("ESD", "AliESD", &event);
167 cerr<<"Something bad happened...\n";