ATLAS Offline Software
NLargeRJetMassWindowSelectorAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 
9 namespace CP {
10 
11  NLargeRJetMassWindowSelectorAlg::NLargeRJetMassWindowSelectorAlg(const std::string &name, ISvcLocator *pSvcLocator)
12  : EL::AnaAlgorithm(name, pSvcLocator)
13  {}
14 
19 
23 
24  m_signEnum = SignEnum::stringToOperator.at( m_sign );
25 
26  return StatusCode::SUCCESS;
27  }
28 
30  for (const auto &sys : m_systematicsList.systematicsVector()) {
31  // retrieve the EventInfo
32  const xAOD::EventInfo *evtInfo = nullptr;
33  ANA_CHECK(m_eventInfoHandle.retrieve(evtInfo, sys));
34 
35  // default-decorate EventInfo
36  m_decoration.setBool(*evtInfo, 0, sys);
37 
38  // check the preselection
39  if (m_preselection && !m_preselection.getBool(*evtInfo, sys))
40  continue;
41 
42  // retrieve the large-R jet container
43  const xAOD::IParticleContainer *ljets = nullptr;
44  ANA_CHECK(m_ljetsHandle.retrieve(ljets, sys));
45 
46  // apply selection and calculate the jet-wise decision
47  int count = 0;
48  for (const xAOD::IParticle *lj : *ljets) {
50  double mass = lj->m();
51  bool in_range = ( mass > m_mlower && mass < m_mupper );
52  bool pass = m_veto ? (!in_range) : in_range;
53  if (pass) count++;
54  }
55  }
56 
57  // calculate event-wise decision
58  bool decision = SignEnum::checkValue(m_count.value(), m_signEnum, count);
59  m_decoration.setBool(*evtInfo, decision, sys);
60  }
61  return StatusCode::SUCCESS;
62  }
63 } // namespace CP
CP::NLargeRJetMassWindowSelectorAlg::m_signEnum
SignEnum::ComparisonOperator m_signEnum
the operator version of the comparison (>, <, etc)
Definition: NLargeRJetMassWindowSelectorAlg.h:51
CP::NLargeRJetMassWindowSelectorAlg::m_ljetsHandle
CP::SysReadHandle< xAOD::IParticleContainer > m_ljetsHandle
the large-R jet handle
Definition: NLargeRJetMassWindowSelectorAlg.h:63
CP::NLargeRJetMassWindowSelectorAlg::NLargeRJetMassWindowSelectorAlg
NLargeRJetMassWindowSelectorAlg(const std::string &name, ISvcLocator *pSvcLocator)
the standard constructor
Definition: NLargeRJetMassWindowSelectorAlg.cxx:11
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:324
CP::SysListHandle::systematicsVector
const std::vector< CP::SystematicSet > & systematicsVector() const
the list of systematics to loop over
Definition: SysListHandle.cxx:96
NLargeRJetMassWindowSelectorAlg.h
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
CP::NLargeRJetMassWindowSelectorAlg::m_systematicsList
CP::SysListHandle m_systematicsList
the systematics
Definition: NLargeRJetMassWindowSelectorAlg.h:60
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
CP::SysWriteSelectionHandle::setBool
void setBool(const SG::AuxElement &element, bool selection, const CP::SystematicSet &sys) const
set the selection decoration
CP::NLargeRJetMassWindowSelectorAlg::m_count
Gaudi::Property< int > m_count
the count of events desired
Definition: NLargeRJetMassWindowSelectorAlg.h:57
CP::NLargeRJetMassWindowSelectorAlg::execute
virtual StatusCode execute() override
Definition: NLargeRJetMassWindowSelectorAlg.cxx:29
CP::NLargeRJetMassWindowSelectorAlg::initialize
virtual StatusCode initialize() override
Definition: NLargeRJetMassWindowSelectorAlg.cxx:15
CP::SysListHandle::initialize
::StatusCode initialize()
intialize this property
Definition: SysListHandle.cxx:69
CP::SysReadSelectionHandle::getBool
bool getBool(const SG::AuxElement &element, const CP::SystematicSet &sys) const
get the selection as a bool
CP::NLargeRJetMassWindowSelectorAlg::m_mupper
Gaudi::Property< float > m_mupper
the upper limit of the Mass window
Definition: NLargeRJetMassWindowSelectorAlg.h:42
CP::NLargeRJetMassWindowSelectorAlg::m_mlower
Gaudi::Property< float > m_mlower
the lower limit of the Mass window
Definition: NLargeRJetMassWindowSelectorAlg.h:45
CP::NLargeRJetMassWindowSelectorAlg::m_decoration
CP::SysWriteSelectionHandle m_decoration
the output selection decoration
Definition: NLargeRJetMassWindowSelectorAlg.h:83
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CP::NLargeRJetMassWindowSelectorAlg::m_veto
Gaudi::Property< bool > m_veto
whether to veto events instead of selecting them
Definition: NLargeRJetMassWindowSelectorAlg.h:54
CP::NLargeRJetMassWindowSelectorAlg::m_eventInfoHandle
CP::SysReadHandle< xAOD::EventInfo > m_eventInfoHandle
the event info handle
Definition: NLargeRJetMassWindowSelectorAlg.h:73
EL
This module defines the arguments passed from the BATCH driver to the BATCH worker.
Definition: AlgorithmWorkerData.h:24
SignEnum::checkValue
bool checkValue(T reference, ComparisonOperator sign, T test)
the comparison test given the specified sign and two test values
Definition: SignEnums.h:35
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
CP::NLargeRJetMassWindowSelectorAlg::m_preselection
CP::SysReadSelectionHandle m_preselection
the preselection
Definition: NLargeRJetMassWindowSelectorAlg.h:78
CP::NLargeRJetMassWindowSelectorAlg::m_sign
Gaudi::Property< std::string > m_sign
the sign against which to compare Mass (GT, LT, etc)
Definition: NLargeRJetMassWindowSelectorAlg.h:48
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CP::NLargeRJetMassWindowSelectorAlg::m_ljetSelection
CP::SysReadSelectionHandle m_ljetSelection
the large-R jet selection
Definition: NLargeRJetMassWindowSelectorAlg.h:68
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
CP::SysReadSelectionHandle::initialize
StatusCode initialize(SysListHandle &sysListHandle, const ISysHandleBase &objectHandle)
initialize the accessor
Definition: SysReadSelectionHandle.cxx:34
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
CP::SysWriteSelectionHandle::initialize
StatusCode initialize(SysListHandle &sysListHandle, const ISysHandleBase &objectHandle)
initialize the accessor
Definition: SysWriteSelectionHandle.cxx:34