39 using DPair = std::array<Double_t, 2>;
40 using IPair = std::array<Int_t, 2>;
60 void Set(
const Int_t side,
const Double_t time,
const Int_t qdc);
61 Bool_t
Add(
const Double_t timeOffset,
62 const Double_t entryPosition,
63 const Double_t exitPosition,
64 const Double_t energy,
65 const UInt_t eventNumber);
67 void Calibrate(TDirectory* histogramDir =
nullptr);
71 inline Double_t
GetTime()
const {
return 0.5 * (CurrentHit.Time[0] + CurrentHit.Time[1]); }
72 inline Double_t
GetPosition()
const {
return CurrentHit.EntryPosition; }
78 return CalibrationStatusDescription[
static_cast<int>(status)];
82 return CalibrationStatusAbbreviation[
static_cast<int>(status)];
86 static const char* CalibrationStatusDescription[];
87 static const char* CalibrationStatusAbbreviation[];
92 UInt_t LastEventNumber;
98 Double_t EntryPosition;
99 Double_t ExitPosition;
102 std::vector<Hit> LastHits;
104 Double_t TimeDifference;
105 Double_t EffectiveSpeed;
107 Double_t InvLightAttenuationLength;
115 TGraphErrors TimeDifference;
116 TGraphErrors EffectiveSpeed;
117 std::array<TGraphErrors, 2> Gain;
123 std::array<TH2F, 2> Saturation;
124 std::array<TH1F, 2> Pedestal;
128 TGraphErrors FitGraph;
130 void positionCalibration(
int firstHit,
int nHits);
131 void energyCalibration(
int firstHit,
int nHits);
132 void pedestalCalibration();
133 void thresholdCalibration();
135 Int_t cleanupFit(TGraph& graph, TF1& fit, Double_t maxDifference)
const;
144 void removePoints(Int_t* points, Int_t nPoints, TGraph& graph)
const;
151 void createHistograms(TDirectory* histogramDir);
153 Double_t getMean(
const TGraphErrors& graph, Double_t expectedValue = 0.);