ATLAS Offline Software
Loading...
Searching...
No Matches
GepJetAlg Class Reference

#include <GepJetAlg.h>

Inheritance diagram for GepJetAlg:
Collaboration diagram for GepJetAlg:

Public Member Functions

 GepJetAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &) const override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode configureLRJMaker ()
template<typename Container, typename KinFn>
StatusCode loadLRJSeeds (const SG::ReadHandleKey< Container > &key, const EventContext &ctx, KinFn &&kin, std::vector< Gep::Jet > &seeds) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< std::string > m_jetAlgName
Gaudi::Property< bool > m_configureLRJMaker
SG::ReadHandleKey< xAOD::CaloClusterContainerm_caloClustersKey
SG::ReadHandleKey< xAOD::jFexSRJetRoIContainerm_jFexSRJetsKey
SG::WriteHandleKey< xAOD::JetContainerm_outputGepJetsKey
Gaudi::Property< float > m_WTAConstEtCut
Gaudi::Property< float > m_WTASeedEtCut
Gaudi::Property< float > m_WTAJet_dR
Gaudi::Property< unsigned int > m_WTAMaxConstN
Gaudi::Property< unsigned int > m_WTAMaxSeedSortingN
Gaudi::Property< unsigned int > m_WTABlockN
Gaudi::Property< std::string > m_WTASeedCleaningName
SG::ReadHandleKey< xAOD::JetContainerm_lrjWTAConeSeedsKey
SG::ReadHandleKey< xAOD::gFexJetRoIContainerm_lrjGFexSRJetsKey
Gaudi::Property< std::string > m_LRJSeedSource
Gaudi::Property< std::string > m_LRJConstSource
Gaudi::Property< unsigned int > m_LRJAlgoVersion
Gaudi::Property< float > m_LRJJetR
Gaudi::Property< float > m_LRJDSearch
Gaudi::Property< unsigned int > m_LRJNSeedsInput
Gaudi::Property< unsigned int > m_LRJNProtoSeeds
Gaudi::Property< unsigned int > m_LRJNSeedsOutput
Gaudi::Property< unsigned int > m_LRJMaxObjectsConsidered
Gaudi::Property< unsigned int > m_LRJEtBitLength
Gaudi::Property< unsigned int > m_LRJEtaBitLength
Gaudi::Property< unsigned int > m_LRJPhiBitLength
Gaudi::Property< unsigned int > m_LRJNumSubjetsLength
Gaudi::Property< unsigned int > m_LRJNSubjetinessBitLength
Gaudi::Property< unsigned int > m_LRJMassApproxBitLength
Gaudi::Property< unsigned int > m_LRJPsiRBitLength
Gaudi::Property< unsigned int > m_LRJDeltaRLutLength
Gaudi::Property< float > m_LRJPhiMin {this, "LRJPhiMin", -9999.0, "phi range minimum. -9999 inherits the preset."}
Gaudi::Property< float > m_LRJPhiMax {this, "LRJPhiMax", -9999.0, "phi range maximum. -9999 inherits the preset."}
Gaudi::Property< float > m_LRJEtaMin {this, "LRJEtaMin", -9999.0, "eta range minimum. -9999 inherits the preset."}
Gaudi::Property< float > m_LRJEtaMax {this, "LRJEtaMax", -9999.0, "eta range maximum. -9999 inherits the preset."}
Gaudi::Property< float > m_LRJEtMin {this, "LRJEtMin", -9999.0, "Et range minimum (GeV). -9999 inherits the preset."}
Gaudi::Property< float > m_LRJEtMax {this, "LRJEtMax", -9999.0, "Et range maximum (GeV). -9999 inherits the preset."}
Gaudi::Property< float > m_LRJMassApproxMax {this, "LRJMassApproxMax", -1.0, "massApprox range maximum (GeV). <=0 inherits the preset."}
Gaudi::Property< float > m_LRJInputEtToGeV {this, "LRJInputEtToGeV", -1.0, "Input Et (MeV) -> GeV scale. <=0 inherits the preset (1e-3)."}
Gaudi::Property< float > m_LRJSubjetEtThresholdGeV
Gaudi::Property< float > m_LRJMinEtSeedPosOptCutGeV
Gaudi::Property< float > m_LRJSeedEtCutGeV
Gaudi::Property< float > m_LRJConstEtCutGeV
Gaudi::Property< bool > m_LRJEnableOverlapRemoval
Gaudi::Property< bool > m_LRJEnableEtWeightedMidpoint
Gaudi::Property< bool > m_LRJMinEtSeedPosOptimization
Gaudi::Property< bool > m_LRJWriteSubstructure
Gaudi::Property< bool > m_LRJWriteSubjetKinematics
Gaudi::Property< bool > m_LRJWriteConstituentIndices
Gep::JetTaggerLRJMaker m_lrjMaker
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 35 of file GepJetAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ GepJetAlg()

GepJetAlg::GepJetAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 28 of file GepJetAlg.cxx.

28 :
29 AthReentrantAlgorithm( name, pSvcLocator ){
30
31}

Member Function Documentation

◆ configureLRJMaker()

StatusCode GepJetAlg::configureLRJMaker ( )
private

Definition at line 64 of file GepJetAlg.cxx.

64 {
65
66 // All JetTaggerLRJ settings are resolved in Python (GepJetTaggerLRJAlgCfg
67 // layers the BasicV2 / AdvancedV3 preset under any user overrides), so the
68 // properties are already concrete: copy them straight into the config.
69 Gep::JetTaggerLRJConfig cfg;
70 cfg.algoVersion = m_LRJAlgoVersion;
71
72 // Geometry.
73 cfg.r2Cut = static_cast<double>(m_LRJJetR) * static_cast<double>(m_LRJJetR);
74 cfg.rMergeCut = m_LRJDSearch;
75
76 // Multiplicities.
77 cfg.nSeedsInput = m_LRJNSeedsInput;
78 cfg.nProtoSeeds = m_LRJNProtoSeeds;
79 cfg.nSeedsOutput = m_LRJNSeedsOutput;
80 cfg.maxObjectsConsidered = m_LRJMaxObjectsConsidered;
81
82 // Digitization bit lengths.
83 cfg.et_bit_length = m_LRJEtBitLength;
84 cfg.eta_bit_length = m_LRJEtaBitLength;
85 cfg.phi_bit_length = m_LRJPhiBitLength;
86 cfg.num_subjets_length = m_LRJNumSubjetsLength;
87 cfg.N_subjetiness_bit_length = m_LRJNSubjetinessBitLength;
88 cfg.mass_approx_bit_length = m_LRJMassApproxBitLength;
89 cfg.psi_R_bit_length = m_LRJPsiRBitLength;
90 cfg.deltaR_lut_length = m_LRJDeltaRLutLength;
91
92 // Physical ranges.
93 cfg.phi_min = m_LRJPhiMin;
94 cfg.phi_max = m_LRJPhiMax;
95 cfg.eta_min = m_LRJEtaMin;
96 cfg.eta_max = m_LRJEtaMax;
97 cfg.et_min = m_LRJEtMin;
98 cfg.et_max = m_LRJEtMax;
99 cfg.massApprox_max = m_LRJMassApproxMax;
100 cfg.inputEtToGeV = m_LRJInputEtToGeV;
101
102 // Thresholds.
103 cfg.subjetEtThresholdGeV = m_LRJSubjetEtThresholdGeV;
104 cfg.minEtSeedPosOptCutGeV = m_LRJMinEtSeedPosOptCutGeV;
105
106 // Flow / output toggles.
107 cfg.enableOverlapRemoval = m_LRJEnableOverlapRemoval;
108 cfg.enableEtWeightedMidpoint = m_LRJEnableEtWeightedMidpoint;
109 cfg.minEtSeedPosOptimization = m_LRJMinEtSeedPosOptimization;
110 cfg.writeSubstructure = m_LRJWriteSubstructure;
111 cfg.writeSubjetKinematics = m_LRJWriteSubjetKinematics;
112 cfg.writeConstituentIndices = m_LRJWriteConstituentIndices;
113
114 // Digitization must be fully specified (Python supplies the preset); a zero
115 // in these fields means the algorithm was built without GepJetTaggerLRJAlgCfg,
116 // which would make computeDerived() produce nonsense granularities
117 if (cfg.et_bit_length == 0 || cfg.eta_bit_length == 0 ||
118 cfg.phi_bit_length == 0 || cfg.deltaR_lut_length == 0) {
119 ATH_MSG_ERROR("JetTaggerLRJ digitization not configured (et/eta/phi/deltaR "
120 "bit length is 0); configure it via GepJetTaggerLRJAlgCfg.");
121 return StatusCode::FAILURE;
122 }
123
124 // Fill derived constants and build the deltaR LUT once.
125 cfg.computeDerived();
126 m_lrjMaker.m_cfg = cfg;
127
128 // Seed source: resolve the string to an enum once (no silent fallback) and
129 // require the matching input collection to be configured. Doing this here, in
130 // initialize(), means a bad seed/key combination fails at configure time
131 // rather than mid-event.
132 if (m_LRJSeedSource == "WTACone") {
134 if (m_lrjWTAConeSeedsKey.key().empty()) {
135 ATH_MSG_ERROR("LRJSeedSource=WTACone requires LRJWTAConeSeedsKey to be set");
136 return StatusCode::FAILURE;
137 }
138 } else if (m_LRJSeedSource == "jFexSRJ") {
140 if (m_jFexSRJetsKey.key().empty()) {
141 ATH_MSG_ERROR("LRJSeedSource=jFexSRJ requires jFexSRJetRoIs to be set");
142 return StatusCode::FAILURE;
143 }
144 } else if (m_LRJSeedSource == "gFexSRJ") {
146 if (m_lrjGFexSRJetsKey.key().empty()) {
147 ATH_MSG_ERROR("LRJSeedSource=gFexSRJ requires LRJgFexSRJetRoIs to be set");
148 return StatusCode::FAILURE;
149 }
150 } else {
151 ATH_MSG_ERROR("Unknown LRJSeedSource '" << m_LRJSeedSource.value() << "'");
152 return StatusCode::FAILURE;
153 }
154
155 // Constituent source: same explicit resolution (no silent fallback).
156 if (m_LRJConstSource == "WTACone") {
158 } else if (m_LRJConstSource == "Towers") {
160 } else {
161 ATH_MSG_ERROR("Unknown LRJConstSource '" << m_LRJConstSource.value() << "'");
162 return StatusCode::FAILURE;
163 }
164
165 ATH_MSG_INFO("Configured JetTaggerLRJ (v" << cfg.algoVersion
166 << ", seed=" << m_LRJSeedSource.value()
167 << ", const=" << m_LRJConstSource.value()
168 << "): r2Cut=" << cfg.r2Cut << ", rMergeCut=" << cfg.rMergeCut
169 << ", deltaR LUT size=" << cfg.lutR_8b.size());
170
171 return StatusCode::SUCCESS;
172}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
Gaudi::Property< unsigned int > m_LRJEtBitLength
Definition GepJetAlg.h:132
Gaudi::Property< unsigned int > m_LRJNumSubjetsLength
Definition GepJetAlg.h:138
Gaudi::Property< float > m_LRJEtMax
Definition GepJetAlg.h:155
Gaudi::Property< bool > m_LRJWriteSubjetKinematics
Definition GepJetAlg.h:183
Gaudi::Property< float > m_LRJEtMin
Definition GepJetAlg.h:154
Gaudi::Property< float > m_LRJPhiMin
Definition GepJetAlg.h:150
Gaudi::Property< float > m_LRJInputEtToGeV
Definition GepJetAlg.h:157
Gaudi::Property< unsigned int > m_LRJNSeedsOutput
Definition GepJetAlg.h:125
Gaudi::Property< float > m_LRJPhiMax
Definition GepJetAlg.h:151
Gaudi::Property< bool > m_LRJMinEtSeedPosOptimization
Definition GepJetAlg.h:177
SG::ReadHandleKey< xAOD::jFexSRJetRoIContainer > m_jFexSRJetsKey
Definition GepJetAlg.h:56
Gaudi::Property< bool > m_LRJWriteConstituentIndices
Definition GepJetAlg.h:185
Gaudi::Property< unsigned int > m_LRJEtaBitLength
Definition GepJetAlg.h:134
Gaudi::Property< unsigned int > m_LRJNSeedsInput
Definition GepJetAlg.h:119
Gaudi::Property< unsigned int > m_LRJMassApproxBitLength
Definition GepJetAlg.h:142
SG::ReadHandleKey< xAOD::gFexJetRoIContainer > m_lrjGFexSRJetsKey
Definition GepJetAlg.h:94
Gaudi::Property< std::string > m_LRJSeedSource
Definition GepJetAlg.h:100
Gaudi::Property< unsigned int > m_LRJAlgoVersion
Definition GepJetAlg.h:107
Gaudi::Property< float > m_LRJEtaMax
Definition GepJetAlg.h:153
Gaudi::Property< unsigned int > m_LRJNSubjetinessBitLength
Definition GepJetAlg.h:140
Gaudi::Property< float > m_LRJSubjetEtThresholdGeV
Definition GepJetAlg.h:160
Gaudi::Property< unsigned int > m_LRJNProtoSeeds
Definition GepJetAlg.h:122
Gaudi::Property< float > m_LRJJetR
Definition GepJetAlg.h:111
Gaudi::Property< bool > m_LRJWriteSubstructure
Definition GepJetAlg.h:181
Gaudi::Property< bool > m_LRJEnableEtWeightedMidpoint
Definition GepJetAlg.h:175
Gaudi::Property< unsigned int > m_LRJPsiRBitLength
Definition GepJetAlg.h:144
Gaudi::Property< std::string > m_LRJConstSource
Definition GepJetAlg.h:103
Gaudi::Property< float > m_LRJMassApproxMax
Definition GepJetAlg.h:156
Gaudi::Property< bool > m_LRJEnableOverlapRemoval
Definition GepJetAlg.h:173
Gaudi::Property< float > m_LRJDSearch
Definition GepJetAlg.h:114
Gaudi::Property< float > m_LRJMinEtSeedPosOptCutGeV
Definition GepJetAlg.h:163
Gaudi::Property< unsigned int > m_LRJPhiBitLength
Definition GepJetAlg.h:136
Gep::JetTaggerLRJMaker m_lrjMaker
Definition GepJetAlg.h:189
Gaudi::Property< unsigned int > m_LRJDeltaRLutLength
Definition GepJetAlg.h:146
Gaudi::Property< float > m_LRJEtaMin
Definition GepJetAlg.h:152
Gaudi::Property< unsigned int > m_LRJMaxObjectsConsidered
Definition GepJetAlg.h:128
SG::ReadHandleKey< xAOD::JetContainer > m_lrjWTAConeSeedsKey
Definition GepJetAlg.h:90

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode GepJetAlg::execute ( const EventContext & context) const
overridevirtual

Definition at line 195 of file GepJetAlg.cxx.

195 {
196 ATH_MSG_DEBUG ("Executing " << name() << "...");
197
198
199 SG::WriteHandle<xAOD::JetContainer>
200 h_outputJets = SG::makeHandle(m_outputGepJetsKey, context);
201
202
203 CHECK(h_outputJets.record(std::make_unique<xAOD::JetContainer>(),
204 std::make_unique<xAOD::JetAuxContainer>()));
205
206 // read in clusters
207 auto h_caloClusters = SG::makeHandle(m_caloClustersKey, context);
208 CHECK(h_caloClusters.isValid());
209 ATH_MSG_DEBUG("Read in " << h_caloClusters->size() << " clusters");
210
211 const auto& clusters = *h_caloClusters;
212
213
214
215 std::vector<Gep::Cluster> gepClusters;
216 std::transform(clusters.cbegin(),
217 clusters.cend(),
218 std::back_inserter(gepClusters),
219 [](const auto& cluster){
220 Gep::Cluster c(cluster->p4());
221 // Keep the raw eta/phi (pre-TLorentzVector round-trip) so
222 // JetTaggerLRJ can digitize the same values the emulation reads.
223 c.etaInput = cluster->eta();
224 c.phiInput = cluster->phi();
225 return c;});
226
227
228
229 // create a jet maker
230 std::unique_ptr<Gep::IJetMaker> jetMaker{};
231
232
233 if ( m_jetAlgName=="ModAntikT" ) {
234 jetMaker.reset(new Gep::ModAntikTJetMaker());
235 }
236
237 else if ( m_jetAlgName=="Cone" ) {
238
239 // Use jJFexSR RoIs as seeds
240 auto h_seeds = SG::makeHandle(m_jFexSRJetsKey, context);
241 CHECK(h_seeds.isValid());
242 ATH_MSG_DEBUG("No of seeds "<< h_seeds->size());
243 jetMaker.reset(new Gep::ConeJetMaker(0.4, *h_seeds));
244
245 } else if(m_jetAlgName=="WTACone"){ // Large block for the WTACone
246
247 auto WTAConeJetMaker = std::make_unique<Gep::WTAConeJetMaker>(); // Default parameters for now
248
249 #ifdef FLOATING_POINT_SIMULATION
250 WTAConeJetMaker->m_GEPWTAParameters.SetConstEtCut(m_WTAConstEtCut * Athena::Units::GeV); // Set ConstEtCut to 2GeV
251 WTAConeJetMaker->m_GEPWTAParameters.SetSeedEtCut(m_WTASeedEtCut * Athena::Units::GeV); // Set SeedEtCut to 5GeV by default
252 WTAConeJetMaker->m_GEPWTAParameters.SetJet_dR(m_WTAJet_dR);
253 WTAConeJetMaker->m_GEPWTAParameters.SetIso_dR(m_WTAJet_dR); // Default is Jet_dR = Iso_dR
254 #else
255 // float to int/bitwise conversion
256 WTAConeJetMaker->m_GEPWTAParameters.SetConstEtCut(static_cast<unsigned int>(m_WTAConstEtCut * Athena::Units::GeV / LSB)); // Set ConstEtCut to 8 bits, LSB = 250 MeV
257 WTAConeJetMaker->m_GEPWTAParameters.SetSeedEtCut(static_cast<unsigned int>(m_WTASeedEtCut * Athena::Units::GeV / LSB)); // Set SeedEtCut to 20 bits by default
258 WTAConeJetMaker->m_GEPWTAParameters.SetJet_dR(static_cast<unsigned int>(m_WTAJet_dR * 10));
259 WTAConeJetMaker->m_GEPWTAParameters.SetIso_dR(static_cast<unsigned int>(m_WTAJet_dR * 10));
260 #endif
261
262 WTAConeJetMaker->m_GEPWTAParameters.SetMaxConstN(m_WTAMaxConstN);
263 WTAConeJetMaker->m_GEPWTAParameters.SetMaxSeedSortingN(m_WTAMaxSeedSortingN);
264 WTAConeJetMaker->SetBlockN(m_WTABlockN);
265
266 WTAConeJetMaker->SetSeedCleaningAlgo(0); // 0 = Baseline
267 if(m_WTASeedCleaningName=="TwoPass")WTAConeJetMaker->SetSeedCleaningAlgo(1); // 1 = TwoPass
268
269 jetMaker = std::move(WTAConeJetMaker);
270 } // WTACone loop, will be updated as the WTAConeJets
271 else if ( m_jetAlgName=="JetTaggerLRJ" ) {
272
273 // ------------------------------------------------------------------
274 // JetTaggerLRJ: modified seeded-cone large-R jet maker.
275 // ------------------------------------------------------------------
276
277 // ---- build seeds vector (Gep::Jet) ----
278 // Seed source is validated in initialize(); dispatch on the resolved enum.
279 // The sources differ only in the input collection and the (pt/et, mass)
280 // accessor, which each per-case lambda supplies to loadLRJSeeds().
281 std::vector<Gep::Jet> lrjSeeds;
282 switch (m_lrjMaker.GetSeedSource()) {
285 [](const xAOD::Jet* j) {
286 return std::tuple{j->pt(), j->eta(), j->phi(), j->m()};
287 }, lrjSeeds));
288 break;
291 [](const xAOD::jFexSRJetRoI* j) {
292 return std::tuple{static_cast<double>(j->et()), static_cast<double>(j->eta()), static_cast<double>(j->phi()), 0.0};
293 }, lrjSeeds));
294 break;
297 [](const xAOD::gFexJetRoI* j) {
298 return std::tuple{static_cast<double>(j->et()), static_cast<double>(j->eta()), static_cast<double>(j->phi()), 0.0};
299 }, lrjSeeds));
300 break;
301 }
302 ATH_MSG_DEBUG("JetTaggerLRJ loaded " << lrjSeeds.size() << " seeds ("
303 << m_LRJSeedSource.value() << ")");
304
305 // ---- build constituents vector (Gep::Cluster) ----
306 // Both "Towers" and "WTACone" constituent sources currently reuse the
307 // input m_caloClustersKey container; runConfig.py points it at the
308 // appropriate collection ("CellTower" or the WTACone output). When the
309 // two need to differ at run time the maker takes std::vector<Gep::Cluster>
310 // either way; adjust the wiring here without touching the maker.
311 const std::vector<Gep::Cluster>& lrjConstituents = gepClusters;
312
313 // Maker (and its deltaR LUT) is configured once in initialize().
314 std::vector<Gep::LargeRJet> lrjs = m_lrjMaker.makeLargeRJets(lrjSeeds, lrjConstituents);
315 ATH_MSG_DEBUG("JetTaggerLRJ produced " << lrjs.size() << " large-R jets");
316
317 if (!lrjs.empty()) {
318 for (const auto& lrj : lrjs) {
319 std::unique_ptr<xAOD::Jet> xAODJet{new xAOD::Jet()};
320 xAOD::Jet* p = xAODJet.get();
321 h_outputJets->push_back(std::move(xAODJet));
322
324 p4.SetPt (lrj.vec.Pt());
325 p4.SetEta(lrj.vec.Eta());
326 p4.SetPhi(lrj.vec.Phi());
327 p4.SetM (lrj.vec.M());
328 p->setJetP4(p4);
329
330 p->setAttribute("RCut", lrj.radius);
331 p->setAttribute("SeedEt", lrj.seedEt);
332 p->setAttribute("SeedEta", lrj.seedEta);
333 p->setAttribute("SeedPhi", lrj.seedPhi);
334 p->setAttribute("NSubjets", lrj.nSubjets);
335 p->setAttribute("Psi_R", lrj.psi_R);
336 p->setAttribute("Tau_1", lrj.tau_1);
337 p->setAttribute("Tau_2", lrj.tau_2);
338 p->setAttribute("Tau_21", lrj.tau_21);
339 p->setAttribute("MassApprox", lrj.massApprox);
340 // Per-subjet kinematics as indexed SCALAR attributes (SubjetEt0,
341 // SubjetEt1, ...). std::vector<float> jet attributes do not round-trip
342 // to the reader here (neither setAttribute nor auxdata), whereas
343 // scalar attributes do; the reader reads back NSubjets of them.
344 for (size_t is = 0; is < lrj.subjet_et.size(); ++is) {
345 const std::string s = std::to_string(is);
346 p->setAttribute(std::string("SubjetEt") + s, lrj.subjet_et[is]);
347 p->setAttribute(std::string("SubjetEta") + s, lrj.subjet_eta[is]);
348 p->setAttribute(std::string("SubjetPhi") + s, lrj.subjet_phi[is]);
349 }
350
351 // Attach constituents (indices into the input cluster container) so the
352 // reader's numConstituents()/getConstituents() populate, mirroring the
353 // generic maker path below.
354 for (const int i : lrj.constituentsIndices) {
355 p->addConstituent(clusters.at(i));
356 }
357 }
358 }
359 return StatusCode::SUCCESS;
360 }
361 else {
362 ATH_MSG_ERROR( "Unknown JetMaker " << m_jetAlgName);
363 return StatusCode::FAILURE;
364 }
365
366 ATH_MSG_DEBUG( "jet maker: " << jetMaker->toString());
367
368 std::vector<Gep::Jet> gepJets = jetMaker->makeJets( gepClusters );
369
370 ATH_MSG_DEBUG("Number of jets found for " <<
371 m_jetAlgName << " " <<gepJets.size());
372
373 // if no jets were found, skip event
374 if( gepJets.empty() ){
375 return StatusCode::SUCCESS;
376 }
377
378 // store gep jets in athena format
379 for(const auto& gjet: gepJets){
380
381 std::unique_ptr<xAOD::Jet> xAODJet{new xAOD::Jet()};
382 xAOD::Jet* p_xAODJet = xAODJet.get();
383
384 // store the xAOD::Jet in the output container to prepare the Aux container
385 // The move invalids the unique_ptr, but we still have the bare pointer
386 // which allows the updating of the xAODJet from the gep jet data.
387 h_outputJets->push_back(std::move(xAODJet));
388
390 p4.SetPt(gjet.vec.Pt());
391 p4.SetEta(gjet.vec.Eta());
392 p4.SetPhi(gjet.vec.Phi());
393 p4.SetM(gjet.vec.M());
394
395 p_xAODJet->setJetP4(p4);
396
397 p_xAODJet->setAttribute("RCut", gjet.radius);
398 p_xAODJet->setAttribute("SeedEta", gjet.seedEta); // < gep attributes
399 p_xAODJet->setAttribute("SeedPhi", gjet.seedPhi); //
400 p_xAODJet->setAttribute("SeedEt", gjet.seedEt); //
401 p_xAODJet->setAttribute("Ring0_Et", gjet.ring0_Et);
402 p_xAODJet->setAttribute("Ring1_Et", gjet.ring1_Et);
403 p_xAODJet->setAttribute("Ring2_Et", gjet.ring2_Et);
404 p_xAODJet->setAttribute("Ring3_Et", gjet.ring3_Et);
405 p_xAODJet->setAttribute("Ring4_Et", gjet.ring4_Et);
406 p_xAODJet->setAttribute("Total_TobN", gjet.total_TobN);
407 p_xAODJet->setAttribute("Ring0_TobN", gjet.ring0_TobN);
408 p_xAODJet->setAttribute("Ring1_TobN", gjet.ring1_TobN);
409 p_xAODJet->setAttribute("Ring2_TobN", gjet.ring2_TobN);
410 p_xAODJet->setAttribute("Ring3_TobN", gjet.ring3_TobN);
411 p_xAODJet->setAttribute("Ring4_TobN", gjet.ring4_TobN);
412
413 for (const auto& i: gjet.constituentsIndices) {
414 p_xAODJet->addConstituent(clusters.at(i));
415 }
416
417 }
418
419 return StatusCode::SUCCESS;
420}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.
StatusCode loadLRJSeeds(const SG::ReadHandleKey< Container > &key, const EventContext &ctx, KinFn &&kin, std::vector< Gep::Jet > &seeds) const
Gaudi::Property< float > m_WTAJet_dR
Definition GepJetAlg.h:70
Gaudi::Property< float > m_WTASeedEtCut
Definition GepJetAlg.h:67
Gaudi::Property< float > m_WTAConstEtCut
Definition GepJetAlg.h:64
Gaudi::Property< std::string > m_jetAlgName
Definition GepJetAlg.h:46
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClustersKey
Definition GepJetAlg.h:53
Gaudi::Property< std::string > m_WTASeedCleaningName
Definition GepJetAlg.h:82
Gaudi::Property< unsigned int > m_WTABlockN
Definition GepJetAlg.h:79
Gaudi::Property< unsigned int > m_WTAMaxConstN
Definition GepJetAlg.h:73
Gaudi::Property< unsigned int > m_WTAMaxSeedSortingN
Definition GepJetAlg.h:76
SG::WriteHandleKey< xAOD::JetContainer > m_outputGepJetsKey
Definition GepJetAlg.h:59
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
void setAttribute(const std::string &name, const T &v)
void addConstituent(const ElementLink< IParticleContainer > &link, float weight=1.0)
Add a constituent directly in the ElementLink format.
Definition Jet_v1.cxx:113
void setJetP4(const JetFourMom_t &p4)
Definition Jet_v1.cxx:182
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
Jet_v1 Jet
Definition of the current "jet version".
gFexJetRoI_v1 gFexJetRoI
Define the latest version of the gFexJetRoI class.
Definition gFexJetRoI.h:16
jFexSRJetRoI_v1 jFexSRJetRoI
Define the latest version of the jFexSRJetRoI class.
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition JetTypes.h:17

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ initialize()

StatusCode GepJetAlg::initialize ( )
overridevirtual

Definition at line 34 of file GepJetAlg.cxx.

34 {
35 ATH_MSG_INFO ("Initializing " << name() << "...");
36 ATH_MSG_INFO ("Jet alg " << m_jetAlgName);
37
38 // Initialize data access keys
39 CHECK(m_caloClustersKey.initialize());
40 CHECK(m_jFexSRJetsKey.initialize());
41 CHECK(m_outputGepJetsKey.initialize());
42
44 CHECK(m_lrjGFexSRJetsKey.initialize(!m_lrjGFexSRJetsKey.empty()));
45
46 // Build the JetTaggerLRJ configuration (and its deltaR LUT) once, so it is
47 // not recomputed per event. Gated on an explicit property (set by
48 // GepJetTaggerLRJAlgCfg) rather than the mode string; guard that the two
49 // agree so a misconfiguration fails loudly instead of silently skipping.
50 if (m_configureLRJMaker != (m_jetAlgName == "JetTaggerLRJ")) {
51 ATH_MSG_ERROR("EnableLRJMaker (" << m_configureLRJMaker.value()
52 << ") is inconsistent with jetAlgName '" << m_jetAlgName.value()
53 << "'; both must select JetTaggerLRJ together.");
54 return StatusCode::FAILURE;
55 }
58 }
59
60 return StatusCode::SUCCESS;
61}
StatusCode configureLRJMaker()
Definition GepJetAlg.cxx:64
Gaudi::Property< bool > m_configureLRJMaker
Definition GepJetAlg.h:49

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ loadLRJSeeds()

template<typename Container, typename KinFn>
StatusCode GepJetAlg::loadLRJSeeds ( const SG::ReadHandleKey< Container > & key,
const EventContext & ctx,
KinFn && kin,
std::vector< Gep::Jet > & seeds ) const
private

Definition at line 176 of file GepJetAlg.cxx.

179 {
180 auto h = SG::makeHandle(key, ctx);
181 CHECK(h.isValid());
182 seeds.reserve(seeds.size() + h->size());
183 for (const auto* j : *h) {
184 const auto [pt, eta, phi, m] = kin(j);
185 Gep::Jet s;
186 s.vec.SetPtEtaPhiM(pt, eta, phi, m);
187 s.etaInput = eta; // raw, pre-round-trip (see Jet.h / JetTaggerLRJ)
188 s.phiInput = phi;
189 seeds.push_back(std::move(s));
190 }
191 return StatusCode::SUCCESS;
192}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
#define ATH_MSG_WARNING(x)
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_caloClustersKey

SG::ReadHandleKey< xAOD::CaloClusterContainer> GepJetAlg::m_caloClustersKey
private
Initial value:
{
this, "caloClustersKey", "", "key to read in a CaloCluster constainer"}

Definition at line 53 of file GepJetAlg.h.

53 {
54 this, "caloClustersKey", "", "key to read in a CaloCluster constainer"};

◆ m_configureLRJMaker

Gaudi::Property<bool> GepJetAlg::m_configureLRJMaker
private
Initial value:
{this, "EnableLRJMaker", false,
"Build and configure the JetTaggerLRJ maker in initialize(). Set by "
"GepJetTaggerLRJAlgCfg; must agree with jetAlgName == 'JetTaggerLRJ'."}

Definition at line 49 of file GepJetAlg.h.

49 {this, "EnableLRJMaker", false,
50 "Build and configure the JetTaggerLRJ maker in initialize(). Set by "
51 "GepJetTaggerLRJAlgCfg; must agree with jetAlgName == 'JetTaggerLRJ'."};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_jetAlgName

Gaudi::Property<std::string> GepJetAlg::m_jetAlgName
private
Initial value:
{this, "jetAlgName", "",
"Gep jet alg idenfifier"}

Definition at line 46 of file GepJetAlg.h.

46 {this, "jetAlgName", "",
47 "Gep jet alg idenfifier"};

◆ m_jFexSRJetsKey

SG::ReadHandleKey<xAOD::jFexSRJetRoIContainer> GepJetAlg::m_jFexSRJetsKey
private
Initial value:
{
this, "jFexSRJetRoIs", "L1_jFexSRJetRoISim", "key to read a L1 jet container"}

Definition at line 56 of file GepJetAlg.h.

56 {
57 this, "jFexSRJetRoIs", "L1_jFexSRJetRoISim", "key to read a L1 jet container"};

◆ m_LRJAlgoVersion

Gaudi::Property<unsigned int> GepJetAlg::m_LRJAlgoVersion
private
Initial value:
{this, "LRJAlgoVersion", 3,
"Algorithm variant / preset: 2 = basic (BasicV2), 3 = advanced (AdvancedV3)."}

Definition at line 107 of file GepJetAlg.h.

107 {this, "LRJAlgoVersion", 3,
108 "Algorithm variant / preset: 2 = basic (BasicV2), 3 = advanced (AdvancedV3)."};

◆ m_LRJConstEtCutGeV

Gaudi::Property<float> GepJetAlg::m_LRJConstEtCutGeV
private
Initial value:
{this, "LRJConstEtCutGeV", 2.0,
"Minimum constituent Et in GeV (reserved; not yet applied)."}

Definition at line 169 of file GepJetAlg.h.

169 {this, "LRJConstEtCutGeV", 2.0,
170 "Minimum constituent Et in GeV (reserved; not yet applied)."};

◆ m_LRJConstSource

Gaudi::Property<std::string> GepJetAlg::m_LRJConstSource
private
Initial value:
{this, "LRJConstSource", "Towers",
"Source of JetTaggerLRJ constituents. Options: Towers, WTACone"}

Definition at line 103 of file GepJetAlg.h.

103 {this, "LRJConstSource", "Towers",
104 "Source of JetTaggerLRJ constituents. Options: Towers, WTACone"};

◆ m_LRJDeltaRLutLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJDeltaRLutLength
private
Initial value:
{this, "LRJDeltaRLutLength", 0,
"deltaR granularity bit length. 0 inherits the preset."}

Definition at line 146 of file GepJetAlg.h.

146 {this, "LRJDeltaRLutLength", 0,
147 "deltaR granularity bit length. 0 inherits the preset."};

◆ m_LRJDSearch

Gaudi::Property<float> GepJetAlg::m_LRJDSearch
private
Initial value:
{this, "LRJDSearch", 2.0,
"Seed-position-optimization search distance (rMergeCut); ignored when v2 (basic). "
"Default 2.0. <0 inherits the preset (which is 0.001/disabled for basic)."}

Definition at line 114 of file GepJetAlg.h.

114 {this, "LRJDSearch", 2.0,
115 "Seed-position-optimization search distance (rMergeCut); ignored when v2 (basic). "
116 "Default 2.0. <0 inherits the preset (which is 0.001/disabled for basic)."};

◆ m_LRJEnableEtWeightedMidpoint

Gaudi::Property<bool> GepJetAlg::m_LRJEnableEtWeightedMidpoint
private
Initial value:
{this, "LRJEnableEtWeightedMidpoint", false,
"Use Et-weighted midpoint in seed-position optimization."}

Definition at line 175 of file GepJetAlg.h.

175 {this, "LRJEnableEtWeightedMidpoint", false,
176 "Use Et-weighted midpoint in seed-position optimization."};

◆ m_LRJEnableOverlapRemoval

Gaudi::Property<bool> GepJetAlg::m_LRJEnableOverlapRemoval
private
Initial value:
{this, "LRJEnableOverlapRemoval", true,
"Enable overlap removal between the leading two seeds (advanced only)."}

Definition at line 173 of file GepJetAlg.h.

173 {this, "LRJEnableOverlapRemoval", true,
174 "Enable overlap removal between the leading two seeds (advanced only)."};

◆ m_LRJEtaBitLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJEtaBitLength
private
Initial value:
{this, "LRJEtaBitLength", 0,
"Eta field bit length. 0 inherits the preset."}

Definition at line 134 of file GepJetAlg.h.

134 {this, "LRJEtaBitLength", 0,
135 "Eta field bit length. 0 inherits the preset."};

◆ m_LRJEtaMax

Gaudi::Property<float> GepJetAlg::m_LRJEtaMax {this, "LRJEtaMax", -9999.0, "eta range maximum. -9999 inherits the preset."}
private

Definition at line 153 of file GepJetAlg.h.

153{this, "LRJEtaMax", -9999.0, "eta range maximum. -9999 inherits the preset."};

◆ m_LRJEtaMin

Gaudi::Property<float> GepJetAlg::m_LRJEtaMin {this, "LRJEtaMin", -9999.0, "eta range minimum. -9999 inherits the preset."}
private

Definition at line 152 of file GepJetAlg.h.

152{this, "LRJEtaMin", -9999.0, "eta range minimum. -9999 inherits the preset."};

◆ m_LRJEtBitLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJEtBitLength
private
Initial value:
{this, "LRJEtBitLength", 0,
"Et field bit length. 0 inherits the preset."}

Definition at line 132 of file GepJetAlg.h.

132 {this, "LRJEtBitLength", 0,
133 "Et field bit length. 0 inherits the preset."};

◆ m_LRJEtMax

Gaudi::Property<float> GepJetAlg::m_LRJEtMax {this, "LRJEtMax", -9999.0, "Et range maximum (GeV). -9999 inherits the preset."}
private

Definition at line 155 of file GepJetAlg.h.

155{this, "LRJEtMax", -9999.0, "Et range maximum (GeV). -9999 inherits the preset."};

◆ m_LRJEtMin

Gaudi::Property<float> GepJetAlg::m_LRJEtMin {this, "LRJEtMin", -9999.0, "Et range minimum (GeV). -9999 inherits the preset."}
private

Definition at line 154 of file GepJetAlg.h.

154{this, "LRJEtMin", -9999.0, "Et range minimum (GeV). -9999 inherits the preset."};

◆ m_lrjGFexSRJetsKey

SG::ReadHandleKey<xAOD::gFexJetRoIContainer> GepJetAlg::m_lrjGFexSRJetsKey
private
Initial value:
{
this, "LRJgFexSRJetRoIs", "L1_gFexSRJetRoISim",
"gFEX small-R jet RoIs used as JetTaggerLRJ seeds."}

Definition at line 94 of file GepJetAlg.h.

94 {
95 this, "LRJgFexSRJetRoIs", "L1_gFexSRJetRoISim",
96 "gFEX small-R jet RoIs used as JetTaggerLRJ seeds."};

◆ m_LRJInputEtToGeV

Gaudi::Property<float> GepJetAlg::m_LRJInputEtToGeV {this, "LRJInputEtToGeV", -1.0, "Input Et (MeV) -> GeV scale. <=0 inherits the preset (1e-3)."}
private

Definition at line 157 of file GepJetAlg.h.

157{this, "LRJInputEtToGeV", -1.0, "Input Et (MeV) -> GeV scale. <=0 inherits the preset (1e-3)."};

◆ m_LRJJetR

Gaudi::Property<float> GepJetAlg::m_LRJJetR
private
Initial value:
{this, "LRJJetR", 1.1,
"Large-R jet cone radius; r2Cut = LRJJetR^2. Default 1.1 (r2Cut=1.21). <=0 inherits the preset."}

Definition at line 111 of file GepJetAlg.h.

111 {this, "LRJJetR", 1.1,
112 "Large-R jet cone radius; r2Cut = LRJJetR^2. Default 1.1 (r2Cut=1.21). <=0 inherits the preset."};

◆ m_lrjMaker

Gep::JetTaggerLRJMaker GepJetAlg::m_lrjMaker
private

Definition at line 189 of file GepJetAlg.h.

◆ m_LRJMassApproxBitLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJMassApproxBitLength
private
Initial value:
{this, "LRJMassApproxBitLength", 0,
"massApprox field bit length. 0 inherits the preset."}

Definition at line 142 of file GepJetAlg.h.

142 {this, "LRJMassApproxBitLength", 0,
143 "massApprox field bit length. 0 inherits the preset."};

◆ m_LRJMassApproxMax

Gaudi::Property<float> GepJetAlg::m_LRJMassApproxMax {this, "LRJMassApproxMax", -1.0, "massApprox range maximum (GeV). <=0 inherits the preset."}
private

Definition at line 156 of file GepJetAlg.h.

156{this, "LRJMassApproxMax", -1.0, "massApprox range maximum (GeV). <=0 inherits the preset."};

◆ m_LRJMaxObjectsConsidered

Gaudi::Property<unsigned int> GepJetAlg::m_LRJMaxObjectsConsidered
private
Initial value:
{this, "LRJMaxObjectsConsidered", 0,
"Maximum number of constituents to load per event. 0 inherits the preset."}

Definition at line 128 of file GepJetAlg.h.

128 {this, "LRJMaxObjectsConsidered", 0,
129 "Maximum number of constituents to load per event. 0 inherits the preset."};

◆ m_LRJMinEtSeedPosOptCutGeV

Gaudi::Property<float> GepJetAlg::m_LRJMinEtSeedPosOptCutGeV
private
Initial value:
{this, "LRJMinEtSeedPosOptCutGeV", -1.0,
"Minimum proto-seed Et (GeV) for seed-position optimization. <0 inherits the preset."}

Definition at line 163 of file GepJetAlg.h.

163 {this, "LRJMinEtSeedPosOptCutGeV", -1.0,
164 "Minimum proto-seed Et (GeV) for seed-position optimization. <0 inherits the preset."};

◆ m_LRJMinEtSeedPosOptimization

Gaudi::Property<bool> GepJetAlg::m_LRJMinEtSeedPosOptimization
private
Initial value:
{this, "LRJMinEtSeedPosOptimization", true,
"Apply the minimum proto-seed Et cut in seed-position optimization."}

Definition at line 177 of file GepJetAlg.h.

177 {this, "LRJMinEtSeedPosOptimization", true,
178 "Apply the minimum proto-seed Et cut in seed-position optimization."};

◆ m_LRJNProtoSeeds

Gaudi::Property<unsigned int> GepJetAlg::m_LRJNProtoSeeds
private
Initial value:
{this, "LRJNProtoSeeds", 0,
"Number of proto-seeds for seed-position optimization. 0 inherits the preset."}

Definition at line 122 of file GepJetAlg.h.

122 {this, "LRJNProtoSeeds", 0,
123 "Number of proto-seeds for seed-position optimization. 0 inherits the preset."};

◆ m_LRJNSeedsInput

Gaudi::Property<unsigned int> GepJetAlg::m_LRJNSeedsInput
private
Initial value:
{this, "LRJNSeedsInput", 0,
"Number of input seeds considered per event. 0 inherits the preset."}

Definition at line 119 of file GepJetAlg.h.

119 {this, "LRJNSeedsInput", 0,
120 "Number of input seeds considered per event. 0 inherits the preset."};

◆ m_LRJNSeedsOutput

Gaudi::Property<unsigned int> GepJetAlg::m_LRJNSeedsOutput
private
Initial value:
{this, "LRJNSeedsOutput", 0,
"Number of output LRJs per event (typically 2). 0 inherits the preset."}

Definition at line 125 of file GepJetAlg.h.

125 {this, "LRJNSeedsOutput", 0,
126 "Number of output LRJs per event (typically 2). 0 inherits the preset."};

◆ m_LRJNSubjetinessBitLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJNSubjetinessBitLength
private
Initial value:
{this, "LRJNSubjetinessBitLength", 0,
"tau_1 / tau_2 field bit length. 0 inherits the preset."}

Definition at line 140 of file GepJetAlg.h.

140 {this, "LRJNSubjetinessBitLength", 0,
141 "tau_1 / tau_2 field bit length. 0 inherits the preset."};

◆ m_LRJNumSubjetsLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJNumSubjetsLength
private
Initial value:
{this, "LRJNumSubjetsLength", 0,
"n-subjets field bit length. 0 inherits the preset."}

Definition at line 138 of file GepJetAlg.h.

138 {this, "LRJNumSubjetsLength", 0,
139 "n-subjets field bit length. 0 inherits the preset."};

◆ m_LRJPhiBitLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJPhiBitLength
private
Initial value:
{this, "LRJPhiBitLength", 0,
"Phi field bit length. 0 inherits the preset."}

Definition at line 136 of file GepJetAlg.h.

136 {this, "LRJPhiBitLength", 0,
137 "Phi field bit length. 0 inherits the preset."};

◆ m_LRJPhiMax

Gaudi::Property<float> GepJetAlg::m_LRJPhiMax {this, "LRJPhiMax", -9999.0, "phi range maximum. -9999 inherits the preset."}
private

Definition at line 151 of file GepJetAlg.h.

151{this, "LRJPhiMax", -9999.0, "phi range maximum. -9999 inherits the preset."};

◆ m_LRJPhiMin

Gaudi::Property<float> GepJetAlg::m_LRJPhiMin {this, "LRJPhiMin", -9999.0, "phi range minimum. -9999 inherits the preset."}
private

Definition at line 150 of file GepJetAlg.h.

150{this, "LRJPhiMin", -9999.0, "phi range minimum. -9999 inherits the preset."};

◆ m_LRJPsiRBitLength

Gaudi::Property<unsigned int> GepJetAlg::m_LRJPsiRBitLength
private
Initial value:
{this, "LRJPsiRBitLength", 0,
"psi_R / deltaR-LUT field bit length. 0 inherits the preset."}

Definition at line 144 of file GepJetAlg.h.

144 {this, "LRJPsiRBitLength", 0,
145 "psi_R / deltaR-LUT field bit length. 0 inherits the preset."};

◆ m_LRJSeedEtCutGeV

Gaudi::Property<float> GepJetAlg::m_LRJSeedEtCutGeV
private
Initial value:
{this, "LRJSeedEtCutGeV", 5.0,
"Minimum seed Et in GeV (reserved; not yet applied)."}

Definition at line 167 of file GepJetAlg.h.

167 {this, "LRJSeedEtCutGeV", 5.0,
168 "Minimum seed Et in GeV (reserved; not yet applied)."};

◆ m_LRJSeedSource

Gaudi::Property<std::string> GepJetAlg::m_LRJSeedSource
private
Initial value:
{this, "LRJSeedSource", "WTACone",
"Source of JetTaggerLRJ seeds. Options: WTACone, jFexSRJ, gFexSRJ"}

Definition at line 100 of file GepJetAlg.h.

100 {this, "LRJSeedSource", "WTACone",
101 "Source of JetTaggerLRJ seeds. Options: WTACone, jFexSRJ, gFexSRJ"};

◆ m_LRJSubjetEtThresholdGeV

Gaudi::Property<float> GepJetAlg::m_LRJSubjetEtThresholdGeV
private
Initial value:
{this, "LRJSubjetEtThresholdGeV", -1.0,
"Minimum subjet Et (GeV) for counting nSubjets. <0 inherits the preset."}

Definition at line 160 of file GepJetAlg.h.

160 {this, "LRJSubjetEtThresholdGeV", -1.0,
161 "Minimum subjet Et (GeV) for counting nSubjets. <0 inherits the preset."};

◆ m_LRJWriteConstituentIndices

Gaudi::Property<bool> GepJetAlg::m_LRJWriteConstituentIndices
private
Initial value:
{this, "LRJWriteConstituentIndices", true,
"Fill constituentsIndices / mergedIndices on the output LRJ."}

Definition at line 185 of file GepJetAlg.h.

185 {this, "LRJWriteConstituentIndices", true,
186 "Fill constituentsIndices / mergedIndices on the output LRJ."};

◆ m_LRJWriteSubjetKinematics

Gaudi::Property<bool> GepJetAlg::m_LRJWriteSubjetKinematics
private
Initial value:
{this, "LRJWriteSubjetKinematics", true,
"Fill per-subjet (et, eta, phi) vectors on the output LRJ."}

Definition at line 183 of file GepJetAlg.h.

183 {this, "LRJWriteSubjetKinematics", true,
184 "Fill per-subjet (et, eta, phi) vectors on the output LRJ."};

◆ m_LRJWriteSubstructure

Gaudi::Property<bool> GepJetAlg::m_LRJWriteSubstructure
private
Initial value:
{this, "LRJWriteSubstructure", true,
"Fill psi_R / tau_1 / tau_2 / massApprox / nSubjets on the output LRJ."}

Definition at line 181 of file GepJetAlg.h.

181 {this, "LRJWriteSubstructure", true,
182 "Fill psi_R / tau_1 / tau_2 / massApprox / nSubjets on the output LRJ."};

◆ m_lrjWTAConeSeedsKey

SG::ReadHandleKey<xAOD::JetContainer> GepJetAlg::m_lrjWTAConeSeedsKey
private
Initial value:
{
this, "LRJWTAConeSeedsKey", "",
"WTACone small-R jets used as JetTaggerLRJ seeds (xAOD::JetContainer)."}

Definition at line 90 of file GepJetAlg.h.

90 {
91 this, "LRJWTAConeSeedsKey", "",
92 "WTACone small-R jets used as JetTaggerLRJ seeds (xAOD::JetContainer)."};

◆ m_outputGepJetsKey

SG::WriteHandleKey<xAOD::JetContainer> GepJetAlg::m_outputGepJetsKey
private
Initial value:
{
this, "outputJetsKey", "",
"key for xAOD:Jet wrappers for GepJets"}

Definition at line 59 of file GepJetAlg.h.

59 {
60 this, "outputJetsKey", "",
61 "key for xAOD:Jet wrappers for GepJets"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_WTABlockN

Gaudi::Property<unsigned int> GepJetAlg::m_WTABlockN
private
Initial value:
{this, "WTABlockN", 4,
"Number of blocks to divide the input towers into for parallel processing. Options: 1, 4"}

Definition at line 79 of file GepJetAlg.h.

79 {this, "WTABlockN", 4,
80 "Number of blocks to divide the input towers into for parallel processing. Options: 1, 4"};

◆ m_WTAConstEtCut

Gaudi::Property<float> GepJetAlg::m_WTAConstEtCut
private
Initial value:
{this, "WTAConstEtCut", 2.0,
"Minimum Et for a tower to be considered as a constituent"}

Definition at line 64 of file GepJetAlg.h.

64 {this, "WTAConstEtCut", 2.0,
65 "Minimum Et for a tower to be considered as a constituent"};

◆ m_WTAJet_dR

Gaudi::Property<float> GepJetAlg::m_WTAJet_dR
private
Initial value:
{this, "WTAJet_dR", 0.4,
"Jet radius to determine TOB-Jet association"}

Definition at line 70 of file GepJetAlg.h.

70 {this, "WTAJet_dR", 0.4,
71 "Jet radius to determine TOB-Jet association"};

◆ m_WTAMaxConstN

Gaudi::Property<unsigned int> GepJetAlg::m_WTAMaxConstN
private
Initial value:
{this, "WTAMaxConstN", 205,
"Maximum number of constituents per jet"}

Definition at line 73 of file GepJetAlg.h.

73 {this, "WTAMaxConstN", 205,
74 "Maximum number of constituents per jet"};

◆ m_WTAMaxSeedSortingN

Gaudi::Property<unsigned int> GepJetAlg::m_WTAMaxSeedSortingN
private
Initial value:
{this, "WTAMaxSeedSortingN", 50,
"Maximum number of seeds to sort"}

Definition at line 76 of file GepJetAlg.h.

76 {this, "WTAMaxSeedSortingN", 50,
77 "Maximum number of seeds to sort"};

◆ m_WTASeedCleaningName

Gaudi::Property<std::string> GepJetAlg::m_WTASeedCleaningName
private
Initial value:
{this, "WTASeedCleaningName", "TwoPass",
"Seed cleaning algorithm to use. Options: Baseline, TwoPass"}

Definition at line 82 of file GepJetAlg.h.

82 {this, "WTASeedCleaningName", "TwoPass",
83 "Seed cleaning algorithm to use. Options: Baseline, TwoPass"};

◆ m_WTASeedEtCut

Gaudi::Property<float> GepJetAlg::m_WTASeedEtCut
private
Initial value:
{this, "WTASeedEtCut", 5.0,
"Minimum Et for a tower to be considered as a seed"}

Definition at line 67 of file GepJetAlg.h.

67 {this, "WTASeedEtCut", 5.0,
68 "Minimum Et for a tower to be considered as a seed"};

The documentation for this class was generated from the following files: