new macro that prints esd cuts statistics
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Jan 2008 07:53:00 +0000 (07:53 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Jan 2008 07:53:00 +0000 (07:53 +0000)
PWG0/dNdEta/drawSystematics.C
PWG0/dNdEta/run.C
PWG0/esdTrackCuts/printStats.C [new file with mode: 0644]

index c47badc..691fbb7 100644 (file)
@@ -744,8 +744,8 @@ TH1F* Sigma2VertexGaussian()
   canvas->cd(2);
   ratio->DrawCopy("P");
 
-  TH1F* ratio2 = new TH1F("Sigma2Vertex_ratio2", "Sigma2Vertex_ratio2;nSigma;% included 3 sigma / % included n sigma", 50, 0.05, 5.05);
-  Double_t sigma3 = Sigma2VertexCount(tracks, 3);
+  TH1F* ratio2 = new TH1F("Sigma2Vertex_ratio2", "Sigma2Vertex_ratio2;nSigma;% included 4 sigma / % included n sigma", 50, 0.05, 5.05);
+  Double_t sigma3 = Sigma2VertexCount(tracks, 4);
   for (Double_t nSigma = 0.1; nSigma < 5.05; nSigma += 0.1)
     ratio2->Fill(nSigma, sigma3 / ratio->GetBinContent(ratio->FindBin(nSigma)));
   ratio2->SetMarkerStyle(21);
@@ -771,7 +771,7 @@ TH1F** Sigma2VertexSimulation(const char* fileName = "systematics.root")
   }
 
   // calculate ratio
-  TH1F* ratio = new TH1F("sigmavertexsimulation_ratio", "sigmavertexsimulation_ratio;N#sigma;% included in 3 #sigma / % included in N#sigma", sigmavertex->GetNbinsX(), sigmavertex->GetXaxis()->GetXmin(), sigmavertex->GetXaxis()->GetXmax());
+  TH1F* ratio = new TH1F("sigmavertexsimulation_ratio", "sigmavertexsimulation_ratio;N#sigma;% included in 4 #sigma / % included in N#sigma", sigmavertex->GetNbinsX(), sigmavertex->GetXaxis()->GetXmin(), sigmavertex->GetXaxis()->GetXmax());
 
   // calculate contamination
   TH1F* contamination = ratio->Clone("sigmavertexsimulation_contamination");
@@ -779,12 +779,12 @@ TH1F** Sigma2VertexSimulation(const char* fileName = "systematics.root")
 
   for (Int_t i=1; i<=sigmavertex->GetNbinsX(); ++i)
   {
-    ratio->SetBinContent(i, sigmavertex->GetBinContent(sigmavertex->GetXaxis()->FindBin(3)) / sigmavertex->GetBinContent(i));
+    ratio->SetBinContent(i, sigmavertex->GetBinContent(sigmavertex->GetXaxis()->FindBin(4)) / sigmavertex->GetBinContent(i));
     contamination->SetBinContent(i, 1 + (sigmavertex->GetBinContent(i) - sigmavertexPrim->GetBinContent(i)) / sigmavertex->GetBinContent(i));
   }
 
   // print stats
-  for (Float_t sigma = 2.0; sigma < 4.25; sigma += 0.5)
+  for (Float_t sigma = 2.0; sigma < 5.25; sigma += 0.5)
   {
     Float_t error1 = 1 - ratio->GetBinContent(sigmavertex->GetXaxis()->FindBin(sigma)) / ratio->GetBinContent(sigmavertex->GetXaxis()->FindBin(sigma - 0.5));
     Float_t error2 = -1 + ratio->GetBinContent(sigmavertex->GetXaxis()->FindBin(sigma)) / ratio->GetBinContent(sigmavertex->GetXaxis()->FindBin(sigma + 0.5));
index b5c1e86..76db7e4 100644 (file)
@@ -153,6 +153,9 @@ void FinishAnalysisAll(const char* dataInput = "analysis_esd_raw.root", const ch
   //fdNdEtaAnalysis->DrawHistograms(kTRUE);
   file2->cd();
   fdNdEtaAnalysis->SaveHistograms();
+
+  file2->Write();
+  file2->Close();
 }
 
 void* FinishAnalysis(const char* analysisFile = "analysis_esd_raw.root", const char* analysisDir = "fdNdEtaAnalysisESD", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE)
diff --git a/PWG0/esdTrackCuts/printStats.C b/PWG0/esdTrackCuts/printStats.C
new file mode 100644 (file)
index 0000000..685370f
--- /dev/null
@@ -0,0 +1,92 @@
+void printStats(const char* fileName = "trackCuts.root")
+{
+  TFile::Open(fileName);
+  
+  fTriggerStats = (TH1*) gFile->Get("fTriggerStats");
+
+  // !MB1 + MB1
+  Int_t allEvents = fTriggerStats->GetBinContent(1) + fTriggerStats->GetBinContent(2);
+
+  // MB2
+  Int_t triggeredEvents = fTriggerStats->GetBinContent(3);
+
+  Printf("Triggered %d out of %d events (%.2f %%)", triggeredEvents, allEvents, 100.0 * triggeredEvents / allEvents);
+
+  fVertex = (TH1*) gFile->Get("fVertex");
+  Int_t eventsVertex = fVertex->GetEntries();
+
+  Printf("%d events have a vertex out of %d triggered (%.2f %%)", eventsVertex, triggeredEvents, 100.0 * eventsVertex / triggeredEvents);
+
+  fStatsPrim = (TH1*) gFile->Get("fTrackCutsPrimaries/cut_statistics");
+
+  Int_t tracksPrim = fStatsPrim->GetBinContent(1);
+  Int_t tracksPrimAc = tracksPrim - fStatsPrim->GetBinContent(2);
+
+  fStatsSec = (TH1*) gFile->Get("fTrackCutsSecondaries/cut_statistics");
+
+  Int_t tracksSec = fStatsSec->GetBinContent(1);
+  Int_t tracksSecAc = tracksSec - fStatsSec->GetBinContent(2);
+
+  fPrimStats = (TH1*) gFile->Get("fPrimStats");
+
+  if (fPrimStats->GetBinContent(5) + fPrimStats->GetBinContent(7) != fStatsPrim->GetBinContent(2))
+    Printf("UNEXPECTED: %f != %f", fPrimStats->GetBinContent(5) + fPrimStats->GetBinContent(7), fStatsPrim->GetBinContent(2));
+
+  Float_t notLostPrimaries = 100.0 * fPrimStats->GetBinContent(7) / (fPrimStats->GetBinContent(5) + fPrimStats->GetBinContent(7));
+  Printf("Accepted %d out of %d primary tracks (%.2f %%)", tracksPrimAc, tracksPrim, 100.0 * tracksPrimAc / tracksPrim);
+
+  Printf("Among the non accepted ones %.2f %% are from primaries that have been found with other tracks", notLostPrimaries);
+
+  Printf("Accepted %d out of %d secondary tracks (%.2f %%)", tracksSecAc, tracksSec, 100.0 * tracksSecAc / tracksSec);
+
+  Printf("Before cuts: %.2f %% of the tracks are secondaries", 100.0 * tracksSec / (tracksPrim + tracksSec));
+
+  Printf("After cuts: %.2f %% of the tracks are secondaries", 100.0 * tracksSecAc / (tracksPrimAc + tracksSecAc));
+}
+
+void ComparePlots(const char* fileName1, const char* fileName2, const char* dir = "AliESDtrackCuts/before_cuts")
+{
+  file1 = TFile::Open(fileName1);
+  file2 = TFile::Open(fileName2);
+
+  dir1 = file1->GetDirectory(dir);
+  dir2 = file2->GetDirectory(dir);
+
+  keyList = dir1->GetListOfKeys();
+  TIter iter(keyList);
+
+  TKey* key = 0;
+  while ((key = (TKey*) iter())) {
+    TH1* hist1 = (TH1*) dir1->Get(key->GetName());
+    TH1* hist2 = (TH1*) dir2->Get(key->GetName());
+
+    if (hist1->Integral() > 0)
+      hist1->Scale(1.0 / hist1->Integral());
+    if (hist2->Integral())
+      hist2->Scale(1.0 / hist2->Integral());
+
+    TString name(key->GetName());
+
+    c = new TCanvas(key->GetName(), key->GetName(), 600, 400);
+    hist1->Draw();
+    hist2->SetLineColor(2);
+    hist2->Draw("SAME");
+
+    Float_t min = 0.9 * TMath::Min(hist1->GetMinimum(), hist2->GetMinimum());
+
+    if (name.Contains("cov") || name.Contains("dXY") || name.Contains("dZ")) {
+      min += 1e-6;
+      c->cd(1)->SetLogy();
+      if (name.Contains("cov")) 
+       hist1->GetXaxis()->SetRangeUser(0, 5);
+    }
+
+    hist1->GetYaxis()->SetRangeUser(min, 1.1 * TMath::Max(hist1->GetMaximum(), hist2->GetMaximum()));
+
+    c->SaveAs(Form("%s.gif", key->GetName()));
+    
+    //break;
+  }
+}
+