 |
ATLAS Offline Software
|
Go to the documentation of this file.
81 m_PVkey(
"PrimaryVertices"),
119 "EXPERIMENTAL: whether to use simplified OR based on nominal jets "
120 "and for jet-related systematics only. "
121 "WARNING: this property is strictly for doing physics studies of the feasibility "
122 "of this OR scheme, it should not be used in a regular analysis");
156 ATH_MSG_INFO(
"Custom jet selection configured. *** FOR EXPERT USE ONLY ***");
163 ATH_MSG_INFO(
"Jet selection for hadronic recoil calculation is configured.");
171 ATH_MSG_ERROR(
"Error: No available jet selection found! Please update JetSelection in ColumnarMETMaker. Choose one: Loose, Tight (recommended), Tighter, Tenacious" );
172 return StatusCode::FAILURE;
201 ATH_MSG_INFO(
"Requesting simplified overlap removal procedure in MET calculation");
211 return StatusCode::SUCCESS;
227 return StatusCode::FAILURE;
231 ATH_MSG_ERROR(
"No input collection provided for MET term \"" << metKey <<
"\"");
232 return StatusCode::FAILURE;
260 ATH_MSG_WARNING(
"Incorrect use of rebuildMET -- use rebuildJetMET for RefJet term");
261 return StatusCode::FAILURE;
264 return StatusCode::FAILURE;
273 return StatusCode::FAILURE;
288 return StatusCode::FAILURE;
292 ATH_MSG_ERROR(
"No input collection provided for MET term \"" <<
met->name() <<
"\"");
293 return StatusCode::FAILURE;
305 bool removeOverlap =
true;
308 removeOverlap =
false;
321 if(!
met || !collection) {
323 <<
"MET (" <<
met <<
") or "
324 <<
"collection (" << collection <<
").");
325 return StatusCode::FAILURE;
337 if(
helper.map().empty()) {
338 ATH_MSG_WARNING(
"Incomplete association map received. Cannot rebuild MET.");
339 ATH_MSG_WARNING(
"Note: ColumnarMETMaker should only be run on events containing at least one PV");
340 return StatusCode::SUCCESS;
345 if(collection.empty())
return StatusCode::SUCCESS;
348 if(collectionOriginals.isShallowCopy() && collectionOriginals.originalInputs()) {
349 ATH_MSG_WARNING(
"Shallow copy provided without \"originalObjectLinks\" decoration! "
350 <<
"Overlap removal cannot be done. "
351 <<
"Will not compute this term.");
352 ATH_MSG_WARNING(
"Please apply xAOD::setOriginalObjectLink() from xAODBase/IParticleHelpers.h");
353 return StatusCode::SUCCESS;
355 ATH_MSG_VERBOSE(
"Original inputs? " << collectionOriginals.originalInputs());
356 for(
const auto obj : collection) {
358 bool selected =
false;
359 auto orig = collectionOriginals.getOriginal(
obj);
360 auto assocs =
helper.getAssociations(orig);
362 std::string
message =
"Object is not in association map. Did you make a deep copy but fail to set the \"originalObjectLinks\" decoration? "
363 "If not, Please apply xAOD::setOriginalObjectLink() from xAODBase/IParticleHelpers.h";
372 metWeights.emplace_back(
obj, 0 );
386 if(
helper.objSelected(orig))
continue;
387 selected =
helper.selectIfNoOverlaps(orig,
p) || !removeOverlap;
389 <<
" is " << ( selected ?
"non-" :
"") <<
"overlapping");
393 for(
auto assoc : assocs){
398 if(!thisObj)
continue;
401 helper.setObjSelectionFlag(assoc, thisObj,
true);
408 for (decltype(
auto) assoc : assocs) {
411 for (
size_t indi = 0; indi < ind.size(); indi++)
if (allObjects[ind[indi]]) {
412 if (allObjects[ind[indi]].isContainer<columnar::ContainerId::electron>()
413 &&
helper.objSelected(assoc, ind[indi])) {
432 metWeights.emplace_back(
obj, 1. );
436 return StatusCode::SUCCESS;
440 const std::string& softKey,
447 if (!metCont || !metCoreCont)
450 return StatusCode::FAILURE;
454 ATH_MSG_ERROR(
"No input collection provided for MET term \"" << metJetKey <<
"\" and soft term: " << softKey);
455 return StatusCode::FAILURE;
462 const std::string& softKey,
469 ATH_MSG_VERBOSE(
"Rebuild jet term: " << metJetKey <<
" and soft term: " << softKey);
479 return StatusCode::FAILURE;
482 coreSoftTrk = coreSoft;
486 coreSoftClus = coreSoft;
492 metSoftClus, coreSoftClus,
493 metSoftTrk, coreSoftTrk,
498 const std::string& softKey,
508 return StatusCode::FAILURE;
512 ATH_MSG_ERROR(
"No input collection provided for MET term \"" << metJetKey <<
"\" and soft term: " << softKey);
513 return StatusCode::FAILURE;
520 const std::string& softKey,
527 ATH_MSG_VERBOSE(
"Rebuild jet term: " << metJetKey <<
" and soft term: " << softKey);
534 return StatusCode::FAILURE;
536 auto coreSoftTrk = coreSoft.value();
541 metSoftTrk, coreSoftTrk,
546 const std::string& softClusKey,
547 const std::string& softTrkKey,
557 return StatusCode::FAILURE;
561 ATH_MSG_ERROR(
"No input collection provided for MET term \"" << metJetKey <<
"\" and soft term: " << softClusKey <<
" and " << softTrkKey);
562 return StatusCode::FAILURE;
569 const std::string& softClusKey,
570 const std::string& softTrkKey,
585 ATH_MSG_WARNING(
"Invalid cluster soft term key supplied: " << softClusKey);
586 return StatusCode::FAILURE;
589 ATH_MSG_WARNING(
"Invalid track soft term key supplied: " << softTrkKey);
590 return StatusCode::FAILURE;
597 metSoftClus, coreSoftClus,
598 metSoftTrk, coreSoftTrk,
610 bool tracksForHardJets,
611 std::vector<const xAOD::IParticle*>* softConst)
const {
612 if(!metJet || !
jets) {
614 <<
"MET (" << metJet <<
") or "
615 <<
"jet collection (" <<
jets <<
").");
616 return StatusCode::FAILURE;
622 doJetJVT, tracksForHardJets, softConst);
634 bool tracksForHardJets,
635 std::vector<const xAOD::IParticle*>* softConst)
const {
637 ATH_MSG_WARNING(
"Requested soft track element links, but no track selection tool supplied.");
641 if(
helper.map().empty()) {
642 ATH_MSG_WARNING(
"Incomplete association map received. Cannot rebuild MET.");
643 ATH_MSG_WARNING(
"Note: ColumnarMETMaker should only be run on events containing at least one PV");
644 return StatusCode::SUCCESS;
647 if(doJetJVT &&
m_JvtWP ==
"None"){
653 if(!metSoftClus && !metSoftTrk) {
654 ATH_MSG_WARNING(
"Neither soft cluster nor soft track term has been supplied!");
655 return StatusCode::SUCCESS;
658 std::optional<columnar::MetHelpers::ObjectWeightHandle<columnar::ContainerId::mutableMet,columnar::ContainerId::jet>> metSoftClusLinks;
662 ATH_MSG_ERROR(
"Soft cluster term provided without a core term!");
663 return StatusCode::FAILURE;
673 if(softConst && acc_softConst.
isAvailable(*coreSoftClus.getXAODObject())) {
674 for(
const auto& constit : acc_softConst(*coreSoftClus.getXAODObject())) {
675 softConst->push_back(*constit);
677 ATH_MSG_DEBUG(softConst->size() <<
" soft constituents from core term");
680 std::optional<columnar::MetHelpers::ObjectWeightHandle<columnar::ContainerId::mutableMet,columnar::ContainerId::jet>> metSoftTrkLinks;
684 ATH_MSG_ERROR(
"Soft track term provided without a core term!");
685 return StatusCode::FAILURE;
693 for(
const auto& constit : acc_softConst(*coreSoftTrk.getXAODObject())) {
694 softConst->push_back(*constit);
696 ATH_MSG_DEBUG(softConst->size() <<
" soft constituents from trk core term");
711 auto originalJet = jetsOriginals.getOriginal(
jet);
712 auto assoc =
helper.getJetAssociation(originalJet);
720 if (acc_nominalObject.isAvailable(
jet.getXAODObject())){
722 jet = *
static_cast<const xAOD::Jet*
>(*acc_nominalObject(
jet.getXAODObject()));
725 ATH_MSG_ERROR(
"No nominal calibrated jet available for jet " <<
jet <<
". Cannot simplify overlap removal!");
730 bool JVT_reject(
false);
731 bool isMuFSRJet(
false);
740 ATH_MSG_VERBOSE(
"Jet " << (JVT_reject ?
"fails" :
"passes") <<
" JVT selection");
747 bool caloverlap =
false;
748 caloverlap = calvec.
ce()>0;
749 ATH_MSG_DEBUG(
"Jet " <<
jet <<
" is " << ( caloverlap ?
"" :
"non-") <<
"overlapping");
769 double jpx = constjet.Px();
770 double jpy = constjet.Py();
771 double jpt = constjet.Pt();
772 double opx = jpx - calvec.
cpx();
773 double opy = jpy - calvec.
cpy();
780 ATH_MSG_WARNING(
"Attempted to apply muon Eloss correction, but corresponding MET term does not exist!");
781 return StatusCode::FAILURE;
785 float total_eloss(0);
787 std::vector<columnar::MuonId> muons_in_jet;
788 std::vector<columnar::ElectronId> electrons_in_jet;
789 bool passJetForEl=
false;
791 if(!acc_ghostMuons.isAvailable(
jet.getXAODObject())){
793 return StatusCode::FAILURE;
795 for(
const auto&
el : acc_ghostMuons(
jet.getXAODObject())) {
797 ATH_MSG_ERROR(
"Invalid element link to ghost muon! Quitting.");
798 return StatusCode::FAILURE;
800 muons_in_jet.push_back(*
static_cast<const xAOD::Muon*
>(*
el));
810 if(acc_originalObject.isAvailable(mu_test.getXAODObject())) mu_test = *
static_cast<const xAOD::Muon*
>(*acc_originalObject(mu_test.getXAODObject()));
812 if(
helper.objSelected(mu_test)) {
813 muons_in_jet.push_back(mu_test);
821 if(acc_originalObject.isAvailable(el_test.getXAODObject())) el_test = *
static_cast<const xAOD::Electron*
>(*acc_originalObject(el_test.getXAODObject()));
823 if(
helper.objSelected(*assoc,el_test)){
825 electrons_in_jet.push_back(el_test);
833 float jet_ORtrk_sumpt =
helper.overlapTrkVec(*assoc).sumpt();
834 float jet_all_trk_pt = initialTrkMom.
sumpt();
835 float jet_unique_trk_pt = jet_all_trk_pt - jet_ORtrk_sumpt;
838 for(
const auto& elec : electrons_in_jet) {
842 float el_cal_pt = el_calvec.
cpt();
843 float el_trk_pt = el_trkvec.
cpt();
845 <<
" jetalltrk: " << jet_all_trk_pt
846 <<
" jetORtrk: " << jet_ORtrk_sumpt
847 <<
" electrk-jetORtrk: " << (el_trk_pt-jet_ORtrk_sumpt)
848 <<
" elec cal: " << el_cal_pt
849 <<
" jetalltrk-electrk: " << (jet_all_trk_pt-el_trk_pt)
850 <<
" jetalltrk-jetORtrk: " << (jet_all_trk_pt-jet_ORtrk_sumpt) );
854 if(el_trk_pt>1
e-9 && jet_unique_trk_pt>10.0
e3) passJetForEl=
true;
857 for(
auto mu_in_jet : muons_in_jet) {
858 float mu_Eloss = acc_Eloss(mu_in_jet.getXAODObject());
863 float mu_id_pt = mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle) ? mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle)->pt() : 0.;
867 if(0.9999*mu_id_pt>jet_trk_sumpt)
868 jet_trk_sumpt+=mu_id_pt;
881 float mu_id_pt = mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle) ? mu_in_jet.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle)->pt() : 0.;
884 if(0.9999*mu_id_pt>jet_trk_sumpt)
885 jet_trk_sumpt+=mu_id_pt;
894 ATH_MSG_ERROR(
"Jet PS fraction or sampling energy must be available to calculate MET with doSetMuonJetEMScale");
895 return StatusCode::FAILURE;
903 ATH_MSG_VERBOSE(
"Jet is from muon -- set to EM scale and subtract Eloss.");
906 ATH_MSG_VERBOSE(
"Jet e: " << constjet.E() <<
", mu Eloss: " << mu_Eloss);
907 float elosscorr = mu_Eloss >= constjet.e() ? 0. : 1.-mu_Eloss/constjet.e();
912 ATH_MSG_VERBOSE(
" Jet eloss factor " << elosscorr <<
", final pt: " << sqrt(opx*opx+opy*opy));
919 switch(mu_in_jet.getXAODObject().energyLossType()) {
920 case xAOD::Muon::Parametrized:
921 case xAOD::Muon::MOP:
922 case xAOD::Muon::Tail:
923 case xAOD::Muon::FSRcandidate:
924 case xAOD::Muon::NotIsolated:
928 total_eloss += mu_Eloss;
943 if(
m_muEloss) mu_calovec *= std::max<float>(0.,1-(total_eloss/mu_calovec.
ce()));
949 opx += mu_calovec.
cpx();
950 opy += mu_calovec.
cpy();
951 double opt = sqrt( opx*opx+opy*opy );
953 double uniquefrac = 1. - (calvec.
ce() - mu_calovec.
ce()) / constjet.E();
954 ATH_MSG_VERBOSE(
"Jet constscale px, py, pt, E = " << jpx <<
", " << jpy <<
", " << jpt <<
", " << constjet.E() );
956 ATH_MSG_VERBOSE(
"Jet OR px, py, pt, E = " << opx <<
", " << opy <<
", " <<
opt <<
", " << constjet.E() - calvec.
ce() );
960 ATH_MSG_ERROR(
"Attempted to apply muon Eloss correction, but corresponding MET term does not exist!");
961 return StatusCode::FAILURE;
967 if(selected && !JVT_reject) {
971 if (!tracksForHardJets) {
981 if(!tracksForHardJets) {
1005 metJetWeights.emplace_back(
jet, uniquefrac);
1007 if(metSoftClus && !JVT_reject) {
1011 metSoftClusLinks->emplace_back (
jet, uniquefrac);
1021 for(
size_t iConst=0; iConst<
jet.getXAODObject().numConstituents(); ++iConst) {
1022 const IParticle* constit =
jet.getXAODObject().rawConstituent(iConst);
1023 softConst->push_back(constit);
1029 if(!metSoftTrk || (hardJet && !tracksForHardJets))
continue;
1035 if(jettrkvec.
ce()>1
e-9) {
1036 jpx = jettrkvec.
cpx();
1037 jpy = jettrkvec.
cpy();
1038 jpt = jettrkvec.
sumpt();
1039 jettrkvec -= trkvec;
1040 opx = jettrkvec.
cpx();
1041 opy = jettrkvec.
cpy();
1043 ATH_MSG_VERBOSE(
"Jet track px, py, sumpt = " << jpx <<
", " << jpy <<
", " << jpt );
1046 opx = opy =
opt = 0;
1054 if (metSoftTrkLinks) metSoftTrkLinks->emplace_back (
jet, uniquefrac);
1063 std::vector<const IParticle*> jettracks;
1065 for(
size_t iConst=0; iConst<jettracks.size(); ++iConst) {
1073 ATH_MSG_DEBUG(
"Number of selected jets: " << metJetWeights.size());
1076 ATH_MSG_DEBUG(
"Number of softtrk jets: " << metSoftTrkLinks->size());
1080 ATH_MSG_DEBUG(
"Number of softclus jets: " << metSoftClusLinks->size());
1083 if(softConst)
ATH_MSG_DEBUG(softConst->size() <<
" soft constituents from core term + jets");
1085 auto assoc =
helper.getMiscAssociation();
1086 if(!assoc)
return StatusCode::SUCCESS;
1092 double opx = trkvec.
cpx();
1093 double opy = trkvec.
cpy();
1094 double osumpt = trkvec.
sumpt();
1095 ATH_MSG_VERBOSE(
"Misc track px, py, sumpt = " << opx <<
", " << opy <<
", " << osumpt );
1105 float total_eloss(0.);
1108 double opx = calvec.
cpx();
1109 double opy = calvec.
cpy();
1110 double osumpt = calvec.
sumpt();
1112 auto *
obj = objId.getXAODObject();
1115 if(acc_originalObject.isAvailable(*mu_test)) mu_test =
static_cast<const xAOD::Muon*
>(*acc_originalObject(*mu_test));
1116 if(
helper.objSelected(mu_test)) {
1117 float mu_Eloss = acc_Eloss(*mu_test);
1119 case xAOD::Muon::Parametrized:
1120 case xAOD::Muon::MOP:
1121 case xAOD::Muon::Tail:
1122 case xAOD::Muon::FSRcandidate:
1123 case xAOD::Muon::NotIsolated:
1127 total_eloss += mu_Eloss;
1145 mu_calovec *= std::max<float>(0.,1-(total_eloss/mu_calovec.
ce()));
1146 opx += mu_calovec.
cpx();
1147 opy += mu_calovec.
cpy();
1148 osumpt += mu_calovec.
sumpt();
1152 ATH_MSG_VERBOSE(
"Misc cluster px, py, sumpt = " << opx <<
", " << opy <<
", " << osumpt );
1159 return StatusCode::SUCCESS;
1167 bool doJetJVT)
const {
1169 ATH_MSG_ERROR(
"No MET object provided for track MET rebuilding");
1170 return StatusCode::FAILURE;
1173 ATH_MSG_ERROR(
"No MET object provided for soft track MET rebuilding");
1174 return StatusCode::FAILURE;
1177 ATH_MSG_ERROR(
"No jet container provided for track MET rebuilding");
1178 return StatusCode::FAILURE;
1191 bool doJetJVT)
const {
1201 ATH_MSG_ERROR(
"No object container provided for marking invisible");
1202 return StatusCode::FAILURE;
1205 ATH_MSG_ERROR(
"No MET container provided for marking invisible");
1206 return StatusCode::FAILURE;
1222 return static_cast<bool>(
m_trkseltool->accept( *trk, vx ));
1230 ATH_MSG_WARNING(
"Unable to retrieve primary vertex container PrimaryVertices");
1233 ATH_MSG_DEBUG(
"Successfully retrieved primary vertex container");
1254 throw std::runtime_error (
"Failed to rebuild MET");
1259 throw std::runtime_error (
"Failed to rebuild jet MET");
1264 throw std::runtime_error (
"Failed to rebuild track MET");
1267 throw std::runtime_error (
"Unknown columnar operation");
Gaudi::Property< std::string > m_columnarJetKey
virtual StatusCode markInvisible(const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, xAOD::MissingETContainer *metCont) const override final
columnar::JetAccessor< float > m_acc_psf
std::optional< columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > > m_jetConstitScaleMomFixedAcc
columnar::MetAssocationAccessors m_assocAcc
Electron_v1 Electron
Definition of the current "egamma version".
double m_muIDPTJetPtRatioMuOlap
columnar::ParticleAccessor< columnar::ObjectColumn > m_particlesHandle
static Types::bitmask_t muon(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed muons.
virtual StatusCode rebuildJetMET(const std::string &metJetKey, const std::string &softClusKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
MissingETAuxContainer_v1 MissingETAuxContainer
@ PhysicsObject
Physics object based.
columnar::MetHelpers::MapLookupAccessor< columnar::ContainerId::mutableMet > m_outputMetMapAcc
@ TruthParticle
Truth particle based.
columnar::JetAccessor< std::vector< int > > m_acc_trkN
Helper class to provide type-safe access to aux data.
virtual StatusCode initialize() override final
Dummy implementation of the initialisation function.
columnar::Met1Accessor< columnar::ObjectColumn > m_inputMetHandle
columnar::MutableMetAccessor< columnar::ObjectColumn > m_outputMetHandle
std::pair< long int, long int > indices
static Types::bitmask_t electron(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed electrons.
xAODContainer & getXAODObject() const noexcept
static Types::bitmask_t track(Region reg=Region::FullAcceptance)
Bit mask for MET term from Track signal objects.
columnar::MetHelpers::MetMomentumAccessors< columnar::ContainerId::met1 > m_inputMetMomAcc
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.
MissingET_v1 MissingET
Version control by type defintion.
virtual Type::ObjectType type() const =0
The type of the object as a simple enumeration.
a "handle" for recording object weights via ObjectWeightDecorator
columnar::MetHelpers::MetMomentumAccessors< columnar::ContainerId::mutableMet > m_outputMetMomAcc
@ Central
Indicator for MET contribution from the central region.
Gaudi::Property< std::string > m_columnarSoftClusKey
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current MissingETComposition
MissingETContainer_v1 MissingETContainer
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkseltool
Helper class to provide constant type-safe access to aux data.
a class representing a single optional object (electron, muons, etc.)
#define ATH_MSG_VERBOSE(x)
uint64_t bitmask_t
Type for status word bit mask.
columnar::JetAccessor< std::vector< float > > m_acc_trksumpt
MissingETAssociation_v1 MissingETAssociation
Version control by type definition.
@ OnlyCluster
CaloCluster based only.
Class providing the definition of the 4-vector interface.
static bool isTrackTerm(Types::bitmask_t bits, Region reg=Region::FullAcceptance)
columnar::MutableMetAccessor< std::string > m_outputMetNameAcc
a class representing a continuous sequence of objects (a.k.a. a container)
double met(ObjectId< CI, CM > object) const
double m_jetMinWeightedPt
@ u
Enums for curvilinear frames.
Vector sum of constituents for subtractive overlap removal.
@ Muon
Indicator for the MET term from reconstructed or MC truth muons.
columnar::MetHelpers::MapLookupAccessor< columnar::ContainerId::met1 > m_inputMetMapAcc
Gaudi::Property< unsigned > m_columnarParticleType
virtual StatusCode rebuildTrackMET(const std::string &metJetKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override final
columnar::MetHelpers::ObjectWeightDecorator< columnar::ContainerId::mutableMet, columnar::ContainerId::jet > m_jetOutputMetWeightDecSoft
EnergyLossType energyLossType(void) const
Energy determined from parametrization or not (measured).
std::string m_jetSelection
columnar::JetAccessor< std::vector< float > > m_acc_sampleE
TrackParticle_v1 TrackParticle
Reference the current persistent version:
std::string m_jetConstitScaleMom
double m_customCenJetPtCut
const xAOD::Vertex * getPV() const
columnar::JetAccessor< columnar::ObjectColumn > m_jetsHandle
ColumnarMETMaker()
Default constructor:
columnar::Met1Accessor< MissingETBase::Types::bitmask_t > m_inputMetSourceAcc
std::optional< columnar::JetAccessor< char > > m_acc_jetRejectionDec
columnar::MetHelpers::InputMomentumAccessors m_inputMomAcc
float m_missObjWarningPtThreshold
POOL::TEvent event(POOL::TEvent::kClassAccess)
static constexpr bool isXAOD
Whether this is the xAOD mode.
columnar::JetAccessor< float > m_acc_emf
AccessorTemplate< CI, float, CAM, CM > sumet
static Types::bitmask_t jet(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed jets.
AccessorTemplate< CI, float, CAM, CM > mpy
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
float cpy() const
Returns .
float sumpt() const
Returns sum of component pt.
columnar::ElectronAccessor< columnar::RetypeColumn< double, float > > m_electronPtAcc
@ Calo
Indicator for MET terms reconstructed from calorimeter signals alone.
columnar::ParticleAccessor< columnar::RetypeColumn< xAOD::Muon::MuonType, std::uint16_t > > m_inputMuonTypeAcc
Principal data object for Missing ET.
AccessorTemplate< CI, float, CAM, CM > mpx
SG::ReadHandleKey< xAOD::VertexContainer > m_PVkey
size_t index() const
Return the index of this element within its container.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
columnar::MetHelpers::ObjectWeightDecorator m_outputMetWeightDecRegular
Gaudi::Property< std::string > m_columnarTermName
bool m_skipSystematicJetSelection
Policy
Policies on usage checks.
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
a class representing a single object (electron, muons, etc.)
Gaudi::Property< bool > m_columnarDoJetJVT
Container for xAOD::MissingET_v1 objects.
virtual ~ColumnarMETMaker()
Destructor:
MissingETAssociationMap_v1 MissingETAssociationMap
Version control by type defintion.
std::optional< columnar::ParticleAccessor< char > > m_inputPreselectionAcc
static Types::bitmask_t tau(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed tau leptons.
std::string to_string(const DetectorType &type)
Gaudi::Property< unsigned > m_columnarOperation
void callEvents(columnar::EventContextRange events) const override
@ OnlyTrack
Track based only.
std::string m_jetRejectionDec
@ ParticleFlow
Particle Flow Object based.
Photon_v1 Photon
Definition of the current "egamma version".
struct TBPatternUnitContext Muon
void addMet(ObjectId< CI, CM > met, const MetMomentumAccessors< CI2, CM > &momAcc, ObjectId< CI2, CM > metSource) const requires(isMutable)
columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > m_jetMomAcc
Gaudi::Property< std::string > m_inputPreselectionName
Class describing a Vertex.
columnar::MetHelpers::ObjectTypeAccessor< columnar::ContainerId::particle > m_inputObjTypeAcc
#define ATH_MSG_WARNING(x)
float cpt() const
Returns .
ToolHandle< IAsgSelectionTool > m_JvtTool
virtual StatusCode rebuildMET(const std::string &metKey, xAOD::Type::ObjectType metType, xAOD::MissingETContainer *metCont, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy objScale) const override final
StatusCode setProperty(const std::string &name, const T &value)
set the given property
bool m_doSetMuonJetEMScale
@ Tau
The object is a tau (jet)
static Types::bitmask_t photon(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed photons.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
A vector of jet constituents at the scale used during jet finding.
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Class describing a TrackParticle.
std::optional< columnar::MetHelpers::InputMomentumAccessors< columnar::ContainerId::jet > > m_jetConstitScaleMomAcc
const SG::AuxVectorData * container() const
Return the container holding this element.
float cpx() const
Returns .
columnar::ColumnAccessor< columnar::ContainerId::metAssociation, columnar::ObjectColumn > m_metAssocHandle
ObjectType
Type of objects that have a representation in the xAOD EDM.
std::string m_jetJvtMomentName
bool m_doRemoveElecTrksEM
setBGCode setTAP setLVL2ErrorBits bool
bool acceptTrack(const xAOD::TrackParticle *trk, const xAOD::Vertex *vx) const
double m_customFwdJetPtCut
float ce() const
Returns .
Jet_v1 Jet
Definition of the current "jet version".
bool empty() const noexcept
Returns true if the collection is empty.
void addParticle(ObjectId< CI, CM > met, float px, float py, float pt) const requires(isMutable)
std::string m_customJvtWP
columnar::JetAccessor< float > m_acc_width
Base class for elements of a container that can have aux data.
columnar::MetHelpers::ObjectWeightDecorator< columnar::ContainerId::mutableMet, columnar::ContainerId::jet > m_jetOutputMetWeightDecRegular