1 void run(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, Bool_t mc = kTRUE, const char* option = "")
5 TProof::Open("lxb6046");
7 // Enable the needed package
8 gProof->UploadPackage("STEERBase");
9 gProof->EnablePackage("STEERBase");
10 gProof->UploadPackage("ESD");
11 gProof->EnablePackage("ESD");
12 gProof->UploadPackage("AOD");
13 gProof->EnablePackage("AOD");
14 gProof->UploadPackage("ANALYSIS");
15 gProof->EnablePackage("ANALYSIS");
16 gProof->UploadPackage("PWG0base");
17 gProof->EnablePackage("PWG0base");
21 gSystem->Load("libVMC");
22 gSystem->Load("libTree");
23 gSystem->Load("libSTEERBase");
24 gSystem->Load("libESD");
25 gSystem->Load("libANALYSIS");
26 gSystem->Load("libPWG0base");
29 // Create chain of input files
30 gROOT->LoadMacro("../CreateESDChain.C");
31 chain = CreateESDChain(data, nRuns, offset);
33 // Create the analysis manager
34 mgr = new AliAnalysisManager;
36 TString taskName("AlidNdEtaTask.cxx+");
42 gProof->Load(taskName);
44 gROOT->Macro(taskName);
46 task = new AlidNdEtaTask(option);
48 AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kTPC;
49 task->SetAnalysisMode(analysisMode);
51 if (analysisMode != AliPWG0Helper::kSPD)
53 // selection of esd tracks
54 gROOT->ProcessLine(".L ../CreateStandardCuts.C");
55 AliESDtrackCuts* esdTrackCuts = CreateTrackCuts(analysisMode);
58 printf("ERROR: esdTrackCuts could not be created\n");
62 task->SetTrackCuts(esdTrackCuts);
71 // Enable MC event handler
72 AliMCEventHandler* handler = new AliMCEventHandler;
73 handler->SetReadTR(kFALSE);
74 mgr->SetMCtruthEventHandler(handler);
78 AliESDInputHandler* esdH = new AliESDInputHandler;
79 mgr->SetInputEventHandler(esdH);
82 cInput = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
83 mgr->ConnectInput(task, 0, cInput);
86 cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
87 mgr->ConnectOutput(task, 0, cOutput);
89 // Enable debug printouts
91 mgr->SetDebugLevel(2);
97 mgr->StartAnalysis((aProof) ? "proof" : "local", chain);
102 gSystem->Load("libTree");
103 gSystem->Load("libVMC");
105 gSystem->Load("libSTEERBase");
106 gSystem->Load("libANALYSIS");
107 gSystem->Load("libPWG0base");
110 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")
114 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
115 TFile::Open(correctionMapFile);
116 dNdEtaCorrection->LoadHistograms();
118 TFile* file = TFile::Open(dataInput);
122 cout << "Error. File not found" << endl;
126 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
127 fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
128 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL, 1);
129 //fdNdEtaAnalysis->DrawHistograms(kTRUE);
130 TFile* file2 = TFile::Open(dataOutput, "RECREATE");
131 fdNdEtaAnalysis->SaveHistograms();
134 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
135 fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
136 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco, 1);
137 //fdNdEtaAnalysis->DrawHistograms(kTRUE);
139 fdNdEtaAnalysis->SaveHistograms();
142 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
143 fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
144 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle, 1);
145 //fdNdEtaAnalysis->DrawHistograms(kTRUE);
147 fdNdEtaAnalysis->SaveHistograms();
150 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
151 fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
152 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone, 1);
153 //fdNdEtaAnalysis->DrawHistograms(kTRUE);
155 fdNdEtaAnalysis->SaveHistograms();
161 void* FinishAnalysis(const char* analysisFile = "analysis_esd_raw.root", const char* analysisDir = "fdNdEtaAnalysisESD", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE)
165 TFile* file = TFile::Open(analysisFile);
167 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir);
168 fdNdEtaAnalysis->LoadHistograms();
170 if (correctionMapFile)
172 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
173 TFile::Open(correctionMapFile);
174 dNdEtaCorrection->LoadHistograms();
176 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL);
177 //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kINEL);
178 //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kTrack2Particle);
181 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
183 fdNdEtaAnalysis->DrawHistograms(simple);
185 TH1* hist = fdNdEtaAnalysis->GetdNdEtaHistogram(1);
186 Int_t binLeft = hist->GetXaxis()->FindBin(-0.5);
187 Int_t binRight = hist->GetXaxis()->FindBin(0.5);
188 Float_t value1 = hist->Integral(binLeft, binRight);
190 hist = fdNdEtaAnalysis->GetdNdEtaHistogram(2);
191 Float_t value2 = hist->Integral(binLeft, binRight);
194 printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);
196 return fdNdEtaAnalysis;