44 {
45
46
48
49 class ColumnarMETMaker
52
53 {
54
56
57
58
60 public:
61
62
63
65 ColumnarMETMaker(const std::string& name);
66
68 virtual ~ColumnarMETMaker();
69
70
72
73 virtual StatusCode rebuildMET(
74 const std::string& metKey,
78 xAOD::MissingETAssociationHelper& helper,
79 MissingETBase::UsageHandler::Policy objScale) const override final;
80 StatusCode rebuildMET(
81 const std::string& metKey,
83 columnar::MutableMetRange metCont,
84 columnar::ParticleRange collection,
85 columnar::MetAssociationHelper<> helper,
86 MissingETBase::UsageHandler::Policy objScale) const;
87
88 virtual StatusCode rebuildMET(
89 xAOD::MissingET* met,
91 xAOD::MissingETAssociationHelper& helper,
92 MissingETBase::UsageHandler::Policy objScale) const override final;
93 StatusCode rebuildMET(
94 columnar::MutableMetId met,
95 columnar::ParticleRange collection,
96 columnar::MetAssociationHelper<> helper,
97 MissingETBase::UsageHandler::Policy objScale) const;
98
99 virtual StatusCode rebuildMET(
100 xAOD::MissingET* met,
102 xAOD::MissingETAssociationHelper& helper,
103 MissingETBase::UsageHandler::Policy p,
104 bool removeOverlap,
105 MissingETBase::UsageHandler::Policy objScale) const override final;
106 StatusCode rebuildMET(
107 columnar::MutableMetId met,
108 columnar::ParticleRange collection,
109 columnar::MetAssociationHelper<> helper,
110 MissingETBase::UsageHandler::Policy p,
111 bool removeOverlap,
112 MissingETBase::UsageHandler::Policy objScale) const;
113
114 virtual StatusCode rebuildJetMET(
115 const std::string& metJetKey,
116 const std::string& softClusKey,
117 const std::string& softTrkKey,
121 xAOD::MissingETAssociationHelper& helper,
122 bool doJetJVT) const override final;
123 StatusCode rebuildJetMET(
124 const std::string& metJetKey,
125 const std::string& softClusKey,
126 const std::string& softTrkKey,
127 columnar::MutableMetRange metCont,
128 columnar::JetRange jets,
129 columnar::Met1Range metCoreCont,
130 columnar::MetAssociationHelper<> helper,
131 bool doJetJVT) const;
132
133 virtual StatusCode rebuildJetMET(
134 const std::string& metJetKey,
135 const std::string& metSoftKey,
139 xAOD::MissingETAssociationHelper& helper,
140 bool doJetJVT) const override final;
141 StatusCode rebuildJetMET(
142 const std::string& metJetKey,
143 const std::string& metSoftKey,
144 columnar::MutableMetRange metCont,
145 columnar::JetRange jets,
146 columnar::Met1Range metCoreCont,
147 columnar::MetAssociationHelper<> helper,
148 bool doJetJVT) const;
149
150 virtual StatusCode rebuildJetMET(
151 xAOD::MissingET* metJet,
153 xAOD::MissingETAssociationHelper& helper,
154 xAOD::MissingET* metSoftClus,
155 const xAOD::MissingET* coreSoftClus,
156 xAOD::MissingET* metSoftTrk,
157 const xAOD::MissingET* coreSoftTrk,
158 bool doJetJVT,
159 bool tracksForHardJets = false,
160 std::vector<const xAOD::IParticle*>* softConst = 0) const override final;
161 StatusCode rebuildJetMET(
162 columnar::MutableMetId metJet,
163 columnar::MutableMetRange metCont,
164 columnar::JetRange jets,
165 columnar::MetAssociationHelper<> helper,
166 columnar::OptMutableMetId metSoftClus,
167 columnar::OptMet1Id coreSoftClus,
168 columnar::OptMutableMetId metSoftTrk,
169 columnar::OptMet1Id coreSoftTrk,
170 bool doJetJVT,
171 bool tracksForHardJets = false,
172 std::vector<const xAOD::IParticle*>* softConst = 0) const;
173
174 virtual StatusCode rebuildTrackMET(
175 const std::string& metJetKey,
176 const std::string& softTrkKey,
180 xAOD::MissingETAssociationHelper& helper,
181 bool doJetJVT) const override final;
182 StatusCode rebuildTrackMET(
183 const std::string& metJetKey,
184 const std::string& softTrkKey,
185 columnar::MutableMetRange metCont,
186 columnar::JetRange jets,
187 columnar::Met1Range metCoreCont,
188 columnar::MetAssociationHelper<> helper,
189 bool doJetJVT) const;
190
191 virtual StatusCode rebuildTrackMET(xAOD::MissingET* metJet,
193 xAOD::MissingETAssociationHelper& helper,
194 xAOD::MissingET* metSoftTrk,
195 const xAOD::MissingET* coreSoftTrk,
196 bool doJetJVT) const override final;
197 StatusCode rebuildTrackMET(columnar::MutableMetId metJet,
198 columnar::MutableMetRange metCont,
199 columnar::JetRange jets,
200 columnar::MetAssociationHelper<> helper,
201 columnar::MutableMetId metSoftTrk,
202 columnar::Met1Id coreSoftTrk,
203 bool doJetJVT) const;
204
205 virtual StatusCode markInvisible(
207 xAOD::MissingETAssociationHelper& helper,
209 StatusCode markInvisible(
210 columnar::ParticleRange collection,
211 columnar::MetAssociationHelper<> helper,
212 columnar::MutableMetRange metCont) const;
213
215
218
219 bool acceptTrack(const xAOD::TrackParticle* trk, const xAOD::
Vertex* vx) const;
220 const xAOD::
Vertex* getPV() const;
221
222
224
225
226 float m_missObjWarningPtThreshold;
227
228 bool m_jetCorrectPhi{};
229 double m_jetMinEfrac{};
230 double m_jetMinWeightedPt{};
231 std::string m_jetConstitScaleMom;
232 std::string m_jetJvtMomentName;
233 std::string m_jetRejectionDec;
234
235 double m_CenJetPtCut{}, m_FwdJetPtCut{} ;
236 double m_JvtCut{}, m_JvtPtMax{};
237 double m_JetEtaMax{};
238 double m_JetEtaForw{};
239
240 std::string m_jetSelection;
241 std::string m_JvtWP;
242
243
244 double m_customCenJetPtCut{},m_customFwdJetPtCut{};
245 double m_customJvtPtMax{};
246 std::string m_customJvtWP;
247
248 bool m_doPFlow{};
249 bool m_doSoftTruth{};
250 bool m_doConstJet{};
251
252 bool m_useGhostMuons{};
253 bool m_doRemoveMuonJets{};
254 bool m_doRemoveElecTrks{};
255 bool m_doRemoveElecTrksEM{};
256 bool m_doSetMuonJetEMScale{};
257 bool m_skipSystematicJetSelection{};
258
259 bool m_muEloss{};
260 bool m_orCaloTaggedMuon{};
261 bool m_greedyPhotons{};
262 bool m_veryGreedyPhotons{};
263
264
265 int m_jetTrkNMuOlap{};
266 double m_jetWidthMuOlap{};
267 double m_jetPsEMuOlap{};
268 double m_jetEmfMuOlap{};
269 double m_jetTrkPtMuPt{};
270 double m_muIDPTJetPtRatioMuOlap{};
271
272 ToolHandle<InDet::IInDetTrackSelectionTool> m_trkseltool;
273 ToolHandle<IAsgSelectionTool> m_JvtTool;
274
275 SG::ReadHandleKey<xAOD::JetContainer> m_jetContainer{this, "JetContainer", "", "Name of input jet container (required if JVT decisions computed by internal tool)"};
276
278 ColumnarMETMaker();
279
288
290 columnar::MetHelpers::MapLookupAccessor<columnar::MutableMetDef> m_outputMetMapAcc {*this};
291 columnar::MetHelpers::MetMomentumAccessors<columnar::MutableMetDef> m_outputMetMomAcc {*this};
292
294 columnar::MetHelpers::MapLookupAccessor<columnar::Met1Def> m_inputMetMapAcc {*this};
295 columnar::MetHelpers::MetMomentumAccessors<columnar::Met1Def> m_inputMetMomAcc {*this};
297
298 columnar::MetAssocationAccessors<> m_assocAcc {*this};
299
300 columnar::MetHelpers::InputMomentumAccessors<> m_inputMomAcc {*this};
301 Gaudi::Property<std::string> m_inputPreselectionName {this, "inputPreselection", ""};
302 std::optional<columnar::ParticleAccessor<char>> m_inputPreselectionAcc;
304 columnar::MetHelpers::ObjectTypeAccessor<columnar::ParticleDef> m_inputObjTypeAcc {*this, "objectType"};
305
306 columnar::MetHelpers::ObjectWeightDecorator<> m_outputMetWeightDecRegular {*this, "", true};
307
308 columnar::MetHelpers::InputMomentumAccessors<columnar::JetDef> m_jetMomAcc {*this};
315
316 std::optional<columnar::MetHelpers::InputMomentumAccessors<columnar::JetDef>> m_jetConstitScaleMomAcc;
317 std::optional<columnar::MetHelpers::InputMomentumAccessors<columnar::JetDef>> m_jetConstitScaleMomFixedAcc;
318 std::optional<columnar::JetAccessor<char>> m_acc_jetRejectionDec;
319
320 columnar::MetHelpers::ObjectWeightDecorator<columnar::MutableMetDef,columnar::JetDef> m_jetOutputMetWeightDecRegular {*this, "", true};
321 columnar::MetHelpers::ObjectWeightDecorator<columnar::MutableMetDef,columnar::JetDef> m_jetOutputMetWeightDecSoft {*this, "Soft", false};
322
324
325 Gaudi::Property<unsigned> m_columnarOperation {this, "columnarOperation", 0};
326 Gaudi::Property<std::string> m_columnarTermName {this, "columnarTermName", ""};
327 Gaudi::Property<unsigned> m_columnarParticleType {this, "columnarParticleType", 0};
328 Gaudi::Property<std::string> m_columnarJetKey {this, "columnarJetKey", ""};
329 Gaudi::Property<std::string> m_columnarSoftClusKey {this, "columnarSoftClusKey", ""};
330 Gaudi::Property<bool> m_columnarDoJetJVT {this, "columnarDoJetJVT", false};
332 };
333
334}
MissingETContainer_v1 MissingETContainer
DataVector< IParticle > IParticleContainer
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
ElementLink implementation for ROOT usage.
::StatusCode StatusCode
StatusCode definition for legacy code.
AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > ColumnAccessor
AccessorTemplate< PhotonDef, CT, ColumnAccessMode::input, CM > PhotonAccessor
ObjectRange< EventContextDef > EventContextRange
AccessorTemplate< ParticleDef, CT, ColumnAccessMode::input, CM > ParticleAccessor
AccessorTemplate< MutableMetDef, CT, ColumnAccessMode::input, CM > MutableMetAccessor
AccessorTemplate< JetDef, CT, ColumnAccessMode::input, CM > JetAccessor
AccessorTemplate< ElectronDef, CT, ColumnAccessMode::input, CM > ElectronAccessor
AccessorTemplate< MuonDef, CT, ColumnAccessMode::input, CM > MuonAccessor
AccessorTemplate< Met1Def, CT, ColumnAccessMode::input, CM > Met1Accessor