#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TFile.h>
#include <TTree.h>
#include <TBranch.h>
#include <TROOT.h>
#include <TObjArray.h>
#include <TGeoManager.h>
#include <TProfile.h>
#include "AliESD.h"
#include "AliESDVertex.h"
#include "AliESDEvent.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliCDBManager.h"
#include "AliGeomManager.h"
#include "AliITS.h"
#include "AliITSgeom.h"
#include "AliITSLoader.h"
#include "AliITSRecPoint.h"
#include "AliITSTrackleterSPDEff.h"
#include "AliITSPlaneEffSPD.h"
#include <AliHeader.h>
#include <AliGenEventHeader.h>
#include <AliStack.h>
#endif
void EvaluateSPDEffWithTracklets(Char_t* dir=".", Bool_t mc=kTRUE, Bool_t bckg=kFALSE,
TString cdburi="") {
Char_t str[256];
AliITSTrackleterSPDEff* trackleterSPDEff = new AliITSTrackleterSPDEff();
// outer layer (estrapolation)
trackleterSPDEff->SetPhiWindow(0.07);
trackleterSPDEff->SetZetaWindow(0.4);
// inner layer (interpolation)
trackleterSPDEff->SetPhiWindowL1(0.10);
trackleterSPDEff->SetZetaWindowL1(0.6);
//
trackleterSPDEff->SetUpdateOncePerEventPlaneEff();
// Study the residual background: reflect outer RecPoints
if(bckg) trackleterSPDEff->SetReflectClusterAroundZAxisForLayer(1,kTRUE);
//
// this special setting for MC
if(mc) trackleterSPDEff->SetMC();
if(trackleterSPDEff->GetMC()) trackleterSPDEff->SetUseOnlyStableParticle();
//
// this for having histograms (both from base class and the new ones)
trackleterSPDEff->SetHistOn();
//
//
const Int_t minCont=3;
const Bool_t VtxMC=kFALSE;
//
const Bool_t misalign=kTRUE;
//
// Defining pointers
AliRunLoader* runLoader;
if (gAlice) {
delete AliRunLoader::Instance();
delete gAlice;
gAlice=0;
}
sprintf(str,"%s/galice.root",dir);
runLoader = AliRunLoader::Open(str);
runLoader->LoadgAlice();
gAlice = runLoader->GetAliRun();
runLoader->LoadKinematics("read");
runLoader->LoadTrackRefs("read");
Int_t retval = runLoader->LoadHeader();
if (retval){
cerr<<"LoadHeader returned error"<<endl;
return;
}
// open the new ESD file
sprintf(str,"%s/AliESDs.root",dir);
TFile inFile(str, "READ");
TTree *esdTree = (TTree*)inFile.Get("esdTree");
AliESDEvent *esd = new AliESDEvent();
esd->ReadFromTree(esdTree);
// Set OfflineConditionsDataBase if needed
AliCDBManager* man = AliCDBManager::Instance();
if (cdburi.Length() > 0) {
printf("Default CDB storage is set to: %s\n", cdburi.Data());
man->SetDefaultStorage(cdburi);
man->SetRun(0);
}
if (!man->IsDefaultStorageSet()) {
printf("Setting a local default CDB storage and run number 0\n");
man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
man->SetRun(0);
}
// retrives geometry
if (!gGeoManager) {
sprintf(str,"%s/geometry.root",dir);
AliGeomManager::LoadGeometry(str);
}
// apply misalignement
if (misalign) AliGeomManager::ApplyAlignObjsFromCDB("ITS");
AliITSLoader* ITSloader = (AliITSLoader*) runLoader->GetLoader("ITSLoader");
if (!ITSloader){
cerr<<"ITS loader not found"<<endl;
return;
}
ITSloader->LoadRecPoints("read");
// getting number of events
Int_t nEvents = (Int_t)runLoader->GetNumberOfEvents();
// loop over events
for (Int_t iev=0; iev<nEvents; iev++) {
runLoader->GetEvent(iev);
// read events
esdTree->GetEvent(iev);
// get the ESD vertex
const AliESDVertex* vtxESD = esd->GetVertex();
Double_t esdvtx[3];
vtxESD->GetXYZ(esdvtx);
Int_t ncont=vtxESD->GetNContributors();
if(ncont <= minCont) continue;
Float_t ESDvtx[3];
ESDvtx[0]=esdvtx[0];
ESDvtx[1]=esdvtx[1];
ESDvtx[2]=esdvtx[2];
// get the MC vertex
TArrayF vertex(3);
runLoader->GetHeader()->GenEventHeader()->PrimaryVertex(vertex);
// Read the generated particles
AliStack *pStack=0x0; TTree *tRefTree=0x0;
if (trackleterSPDEff->GetMC()) {
pStack= runLoader->Stack();
tRefTree= runLoader->TreeTR();
}
TTree *itsClusterTree = ITSloader->TreeR();
if(!VtxMC) {
if (ESDvtx[2]!=0.) {
if(trackleterSPDEff->GetMC()) trackleterSPDEff->Reconstruct(itsClusterTree, ESDvtx, ESDvtx, pStack,t RefTree);
else trackleterSPDEff->Reconstruct(itsClusterTree, ESDvtx, ESDvtx); }
}
else {
Float_t vtx[3]={0.,0.,vertex[2]};
if(trackleterSPDEff->GetMC()) trackleterSPDEff->Reconstruct(itsClusterTree, vtx, vtx, pStack,tRefTree );
}
} // end loop over events
runLoader->UnloadAll();
delete runLoader;
if(trackleterSPDEff->GetMC()) trackleterSPDEff->SavePredictionMC("TrackletsMCpred.root");
if(!bckg && !trackleterSPDEff->WriteHistosToFile()) printf("cannot write histos to file \n");
//trackleterSPDEff->GetPlaneEff()->WriteIntoCDB();
const char* name="AliITSPlaneEffSPDtracklet.root";
TFile* pefile = TFile::Open(name, "RECREATE");
Int_t nb=trackleterSPDEff->GetPlaneEff()->Write();
if(nb>0) printf("Writing PlaneEfficiency to file %s\n",name);
pefile->Close();
return;
}
EvaluateSPDEffWithTracklets.C:1 EvaluateSPDEffWithTracklets.C:2 EvaluateSPDEffWithTracklets.C:3 EvaluateSPDEffWithTracklets.C:4 EvaluateSPDEffWithTracklets.C:5 EvaluateSPDEffWithTracklets.C:6 EvaluateSPDEffWithTracklets.C:7 EvaluateSPDEffWithTracklets.C:8 EvaluateSPDEffWithTracklets.C:9 EvaluateSPDEffWithTracklets.C:10 EvaluateSPDEffWithTracklets.C:11 EvaluateSPDEffWithTracklets.C:12 EvaluateSPDEffWithTracklets.C:13 EvaluateSPDEffWithTracklets.C:14 EvaluateSPDEffWithTracklets.C:15 EvaluateSPDEffWithTracklets.C:16 EvaluateSPDEffWithTracklets.C:17 EvaluateSPDEffWithTracklets.C:18 EvaluateSPDEffWithTracklets.C:19 EvaluateSPDEffWithTracklets.C:20 EvaluateSPDEffWithTracklets.C:21 EvaluateSPDEffWithTracklets.C:22 EvaluateSPDEffWithTracklets.C:23 EvaluateSPDEffWithTracklets.C:24 EvaluateSPDEffWithTracklets.C:25 EvaluateSPDEffWithTracklets.C:26 EvaluateSPDEffWithTracklets.C:27 EvaluateSPDEffWithTracklets.C:28 EvaluateSPDEffWithTracklets.C:29 EvaluateSPDEffWithTracklets.C:30 EvaluateSPDEffWithTracklets.C:31 EvaluateSPDEffWithTracklets.C:32 EvaluateSPDEffWithTracklets.C:33 EvaluateSPDEffWithTracklets.C:34 EvaluateSPDEffWithTracklets.C:35 EvaluateSPDEffWithTracklets.C:36 EvaluateSPDEffWithTracklets.C:37 EvaluateSPDEffWithTracklets.C:38 EvaluateSPDEffWithTracklets.C:39 EvaluateSPDEffWithTracklets.C:40 EvaluateSPDEffWithTracklets.C:41 EvaluateSPDEffWithTracklets.C:42 EvaluateSPDEffWithTracklets.C:43 EvaluateSPDEffWithTracklets.C:44 EvaluateSPDEffWithTracklets.C:45 EvaluateSPDEffWithTracklets.C:46 EvaluateSPDEffWithTracklets.C:47 EvaluateSPDEffWithTracklets.C:48 EvaluateSPDEffWithTracklets.C:49 EvaluateSPDEffWithTracklets.C:50 EvaluateSPDEffWithTracklets.C:51 EvaluateSPDEffWithTracklets.C:52 EvaluateSPDEffWithTracklets.C:53 EvaluateSPDEffWithTracklets.C:54 EvaluateSPDEffWithTracklets.C:55 EvaluateSPDEffWithTracklets.C:56 EvaluateSPDEffWithTracklets.C:57 EvaluateSPDEffWithTracklets.C:58 EvaluateSPDEffWithTracklets.C:59 EvaluateSPDEffWithTracklets.C:60 EvaluateSPDEffWithTracklets.C:61 EvaluateSPDEffWithTracklets.C:62 EvaluateSPDEffWithTracklets.C:63 EvaluateSPDEffWithTracklets.C:64 EvaluateSPDEffWithTracklets.C:65 EvaluateSPDEffWithTracklets.C:66 EvaluateSPDEffWithTracklets.C:67 EvaluateSPDEffWithTracklets.C:68 EvaluateSPDEffWithTracklets.C:69 EvaluateSPDEffWithTracklets.C:70 EvaluateSPDEffWithTracklets.C:71 EvaluateSPDEffWithTracklets.C:72 EvaluateSPDEffWithTracklets.C:73 EvaluateSPDEffWithTracklets.C:74 EvaluateSPDEffWithTracklets.C:75 EvaluateSPDEffWithTracklets.C:76 EvaluateSPDEffWithTracklets.C:77 EvaluateSPDEffWithTracklets.C:78 EvaluateSPDEffWithTracklets.C:79 EvaluateSPDEffWithTracklets.C:80 EvaluateSPDEffWithTracklets.C:81 EvaluateSPDEffWithTracklets.C:82 EvaluateSPDEffWithTracklets.C:83 EvaluateSPDEffWithTracklets.C:84 EvaluateSPDEffWithTracklets.C:85 EvaluateSPDEffWithTracklets.C:86 EvaluateSPDEffWithTracklets.C:87 EvaluateSPDEffWithTracklets.C:88 EvaluateSPDEffWithTracklets.C:89 EvaluateSPDEffWithTracklets.C:90 EvaluateSPDEffWithTracklets.C:91 EvaluateSPDEffWithTracklets.C:92 EvaluateSPDEffWithTracklets.C:93 EvaluateSPDEffWithTracklets.C:94 EvaluateSPDEffWithTracklets.C:95 EvaluateSPDEffWithTracklets.C:96 EvaluateSPDEffWithTracklets.C:97 EvaluateSPDEffWithTracklets.C:98 EvaluateSPDEffWithTracklets.C:99 EvaluateSPDEffWithTracklets.C:100 EvaluateSPDEffWithTracklets.C:101 EvaluateSPDEffWithTracklets.C:102 EvaluateSPDEffWithTracklets.C:103 EvaluateSPDEffWithTracklets.C:104 EvaluateSPDEffWithTracklets.C:105 EvaluateSPDEffWithTracklets.C:106 EvaluateSPDEffWithTracklets.C:107 EvaluateSPDEffWithTracklets.C:108 EvaluateSPDEffWithTracklets.C:109 EvaluateSPDEffWithTracklets.C:110 EvaluateSPDEffWithTracklets.C:111 EvaluateSPDEffWithTracklets.C:112 EvaluateSPDEffWithTracklets.C:113 EvaluateSPDEffWithTracklets.C:114 EvaluateSPDEffWithTracklets.C:115 EvaluateSPDEffWithTracklets.C:116 EvaluateSPDEffWithTracklets.C:117 EvaluateSPDEffWithTracklets.C:118 EvaluateSPDEffWithTracklets.C:119 EvaluateSPDEffWithTracklets.C:120 EvaluateSPDEffWithTracklets.C:121 EvaluateSPDEffWithTracklets.C:122 EvaluateSPDEffWithTracklets.C:123 EvaluateSPDEffWithTracklets.C:124 EvaluateSPDEffWithTracklets.C:125 EvaluateSPDEffWithTracklets.C:126 EvaluateSPDEffWithTracklets.C:127 EvaluateSPDEffWithTracklets.C:128 EvaluateSPDEffWithTracklets.C:129 EvaluateSPDEffWithTracklets.C:130 EvaluateSPDEffWithTracklets.C:131 EvaluateSPDEffWithTracklets.C:132 EvaluateSPDEffWithTracklets.C:133 EvaluateSPDEffWithTracklets.C:134 EvaluateSPDEffWithTracklets.C:135 EvaluateSPDEffWithTracklets.C:136 EvaluateSPDEffWithTracklets.C:137 EvaluateSPDEffWithTracklets.C:138 EvaluateSPDEffWithTracklets.C:139 EvaluateSPDEffWithTracklets.C:140 EvaluateSPDEffWithTracklets.C:141 EvaluateSPDEffWithTracklets.C:142 EvaluateSPDEffWithTracklets.C:143 EvaluateSPDEffWithTracklets.C:144 EvaluateSPDEffWithTracklets.C:145 EvaluateSPDEffWithTracklets.C:146 EvaluateSPDEffWithTracklets.C:147 EvaluateSPDEffWithTracklets.C:148 EvaluateSPDEffWithTracklets.C:149 EvaluateSPDEffWithTracklets.C:150 EvaluateSPDEffWithTracklets.C:151 EvaluateSPDEffWithTracklets.C:152 EvaluateSPDEffWithTracklets.C:153 EvaluateSPDEffWithTracklets.C:154 EvaluateSPDEffWithTracklets.C:155 EvaluateSPDEffWithTracklets.C:156 EvaluateSPDEffWithTracklets.C:157 EvaluateSPDEffWithTracklets.C:158 EvaluateSPDEffWithTracklets.C:159 EvaluateSPDEffWithTracklets.C:160 EvaluateSPDEffWithTracklets.C:161 EvaluateSPDEffWithTracklets.C:162 EvaluateSPDEffWithTracklets.C:163 EvaluateSPDEffWithTracklets.C:164 EvaluateSPDEffWithTracklets.C:165 EvaluateSPDEffWithTracklets.C:166 EvaluateSPDEffWithTracklets.C:167 EvaluateSPDEffWithTracklets.C:168 EvaluateSPDEffWithTracklets.C:169 EvaluateSPDEffWithTracklets.C:170 EvaluateSPDEffWithTracklets.C:171 EvaluateSPDEffWithTracklets.C:172 EvaluateSPDEffWithTracklets.C:173 EvaluateSPDEffWithTracklets.C:174 EvaluateSPDEffWithTracklets.C:175 EvaluateSPDEffWithTracklets.C:176 EvaluateSPDEffWithTracklets.C:177 EvaluateSPDEffWithTracklets.C:178 EvaluateSPDEffWithTracklets.C:179 EvaluateSPDEffWithTracklets.C:180 EvaluateSPDEffWithTracklets.C:181