]>
Commit | Line | Data |
---|---|---|
dc740de4 | 1 | /* $Id$ */ |
2 | ||
539b6cb4 | 3 | // |
4 | // Script to make correction maps for dndeta measurements using the | |
5 | // dNdEtaCorrection class. | |
6 | // | |
7 | // implementation with TSelector | |
8 | // | |
9 | ||
10 | #include "../CreateESDChain.C" | |
0bd1f8a0 | 11 | #include "../PWG0Helper.C" |
539b6cb4 | 12 | |
8ca1a6d9 | 13 | void makeCorrection2(Char_t* dataDir, Int_t nRuns=20, Int_t offset = 0, Bool_t debug = kFALSE, Bool_t aProof = kFALSE, const Char_t* option = "", const Char_t* proofConnect = "proof01@lxb6046") |
539b6cb4 | 14 | { |
0bd1f8a0 | 15 | if (aProof) |
8ca1a6d9 | 16 | connectProof(proofConnect); |
0bd1f8a0 | 17 | |
18 | TString libraries("libEG;libGeom;libESD;libPWG0base;libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6"); | |
19 | TString packages("PWG0base;PWG0dep"); | |
20 | ||
21 | if (!prepareQuery(libraries, packages, kTRUE)) | |
22 | return; | |
539b6cb4 | 23 | |
10ebe68d | 24 | gROOT->ProcessLine(".L CreateCuts.C"); |
79ab56b9 | 25 | |
10ebe68d | 26 | AliESDtrackCuts* esdTrackCuts = CreateTrackCuts(); |
27 | if (!esdTrackCuts) | |
28 | { | |
29 | printf("ERROR: esdTrackCuts could not be created\n"); | |
30 | return; | |
31 | } | |
79ab56b9 | 32 | |
0bd1f8a0 | 33 | TList inputList; |
34 | inputList.Add(esdTrackCuts); | |
35 | ||
10ebe68d | 36 | TChain* chain = CreateESDChain(dataDir, nRuns, offset); |
45e97e28 | 37 | |
10ebe68d | 38 | TString selector("AlidNdEtaCorrectionSelector.cxx++"); |
45e97e28 | 39 | if (debug != kFALSE) |
40 | selector += "g"; | |
41 | ||
0bd1f8a0 | 42 | Int_t result = executeQuery(chain, &inputList, selector, option); |
539b6cb4 | 43 | } |
8ca1a6d9 | 44 | |
45 | void VerifyCorrection(Int_t draw = 0, const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", const char* analysisDir = "dndetaESD", const char* checkDir = "dndetaMC") | |
46 | { | |
47 | gSystem->Load("libPWG0base"); | |
48 | ||
49 | AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder); | |
50 | dNdEtaCorrection->LoadHistograms(correctionMapFile, correctionMapFolder); | |
51 | dNdEtaCorrection->SetName("dndeta_correction"); | |
52 | dNdEtaCorrection->SetTitle("dndeta_correction"); | |
53 | ||
54 | TFile::Open(correctionMapFile); | |
55 | ||
56 | dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir); | |
57 | fdNdEtaAnalysis->LoadHistograms(); | |
58 | ||
59 | // correct with track2particle | |
60 | TH3F* hist = fdNdEtaAnalysis->GetHistogram(); | |
61 | for (Int_t x=1; x<=hist->GetNbinsX(); ++x) | |
62 | for (Int_t y=1; y<=hist->GetNbinsY(); ++y) | |
63 | for (Int_t z=1; z<=hist->GetNbinsZ(); ++z) | |
64 | { | |
65 | Float_t correction = dNdEtaCorrection->GetTrack2ParticleCorrection(hist->GetXaxis()->GetBinCenter(x), hist->GetYaxis()->GetBinCenter(y), hist->GetZaxis()->GetBinCenter(z)); | |
66 | Float_t value = hist->GetBinContent(x, y, z); | |
67 | ||
68 | hist->SetBinContent(x, y, z, correction * value); | |
69 | } | |
70 | ||
71 | fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3); | |
72 | ||
73 | dNdEtaAnalysis* fdNdEtaAnalysisMC = new dNdEtaAnalysis(checkDir, checkDir); | |
74 | fdNdEtaAnalysisMC->LoadHistograms(); | |
75 | ||
76 | fdNdEtaAnalysisMC->Finish(0, 0.3); | |
77 | ||
78 | if (draw == 0) | |
79 | fdNdEtaAnalysis->DrawHistograms(); | |
80 | else if (draw == 1) | |
81 | fdNdEtaAnalysisMC->DrawHistograms(); | |
82 | else | |
83 | { | |
84 | for (Int_t i=0; i<dNdEtaAnalysis::kVertexBinning; ++i) | |
85 | fdNdEtaAnalysis->GetdNdEtaHistogram(i)->Divide(fdNdEtaAnalysisMC->GetdNdEtaHistogram(i)); | |
86 | ||
87 | fdNdEtaAnalysis->DrawHistograms(); | |
88 | } | |
89 | } |