ATLAS Offline Software
Loading...
Searching...
No Matches
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
9namespace CP {
10
11 NLargeRJetMassWindowSelectorAlg::NLargeRJetMassWindowSelectorAlg(const std::string &name, ISvcLocator *pSvcLocator)
12 : EL::AnaAlgorithm(name, pSvcLocator)
13 {}
14
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) {
49 if (!m_ljetSelection || m_ljetSelection.getBool(*lj, sys)) {
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
#define ANA_CHECK(EXP)
check whether the given expression was successful
Gaudi::Property< float > m_mupper
the upper limit of the Mass window
CP::SysWriteSelectionHandle m_decoration
the output selection decoration
NLargeRJetMassWindowSelectorAlg(const std::string &name, ISvcLocator *pSvcLocator)
the standard constructor
Gaudi::Property< std::string > m_sign
the sign against which to compare Mass (GT, LT, etc)
CP::SysReadSelectionHandle m_preselection
the preselection
Gaudi::Property< int > m_count
the count of events desired
CP::SysListHandle m_systematicsList
the systematics
CP::SysReadHandle< xAOD::EventInfo > m_eventInfoHandle
the event info handle
CP::SysReadSelectionHandle m_ljetSelection
the large-R jet selection
Gaudi::Property< float > m_mlower
the lower limit of the Mass window
Gaudi::Property< bool > m_veto
whether to veto events instead of selecting them
SignEnum::ComparisonOperator m_signEnum
the operator version of the comparison (>, <, etc)
CP::SysReadHandle< xAOD::IParticleContainer > m_ljetsHandle
the large-R jet handle
AnaAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
constructor with parameters
Class providing the definition of the 4-vector interface.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146
Select isolated Photons, Electrons and Muons.
This module defines the arguments passed from the BATCH driver to the BATCH worker.
bool checkValue(T reference, ComparisonOperator sign, T test)
the comparison test given the specified sign and two test values
Definition SignEnums.h:37
static const std::map< std::string, ComparisonOperator > stringToOperator
the map between user inputs and comparison operators
Definition SignEnums.h:27
EventInfo_v1 EventInfo
Definition of the latest event info version.
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.