]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/dNdEta/testAnalysis2.C
b2d03a24edb8a4b6d5e59e123a12fe975fdbc9b2
[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", const char* option = "", const char* proofServer = "jgrosseo@lxb6046")
15 {
16   if (aProof)
17   {
18     connectProof(proofServer);
19     gProof->AddInput(new TParameter<long>("PROOF_MaxSlavesPerNode", (long)2));
20     gProof->AddInput(new TNamed("PROOF_Packetizer", "TAdaptivePacketizer"));
21   }
22
23   TString libraries("libEG;libGeom;libESD;libPWG0base");
24   TString packages("adaptivepacketizer;PWG0base");
25
26   if (!prepareQuery(libraries, packages, kTRUE))
27     return;
28
29   //TODO somehow prevent loading several times
30   gROOT->ProcessLine(".L CreateCuts.C");
31   gROOT->ProcessLine(".L drawPlots.C");
32
33   TChain* chain = CreateESDChain(data, nRuns, offset);
34
35   TList inputList;
36
37   // selection of esd tracks
38   AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
39   if (!esdTrackCuts)
40   {
41     printf("ERROR: esdTrackCuts could not be created\n");
42     return;
43   }
44
45   inputList.Add(esdTrackCuts);
46
47   TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
48   AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
49
50   selectorName += ".cxx+";
51
52   if (aDebug != kFALSE)
53     selectorName += "+g";
54
55   Int_t result = executeQuery(chain, &inputList, selectorName, option);
56
57   if (result >= 0)
58   {
59     if (aMC)
60     {
61       dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
62
63       TFile* file = TFile::Open("analysis_mc.root");
64
65       if (!file)
66       {
67         cout << "Error. File not found" << endl;
68         return;
69       }
70       fdNdEtaAnalysis->LoadHistograms();
71       fdNdEtaAnalysis->DrawHistograms(kTRUE);
72     }
73     else
74       FinishAnalysisAll("analysis_esd_raw.root", "analysis_esd.root", correctionMapFile, correctionMapFolder);
75   }
76 }
77
78 void FinishAnalysisAll(const char* dataInput = "analysis_esd_raw.root", const char* dataOutput = "analysis_esd.root", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
79 {
80   gSystem->Load("libPWG0base");
81
82   AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
83   TFile::Open(correctionMapFile);
84   dNdEtaCorrection->LoadHistograms();
85
86   TFile* file = TFile::Open(dataInput);
87
88   if (!file)
89   {
90     cout << "Error. File not found" << endl;
91     return;
92   }
93
94   dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
95   fdNdEtaAnalysis->LoadHistograms("dndeta");
96   fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL);
97   fdNdEtaAnalysis->DrawHistograms(kTRUE);
98   TFile* file2 = TFile::Open(dataOutput, "RECREATE");
99   fdNdEtaAnalysis->SaveHistograms();
100
101   file->cd();
102   fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
103   fdNdEtaAnalysis->LoadHistograms("dndeta");
104   fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco);
105   fdNdEtaAnalysis->DrawHistograms(kTRUE);
106   file2->cd();
107   fdNdEtaAnalysis->SaveHistograms();
108
109   file->cd();
110   fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
111   fdNdEtaAnalysis->LoadHistograms("dndeta");
112   fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle);
113   fdNdEtaAnalysis->DrawHistograms(kTRUE);
114   file2->cd();
115   fdNdEtaAnalysis->SaveHistograms();
116
117   file->cd();
118   fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
119   fdNdEtaAnalysis->LoadHistograms("dndeta");
120   fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
121   fdNdEtaAnalysis->DrawHistograms(kTRUE);
122   file2->cd();
123   fdNdEtaAnalysis->SaveHistograms();
124 }
125
126 void FinishAnalysis(const char* analysisFile = "analysis_esd.root", const char* analysisDir = "dndeta", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE)
127 {
128   gSystem->Load("libPWG0base");
129
130   TFile* file = TFile::Open(analysisFile);
131
132   dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir);
133   fdNdEtaAnalysis->LoadHistograms();
134
135   if (correctionMapFile)
136   {
137     AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
138     TFile::Open(correctionMapFile);
139     dNdEtaCorrection->LoadHistograms();
140
141     fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3);
142   }
143
144   fdNdEtaAnalysis->DrawHistograms(simple);
145
146   TH1* hist = fdNdEtaAnalysis->GetdNdEtaHistogram(1);
147   Int_t binLeft = hist->GetXaxis()->FindBin(-0.5);
148   Int_t binRight = hist->GetXaxis()->FindBin(0.5);
149   Float_t value1 = hist->Integral(binLeft, binRight);
150
151   hist = fdNdEtaAnalysis->GetdNdEtaHistogram(2);
152   Float_t value2 = hist->Integral(binLeft, binRight);
153
154   printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);
155 }