sipm-characterisation 0.1.0
SiPM characterisation for ePIC — IV/DCR/gain, laser, readout, irradiation
Loading...
Searching...
No Matches
timewalk.C
Go to the documentation of this file.
1#include "qGaus.C"
2
3TGraphErrors *
4timewalk(TH2 *hin)
5{
6
7 auto fSignal = qTOF(100, 0., 0.05, 1.3, 1.);
8 auto gWalk = new TGraphErrors;
9
10 for (int ix = 0; ix < hin->GetNbinsX(); ++ix) {
11 auto amp = hin->GetXaxis()->GetBinCenter(ix + 1);
12 auto ampe = hin->GetXaxis()->GetBinWidth(ix + 1) / std::sqrt(12.);
13 auto hpy = hin->ProjectionY("hpy", ix + 1, ix + 1);
14
15 if (hpy->Integral() < 100) {
16 delete hpy;
17 continue;
18 }
19
20 auto maxbin = hpy->GetMaximumBin();
21 auto maxcen = hpy->GetBinCenter(maxbin);
22 auto maxval = hpy->GetBinContent(maxbin);
23 fSignal->SetParameter(0, maxval);
24 fSignal->SetParameter(1, maxcen);
25 fSignal->SetParameter(2, 0.1);
26 fSignal->SetParameter(3, 1.3);
27 fSignal->SetParameter(4, 1.);
28 auto fitmin = fSignal->GetParameter(1) - 3. * fSignal->GetParameter(2);
29 auto fitmax = fSignal->GetParameter(1) + 3. * fSignal->GetParameter(2);
30 hpy->Fit(fSignal, "0q", "", fitmin, fitmax);
31 fitmin = fSignal->GetParameter(1) - 3. * fSignal->GetParameter(2);
32 fitmax = fSignal->GetParameter(1) + 3. * fSignal->GetParameter(2);
33 hpy->Fit(fSignal, "0q", "", fitmin, fitmax);
34
35 auto n = gWalk->GetN();
36 gWalk->SetPoint(n, amp, fSignal->GetParameter(1));
37 gWalk->SetPointError(n, ampe, fSignal->GetParError(1));
38
39 delete hpy;
40 }
41
42 return gWalk;
43
44}
TGraphErrors * timewalk(TH2 *hin)
Definition timewalk.C:4