--- /dev/null
+void DrawpiKpAndCombinedZOnly(Float_t upperPtLimit=0.99)
+{
+ //gROOT->ProcessLine(".L drawPlots.C");
+ gSystem->Load("libPWG0base");
+
+ const char* fileNames[] = { "systematics.root", "systematics.root", "systematics.root", "correction_map.root" };
+ const char* folderNames[] = { "correction_0", "correction_1", "correction_2", "dndeta_correction" };
+ const char* legendNames[] = { "#pi", "K", "p", "standard" };
+ Int_t folderCount = 3;
+
+
+
+ TH2F* h2DCorrections[4];
+ TH1F* h1DCorrections[4];
+ for (Int_t i=0; i<4; i++) {
+ TFile::Open(fileNames[i]);
+ AlidNdEtaCorrection* correctionTmp = new AlidNdEtaCorrection(folderNames[i],folderNames[i]);
+ correctionTmp->LoadHistograms();
+
+ // h2DCorrections[i] = correctionTmp->GetTrack2ParticleCorrection()->GetTrackCorrection()->Get2DCorrectionHistogram("yz",-1,1);
+
+ h1DCorrections[i] = correctionTmp->GetTrack2ParticleCorrection()->GetTrackCorrection()->Get1DCorrectionHistogram("z",-10,10,0.8,0.8);
+ }
+
+ TH2F* null = new TH2F("","",100,0.1,10,100,0.5,9.99);
+ null->SetXTitle("p_{T} (GeV/c)");
+ null->SetXTitle("Correction");
+
+ null->Draw();
+
+ //h1DCorrections[0]->SetMaximum(5);
+ //h1DCorrections[0]->Draw();
+ // h2DCorrections[0]->Draw("colz");
+ for (Int_t i=1; i<4; i++) {
+ h1DCorrections[i]->Draw("same");
+ }
+
+}
+
+
+void DrawEffectOfChangeInCrossSection() {
+
+ //get the data
+ TFile* fin = TFile::Open("systematics_xsections.root");
+
+ const Char_t* changes[] = {"pythia","ddmore","ddless","sdmore","sdless", "dmore", "dless"};
+ Int_t colors[] = {1,2,103,102,4,6,1};
+
+ TH1F* hRatios[7];
+ for(Int_t i=0; i<7; i++) {
+ hRatios[i] = (TH1F*)fin->Get(Form("ratio_vertexReco_triggerBias_%s",changes[i]));
+ hRatios[i]->SetLineWidth(2);
+ hRatios[i]->SetLineColor(colors[i]);
+ hRatios[i]->SetMarkerStyle(22);
+ hRatios[i]->SetMarkerSize(0.8);
+ }
+
+ TPad* p = DrawCanvasAndPad("syst_changeInXsection",700,400);
+ p->SetRightMargin(0.2);
+ p->SetLeftMargin(0.13);
+
+ TH2F* null = new TH2F("","",100,-1.05,1.05,100,0.93,1.06);
+ null->GetXaxis()->SetTitle("#eta");
+ null->GetYaxis()->SetTitle("Ratio pythia/modified cross-sections");
+ null->Draw();
+
+ TLatex* text[7];
+
+ for(Int_t i=1; i<7; i++) {
+ hRatios[i]->Draw("same");
+
+ TString str(hRatios[i]->GetTitle());
+ str.Remove(0,str.First("DD"));
+ str.Remove(str.First(")"),1);
+ text[i] = new TLatex(1.08,hRatios[i]->GetBinContent(hRatios[i]->FindBin(0.))-0.002,str.Data());
+ text[i]->SetTextColor(colors[i]);
+ text[i]->Draw();
+ }
+}
+
+
+void DrawEffectOfChangeInComposition() {
+
+ //get the data
+ TFile* fin = TFile::Open("systematics_composition.root");
+
+ Int_t colors[] = {1,2,103,102,4,6,1};
+
+ TH1F* hRatios[6];
+
+ for (Int_t i=0; i<6; i++) {
+ hRatios[i] = (TH1F*)fin->Get(Form("ratio_%d",i));
+
+ hRatios[i]->SetLineWidth(2);
+ hRatios[i]->SetLineColor(colors[i]);
+ hRatios[i]->SetMarkerStyle(22);
+ hRatios[i]->SetMarkerSize(0.8);
+ }
+
+ TPad* p = DrawCanvasAndPad("syst_changeOfComposition",700,400);
+ p->SetRightMargin(0.2);
+ p->SetLeftMargin(0.13);
+
+ TH2F* null = new TH2F("","",100,-1.05,1.05,100,0.97,1.03);
+ null->GetXaxis()->SetTitle("#eta");
+ null->GetYaxis()->SetTitle("Ratio pythia/modified composition");
+ null->Draw();
+
+ TLatex* text[6];
+
+ for(Int_t i=0; i<6; i++) {
+ hRatios[i]->Draw("same");
+
+ TString str(hRatios[i]->GetTitle());
+ str.Remove(0,16);
+ text[i] = new TLatex(1.08,hRatios[i]->GetBinContent(hRatios[i]->FindBin(0.9))-0.002,str.Data());
+ text[i]->SetTextColor(colors[i]);
+ text[i]->SetTextSize(0.053);
+
+ text[i]->Draw();
+ }
+
+
+}
+
+TPad* DrawCanvasAndPad(const Char_t* name, Int_t sizeX=600, Int_t sizeY=500) {
+
+ gStyle->SetOptStat(0);
+ gStyle->SetOptTitle(0);
+ gStyle->SetOptFit(0);
+
+ gStyle->SetTextSize(0.04);
+ gStyle->SetTitleSize(0.05,"xyz");
+ //gStyle->SetTitleFont(133, "xyz");
+ //gStyle->SetLabelFont(133, "xyz");
+ //gStyle->SetLabelSize(17, "xyz");
+ gStyle->SetLabelOffset(0.01, "xyz");
+
+ gStyle->SetTitleOffset(1.1, "y");
+ gStyle->SetTitleOffset(1.1, "x");
+ gStyle->SetEndErrorSize(0.0);
+
+ //##############################################
+
+ //making canvas and pads
+ TCanvas *c = new TCanvas(name,name,sizeX,sizeY);
+
+ TPad* p1 = new TPad("pad1","", 0, 0.0, 1.0, 1.0, 0, 0, 0);
+
+ p1->SetBottomMargin(0.15);
+ p1->SetTopMargin(0.03);
+ p1->SetLeftMargin(0.15);
+ p1->SetRightMargin(0.03);
+
+ p1->SetGridx();
+ p1->SetGridy();
+
+ p1->Draw();
+ p1->cd();
+
+ return p1;
+}
--- /dev/null
+changeProductionCrossSections() {
+ //
+ // calculates dN/dEta from the standard correction and from
+ // corrections that has been evaluated with different relative cross
+ // sections (of single diff, double diff and non diff). The ratios
+ // (standard to changed x-section) of the different dN/deta
+ // distributions are saved to a file.
+ //
+
+ gSystem->Load("libPWG0base");
+
+ // folder names in systematics root file
+ const Char_t* folderNames[] = {"triggerBiasDD","triggerBiasSD","triggerBiasND","vertexRecoDD","vertexRecoSD","vertexRecoND"};
+
+ const Char_t* changes[] = {"pythia","ddmore","ddless","sdmore","sdless", "dmore", "dless"};
+
+ Float_t scalesDD[] = {1.0, 1.5, 0.5, 1.0, 1.0, 1.5, 0.5};
+ Float_t scalesSD[] = {1.0, 1.0, 1.0, 1.5, 0.5, 1.5, 0.5};
+
+ // cross section from Pythia
+ //Float_t sigmaND = 55.2;
+ //Float_t sigmaDD = 9.78;
+ //Float_t sigmaSD = 14.30;
+
+ // getting data
+ TFile* finCorr = TFile::Open("analysis_esd.root");
+ dNdEtaAnalysis* analysis = new dNdEtaAnalysis("dndeta", "dndeta");
+ analysis->LoadHistograms();
+
+ // getting corrections
+ AlidNdEtaCorrection* correctionStandard = new AlidNdEtaCorrection("dndeta_correction","dndeta_correction");
+
+ TFile* finCorr = TFile::Open("correction_map.root");
+ correctionStandard->LoadHistograms();
+
+ // getting corrections for pure SD, DD and ND
+ TFile* finSyst = TFile::Open("systematics.root");
+ AlidNdEtaCorrection* correctionsSyst[7];
+ for (Int_t i=0; i<6; i++) {
+ correctionsSyst[i] = new AlidNdEtaCorrection(folderNames[i],folderNames[i]);
+ correctionsSyst[i]->LoadHistograms();
+ }
+
+ TH1F* hRatios[21];
+ for (Int_t j=0; j<3; j++) { // j = 0 (change vtx), j = 1 (change trg), j = 2 (change both)
+
+ for (Int_t i=0; i<7; i++) { // changes in cross section
+
+ // temporary correction with changed cross sections
+ AlidNdEtaCorrection* correctionTmp = (AlidNdEtaCorrection*)correctionStandard->Clone();;
+
+ correctionTmp->Reset();
+
+ if (j==0 || j==2) {
+ //correctionTmp->GetVertexRecoCorrection()->Reset();
+ //correctionTmp->GetVertexRecoCorrection()->Add(correctionsSyst[3]->GetVertexRecoCorrection(),scalesDD[i]);
+ //correctionTmp->GetVertexRecoCorrection()->Add(correctionsSyst[4]->GetVertexRecoCorrection(),scalesSD[i]);
+ //correctionTmp->GetVertexRecoCorrection()->Add(correctionsSyst[5]->GetVertexRecoCorrection(),1);
+
+ correctionTmp->Add(correctionsSyst[3], scalesDD[i]);
+ correctionTmp->Add(correctionsSyst[4], scalesSD[i]);
+ correctionTmp->Add(correctionsSyst[5], 1);
+ }
+ if (j==1 || j==2) {
+ //correctionTmp->GetTriggerBiasCorrectionINEL()->Reset();
+ //correctionTmp->GetTriggerBiasCorrectionINEL()->Add(correctionsSyst[0]->GetTriggerBiasCorrectionINEL(),scalesDD[i]);
+ //correctionTmp->GetTriggerBiasCorrectionINEL()->Add(correctionsSyst[1]->GetTriggerBiasCorrectionINEL(),scalesSD[i]);
+ //correctionTmp->GetTriggerBiasCorrectionINEL()->Add(correctionsSyst[2]->GetTriggerBiasCorrectionINEL(),1);
+
+ correctionTmp->Add(correctionsSyst[0], scalesDD[i]);
+ correctionTmp->Add(correctionsSyst[1], scalesSD[i]);
+ correctionTmp->Add(correctionsSyst[2], 1);
+ }
+ correctionTmp->Finish();
+
+ dNdEtaAnalysis* analysisTmp = (dNdEtaAnalysis*)analysis->Clone();
+ analysisTmp->Finish(correctionTmp, 0.3, AlidNdEtaCorrection::kINEL);
+
+ Int_t counter = i + j*7;
+
+ hRatios[counter] = (TH1F*)analysisTmp->GetdNdEtaHistogram(2)->Clone();
+
+ TString name("ratio");
+ if (j==0) name.Append("_vetexReco_");
+ if (j==1) name.Append("_triggerBias_");
+ if (j==2) name.Append("_vertexReco_triggerBias_");
+ name.Append(changes[i]);
+ hRatios[counter]->SetName(name.Data());
+ name.Append(Form(" (DD #times %0.1f, SD #times %0.1f)",scalesDD[i],scalesSD[i]));
+ hRatios[counter]->SetTitle(name.Data());
+ hRatios[counter]->SetYTitle("ratio (Pythia x-sections)/(changed x-sections)");
+
+ delete analysisTmp;
+ delete correctionTmp;
+ }
+ }
+
+ for (Int_t i=1; i<21; i++)
+ hRatios[i]->Divide(hRatios[0],hRatios[i],1,1);
+ hRatios[0]->Divide(hRatios[0],hRatios[0],1,1);
+
+ TFile* fout = new TFile("systematics_xsections.root","RECREATE");
+
+ for (Int_t i=0; i<21; i++)
+ hRatios[i]->Write();
+
+ fout->Write();
+ fout->Close();
+}
+
+changeParticleComposition() {
+ //
+ // calculates dN/dEta from the standard correction and from
+ // corrections that has been evaluated with different relative
+ // abundancies of kaons and protons and save the ratios in a file
+
+ gSystem->Load("libPWG0base");
+
+ const Char_t* folderNames[] = {"correction_0","correction_1","correction_2","correction_3"};
+ Float_t scalesPi[] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
+ Float_t scalesK[] = {0.5, 1.5, 1.0, 1.0, 0.5, 1.5};
+ Float_t scalesP[] = {1.0, 1.0, 0.5, 1.5, 0.5, 1.5};
+
+ // getting data
+ TFile* finCorr = TFile::Open("analysis_esd.root");
+ dNdEtaAnalysis* analysis = new dNdEtaAnalysis("dndeta", "dndeta");
+ analysis->LoadHistograms();
+
+ // getting corrections for pi, K, p and other particles
+ TFile* finSyst = TFile::Open("systematics.root");
+ AlidNdEtaCorrection* correctionsSyst[4];
+ for (Int_t i=0; i<4; i++) {
+ correctionsSyst[i] = new AlidNdEtaCorrection(folderNames[i],folderNames[i]);
+ correctionsSyst[i]->LoadHistograms();
+ }
+ AlidNdEtaCorrection* correctionAll = (AlidNdEtaCorrection*) correctionsSyst[0]->Clone();
+ correctionAll->Reset();
+ correctionAll->Add(correctionsSyst[0]);
+ correctionAll->Add(correctionsSyst[1]);
+ correctionAll->Add(correctionsSyst[2]);
+ correctionAll->Add(correctionsSyst[3]);
+ correctionAll->Finish();
+ analysis->Finish(correctionAll, 0.3, AlidNdEtaCorrection::kINEL);
+
+ TH1F* hRatios[6];
+ for (Int_t i=0; i<6; i++) {
+ // temporary correction with changed particle composistion
+ AlidNdEtaCorrection* correctionTmp = (AlidNdEtaCorrection*)correctionAll->Clone();
+
+ correctionTmp->Reset();
+
+ correctionTmp->Add(correctionsSyst[0],scalesPi[i]);
+ correctionTmp->Add(correctionsSyst[1],scalesK[i]);
+ correctionTmp->Add(correctionsSyst[2],scalesP[i]);
+ correctionTmp->Add(correctionsSyst[3],1);
+
+ correctionTmp->Finish();
+
+ dNdEtaAnalysis* analysisTmp = (dNdEtaAnalysis*)analysis->Clone();
+ analysisTmp->Finish(correctionTmp, 0.3, AlidNdEtaCorrection::kINEL);
+
+ hRatios[i] = (TH1F*)analysisTmp->GetdNdEtaHistogram(2)->Clone();
+ hRatios[i]->Divide((TH1F*)analysis->GetdNdEtaHistogram(2)->Clone(),hRatios[i],1,1,"B");
+
+ TString name(Form("ratio_%d",i));
+ hRatios[i]->SetName(name.Data());
+ name = TString(Form("#pi #times %0.1f, K #times %0.1f, p #times %0.1f",scalesPi[i],scalesK[i],scalesP[i]));
+ hRatios[i]->SetTitle(name.Data());
+ hRatios[i]->SetYTitle("ratio (standard/changed compositions)");
+ }
+
+ TFile* fout = new TFile("systematics_composition.root","RECREATE");
+
+ for (Int_t i=0; i<6; i++)
+ hRatios[i]->Write();
+
+ fout->Write();
+ fout->Close();
+
+
+}