36 const char* description,
45 frPosAdcErrorFlag =
new TClonesArray(
"THcSignalHit", 16);
47 frPosAdcThreshold =
new TClonesArray(
"THcSignalHit", 16);
48 frPosAdcPulseIntRaw =
new TClonesArray(
"THcSignalHit", 16);
49 frPosAdcPulseAmpRaw =
new TClonesArray(
"THcSignalHit", 16);
50 frPosAdcPulseTimeRaw =
new TClonesArray(
"THcSignalHit", 16);
55 frPosAdcPulseTime =
new TClonesArray(
"THcSignalHit", 16);
57 frNegAdcErrorFlag =
new TClonesArray(
"THcSignalHit", 16);
59 frNegAdcThreshold =
new TClonesArray(
"THcSignalHit", 16);
60 frNegAdcPulseIntRaw =
new TClonesArray(
"THcSignalHit", 16);
61 frNegAdcPulseAmpRaw =
new TClonesArray(
"THcSignalHit", 16);
62 frNegAdcPulseTimeRaw =
new TClonesArray(
"THcSignalHit", 16);
67 frNegAdcPulseTime =
new TClonesArray(
"THcSignalHit", 16);
69 frPosAdcSampPedRaw =
new TClonesArray(
"THcSignalHit", 16);
70 frPosAdcSampPulseIntRaw =
new TClonesArray(
"THcSignalHit", 16);
71 frPosAdcSampPulseAmpRaw =
new TClonesArray(
"THcSignalHit", 16);
72 frPosAdcSampPulseTimeRaw =
new TClonesArray(
"THcSignalHit", 16);
74 frPosAdcSampPulseInt =
new TClonesArray(
"THcSignalHit", 16);
75 frPosAdcSampPulseAmp =
new TClonesArray(
"THcSignalHit", 16);
76 frPosAdcSampPulseTime =
new TClonesArray(
"THcSignalHit", 16);
78 frNegAdcSampPedRaw =
new TClonesArray(
"THcSignalHit", 16);
79 frNegAdcSampPulseIntRaw =
new TClonesArray(
"THcSignalHit", 16);
80 frNegAdcSampPulseAmpRaw =
new TClonesArray(
"THcSignalHit", 16);
81 frNegAdcSampPulseTimeRaw =
new TClonesArray(
"THcSignalHit", 16);
83 frNegAdcSampPulseInt =
new TClonesArray(
"THcSignalHit", 16);
84 frNegAdcSampPulseAmp =
new TClonesArray(
"THcSignalHit", 16);
85 frNegAdcSampPulseTime =
new TClonesArray(
"THcSignalHit", 16);
189 cout <<
"****** THcShowerPlane::Init Cherenkov not found! ******" << endl;
190 cout <<
"****** THcShowerPlane::Accumulate will be skipped ******" << endl;
195 static const char*
const here =
"ReadDatabase()";
196 Warning(
Here(here),
"Hodoscope \"%s\" not found. ",
"hod");
343 cout <<
"---------------------------------------------------------------\n";
344 cout <<
"Debug output from THcShowerPlane::ReadDatabase for "
347 cout <<
" Layer #" <<
fLayerNum <<
", number of elements " << dec <<
fNelem
350 cout <<
" Origin of Layer at X = " <<
fOrigin.
X()
353 cout <<
" fPosPedLimit:";
356 cout <<
" fNegPedLimit:";
360 cout <<
" fMinPeds = " <<
fMinPeds << endl;
361 cout <<
"---------------------------------------------------------------\n";
379 {
"posAdcPedRaw",
"List of positive raw ADC pedestals",
"frPosAdcPedRaw.THcSignalHit.GetData()"},
380 {
"posAdcPulseIntRaw",
"List of positive raw ADC pulse integrals.",
"frPosAdcPulseIntRaw.THcSignalHit.GetData()"},
381 {
"posAdcPulseAmpRaw",
"List of positive raw ADC pulse amplitudes.",
"frPosAdcPulseAmpRaw.THcSignalHit.GetData()"},
382 {
"posAdcPulseTimeRaw",
"List of positive raw ADC pulse times.",
"frPosAdcPulseTimeRaw.THcSignalHit.GetData()"},
384 {
"posAdcPed",
"List of positive ADC pedestals",
"frPosAdcPed.THcSignalHit.GetData()"},
385 {
"posAdcPulseInt",
"List of positive ADC pulse integrals.",
"frPosAdcPulseInt.THcSignalHit.GetData()"},
386 {
"posAdcPulseAmp",
"List of positive ADC pulse amplitudes.",
"frPosAdcPulseAmp.THcSignalHit.GetData()"},
387 {
"posAdcPulseTime",
"List of positive ADC pulse times.",
"frPosAdcPulseTime.THcSignalHit.GetData()"},
389 {
"posAdcSampPedRaw",
"Positive Raw Samp ADC pedestals",
"frPosAdcSampPedRaw.THcSignalHit.GetData()"},
390 {
"posAdcSampPulseIntRaw",
"Positive Raw Samp ADC pulse integrals",
"frPosAdcSampPulseIntRaw.THcSignalHit.GetData()"},
391 {
"posAdcSampPulseAmpRaw",
"Positive Raw Samp ADC pulse amplitudes",
"frPosAdcSampPulseAmpRaw.THcSignalHit.GetData()"},
392 {
"posAdcSampPulseTimeRaw",
"Positive Raw Samp ADC pulse times",
"frPosAdcSampPulseTimeRaw.THcSignalHit.GetData()"},
393 {
"posAdcSampPed",
"Positive Samp ADC pedestals",
"frPosAdcSampPed.THcSignalHit.GetData()"},
394 {
"posAdcSampPulseInt",
"Positive Samp ADC pulse integrals",
"frPosAdcSampPulseInt.THcSignalHit.GetData()"},
395 {
"posAdcSampPulseAmp",
"Positive Samp ADC pulse amplitudes",
"frPosAdcSampPulseAmp.THcSignalHit.GetData()"},
396 {
"posAdcSampPulseTime",
"Positive Samp ADC pulse times",
"frPosAdcSampPulseTime.THcSignalHit.GetData()"},
398 {
"negAdcPedRaw",
"List of negative raw ADC pedestals",
"frNegAdcPedRaw.THcSignalHit.GetData()"},
399 {
"negAdcPulseIntRaw",
"List of negative raw ADC pulse integrals.",
"frNegAdcPulseIntRaw.THcSignalHit.GetData()"},
400 {
"negAdcPulseAmpRaw",
"List of negative raw ADC pulse amplitudes.",
"frNegAdcPulseAmpRaw.THcSignalHit.GetData()"},
401 {
"negAdcPulseTimeRaw",
"List of negative raw ADC pulse times.",
"frNegAdcPulseTimeRaw.THcSignalHit.GetData()"},
403 {
"negAdcPed",
"List of negative ADC pedestals",
"frNegAdcPed.THcSignalHit.GetData()"},
404 {
"negAdcPulseInt",
"List of negative ADC pulse integrals.",
"frNegAdcPulseInt.THcSignalHit.GetData()"},
405 {
"negAdcPulseAmp",
"List of negative ADC pulse amplitudes.",
"frNegAdcPulseAmp.THcSignalHit.GetData()"},
406 {
"negAdcPulseTime",
"List of negative ADC pulse times.",
"frNegAdcPulseTime.THcSignalHit.GetData()"},
408 {
"negAdcSampPedRaw",
"Negative Raw Samp ADC pedestals",
"frNegAdcSampPedRaw.THcSignalHit.GetData()"},
409 {
"negAdcSampPulseIntRaw",
"Negative Raw Samp ADC pulse integrals",
"frNegAdcSampPulseIntRaw.THcSignalHit.GetData()"},
410 {
"negAdcSampPulseAmpRaw",
"Negative Raw Samp ADC pulse amplitudes",
"frNegAdcSampPulseAmpRaw.THcSignalHit.GetData()"},
411 {
"negAdcSampPulseTimeRaw",
"Negative Raw Samp ADC pulse times",
"frNegAdcSampPulseTimeRaw.THcSignalHit.GetData()"},
412 {
"negAdcSampPed",
"Negative Samp ADC pedestals",
"frNegAdcSampPed.THcSignalHit.GetData()"},
413 {
"negAdcSampPulseInt",
"Negative Samp ADC pulse integrals",
"frNegAdcSampPulseInt.THcSignalHit.GetData()"},
414 {
"negAdcSampPulseAmp",
"Negative Samp ADC pulse amplitudes",
"frNegAdcSampPulseAmp.THcSignalHit.GetData()"},
415 {
"negAdcSampPulseTime",
"Negative Samp ADC pulse times",
"frNegAdcSampPulseTime.THcSignalHit.GetData()"},
424 {
"adcNegSampWaveform",
"FADC Neg ADCSample Waveform",
"fNegAdcSampWaveform"},
425 {
"adcPosSampWaveform",
"FADC Pos ADCSample Waveform",
"fPosAdcSampWaveform"},
440 cout <<
"THcShowerPlane::DefineVariables: registered counters "
446 {
"posAdcErrorFlag",
"List of positive raw ADC Error Flags",
"frPosAdcErrorFlag.THcSignalHit.GetData()"},
447 {
"negAdcErrorFlag",
"List of negative raw ADC Error Flags ",
"frNegAdcErrorFlag.THcSignalHit.GetData()"},
449 {
"posAdcCounter",
"List of positive ADC counter numbers.",
"frPosAdcPulseIntRaw.THcSignalHit.GetPaddleNumber()"},
450 {
"negAdcCounter",
"List of negative ADC counter numbers.",
"frNegAdcPulseIntRaw.THcSignalHit.GetPaddleNumber()"},
452 {
"totNumPosAdcHits",
"Total Number of Positive ADC Hits",
"fTotNumPosAdcHits"},
453 {
"totNumNegAdcHits",
"Total Number of Negative ADC Hits",
"fTotNumNegAdcHits"},
454 {
"totnumAdcHits",
"Total Number of ADC Hits Per PMT",
"fTotNumAdcHits"},
456 {
"numGoodPosAdcHits",
"Number of Good Positive ADC Hits Per PMT",
"fNumGoodPosAdcHits"},
457 {
"numGoodNegAdcHits",
"Number of Good Negative ADC Hits Per PMT",
"fNumGoodNegAdcHits"},
458 {
"totNumGoodPosAdcHits",
"Total Number of Good Positive ADC Hits",
"fTotNumGoodPosAdcHits"},
459 {
"totNumGoodNegAdcHits",
"Total Number of Good Negative ADC Hits",
"fTotNumGoodNegAdcHits"},
460 {
"totnumGoodAdcHits",
"TotalNumber of Good ADC Hits Per PMT",
"fTotNumGoodAdcHits"},
462 {
"goodPosAdcPulseIntRaw",
"Good Positive Raw ADC Pulse Integrals",
"fGoodPosAdcPulseIntRaw"},
463 {
"goodNegAdcPulseIntRaw",
"Good Negative Raw ADC Pulse Integrals",
"fGoodNegAdcPulseIntRaw"},
465 {
"goodPosAdcPed",
"Good Positive ADC pedestals",
"fGoodPosAdcPed"},
466 {
"goodPosAdcPulseInt",
"Good Positive ADC integrals",
"fGoodPosAdcPulseInt"},
467 {
"goodPosAdcPulseAmp",
"Good Positive ADC amplitudes",
"fGoodPosAdcPulseAmp"},
468 {
"goodPosAdcPulseTime",
"Good Positive ADC times",
"fGoodPosAdcPulseTime"},
469 {
"goodPosAdcTdcDiffTime",
"Good Positive Hodo Start time-ADC times",
"fGoodPosAdcTdcDiffTime"},
471 {
"goodNegAdcPed",
"Good Negative ADC pedestals",
"fGoodNegAdcPed"},
472 {
"goodNegAdcPulseInt",
"Good Negative ADC integrals",
"fGoodNegAdcPulseInt"},
473 {
"goodNegAdcPulseAmp",
"Good Negative ADC amplitudes",
"fGoodNegAdcPulseAmp"},
474 {
"goodNegAdcPulseTime",
"Good Negative ADC times",
"fGoodNegAdcPulseTime"},
475 {
"goodNegAdcTdcDiffTime",
"Good Negative Hodo Start time-ADC times",
"fGoodNegAdcTdcDiffTime"},
476 {
"goodPosAdcMult",
"Good Positive ADC Multiplicity",
"fGoodPosAdcMult"},
477 {
"goodNegAdcMult",
"Good Negative ADC Multiplicity",
"fGoodNegAdcMult"},
478 {
"epos",
"Energy Depositions from Positive Side PMTs",
"fEpos"},
479 {
"eneg",
"Energy Depositions from Negative Side PMTs",
"fEneg"},
480 {
"emean",
"Mean Energy Depositions",
"fEmean"},
481 {
"eplane",
"Energy Deposition per plane",
"fEplane"},
482 {
"eplane_pos",
"Energy Deposition per plane from pos. PMTs",
"fEplane_pos"},
483 {
"eplane_neg",
"Energy Deposition per plane from neg. PMTs",
"fEplane_neg"},
548 fEpos.at(ielem) = 0.0;
560 fEneg.at(ielem) = 0.0;
564 for (
UInt_t ielem = 0; ielem <
fEmean.size(); ielem++) {
579 cout <<
"---------------------------------------------------------------\n";
580 cout <<
"Debug output from THcShowerPlane::Clear for "
583 cout <<
" Cleared ADC hits for plane " <<
GetName() << endl;
584 cout <<
"---------------------------------------------------------------\n";
595 cout <<
"---------------------------------------------------------------\n";
596 cout <<
"Debug output from THcShowerPlane::Decode for "
599 cout <<
" Called for plane " <<
GetName() << endl;
600 cout <<
"---------------------------------------------------------------\n";
691 UInt_t nrSampPosAdcHits = 0;
692 UInt_t nrSampNegAdcHits = 0;
701 Int_t ihit = nexthit;
703 while(ihit < nrawhits) {
741 if (PedDefaultTemp !=0) {
831 if (PedDefaultTemp !=0) {
913 cout <<
"---------------------------------------------------------------\n";
914 cout <<
"Debug output from THcShowerPlane::ProcessHits for "
917 cout <<
" Sparsified hits for HMS calorimeter plane #" <<
fLayerNum
918 <<
", " <<
GetName() <<
":" << endl;
925 cout <<
" counter = " << i
926 <<
" Emean = " <<
fEmean[i]
927 <<
" Epos = " <<
fEpos[i]
928 <<
" Eneg = " <<
fEneg[i]
934 if (nspar == 0) cout <<
" No hits\n";
936 cout <<
" Eplane = " <<
fEplane
940 cout <<
"---------------------------------------------------------------\n";
1005 Double_t adctdcdiffTime = StartTime-pulseTime+OffsetTime;
1040 Double_t adctdcdiffTime = StartTime-pulseTime+OffsetTime;
1077 Int_t ihit = nexthit;
1078 while(ihit < nrawhits) {
1115 cout <<
"---------------------------------------------------------------\n";
1116 cout <<
"Debug output from THcShowerPlane::AcculatePedestals for "
1119 cout <<
"Processed hit list for plane " <<
GetName() <<
":\n";
1121 for (
Int_t ih=nexthit; ih<nrawhits; ih++) {
1130 cout <<
" hit " << ih <<
":"
1131 <<
" plane = " << hit->
fPlane
1133 <<
" ADCpos = " << hit->
GetData(0)
1134 <<
" ADCneg = " << hit->
GetData(1)
1138 cout <<
"---------------------------------------------------------------\n";
1171 cout <<
"---------------------------------------------------------------\n";
1172 cout <<
"Debug output from THcShowerPlane::CalculatePedestals for "
1175 cout <<
" ADC pedestals and thresholds for calorimeter plane "
1178 cout <<
" element " << i <<
": "
1179 <<
" Pos. pedestal = " <<
fPosPed[i]
1181 <<
" Neg. pedestal = " <<
fNegPed[i]
1185 cout <<
"---------------------------------------------------------------\n";
1245 static_cast<THcShower*
>(
fParent)->CalcTrackIntercept(BestTrack, pathl, XTrk, YTrk);
1270 cout <<
"---------------------------------------------------------------\n";
1271 cout <<
"THcShowerPlane::AccumulateStat:" << endl;
1272 cout <<
" Chi2/NDF = " <<BestTrack->
GetChi2()/BestTrack->
GetNDoF() << endl;
1274 cout <<
" XTrk, YTrk = " << XTrk <<
" " << YTrk << endl;
1279 <<
" matches track" << endl;
1286 cout <<
"---------------------------------------------------------------\n";
Option_t Option_t TPoint TPoint const char mode
ClassImp(VDC::AnalyticTTDConv) using namespace std
R__EXTERN class THcParmList * gHcParms
char * Form(const char *fmt,...)
UInt_t threshold[NUMSLOTS][NADCCHAN]
void Clear(Option_t *option="") override
TObject * ConstructedAt(Int_t idx)
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
THaDetectorBase * GetParent() const
THaApparatus * GetApparatus() const
THaVar * Define(const char *name, const Byte_t &var, const Int_t *count=nullptr)
Class for gas Cherenkov detectors.
A standard Hall C spectrometer apparatus.
Generic hodoscope consisting of multiple planes with multiple paddles with phototubes on both ends.
Double_t GetStartTime() const
Double_t GetOffsetTime() const
Int_t LoadParmValues(const DBRequest *list, const char *prefix="")
Retrieve parameter values from the parameter cache.
Class representing a single raw ADC hit.
Int_t GetSampPulseIntRaw(UInt_t iPulse=0) const
UInt_t GetNSampPulses() const
Double_t GetSampPulseInt(UInt_t iPulse=0) const
Int_t GetPedRaw() const
Gets raw signal pedestal. In channels.
Int_t GetSampPulseAmpRaw(UInt_t iPulse=0) const
Double_t GetSampPulseTime(UInt_t iPulse=0) const
UInt_t GetNPulses() const
Gets number of set pulses.
Int_t GetF250_NSB() const
UInt_t GetNSamples() const
Gets number of set samples.
Int_t GetSampPedRaw() const
void SetSampNSAT(Int_t nsat)
static constexpr Double_t GetAdcTopC()
void SetSampThreshold(Double_t thres)
Double_t GetPulseAmp(UInt_t iPulse=0) const
Gets pedestal subtracted pulse amplitude. In channels.
Double_t GetSample(UInt_t iSample=0) const
void SetSampIntTimePedestalPeak()
Int_t GetPulseAmpRaw(UInt_t iPulse=0) const
Gets raw pulse amplitude. In channels.
Double_t GetPed() const
Gets sample pedestal. In channels.
Double_t GetF250_PeakPedestalRatio() const
Int_t GetPulseTimeRaw(UInt_t iPulse=0) const
Gets raw pulse time. In subsamples.
Double_t GetSampPulseAmp(UInt_t iPulse=0) const
Double_t GetPulseTime(UInt_t iPulse=0) const
Int_t GetF250_NPedestalSamples() const
Int_t GetPulseIntRaw(UInt_t iPulse=0) const
Gets raw pulse integral. In channels.
Int_t GetSampPulseTimeRaw(UInt_t iPulse=0) const
Double_t GetSampPed() const
Int_t GetF250_NSA() const
static constexpr Double_t GetAdcTomV()
void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED)
Sets F250 parameters used for pedestal subtraction.
Double_t GetPulseInt(UInt_t iPulse=0) const
Gets pedestal subtracted pulse integral. In channels.
Class representing a single raw hit for a shower paddle.
THcRawAdcHit & GetRawAdcHitNeg()
virtual Int_t GetData(Int_t signal)
THcRawAdcHit & GetRawAdcHitPos()
One plane of shower blocks with side readout.
vector< Int_t > fStatNumHit
vector< Double_t > fNegAdcSampWaveform
TClonesArray * fNegADCHits
TClonesArray * frNegAdcSampPedRaw
virtual void FillADC_SampleIntegral()
TClonesArray * frPosAdcErrorFlag
virtual void FillADC_DynamicPedestal()
vector< Double_t > fGoodNegAdcPed
vector< Double_t > fGoodPosAdcPulseAmp
TClonesArray * frPosAdcThreshold
TClonesArray * frPosAdcSampPulseInt
TClonesArray * frPosAdcSampPulseAmp
TClonesArray * frPosAdcSampPulseIntRaw
virtual Int_t CoarseProcessHits()
TClonesArray * frNegAdcPulseAmpRaw
vector< Double_t > fGoodPosAdcTdcDiffTime
TClonesArray * frPosAdcPulseAmpRaw
TClonesArray * frPosAdcSampPedRaw
Double_t GetAposP(Int_t i)
virtual ~THcShowerPlane()
virtual void FillADC_SampIntDynPed()
TClonesArray * frNegAdcThreshold
static const Int_t kADCSampIntDynPed
vector< Int_t > fNumGoodPosAdcHits
THcShowerPlane(const char *name, const char *description, Int_t planenum, THaDetectorBase *parent=NULL)
TClonesArray * frNegAdcPulseTime
virtual void FillADC_Standard()
virtual Int_t CoarseProcess(TClonesArray &tracks)
TClonesArray * frNegAdcSampPulseInt
virtual void Clear(Option_t *opt="")
THcCherenkov * fCherenkov
vector< Double_t > fGoodNegAdcMult
virtual Int_t ReadDatabase(const TDatime &date)
vector< Double_t > fEmean
TClonesArray * frPosAdcSampPulseAmpRaw
Int_t fTotNumGoodPosAdcHits
static const Int_t kADCSampleIntegral
Int_t fOutputSampWaveform
virtual void InitializePedestals()
vector< Double_t > fPosAdcSampWaveform
TClonesArray * frNegAdcPulseIntRaw
vector< Double_t > fGoodPosAdcPulseInt
vector< Double_t > fGoodNegAdcPulseInt
TClonesArray * frPosAdcPulseInt
TClonesArray * frPosAdcPulseTimeRaw
Int_t fTotNumGoodNegAdcHits
vector< Double_t > fGoodNegAdcPulseIntRaw
TClonesArray * frPosAdcSampPulseTimeRaw
virtual Int_t FineProcess(TClonesArray &tracks)
TClonesArray * frNegAdcPulseTimeRaw
TClonesArray * frNegAdcSampPulseTime
TClonesArray * frNegAdcPulseAmp
virtual Int_t ProcessHits(TClonesArray *rawhits, Int_t nexthit)
TClonesArray * frNegAdcPed
TClonesArray * frPosAdcSampPed
Double_t GetAnegP(Int_t i)
vector< Double_t > fGoodPosAdcPulseIntRaw
vector< Int_t > fStatNumTrk
TClonesArray * frNegAdcErrorFlag
THaDetectorBase * fParent
virtual Int_t AccumulatePedestals(TClonesArray *rawhits, Int_t nexthit)
TClonesArray * frNegAdcSampPulseTimeRaw
TClonesArray * frPosAdcSampPulseTime
TClonesArray * frPosAdcPulseTime
TClonesArray * frNegAdcPedRaw
virtual void CalculatePedestals()
vector< Double_t > fGoodPosAdcPed
vector< Double_t > fGoodPosAdcMult
TClonesArray * frNegAdcPulseInt
virtual Int_t Decode(const THaEvData &)
TClonesArray * frNegAdcSampPulseAmp
TClonesArray * frNegAdcSampPulseAmpRaw
TClonesArray * fPosADCHits
static const Int_t kADCDynamicPedestal
TClonesArray * frPosAdcPed
Double_t fAdcPosThreshold
vector< Double_t > fGoodNegAdcPulseTime
TClonesArray * frPosAdcPedRaw
vector< Double_t > fGoodNegAdcTdcDiffTime
TClonesArray * frPosAdcPulseAmp
TClonesArray * frNegAdcSampPulseIntRaw
Int_t AccumulateStat(TClonesArray &tracks)
vector< Double_t > fGoodNegAdcPulseAmp
TClonesArray * frNegAdcSampPed
vector< Double_t > fGoodPosAdcPulseTime
vector< Int_t > fNumGoodNegAdcHits
TClonesArray * frPosAdcPulseIntRaw
Double_t fAdcNegThreshold
virtual Int_t DefineVariables(EMode mode=kDefine)
Generic segmented shower detector.
Double_t GetXPos(Int_t NLayer, Int_t NRow) const
Int_t GetPedLimit(Int_t NBlock, Int_t NLayer, Int_t Side)
Double_t GetZPos(Int_t NLayer) const
Double_t GetWindowMax(Int_t NBlock, Int_t NLayer, Int_t Side)
Double_t GetAdcTdcOffset()
Int_t GetNBlocks(Int_t NLayer) const
Double_t GetYPos(Int_t NLayer, Int_t Side) const
Double_t GetBlockThick(Int_t NLayer)
const char * GetName() const override
Int_t GetEntries() const override
TObject * At(Int_t idx) const override
Int_t GetLast() const override
virtual void Warning(const char *method, const char *msgfmt,...) const
R__ALWAYS_INLINE Bool_t IsZombie() const
void SetXYZ(Double_t x, Double_t y, Double_t z)
Expr< UnaryOp< Sqrt< T >, Expr< A, T, D, D2, R >, T >, T, D, D2, R > sqrt(const Expr< A, T, D, D2, R > &rhs)
Double_t Min(Double_t a, Double_t b)
Double_t Max(Double_t a, Double_t b)