8 TH1I *
hPi0Mass = (TH1I *) gDirectory->Get(
"FCAL_Pi0HFA/Pi0Mass");
9 TH2I *
hPi0MassVsChNum = (TH2I *) gDirectory->Get(
"FCAL_Pi0HFA/Pi0MassVsChNum");
12 TH2I *
hPi0MassVsE = (TH2I *) gDirectory->Get(
"FCAL_Pi0HFA/Pi0MassVsE");
15 TFile *
outFile =
new TFile(
"FCALPi0FitResults.root",
"RECREATE");
18 TH1F *
hFitPi0Mass =
new TH1F(
"FitPi0Mass",
"#pi^{0} Mass fit result", 2800, -0.5, 2799.5);
19 TH1F *
hFitGain =
new TH1F(
"FitGain",
"new gain result", 2800, -0.5, 2799.5);
21 TF1 *
f =
new TF1(
"f",
"landau(0)+gaus(3)", 0.025, 0.250);
22 f->SetParLimits(0,0.0, 1e8);
23 f->SetParLimits(1,0.025, 0.080);
24 f->SetParLimits(2,0.0, 10.0);
25 f->SetParLimits(3,0.0, 1e8);
26 f->SetParLimits(4,0.04, 0.25);
27 f->SetParLimits(5,0.004, 0.013);
28 TF1 *
f2 =
new TF1(
"f2",
"gaus", 0.025, 0.250);
29 f2->SetParLimits(0,0.0, 1e6);
30 f2->SetParLimits(1,0.05, 0.19);
31 f2->SetParLimits(2,0.006, 0.018);
32 TCanvas *
cFits =
new TCanvas(
"cFits",
"cFits", 800, 800);
34 TCanvas *
c =
new TCanvas(
"c",
"c", 1200, 1200);
35 for (
unsigned int i = 1 ; i <= hPi0MassVsChNum->GetNbinsX(); i++){
38 TH1D *projY = hPi0MassVsChNumWeightedSquared->ProjectionY(Form(
"Channel%.4i", i), i, i);
40 if (projY->GetEntries() < 400) {
41 fitPi0Mean[i-1] = -1.0;
49 cFits->SaveAs(Form(
"c_%.2i.png",i/64));
55 double max = projY->GetBinCenter( projY->GetMaximumBin() );
57 if (i < 1660 && i > 1140 && fabs(max-0.135) > 0.035){
60 TF1 *fClone = (TF1 *) f->Clone(Form(
"f%.4i", i));
61 fClone->SetParLimits(0,0.0, 1e8);
62 fClone->SetParLimits(1,0.025, 0.080);
63 fClone->SetParLimits(2,0.0, 10.0);
64 fClone->SetParLimits(3,0.0, 1e8);
65 fClone->SetParLimits(4,0.04, 0.25);
66 fClone->SetParLimits(5,0.004, 0.013);
67 fClone->SetParameters(projY->GetEntries() / 10.0, 0.05, 0.02, projY->GetEntries() / 100.0, 0.135, 0.01);
68 TFitResultPtr r = projY->Fit(Form(
"f%.4i", i),
"SQ+",
"", 0.05, 0.3);
72 double reducedChi2 = r->Chi2() / r->Ndf();
74 if (reducedChi2 < 10.0){
76 fitPi0Mean[i-1] = r->Parameter(4);
77 hFitPi0Mass->SetBinContent(i,r->Parameter(4));
78 projY->GetFunction(Form(
"f%.4i", i))->SetLineColor(kGreen);
82 fitPi0Mean[i-1] = -1.0;
83 projY->GetFunction(Form(
"f%.4i", i))->SetLineColor(kRed);
85 f2->SetParameters(projY->GetEntries() / 100.0, 0.135, 0.01);
86 r = projY->Fit(
"f2",
"SQ+",
"", 0.05, 0.18);
89 double reducedChi2 = r->Chi2() / r->Ndf();
91 if (reducedChi2 < 100.0){
93 fitPi0Mean[i-1] = r->Parameter(1);
94 hFitPi0Mass->SetBinContent(i,r->Parameter(1));
95 projY->GetFunction(
"f2")->SetLineColor(kGreen);
99 fitPi0Mean[i-1] = -1.0;
100 projY->GetFunction(
"f2")->SetLineColor(kRed);
104 fitPi0Mean[i-1] = -1.0;
111 f2->SetParLimits(0,0.0, 1e6);
112 f2->SetParLimits(1,0.05, 0.19);
113 f2->SetParLimits(2,0.006, 0.018);
114 f2->SetParameters(projY->GetEntries() / 100.0,
max, 0.01);
115 TFitResultPtr r = projY->Fit(
"f2",
"SQ+",
"", max - 0.01, max + 0.01);
118 double reducedChi2 = r->Chi2() / r->Ndf();
120 if (reducedChi2 < 100.0){
122 fitPi0Mean[i-1] = r->Parameter(1);
123 hFitPi0Mass->SetBinContent(i,r->Parameter(1));
124 projY->GetFunction(
"f2")->SetLineColor(kGreen);
128 fitPi0Mean[i-1] = -1.0;
129 projY->GetFunction(
"f2")->SetLineColor(kRed);
133 fitPi0Mean[i-1] = -1.0;
143 cFits->SaveAs(Form(
"c_%.2i.png",i/64));
147 cFits->SaveAs(
"c_final.png");
152 TH1I *
hGains =
new TH1I(
"NewGains",
"New Gains" , 100, 0.0, 5.0);
165 for (
unsigned int i=0; i < 2800; i++){
166 if (fitPi0Mean[i] > 0.){
168 newGains[i] = hCurrentGainConstants->GetBinContent(i+1) * (pdgPi0Mass / fitPi0Mean[i]);
171 total += newGains[i];
172 hGains->Fill(newGains[i]);
180 for (
unsigned int i=0; i < 2800; i++){
181 if (newGains[i] < 0.){
188 textOut.open(
"gains.txt");
191 for (
auto i: newGains){
192 textOut << i << endl;
193 hFitGain->SetBinContent(
counter,i);
TH2F * hPi0MassVsChNumWeightedSquared
TH2F * hPi0MassVsChNumWeighted
TProfile * hCurrentGainConstants