4 TFile*
file = TFile::Open(
"forward.root",
"READ");
7 Bool_t spd = which.EqualTo(
"spd", TString::kIgnoreCase);
10 if (spd) l =
static_cast<TList*
>(file->Get(
"CentralSums"));
11 else l =
static_cast<TList*
>(file->Get(
"ForwardSums"));
13 Warning(
"",
"%sSums not found", spd ?
"Central" :
"Forward");
17 TList* ei =
static_cast<TList*
>(l->FindObject(
"fmdEventInspector"));
19 Warning(
"",
"fmdEventInspector not found");
23 TObject* run = ei->FindObject(
"runNo");
25 Warning(
"",
"No run number found");
26 ULong_t runNo = run ? run->GetUniqueID() : 0;
29 if (spd) h =
static_cast<TH2*
>(l->FindObject(
"nClusterVsnTracklet"));
31 TList* den =
static_cast<TList*
>(l->FindObject(
"fmdDensityCalculator"));
33 Error(
"",
"fmdDensityCalculator not found");
36 TList* rng =
static_cast<TList*
>(den->FindObject(which));
38 Error(
"",
"%s not found", which.Data());
41 h =
static_cast<TH2*
>(rng->FindObject(
"elossVsPoisson"));
44 Warning(
"",
"%s not found", spd ? nClusterVsnTracklet :
"elossVsPoisson");
48 gStyle->SetOptFit(1111);
49 gStyle->SetOptStat(0);
50 TCanvas*
c =
new TCanvas(
"c", Form(
"Run %u", runNo));
53 TVirtualPad* p = c->cd(1);
62 h->FitSlicesY(0, 1, -1, 0,
"QN", fits);
64 TF1* mean =
new TF1(
"mean",
"pol1");
65 TF1* var =
new TF1(
"var",
"pol1");
68 for (
Int_t i = 0; i < 3; i++) {
74 TH1* hh =
static_cast<TH1*
>(fits->At(i));
79 hh->Fit((i == 1? mean : var),
"+Q");
84 g1->SetFillColor(kBlue-10);
85 g1->SetFillStyle(3001);
89 u1->SetLineColor(kBlue+1);
90 l1->SetLineColor(kBlue+1);
94 g2->SetFillColor(kRed-10);
95 g2->SetFillStyle(3001);
99 u2->SetLineColor(kRed+1);
100 l2->SetLineColor(kRed+1);
103 for (
Int_t i = 1; i <= h->GetNbinsX(); i++) {
104 Double_t x = hh->GetXaxis()->GetBinCenter(i);
108 if (spd) e1 *= TMath::Log10(e);
110 g1->SetPoint(i-1, x, y);
111 g1->SetPointError(i-1, 0, e1);
112 u1->SetPoint(i-1, x, y+e1);
113 l1->SetPoint(i-1, x, y-e1);
117 g2->SetPoint(i-1, x, x);
118 g2->SetPointError(i-1, 0, e2);
119 u2->SetPoint(i-1, x, x+e2);
120 l2->SetPoint(i-1, x, x-e2);
137 TLatex* ltx =
new TLatex(0.15, ly, Form(
"#LTy#GT = %f + %f x",
138 mean->GetParameter(0),
139 mean->GetParameter(1)));
141 ltx->SetTextSize(dy);
142 ltx->SetTextAlign(13);
146 ltx->DrawLatex(0.15, ly, Form(
"#sigma_{y} = %f + %f x",
147 var->GetParameter(0),
148 var->GetParameter(1)));
151 ltx->DrawLatex(0.15, ly, Form(
"#delta = %f #sigma %s",
152 nVar, (spd ?
"log_{10}(#sigma" :
"")));
void TestSPD(const TString &which, Double_t nVar=2)