ATLAS Offline Software
Loading...
Searching...
No Matches
EleMuSharedTrkOverlapTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ASSOCIATIONUTILS_SHAREDTRKOVERLAPTOOL_H
6#define ASSOCIATIONUTILS_SHAREDTRKOVERLAPTOOL_H
7
8// Framework includes
9#include "AsgTools/AsgTool.h"
10
11// EDM includes
16
17// Columnar includes
22
23// Local includes
27
28namespace ADD_CMODE(ORUtils)
29{
30
46 class EleMuSharedTrkOverlapTool : public virtual IOverlapTool,
47 public BaseOverlapTool
48 {
49
52
53 public:
54
56 EleMuSharedTrkOverlapTool(const std::string& name);
57
60 virtual StatusCode
61 findOverlaps(columnar::Particle1Range cont1,
63 columnar::EventContextId eventContext) const override;
64
66 StatusCode
67 internalFindOverlaps(columnar::Particle1Range electrons,
68 columnar::Particle2Range muons) const;
69
70 protected:
71
73 virtual StatusCode initializeDerived() override;
74
75 private:
76
77 //
78 // Configurable properties
79 //
80
82 bool m_removeCaloMuons;
83
85 bool m_useDRMatching;
87 float m_maxDR;
89 bool m_useRapidity;
90
91 //
92 // Utilities
93 //
94
97
99 struct Accessors final : columnar::ColumnarTool<>
100 {
101 columnar::Track0Accessor<columnar::ObjectColumn> m_track0Acc {*this, "InDetTrackParticles"};
102 columnar::Track1Accessor<columnar::ObjectColumn> m_track1Acc {*this, "InDetForwardTrackParticles"};
103 columnar::Track2Accessor<columnar::ObjectColumn> m_track2Acc {*this, "GSFTrackParticles"};
104 columnar::Particle1Accessor<std::vector<columnar::OptTrack2Id>> m_eleTrackAcc {*this, "trackParticleLinks"};
105 columnar::Particle2Accessor<columnar::ObjectLink<MyTrackDef>> m_muonTrkAcc {*this, "inDetTrackParticleLink"};
107 columnar::Track2Accessor<columnar::ObjectLink<MyTrackDef>> m_gsfOriginalTrackAcc {*this, "originalTrackParticle"};
108 using ColumnarTool::ColumnarTool;
109 };
110 std::unique_ptr<Accessors> m_accessors {std::make_unique<Accessors> (this)};
111
112 [[nodiscard]] columnar::ObjectLink<MyTrackDef> getOriginalTrackParticle(columnar::Particle1Id electron) const;
113
115 std::unique_ptr<DeltaRMatcher> m_dRMatcher;
116
117 }; // class EleMuSharedTrkOverlapTool
118
119} // namespace ADD_CMODE(ORUtils)
120
121#endif
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
the base class for all columnar components
AccessorTemplate< Particle1Def, CT, ColumnAccessMode::input, CM > Particle1Accessor
Definition ParticleDef.h:47
AccessorTemplate< Track0Def, CT, ColumnAccessMode::input, CM > Track0Accessor
Definition TrackDef.h:49
AccessorTemplate< Track2Def, CT, ColumnAccessMode::input, CM > Track2Accessor
Definition TrackDef.h:57
ObjectId< Particle1Def > Particle1Id
Definition ParticleDef.h:45
ObjectId< EventContextDef > EventContextId
AccessorTemplate< Particle2Def, CT, ColumnAccessMode::input, CM > Particle2Accessor
Definition ParticleDef.h:53
AccessorTemplate< Track1Def, CT, ColumnAccessMode::input, CM > Track1Accessor
Definition TrackDef.h:53
ObjectRange< Particle2Def > Particle2Range
Definition ParticleDef.h:50
ObjectRange< Particle1Def > Particle1Range
Definition ParticleDef.h:44
a "variant" ContainerId
Definition VariantDef.h:98