1 testESDtrackCuts(Char_t* dataDir=, Int_t nRuns=10) {
5 gSystem->Load("libESDtrackQuality.so");
7 // ########################################################
8 // definition of ESD track cuts
10 ESDtrackQualityCuts* trackCuts = new ESDtrackQualityCuts();
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 AliLog::SetClassDebugLevel("ESDtrackQualityCuts",1);
23 // ########################################################
24 // definition of used pointers
31 // ########################################################
34 sprintf(execDir,gSystem->pwd());
35 TSystemDirectory* baseDir = new TSystemDirectory(".",dataDir);
36 TList* dirList = baseDir->GetListOfFiles();
37 Int_t nDirs = dirList->GetEntries();
38 // go back to the dir where this script is executed
41 // ########################################################
43 Int_t nRunCounter = 0;
44 for (Int_t r=1; r<=nDirs; r++) {
46 TSystemFile* presentDir = (TSystemFile*)dirList->At(r);
47 if (!presentDir->IsDirectory())
49 // first check that the files are there
50 sprintf(str,"%s/%s",dataDir, presentDir->GetName());
51 if ((!gSystem->Which(str,"galice.root")) ||
52 (!gSystem->Which(str,"AliESDs.root")))
55 if (nRunCounter++ >= nRuns)
58 cout << "run #" << nRunCounter << endl;
60 // #########################################################
61 // setup galice and runloader
63 delete gAlice->GetRunLoader();
68 sprintf(str,"%s/run%d/galice.root",dataDir,r);
69 AliRunLoader* runLoader = AliRunLoader::Open(str);
71 runLoader->LoadgAlice();
72 gAlice = runLoader->GetAliRun();
73 runLoader->LoadHeader();
75 // #########################################################
76 // open esd file and get the tree
78 sprintf(str,"%s/run%d/AliESDs.root",dataDir,r);
79 // close it first to avoid memory leak
81 if (esdFile->IsOpen())
84 esdFile = TFile::Open(str);
85 esdTree = (TTree*)esdFile->Get("esdTree");
88 esdBranch = esdTree->GetBranch("ESD");
89 esdBranch->SetAddress(&esd);
93 // ########################################################
95 AliTracker::SetFieldMap(gAlice->Field(),kTRUE); // kTRUE means uniform magnetic field
97 // ########################################################
98 // getting number of events
99 Int_t nEvents = (Int_t)runLoader->GetNumberOfEvents();
100 Int_t nESDEvents = esdBranch->GetEntries();
102 if (nEvents!=nESDEvents)
103 cout << " Warning: Different number of events from runloader and esdtree!!!" << nEvents << " / " << nESDEvents << endl;
105 // ########################################################
106 // loop over number of events
107 cout << " looping over events..." << endl;
108 for(Int_t i=1; i<nEvents; i++) {
110 esdBranch->GetEntry(i);
111 runLoader->GetEvent(i);
113 // ########################################################
114 // get the EDS vertex
115 AliESDVertex* vtxESD = esd->GetVertex();
117 Double_t vtxSigma[3];
118 vtxESD->GetSigmaXYZ(vtxSigma);
120 // ########################################################
121 // loop over esd tracks
122 Int_t nTracks = esd->GetNumberOfTracks();
124 for (Int_t t=0; t<nTracks; t++) {
125 AliESDtrack* esdTrack = esd->GetTrack(t);
127 //trackCuts->AcceptTrack(esdTrack, vtxESD, esd->GetMagneticField());
128 trackCuts->AcceptTrack(esdTrack);
130 } // end of track loop
131 } // end of event loop
134 TFile* fout = new TFile("out.root","RECREATE");
136 trackCuts->SaveHistograms("esd_track_cuts");