1 testESDtrackCuts(Char_t* dataDir=, Int_t nRuns=10) {
5 gSystem->Load("libESDtrackCuts.so");
7 // ########################################################
8 // definition of ESD track cuts
10 AliESDtrackCuts* trackCuts = new AliESDtrackCuts();
11 trackCuts->DefineHistograms(4);
13 trackCuts->SetMinNClustersTPC(50);
14 trackCuts->SetMaxChi2PerClusterTPC(3.5);
15 trackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
16 trackCuts->SetRequireTPCRefit(kTRUE);
18 trackCuts->SetMinNsigmaToVertex(3);
19 trackCuts->SetAcceptKingDaughters(kFALSE);
21 trackCuts->SetPRange(0.3);
23 AliLog::SetClassDebugLevel("AliESDtrackCuts",1);
25 // ########################################################
26 // definition of used pointers
33 // ########################################################
36 sprintf(execDir,gSystem->pwd());
37 TSystemDirectory* baseDir = new TSystemDirectory(".",dataDir);
38 TList* dirList = baseDir->GetListOfFiles();
39 Int_t nDirs = dirList->GetEntries();
40 // go back to the dir where this script is executed
43 // ########################################################
45 Int_t nRunCounter = 0;
46 for (Int_t r=1; r<=nDirs; r++) {
48 TSystemFile* presentDir = (TSystemFile*)dirList->At(r);
49 if (!presentDir->IsDirectory())
51 // first check that the files are there
52 sprintf(str,"%s/%s",dataDir, presentDir->GetName());
53 if ((!gSystem->Which(str,"galice.root")) ||
54 (!gSystem->Which(str,"AliESDs.root")))
57 if (nRunCounter++ >= nRuns)
60 cout << "run #" << nRunCounter << endl;
62 // #########################################################
63 // setup galice and runloader
65 delete gAlice->GetRunLoader();
70 sprintf(str,"%s/run%d/galice.root",dataDir,r);
71 AliRunLoader* runLoader = AliRunLoader::Open(str);
73 runLoader->LoadgAlice();
74 gAlice = runLoader->GetAliRun();
75 runLoader->LoadHeader();
77 // #########################################################
78 // open esd file and get the tree
80 sprintf(str,"%s/run%d/AliESDs.root",dataDir,r);
81 // close it first to avoid memory leak
83 if (esdFile->IsOpen())
86 esdFile = TFile::Open(str);
87 esdTree = (TTree*)esdFile->Get("esdTree");
90 esdBranch = esdTree->GetBranch("ESD");
91 esdBranch->SetAddress(&esd);
95 // ########################################################
97 AliTracker::SetFieldMap(gAlice->Field(),kTRUE); // kTRUE means uniform magnetic field
99 // ########################################################
100 // getting number of events
101 Int_t nEvents = (Int_t)runLoader->GetNumberOfEvents();
102 Int_t nESDEvents = esdBranch->GetEntries();
104 if (nEvents!=nESDEvents)
105 cout << " Warning: Different number of events from runloader and esdtree!!!" << nEvents << " / " << nESDEvents << endl;
107 // ########################################################
108 // loop over number of events
109 cout << " looping over events..." << endl;
110 for(Int_t i=1; i<nEvents; i++) {
112 esdBranch->GetEntry(i);
113 runLoader->GetEvent(i);
115 // ########################################################
116 // get the EDS vertex
117 AliESDVertex* vtxESD = esd->GetVertex();
119 Double_t vtxSigma[3];
120 vtxESD->GetSigmaXYZ(vtxSigma);
122 // ########################################################
123 // loop over esd tracks
124 Int_t nTracks = esd->GetNumberOfTracks();
126 for (Int_t t=0; t<nTracks; t++) {
127 AliESDtrack* esdTrack = esd->GetTrack(t);
129 //trackCuts->AcceptTrack(esdTrack, vtxESD, esd->GetMagneticField());
130 trackCuts->AcceptTrack(esdTrack);
132 } // end of track loop
133 } // end of event loop
136 TFile* fout = new TFile("out.root","RECREATE");
138 trackCuts->SaveHistograms("esd_track_cuts");