5#ifndef TRIGL0GEPPERF_GEPJETALG_H
6#define TRIGL0GEPPERF_GEPJETALG_H
38 GepJetAlg(
const std::string& name, ISvcLocator* pSvcLocator );
41 virtual StatusCode
execute(
const EventContext& )
const override;
47 "Gep jet alg idenfifier"};
50 "Build and configure the JetTaggerLRJ maker in initialize(). Set by "
51 "GepJetTaggerLRJAlgCfg; must agree with jetAlgName == 'JetTaggerLRJ'."};
54 this,
"caloClustersKey",
"",
"key to read in a CaloCluster constainer"};
57 this,
"jFexSRJetRoIs",
"L1_jFexSRJetRoISim",
"key to read a L1 jet container"};
60 this,
"outputJetsKey",
"",
61 "key for xAOD:Jet wrappers for GepJets"};
65 "Minimum Et for a tower to be considered as a constituent"};
68 "Minimum Et for a tower to be considered as a seed"};
71 "Jet radius to determine TOB-Jet association"};
74 "Maximum number of constituents per jet"};
77 "Maximum number of seeds to sort"};
79 Gaudi::Property<unsigned int>
m_WTABlockN{
this,
"WTABlockN", 4,
80 "Number of blocks to divide the input towers into for parallel processing. Options: 1, 4"};
83 "Seed cleaning algorithm to use. Options: Baseline, TwoPass"};
91 this,
"LRJWTAConeSeedsKey",
"",
92 "WTACone small-R jets used as JetTaggerLRJ seeds (xAOD::JetContainer)."};
95 this,
"LRJgFexSRJetRoIs",
"L1_gFexSRJetRoISim",
96 "gFEX small-R jet RoIs used as JetTaggerLRJ seeds."};
101 "Source of JetTaggerLRJ seeds. Options: WTACone, jFexSRJ, gFexSRJ"};
104 "Source of JetTaggerLRJ constituents. Options: Towers, WTACone"};
108 "Algorithm variant / preset: 2 = basic (BasicV2), 3 = advanced (AdvancedV3)."};
112 "Large-R jet cone radius; r2Cut = LRJJetR^2. Default 1.1 (r2Cut=1.21). <=0 inherits the preset."};
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)."};
120 "Number of input seeds considered per event. 0 inherits the preset."};
123 "Number of proto-seeds for seed-position optimization. 0 inherits the preset."};
126 "Number of output LRJs per event (typically 2). 0 inherits the preset."};
129 "Maximum number of constituents to load per event. 0 inherits the preset."};
133 "Et field bit length. 0 inherits the preset."};
135 "Eta field bit length. 0 inherits the preset."};
137 "Phi field bit length. 0 inherits the preset."};
139 "n-subjets field bit length. 0 inherits the preset."};
141 "tau_1 / tau_2 field bit length. 0 inherits the preset."};
143 "massApprox field bit length. 0 inherits the preset."};
145 "psi_R / deltaR-LUT field bit length. 0 inherits the preset."};
147 "deltaR granularity bit length. 0 inherits the preset."};
150 Gaudi::Property<float>
m_LRJPhiMin{
this,
"LRJPhiMin", -9999.0,
"phi range minimum. -9999 inherits the preset."};
151 Gaudi::Property<float>
m_LRJPhiMax{
this,
"LRJPhiMax", -9999.0,
"phi range maximum. -9999 inherits the preset."};
152 Gaudi::Property<float>
m_LRJEtaMin{
this,
"LRJEtaMin", -9999.0,
"eta range minimum. -9999 inherits the preset."};
153 Gaudi::Property<float>
m_LRJEtaMax{
this,
"LRJEtaMax", -9999.0,
"eta range maximum. -9999 inherits the preset."};
154 Gaudi::Property<float>
m_LRJEtMin{
this,
"LRJEtMin", -9999.0,
"Et range minimum (GeV). -9999 inherits the preset."};
155 Gaudi::Property<float>
m_LRJEtMax{
this,
"LRJEtMax", -9999.0,
"Et range maximum (GeV). -9999 inherits the preset."};
156 Gaudi::Property<float>
m_LRJMassApproxMax{
this,
"LRJMassApproxMax", -1.0,
"massApprox range maximum (GeV). <=0 inherits the preset."};
157 Gaudi::Property<float>
m_LRJInputEtToGeV{
this,
"LRJInputEtToGeV", -1.0,
"Input Et (MeV) -> GeV scale. <=0 inherits the preset (1e-3)."};
161 "Minimum subjet Et (GeV) for counting nSubjets. <0 inherits the preset."};
164 "Minimum proto-seed Et (GeV) for seed-position optimization. <0 inherits the preset."};
168 "Minimum seed Et in GeV (reserved; not yet applied)."};
170 "Minimum constituent Et in GeV (reserved; not yet applied)."};
174 "Enable overlap removal between the leading two seeds (advanced only)."};
176 "Use Et-weighted midpoint in seed-position optimization."};
178 "Apply the minimum proto-seed Et cut in seed-position optimization."};
182 "Fill psi_R / tau_1 / tau_2 / massApprox / nSubjets on the output LRJ."};
184 "Fill per-subjet (et, eta, phi) vectors on the output LRJ."};
186 "Fill constituentsIndices / mergedIndices on the output LRJ."};
196 template <
typename Container,
typename KinFn>
198 const EventContext& ctx,
200 std::vector<Gep::Jet>& seeds)
const;
Wrapper to avoid constant divisions when using units.
An algorithm that can be simultaneously executed in multiple threads.
Gaudi::Property< unsigned int > m_LRJEtBitLength
Gaudi::Property< unsigned int > m_LRJNumSubjetsLength
Gaudi::Property< float > m_LRJEtMax
Gaudi::Property< bool > m_LRJWriteSubjetKinematics
Gaudi::Property< float > m_LRJEtMin
StatusCode configureLRJMaker()
Gaudi::Property< float > m_LRJPhiMin
Gaudi::Property< float > m_LRJInputEtToGeV
Gaudi::Property< unsigned int > m_LRJNSeedsOutput
Gaudi::Property< float > m_LRJPhiMax
Gaudi::Property< bool > m_LRJMinEtSeedPosOptimization
StatusCode loadLRJSeeds(const SG::ReadHandleKey< Container > &key, const EventContext &ctx, KinFn &&kin, std::vector< Gep::Jet > &seeds) const
Gaudi::Property< float > m_WTAJet_dR
SG::ReadHandleKey< xAOD::jFexSRJetRoIContainer > m_jFexSRJetsKey
Gaudi::Property< float > m_WTASeedEtCut
Gaudi::Property< float > m_LRJSeedEtCutGeV
Gaudi::Property< float > m_WTAConstEtCut
Gaudi::Property< bool > m_LRJWriteConstituentIndices
Gaudi::Property< std::string > m_jetAlgName
Gaudi::Property< unsigned int > m_LRJEtaBitLength
virtual StatusCode initialize() override
Gaudi::Property< unsigned int > m_LRJNSeedsInput
Gaudi::Property< unsigned int > m_LRJMassApproxBitLength
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClustersKey
SG::ReadHandleKey< xAOD::gFexJetRoIContainer > m_lrjGFexSRJetsKey
virtual StatusCode execute(const EventContext &) const override
Gaudi::Property< std::string > m_WTASeedCleaningName
Gaudi::Property< unsigned int > m_WTABlockN
Gaudi::Property< unsigned int > m_WTAMaxConstN
Gaudi::Property< std::string > m_LRJSeedSource
Gaudi::Property< unsigned int > m_WTAMaxSeedSortingN
Gaudi::Property< unsigned int > m_LRJAlgoVersion
Gaudi::Property< float > m_LRJEtaMax
Gaudi::Property< unsigned int > m_LRJNSubjetinessBitLength
Gaudi::Property< float > m_LRJSubjetEtThresholdGeV
SG::WriteHandleKey< xAOD::JetContainer > m_outputGepJetsKey
Gaudi::Property< unsigned int > m_LRJNProtoSeeds
Gaudi::Property< float > m_LRJJetR
GepJetAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< bool > m_LRJWriteSubstructure
Gaudi::Property< bool > m_LRJEnableEtWeightedMidpoint
Gaudi::Property< unsigned int > m_LRJPsiRBitLength
Gaudi::Property< std::string > m_LRJConstSource
Gaudi::Property< float > m_LRJMassApproxMax
Gaudi::Property< bool > m_LRJEnableOverlapRemoval
Gaudi::Property< float > m_LRJDSearch
Gaudi::Property< float > m_LRJMinEtSeedPosOptCutGeV
Gaudi::Property< bool > m_configureLRJMaker
Gaudi::Property< float > m_LRJConstEtCutGeV
Gaudi::Property< unsigned int > m_LRJPhiBitLength
Gep::JetTaggerLRJMaker m_lrjMaker
Gaudi::Property< unsigned int > m_LRJDeltaRLutLength
Gaudi::Property< float > m_LRJEtaMin
Gaudi::Property< unsigned int > m_LRJMaxObjectsConsidered
SG::ReadHandleKey< xAOD::JetContainer > m_lrjWTAConeSeedsKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.