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.
8 // implementation with TSelector
11 #include "../CreateESDChain.C"
12 #include "../PWG0Helper.C"
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")
18 connectProof(proofServer);
19 gProof->AddInput(new TParameter<long>("PROOF_MaxSlavesPerNode", (long)2));
20 gProof->AddInput(new TNamed("PROOF_Packetizer", "TAdaptivePacketizer"));
23 TString libraries("libEG;libGeom;libESD;libPWG0base");
24 TString packages("adaptivepacketizer;PWG0base");
26 if (!prepareQuery(libraries, packages, kTRUE))
29 //TODO somehow prevent loading several times
30 gROOT->ProcessLine(".L CreateCuts.C");
31 gROOT->ProcessLine(".L drawPlots.C");
33 TChain* chain = CreateESDChain(data, nRuns, offset);
37 // selection of esd tracks
38 AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
41 printf("ERROR: esdTrackCuts could not be created\n");
45 inputList.Add(esdTrackCuts);
47 TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
48 AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
50 selectorName += ".cxx+";
55 Int_t result = executeQuery(chain, &inputList, selectorName, option);
61 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
63 TFile* file = TFile::Open("analysis_mc.root");
67 cout << "Error. File not found" << endl;
70 fdNdEtaAnalysis->LoadHistograms();
71 fdNdEtaAnalysis->DrawHistograms(kTRUE);
74 FinishAnalysisAll("analysis_esd_raw.root", "analysis_esd.root", correctionMapFile, correctionMapFolder);
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")
80 gSystem->Load("libPWG0base");
82 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
83 TFile::Open(correctionMapFile);
84 dNdEtaCorrection->LoadHistograms();
86 TFile* file = TFile::Open(dataInput);
90 cout << "Error. File not found" << endl;
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();
102 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
103 fdNdEtaAnalysis->LoadHistograms("dndeta");
104 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco);
105 fdNdEtaAnalysis->DrawHistograms(kTRUE);
107 fdNdEtaAnalysis->SaveHistograms();
110 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
111 fdNdEtaAnalysis->LoadHistograms("dndeta");
112 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle);
113 fdNdEtaAnalysis->DrawHistograms(kTRUE);
115 fdNdEtaAnalysis->SaveHistograms();
118 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
119 fdNdEtaAnalysis->LoadHistograms("dndeta");
120 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
121 fdNdEtaAnalysis->DrawHistograms(kTRUE);
123 fdNdEtaAnalysis->SaveHistograms();
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)
128 gSystem->Load("libPWG0base");
130 TFile* file = TFile::Open(analysisFile);
132 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir);
133 fdNdEtaAnalysis->LoadHistograms();
135 if (correctionMapFile)
137 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
138 TFile::Open(correctionMapFile);
139 dNdEtaCorrection->LoadHistograms();
141 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3);
144 fdNdEtaAnalysis->DrawHistograms(simple);
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);
151 hist = fdNdEtaAnalysis->GetdNdEtaHistogram(2);
152 Float_t value2 = hist->Integral(binLeft, binRight);
154 printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);