1 void printStats(const char* fileName = "trackCuts.root")
5 fTriggerStats = (TH1*) gFile->Get("fTriggerStats");
8 Int_t allEvents = fTriggerStats->GetBinContent(1) + fTriggerStats->GetBinContent(2);
11 Int_t triggeredEvents = fTriggerStats->GetBinContent(3);
13 Printf("Triggered %d out of %d events (%.2f %%)", triggeredEvents, allEvents, 100.0 * triggeredEvents / allEvents);
15 fVertex = (TH1*) gFile->Get("fVertex");
16 Int_t eventsVertex = fVertex->GetEntries();
18 Printf("%d events have a vertex out of %d triggered (%.2f %%)", eventsVertex, triggeredEvents, 100.0 * eventsVertex / triggeredEvents);
20 fStatsPrim = (TH1*) gFile->Get("fTrackCutsPrimaries/cut_statistics");
22 Int_t tracksPrim = fStatsPrim->GetBinContent(1);
23 Int_t tracksPrimAc = tracksPrim - fStatsPrim->GetBinContent(2);
25 fStatsSec = (TH1*) gFile->Get("fTrackCutsSecondaries/cut_statistics");
27 Int_t tracksSec = fStatsSec->GetBinContent(1);
28 Int_t tracksSecAc = tracksSec - fStatsSec->GetBinContent(2);
30 fPrimStats = (TH1*) gFile->Get("fPrimStats");
32 if (fPrimStats->GetBinContent(5) + fPrimStats->GetBinContent(7) != fStatsPrim->GetBinContent(2))
33 Printf("UNEXPECTED: %f != %f", fPrimStats->GetBinContent(5) + fPrimStats->GetBinContent(7), fStatsPrim->GetBinContent(2));
35 Float_t notLostPrimaries = 100.0 * fPrimStats->GetBinContent(7) / (fPrimStats->GetBinContent(5) + fPrimStats->GetBinContent(7));
37 Printf("Accepted %d out of %d primary tracks (%.2f %%)", tracksPrimAc, tracksPrim, 100.0 * tracksPrimAc / tracksPrim);
38 Printf("Per Event: %.2f out of %.2f", (Float_t) tracksPrimAc / eventsVertex, (Float_t) tracksPrim / eventsVertex);
40 Printf("Among the non accepted ones %.2f %% are from primaries that have been found with other tracks", notLostPrimaries);
42 Printf("Accepted %d out of %d secondary tracks (%.2f %%)", tracksSecAc, tracksSec, 100.0 * tracksSecAc / tracksSec);
43 Printf("Per Event: %.2f out of %.2f", (Float_t) tracksSecAc / eventsVertex, (Float_t) tracksSec / eventsVertex);
45 Printf("Before cuts: %.2f %% of the tracks are secondaries", 100.0 * tracksSec / (tracksPrim + tracksSec));
47 Printf("After cuts: %.2f %% of the tracks are secondaries", 100.0 * tracksSecAc / (tracksPrimAc + tracksSecAc));
50 void ComparePlots(const char* fileName1, const char* fileName2, const char* dirName1 = "AliESDtrackCuts/before_cuts", const char* dirName2 = 0)
52 file1 = TFile::Open(fileName1);
53 file2 = TFile::Open(fileName2);
58 dir1 = file1->GetDirectory(dirName1);
59 dir2 = file2->GetDirectory(dirName2);
61 keyList = dir1->GetListOfKeys();
65 while ((key = (TKey*) iter())) {
66 TH1* hist1 = (TH1*) dir1->Get(key->GetName());
67 TH1* hist2 = (TH1*) dir2->Get(key->GetName());
69 if (hist1->Integral() > 0)
70 hist1->Scale(1.0 / hist1->Integral());
71 if (hist2->Integral())
72 hist2->Scale(1.0 / hist2->Integral());
74 TString name(key->GetName());
76 c = new TCanvas(Form("%s_canvas", key->GetName()), key->GetName(), 600, 400);
79 hist2->SetLineColor(2);
82 /* this does not work, although given here: http://pcroot.cern.ch/root/html/THistPainter.html ;-)
83 TPaveStats *st = (TPaveStats*) hist1->FindObject("stats");
85 st->SetY1NDC(st->GetY1NDC() - 0.2);
86 st->SetY2NDC(st->GetY2NDC() - 0.2);
89 Float_t min = 0.9 * TMath::Min(hist1->GetMinimum(), hist2->GetMinimum());
91 if (name.Contains("cov") || name.Contains("dXY") || name.Contains("dZ")) {
94 if (name.Contains("cov"))
95 hist1->GetXaxis()->SetRangeUser(0, 5);
98 hist1->GetYaxis()->SetRangeUser(min, 1.1 * TMath::Max(hist1->GetMaximum(), hist2->GetMaximum()));
100 c->SaveAs(Form("%s.gif", key->GetName()));