10 #include <tracking/trackFindingCDC/filters/wireHit/CutsFromDBWireHitFilter.h>
11 #include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
12 #include <cdc/dataobjects/CDCHit.h>
15 using namespace TrackFindingCDC;
19 m_CDCWireHitRequirementsFromDB(nullptr), m_DBPtrIsValidForCurrentRun(false)
37 B2ERROR(
"std::unique_ptr<DBObjPtr<CDCWireHitRequirements> > m_CDCWireHitRequirementsFromDB not properly set.\n"
38 "Cut not applied on CDCWireHit by CutsFromDBWireHitFilter. { findlet: CutsFromDBWireHitFilter }");
41 if (!((*m_CDCWireHitRequirementsFromDB).isValid())) {
42 B2WARNING(
"DBObjPtr<CDCWireHitRequirements> not valid for current run. { findlet: CutsFromDBWireHitFilter }\n"
43 "Cut not applied on CDCWireHit by CutsFromDBWireHitFilter. { findlet: CutsFromDBWireHitFilter }");
56 if (range.second == -1) {
57 return (value >= range.first);
59 return (value >= range.first) && (value <= range.second);
68 if (upper_value == -1) {
71 return value <= upper_value;
77 const short ADC = (*wireHit.
getHit()).getADCCount();
78 const short TOT = (*wireHit.
getHit()).getTOT();
79 const float ADCOverTOT = (TOT != 0) ?
static_cast<float>(ADC) / TOT : 0;
82 if ((*wireHit.
getHit()).getISuperLayer() == 0) {
85 if (isInRange<short>(ADC, (*m_CDCWireHitRequirementsFromDB)->getADCRangeFirstSuperLayer()) &&
86 isInRange<short>(TOT, (*m_CDCWireHitRequirementsFromDB)->getTOTRangeFirstSuperLayer()) &&
87 isInRange<float>(ADCOverTOT, (*m_CDCWireHitRequirementsFromDB)->getADCOverTOTRangeFirstSuperLayer()) &&
88 isLessThanOrEqualTo<short>(ADC, (*m_CDCWireHitRequirementsFromDB)->getMaxADCGivenTOTFirstSuperLayer(TOT))) {
99 if (isInRange<short>(ADC, (*m_CDCWireHitRequirementsFromDB)->getADCRangeOuterSuperLayers()) &&
100 isInRange<short>(TOT, (*m_CDCWireHitRequirementsFromDB)->getTOTRangeOuterSuperLayers()) &&
101 isInRange<float>(ADCOverTOT, (*m_CDCWireHitRequirementsFromDB)->getADCOverTOTRangeOuterSuperLayers()) &&
102 isLessThanOrEqualTo<short>(ADC, (*m_CDCWireHitRequirementsFromDB)->getMaxADCGivenTOTOuterSuperLayers(TOT))) {