3e2e8895d32612af445fde70b1614ab0c1bc4799
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / testAnalysis2.C
1 /* $Id$ */
2
3 //
4 // Script to test the dN/dEta analysis using the dNdEtaAnalysis and
5 // dNdEtaCorrection classes. Note that there is a cut on the events,
6 // so the measurement will be biassed.
7 //
8 // implementation with TSelector
9 //
10
11 #include "../CreateESDChain.C"
12 #include "../PWG0Helper.C"
13
14 void testAnalysis2(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
15 {
16   if (aProof)
17     connectProof("proof01@lxb6046");
18
19   TString libraries("libEG;libGeom;libESD;libPWG0base");
20   TString packages("PWG0base");
21   if (aMC != kFALSE)
22   {
23     libraries += ";libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6";
24     packages += ";PWG0dep";
25   }
26
27   if (!prepareQuery(libraries, packages, kTRUE))
28     return;
29
30   //TODO somehow prevent loading several times
31   gROOT->ProcessLine(".L CreateCuts.C");
32   gROOT->ProcessLine(".L drawPlots.C");
33
34   TChain* chain = CreateESDChain(data, nRuns, offset);
35
36   // selection of esd tracks
37   AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
38   if (!esdTrackCuts)
39   {
40     printf("ERROR: esdTrackCuts could not be created\n");
41     return;
42   }
43
44   TList inputList;
45   inputList.Add(esdTrackCuts);
46
47   if (aMC == kFALSE)
48   {
49     AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
50     dNdEtaCorrection->LoadHistograms(correctionMapFile, correctionMapFolder);
51     dNdEtaCorrection->ReduceInformation();
52     dNdEtaCorrection->SetName("dndeta_correction");
53     dNdEtaCorrection->SetTitle("dndeta_correction");
54
55     inputList.Add(dNdEtaCorrection);
56   }
57
58   TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
59   AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
60
61   selectorName += ".cxx++";
62
63   if (aDebug != kFALSE)
64     selectorName += "g";
65
66   Int_t result = executeQuery(chain, &inputList, selectorName);
67
68   if (result >= 0)
69   {
70     dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
71
72     TFile* file = TFile::Open(aMC ? "analysis_mc.root" : "analysis_esd.root");
73     if (!file)
74     {
75       cout << "Error. File not found" << endl;
76       return;
77     }
78     fdNdEtaAnalysis->LoadHistograms();
79     fdNdEtaAnalysis->DrawHistograms();
80
81     dNdEta(kTRUE);
82   }
83 }