1 #if !defined(__CINT__) || defined(__MAKECINT__)
9 #include <TGeoManager.h>
13 #include "AliESDVertex.h"
14 #include "AliESDEvent.h"
17 #include "AliRunLoader.h"
19 #include "AliCDBManager.h"
20 #include "AliGeomManager.h"
22 #include "AliITSgeom.h"
23 #include "AliITSLoader.h"
24 #include "AliITSRecPoint.h"
26 #include "AliITSTrackleterSPDEff.h"
27 #include "AliITSPlaneEffSPD.h"
29 #include <AliHeader.h>
30 #include <AliGenEventHeader.h>
35 void EvaluateSPDEffWithTracklets(Char_t* dir=".", Bool_t mc=kTRUE, Bool_t bckg=kFALSE) {
39 AliITSTrackleterSPDEff* trackleterSPDEff = new AliITSTrackleterSPDEff();
40 // outer layer (estrapolation)
41 trackleterSPDEff->SetPhiWindow(0.07);
42 trackleterSPDEff->SetZetaWindow(0.4);
43 // inner layer (interpolation)
44 trackleterSPDEff->SetPhiWindowL1(0.10);
45 trackleterSPDEff->SetZetaWindowL1(0.6);
47 trackleterSPDEff->SetUpdateOncePerEventPlaneEff();
48 // Study the residual background: reflect outer RecPoints
49 if(bckg) trackleterSPDEff->SetReflectClusterAroundZAxisForLayer(1,kTRUE);
51 // this special setting for MC
52 if(mc) trackleterSPDEff->SetMC();
53 if(trackleterSPDEff->GetMC()) trackleterSPDEff->SetUseOnlyStableParticle();
55 // this for having histograms (both from base class and the new ones)
56 trackleterSPDEff->SetHistOn();
59 const Int_t minCont=3;
60 const Bool_t VtxMC=kFALSE;
63 AliRunLoader* runLoader;
66 delete gAlice->GetRunLoader();
71 sprintf(str,"%s/galice.root",dir);
72 runLoader = AliRunLoader::Open(str);
73 runLoader->LoadgAlice();
74 gAlice = runLoader->GetAliRun();
76 runLoader->LoadKinematics("read");
77 runLoader->LoadTrackRefs("read");
78 Int_t retval = runLoader->LoadHeader();
80 cerr<<"LoadHeader returned error"<<endl;
84 // open the new ESD file
85 sprintf(str,"%s/AliESDs.root",dir);
87 TFile inFile(str, "READ");
88 TTree *esdTree = (TTree*)inFile.Get("esdTree");
89 AliESDEvent *esd = new AliESDEvent();
90 esd->ReadFromTree(esdTree);
92 // Set OfflineConditionsDataBase if needed
93 AliCDBManager* man = AliCDBManager::Instance();
94 if (!man->IsDefaultStorageSet()) {
95 printf("Setting a local default storage and run number 0\n");
96 man->SetDefaultStorage("local://$ALICE_ROOT");
100 printf("Using deafult storage \n");
104 sprintf(str,"%s/geometry.root",dir);
105 AliGeomManager::LoadGeometry(str);
107 AliITSLoader* ITSloader = (AliITSLoader*) runLoader->GetLoader("ITSLoader");
109 cerr<<"ITS loader not found"<<endl;
112 ITSloader->LoadRecPoints("read");
114 // getting number of events
115 Int_t nEvents = (Int_t)runLoader->GetNumberOfEvents();
118 for (Int_t iev=0; iev<nEvents; iev++) {
120 runLoader->GetEvent(iev);
122 esdTree->GetEvent(iev);
124 // get the ESD vertex
125 const AliESDVertex* vtxESD = esd->GetVertex();
127 vtxESD->GetXYZ(esdvtx);
128 Int_t ncont=vtxESD->GetNContributors();
129 if(ncont <= minCont) continue;
137 runLoader->GetHeader()->GenEventHeader()->PrimaryVertex(vertex);
139 // Read the generated particles
140 AliStack *pStack=0x0; TTree *tRefTree=0x0;
141 if (trackleterSPDEff->GetMC()) {
142 pStack= runLoader->Stack();
143 tRefTree= runLoader->TreeTR();
146 TTree *itsClusterTree = ITSloader->TreeR();
150 if(trackleterSPDEff->GetMC()) trackleterSPDEff->Reconstruct(itsClusterTree, ESDvtx, ESDvtx, pStack,tRefTree);
151 else trackleterSPDEff->Reconstruct(itsClusterTree, ESDvtx, ESDvtx); }
154 Float_t vtx[3]={0.,0.,vertex[2]};
155 if(trackleterSPDEff->GetMC()) trackleterSPDEff->Reconstruct(itsClusterTree, vtx, vtx, pStack,tRefTree);
158 } // end loop over events
160 runLoader->UnloadAll();
163 if(trackleterSPDEff->GetMC()) trackleterSPDEff->SavePredictionMC();
164 if(!trackleterSPDEff->WriteHistosToFile()) printf("cannot write histos to file \n");
165 trackleterSPDEff->GetPlaneEff()->WriteIntoCDB();