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 "AliL3ITStrack.h"
37 #include "AliL3ITStracker.h"
38 #include "AliL3ITSVertexerZ.h"
41 //extern TSystem *gSystem;
43 Int_t RunHLTITS(Int_t nev=1,Int_t run=0) {
45 // gSystem->Load("libAliL3ITS.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 AliKalmanTrack::SetConvConst(
78 1000/0.299792458/gAlice->Field()->SolenoidField()
81 AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader");
83 cerr<<"AliESDtest.C : Can not get the ITS loader"<<endl;
86 itsl->LoadRecPoints("read");
88 AliITS *dITS = (AliITS*)gAlice->GetDetector("ITS");
90 cerr<<"AliESDtest.C : Can not find the ITS detector !"<<endl;
93 // AliITSgeom *geom = dITS->GetITSgeom();
94 AliITSgeom *geom = new AliITSgeom();
95 geom->ReadNewFile("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det");
97 //An instance of the HLT ITS tracker
98 AliL3ITStracker itsTracker(geom);
100 TFile *ef=TFile::Open("AliESDs.root");
101 if (!ef || !ef->IsOpen()) {cerr<<"Can't AliESDs.root !\n"; return 1;}
102 AliESD* event = new AliESD;
103 TTree* tree = (TTree*) ef->Get("esdTree");
104 if (!tree) {cerr<<"no ESD tree found\n"; return 1;};
105 tree->SetBranchAddress("ESD", &event);
107 TFile *itsf=TFile::Open("AliESDits.root","RECREATE");
108 if ((!itsf)||(!itsf->IsOpen())) {
109 cerr<<"Can't AliESDits.root !\n"; return 1;
113 if (nev>rl->GetNumberOfEvents()) nev=rl->GetNumberOfEvents();
114 //The loop over events
115 for (Int_t i=0; i<nev; i++) {
117 cerr<<"\n\nProcessing event number : "<<i<<endl;
122 rl->GetHeader()->GenEventHeader()->PrimaryVertex(v);
123 Double_t vtx[3]={v[0],v[1],v[2]};
124 Double_t cvtx[3]={0.005,0.005,0.010};
125 cout<<"MC vertex position: "<<v[2]<<endl;
127 AliL3ITSVertexerZ vertexer("null");
128 AliESDVertex* vertex = NULL;
131 TTree* treeClusters = itsl->TreeR();
132 // vertex = vertexer.FindVertexForCurrentEvent(i);
133 // AliESDVertex *vertex = vertexer.FindVertexForCurrentEvent(geom,treeClusters);
134 vertex = new AliESDVertex(vtx,cvtx);
138 cerr<<"Vertex not found"<<endl;
139 vertex = new AliESDVertex(vtx,cvtx);
142 vertex->SetTruePos(vtx); // store also the vertex from MC
145 event->SetVertex(vertex);
149 vertex->GetXYZ(vtxPos);
150 vertex->GetSigmaXYZ(vtxErr);
151 itsTracker.SetVertex(vtxPos,vtxErr);
153 TTree *itsTree=itsl->TreeR();
155 cerr<<"Can't get the ITS cluster tree !\n";
158 itsTracker.LoadClusters(itsTree);
159 rc+=itsTracker.Clusters2Tracks(event);
160 // rc+=itsTracker.PropagateBack(event);
161 itsTracker.UnloadClusters();
164 TTree* tree = new TTree("esdTree", "Tree with ESD objects");
165 tree->Branch("ESD", "AliESD", &event);
171 cerr<<"Something bad happened...\n";