]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdEta/testAnalysis2.C
EMCAL geometry can be created independently form anything now
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / testAnalysis2.C
CommitLineData
dc740de4 1/* $Id$ */
2
75e130df 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"
0bd1f8a0 12#include "../PWG0Helper.C"
75e130df 13
4c351225 14void 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")
75e130df 15{
0bd1f8a0 16 if (aProof)
74fd10b3 17 {
4c351225 18 connectProof(proofServer);
74fd10b3 19 gProof->AddInput(new TParameter<long>("PROOF_MaxSlavesPerNode", (long)2));
20 gProof->AddInput(new TNamed("PROOF_Packetizer", "TAdaptivePacketizer"));
21 }
10ebe68d 22
0bd1f8a0 23 TString libraries("libEG;libGeom;libESD;libPWG0base");
74fd10b3 24 TString packages("adaptivepacketizer;PWG0base");
16e24ca3 25
0bd1f8a0 26 if (!prepareQuery(libraries, packages, kTRUE))
27 return;
16e24ca3 28
0bd1f8a0 29 //TODO somehow prevent loading several times
30 gROOT->ProcessLine(".L CreateCuts.C");
31 gROOT->ProcessLine(".L drawPlots.C");
16e24ca3 32
0bd1f8a0 33 TChain* chain = CreateESDChain(data, nRuns, offset);
75e130df 34
0bd1f8a0 35 TList inputList;
16e24ca3 36
9e952c39 37 // selection of esd tracks
38 AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
39 if (!esdTrackCuts)
847489f7 40 {
9e952c39 41 printf("ERROR: esdTrackCuts could not be created\n");
42 return;
847489f7 43 }
44
9e952c39 45 inputList.Add(esdTrackCuts);
46
dc740de4 47 TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
4dd2ad81 48 AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
49
4c351225 50 selectorName += ".cxx+";
16e24ca3 51
fcf2fb36 52 if (aDebug != kFALSE)
74fd10b3 53 selectorName += "+g";
fcf2fb36 54
5c495d37 55 Int_t result = executeQuery(chain, &inputList, selectorName, option);
847489f7 56
0bd1f8a0 57 if (result >= 0)
16e24ca3 58 {
74fd10b3 59 if (aMC)
0bd1f8a0 60 {
74fd10b3 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();
0448e811 71 fdNdEtaAnalysis->DrawHistograms(kTRUE);
0bd1f8a0 72 }
74fd10b3 73 else
0448e811 74 FinishAnalysisAll("analysis_esd_raw.root", "analysis_esd.root", correctionMapFile, correctionMapFolder);
74fd10b3 75 }
76}
77
78void 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();
10ebe68d 85
74fd10b3 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();
9e952c39 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();
74fd10b3 124}
125
126void 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);
10ebe68d 142 }
74fd10b3 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);
75e130df 155}