GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TChannel.h
Go to the documentation of this file.
1#ifndef TCHANNEL_H
2#define TCHANNEL_H
3
4/** \addtogroup Sorting
5 * @{
6 */
7
8/*
9 * Author: P.C. Bender, <pcbend@gmail.com>
10 *
11 * Please indicate changes with your initials.
12 *
13 *
14 */
15
16//////////////////////////////////////////////////////////////////////////
17///
18/// \class TChannel
19///
20/// The TChannel is designed to hold all non-essential
21/// information of a TFragment (now the same as a hit; name, energy coeff, etc..)
22/// that would otherwise clog up the FragmentTree. The TChannel class
23/// contains a static map to every channel make retrieval fairly
24/// easy. The TChannel class also contains the ability to
25/// read and write a custom calibration file to set or
26/// save the TChannel information. Most of the information is read out
27/// of the ODB information in the MIDAS file.
28///
29//////////////////////////////////////////////////////////////////////////
30
31#include <iostream>
32#include <string>
33#include <cmath>
34#include <utility>
35#include <unordered_map>
36
37#include "TNamed.h"
38#include "TRandom.h"
39#include "TList.h"
40#include "TTree.h"
41#include "TGraph.h"
42#include "TMnemonic.h"
43#include "TClassRef.h"
44#include "Globals.h"
45#include "TPriorityValue.h"
46
47enum class EDigitizer : char;
48class TMnemonic;
49
50class TChannel : public TNamed {
51public:
52 static TChannel* GetChannel(unsigned int temp_address, bool warn = false);
53 static TChannel* GetChannelByNumber(int temp_num);
54 static TChannel* FindChannelByName(const char* ccName);
55 static std::vector<TChannel*> FindChannelByRegEx(const char* ccName);
56
57 TChannel();
58 explicit TChannel(const char*);
59 explicit TChannel(TChannel*);
60 TChannel(const TChannel&);
61 TChannel(TChannel&&) noexcept;
62
63 TChannel& operator=(const TChannel& rhs);
64 TChannel& operator=(TChannel&&) noexcept;
65
67
68 static size_t GetNumberOfChannels() { return fChannelMap->size(); }
69 static void AddChannel(TChannel*, Option_t* opt = "");
70 static int UpdateChannel(TChannel*, Option_t* opt = "");
71
72 static std::unordered_map<unsigned int, TChannel*>* GetChannelMap() { return fChannelMap; }
73 static std::unordered_map<unsigned int, int>* GetMissingChannelMap() { return fMissingChannelMap; }
74 static void DeleteAllChannels();
75
76 static bool CompareChannels(const TChannel*, const TChannel*);
77
79
80 static void SetMnemonicClass(const TClassRef& cls) { fMnemonicClass = cls; }
81 static TClassRef GetMnemonicClass() { return fMnemonicClass; }
82
83private:
84 unsigned int fAddress{0}; // The address of the digitizer
85 TPriorityValue<int> fIntegration{1}; // The charge integration setting
92
93 mutable int fDetectorNumber{-1};
94 mutable int fSegmentNumber{-1};
95 mutable int fCrystalNumber{-1};
96
98 TPriorityValue<double> fTimeDrift; ///< Time drift factor
100 static TClassRef fMnemonicClass;
101
102 TPriorityValue<std::vector<std::vector<Float_t>>> fENGCoefficients; ///< Energy calibration coeffs (low to high order)
104 TPriorityValue<std::vector<double>> fENGChi2; ///< Chi2 of the energy calibration
105 TPriorityValue<std::vector<Float_t>> fENGDriftCoefficents; ///< Energy drift coefficents (applied after energy calibration has been applied)
106 TPriorityValue<std::vector<double>> fCFDCoefficients; ///< CFD calibration coeffs (low to high order)
107 TPriorityValue<double> fCFDChi2; ///< Chi2 of the CFD calibration
108 TPriorityValue<std::vector<double>> fLEDCoefficients; ///< LED calibration coeffs (low to high order)
109 TPriorityValue<double> fLEDChi2; ///< Chi2 of LED calibration
110 TPriorityValue<std::vector<double>> fTIMECoefficients; ///< Time calibration coeffs (low to high order)
111 TPriorityValue<double> fTIMEChi2; ///< Chi2 of the Time calibration
112 TPriorityValue<std::vector<double>> fEFFCoefficients; ///< Efficiency calibration coeffs (low to high order)
113 TPriorityValue<double> fEFFChi2; ///< Chi2 of Efficiency calibration
115 TPriorityValue<TGraph> fEnergyNonlinearity; ///< Energy nonlinearity as TGraph, is used as E=E+GetEnergyNonlinearity(E), so y should be E(source)-calibration(peak)
116
118 bool InUse;
119 double BaseLine;
120 double TauDecay;
121 double TauRise;
122 };
123
125
126 static std::unordered_map<unsigned int, TChannel*>* fChannelMap; // A map to all of the channels based on address
127 static std::unordered_map<unsigned int, int>* fMissingChannelMap; // A map to all of the missing channels based on address
128 static std::unordered_map<int, TChannel*>* fChannelNumberMap; // A map of TChannels based on channel number
130 void AppendChannel(TChannel*);
131
132 void SetupEnergyNonlinearity(); // sort energy nonlinearity graph and set name/title
133
134 static std::vector<TChannel*> SortedChannels();
135
136public:
137 void SetName(const char* tmpName) override;
138 void SetAddress(unsigned int tmpadd);
139 inline void SetNumber(const TPriorityValue<int>& tmp)
140 {
141 if(fNumber == tmp) { return; }
142 // channel number has changed so we need to delete the old one and insert the new one
144 fNumber = tmp;
145 if((fNumber.Value() != 0) && (fChannelNumberMap->count(fNumber.Value()) == 0)) {
146 fChannelNumberMap->insert(std::make_pair(fNumber.Value(), this));
147 }
148 }
149 inline void SetIntegration(const TPriorityValue<int>& tmp) { fIntegration = tmp; }
150 static void SetIntegration(const std::string& mnemonic, int tmpint, EPriority pr);
151 inline void SetStream(const TPriorityValue<int>& tmp) { fStream = tmp; }
153 static void SetDigitizerType(const std::string& mnemonic, const char* tmpstr, EPriority prio);
154 inline void SetTimeOffset(const TPriorityValue<Long64_t>& tmp) { fTimeOffset = tmp; }
155 inline void SetTimeDrift(const TPriorityValue<double>& tmp) { fTimeDrift = tmp; }
156
157 void SetDetectorNumber(int tempint) { fDetectorNumber = tempint; }
158 void SetSegmentNumber(int tempint) { fSegmentNumber = tempint; }
159 void SetCrystalNumber(int tempint) { fCrystalNumber = tempint; }
160
161 double GetTime(Long64_t timestamp, Float_t cfd, double energy) const;
162 int GetDetectorNumber() const;
163 int GetSegmentNumber() const;
164 int GetCrystalNumber() const;
165 const TMnemonic* GetMnemonic() const;
166 TClass* GetClassType() const;
167 void SetClassType(TClass* cl_type);
168
169 int GetNumber() const { return fNumber.Value(); }
170 unsigned int GetAddress() const { return fAddress; }
171 int GetIntegration() const { return fIntegration.Value(); }
172 int GetStream() const { return fStream.Value(); }
173 const char* GetDigitizerTypeString() const { return fDigitizerTypeString.c_str(); }
175 int GetTimeStampUnit() const { return fTimeStampUnit.Value(); }
176 Long64_t GetTimeOffset() const { return fTimeOffset.Value(); }
177 double GetTimeDrift() const { return fTimeDrift.Value(); }
178 // write the rest of the gettters/setters...
179
180 std::vector<double> GetAllENGChi2() const { return fENGChi2.Value(); }
181 double GetENGChi2(size_t range = 0) const { return fENGChi2.Value()[range]; }
182 double GetCFDChi2() const { return fCFDChi2.Value(); }
183 double GetLEDChi2() const { return fLEDChi2.Value(); }
184 double GetTIMEChi2() const { return fTIMEChi2.Value(); }
185 double GetEFFChi2() const { return fEFFChi2.Value(); }
186
188 static void SetUseCalFileIntegration(const std::string& mnemonic, bool flag, EPriority pr);
190
191 std::vector<std::vector<Float_t>> GetAllENGCoeff() const { return fENGCoefficients.Value(); }
192 std::vector<Float_t> GetENGCoeff(size_t range = 0) const { return fENGCoefficients.Value()[range]; }
193 std::vector<double> GetCFDCoeff() const { return fCFDCoefficients.Value(); }
194 std::vector<double> GetLEDCoeff() const { return fLEDCoefficients.Value(); }
195 std::vector<double> GetTIMECoeff() const { return fTIMECoefficients.Value(); }
196 std::vector<double> GetEFFCoeff() const { return fEFFCoefficients.Value(); }
197 std::vector<double> GetCTCoeff() const { return fCTCoefficients.Value(); }
199 double GetEnergyNonlinearity(double eng) const;
200 std::vector<std::pair<double, double>> GetENGRanges() const { return fENGRanges.Value(); }
201 std::pair<double, double> GetENGRange(size_t range) const { return fENGRanges.Value()[range]; }
202 std::vector<Float_t> GetENGDriftCoefficents() const { return fENGDriftCoefficents.Value(); }
203
204 inline void AddENGCoefficient(Float_t temp, size_t range = 0)
205 {
206 if(range >= fENGCoefficients.size()) { fENGCoefficients.resize(range + 1); }
207 fENGCoefficients.Address()->at(range).push_back(temp);
208 }
209 inline void AddENGDriftCoefficent(Float_t temp) { fENGDriftCoefficents.Address()->push_back(temp); }
210 inline void AddCFDCoefficient(double temp) { fCFDCoefficients.Address()->push_back(temp); }
211 inline void AddLEDCoefficient(double temp) { fLEDCoefficients.Address()->push_back(temp); }
212 inline void AddTIMECoefficient(double temp) { fTIMECoefficients.Address()->push_back(temp); }
213 inline void AddEFFCoefficient(double temp) { fEFFCoefficients.Address()->push_back(temp); }
214 inline void AddCTCoefficient(double temp) { fCTCoefficients.Address()->push_back(temp); }
215 void AddEnergyNonlinearityPoint(double x, double y) { fEnergyNonlinearity.Address()->SetPoint(fEnergyNonlinearity.Address()->GetN(), x, y); }
216
217 inline void ResizeENG(size_t size)
218 {
219 fENGCoefficients.resize(size);
220 fENGChi2.resize(size);
221 fENGRanges.resize(size);
222 }
223
224 void SetAllENGCoefficients(const TPriorityValue<std::vector<std::vector<Float_t>>>& tmp) { fENGCoefficients = tmp; }
225 void SetENGCoefficients(const std::vector<Float_t>& tmp, size_t range = 0)
226 {
227 if(range >= fENGCoefficients.size()) { fENGCoefficients.resize(range + 1); }
228 fENGCoefficients.Address()->at(range) = tmp;
229 }
230 void SetENGRanges(const TPriorityValue<std::vector<std::pair<double, double>>>& tmp) { fENGRanges = tmp; }
231 void SetENGRange(const std::pair<double, double>& tmp, const size_t& range)
232 {
233 if(range >= fENGRanges.size()) { fENGRanges.resize(range + 1); }
234 fENGRanges.Address()->at(range) = tmp;
235 }
236 void SetENGDriftCoefficents(const TPriorityValue<std::vector<Float_t>>& tmp) { fENGDriftCoefficents = tmp; }
237 void SetCFDCoefficients(const TPriorityValue<std::vector<double>>& tmp) { fCFDCoefficients = tmp; }
238 void SetLEDCoefficients(const TPriorityValue<std::vector<double>>& tmp) { fLEDCoefficients = tmp; }
239 void SetTIMECoefficients(const TPriorityValue<std::vector<double>>& tmp) { fTIMECoefficients = tmp; }
240 void SetEFFCoefficients(const TPriorityValue<std::vector<double>>& tmp) { fEFFCoefficients = tmp; }
241 void SetCTCoefficients(const TPriorityValue<std::vector<double>>& tmp) { fCTCoefficients = tmp; }
243
244 inline void SetAllENGChi2(const TPriorityValue<std::vector<double>>& tmp) { fENGChi2 = tmp; }
245 inline void SetENGChi2(const TPriorityValue<double>& tmp, const size_t& range = 0)
246 {
247 if(tmp.Priority() >= fENGChi2.Priority()) {
248 if(range >= fENGChi2.size()) { fENGChi2.resize(range + 1); }
249 fENGChi2.Address()->at(range) = tmp.Value();
250 }
251 }
252 inline void SetCFDChi2(const TPriorityValue<double>& tmp) { fCFDChi2 = tmp; }
253 inline void SetLEDChi2(const TPriorityValue<double>& tmp) { fLEDChi2 = tmp; }
254 inline void SetTIMEChi2(const TPriorityValue<double>& tmp) { fTIMEChi2 = tmp; }
255 inline void SetEFFChi2(const TPriorityValue<double>& tmp) { fEFFChi2 = tmp; }
256
257 inline void SetWaveRise(const double& temp)
258 {
259 WaveFormShape.TauRise = temp;
261 }
262 inline void SetWaveDecay(const double& temp)
263 {
264 WaveFormShape.TauDecay = temp;
266 }
267 inline void SetWaveBaseLine(double temp)
268 {
269 WaveFormShape.BaseLine = temp;
271 }
272
273 inline void SetUseWaveParam(bool temp = true) { WaveFormShape.InUse = temp; }
274 inline void SetWaveParam(WaveFormShapePar temp) { WaveFormShape = temp; }
275
276 double GetWaveRise() const { return WaveFormShape.TauRise; }
277 double GetWaveDecay() const { return WaveFormShape.TauDecay; }
278 double GetWaveBaseLine() const { return WaveFormShape.BaseLine; }
279 bool UseWaveParam() const { return WaveFormShape.InUse; }
281
282 double CalibrateENG(double) const;
283 double CalibrateENG(double, int temp_int) const;
284 double CalibrateENG(int, int temp_int = 0) const;
285
286 double CalibrateCFD(double) const;
287 double CalibrateCFD(int) const;
288
289 double CalibrateLED(double) const;
290 double CalibrateLED(int) const;
291
292 double CalibrateTIME(double) const;
293 double CalibrateTIME(int) const;
294 inline double GetTZero(double tempd) const { return CalibrateTIME(tempd); }
295 inline double GetTZero(int tempi) const { return CalibrateTIME(tempi); }
296
297 double CalibrateEFF(double) const;
298
299 void DestroyCalibrations();
300
301 void DestroyENGCal();
302 void DestroyCFDCal();
303 void DestroyLEDCal();
304 void DestroyTIMECal();
305 void DestroyEFFCal();
306 void DestroyCTCal();
308
309 static Int_t ReadCalFromCurrentFile(Option_t* opt = "overwrite");
310 static Int_t ReadCalFromTree(TTree*, Option_t* opt = "overwrite");
311 static Int_t ReadCalFromFile(TFile* tempf, Option_t* opt = "overwrite");
312 static Int_t ReadCalFile(std::ifstream& infile);
313 static Int_t ReadCalFile(const char* filename = "");
314 static Int_t ParseInputData(const char* inputdata = "", Option_t* opt = "", EPriority prio = EPriority::kUser);
315 static void WriteCalFile(const std::string& outfilename = "");
316 static void WriteCTCorrections(const std::string& outfilename = "");
317 static void WriteCalBuffer(Option_t* opt = "");
318 static void ReadEnergyNonlinearities(TFile*, const char* graphName = "EnergyNonlinearity0x", bool all = false);
319
320 void Print(Option_t* opt = "") const override;
321 void Clear(Option_t* opt = "") override;
322 // static void PrintAll(Option_t* opt = "");
323 std::string PrintToString(Option_t* opt = "") const;
324 std::string PrintCTToString(Option_t* opt = "") const;
325 void PrintCTCoeffs(Option_t* opt = "") const;
326
327 static int WriteToRoot(TFile* fileptr = nullptr);
328
329private:
330 // the follow is to make the custom streamer
331 // stuff play nice. pcb.
332 static std::string fFileData;
333 static void InitChannelInput();
334 static void SaveToSelf();
335 static void SaveToSelf(const char*);
336
337 static Int_t ReadFile(TFile* tempf);
338
339 /// \cond CLASSIMP
340 ClassDefOverride(TChannel, 6) // NOLINT(readability-else-after-return)
341 /// \endcond
342};
343/*! @} */
344#endif
EDigitizer
TPriorityValue< double > fCFDChi2
Chi2 of the CFD calibration.
Definition TChannel.h:107
TPriorityValue< std::string > fDigitizerTypeString
Definition TChannel.h:86
TPriorityValue< std::vector< double > > fCFDCoefficients
CFD calibration coeffs (low to high order)
Definition TChannel.h:106
void SetWaveDecay(const double &temp)
Definition TChannel.h:262
TPriorityValue< bool > fUseCalFileInt
Definition TChannel.h:91
void SetWaveRise(const double &temp)
Definition TChannel.h:257
void SetENGRanges(const TPriorityValue< std::vector< std::pair< double, double > > > &tmp)
Definition TChannel.h:230
static TChannel * GetDefaultChannel()
Definition TChannel.cxx:413
static void SaveToSelf()
double CalibrateENG(double) const
Definition TChannel.cxx:646
void AddLEDCoefficient(double temp)
Definition TChannel.h:211
TPriorityValue< std::vector< double > > fENGChi2
Chi2 of the energy calibration.
Definition TChannel.h:104
std::vector< double > GetEFFCoeff() const
Definition TChannel.h:196
static void SetMnemonicClass(const TClassRef &cls)
Definition TChannel.h:80
int GetStream() const
Definition TChannel.h:172
void AddCFDCoefficient(double temp)
Definition TChannel.h:210
static int WriteToRoot(TFile *fileptr=nullptr)
static std::unordered_map< unsigned int, int > * fMissingChannelMap
Definition TChannel.h:127
int GetDetectorNumber() const
std::string PrintToString(Option_t *opt="") const
Definition TChannel.cxx:864
void SetTIMEChi2(const TPriorityValue< double > &tmp)
Definition TChannel.h:254
static std::unordered_map< unsigned int, TChannel * > * GetChannelMap()
Definition TChannel.h:72
std::vector< double > GetTIMECoeff() const
Definition TChannel.h:195
int GetCrystalNumber() const
void AddCTCoefficient(double temp)
Definition TChannel.h:214
static int UpdateChannel(TChannel *, Option_t *opt="")
Definition TChannel.cxx:398
double GetWaveDecay() const
Definition TChannel.h:277
void SetENGDriftCoefficents(const TPriorityValue< std::vector< Float_t > > &tmp)
Definition TChannel.h:236
static void WriteCalFile(const std::string &outfilename="")
Definition TChannel.cxx:992
static bool CompareChannels(const TChannel *, const TChannel *)
Definition TChannel.cxx:264
std::vector< double > GetCTCoeff() const
Definition TChannel.h:197
static TClassRef GetMnemonicClass()
Definition TChannel.h:81
TPriorityValue< Long64_t > fTimeOffset
Definition TChannel.h:97
static void WriteCalBuffer(Option_t *opt="")
TPriorityValue< std::vector< double > > fCTCoefficients
Cross talk coefficients.
Definition TChannel.h:114
TPriorityValue< TMnemonic * > fMnemonic
Definition TChannel.h:99
static TClassRef fMnemonicClass
Definition TChannel.h:100
void AddEFFCoefficient(double temp)
Definition TChannel.h:213
void SetCTCoefficients(const TPriorityValue< std::vector< double > > &tmp)
Definition TChannel.h:241
std::vector< Float_t > GetENGCoeff(size_t range=0) const
Definition TChannel.h:192
void SetTimeDrift(const TPriorityValue< double > &tmp)
Definition TChannel.h:155
static std::unordered_map< unsigned int, TChannel * > * fChannelMap
Definition TChannel.h:126
static void DeleteAllChannels()
Definition TChannel.cxx:273
void SetCFDChi2(const TPriorityValue< double > &tmp)
Definition TChannel.h:252
static Int_t ParseInputData(const char *inputdata="", Option_t *opt="", EPriority prio=EPriority::kUser)
void SetAllENGCoefficients(const TPriorityValue< std::vector< std::vector< Float_t > > > &tmp)
Definition TChannel.h:224
void SetLEDCoefficients(const TPriorityValue< std::vector< double > > &tmp)
Definition TChannel.h:238
void OverWriteChannel(TChannel *)
Definition TChannel.cxx:327
void DestroyLEDCal()
Definition TChannel.cxx:569
std::vector< double > GetLEDCoeff() const
Definition TChannel.h:194
void SetStream(const TPriorityValue< int > &tmp)
Definition TChannel.h:151
void SetLEDChi2(const TPriorityValue< double > &tmp)
Definition TChannel.h:253
std::pair< double, double > GetENGRange(size_t range) const
Definition TChannel.h:201
int fSegmentNumber
Definition TChannel.h:94
static void SaveToSelf(const char *)
void SetSegmentNumber(int tempint)
Definition TChannel.h:158
double CalibrateLED(double) const
Definition TChannel.cxx:730
void SetAddress(unsigned int tmpadd)
Definition TChannel.cxx:540
void SetTimeOffset(const TPriorityValue< Long64_t > &tmp)
Definition TChannel.h:154
double GetTime(Long64_t timestamp, Float_t cfd, double energy) const
void SetClassType(TClass *cl_type)
void SetTIMECoefficients(const TPriorityValue< std::vector< double > > &tmp)
Definition TChannel.h:239
void DestroyENGCal()
Definition TChannel.cxx:554
TPriorityValue< std::vector< double > > fTIMECoefficients
Time calibration coeffs (low to high order)
Definition TChannel.h:110
int GetSegmentNumber() const
unsigned int GetAddress() const
Definition TChannel.h:170
void SetEFFCoefficients(const TPriorityValue< std::vector< double > > &tmp)
Definition TChannel.h:240
const TMnemonic * GetMnemonic() const
TPriorityValue< std::vector< Float_t > > fENGDriftCoefficents
Energy drift coefficents (applied after energy calibration has been applied)
Definition TChannel.h:105
static Int_t ReadCalFromCurrentFile(Option_t *opt="overwrite")
static TChannel * FindChannelByName(const char *ccName)
Definition TChannel.cxx:494
static Int_t ReadCalFile(std::ifstream &infile)
void SetUseCalFileIntegration(const TPriorityValue< bool > &tmp=TPriorityValue< bool >(true, EPriority::kUser))
Definition TChannel.h:187
TGraph GetEnergyNonlinearity() const
Definition TChannel.h:198
static std::unordered_map< int, TChannel * > * fChannelNumberMap
Definition TChannel.h:128
std::vector< Float_t > GetENGDriftCoefficents() const
Definition TChannel.h:202
WaveFormShapePar WaveFormShape
Definition TChannel.h:124
static Int_t ReadCalFromFile(TFile *tempf, Option_t *opt="overwrite")
void SetENGChi2(const TPriorityValue< double > &tmp, const size_t &range=0)
Definition TChannel.h:245
std::string PrintCTToString(Option_t *opt="") const
Definition TChannel.cxx:839
unsigned int fAddress
Definition TChannel.h:84
bool UseCalFileIntegration()
Definition TChannel.h:189
double CalibrateTIME(double) const
Definition TChannel.cxx:754
TPriorityValue< EDigitizer > fDigitizerType
Definition TChannel.h:87
std::vector< double > GetAllENGChi2() const
Definition TChannel.h:180
void AddENGDriftCoefficent(Float_t temp)
Definition TChannel.h:209
static std::vector< TChannel * > SortedChannels()
Definition TChannel.cxx:977
static TChannel * GetChannel(unsigned int temp_address, bool warn=false)
Definition TChannel.cxx:459
int fDetectorNumber
Definition TChannel.h:93
TChannel & operator=(const TChannel &rhs)
Definition TChannel.cxx:165
std::vector< double > GetCFDCoeff() const
Definition TChannel.h:193
double CalibrateEFF(double) const
Definition TChannel.cxx:770
static std::unordered_map< unsigned int, int > * GetMissingChannelMap()
Definition TChannel.h:73
double GetTZero(int tempi) const
Definition TChannel.h:295
double GetWaveRise() const
Definition TChannel.h:276
void SetupEnergyNonlinearity()
void AppendChannel(TChannel *)
Definition TChannel.cxx:365
void DestroyTIMECal()
Definition TChannel.cxx:575
Long64_t GetTimeOffset() const
Definition TChannel.h:176
double GetENGChi2(size_t range=0) const
Definition TChannel.h:181
TClass * GetClassType() const
double GetTimeDrift() const
Definition TChannel.h:177
TPriorityValue< int > fStream
Definition TChannel.h:90
TPriorityValue< double > fEFFChi2
Chi2 of Efficiency calibration.
Definition TChannel.h:113
static Int_t ReadCalFromTree(TTree *, Option_t *opt="overwrite")
TPriorityValue< double > fTimeDrift
Time drift factor.
Definition TChannel.h:98
TPriorityValue< std::vector< std::pair< double, double > > > fENGRanges
Range of energy calibrations.
Definition TChannel.h:103
static void WriteCTCorrections(const std::string &outfilename="")
void DestroyCFDCal()
Definition TChannel.cxx:563
void DestroyEFFCal()
Definition TChannel.cxx:581
TPriorityValue< int > fIntegration
Definition TChannel.h:85
void Print(Option_t *opt="") const override
Definition TChannel.cxx:833
void DestroyCalibrations()
Definition TChannel.cxx:598
void PrintCTCoeffs(Option_t *opt="") const
Definition TChannel.cxx:818
void SetIntegration(const TPriorityValue< int > &tmp)
Definition TChannel.h:149
void ResizeENG(size_t size)
Definition TChannel.h:217
TPriorityValue< int > fTimeStampUnit
Definition TChannel.h:88
EDigitizer GetDigitizerType() const
Definition TChannel.h:174
void Clear(Option_t *opt="") override
Definition TChannel.cxx:421
TPriorityValue< double > fTIMEChi2
Chi2 of the Time calibration.
Definition TChannel.h:111
double CalibrateCFD(double) const
Definition TChannel.cxx:705
double GetTIMEChi2() const
Definition TChannel.h:184
void SetNumber(const TPriorityValue< int > &tmp)
Definition TChannel.h:139
void AddTIMECoefficient(double temp)
Definition TChannel.h:212
int GetNumber() const
Definition TChannel.h:169
int fCrystalNumber
Definition TChannel.h:95
TPriorityValue< double > fLEDChi2
Chi2 of LED calibration.
Definition TChannel.h:109
std::vector< std::vector< Float_t > > GetAllENGCoeff() const
Definition TChannel.h:191
TPriorityValue< std::vector< std::vector< Float_t > > > fENGCoefficients
Energy calibration coeffs (low to high order)
Definition TChannel.h:102
double GetLEDChi2() const
Definition TChannel.h:183
static TChannel * GetChannelByNumber(int temp_num)
Definition TChannel.cxx:482
void AddENGCoefficient(Float_t temp, size_t range=0)
Definition TChannel.h:204
static Int_t ReadFile(TFile *tempf)
static void InitChannelInput()
Definition TChannel.cxx:254
const char * GetDigitizerTypeString() const
Definition TChannel.h:173
int GetTimeStampUnit() const
Definition TChannel.h:175
void SetENGCoefficients(const std::vector< Float_t > &tmp, size_t range=0)
Definition TChannel.h:225
void SetName(const char *tmpName) override
Definition TChannel.cxx:244
void SetCrystalNumber(int tempint)
Definition TChannel.h:159
void DestroyCTCal()
Definition TChannel.cxx:587
TPriorityValue< TGraph > fEnergyNonlinearity
Energy nonlinearity as TGraph, is used as E=E+GetEnergyNonlinearity(E), so y should be E(source)-cali...
Definition TChannel.h:115
double GetWaveBaseLine() const
Definition TChannel.h:278
void SetDetectorNumber(int tempint)
Definition TChannel.h:157
void DestroyEnergyNonlinearity()
Definition TChannel.cxx:593
void AddEnergyNonlinearityPoint(double x, double y)
Definition TChannel.h:215
TPriorityValue< std::vector< double > > fLEDCoefficients
LED calibration coeffs (low to high order)
Definition TChannel.h:108
TPriorityValue< int > fNumber
Definition TChannel.h:89
TPriorityValue< std::vector< double > > fEFFCoefficients
Efficiency calibration coeffs (low to high order)
Definition TChannel.h:112
bool UseWaveParam() const
Definition TChannel.h:279
double GetCFDChi2() const
Definition TChannel.h:182
double GetEFFChi2() const
Definition TChannel.h:185
void SetUseWaveParam(bool temp=true)
Definition TChannel.h:273
static void AddChannel(TChannel *, Option_t *opt="")
Definition TChannel.cxx:285
void SetAllENGChi2(const TPriorityValue< std::vector< double > > &tmp)
Definition TChannel.h:244
static size_t GetNumberOfChannels()
Definition TChannel.h:68
void SetWaveParam(WaveFormShapePar temp)
Definition TChannel.h:274
static void ReadEnergyNonlinearities(TFile *, const char *graphName="EnergyNonlinearity0x", bool all=false)
void SetEnergyNonlinearity(const TPriorityValue< TGraph > &tmp)
Definition TChannel.h:242
static std::vector< TChannel * > FindChannelByRegEx(const char *ccName)
Definition TChannel.cxx:518
void SetENGRange(const std::pair< double, double > &tmp, const size_t &range)
Definition TChannel.h:231
void SetWaveBaseLine(double temp)
Definition TChannel.h:267
int GetIntegration() const
Definition TChannel.h:171
void SetDigitizerType(const TPriorityValue< std::string > &tmp)
static std::string fFileData
Definition TChannel.h:332
void SetCFDCoefficients(const TPriorityValue< std::vector< double > > &tmp)
Definition TChannel.h:237
double GetTZero(double tempd) const
Definition TChannel.h:294
std::vector< std::pair< double, double > > GetENGRanges() const
Definition TChannel.h:200
void SetEFFChi2(const TPriorityValue< double > &tmp)
Definition TChannel.h:255
WaveFormShapePar GetWaveParam() const
Definition TChannel.h:280
EPriority Priority() const
const T & Value() const
EPriority