diff --git a/src/THcTrigDet.cxx b/src/THcTrigDet.cxx index 455367a350f0f5e9be2f73f283c53272af4d5211..8c94610080d7a81ddec42637ab706763b71b3b44 100644 --- a/src/THcTrigDet.cxx +++ b/src/THcTrigDet.cxx @@ -129,7 +129,11 @@ THcTrigDet::THcTrigDet( fAdcPedRaw(), fAdcPulseIntRaw(), fAdcPulseAmpRaw(), fAdcPulseTimeRaw(), fAdcPed(), fAdcPulseInt(), fAdcPulseAmp(), fAdcPulseTime(), fTdcMultiplicity(), fAdcMultiplicity() -{} +{ + // Guess at spectrometer name that this trigger detector is associated with + // Can override with SetSpectName + fSpectName = name[0]; +} THcTrigDet::~THcTrigDet() {} @@ -178,6 +182,12 @@ THaAnalysisObject::EStatus THcTrigDet::Init(const TDatime& date) { // printf(" Init trig det hitlist\n"); InitHitList(fDetMap, "THcTrigRawHit", 100); + fPresentP = 0; + THaVar* vpresent = gHaVars->Find(Form("%s.present",fSpectName.Data())); + if(vpresent) { + fPresentP = (Bool_t *) vpresent->GetValuePointer(); + } + fStatus = kOK; return fStatus; } @@ -208,7 +218,11 @@ void THcTrigDet::Clear(Option_t* opt) { Int_t THcTrigDet::Decode(const THaEvData& evData) { // Decode raw data for this event. - Int_t numHits = DecodeToHitList(evData); + Bool_t present = kTRUE; // Suppress reference time warnings + if(fPresentP) { // if this spectrometer not part of trigger + present = *fPresentP; + } + Int_t numHits = DecodeToHitList(evData, !present); // Process each hit and fill variables. Int_t iHit = 0; @@ -426,6 +440,11 @@ Int_t THcTrigDet::DefineVariables(THaAnalysisObject::EMode mode) { return DefineVarsFromList(vars.data(), mode); } +void THcTrigDet::SetSpectName( const char* name) +{ + fSpectName = name; +} + ClassImp(THcTrigDet) diff --git a/src/THcTrigDet.h b/src/THcTrigDet.h index c2d4a9008c430f83a5b120dc3edf75677525afc3..b6144f264f6000e70fb5f319ddef4c276ca9666a 100644 --- a/src/THcTrigDet.h +++ b/src/THcTrigDet.h @@ -26,6 +26,8 @@ class THcTrigDet : public THaDetector, public THcHitList { virtual void Clear(Option_t* opt=""); Int_t Decode(const THaEvData& evData); + virtual void SetSpectName( const char* name); + protected: void Setup(const char* name, const char* description); virtual Int_t ReadDatabase(const TDatime& date); @@ -62,6 +64,9 @@ class THcTrigDet : public THaDetector, public THcHitList { Int_t fTdcMultiplicity[fMaxTdcChannels]; Int_t fAdcMultiplicity[fMaxAdcChannels]; + TString fSpectName; + Bool_t* fPresentP; + private: THcTrigDet(); ClassDef(THcTrigDet, 0);