From 2249979b60110d0a4bcbbd4d3d749d6b8ea7f973 Mon Sep 17 00:00:00 2001 From: Eric Pooser <pooser@jlab.org> Date: Fri, 27 Oct 2017 07:13:53 -0400 Subject: [PATCH] Work for fadc unit conversion Include methods for FADC conversions and apply to non-raw data objects in THcRawAdcHit Add raw pulse time data object to Cherenkov detector classes Add raw pulse time data object to shower detector classes Add raw pulse time data object to hodoscope detector class --- src/THcAerogel.cxx | 12 +++++++ src/THcAerogel.h | 2 ++ src/THcCherenkov.cxx | 12 +++++-- src/THcCherenkov.h | 1 + src/THcRawAdcHit.cxx | 62 +++++++++++++++--------------------- src/THcRawAdcHit.h | 18 ++++++++--- src/THcScintillatorPlane.cxx | 46 +++++++++++++++----------- src/THcScintillatorPlane.h | 2 ++ src/THcShowerArray.cxx | 21 ++++++++---- src/THcShowerArray.h | 1 + src/THcShowerPlane.cxx | 46 ++++++++++++++++---------- src/THcShowerPlane.h | 2 ++ 12 files changed, 141 insertions(+), 84 deletions(-) diff --git a/src/THcAerogel.cxx b/src/THcAerogel.cxx index 9dec975..0cdd682 100644 --- a/src/THcAerogel.cxx +++ b/src/THcAerogel.cxx @@ -53,6 +53,7 @@ THcAerogel::THcAerogel( ) : frPosAdcPed = NULL; frPosAdcPulseInt = NULL; frPosAdcPulseAmp = NULL; + frPosAdcPulseTime = NULL; frNegAdcPedRaw = NULL; frNegAdcPulseIntRaw = NULL; frNegAdcPulseAmpRaw = NULL; @@ -60,6 +61,7 @@ THcAerogel::THcAerogel( ) : frNegAdcPed = NULL; frNegAdcPulseInt = NULL; frNegAdcPulseAmp = NULL; + frNegAdcPulseTime = NULL; fPosAdcErrorFlag = NULL; fNegAdcErrorFlag = NULL; @@ -84,6 +86,7 @@ THcAerogel::~THcAerogel() delete frPosAdcPed; frPosAdcPed = NULL; delete frPosAdcPulseInt; frPosAdcPulseInt = NULL; delete frPosAdcPulseAmp; frPosAdcPulseAmp = NULL; + delete frPosAdcPulseTime; frPosAdcPulseTime = NULL; delete frNegAdcPedRaw; frNegAdcPedRaw = NULL; delete frNegAdcPulseIntRaw; frNegAdcPulseIntRaw = NULL; delete frNegAdcPulseAmpRaw; frNegAdcPulseAmpRaw = NULL; @@ -91,6 +94,7 @@ THcAerogel::~THcAerogel() delete frNegAdcPed; frNegAdcPed = NULL; delete frNegAdcPulseInt; frNegAdcPulseInt = NULL; delete frNegAdcPulseAmp; frNegAdcPulseAmp = NULL; + delete frNegAdcPulseTime; frNegAdcPulseTime = NULL; delete fPosAdcErrorFlag; fPosAdcErrorFlag = NULL; delete fNegAdcErrorFlag; fNegAdcErrorFlag = NULL; @@ -240,6 +244,7 @@ Int_t THcAerogel::ReadDatabase( const TDatime& date ) frPosAdcPed = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frPosAdcPulseInt = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frPosAdcPulseAmp = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); + frPosAdcPulseTime = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frNegAdcPedRaw = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); @@ -247,6 +252,7 @@ Int_t THcAerogel::ReadDatabase( const TDatime& date ) frNegAdcPed = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frNegAdcPulseInt = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); frNegAdcPulseAmp = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); + frNegAdcPulseTime = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); fPosAdcErrorFlag = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); fNegAdcErrorFlag = new TClonesArray("THcSignalHit", fNelem*MaxNumAdcPulse); @@ -368,6 +374,7 @@ Int_t THcAerogel::DefineVariables( EMode mode ) {"posAdcPed", "Positive ADC pedestals", "frPosAdcPed.THcSignalHit.GetData()"}, {"posAdcPulseInt", "Positive ADC pulse integrals", "frPosAdcPulseInt.THcSignalHit.GetData()"}, {"posAdcPulseAmp", "Positive ADC pulse amplitudes", "frPosAdcPulseAmp.THcSignalHit.GetData()"}, + {"posAdcPulseTime", "Positive ADC pulse times", "frPosAdcPulseTime.THcSignalHit.GetData()"}, {"negAdcPedRaw", "Negative Raw ADC pedestals", "frNegAdcPedRaw.THcSignalHit.GetData()"}, {"negAdcPulseIntRaw", "Negative Raw ADC pulse integrals", "frNegAdcPulseIntRaw.THcSignalHit.GetData()"}, @@ -376,6 +383,7 @@ Int_t THcAerogel::DefineVariables( EMode mode ) {"negAdcPed", "Negative ADC pedestals", "frNegAdcPed.THcSignalHit.GetData()"}, {"negAdcPulseInt", "Negative ADC pulse integrals", "frNegAdcPulseInt.THcSignalHit.GetData()"}, {"negAdcPulseAmp", "Negative ADC pulse amplitudes", "frNegAdcPulseAmp.THcSignalHit.GetData()"}, + {"negAdcPulseTime", "Negative ADC pulse times", "frNegAdcPulseTime.THcSignalHit.GetData()"}, { 0 } }; DefineVarsFromList( vars, mode); @@ -471,6 +479,7 @@ void THcAerogel::Clear(Option_t* opt) frPosAdcPed->Clear(); frPosAdcPulseInt->Clear(); frPosAdcPulseAmp->Clear(); + frPosAdcPulseTime->Clear(); frNegAdcPedRaw->Clear(); frNegAdcPulseIntRaw->Clear(); @@ -479,6 +488,7 @@ void THcAerogel::Clear(Option_t* opt) frNegAdcPed->Clear(); frNegAdcPulseInt->Clear(); frNegAdcPulseAmp->Clear(); + frNegAdcPulseTime->Clear(); fPosAdcErrorFlag->Clear(); fNegAdcErrorFlag->Clear(); @@ -584,6 +594,7 @@ Int_t THcAerogel::Decode( const THaEvData& evdata ) ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(nrPosAdcHits))->Set(npmt, rawPosAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frPosAdcPulseTimeRaw->ConstructedAt(nrPosAdcHits))->Set(npmt, rawPosAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(nrPosAdcHits))->Set(npmt, rawPosAdcHit.GetPulseTime(thit)); if (rawPosAdcHit.GetPulseAmpRaw(thit) > 0) ((THcSignalHit*) fPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(npmt, 0); if (rawPosAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) fPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(npmt, 1); @@ -605,6 +616,7 @@ Int_t THcAerogel::Decode( const THaEvData& evdata ) ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(nrNegAdcHits))->Set(npmt, rawNegAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frNegAdcPulseTimeRaw->ConstructedAt(nrNegAdcHits))->Set(npmt, rawNegAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frNegAdcPulseTime->ConstructedAt(nrNegAdcHits))->Set(npmt, rawNegAdcHit.GetPulseTime(thit)); if (rawNegAdcHit.GetPulseAmpRaw(thit) > 0) ((THcSignalHit*) fNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(npmt, 0); if (rawNegAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) fNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(npmt, 1); diff --git a/src/THcAerogel.h b/src/THcAerogel.h index c1a4993..55e8a58 100644 --- a/src/THcAerogel.h +++ b/src/THcAerogel.h @@ -84,6 +84,7 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList { TClonesArray* frPosAdcPed; TClonesArray* frPosAdcPulseInt; TClonesArray* frPosAdcPulseAmp; + TClonesArray* frPosAdcPulseTime; TClonesArray* frNegAdcPedRaw; TClonesArray* frNegAdcPulseIntRaw; TClonesArray* frNegAdcPulseAmpRaw; @@ -91,6 +92,7 @@ class THcAerogel : public THaNonTrackingDetector, public THcHitList { TClonesArray* frNegAdcPed; TClonesArray* frNegAdcPulseInt; TClonesArray* frNegAdcPulseAmp; + TClonesArray* frNegAdcPulseTime; TClonesArray* fPosAdcErrorFlag; TClonesArray* fNegAdcErrorFlag; // Individual PMT data objects diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx index 06c9768..4b8c42f 100644 --- a/src/THcCherenkov.cxx +++ b/src/THcCherenkov.cxx @@ -52,6 +52,7 @@ THcCherenkov::THcCherenkov( const char* name, const char* description, frAdcPed = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse); frAdcPulseInt = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse); frAdcPulseAmp = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse); + frAdcPulseTime = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse); fAdcErrorFlag = new TClonesArray("THcSignalHit", MaxNumCerPmt*MaxNumAdcPulse); fNumAdcHits = vector<Int_t> (MaxNumCerPmt, 0.0); @@ -80,6 +81,7 @@ THcCherenkov::THcCherenkov( ) : frAdcPed = NULL; frAdcPulseInt = NULL; frAdcPulseAmp = NULL; + frAdcPulseTime = NULL; fAdcErrorFlag = NULL; InitArrays(); @@ -96,6 +98,7 @@ THcCherenkov::~THcCherenkov() delete frAdcPed; frAdcPed = NULL; delete frAdcPulseInt; frAdcPulseInt = NULL; delete frAdcPulseAmp; frAdcPulseAmp = NULL; + delete frAdcPulseTime; frAdcPulseTime = NULL; delete fAdcErrorFlag; fAdcErrorFlag = NULL; DeleteArrays(); @@ -251,6 +254,7 @@ Int_t THcCherenkov::DefineVariables( EMode mode ) {"adcPed", "ADC pedestals", "frAdcPed.THcSignalHit.GetData()"}, {"adcPulseInt", "ADC pulse integrals", "frAdcPulseInt.THcSignalHit.GetData()"}, {"adcPulseAmp", "ADC pulse amplitudes", "frAdcPulseAmp.THcSignalHit.GetData()"}, + {"adcPulseTime", "ADC pulse times", "frAdcPulseTime.THcSignalHit.GetData()"}, { 0 } }; DefineVarsFromList( vars, mode); @@ -302,6 +306,7 @@ void THcCherenkov::Clear(Option_t* opt) frAdcPed->Clear(); frAdcPulseInt->Clear(); frAdcPulseAmp->Clear(); + frAdcPulseTime->Clear(); fAdcErrorFlag->Clear(); for (UInt_t ielem = 0; ielem < fNumAdcHits.size(); ielem++) @@ -345,9 +350,9 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata ) while(ihit < fNhits) { - THcCherenkovHit* hit = (THcCherenkovHit*) fRawHitList->At(ihit); - Int_t npmt = hit->fCounter; - THcRawAdcHit& rawAdcHit = hit->GetRawAdcHitPos(); + THcCherenkovHit* hit = (THcCherenkovHit*) fRawHitList->At(ihit); + Int_t npmt = hit->fCounter; + THcRawAdcHit& rawAdcHit = hit->GetRawAdcHitPos(); for (UInt_t thit = 0; thit < rawAdcHit.GetNPulses(); thit++) { @@ -361,6 +366,7 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata ) ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(npmt, rawAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(npmt, rawAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frAdcPulseTime->ConstructedAt(nrAdcHits))->Set(npmt, rawAdcHit.GetPulseTime(thit)); if (rawAdcHit.GetPulseAmpRaw(thit) > 0) ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(npmt, 0); if (rawAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(npmt, 1); diff --git a/src/THcCherenkov.h b/src/THcCherenkov.h index bb7145b..b8f2bdf 100644 --- a/src/THcCherenkov.h +++ b/src/THcCherenkov.h @@ -101,6 +101,7 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList { TClonesArray* frAdcPed; TClonesArray* frAdcPulseInt; TClonesArray* frAdcPulseAmp; + TClonesArray* frAdcPulseTime; TClonesArray* fAdcErrorFlag; void Setup(const char* name, const char* description); diff --git a/src/THcRawAdcHit.cxx b/src/THcRawAdcHit.cxx index 60dd6ed..37b6b8e 100644 --- a/src/THcRawAdcHit.cxx +++ b/src/THcRawAdcHit.cxx @@ -179,12 +179,9 @@ Returns 0 if no signal pedestal is set. #include "THcRawAdcHit.h" - #include <stdexcept> - #include "TString.h" - THcRawAdcHit::THcRawAdcHit() : TObject(), fNPedestalSamples(4), fNPeakSamples(9), @@ -194,32 +191,29 @@ THcRawAdcHit::THcRawAdcHit() : fHasMulti(kFALSE), fNPulses(0), fNSamples(0) {} - THcRawAdcHit& THcRawAdcHit::operator=(const THcRawAdcHit& right) { TObject::operator=(right); if (this != &right) { fPed = right.fPed; for (UInt_t i=0; i<fMaxNPulses; ++i) { - fPulseInt[i] = right.fPulseInt[i]; - fPulseAmp[i] = right.fPulseAmp[i]; + fPulseInt[i] = right.fPulseInt[i]; + fPulseAmp[i] = right.fPulseAmp[i]; fPulseTime[i] = right.fPulseTime[i]; } for (UInt_t i=0; i<fMaxNSamples; ++i) { fSample[i] = right.fSample[i]; } fHasMulti = right.fHasMulti; - fNPulses = right.fNPulses; + fNPulses = right.fNPulses; fNSamples = right.fNSamples; } return *this; } - THcRawAdcHit::~THcRawAdcHit() {} - void THcRawAdcHit::Clear(Option_t* opt) { TObject::Clear(opt); @@ -237,7 +231,6 @@ void THcRawAdcHit::Clear(Option_t* opt) { fNSamples = 0; } - void THcRawAdcHit::SetData(Int_t data) { if (fNPulses >= fMaxNPulses) { throw std::out_of_range( @@ -248,7 +241,6 @@ void THcRawAdcHit::SetData(Int_t data) { ++fNPulses; } - void THcRawAdcHit::SetSample(Int_t data) { if (fNSamples >= fMaxNSamples) { throw std::out_of_range( @@ -259,7 +251,6 @@ void THcRawAdcHit::SetSample(Int_t data) { ++fNSamples; } - void THcRawAdcHit::SetDataTimePedestalPeak( Int_t data, Int_t time, Int_t pedestal, Int_t peak ) { @@ -276,7 +267,6 @@ void THcRawAdcHit::SetDataTimePedestalPeak( ++fNPulses; } - Int_t THcRawAdcHit::GetRawData(UInt_t iPulse) const { if (iPulse >= fNPulses && iPulse != 0) { TString msg = TString::Format( @@ -293,7 +283,6 @@ Int_t THcRawAdcHit::GetRawData(UInt_t iPulse) const { } } - Double_t THcRawAdcHit::GetAverage(UInt_t iSampleLow, UInt_t iSampleHigh) const { if (iSampleHigh >= fNSamples || iSampleLow >= fNSamples) { TString msg = TString::Format( @@ -327,7 +316,6 @@ Int_t THcRawAdcHit::GetIntegral(UInt_t iSampleLow, UInt_t iSampleHigh) const { } } - Double_t THcRawAdcHit::GetData( UInt_t iPedLow, UInt_t iPedHigh, UInt_t iIntLow, UInt_t iIntHigh ) const { @@ -336,27 +324,22 @@ Double_t THcRawAdcHit::GetData( - GetAverage(iPedHigh, iPedLow) * (iIntHigh - iIntLow + 1); } - UInt_t THcRawAdcHit::GetNPulses() const { return fNPulses; } - UInt_t THcRawAdcHit::GetNSamples() const { return fNSamples; } - Bool_t THcRawAdcHit::HasMulti() const { return fHasMulti; } - Int_t THcRawAdcHit::GetPedRaw() const { return fPed; } - Int_t THcRawAdcHit::GetPulseIntRaw(UInt_t iPulse) const { if (iPulse < fNPulses) { return fPulseInt[iPulse]; @@ -373,7 +356,6 @@ Int_t THcRawAdcHit::GetPulseIntRaw(UInt_t iPulse) const { } } - Int_t THcRawAdcHit::GetPulseAmpRaw(UInt_t iPulse) const { if (iPulse < fNPulses) { return fPulseAmp[iPulse]; @@ -390,7 +372,6 @@ Int_t THcRawAdcHit::GetPulseAmpRaw(UInt_t iPulse) const { } } - Int_t THcRawAdcHit::GetPulseTimeRaw(UInt_t iPulse) const { if (iPulse < fNPulses) { return fPulseTime[iPulse]; @@ -407,7 +388,6 @@ Int_t THcRawAdcHit::GetPulseTimeRaw(UInt_t iPulse) const { } } - Int_t THcRawAdcHit::GetSampleRaw(UInt_t iSample) const { if (iSample < fNSamples) { return fSample[iSample]; @@ -421,26 +401,21 @@ Int_t THcRawAdcHit::GetSampleRaw(UInt_t iSample) const { } } - Double_t THcRawAdcHit::GetPed() const { - return static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples); + return (static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples))*GetAdcTomV(); } - Double_t THcRawAdcHit::GetPulseInt(UInt_t iPulse) const { - return static_cast<Double_t>(fPulseInt[iPulse]) - static_cast<Double_t>(fPed)*fPeakPedestalRatio; + return (static_cast<Double_t>(fPulseInt[iPulse]) - static_cast<Double_t>(fPed)*fPeakPedestalRatio)*GetAdcTopC(); } - Double_t THcRawAdcHit::GetPulseAmp(UInt_t iPulse) const { - return static_cast<Double_t>(fPulseAmp[iPulse]) - static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples); + return (static_cast<Double_t>(fPulseAmp[iPulse]) - static_cast<Double_t>(fPed)/static_cast<Double_t>(fNPedestalSamples))*GetAdcTomV(); } - -//Int_t THcRawAdcHit::GetPulseTime(UInt_t iPulse) const { -// return static_cast<Double_t>(fAdcTime[iPulse]); -//} - +Double_t THcRawAdcHit::GetPulseTime(UInt_t iPulse) const { + return (static_cast<Double_t>(fPulseTime[iPulse])*GetAdcTons()); +} Int_t THcRawAdcHit::GetSampleIntRaw() const { Int_t integral = 0; @@ -452,12 +427,10 @@ Int_t THcRawAdcHit::GetSampleIntRaw() const { return integral; } - Double_t THcRawAdcHit::GetSampleInt() const { return static_cast<Double_t>(GetSampleIntRaw()) - GetPed()*static_cast<Double_t>(fNSamples); } - void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) { if (NSA < 0 || NSB < 0 || NPED < 0) { TString msg = TString::Format( @@ -471,5 +444,22 @@ void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) { fPeakPedestalRatio = 1.0*fNPeakSamples/fNPedestalSamples; } +// FADC conversion factors +// Convert pedestal and amplitude to mV +Double_t THcRawAdcHit::GetAdcTomV() const { + // 1000 mV / 4096 ADC channels + return (fAdcRange*1000. / fNAdcChan); +} + +// Convert integral to pC +Double_t THcRawAdcHit::GetAdcTopC() const { + // (1 V / 4096 adc channels) * (4 ns time sample / 50 ohms input resistance) = 0.020 pc/channel + return (fAdcRange / fNAdcChan) * (fAdcTimeSample / fAdcImpedence); +} + +// Convert time sub samples to ns +Double_t THcRawAdcHit::GetAdcTons() const { + return fAdcTimeRes; +} ClassImp(THcRawAdcHit) diff --git a/src/THcRawAdcHit.h b/src/THcRawAdcHit.h index 86c565c..71a5c27 100644 --- a/src/THcRawAdcHit.h +++ b/src/THcRawAdcHit.h @@ -41,23 +41,33 @@ class THcRawAdcHit : public TObject { Double_t GetPed() const; Double_t GetPulseInt(UInt_t iPulse=0) const; Double_t GetPulseAmp(UInt_t iPulse=0) const; - //Int_t GetPulseTime(UInt_t iPulse=0) const; + Double_t GetPulseTime(UInt_t iPulse=0) const; //Int_t GetSample(UInt_t iSample=0) const; - Int_t GetSampleIntRaw() const; + Int_t GetSampleIntRaw() const; Double_t GetSampleInt() const; + Double_t GetAdcTomV() const; + Double_t GetAdcTopC() const; + Double_t GetAdcTons() const; void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED); protected: - static const UInt_t fMaxNPulses = 4; + static const UInt_t fMaxNPulses = 4; static const UInt_t fMaxNSamples = 511; + + // FADC conversion factors + const Double_t fNAdcChan = 4096.0; // Number of FADC channels in units of ADC channels + const Double_t fAdcRange = 1.0; // Dynamic range of FADCs in units of V, // TO-DO: Get fAdcRange from pre-start event + const Double_t fAdcImpedence = 50.0; // FADC input impedence in units of Ohms + const Double_t fAdcTimeSample = 4.0; // Length of FADC time sample in units of ns + const Double_t fAdcTimeRes = 0.0625; // FADC time resolution in units of ns Int_t fNPedestalSamples; // TODO: Get this from prestart event... Int_t fNPeakSamples; Double_t fPeakPedestalRatio; Double_t fSubsampleToTimeFactor; - + Int_t fPed; Int_t fPulseInt[fMaxNPulses]; Int_t fPulseAmp[fMaxNPulses]; diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx index 6f804ec..a66064f 100644 --- a/src/THcScintillatorPlane.cxx +++ b/src/THcScintillatorPlane.cxx @@ -50,27 +50,29 @@ THcScintillatorPlane::THcScintillatorPlane( const char* name, frPosADCPeds = new TClonesArray("THcSignalHit",16); frNegADCPeds = new TClonesArray("THcSignalHit",16); - frPosTdcTimeRaw = new TClonesArray("THcSignalHit", 16); - frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); + frPosTdcTimeRaw = new TClonesArray("THcSignalHit", 16); + frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); frPosAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16); - frPosTdcTime = new TClonesArray("THcSignalHit", 16); - frPosAdcPed = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseInt = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frPosTdcTime = new TClonesArray("THcSignalHit", 16); + frPosAdcPed = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseInt = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseTime = new TClonesArray("THcSignalHit", 16); - frNegTdcTimeRaw = new TClonesArray("THcSignalHit", 16); - frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); + frNegTdcTimeRaw = new TClonesArray("THcSignalHit", 16); + frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); frNegAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16); - frNegTdcTime = new TClonesArray("THcSignalHit", 16); - frNegAdcPed = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseInt = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frNegTdcTime = new TClonesArray("THcSignalHit", 16); + frNegAdcPed = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseInt = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseTime = new TClonesArray("THcSignalHit", 16); fPlaneNum = planenum; fTotPlanes = planenum; @@ -106,6 +108,7 @@ THcScintillatorPlane::~THcScintillatorPlane() delete frPosAdcPed; delete frPosAdcPulseInt; delete frPosAdcPulseAmp; + delete frPosAdcPulseTime; delete frNegTdcTimeRaw; delete frNegAdcPedRaw; @@ -117,6 +120,7 @@ THcScintillatorPlane::~THcScintillatorPlane() delete frNegAdcPed; delete frNegAdcPulseInt; delete frNegAdcPulseAmp; + delete frNegAdcPulseTime; delete [] fPosCenter; @@ -351,6 +355,7 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode ) {"posAdcPed", "List of positive ADC pedestals", "frPosAdcPed.THcSignalHit.GetData()"}, {"posAdcPulseInt", "List of positive ADC pulse integrals.", "frPosAdcPulseInt.THcSignalHit.GetData()"}, {"posAdcPulseAmp", "List of positive ADC pulse amplitudes.", "frPosAdcPulseAmp.THcSignalHit.GetData()"}, + {"posAdcPulseTime", "List of positive ADC pulse times.", "frPosAdcPulseTime.THcSignalHit.GetData()"}, {"negTdcTimeRaw", "List of negative raw TDC values.", "frNegTdcTimeRaw.THcSignalHit.GetData()"}, {"negAdcPedRaw", "List of negative raw ADC pedestals", "frNegAdcPedRaw.THcSignalHit.GetData()"}, @@ -362,6 +367,7 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode ) {"negAdcPed", "List of negative ADC pedestals", "frNegAdcPed.THcSignalHit.GetData()"}, {"negAdcPulseInt", "List of negative ADC pulse integrals.", "frNegAdcPulseInt.THcSignalHit.GetData()"}, {"negAdcPulseAmp", "List of negative ADC pulse amplitudes.", "frNegAdcPulseAmp.THcSignalHit.GetData()"}, + {"negAdcPulseTime", "List of negative ADC pulse times.", "frNegAdcPulseTime.THcSignalHit.GetData()"}, {"totNumPosAdcHits", "Total Number of Positive ADC Hits", "fTotNumPosAdcHits"}, // Hodo+ raw ADC multiplicity Int_t {"totNumNegAdcHits", "Total Number of Negative ADC Hits", "fTotNumNegAdcHits"}, // Hodo- raw ADC multiplicity "" @@ -454,6 +460,7 @@ void THcScintillatorPlane::Clear( Option_t* ) frPosAdcPed->Clear(); frPosAdcPulseInt->Clear(); frPosAdcPulseAmp->Clear(); + frPosAdcPulseTime->Clear(); frNegTdcTimeRaw->Clear(); frNegAdcPedRaw->Clear(); @@ -465,8 +472,7 @@ void THcScintillatorPlane::Clear( Option_t* ) frNegAdcPed->Clear(); frNegAdcPulseInt->Clear(); frNegAdcPulseAmp->Clear(); - - + frNegAdcPulseTime->Clear(); //Clear occupancies for (UInt_t ielem = 0; ielem < fNumGoodPosAdcHits.size(); ielem++) @@ -590,6 +596,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) frPosAdcPed->Clear(); frPosAdcPulseInt->Clear(); frPosAdcPulseAmp->Clear(); + frPosAdcPulseTime->Clear(); frNegTdcTimeRaw->Clear(); frNegAdcPedRaw->Clear(); @@ -601,6 +608,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) frNegAdcPed->Clear(); frNegAdcPulseInt->Clear(); frNegAdcPulseAmp->Clear(); + frNegAdcPulseTime->Clear(); //stripped fNScinHits=0; @@ -675,6 +683,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frPosAdcPulseTimeRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTime(thit)); if (rawPosAdcHit.GetPulseAmpRaw(thit) > 0) ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(padnum, 0); if (rawPosAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(padnum, 1); @@ -695,6 +704,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frNegAdcPulseTimeRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frNegAdcPulseTime->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTime(thit)); if (rawNegAdcHit.GetPulseAmpRaw(thit) > 0) ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(padnum, 0); if (rawNegAdcHit.GetPulseAmpRaw(thit) <= 0) ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(padnum, 1); diff --git a/src/THcScintillatorPlane.h b/src/THcScintillatorPlane.h index a56889b..bc900ed 100644 --- a/src/THcScintillatorPlane.h +++ b/src/THcScintillatorPlane.h @@ -89,6 +89,7 @@ class THcScintillatorPlane : public THaSubDetector { TClonesArray* frPosAdcPed; TClonesArray* frPosAdcPulseInt; TClonesArray* frPosAdcPulseAmp; + TClonesArray* frPosAdcPulseTime; TClonesArray* frNegTdcTimeRaw; TClonesArray* frNegAdcPedRaw; @@ -100,6 +101,7 @@ class THcScintillatorPlane : public THaSubDetector { TClonesArray* frNegAdcPed; TClonesArray* frNegAdcPulseInt; TClonesArray* frNegAdcPulseAmp; + TClonesArray* frNegAdcPulseTime; //Hodoscopes Multiplicities Int_t fTotNumPosAdcHits; diff --git a/src/THcShowerArray.cxx b/src/THcShowerArray.cxx index 007f5df..b5bbd8c 100644 --- a/src/THcShowerArray.cxx +++ b/src/THcShowerArray.cxx @@ -41,15 +41,16 @@ THcShowerArray::THcShowerArray( const char* name, fADCHits = new TClonesArray("THcSignalHit",100); fLayerNum = layernum; - frAdcPedRaw = new TClonesArray("THcSignalHit", 16); - frAdcErrorFlag = new TClonesArray("THcSignalHit", 16); - frAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); - frAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); + frAdcPedRaw = new TClonesArray("THcSignalHit", 16); + frAdcErrorFlag = new TClonesArray("THcSignalHit", 16); + frAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); + frAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); frAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16); - frAdcPed = new TClonesArray("THcSignalHit", 16); - frAdcPulseInt = new TClonesArray("THcSignalHit", 16); - frAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frAdcPed = new TClonesArray("THcSignalHit", 16); + frAdcPulseInt = new TClonesArray("THcSignalHit", 16); + frAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frAdcPulseTime = new TClonesArray("THcSignalHit", 16); fClusterList = new THcShowerClusterList; // List of hit clusters } @@ -85,6 +86,7 @@ THcShowerArray::~THcShowerArray() delete frAdcPed; frAdcPed = NULL; delete frAdcPulseInt; frAdcPulseInt = NULL; delete frAdcPulseAmp; frAdcPulseAmp = NULL; + delete frAdcPulseTime; frAdcPulseTime = NULL; // delete [] fA; //delete [] fP; @@ -404,6 +406,7 @@ Int_t THcShowerArray::DefineVariables( EMode mode ) {"adcPed", "List of ADC pedestals", "frAdcPed.THcSignalHit.GetData()"}, {"adcPulseInt", "List of ADC pulse integrals.", "frAdcPulseInt.THcSignalHit.GetData()"}, {"adcPulseAmp", "List of ADC pulse amplitudes.", "frAdcPulseAmp.THcSignalHit.GetData()"}, + {"adcPulseTime", "List of ADC pulse times.", "frAdcPulseTime.THcSignalHit.GetData()"}, { 0 } }; DefineVarsFromList( vars, mode); @@ -471,6 +474,7 @@ void THcShowerArray::Clear( Option_t* ) frAdcPed->Clear(); frAdcPulseInt->Clear(); frAdcPulseAmp->Clear(); + frAdcPulseTime->Clear(); for (UInt_t ielem = 0; ielem < fGoodAdcPed.size(); ielem++) { fGoodAdcPulseIntRaw.at(ielem) = 0.0; @@ -895,6 +899,7 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit) frAdcPed->Clear(); frAdcPulseInt->Clear(); frAdcPulseAmp->Clear(); + frAdcPulseTime->Clear(); for(Int_t i=0;i<fNelem;i++) { //fA[i] = 0; @@ -937,6 +942,8 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit) ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frAdcPulseTime->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTime(thit)); + if (rawAdcHit.GetPulseAmp(thit)>0&&rawAdcHit.GetPulseIntRaw(thit)>0) { ((THcSignalHit*) frAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(padnum,0); } else { diff --git a/src/THcShowerArray.h b/src/THcShowerArray.h index 0ac6f1a..acd12ae 100644 --- a/src/THcShowerArray.h +++ b/src/THcShowerArray.h @@ -193,6 +193,7 @@ protected: TClonesArray* frAdcPed; TClonesArray* frAdcPulseInt; TClonesArray* frAdcPulseAmp; + TClonesArray* frAdcPulseTime; //Quatitites for efficiency calculations. diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx index 2ae4b91..3249b2e 100644 --- a/src/THcShowerPlane.cxx +++ b/src/THcShowerPlane.cxx @@ -41,27 +41,29 @@ THcShowerPlane::THcShowerPlane( const char* name, fPosADCHits = new TClonesArray("THcSignalHit",fNelem); fNegADCHits = new TClonesArray("THcSignalHit",fNelem); - frPosAdcErrorFlag = new TClonesArray("THcSignalHit", 16); - frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16); - frPosAdcThreshold = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); + frPosAdcErrorFlag = new TClonesArray("THcSignalHit", 16); + frPosAdcPedRaw = new TClonesArray("THcSignalHit", 16); + frPosAdcThreshold = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); frPosAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16); - frPosAdcPed = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseInt = new TClonesArray("THcSignalHit", 16); - frPosAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frPosAdcPed = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseInt = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frPosAdcPulseTime = new TClonesArray("THcSignalHit", 16); - frNegAdcErrorFlag = new TClonesArray("THcSignalHit", 16); - frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16); - frNegAdcThreshold = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); + frNegAdcErrorFlag = new TClonesArray("THcSignalHit", 16); + frNegAdcPedRaw = new TClonesArray("THcSignalHit", 16); + frNegAdcThreshold = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseIntRaw = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseAmpRaw = new TClonesArray("THcSignalHit", 16); frNegAdcPulseTimeRaw = new TClonesArray("THcSignalHit", 16); - frNegAdcPed = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseInt = new TClonesArray("THcSignalHit", 16); - frNegAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frNegAdcPed = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseInt = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseAmp = new TClonesArray("THcSignalHit", 16); + frNegAdcPulseTime = new TClonesArray("THcSignalHit", 16); //#if ROOT_VERSION_CODE < ROOT_VERSION(5,32,0) // fPosADCHitsClass = fPosADCHits->GetClass(); @@ -88,6 +90,7 @@ THcShowerPlane::~THcShowerPlane() delete frPosAdcPed; frPosAdcPed = NULL; delete frPosAdcPulseInt; frPosAdcPulseInt = NULL; delete frPosAdcPulseAmp; frPosAdcPulseAmp = NULL; + delete frPosAdcPulseTime; frPosAdcPulseTime = NULL; delete frNegAdcErrorFlag; frNegAdcErrorFlag = NULL; delete frNegAdcPedRaw; frNegAdcPedRaw = NULL; @@ -99,6 +102,7 @@ THcShowerPlane::~THcShowerPlane() delete frNegAdcPed; frNegAdcPed = NULL; delete frNegAdcPulseInt; frNegAdcPulseInt = NULL; delete frNegAdcPulseAmp; frNegAdcPulseAmp = NULL; + delete frNegAdcPulseTime; frNegAdcPulseTime = NULL; delete [] fPosPedSum; delete [] fPosPedSum2; @@ -316,6 +320,7 @@ Int_t THcShowerPlane::DefineVariables( EMode mode ) {"posAdcPed", "List of positive ADC pedestals", "frPosAdcPed.THcSignalHit.GetData()"}, {"posAdcPulseInt", "List of positive ADC pulse integrals.", "frPosAdcPulseInt.THcSignalHit.GetData()"}, {"posAdcPulseAmp", "List of positive ADC pulse amplitudes.", "frPosAdcPulseAmp.THcSignalHit.GetData()"}, + {"posAdcPulseTime", "List of positive ADC pulse times.", "frPosAdcPulseTime.THcSignalHit.GetData()"}, {"negAdcPedRaw", "List of negative raw ADC pedestals", "frNegAdcPedRaw.THcSignalHit.GetData()"}, {"negAdcPulseIntRaw", "List of negative raw ADC pulse integrals.", "frNegAdcPulseIntRaw.THcSignalHit.GetData()"}, @@ -325,6 +330,7 @@ Int_t THcShowerPlane::DefineVariables( EMode mode ) {"negAdcPed", "List of negative ADC pedestals", "frNegAdcPed.THcSignalHit.GetData()"}, {"negAdcPulseInt", "List of negative ADC pulse integrals.", "frNegAdcPulseInt.THcSignalHit.GetData()"}, {"negAdcPulseAmp", "List of negative ADC pulse amplitudes.", "frNegAdcPulseAmp.THcSignalHit.GetData()"}, + {"negAdcPulseTime", "List of negative ADC pulse times.", "frNegAdcPulseTime.THcSignalHit.GetData()"}, { 0 } }; DefineVarsFromList( vars, mode); @@ -403,6 +409,7 @@ void THcShowerPlane::Clear( Option_t* ) frPosAdcPed->Clear(); frPosAdcPulseInt->Clear(); frPosAdcPulseAmp->Clear(); + frPosAdcPulseTime->Clear(); frNegAdcErrorFlag->Clear(); frNegAdcPedRaw->Clear(); @@ -414,6 +421,7 @@ void THcShowerPlane::Clear( Option_t* ) frNegAdcPed->Clear(); frNegAdcPulseInt->Clear(); frNegAdcPulseAmp->Clear(); + frNegAdcPulseTime->Clear(); for (UInt_t ielem = 0; ielem < fGoodPosAdcPed.size(); ielem++) { fGoodPosAdcPed.at(ielem) = 0.0; @@ -515,6 +523,7 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) frPosAdcPed->Clear(); frPosAdcPulseInt->Clear(); frPosAdcPulseAmp->Clear(); + frPosAdcPulseTime->Clear(); frNegAdcErrorFlag->Clear(); frNegAdcPedRaw->Clear(); @@ -526,6 +535,7 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) frNegAdcPed->Clear(); frNegAdcPulseInt->Clear(); frNegAdcPulseAmp->Clear(); + frNegAdcPulseTime->Clear(); /* for(Int_t i=0;i<fNelem;i++) { @@ -574,6 +584,8 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frPosAdcPulseTimeRaw->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(nrPosAdcHits))->Set(padnum, rawPosAdcHit.GetPulseTime(thit)); + if (rawPosAdcHit.GetPulseAmp(thit)>0&&rawPosAdcHit.GetPulseIntRaw(thit)>0) { ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(nrPosAdcHits))->Set(padnum,0); } else { @@ -597,6 +609,8 @@ Int_t THcShowerPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit) ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frNegAdcPulseTimeRaw->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTimeRaw(thit)); + ((THcSignalHit*) frNegAdcPulseTime->ConstructedAt(nrNegAdcHits))->Set(padnum, rawNegAdcHit.GetPulseTime(thit)); + if (rawNegAdcHit.GetPulseAmp(thit)>0&&rawNegAdcHit.GetPulseIntRaw(thit)>0) { ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(nrNegAdcHits))->Set(padnum,0); } else { diff --git a/src/THcShowerPlane.h b/src/THcShowerPlane.h index a7952b8..19a43c5 100644 --- a/src/THcShowerPlane.h +++ b/src/THcShowerPlane.h @@ -205,6 +205,7 @@ protected: TClonesArray* frPosAdcPed; TClonesArray* frPosAdcPulseInt; TClonesArray* frPosAdcPulseAmp; + TClonesArray* frPosAdcPulseTime; TClonesArray* frNegAdcErrorFlag; TClonesArray* frNegAdcPedRaw; @@ -216,6 +217,7 @@ protected: TClonesArray* frNegAdcPed; TClonesArray* frNegAdcPulseInt; TClonesArray* frNegAdcPulseAmp; + TClonesArray* frNegAdcPulseTime; virtual Int_t ReadDatabase( const TDatime& date ); virtual Int_t DefineVariables( EMode mode = kDefine ); -- GitLab