ATLAS Offline Software
AsgNumDecorationSelectionTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ASG_ANALYSIS_ALGORITHMS__ASG_NUM_DECORATION_SELECTION_TOOL_H
6 #define ASG_ANALYSIS_ALGORITHMS__ASG_NUM_DECORATION_SELECTION_TOOL_H
7 
8 #include <AsgTools/AsgTool.h>
13 #include <memory>
14 #include <typeinfo>
15 
16 #include <xAODBase/IParticle.h>
17 
18 namespace CP
19 {
22 
23  template <typename T>
25  : public asg::AsgTool, public virtual IAsgSelectionTool
26  {
27  public:
28  #ifndef XAOD_STANDALONE
29  AsgNumDecorationSelectionTool(const std::string& type,
30  const std::string& myname,
31  const IInterface* parent);
33  #else
34  AsgNumDecorationSelectionTool(const std::string& myname);
35  #endif
36 
37  virtual StatusCode initialize() override;
38  virtual const asg::AcceptInfo& getAcceptInfo() const override;
39  virtual asg::AcceptData accept(const xAOD::IParticle *particle) const override;
40 
41  private:
42  // Helper function to generate type-dependent default name
43  static std::string getDefaultDecorationName() {
44  std::string typeName = typeid(T).name();
45  return "dummy_" + typeName;
46  }
47 
48  Gaudi::Property<std::string> m_name {this, "decorationName", getDefaultDecorationName(), "name of the decoration on which the cuts are applied"};
49  Gaudi::Property<bool> m_doEqual {this, "doEqual", false, "require to equal a value"};
50  Gaudi::Property<bool> m_doMin {this, "doMin", false, "require a min value"};
51  Gaudi::Property<bool> m_doMax {this, "doMax", false, "require a max value"};
52  Gaudi::Property<float> m_equal {this, "equal", 0.0f, "equal value to require"};
53  Gaudi::Property<float> m_min {this, "min", 0.0f, "minimum value to require"};
54  Gaudi::Property<float> m_max {this, "max", 0.0f, "maximum value to require"};
55 
56  int m_equalCutIndex{ -1 };
57  int m_minCutIndex{ -1 };
58  int m_maxCutIndex{ -1 };
59 
60  std::unique_ptr<SG::ConstAccessor<T>> m_accessor;
61 
63  };
64 
66  : public AsgNumDecorationSelectionTool<int>
67  {
68  public:
69  #ifndef XAOD_STANDALONE
70  AsgNumDecorationSelectionToolInt(const std::string& type,
71  const std::string& myname,
72  const IInterface* parent);
73  #else
74  AsgNumDecorationSelectionToolInt(const std::string& myname);
75  #endif
76  };
77 
79  : public AsgNumDecorationSelectionTool<uint8_t>
80  {
81  public:
82  #ifndef XAOD_STANDALONE
83  AsgNumDecorationSelectionToolUInt8(const std::string& type,
84  const std::string& myname,
85  const IInterface* parent);
86  #else
87  AsgNumDecorationSelectionToolUInt8(const std::string& myname);
88  #endif
89  };
90 }
91 
92 #endif
CP::AsgNumDecorationSelectionToolUInt8::AsgNumDecorationSelectionToolUInt8
AsgNumDecorationSelectionToolUInt8(const std::string &type, const std::string &myname, const IInterface *parent)
Definition: AsgNumDecorationSelectionTool.cxx:110
CP::AsgNumDecorationSelectionTool::m_doMax
Gaudi::Property< bool > m_doMax
Definition: AsgNumDecorationSelectionTool.h:51
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
CP::AsgNumDecorationSelectionToolInt::AsgNumDecorationSelectionToolInt
AsgNumDecorationSelectionToolInt(const std::string &type, const std::string &myname, const IInterface *parent)
Definition: AsgNumDecorationSelectionTool.cxx:103
CP::AsgNumDecorationSelectionTool
a templated IAsgSelectionTool that performs basic cut on numerical decorations (e....
Definition: AsgNumDecorationSelectionTool.h:26
CP::AsgNumDecorationSelectionTool::~AsgNumDecorationSelectionTool
virtual ~AsgNumDecorationSelectionTool()
Definition: AsgNumDecorationSelectionTool.cxx:20
IParticle.h
CP::AsgNumDecorationSelectionTool::m_accept
asg::AcceptInfo m_accept
Definition: AsgNumDecorationSelectionTool.h:62
CP::AsgNumDecorationSelectionTool::m_equal
Gaudi::Property< float > m_equal
Definition: AsgNumDecorationSelectionTool.h:52
CP::AsgNumDecorationSelectionTool::m_accessor
std::unique_ptr< SG::ConstAccessor< T > > m_accessor
Definition: AsgNumDecorationSelectionTool.h:60
CP::AsgNumDecorationSelectionTool::m_doMin
Gaudi::Property< bool > m_doMin
Definition: AsgNumDecorationSelectionTool.h:50
CP::AsgNumDecorationSelectionTool::m_maxCutIndex
int m_maxCutIndex
Definition: AsgNumDecorationSelectionTool.h:58
IAsgSelectionTool
Definition: IAsgSelectionTool.h:28
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
IAsgSelectionTool.h
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:49
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
asg::AcceptInfo
Definition: AcceptInfo.h:28
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CP::AsgNumDecorationSelectionTool::AsgNumDecorationSelectionTool
AsgNumDecorationSelectionTool(const std::string &type, const std::string &myname, const IInterface *parent)
Definition: AsgNumDecorationSelectionTool.cxx:12
columnar::final
CM final
Definition: ColumnAccessor.h:106
CP::AsgNumDecorationSelectionTool::m_minCutIndex
int m_minCutIndex
Definition: AsgNumDecorationSelectionTool.h:57
StatusCode.h
CP::AsgNumDecorationSelectionTool::getAcceptInfo
virtual const asg::AcceptInfo & getAcceptInfo() const override
Declare the interface ID for this pure-virtual interface class to the Athena framework.
Definition: AsgNumDecorationSelectionTool.cxx:61
CP::AsgNumDecorationSelectionToolUInt8
Definition: AsgNumDecorationSelectionTool.h:80
CP::AsgNumDecorationSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *particle) const override
The main accept method: the actual cuts are applied here.
Definition: AsgNumDecorationSelectionTool.cxx:67
CP::AsgNumDecorationSelectionTool::getDefaultDecorationName
static std::string getDefaultDecorationName()
Definition: AsgNumDecorationSelectionTool.h:43
CP::AsgNumDecorationSelectionTool::m_min
Gaudi::Property< float > m_min
Definition: AsgNumDecorationSelectionTool.h:53
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
CP::AsgNumDecorationSelectionTool::m_equalCutIndex
int m_equalCutIndex
Definition: AsgNumDecorationSelectionTool.h:56
CP::AsgNumDecorationSelectionTool::m_doEqual
Gaudi::Property< bool > m_doEqual
Definition: AsgNumDecorationSelectionTool.h:49
CP::AsgNumDecorationSelectionTool::m_name
Gaudi::Property< std::string > m_name
Definition: AsgNumDecorationSelectionTool.h:48
CP::AsgNumDecorationSelectionToolInt
Definition: AsgNumDecorationSelectionTool.h:67
ReadCalibFromCool.typeName
typeName
Definition: ReadCalibFromCool.py:477
CP::AsgNumDecorationSelectionTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: AsgNumDecorationSelectionTool.cxx:32
CP::AsgNumDecorationSelectionTool::m_max
Gaudi::Property< float > m_max
Definition: AsgNumDecorationSelectionTool.h:54
AsgTool.h
asg::AcceptData
Definition: AcceptData.h:30
AuxElement.h
Base class for elements of a container that can have aux data.