]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added new scripts to:
authorekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Dec 2006 15:36:13 +0000 (15:36 +0000)
committerekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Dec 2006 15:36:13 +0000 (15:36 +0000)
1) Calculate systematic effects from the new dNdeta analysis scheme
2) Draw plots illustrating the systematic effects

PWG0/dNdEta/drawSystematicsNew.C [new file with mode: 0644]
PWG0/dNdEta/systematicsAnalysis.C [new file with mode: 0644]

diff --git a/PWG0/dNdEta/drawSystematicsNew.C b/PWG0/dNdEta/drawSystematicsNew.C
new file mode 100644 (file)
index 0000000..2f05b81
--- /dev/null
@@ -0,0 +1,162 @@
+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;
+}
diff --git a/PWG0/dNdEta/systematicsAnalysis.C b/PWG0/dNdEta/systematicsAnalysis.C
new file mode 100644 (file)
index 0000000..3042228
--- /dev/null
@@ -0,0 +1,181 @@
+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();
+
+
+}