28#if __cplusplus >= 201402L
29# define MKPMTDATA(name,title,nelem) make_unique<PMTData>((name),(title),(nelem))
31# define MKPMTDATA(name,title,nelem) unique_ptr<PMTData>(new PMTData((name),(title),(nelem)))
56 const char*
const here =
"ReadDatabase";
58 VarType kDataType = std::is_same<Data_t, Float_t>::value ?
kFloat :
kDouble;
59 VarType kDataTypeV = std::is_same<Data_t, Float_t>::value ? kFloatV : kDoubleV;
76 enum { kModeUnset = -255, kCommonStop = 0, kCommonStart = 1 };
80 Int_t tdc_mode = kModeUnset;
84 DBRequest config_request[] = {
85 {
"detmap", &detmap, kIntV },
86 {
"npmt", &nelem,
kInt },
87 {
"tdc.res", &tdc2t, kDataType, 0,
true },
88 {
"tdc.cmnstart", &tdc_mode,
kInt, 0,
true },
94 if( !err && nelem <= 0 ) {
95 Error(
Here(
here),
"Invalid number of PMTs: %d. Must be > 0. "
96 "Fix database.", nelem );
103 Error(
Here(
here),
"Cannot re-initialize with different number of PMTs. "
104 "(was: %d, now: %d). Detector not re-initialized.",
fNelem, nelem );
118 if( tot_nchan != 2*nval ) {
120 "inconsistent with 2*number of PMTs (%d)",
127 if( tdc_mode == kModeUnset ) {
130 tdc_mode = kCommonStop;
133 if( tdc_mode != kCommonStop && tdc2t < 0.0 ) {
138 "positive since TDC mode explicitly set to common start.",tdc2t);
141 assert( tdc_mode != kModeUnset );
147 for(
UInt_t i = 0; i < nmodules; i++ ) {
150 if( i < nmodules/2 )
d->MakeADC();
else d->MakeTDC();
153 d->SetTDCMode(tdc_mode);
169 vector<Data_t> off, ped, gain;
170 DBRequest calib_request[] = {
171 {
"tdc.offsets", &off, kDataTypeV, nval,
true },
172 {
"adc.pedestals", &ped, kDataTypeV, nval,
true },
173 {
"adc.gains", &gain, kDataTypeV, nval,
true },
181 for(
UInt_t i = 0; i < nval; ++i ) {
186 calib.gain = gain[i];
196 {
"Detector position", pos,
kDouble, 3 },
198 {
"TDC offsets", &off, kDataTypeV,
N },
199 {
"ADC pedestals", &ped, kDataTypeV,
N },
200 {
"ADC gains", &gain, kDataTypeV,
N },
222 {
"asum_p",
"Sum of ADC minus pedestal values",
"fASUM_p"},
223 {
"asum_c",
"Sum of corrected ADC amplitudes",
"fASUM_c"},
298 for (
int i=0; i<ncol; i++) {
299 cout <<
" Mirror TDC ADC ADC_p ";
303 for (
int i=0; i<(
fNelem+ncol-1)/ncol; i++ ) {
304 for (
int c=0;
c<ncol;
c++) {
308 cout <<
" " << setw(3) << ind+1;
309 cout <<
" "; WriteValue(PMT.tdc);
310 cout <<
" "; WriteValue(PMT.adc);
311 cout <<
" "; WriteValue(PMT.adc_p);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char mode
#define MKPMTDATA(name, title, nelem)
static const char *const here
PMTData_t & GetPMT(size_t i)
UInt_t GetSize() const override
PMTCalib_t & GetCalib(size_t i)
static Int_t LoadDB(FILE *file, const TDatime &date, const DBRequest *request, const char *prefix, Int_t search=0, const char *here="THaAnalysisObject::LoadDB")
static Int_t DefineVarsFromList(const void *list, EType type, EMode mode, const char *def_prefix, const TObject *obj, const char *prefix, const char *here, const char *comment_subst="")
virtual const char * Here(const char *) const
const char * GetPrefix() const
virtual Int_t ReadDatabase(const TDatime &date)
TString GetPrefixName() const
virtual Int_t DefineVariables(EMode mode=kDefine)
virtual FILE * OpenFile(const TDatime &date)
virtual Int_t ReadDatabase(const TDatime &date)
virtual void PrintDecodedData(const THaEvData &evdata) const
virtual Int_t CoarseProcess(TClonesArray &tracks)
virtual Int_t FineProcess(TClonesArray &tracks)
virtual Int_t DefineVariables(EMode mode=kDefine)
virtual void Clear(Option_t *="")
virtual Int_t StoreHit(const DigitizerHitInfo_t &hitinfo, UInt_t data)
Module * GetModule(UInt_t i) const
UInt_t GetTotNumChan() const
Int_t FillDetMap(const std::vector< Int_t > &values, UInt_t flags=0, const char *here="FillDetMap")
virtual Int_t StoreHit(const DigitizerHitInfo_t &hitinfo, UInt_t data)
virtual Int_t ReadGeometry(FILE *file, const TDatime &date, Bool_t required=false)
VecDetData_t fDetectorData
Int_t CalcTrackProj(TClonesArray &tracks)
void Clear(Option_t *option="") override
virtual void Warning(const char *method, const char *msgfmt,...) const
virtual void Error(const char *method, const char *msgfmt,...) const
void GetXYZ(Double_t *carray) const