diff --git a/src/THcHitList.cxx b/src/THcHitList.cxx index 06976187316f99231a5861552b032528be64fec5..45697822e41dc26aa122f220ae1388b8a1ce353a 100644 --- a/src/THcHitList.cxx +++ b/src/THcHitList.cxx @@ -10,6 +10,10 @@ #include "TError.h" #include "TClass.h" +#include "THcConfigEvtHandler.h" +#include "THaGlobals.h" +#include "TList.h" + using namespace std; THcHitList::THcHitList() @@ -17,6 +21,7 @@ THcHitList::THcHitList() // Normal constructor. fRawHitList = NULL; + fPSE125 = NULL; } @@ -101,6 +106,10 @@ void THcHitList::InitHitList(THaDetMap* detmap, } } + fPSE125 = static_cast<THcConfigEvtHandler*>(gHaEvtHandlers->FindObject("HC")); + if (!fPSE125) { + cout << "THcHitList::InitHitList : Prestart event 125 not found." << endl; + } } Int_t THcHitList::DecodeToHitList( const THaEvData& evdata ) { @@ -112,6 +121,7 @@ Int_t THcHitList::DecodeToHitList( const THaEvData& evdata ) { // hits for multihit tdcs. // The hit list is sorted (by plane, counter) after filling. + // cout << " Clearing TClonesArray " << endl; fRawHitList->Clear( ); fNRawHits = 0; @@ -212,6 +222,15 @@ Int_t THcHitList::DecodeToHitList( const THaEvData& evdata ) { } } } else { // This is a Flash ADC + + if (fPSE125) { // Set F250 parameters. + rawhit->SetF250Params( + fPSE125->GetNSA(d->crate), + fPSE125->GetNSB(d->crate), + fPSE125->GetNPED(d->crate) + ); + } + // Copy the samples Int_t nsamples=evdata.GetNumEvents(Decoder::kSampleADC, d->crate, d->slot, chan); diff --git a/src/THcHitList.h b/src/THcHitList.h index 8f3bc81b20bee0cfc785690d96e57ffce7977b63..9ab07220b2f1707f138523071c75c88b46a06833 100644 --- a/src/THcHitList.h +++ b/src/THcHitList.h @@ -18,6 +18,7 @@ using namespace std; ////////////////////////////////////////////////////////////////////////// //class THaDetMap; +class THcConfigEvtHandler; class THcHitList { @@ -58,6 +59,8 @@ protected: UInt_t fNSignals; THcRawHit::ESignalType *fSignalTypes; + THcConfigEvtHandler* fPSE125; + ClassDef(THcHitList,0); // List of raw hits sorted by plane, counter }; #endif diff --git a/src/THcRawAdcHit.cxx b/src/THcRawAdcHit.cxx index e35c5f513117b33a6e4a65b5eddd69eddf74f7a7..508b39bb0fc75944940ea18cdd2c5896574588bf 100644 --- a/src/THcRawAdcHit.cxx +++ b/src/THcRawAdcHit.cxx @@ -167,6 +167,14 @@ Returns 0 if no signal pedestal is set. \brief Gets pedestal subtracted integral of samples. In channels. */ +/** +\fn void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) +\brief Sets F250 parameters used for pedestal subtraction. +\param [in] NSA NSA parameter of F250 modules. +\param [in] NSB NSB parameter of F250 modules. +\param [in] NPED NPED parameter of F250 modules. +*/ + // TODO: Disallow using both SetData and SetDataTimePedestalPeak. @@ -450,4 +458,11 @@ Double_t THcRawAdcHit::GetSampleInt() const { } +void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) { + fNPedestalSamples = NPED; + fNPeakSamples = NSA + NSB; + fPeakPedestalRatio = 1.0*fNPeakSamples/fNPedestalSamples; +} + + ClassImp(THcRawAdcHit) diff --git a/src/THcRawAdcHit.h b/src/THcRawAdcHit.h index 210dfbc4d19d92416509c026c8222d848e40d207..82a1922aae6956f38243d609c4ad13ed6dc8069a 100644 --- a/src/THcRawAdcHit.h +++ b/src/THcRawAdcHit.h @@ -46,6 +46,8 @@ class THcRawAdcHit : public TObject { Int_t GetSampleIntRaw() const; Double_t GetSampleInt() const; + void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED); + protected: static const UInt_t fMaxNPulses = 4; static const UInt_t fMaxNSamples = 511; diff --git a/src/THcRawHit.h b/src/THcRawHit.h index 9406e25ee5549b7fed1563229d2c2296ed6d288d..e56674f96a66d32ab4fc71a76cb6d72a25f74a43 100644 --- a/src/THcRawHit.h +++ b/src/THcRawHit.h @@ -42,6 +42,8 @@ public: virtual Bool_t HasReference(Int_t signal) {return kFALSE;}; virtual Int_t GetReference(Int_t signal) {return 0;}; + virtual void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) {}; + // Derived objects must be sortable and supply Compare method // virtual Bool_t IsSortable () const {return kFALSE; } // virtual Int_t Compare(const TObject* obj) const {return 0;} diff --git a/src/THcRawHodoHit.cxx b/src/THcRawHodoHit.cxx index fa1407e8f183b792449be5b835add100b873cdea..db2d487ede19b3a50e17cff4848e976179e41172 100644 --- a/src/THcRawHodoHit.cxx +++ b/src/THcRawHodoHit.cxx @@ -198,4 +198,11 @@ THcRawTdcHit& THcRawHodoHit::GetRawTdcHitNeg() { } +void THcRawHodoHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) { + for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) { + fAdcHits[iAdcSig].SetF250Params(NSA, NSB, NPED); + } +} + + ClassImp(THcRawHodoHit) diff --git a/src/THcRawHodoHit.h b/src/THcRawHodoHit.h index 679d36fa4fc346c4a52f756b0d59afb89c37e4cd..dc2528f6e81267b295150d97a95534d34af475b9 100644 --- a/src/THcRawHodoHit.h +++ b/src/THcRawHodoHit.h @@ -39,6 +39,8 @@ class THcRawHodoHit : public THcRawHit { THcRawTdcHit& GetRawTdcHitPos(); THcRawTdcHit& GetRawTdcHitNeg(); + void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED); + protected: static const Int_t fNAdcSignals = 2; static const Int_t fNTdcSignals = 2; diff --git a/src/THcRawShowerHit.cxx b/src/THcRawShowerHit.cxx index 165a74955c0abb571f087903ecbc431698c10d9c..982266f5625260b3ffd53b37d7af5505070ace4d 100644 --- a/src/THcRawShowerHit.cxx +++ b/src/THcRawShowerHit.cxx @@ -142,4 +142,11 @@ THcRawAdcHit& THcRawShowerHit::GetRawAdcHitNeg() { } +void THcRawShowerHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) { + for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) { + fAdcHits[iAdcSig].SetF250Params(NSA, NSB, NPED); + } +} + + ClassImp(THcRawShowerHit) diff --git a/src/THcRawShowerHit.h b/src/THcRawShowerHit.h index a70af838c51a00303604d407de9803edd8ca4dce..9008831e54362303bed9a48474ed0ccbd5a6ac85 100644 --- a/src/THcRawShowerHit.h +++ b/src/THcRawShowerHit.h @@ -31,6 +31,8 @@ class THcRawShowerHit : public THcRawHit { THcRawAdcHit& GetRawAdcHitPos(); THcRawAdcHit& GetRawAdcHitNeg(); + void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED); + protected: static const Int_t fNAdcSignals = 2; diff --git a/src/THcTrigRawHit.cxx b/src/THcTrigRawHit.cxx index d0dbd476a6b686db61d0f01ab3065544de4774da..60e3b60c35cf66c35d912e9c4e973700dbba774f 100644 --- a/src/THcTrigRawHit.cxx +++ b/src/THcTrigRawHit.cxx @@ -121,6 +121,11 @@ It supports rich data from flash 250 ADC modules. \brief Gets reference to THcRawTdcHit. */ +/** +\fn void THcTrigRawHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) +\brief See THcRawAdcHit::SetF250Params. +*/ + // TODO: Check if signal matches plane. #include "THcTrigRawHit.h" @@ -307,4 +312,11 @@ THcRawTdcHit& THcTrigRawHit::GetRawTdcHit() { } +void THcTrigRawHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) { + for (Int_t iAdcSig=0; iAdcSig<fNAdcSignals; ++iAdcSig) { + fAdcHits[iAdcSig].SetF250Params(NSA, NSB, NPED); + } +} + + ClassImp(THcTrigRawHit) diff --git a/src/THcTrigRawHit.h b/src/THcTrigRawHit.h index 762cac778bfe983e220a335a11c28be1f107abf7..345e3d055de770a4a80f85d68e44622ad28c6bf4 100644 --- a/src/THcTrigRawHit.h +++ b/src/THcTrigRawHit.h @@ -33,6 +33,8 @@ class THcTrigRawHit : public THcRawHit { THcRawAdcHit& GetRawAdcHit(); THcRawTdcHit& GetRawTdcHit(); + void SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED); + protected: static const Int_t fNAdcSignals = 1; static const Int_t fNTdcSignals = 1;