]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdEta/makeCorrection2.C
changing binning
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / makeCorrection2.C
CommitLineData
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 13void 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
45void 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}