25 m_allowChildrenOrParentPass(false),
26 m_vertexTypesVector(0),
28 m_doVertexRangeCheck(false),
29 m_vertexTypeRangeLow(0),
30 m_vertexTypeRangeHigh(0),
31 m_vertexTypeRangeLength(0),
32 m_parentPdgCodesVector(0),
66 if ( (m_parentPt2>=0.) && (m_parentEkin>=0.) ) {
67 ATH_MSG_ERROR(
"Both, pT and Ekin cuts are given for parent particles. Unclear which one to use! ABORT!");
68 return StatusCode::FAILURE;
72 else if ( (m_parentPt2<0.) && (m_parentEkin<0.) ) {
82 m_useParentPt = !(m_parentPt2<0.);
83 m_parentPt2 *= m_parentPt2;
90 if ( (m_childPt2>=0.) && (m_childEkin>=0.) ) {
91 ATH_MSG_ERROR(
"Both, pT and Ekin cuts are given for child particles. Unclear which one to use! ABORT!");
92 return StatusCode::FAILURE;
96 else if ( (m_childPt2<0.) && (m_childEkin<0.) ) {
106 m_useChildPt = !(m_childPt2<0.);
107 m_childPt2 *= m_childPt2;
113 if ( m_vertexTypeRangeHigh < m_vertexTypeRangeLow) {
114 ATH_MSG_ERROR(
"The given parameter VertexTypeRangeLow is bigger than VertexTypeRangeHigh. ABORT");
115 return StatusCode::FAILURE;
118 m_vertexTypeRangeLength =
unsigned(m_vertexTypeRangeHigh - m_vertexTypeRangeLow) + 1;
120 m_doVertexRangeCheck = m_vertexTypeRangeLow && m_vertexTypeRangeHigh;
124 m_parentPdgCodes.insert( m_parentPdgCodesVector.begin(), m_parentPdgCodesVector.end());
127 m_vertexTypes.insert( m_vertexTypesVector.begin(), m_vertexTypesVector.end());
129 for(
auto region : m_regionListProperty.value()) {
131 ATH_MSG_ERROR(
"Unknown Region (" << region <<
") specified. Please check your configuration.");
132 return StatusCode::FAILURE;
135 return StatusCode::SUCCESS;
141 return StatusCode::SUCCESS;
151 bool primFail = (m_useParentPt) ? (ti.
parentPt2()<m_parentPt2)
157 if ( ( primFail && (!m_allowChildrenOrParentPass) ) ) {
167 if (!m_allowChildrenOrParentPass) {
170 }
else if (primFail) {
182 if ( m_parentPdgCodes.size() &&
183 (m_parentPdgCodes.find(ti.
parentPdgCode()) == m_parentPdgCodes.end()) ) {
192 if ( m_doVertexRangeCheck || m_vertexTypes.size()) {
197 bool vtxTypeRangePassed = m_doVertexRangeCheck && (
unsigned(vxtype-m_vertexTypeRangeLow) < m_vertexTypeRangeLength );
200 if ( (!vtxTypeRangePassed) && (m_vertexTypes.find(vxtype)==m_vertexTypes.end()) ) {
212 return std::find( m_regionListProperty.begin(),
213 m_regionListProperty.end(),
214 geoID ) != m_regionListProperty.end();