4 // Script to make correction maps for dndeta measurements using the
5 // dNdEtaCorrection class.
7 // implementation with TSelector
10 #include "../CreateESDChain.C"
11 #include "../PWG0Helper.C"
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")
16 connectProof(proofConnect);
18 TString libraries("libEG;libGeom;libESD;libPWG0base;libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6");
19 TString packages("PWG0base;PWG0dep");
21 if (!prepareQuery(libraries, packages, kTRUE))
24 gROOT->ProcessLine(".L CreateCuts.C");
26 AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
29 printf("ERROR: esdTrackCuts could not be created\n");
34 inputList.Add(esdTrackCuts);
36 TChain* chain = CreateESDChain(dataDir, nRuns, offset);
38 TString selector("AlidNdEtaCorrectionSelector.cxx++");
42 Int_t result = executeQuery(chain, &inputList, selector, option);
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")
47 gSystem->Load("libPWG0base");
49 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
50 dNdEtaCorrection->LoadHistograms(correctionMapFile, correctionMapFolder);
51 dNdEtaCorrection->SetName("dndeta_correction");
52 dNdEtaCorrection->SetTitle("dndeta_correction");
54 TFile::Open(correctionMapFile);
56 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir);
57 fdNdEtaAnalysis->LoadHistograms();
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)
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);
68 hist->SetBinContent(x, y, z, correction * value);
71 fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3);
73 dNdEtaAnalysis* fdNdEtaAnalysisMC = new dNdEtaAnalysis(checkDir, checkDir);
74 fdNdEtaAnalysisMC->LoadHistograms();
76 fdNdEtaAnalysisMC->Finish(0, 0.3);
79 fdNdEtaAnalysis->DrawHistograms();
81 fdNdEtaAnalysisMC->DrawHistograms();
84 for (Int_t i=0; i<dNdEtaAnalysis::kVertexBinning; ++i)
85 fdNdEtaAnalysis->GetdNdEtaHistogram(i)->Divide(fdNdEtaAnalysisMC->GetdNdEtaHistogram(i));
87 fdNdEtaAnalysis->DrawHistograms();