![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <MissingETObjectCollectionMaker.h>
|
| MissingETObjectCollectionMaker (const std::string &name) |
|
virtual | ~MissingETObjectCollectionMaker () |
|
| MissingETObjectCollectionMaker (const MissingETObjectCollectionMaker &rhs)=delete |
|
| MissingETObjectCollectionMaker (MissingETObjectCollectionMaker &&rhs)=delete |
|
MissingETObjectCollectionMaker & | operator= (const MissingETObjectCollectionMaker &rhs)=delete |
|
StatusCode | initialize () |
| Dummy implementation of the initialisation function. More...
|
|
StatusCode | recalculateMET (const bool executeNominal) |
|
virtual const std::list< CP::SystematicSet > & | specifiedSystematics () const |
|
const std::list< CP::SystematicSet > & | recommendedSystematics () const |
|
virtual void | print () const |
| Print the state of the tool. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
◆ StoreGateSvc_t
◆ MissingETObjectCollectionMaker() [1/3]
top::MissingETObjectCollectionMaker::MissingETObjectCollectionMaker |
( |
const std::string & |
name | ) |
|
|
explicit |
◆ ~MissingETObjectCollectionMaker()
virtual top::MissingETObjectCollectionMaker::~MissingETObjectCollectionMaker |
( |
| ) |
|
|
inlinevirtual |
◆ MissingETObjectCollectionMaker() [2/3]
◆ MissingETObjectCollectionMaker() [3/3]
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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
◆ getKey()
Get the (hashed) key of an object that is in the event store.
This is a bit of a special one. StoreGateSvc
and xAOD::TEvent
both provide ways for getting the SG::sgkey_t
key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.
In order to allow tools to efficiently perform this operation, they can use this helper function.
- See also
- asg::AsgTool::getName
- Parameters
-
ptr | The bare pointer to the object that the event store should know about |
- Returns
- The hashed key of the object in the store. If not found, an invalid (zero) key.
Definition at line 119 of file AsgTool.cxx.
121 #ifdef XAOD_STANDALONE
124 return evtStore()->event()->getKey( ptr );
127 return (
proxy ==
nullptr ? 0 :
proxy->sgkey() );
128 #endif // XAOD_STANDALONE
◆ getName()
const std::string & asg::AsgTool::getName |
( |
const void * |
ptr | ) |
const |
|
inherited |
Get the name of an object that is / should be in the event store.
This is a bit of a special one. StoreGateSvc
and xAOD::TEvent
both provide ways for getting the std::string
name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.
In order to allow tools to efficiently perform this operation, they can use this helper function.
- See also
- asg::AsgTool::getKey
- Parameters
-
ptr | The bare pointer to the object that the event store should know about |
- Returns
- The string name of the object in the store. If not found, an empty string.
Definition at line 106 of file AsgTool.cxx.
108 #ifdef XAOD_STANDALONE
111 return evtStore()->event()->getName( ptr );
114 static const std::string
dummy =
"";
116 #endif // XAOD_STANDALONE
◆ getProperty()
template<class T >
const T* asg::AsgTool::getProperty |
( |
const std::string & |
name | ) |
const |
|
inherited |
Get one of the tool's properties.
◆ initialize()
StatusCode top::MissingETObjectCollectionMaker::initialize |
( |
| ) |
|
|
virtual |
Dummy implementation of the initialisation function.
It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...
– Set Systematics Information –///
Reimplemented from asg::AsgTool.
Definition at line 41 of file MissingETObjectCollectionMaker.cxx.
42 ATH_MSG_INFO(
" top::MissingETObjectCollectionMaker initialize");
48 std::string jet_collection =
m_config->sgKeyJets();
49 jet_collection.erase(jet_collection.length() - 4);
54 const std:: string& syststr =
m_config->systematics();
55 std::set<std::string> syst;
58 bool ok =
m_config->getSystematicsList(syststr, syst);
60 ATH_MSG_ERROR(
" top::MissingETObjectCollectionMaker could not determine systematic list");
61 return StatusCode::FAILURE;
65 if (
m_config->contains(syst,
"AllMET")) {
74 return StatusCode::SUCCESS;
◆ inputHandles()
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.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msg_level_name()
const std::string & asg::AsgTool::msg_level_name |
( |
| ) |
const |
|
inherited |
A deprecated function for getting the message level's name.
Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:
MSG::name( msg().level() )
This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.
- Returns
- The string name of the current minimum message level that's printed
Definition at line 101 of file AsgTool.cxx.
◆ msgLvl()
◆ operator=()
◆ outputHandles()
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.
◆ print()
void asg::AsgTool::print |
( |
| ) |
const |
|
virtualinherited |
Print the state of the tool.
Implements asg::IAsgTool.
Reimplemented in JetRecTool, JetFinder, JetModifiedMassDrop, JetFromPseudojet, JetReclusterer, JetReclusteringTool, JetTruthLabelingTool, JetPileupLabelingTool, HI::HIPileupTool, top::TopObjectSelection, JetDumper, JetBottomUpSoftDrop, JetRecursiveSoftDrop, JetSoftDrop, JetConstituentsRetriever, JetSubStructureMomentToolsBase, JetSplitter, JetToolRunner, JetPruner, JetPseudojetRetriever, JetTrimmer, AsgHelloTool, and KtDeltaRTool.
Definition at line 131 of file AsgTool.cxx.
◆ recalculateEventMET()
– Tell tool which systematic to use –///
Definition at line 127 of file MissingETObjectCollectionMaker.cxx.
132 std::string passPreORSelection =
"passPreORSelection";
133 std::string jet_collection =
m_config->sgKeyJets();
134 jet_collection.erase(jet_collection.length() - 4);
136 const bool is_loose_event = (
event->isLooseEvent() == 1 ? true :
false);
139 bool looseLeptonOR(is_loose_event);
140 if (
m_config->doOverlapRemovalOnLooseLeptonDef() || (is_loose_event &&
m_config->useLooseObjectsInMETInLooseTree()) || (!is_loose_event &&
m_config->useLooseObjectsInMETInNominalTree()) || forceUseLooseObjects) {
141 looseLeptonOR =
true;
143 passPreORSelection =
"passPreORSelectionLoose";
146 const std::size_t
hash =
event->hashValue();
151 new_met_container->setStore(new_met_aux_container);
154 const std::string metAssocKey =
"METAssoc_" + jet_collection;
159 metHelper.resetObjSelectionFlags();
171 for (
const auto *
el: *xaod_el)
172 if (
el->isAvailable<
char>(passPreORSelection)
173 &&
el->auxdata<
char>(passPreORSelection) == 1) met_electrons.push_back(
el);
179 met_electrons.asDataVector(),
181 "Failed to rebuild electron MET term");
192 for (
const auto *
photon: *xaod_photon)
193 if (
photon->isAvailable<
char>(passPreORSelection)
194 &&
photon->auxdata<
char>(passPreORSelection) == 1) met_photons.push_back(
photon);
199 met_photons.asDataVector(),
201 "Failed to rebuild photon MET term");
212 for (
const auto *tau: *xaod_tau)
213 if (tau->isAvailable<
char>(passPreORSelection)
214 && tau->auxdata<
char>(passPreORSelection) == 1) met_taus.push_back(tau);
219 met_taus.asDataVector(),
221 "Failed to rebuild tau MET term");
232 return StatusCode::FAILURE;
236 for (
const auto *
mu: *xaod_mu)
237 if (
mu->isAvailable<
char>(passPreORSelection)
238 &&
mu->auxdata<
char>(passPreORSelection) == 1) met_muons.push_back(
mu);
244 met_muons.asDataVector(),
246 "Failed to rebuild muon MET term");
258 met_muons.asDataVector(),
260 "Failed to rebuild muon MET term");
274 "Failed to rebuild jet MET term");
279 if (systematic.hash() ==
event->hashValue() && systematic.hash() !=
m_config->nominalHashValue()) {
288 if (softClusMet !=
nullptr) {
294 if (softTrkMet !=
nullptr) {
306 "Failed to rebuild Final Track MET");
311 top::check(
m_metSignif->varianceMET(new_met_container, eventInfo->averageInteractionsPerCrossing(),
"RefJet",
"PVSoftTrk",
"FinalTrk"),
"Failed to execute MetSignificance::varianceMET!");
313 for (
auto mets : *new_met_container){
314 mets->auxdecor<
float>(
"metSigET") =
m_metSignif->GetMETOverSqrtSumET();
315 mets->auxdecor<
float>(
"metSigHT") =
m_metSignif->GetMETOverSqrtHT();
316 mets->auxdecor<
float>(
"metSig") =
m_metSignif->GetSignificance();
317 mets->auxdecor<
float>(
"metSigRho") =
m_metSignif->GetRho();
318 mets->auxdecor<
float>(
"metSigVarL") =
m_metSignif->GetVarL();
319 mets->auxdecor<
float>(
"metSigVarT") =
m_metSignif->GetVarT();
332 std::string outputSGKey =
m_config->sgKeyMissingEt(
hash);
333 if (is_loose_event) outputSGKey =
m_config->sgKeyMissingEtLoose(
hash);
335 outputSGKey+=outputContainerSuffix;
336 const std::string outputSGKeyAux = outputSGKey +
"Aux.";
339 StatusCode saveAux =
evtStore()->tds()->record(new_met_aux_container, outputSGKeyAux);
341 if (
save.isFailure() || saveAux.isFailure()) {
342 return StatusCode::FAILURE;
346 return StatusCode::SUCCESS;
◆ recalculateMET()
StatusCode top::MissingETObjectCollectionMaker::recalculateMET |
( |
const bool |
executeNominal | ) |
|
– if executeNominal, skip other systematics (and vice-versa) –///
– if executeNominal, skip other systematics (and vice-versa) –///
Definition at line 77 of file MissingETObjectCollectionMaker.cxx.
88 m_config->sgKeyTopSystematicEvents() +
"Nominal"),
89 "Failed to retrieve nominal TopEvents");
92 m_config->sgKeyTopSystematicEvents()),
"Failed to retrieve TopEvents");
94 for (
auto x : *systEvents) {
96 if (!executeNominal &&
m_config->isSystNominal(
m_config->systematicName(
x->hashValue())))
continue;
97 if (executeNominal && !
m_config->isSystNominal(
m_config->systematicName(
x->hashValue())))
continue;
105 if (executeNominal) {
107 m_config->sgKeyTopSystematicEventsLoose() +
"Nominal"),
108 "Failed to retrieve nominal TopEventsLoose");
111 m_config->sgKeyTopSystematicEventsLoose()),
112 "Failed to retrieve TopEventsLoose");
115 for (
auto x : *systEventsLoose) {
117 if (!executeNominal &&
m_config->isSystNominal(
m_config->systematicName(
x->hashValue())))
continue;
118 if (executeNominal && !
m_config->isSystNominal(
m_config->systematicName(
x->hashValue())))
continue;
124 return StatusCode::SUCCESS;
◆ recommendedSystematics()
◆ renounce()
◆ renounceArray()
◆ specifiedSystematics() [1/2]
virtual const std::list<CP::SystematicSet>& top::MissingETObjectCollectionMaker::specifiedSystematics |
( |
| ) |
const |
|
inlinevirtual |
◆ specifiedSystematics() [2/2]
void top::MissingETObjectCollectionMaker::specifiedSystematics |
( |
const std::set< std::string > & |
specifiedSystematics | ) |
|
|
protectedvirtual |
– Get the recommended systematics from the tool, in std::vector format –///
– Recommendation is to use soft track terms and not soft calo terms –/// – Soft calo systematics are irrelevant, let's ignore them –///
– MC only –///
– Are we only doing Nominal? Did the user specify specific systematics to use? –///
Definition at line 349 of file MissingETObjectCollectionMaker.cxx.
354 for (
auto s : systList) {
356 if(!
m_config->getTreeFilter()->filterTree(
s.name()))
continue;
360 if (
s.name().find(
"SoftCalo") == std::string::npos) {
362 if (
s.name() ==
"") {
376 if (!
filter.filterTree(
s.name())) {
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_config
std::shared_ptr<top::TopConfig> top::MissingETObjectCollectionMaker::m_config |
|
private |
◆ m_detStore
◆ m_evtStore
◆ m_MET_core
std::string top::MissingETObjectCollectionMaker::m_MET_core |
|
private |
◆ m_met_maker
ToolHandle<IMETMaker> top::MissingETObjectCollectionMaker::m_met_maker |
|
private |
◆ m_met_systematics
◆ m_metSignif
◆ m_recommendedSystematics
std::list<CP::SystematicSet> top::MissingETObjectCollectionMaker::m_recommendedSystematics |
|
private |
◆ m_specifiedSystematics
std::list<CP::SystematicSet> top::MissingETObjectCollectionMaker::m_specifiedSystematics |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
Electron_v1 Electron
Definition of the current "egamma version".
MissingETAuxContainer_v1 MissingETAuxContainer
ToolHandle< IMETSignificance > m_metSignif
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
float phi() const
Returns .
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
MissingETContainer_v1 MissingETContainer
uint64_t bitmask_t
Type for status word bit mask.
ToolHandle< IMETSystematicsTool > m_met_systematics
virtual void setOwner(IDataHandleHolder *o)=0
StatusCode buildMETSum(const std::string &totalName, xAOD::MissingETContainer *metCont)
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
ToolHandle< IMETMaker > m_met_maker
def save(self, fileName="./columbo.out")
void addGhostMuonsToJets(const xAOD::MuonContainer &muons, xAOD::JetContainer &jets)
POOL::TEvent event(POOL::TEvent::kClassAccess)
::StatusCode StatusCode
StatusCode definition for legacy code.
Principal data object for Missing ET.
void check(bool thingToCheck, const std::string &usefulFailureMessage)
Print an error message and terminate if thingToCheck is false.
Auxiliary data store for xAOD::MissingETContainer.
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
std::list< CP::SystematicSet > m_recommendedSystematics
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
virtual const std::list< CP::SystematicSet > & specifiedSystematics() const
Container for xAOD::MissingET_v1 objects.
Class describing the basic event information.
Photon_v1 Photon
Definition of the current "egamma version".
struct TBPatternUnitContext Muon
StatusCode recalculateEventMET(const xAOD::SystematicEvent *event, const xAOD::MissingETContainer *met_core, const bool forceUseLooseObjects=false, const std::string &outputContainerSuffix="")
@ Track
Indicator for MET contribution from reconstructed charged particle tracks.
DataVector adapter that acts like it holds const pointers.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ Tau
The object is a tau (jet)
std::shared_ptr< top::TopConfig > m_config
std::list< CP::SystematicSet > m_specifiedSystematics
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>