sipm-characterisation 0.1.0
SiPM characterisation for ePIC — IV/DCR/gain, laser, readout, irradiation
Loading...
Searching...
No Matches
graphutils.C
Go to the documentation of this file.
1namespace graphutils {
2
3 TGraph *
5 {
6 auto gout = new TGraph;
7 for (int i = 0; i < gin->GetN(); ++i) {
8 auto x = gin->GetX()[i];
9 auto y = gin->GetY()[i];
10 if (x < gref->GetX()[0]) continue;
11 if (x > gref->GetX()[gref->GetN() - 1]) continue;
12 auto ref = gref->Eval(x);
13 auto val = (y - ref) / ref;
14 gout->SetPoint(gout->GetN(), x, val);
15 }
16 return gout;
17 }
18
19 TGraph *
21 {
22 auto gout = new TGraph;
23 for (int i = 0; i < gin->GetN(); ++i) {
24 auto x = gin->GetX()[i] - gin->GetX()[0];
25 auto y = gin->GetY()[i];
26 gout->SetPoint(i, x, y);
27 }
28 return gout;
29 }
30
31 TGraph *
33 {
34 auto gout = new TGraph;
35 for (int i = 0; i < gin->GetN(); ++i) {
36 auto x = gin->GetX()[i];
37 auto y = -gin->GetY()[i];
38 gout->SetPoint(i, x, y);
39 }
40 return gout;
41 }
42
43 TGraph *
45 {
46 auto gout = new TGraph;
47 for (int i = 0; i < gin->GetN(); ++i) {
48 auto x = -gin->GetX()[i];
49 auto y = gin->GetY()[i];
50 gout->SetPoint(i, x, y);
51 }
52 return gout;
53 }
54
55 TGraph *
56 average(TGraph *gin, int n = 2)
57 {
58 auto gout = new TGraph;
59 for (int i = 0; i < gin->GetN() - n; i += n) {
60 double x = 0.;
61 double y = 0.;
62 for (int j = i; j < i + n; ++j) {
63 x += gin->GetX()[j];
64 y += gin->GetY()[j];
65 }
66 x /= (double)n;
67 y /= (double)n;
68 gout->SetPoint(gout->GetN(), x, y);
69 }
70 return gout;
71 }
72
73 TGraph *
74 rms(TGraph *gin, int n = 2)
75 {
76 auto gout = new TGraph;
77 for (int i = 0; i < gin->GetN() - n; i += n) {
78 double x = 0.;
79 double y = 0.;
80 for (int j = i; j < i + n; ++j) {
81 x += gin->GetX()[j];
82 y += gin->GetY()[j];
83 }
84 x /= (double)n;
85 y /= (double)n;
86 auto mean = y;
87 y = 0.;
88 for (int j = i; j < i + n; ++j) {
89 y += (gin->GetY()[j] - mean) * (gin->GetY()[j] - mean);
90 }
91 y /= (double)n;
92 gout->SetPoint(gout->GetN(), x, std::sqrt(y));
93 }
94 return gout;
95 }
96
97 TGraph *
98 moving_average(TGraph *gin, int n = 2)
99 {
100 auto gout = new TGraph;
101 for (int i = 0; i < gin->GetN() - n; ++i) {
102 double x = 0.;
103 double y = 0.;
104 for (int j = i; j < i + n; ++j) {
105 x += gin->GetX()[j];
106 y += gin->GetY()[j];
107 }
108 x /= (double)n;
109 y /= (double)n;
110 gout->SetPoint(i, x, y);
111 }
112 return gout;
113 }
114
115}
TH2_Type * build_fine_tune_raw_histogram(std::vector< TString > kInputFileNames, TString kRunTag, TString kOutputFileName, bool kRecalculate)
Functions -------------------------------------------------------------------------------------------...
Definition fine_analysis.h:80
Definition graphutils.C:5
TGraph * moving_average(TGraph *gin, int n=2)
Definition graphutils.C:774
TGraph * invertX(TGraph *gin)
Definition graphutils.C:714
TGraph * rms(TGraph *gin, int n=2)
Definition graphutils.C:747
TGraphErrors * average(TGraphErrors *target_graph, int average_over_n_points=2)
Definition graphutils.C:143
TGraphErrors * diff(TGraphErrors *gin, TF1 *f)
Definition graphutils.C:596
TGraph * invertY(TGraph *gin)
Definition graphutils.C:688
TGraph * fromZero(TGraph *gin)
Definition graphutils.C:675