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