axis->SetRangeUser(0, 4.9999);
axis->SetTitle("p_{T} (GeV/c)");
}
- if (strcmp(axis->GetTitle(), "vtx z [cm]") == 0 || strcmp(axis->GetTitle(), "vtx z (cm)") == 0)
+ if (strcmp(axis->GetTitle(), "vtx z [cm]") == 0 || strcmp(axis->GetTitle(), "vtx z (cm)") == 0 || strcmp(axis->GetTitle(), "vtx-z [cm]") == 0 || strcmp(axis->GetTitle(), "vtx-z (cm)") == 0)
{
axis->SetRangeUser(-15, 14.9999);
axis->SetTitle("vtx-z (cm)");
for (Int_t i=AlidNdEtaCorrection::kTrack2Particle; i<=AlidNdEtaCorrection::kND; i++)
{
Printf("Correction %d", i);
- dNdEtaCorrection->GetCorrection(i)->PrintInfo(0);
- return;
+ dNdEtaCorrection->GetCorrection(i)->PrintInfo(0.2);
}
}
fdNdEtaAnalysis->LoadHistograms("dndeta");
TH1* histESD = (TH1*) file->Get("dndeta/dNdEta_corrected");
+ TH1* histESD1 = (TH1*) file->Get("dndeta/dNdEta_corrected_1");
+ TH1* histESD2 = (TH1*) file->Get("dndeta/dNdEta_corrected_2");
TH1* histESDnsd = (TH1*) file->Get("dndetaNSD/dNdEta_corrected");
TH1* histESDnsdNoPt = (TH1*) file->Get("dndetaNSD/dNdEta");
+ TH1* histESDonePart = (TH1*) file->Get("dndetaOnePart/dNdEta_corrected");
+ if (!histESDonePart)
+ histESDonePart = new TH1F;
TH1* histESDNoPt = (TH1*) file->Get("dndeta/dNdEta");
TH1* histESDMB = (TH1*) file->Get("dndetaTr/dNdEta_corrected");
TH1* histESDMBNoPt = (TH1*) file->Get("dndetaTr/dNdEta");
TH1* histESDMBTracksNoPt = (TH1*) file->Get("dndetaTracks/dNdEta");
Prepare1DPlot(histESD);
+ Prepare1DPlot(histESD1);
+ Prepare1DPlot(histESD2);
Prepare1DPlot(histESDnsd);
+ Prepare1DPlot(histESDonePart);
Prepare1DPlot(histESDMB);
Prepare1DPlot(histESDMBVtx);
histESD->SetLineWidth(0);
histESDnsd->SetLineWidth(0);
+ histESDonePart->SetLineWidth(0);
histESDMB->SetLineWidth(0);
histESDMBVtx->SetLineWidth(0);
histESD->SetMarkerColor(1);
histESDnsd->SetMarkerColor(6);
+ histESDonePart->SetMarkerColor(3);
histESDMB->SetMarkerColor(2);
histESDMBVtx->SetMarkerColor(4);
histESD->SetLineColor(1);
histESDnsd->SetLineColor(6);
+ histESDonePart->SetLineColor(3);
histESDMB->SetLineColor(2);
histESDMBVtx->SetLineColor(4);
histESD->SetMarkerStyle(20);
histESDnsd->SetMarkerStyle(29);
+ histESDonePart->SetMarkerStyle(24);
histESDMB->SetMarkerStyle(21);
histESDMBVtx->SetMarkerStyle(22);
histESDMBVtxNoPt->SetMarkerStyle(22);
histESDMBTracksNoPt->SetMarkerStyle(23);
- Float_t etaLimit = (fdNdEtaAnalysis->GetAnalysisMode() & AliPWG0Helper::kTPC) ? 0.89 : 1.79;
+ Float_t etaLimit = (fdNdEtaAnalysis->GetAnalysisMode() & AliPWG0Helper::kTPC) ? 0.89 : 1.99;
Float_t etaPlotLimit = (fdNdEtaAnalysis->GetAnalysisMode() & AliPWG0Helper::kTPC) ? 1.2 : 2.3;
//Float_t etaLimit = (fdNdEtaAnalysis->GetAnalysisMode() == AliPWG0Helper::kTPC) ? 0.89 : 1.39;
//Float_t etaPlotLimit = (fdNdEtaAnalysis->GetAnalysisMode() == AliPWG0Helper::kTPC) ? 1.2 : 1.9;
histESDMB->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
histESD->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
histESDnsd->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
+ histESDonePart->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
histESDNoPt->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
histESDMBNoPt->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
legend->SetFillColor(0);
legend->AddEntry(histESDMBVtx, "Triggered, vertex");
legend->AddEntry(histESDMB, "Triggered");
- legend->AddEntry(histESD, "All events");
+ legend->AddEntry(histESD, "All INEL events");
+ legend->AddEntry(histESDnsd, "All NSD events");
+ legend->AddEntry(histESDonePart, "One Particle");
- TH2F* dummy = new TH2F("dummy", "", 100, -etaPlotLimit, etaPlotLimit, 1000, 2.1, max * 1.1);
+ TH2F* dummy = new TH2F("dummy", "", 100, -etaPlotLimit, etaPlotLimit, 1000, 0, max * 1.1);
+ dummy->GetYaxis()->SetRangeUser(2.1, max * 1.1);
Prepare1DPlot(dummy);
dummy->SetStats(kFALSE);
dummy->SetXTitle("#eta");
histESDMBVtx->Draw("SAME");
histESDMB->Draw("SAME");
histESD->Draw("SAME");
+ histESDnsd->Draw("SAME");
+ histESDonePart->Draw("SAME");
legend->Draw();
-
+
if (save)
{
- canvas->SaveAs("dNdEta1.gif");
- canvas->SaveAs("dNdEta1.eps");
+ canvas->SaveAs("dNdEta1.png");
+ //canvas->SaveAs("dNdEta1.eps");
}
-
+
+ histESD->Fit("pol0", "0", "", -0.49, 0.49);
+ histESDnsd->Fit("pol0", "0", "", -0.49, 0.49);
+ histESDonePart->Fit("pol0", "0", "", -0.49, 0.49);
+ histESDonePart->Fit("pol0", "0", "", -0.99, 0.99);
+
+ canvas = new TCanvas("dNdEta1_mirrored", "dNdEta1_mirrored", 500, 500);
+ canvas->SetGridx();
+ canvas->SetGridy();
+
+ dummy->DrawCopy()->GetXaxis()->SetRangeUser(0, 100);
+ histESD->DrawCopy("SAME")->SetMarkerStyle(24);
+ histESDnsd->DrawCopy("SAME")->SetMarkerStyle(24);
+
+ graph = new TGraphErrors(histESD);
+ for (Int_t i=0; i<graph->GetN(); i++)
+ graph->GetX()[i] *= -1;
+ graph->SetMarkerStyle(5);
+ graph->Draw("P SAME");
+
+ graph = new TGraphErrors(histESDnsd);
+ for (Int_t i=0; i<graph->GetN(); i++)
+ graph->GetX()[i] *= -1;
+ graph->SetMarkerStyle(5);
+ graph->SetMarkerColor(histESDnsd->GetMarkerColor());
+ graph->Draw("P SAME");
+
+ canvas = new TCanvas("dNdEta1_ratio", "dNdEta1_ratio", 500, 500);
+ canvas->SetGridx();
+ canvas->SetGridy();
+
+ dummy_clone = dummy->DrawCopy();
+ dummy_clone->GetXaxis()->SetRangeUser(0, 100);
+ dummy_clone->GetYaxis()->SetRangeUser(0.5, 1.5);
+
+ graph = new TGraphErrors(histESD);
+ for (Int_t i=0; i<graph->GetN(); i++)
+ {
+ Int_t bin = histESD->GetXaxis()->FindBin(-graph->GetX()[i]);
+ if (histESD->GetBinContent(bin) > 0 && graph->GetY()[i] > 0)
+ {
+ graph->GetEY()[i] = sqrt(graph->GetEY()[i] * graph->GetEY()[i] / graph->GetY()[i] / graph->GetY()[i]
+ + histESD->GetBinError(bin) * histESD->GetBinError(bin) / histESD->GetBinContent(bin) / histESD->GetBinContent(bin));
+ graph->GetY()[i] /= histESD->GetBinContent(bin);
+ graph->GetEY()[i] *= graph->GetY()[i];
+ }
+ else
+ graph->GetY()[i] = 0;
+ }
+ graph->SetMarkerStyle(5);
+ graph->Draw("P SAME");
+
+ graph = new TGraphErrors(histESDnsd);
+ for (Int_t i=0; i<graph->GetN(); i++)
+ {
+ Int_t bin = histESDnsd->GetXaxis()->FindBin(-graph->GetX()[i]);
+ if (histESDnsd->GetBinContent(bin) > 0 && graph->GetY()[i] > 0)
+ {
+ graph->GetEY()[i] = sqrt(graph->GetEY()[i] * graph->GetEY()[i] / graph->GetY()[i] / graph->GetY()[i]
+ + histESDnsd->GetBinError(bin) * histESDnsd->GetBinError(bin) / histESDnsd->GetBinContent(bin) / histESDnsd->GetBinContent(bin));
+ graph->GetY()[i] /= histESDnsd->GetBinContent(bin);
+ graph->GetEY()[i] *= graph->GetY()[i];
+ graph->GetY()[i] += 0.2;
+ }
+ }
+ graph->SetMarkerStyle(5);
+ graph->SetMarkerColor(histESDnsd->GetMarkerColor());
+ graph->Draw("P SAME");
+
+ canvas = new TCanvas("dNdEta1_vertex", "dNdEta1_vertex", 500, 500);
+ dummy->DrawCopy();
+ histESD->DrawCopy("SAME");
+ histESD1->SetLineColor(2);
+ histESD1->DrawCopy("SAME");
+ histESD2->SetLineColor(4);
+ histESD2->DrawCopy("SAME");
+
+ PrintIntegratedDeviation(histESDnsd, histESDMB, "factor MB / NSD");
+
if (onlyESD)
return;
TFile* file2 = TFile::Open("analysis_mc.root");
- TH1* histMCTrVtx = (TH1*) GetMCHist("dndetaTrVtx", -1, "MC: MB with trigger")->Clone("histMCTrVtx");
+ TH1* histMCTrVtx = (TH1*) GetMCHist("dndetaTrVtx", -1, "MC: MB with vertex")->Clone("histMCTrVtx");
TH1* ratioTrVtx = (TH1*) DrawdNdEtaRatio(histESDMBVtx, histMCTrVtx, "triggered_vertex", etaPlotLimit)->Clone();
TH1* histMC = (TH1*) GetMCHist("dndeta", -1, "MC: full inelastic")->Clone("histMC");
TH1* histMCTr = (TH1*) GetMCHist("dndetaTr", -1, "MC: minimum bias")->Clone("histMCTr");
TH1* histMCnsd = (TH1*) GetMCHist("dndetaNSD", -1, "MC: NSD")->Clone("histMCnsd");
+ TH1* histMConePart = (TH1*) GetMCHist("dndetaOnePart", -1, "MC: OnePart")->Clone("histMConePart");
- TH1* histMCPtCut = (TH1*) GetMCHist("dndeta", 0.21, "MC: full inelastic, pt cut")->Clone("histMCPtCut");
- TH1* histMCTrPtCut = (TH1*) GetMCHist("dndetaTr", 0.21, "MC: minimum bias, pt cut")->Clone("histMCTrPtCut");
- TH1* histMCTrVtxPtCut = (TH1*) GetMCHist("dndetaTrVtx", 0.21, "MC: MB with trigger, pt cut")->Clone("histMCTrVtxPtCut");
- TH1* histMCnsdNoPt = (TH1*) GetMCHist("dndetaNSD", 0.21, "MC: NSD, put cut")->Clone("histMCnsdNoPt");
- TH1* histMCTracksPtCut = (TH1*) GetMCHist("dndetaTracks", 0.21, "MC: Tracks w/o resolution effect, pt cut")->Clone("histMCTracksPtCut");
+ TH1* histMCPtCut = (TH1*) GetMCHist("dndeta", 0.151, "MC: full inelastic, pt cut")->Clone("histMCPtCut");
+ TH1* histMCTrPtCut = (TH1*) GetMCHist("dndetaTr", 0.151, "MC: minimum bias, pt cut")->Clone("histMCTrPtCut");
+ TH1* histMCTrVtxPtCut = (TH1*) GetMCHist("dndetaTrVtx", 0.151, "MC: MB with vertex, pt cut")->Clone("histMCTrVtxPtCut");
+ TH1* histMCnsdNoPt = (TH1*) GetMCHist("dndetaNSD", 0.151, "MC: NSD, put cut")->Clone("histMCnsdNoPt");
+ TH1* histMCTracksPtCut = (TH1*) GetMCHist("dndetaTracks", 0.151, "MC: Tracks w/o resolution effect, pt cut")->Clone("histMCTracksPtCut");
Prepare1DPlot(histMC);
Prepare1DPlot(histMCnsd);
TH1* ratioTrVtx = (TH1*) DrawdNdEtaRatio(histESDMBVtx, histMCTrVtx, "triggered_vertex", etaPlotLimit)->Clone();
TH1* ratioTrVtxNoPt = (TH1*) DrawdNdEtaRatio(histESDMBVtxNoPt, histMCTrVtxPtCut, "triggered_vertex_nopt", etaPlotLimit)->Clone();
TH1* ratioNSD = (TH1*) DrawdNdEtaRatio(histESDnsd, histMCnsd, "NSD", etaPlotLimit)->Clone();
+ TH1* ratioOnePart = (TH1*) DrawdNdEtaRatio(histESDonePart, histMConePart, "OnePart", etaPlotLimit)->Clone();
// draw ratios of single steps
c7 = new TCanvas("all_ratios", "all_ratios", 600, 600);
ratioNSD->Draw("HIST EP SAME");
legend7->Draw();
- c7->SaveAs("ratios.eps");
+ //c7->SaveAs("ratios.eps");
new TCanvas;
dummy2->DrawCopy();
PrintIntegratedDeviation(histMC, histESD, "all events");
PrintIntegratedDeviation(histMCnsd, histESDnsd, "all events (NSD)");
+ PrintIntegratedDeviation(histMConePart, histESDonePart, "all events (INEL>0)");
PrintIntegratedDeviation(histMCTr, histESDMB, "triggered");
PrintIntegratedDeviation(histMCTrVtx, histESDMBVtx, "trigger, vertex");
PrintIntegratedDeviation(histMCPtCut, histESDNoPt, "all events (no pt corr)");
legend->Draw();
}
+void CompareTwodNdEta(const char* fileName1, const char* fileName2, Bool_t errorsCorrelated = kFALSE)
+{
+ c = new TCanvas;
+
+ c->SetGridx();
+ c->SetGridy();
+
+ hist = new TH2F("dummy", ";#eta;dN_{ch}/d#eta", 100, -2.5, 2.5, 100, 0, 8);
+ hist->SetStats(0);
+ hist->DrawCopy();//->GetYaxis()->SetRangeUser(2, 4.5);
+
+ l = new TLegend(0.2, 0.13, 0.8, 0.35);
+ l->SetNColumns(2);
+ l->SetFillColor(0);
+
+ TH1* histESD[2];
+ TH1* histESDnsd[2];
+
+ for (Int_t i=0; i<2; i++)
+ {
+ if (i == 0)
+ file = TFile::Open(fileName1);
+ if (i == 1)
+ {
+ if (fileName2 == 0)
+ break;
+ file = TFile::Open(fileName2);
+ }
+
+ histESD[i] = (TH1*) file->Get("dndeta/dNdEta_corrected");
+ histESDnsd[i] = (TH1*) file->Get("dndetaNSD/dNdEta_corrected");
+
+ histESD[i]->SetMarkerStyle(20 + i*4);
+ histESDnsd[i]->SetMarkerStyle(21 + i*4);
+
+ histESD[i]->SetMarkerColor(i+1);
+ histESD[i]->SetLineColor(i+1);
+ histESDnsd[i]->SetMarkerColor(i+1);
+ histESDnsd[i]->SetLineColor(i+1);
+
+ histESD[i]->DrawCopy("SAME");
+ histESDnsd[i]->DrawCopy("SAME");
+
+ l->AddEntry(histESD[i], Form("Data %d INEL", i), "P");
+ l->AddEntry(histESDnsd[i], Form("Data %d NSD", i), "P");
+ }
+
+ if (0)
+ {
+ TGraphErrors *gre = new TGraphErrors(16);
+ gre->SetFillColor(4);
+ gre->SetMarkerColor(4);
+ gre->SetMarkerStyle(26);
+ gre->SetPoint(0,0.125,3.14);
+ gre->SetPointError(0,0,0.07);
+ gre->SetPoint(1,0.375,3.04);
+ gre->SetPointError(1,0,0.07);
+ gre->SetPoint(2,0.625,3.17);
+ gre->SetPointError(2,0,0.07);
+ gre->SetPoint(3,0.875,3.33);
+ gre->SetPointError(3,0,0.07);
+ gre->SetPoint(4,1.125,3.33);
+ gre->SetPointError(4,0,0.07);
+ gre->SetPoint(5,1.375,3.53);
+ gre->SetPointError(5,0,0.07);
+ gre->SetPoint(6,1.625,3.46);
+ gre->SetPointError(6,0,0.07);
+ gre->SetPoint(7,1.875,3.41);
+ gre->SetPointError(7,0,0.07);
+ gre->SetPoint(8,-0.125,3.14);
+ gre->SetPointError(8,0,0.07);
+ gre->SetPoint(9,-0.375,3.04);
+ gre->SetPointError(9,0,0.07);
+ gre->SetPoint(10,-0.625,3.17);
+ gre->SetPointError(10,0,0.07);
+ gre->SetPoint(11,-0.875,3.33);
+ gre->SetPointError(11,0,0.07);
+ gre->SetPoint(12,-1.125,3.33);
+ gre->SetPointError(12,0,0.07);
+ gre->SetPoint(13,-1.375,3.53);
+ gre->SetPointError(13,0,0.07);
+ gre->SetPoint(14,-1.625,3.46);
+ gre->SetPointError(14,0,0.07);
+ gre->SetPoint(15,-1.875,3.41);
+ gre->SetPointError(15,0,0.07);
+ gre->Draw("p");
+
+ l->AddEntry(gre, "UA5 INEL", "P");
+
+ gre = new TGraphErrors(16);
+ gre->SetMarkerColor(4);
+ gre->SetFillColor(4);
+ gre->SetMarkerStyle(22);
+ gre->SetPoint(0,0.125,3.48);
+ gre->SetPointError(0,0,0.07);
+ gre->SetPoint(1,0.375,3.38);
+ gre->SetPointError(1,0,0.07);
+ gre->SetPoint(2,0.625,3.52);
+ gre->SetPointError(2,0,0.07);
+ gre->SetPoint(3,0.875,3.68);
+ gre->SetPointError(3,0,0.07);
+ gre->SetPoint(4,1.125,3.71);
+ gre->SetPointError(4,0,0.07);
+ gre->SetPoint(5,1.375,3.86);
+ gre->SetPointError(5,0,0.07);
+ gre->SetPoint(6,1.625,3.76);
+ gre->SetPointError(6,0,0.07);
+ gre->SetPoint(7,1.875,3.66);
+ gre->SetPointError(7,0,0.07);
+ gre->SetPoint(8,-0.125,3.48);
+ gre->SetPointError(8,0,0.07);
+ gre->SetPoint(9,-0.375,3.38);
+ gre->SetPointError(9,0,0.07);
+ gre->SetPoint(10,-0.625,3.52);
+ gre->SetPointError(10,0,0.07);
+ gre->SetPoint(11,-0.875,3.68);
+ gre->SetPointError(11,0,0.07);
+ gre->SetPoint(12,-1.125,3.71);
+ gre->SetPointError(12,0,0.07);
+ gre->SetPoint(13,-1.375,3.86);
+ gre->SetPointError(13,0,0.07);
+ gre->SetPoint(14,-1.625,3.76);
+ gre->SetPointError(14,0,0.07);
+ gre->SetPoint(15,-1.875,3.66);
+ gre->SetPointError(15,0,0.07);
+ gre->Draw("p");
+
+ l->AddEntry(gre, "UA5 NSD", "P");
+ }
+
+ l->Draw();
+
+ if (fileName2 == 0)
+ return;
+
+ new TCanvas;
+ gPad->SetGridx();
+ gPad->SetGridy();
+
+ if (errorsCorrelated)
+ {
+ for (Int_t i=1; i<=histESD[1]->GetNbinsX(); i++)
+ {
+ histESD[1]->SetBinError(i, 0);
+ histESDnsd[1]->SetBinError(i, 0);
+ }
+ }
+
+ histESD[0]->Divide(histESD[0], histESD[1]);
+ histESDnsd[0]->Divide(histESDnsd[0], histESDnsd[1]);
+
+ for (Int_t i=1; i<=histESD[1]->GetNbinsX(); i++)
+ histESDnsd[0]->SetBinContent(i, histESDnsd[0]->GetBinContent(i) + 0.2);
+
+ hist->DrawCopy()->GetYaxis()->SetRangeUser(0.8, 1.4);
+ histESD[0]->Draw("SAME");
+ histESDnsd[0]->Draw("SAME");
+}
+
TH1* DrawdNdEtaRatio(TH1* corr, TH1* mc, const char* name, Float_t etaPlotLimit)
{
TCanvas* canvas3 = new TCanvas(name, name, 600, 600);
AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(folderName, folderName);
dNdEtaCorrection->LoadHistograms();
- TH1* hist = dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->Get1DCorrection("x");
- TH1* hist2 = dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->Get1DCorrection("y", -10, 10);
+ TH1* hist = dNdEtaCorrection->GetTriggerBiasCorrectionOnePart()->GetEventCorrection()->Get1DCorrection("x");
+ TH1* hist2 = dNdEtaCorrection->GetTriggerBiasCorrectionOnePart()->GetEventCorrection()->Get1DCorrection("y", -5, 5);
TCanvas* canvas = new TCanvas("TriggerBias1D", "TriggerBias1D", 1000, 500);
canvas->Divide(2, 1);
TPaveText* pave = new TPaveText(0.6, 0.8, 0.8, 0.85, "NDC");
pave->SetFillColor(0);
- pave->AddText("|z| < 10 cm");
+ pave->AddText("|z| < 5 cm");
pave->Draw();
+
+ Float_t triggerEff = 100.0 / hist2->GetBinContent(1);
+ Printf("trigger eff in 0 bin is: %.2f %%", triggerEff);
+
+ return;
- canvas->SaveAs("TriggerBias1D.eps");
+ TH1* hist2 = dNdEtaCorrection->GetVertexRecoCorrection()->GetEventCorrection()->Get1DCorrection("y", -10, 10);
+ //new TCanvas;
+ //hist2->Draw();
+
+ Printf("vertex reco eff in 0 bin is: %.2f %%", 100.0 / hist2->GetBinContent(1));
+
+ Printf("combined efficiency is %.2f %%", triggerEff / hist2->GetBinContent(1));
}
void VtxRecon()
c->SaveAs(Form("%s.eps", canvas->GetName()));
}
-void Track2Particle2DCreatePlots(const char* fileName = "correction_map.root")
+void Track2Particle2DCreatePlots(const char* fileName = "correction_map.root", const char* folder = "dndeta_correction")
{
TFile::Open(fileName);
- AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
+ AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(folder, folder);
dNdEtaCorrection->LoadHistograms();
TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetTrackCorrection()->GetGeneratedHistogram();
{
gSystem->Load("libPWG0base");
- Track2Particle2DCreatePlots(fileName);
+ Track2Particle2DCreatePlots(fileName, folder);
TH2* corrYX = dynamic_cast<TH2*> (gROOT->FindObject("generated_yx_div_measured_yx"));
TH2* corrZX = dynamic_cast<TH2*> (gROOT->FindObject("generated_zx_div_measured_zx"));
TH3* hist1 = (TH3*) dNdEtaCorrection->GetTrack2ParticleCorrection()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("mc");
hist1->SetTitle("mc");
Printf("mc contains %f entries", hist1->Integral());
- Printf("mc contains %f entries in |vtx-z| < 10, pt > 0.3", hist1->Integral(hist1->GetXaxis()->FindBin(-9.9), hist1->GetXaxis()->FindBin(9.9), hist1->GetYaxis()->FindBin(-0.99), hist1->GetYaxis()->FindBin(0.99), hist1->GetZaxis()->FindBin(ptMin), hist1->GetNbinsZ()));
+ Printf("mc contains %f entries in |vtx-z| < 10, |eta| < 1, pt > 0.3", hist1->Integral(hist1->GetXaxis()->FindBin(-9.9), hist1->GetXaxis()->FindBin(9.9), hist1->GetYaxis()->FindBin(-0.99), hist1->GetYaxis()->FindBin(0.99), hist1->GetZaxis()->FindBin(ptMin), hist1->GetNbinsZ()));
TH3* hist2 = (TH3*) fdNdEtaAnalysis->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("esd");
hist2->SetTitle("esd");
Printf("esd contains %f entries", hist2->Integral());
- Printf("esd contains %f entries in |vtx-z| < 10, pt > 0.3", hist2->Integral(hist2->GetXaxis()->FindBin(-9.9), hist2->GetXaxis()->FindBin(9.9), hist2->GetYaxis()->FindBin(-0.99), hist2->GetYaxis()->FindBin(0.99), hist2->GetZaxis()->FindBin(ptMin), hist2->GetNbinsZ()));
+ Printf("esd contains %f entries in |vtx-z| < 10, |eta| < 1, pt > 0.3", hist2->Integral(hist2->GetXaxis()->FindBin(-9.9), hist2->GetXaxis()->FindBin(9.9), hist2->GetYaxis()->FindBin(-0.99), hist2->GetYaxis()->FindBin(0.99), hist2->GetZaxis()->FindBin(ptMin), hist2->GetNbinsZ()));
AliPWG0Helper::CreateDividedProjections(hist1, hist2);
AliPWG0Helper::CreateDividedProjections(hist1, hist2, "x");
for (Int_t x=0; x<=acc->GetNbinsX()+1; ++x)
for (Int_t y=0; y<=acc->GetNbinsY()+1; ++y)
{
- if (acc->GetBinContent(x, y) > 1.5 || acc->GetBinContent(x, y) == 0)
+ if (acc->GetBinContent(x, y) > 2 || acc->GetBinContent(x, y) == 0)
{
for (Int_t z=0; z<=hist->GetNbinsZ()+1; ++z)
{
c = new TCanvas;
histG->GetXaxis()->SetRangeUser(-9.9, 9.9);
- histG->Project3D("z")->Draw();
+ histG->Project3D("z")->DrawCopy();
histM->GetXaxis()->SetRangeUser(-9.9, 9.9);
proj = histM->Project3D("z2");
proj->SetLineColor(2);
- proj->Draw("SAME");
+ proj->DrawCopy("SAME");
histMC->GetXaxis()->SetRangeUser(-9.9, 9.9);
projMC = histMC->Project3D("z3");
- projMC->SetLineColor(3);
- projMC->Draw("SAME");
+ projMC->SetLineColor(4);
+ projMC->DrawCopy("SAME");
}
-void PrintEventStats(Int_t corrID = 3)
+void PrintEventStats(Int_t corrID = 3, const char* fileName = "correction_map.root", const char* dir = "dndeta_correction")
{
loadlibs();
eventHist = fdNdEtaAnalysis->GetData()->GetEventCorrection()->GetGeneratedHistogram();
*/
- TFile::Open("correction_map.root");
- AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
+ TFile::Open(fileName);
+ AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(dir, dir);
if (!dNdEtaCorrection->LoadHistograms())
return;
trackHist = dNdEtaCorrection->GetCorrection(corrID)->GetTrackCorrection()->GetGeneratedHistogram();
PrintHist2D(stats);
PrintHist(proj);
+ Float_t ua5_SD = 0.153;
+ Float_t ua5_DD = 0.080;
+ Float_t ua5_ND = 0.767;
+
+ Printf("+++ FRACTIONS +++");
+
+ Printf("ND: %f", proj->GetBinContent(3) / proj->GetBinContent(1));
+ Printf("SD: %f", proj->GetBinContent(4) / proj->GetBinContent(1));
+ Printf("DD: %f", proj->GetBinContent(5) / proj->GetBinContent(1));
+
Printf("+++ TRIGGER EFFICIENCIES +++");
Printf("INEL = %.1f", 100. * (proj->GetBinContent(1) - stats->GetBinContent(1, 1) - stats->GetBinContent(1, 3)) / proj->GetBinContent(1));
Printf("NSD = %.1f", 100. * (proj->GetBinContent(2) - stats->GetBinContent(2, 1) - stats->GetBinContent(2, 3)) / proj->GetBinContent(2));
- Printf("ND = %.1f", 100. * (proj->GetBinContent(3) - stats->GetBinContent(3, 1) - stats->GetBinContent(3, 3)) / proj->GetBinContent(3));
- Printf("SD = %.1f", 100. * (proj->GetBinContent(4) - stats->GetBinContent(4, 1) - stats->GetBinContent(4, 3)) / proj->GetBinContent(4));
- Printf("DD = %.1f", 100. * (proj->GetBinContent(5) - stats->GetBinContent(5, 1) - stats->GetBinContent(5, 3)) / proj->GetBinContent(5));
+
+
+ Float_t trigND = 100. * (proj->GetBinContent(3) - stats->GetBinContent(3, 1) - stats->GetBinContent(3, 3)) / proj->GetBinContent(3);
+ Float_t trigSD = 100. * (proj->GetBinContent(4) - stats->GetBinContent(4, 1) - stats->GetBinContent(4, 3)) / proj->GetBinContent(4);
+ Float_t trigDD = 100. * (proj->GetBinContent(5) - stats->GetBinContent(5, 1) - stats->GetBinContent(5, 3)) / proj->GetBinContent(5);
+
+ Printf("ND = %.1f", trigND);
+ Printf("SD = %.1f", trigSD);
+ Printf("DD = %.1f", trigDD);
+
+ Float_t trigINELUA5 = ua5_SD * trigSD + ua5_DD * trigDD + ua5_ND * trigND;
+ Float_t trigNSDUA5 = (ua5_DD * trigDD + ua5_ND * trigND) / (ua5_DD + ua5_ND);
+ Printf("INEL (UA5) = %.1f", trigINELUA5);
+ Printf("NSD (UA5) = %.1f", trigNSDUA5);
+
+ Printf("+++ VERTEX EFFICIENCIES +++");
+
+ Printf("INEL = %.1f", 100. * (stats->GetBinContent(1, 3) + stats->GetBinContent(1, 4)) / proj->GetBinContent(1));
+ Printf("NSD = %.1f", 100. * (stats->GetBinContent(2, 3) + stats->GetBinContent(2, 4)) / proj->GetBinContent(2));
+
+ Float_t vtxND = 100. * (stats->GetBinContent(3, 3) + stats->GetBinContent(3, 4)) / proj->GetBinContent(3);
+ Float_t vtxSD = 100. * (stats->GetBinContent(4, 3) + stats->GetBinContent(4, 4)) / proj->GetBinContent(4);
+ Float_t vtxDD = 100. * (stats->GetBinContent(5, 3) + stats->GetBinContent(5, 4)) / proj->GetBinContent(5);
+ Printf("ND = %.1f", vtxND);
+ Printf("SD = %.1f", vtxSD);
+ Printf("DD = %.1f", vtxDD);
+
+ Float_t vtxINELUA5 = ua5_SD * vtxSD + ua5_DD * vtxDD + ua5_ND * vtxND;
+ Float_t vtxNSDUA5 = (ua5_DD * vtxDD + ua5_ND * vtxND) / (ua5_DD + ua5_ND);
+ Printf("INEL (UA5) = %.1f", vtxINELUA5);
+ Printf("NSD (UA5) = %.1f", vtxNSDUA5);
Printf("+++ TRIGGER + VERTEX EFFICIENCIES +++");
Printf("SD = %.1f", 100. * stats->GetBinContent(4, 4) / proj->GetBinContent(4));
Printf("DD = %.1f", 100. * stats->GetBinContent(5, 4) / proj->GetBinContent(5));
+
+
for (Int_t i=7; i<=proj->GetNbinsX(); i++)
if (proj->GetBinContent(i) > 0)
Printf("bin %d (process type %d) = %.2f", i, (Int_t) proj->GetXaxis()->GetBinCenter(i), 100.0 * (proj->GetBinContent(i) - stats->GetBinContent(i, 1)) / proj->GetBinContent(i));
temphist = dNdEtaCorrection->GetCorrection(AlidNdEtaCorrection::kINEL)->GetEventCorrection()->GetGeneratedHistogram();
//temphist = dNdEtaCorrection->GetCorrection(AlidNdEtaCorrection::kINEL)->GetEventCorrection()->GetMeasuredHistogram();
+ temphist = (TH2*) gFile->Get("fTemp1");
+
new TCanvas;
legend = new TLegend(0.7, 0.7, 0.99, 0.99);
legend->SetFillColor(0);
for (Int_t i=0; i<20; i+=5)
{
highmult = temphist->ProjectionX("highmult", i+1, i+1+4);
+ highmult->Rebin(10);
Printf("%f", highmult->Integral());
if (highmult->Integral() <= 0)
continue;
legend->Draw();
}
+
+void FitDiamond()
+{
+ TFile::Open("analysis_esd_raw.root");
+
+ hist = (TH3*) gFile->Get("vertex_check");
+
+ gStyle->SetOptFit(1);
+
+ TH1* proj[3];
+ proj[0] = hist->ProjectionX();
+ proj[1] = hist->ProjectionY();
+ proj[2] = hist->ProjectionZ();
+
+ for (Int_t i=0; i<3; i++)
+ {
+ c = new TCanvas;
+ proj[i]->Draw();
+ proj[i]->Fit("gaus");
+
+ c->SaveAs(Form("FitDiamond_%d.png", i));
+ }
+}
+
+void CompareDiamond(const char* mc, const char* data)
+{
+ TFile::Open(mc);
+
+ hist = (TH3*) gFile->Get("vertex_check");
+
+ gStyle->SetOptFit(1);
+
+ TH1* proj[3];
+ proj[0] = hist->ProjectionX("vertex_check_px");
+ proj[1] = hist->ProjectionY("vertex_check_py");
+ proj[2] = hist->ProjectionZ("vertex_check_pz");
+
+ TFile::Open(data);
+
+ hist = (TH3*) gFile->Get("vertex_check");
+
+ TH1* proj2[3];
+ proj2[0] = hist->ProjectionX("vertex_check_px2");
+ proj2[1] = hist->ProjectionY("vertex_check_py2");
+ proj2[2] = hist->ProjectionZ("vertex_check_pz2");
+
+ for (Int_t i=0; i<3; i++)
+ {
+ CompareQualityHists(proj[i], proj2[i], 1, 1);
+ }
+}
+
+void FitDiamondVsMult()
+{
+ TFile::Open("analysis_esd_raw.root");
+
+ fVertexVsMult = (TH3*) gFile->Get("fVertexVsMult");
+ fVertexVsMult->GetZaxis()->SetTitle("multiplicity");
+
+ TH2* proj[2];
+ proj[0] = (TH2*) fVertexVsMult->Project3D("xz");
+ proj[1] = (TH2*) fVertexVsMult->Project3D("yz");
+
+ gStyle->SetPadGridX(kTRUE);
+ gStyle->SetPadGridY(kTRUE);
+
+ Int_t max = 40;
+
+ for (Int_t i=0; i<2; i++)
+ {
+ proj[i]->Rebin2D(4, 1);
+ proj[i]->FitSlicesY();
+
+ c = new TCanvas(Form("c_%d", i), Form("c_%d", i), 800, 400);
+ c->Divide(2, 1);
+
+ c->cd(1);
+ hist = (TH1*) gROOT->FindObject(Form("fVertexVsMult_%sz_1", (i == 0) ? "x" : "y"));
+ hist->GetXaxis()->SetRangeUser(0, max);
+ hist->GetYaxis()->SetRangeUser(-0.4, 0.4);
+ hist->Draw();
+
+ c->cd(2);
+ hist = (TH1*) gROOT->FindObject(Form("fVertexVsMult_%sz_2", (i == 0) ? "x" : "y"));
+ hist->GetXaxis()->SetRangeUser(0, max);
+ hist->GetYaxis()->SetRangeUser(0, 0.2);
+ hist->Draw();
+
+ c->SaveAs(Form("FitDiamondVsMult_%d.png", i));
+ }
+}
+
+void CompareQualityHists(const char* fileName1, const char* fileName2, const char* plotName, Int_t rebin1 = 1, Int_t rebin2 = 1, const char* exec = 0)
+{
+ file1 = TFile::Open(fileName1);
+ hist1 = (TH1*) file1->Get(plotName);
+
+ file2 = TFile::Open(fileName2);
+ hist2 = (TH1*) file2->Get(plotName);
+
+ hist1->SetStats(0);
+
+ Printf("Entries in histograms: %f %f", hist1->Integral(), hist2->Integral());
+
+ if (exec)
+ {
+ hist1 = (TH1*) gROOT->ProcessLine(Form(exec, hist1, "hist1a"));
+ hist2 = (TH1*) gROOT->ProcessLine(Form(exec, hist2, "hist2a"));
+ hist1->Sumw2();
+ hist2->Sumw2();
+ Printf("Entries in histograms: %f %f", hist1->Integral(), hist2->Integral());
+ }
+
+ CompareQualityHists(hist1, hist2, rebin1, rebin2);
+}
+
+void CompareQualityHists(TH1* hist1, TH1* hist2, Int_t rebin1 = 1, Int_t rebin2 = 1)
+{
+ hist1->SetLineColor(1);
+ hist2->SetLineColor(2);
+
+ if (rebin1 != 0 && rebin2 != 0)
+ {
+ hist1->Rebin(TMath::Abs(rebin1));
+ hist2->Rebin(TMath::Abs(rebin2));
+ }
+
+ //hist2 = hist2->Rebin(hist1->GetNbinsX(), Form("%s_rebinned", hist2->GetName()), hist1->GetXaxis()->GetXbins()->GetArray());
+
+ //hist1->Scale(1.0 / 0.83);
+
+//hist1->GetXaxis()->SetRangeUser(0, 50);
+/* hist1->GetYaxis()->SetRangeUser(0.9, 1.2);
+ hist1->Scale(1.0 / 0.808751);*/
+
+ //hist1->Scale(1.0 / 1.24632);
+ //hist1->Scale(1.0 / 1.23821);
+ //hist1->Scale(1.0 / 1.26213);
+
+ if (rebin1 > 0 && rebin2 > 0)
+ {
+ hist1->Scale(hist2->Integral() / hist1->Integral() * hist2->GetXaxis()->GetBinWidth(1) / hist1->GetXaxis()->GetBinWidth(1) / rebin1 * rebin2);
+
+ //hist1->Scale(0.5);
+ //hist2->Scale(0.5);
+ }
+
+ c = new TCanvas;
+ if (strcmp(hist1->GetName(), "fDeltaTheta") == 0 || strcmp(hist1->GetName(), "fDeltaPhi") == 0 || strcmp(hist1->GetName(), "fMultVtx") == 0 || TString(hist1->GetName()).BeginsWith("vertex_check"))
+ c->SetLogy();
+
+ if (TString(hist1->GetName()).BeginsWith("fMultiplicityESD"))
+ {
+ c->SetLogy();
+ loadlibs();
+ AliPWG0Helper::NormalizeToBinWidth(hist1);
+ AliPWG0Helper::NormalizeToBinWidth(hist2);
+ }
+
+ Printf("Means: %f %f %e", hist1->GetMean(), hist2->GetMean(), 1.0 - hist2->GetMean() / hist1->GetMean());
+
+ //hist1->GetYaxis()->SetRangeUser(0.01, hist1->GetMaximum() * 1.3);
+ hist1->DrawCopy("HISTE");
+ hist2->DrawCopy("HISTE SAME");
+ gPad->SetGridx();
+ gPad->SetGridy();
+ //gPad->SetLogy();
+ c->SaveAs(Form("%s_1.png", hist1->GetName()));
+
+ if (rebin1 == rebin2)
+ {
+ for (Int_t i=1; i<=hist1->GetNbinsX(); i++)
+ if (hist1->GetBinContent(i) == 0 && hist2->GetBinContent(i) > 0 || hist1->GetBinContent(i) > 0 && hist2->GetBinContent(i) == 0)
+ Printf("Inconsistent bin %d: %f %f", i, hist1->GetBinContent(i), hist2->GetBinContent(i));
+
+ c2 = new TCanvas;
+ hist1->GetYaxis()->SetRangeUser(0.5, 1.5);
+ hist1->Divide(hist2);
+ hist1->DrawCopy("HIST");
+ gPad->SetGridx();
+ gPad->SetGridy();
+ c2->SaveAs(Form("%s_2.png", hist1->GetName()));
+
+ /*
+ for (Int_t i=1; i<=hist1->GetNbinsX(); i++)
+ if (hist1->GetBinContent(i) > 0.9 && hist1->GetBinContent(i) < 1.1)
+ hist1->SetBinContent(i, 0);
+
+ new TCanvas;
+ hist1->SetMarkerStyle(20);
+ hist1->DrawCopy("P");
+ */
+ }
+}
+
+void DrawClustersVsTracklets()
+{
+ TFile::Open("analysis_esd_raw.root");
+
+ hist = (TH2*) gFile->Get("fTrackletsVsClusters");
+
+ c = new TCanvas("c", "c", 600, 600);
+ c->SetRightMargin(0.05);
+ c->SetTopMargin(0.05);
+
+ hist->SetStats(0);
+ hist->GetYaxis()->SetRangeUser(0, 400);
+ hist->GetYaxis()->SetTitleOffset(1.3);
+ hist->GetXaxis()->SetRangeUser(0, 30);
+ hist->Draw("BOX");
+
+ func = new TF1("func", "80 + x * 11", 0, 30);
+ func->Draw("SAME");
+
+ c->SaveAs("clusters_vs_tracklets.eps");
+}
+
+void VertexPlotBackgroundNote()
+{
+ TFile::Open("all.root");
+
+ hist = (TH3*) gFile->Get("vertex_check");
+ proj = (TH1*) hist->ProjectionZ()->Clone("all");
+ proj->Rebin(2);
+
+ proj->Draw();
+
+ TFile::Open("analysis_esd_raw.root");
+ hist = (TH3*) gFile->Get("vertex_check");
+ proj = (TH1*) hist->ProjectionZ()->Clone("afterbg");
+ proj->Rebin(2);
+
+ proj->SetLineColor(2);
+ proj->Draw("SAME");
+}
+
+void BackgroundAnalysis(const char* signal, const char* background)
+{
+ TFile::Open(signal);
+ signalHist = (TH2*) gFile->Get("fTrackletsVsClusters");
+
+ TFile::Open(background);
+ backgroundHist = (TH2*) gFile->Get("fTrackletsVsClusters");
+
+ Printf("For events with >= 1 tracklet:");
+
+ func = new TF1("func", "[0] + x * 11", 0, 30);
+ for (Int_t a = 50; a <= 100; a += 10)
+ {
+ func->SetParameter(0, a);
+
+ Float_t signalCount = 0;
+ Float_t backgroundCount = 0;
+ for (Int_t x = 2; x <= signalHist->GetNbinsX(); x++)
+ {
+ signalCount += signalHist->Integral(x, x, signalHist->GetYaxis()->FindBin(func->Eval(signalHist->GetXaxis()->GetBinCenter(x))), signalHist->GetNbinsY());
+ backgroundCount += backgroundHist->Integral(x, x, signalHist->GetYaxis()->FindBin(func->Eval(signalHist->GetXaxis()->GetBinCenter(x))), signalHist->GetNbinsY());
+ }
+
+ Float_t signalFraction = 100.0 * signalCount / signalHist->Integral(2, signalHist->GetNbinsX(), 1, signalHist->GetNbinsY());
+ Float_t backgroundFraction = 100.0 * backgroundCount / backgroundHist->Integral(2, signalHist->GetNbinsX(), 1, signalHist->GetNbinsY());
+
+ Printf("Cut at a = %d; Removed %.2f %% of the background (%.0f events); Removed %.2f %% of the signal", a, backgroundFraction, backgroundCount, signalFraction);
+ }
+}
+
+void ZPhiPlots()
+{
+ TFile::Open("analysis_esd_raw.root");
+
+ for (Int_t i=0; i<2; i++)
+ {
+ hist = (TH2*) gFile->Get(Form("fZPhi_%d", i));
+
+ c = new TCanvas;
+ hist->SetStats(0);
+ hist->Draw("COLZ");
+ c->SaveAs(Form("ZPhi_%d.png", i));
+ }
+}
+
+void DrawStats(Bool_t all = kFALSE)
+{
+ if (all)
+ {
+ Int_t count = 4;
+ const char* list[] = { "CINT1B-ABCE-NOPF-ALL/spd", "CINT1A-ABCE-NOPF-ALL/spd", "CINT1C-ABCE-NOPF-ALL/spd", "CINT1-E-NOPF-ALL/spd" };
+ }
+ else
+ {
+ Int_t count = 1;
+ const char* list[] = { "." };
+ }
+
+ for (Int_t i=0; i<count; i++)
+ {
+ TFile::Open(Form("%s/analysis_esd_raw.root", list[i]));
+
+ hist = (TH2*) gFile->Get("fStats2");
+
+ c = new TCanvas(list[i], list[i], 800, 600);
+ gPad->SetBottomMargin(0.2);
+ gPad->SetLeftMargin(0.2);
+ gPad->SetRightMargin(0.2);
+ hist->Draw("TEXT");
+ hist->SetMarkerSize(2);
+ //hist->GetYaxis()->SetRangeUser(0, 0);
+
+ gROOT->Macro("increaseFonts.C");
+
+ c->SaveAs(Form("%s/stats.png", list[i]));
+ }
+}
+
+void CompareMCDataTrigger(const char* mcFile, const char* dataFile)
+{
+ TH1* stat[2];
+
+ TFile::Open(mcFile);
+ mc = (TH1*) gFile->Get("trigger_histograms_/fHistFiredBitsSPD");
+ stat[0] = (TH1*) gFile->Get("fHistStatistics");
+
+ TFile::Open(dataFile);
+ data = (TH1*) gFile->Get("trigger_histograms_+CINT1B-ABCE-NOPF-ALL/fHistFiredBitsSPD");
+ if (!data)
+ data = (TH1*) gFile->Get("trigger_histograms_+CSMBB-ABCE-NOPF-ALL/fHistFiredBitsSPD");
+
+ stat[1] = (TH1*) gFile->Get("fHistStatistics");
+
+ CompareQualityHists(mc, data);
+
+ for (Int_t i=0; i<2; i++)
+ {
+ Float_t total = stat[i]->GetBinContent(stat[i]->GetXaxis()->FindBin("Trigger class"), 1);
+ Float_t spd = stat[i]->GetBinContent(stat[i]->GetXaxis()->FindBin("FO >= 2"), 1);
+ Float_t v0A = stat[i]->GetBinContent(stat[i]->GetXaxis()->FindBin("V0A"), 1);
+ Float_t v0C = stat[i]->GetBinContent(stat[i]->GetXaxis()->FindBin("V0C"), 1);
+
+ Printf("%s:\nSPD / V0A: %.3f\nSPD / V0C: %.3f\nV0A / V0C: %.3f", (i == 0) ? "MC " : "Data", spd / v0A, spd / v0C, v0A / v0C);
+ Printf("SPD / Total: %.3f\nV0A / Total: %.3f\nV0C / Total: %.3f\n", spd / total, v0A / total, v0C / total);
+ }
+}
+
+void CompareMCDatadNdEta(const char* mcFile, const char* dataFile)
+{
+ //CompareQualityHists(mcFile, dataFile, "fEtaPhi", 4, 4, "((TH2*)%p)->ProjectionY(\"%s\", 1, 40)");
+ //CompareQualityHists(mcFile, dataFile, "fEtaPhi", 4, 4, "((TH2*)%p)->ProjectionY(\"%s\", 41, 80)");
+
+ CompareQualityHists(mcFile, dataFile, "fEtaPhi", 1, 1, "((TH2*)%p)->ProjectionX(\"%s\", 271, 360)");
+}
+
+void TrigVsTrigVtx(const char* fileName = "correction_map.root", const char* dirName = "dndeta_correction")
+{
+ loadlibs();
+ if (!TFile::Open(fileName))
+ return;
+
+ AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(dirName, dirName);
+ if (!dNdEtaCorrection->LoadHistograms())
+ return;
+
+ TH2* eTrig = dNdEtaCorrection->GetVertexRecoCorrection()->GetEventCorrection()->GetGeneratedHistogram();
+ TH2* eTrigVtx = dNdEtaCorrection->GetVertexRecoCorrection()->GetEventCorrection()->GetMeasuredHistogram();
+
+ eTrig_proj = eTrig->ProjectionY("y1", eTrig->GetYaxis()->FindBin(-9.9), eTrig->GetYaxis()->FindBin(9.9));
+ eTrigVtx_proj = eTrigVtx->ProjectionY("y2", eTrig->GetYaxis()->FindBin(-9.9), eTrig->GetYaxis()->FindBin(9.9));
+
+ new TCanvas;
+ eTrig_proj->Draw();
+ eTrig_proj->GetXaxis()->SetRangeUser(0, 20);
+ eTrigVtx_proj->SetLineColor(2);
+ eTrigVtx_proj->Draw("SAME");
+
+ gPad->SetLogy();
+}
+
+void PrintAverageNSDCorrectionFactors()
+{
+ // factors estimated from MC, can be slighly different with data b/c correction is applies as function of measured multiplicity
+
+ loadlibs();
+
+ if (!TFile::Open("correction_mapprocess-types.root"))
+ return;
+
+ AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction_ND", "dndeta_correction_ND");
+ if (!dNdEtaCorrection->LoadHistograms())
+ return;
+
+ AlidNdEtaCorrection* dNdEtaCorrection2 = new AlidNdEtaCorrection("dndeta_correction_DD", "dndeta_correction_DD");
+ if (!dNdEtaCorrection2->LoadHistograms())
+ return;
+
+ // for scaling factors see drawSystematics.C; GetRelativeFractions()
+ // 900 GeV
+ //dNdEtaCorrection->Scale(1.06);
+ //dNdEtaCorrection->Add(dNdEtaCorrection2, 9.5 / 12.3);
+ // 2.36 TeV
+ dNdEtaCorrection->Scale(1.036);
+ dNdEtaCorrection->Add(dNdEtaCorrection2, 0.075 * 1.43 / 0.127);
+
+ Printf("event adding: %f", dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->GetGeneratedHistogram()->Integral() / dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->GetMeasuredHistogram()->Integral());
+
+ Printf("track adding: %f", dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetTrackCorrection()->GetGeneratedHistogram()->Integral() / dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetTrackCorrection()->GetMeasuredHistogram()->Integral());
+
+ AlidNdEtaCorrection* dNdEtaCorrection3 = new AlidNdEtaCorrection("dndeta_correction_SD", "dndeta_correction_SD");
+ if (!dNdEtaCorrection3->LoadHistograms())
+ return;
+
+ // 900 GeV
+ //dNdEtaCorrection3->Scale(0.153 / 0.189);
+ // 2.36 TeV
+ dNdEtaCorrection3->Scale(0.159 / 0.166);
+ dNdEtaCorrection->Add(dNdEtaCorrection3);
+
+ Printf("event subtraction: %f", dNdEtaCorrection3->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->GetMeasuredHistogram()->Integral() / dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->GetMeasuredHistogram()->Integral());
+
+ Printf("track subtraction: %f", dNdEtaCorrection3->GetTriggerBiasCorrectionINEL()->GetTrackCorrection()->GetMeasuredHistogram()->Integral() / dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetTrackCorrection()->GetMeasuredHistogram()->Integral());
+
+ dNdEtaCorrection->GetTriggerBiasCorrectionNSD()->PrintInfo(0.0);
+}
+