ATLAS Offline Software
Event/xAOD/xAODMissingET/xAODMissingET/MissingETComposition.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef XAODMISSINGET_MISSINGETCOMPOSITION_H
8 #define XAODMISSINGET_MISSINGETCOMPOSITION_H
9 
17 #include "xAODJet/Jet.h"
18 
19 namespace xAOD
20 {
22  {
58  static bool insert(MissingETComponentMap* pMap,const MissingET* pMET,const IParticle* pPart,const MissingETBase::Types::object_vector_t& signalList,
71  static bool insert(MissingETComponentMap* pMap,const MissingET* pMET,const IParticle* pPart,double wpx,double wpy,double wet);
79  static bool insert(MissingETComponentMap* pMap,const MissingET* pMET,const IParticle* pPart,const MissingETBase::Types::object_vector_t& signalList,double wpx,double wpy,double wet,
81 
96  static MissingETComponentMap::const_iterator find(const MissingETComponentMap* pMap,const std::string& metName);
97  static MissingETComponentMap::iterator find(MissingETComponentMap* pMap,const std::string& metName);
100  static size_t findIndex(const MissingETComponentMap* pMap,const MissingET* pmetObj);
101  static size_t findIndex(const MissingETComponentMap* pMap,const std::string& metName);
103 
104 
158  static const MissingETComponent* getComponent(const MissingETComponentMap* pMap,const IParticle* pPart);
159  static const MissingETComponent* getComponent(const MissingETComponentMap* pMap,const MissingET* pmetObj);
160  static const MissingETComponent* getComponent(const MissingETComponentMap* pMap,const std::string& metName);
168  static MissingETComponent* getComponent(MissingETComponentMap* pMap,const MissingET* pmetObj);
169  static MissingETComponent* getComponent(MissingETComponentMap* pMap,const std::string& metName);
179  static const MissingET* getMissingET(const MissingETComponentMap* pMap,const IParticle* pPart);
181  static const MissingET* getMissingET(const MissingETComponentMap* pMap,const std::string& name);
199  template<int OBJTYPE>
200  static bool fillMissingET(const MissingETComponentMap* pMap,MissingET* pMET,
202  {
203  if ( pMap == 0 || pMap->empty() ) return false;
204  //
205  double sumet(pMET->sumet());
208  for ( ; fComp != lComp; ++fComp )
209  {
210  const MissingETComponent* pCont = *fComp;
211  if ( pCont != 0 )
212  {
213  // get objects from contribution
216  for ( size_t iObj(0); iObj<objs.size(); ++iObj )
217  {
218  if ( objs[iObj]->type() == OBJTYPE )
219  { // this is really stupid!!!!
220  pMET->add(objs.at(iObj)->p4().Px()*kinePars.at(iObj).wpx(),
221  objs.at(iObj)->p4().Py()*kinePars.at(iObj).wpy(),
222  objs.at(iObj)->pt()*kinePars.at(iObj).wet());
223  } // requested type
224  } // loop on contributing objects
225  } // contribution valid
226  } // loop on all contributions
227  return pMET->sumet() != sumet;
228  } // fillMissingET
229 
247  static bool add(MissingETAssociationMap* pMap,const Jet* pJet,
248  const std::vector<ElementLink<IParticleContainer> >& jetconst=std::vector<ElementLink<IParticleContainer> >(),
263  static bool add(MissingETAssociationMap* pMap,const Jet* pJet,
264  const std::vector<const IParticle*>& jetracks=std::vector<const IParticle*>());
275  static bool addMiscAssociation(MissingETAssociationMap* pMap);
285  static bool insert(MissingETAssociationMap* pMap,size_t jetIndex,const IParticle* pPart,const std::vector<const IParticle*>& constlist);
295  static bool insert(MissingETAssociationMap* pMap,const Jet* pJet,const IParticle* pPart,const std::vector<const IParticle*>& constlist);
303  static bool insert(MissingETAssociationMap* pMap,const IParticle* pPart,const std::vector<const IParticle*>& constlist,
304  std::map<const IParticle*,MissingETBase::Types::constvec_t> pOverride=std::map<const IParticle*,MissingETBase::Types::constvec_t>());
305 
306  static bool setJetConstSum(MissingETAssociationMap* metMap,const Jet* jet,const std::vector<const IParticle*>& altConsts,
307  std::map<const IParticle*,MissingETBase::Types::constvec_t> pOverride);
315  static bool insertMisc(MissingETAssociationMap* pMap,const IParticle* pPart,const std::vector<const IParticle*>& constlist);
332 
364  static std::vector<const MissingETAssociation*> getAssociations(const MissingETAssociationMap* pMap,const IParticle* pPart);
366  static bool objSelected(const MissingETAssociationHelper& helper,const IParticle* obj);
368  static const MissingETAssociation* getAssociation(const MissingETAssociationMap* pMap,const Jet* pJet);
369  // static const MissingETAssociation* getMiscAssociation(const MissingETAssociationMap* pMap);
375  static std::vector<MissingETAssociation*> getAssociations(MissingETAssociationMap* pMap,const IParticle* pPart);
377  // static MissingETAssociation* getMiscAssociation(MissingETAssociationMap* pMap);
382  // Leave these for now -- decide how to treat calo vs track vs jet vs signal
383  // static MissingETBase::Types::constvec_t getConstVec(const MissingETAssociationMap* pMap,const IParticle* pPart);
384  // static MissingETBase::Types::constvec_t getConstVec(MissingETAssociationMap::const_iterator fCont,const IParticle* pPart);
385  static const Jet* getRefJet(const MissingETAssociationMap* pMap,const IParticle* pPart);
389  }; // MissingETComposition
390 } // namespace xAOD
391 
462  // /*! @brief Object factories for a MET contribution object
463  // *
464  // * These functions can be helpful to generate @link xAOD::MissingETComponent MissingETComponent @endlink objects. They invoke the respective constructor
465  // * with the given list of arguments.
466  // *
467  // * @warning These functions expose the @link xAOD::MissingETComponent MissingETComponent @endlink object to clients, which may not be desirable.
468  // * Non-experts should probably not use them.
469  // *
470  // */
471  // struct Contribution
472  // {
473  // /*! @name Object factories for contribution object
474  // * @anchor contrib_factory
475  // */
476  // /*!@{*/
477  // /*! @brief Default construction
478  // *
479  // * Instantiates an empty @link xAOD::MissingETComponent MissingETComponent @endlink object with default parameters given in
480  // * @link xAOD::MissingETComponent::MissingETComponent() MissingETComponent::MissingETComponent() @endlink.
481  // *
482  // * @return Pointer to valid but empty @link xAOD::MissingETComponent MissingETComponent @endlink object.
483  // */
484  // static MissingETComponent* generate();
485  // /*! @brief Construct with a given MET object
486  // *
487  // * Instantiates an incomplete (not fully loaded) @link xAOD::MissingETComponent MissingETComponent @endlink object with a link
488  // * to a @link xAOD::MissingET MissingET @endlink object and otherwise default data.
489  // *
490  // * @return Pointer to valid but incomplete @link xAOD::MissingETComponent MissingETComponent @endlink object.
491  // *
492  // * @param[in] pmetObj pointer to non-modifiable MET object.
493  // *
494  // * @note If the given pointer to the @link xAOD::MissingET MissingET @endlink is NULL, the returned contribution object
495  // * is empty. This is the same behaviour as implemented in the xAOD::MissingETComposition::generate() function.
496  // * If the reference to the container in the MET object is invalid,
497  // * @link xAOD::MissingETComponent::updateMETLink() MissingETComponent::updateMETlink() @endlink
498  // * must be called after the @link xAOD::MissingET MissingET @endlink object has been inserted into a storable
499  // * @link xAOD::MissingETContainer MissingETContainer @endlink. Only then is the EL complete and valid.
500  // */
501  // static MissingETComponent* generate(const MissingET* pmetObj);
502  // /*! @brief Construct with a given MET object and a first contributing object
503  // *
504  // * Instantiates a complete (loaded with one contributing object) @link xAOD::MissingETComponent MissingETComponent @endlink
505  // * object with a link to a @link xAOD::MissingET MissingET @endlink object and otherwise default data.
506  // *
507  // * @return Pointer to valid and loaded @link xAOD::MissingETComponent MissingETComponent @endlink object. Returns NULL if problems
508  // * with the generation occur.
509  // *
510  // * @param[in] pmetObj pointer to non-modifiable MET object.
511  // * @param[in] pPart pointer to non-modifiable contributing object.
512  // * @param[in] weight reference to non-modifiable kinematic weight object MissingETComposition::Weight (optional,
513  // * default is given by Weight::Weight()).
514  // * @param[in] sw status of contribution (optional, default is MissingETBase::Status::defaultAccept).
515  // *
516  // * @note If the reference to the container in the MET object is invalid,
517  // * xAOD::MissingETComposition::Contribution::updateMETLink() must be called after the @link MissingET MissingET @endlink object has been inserted into a storable
518  // * @link MissingETContainer MissingETContainer @endlink. Only then is the EL complete and valid.
519  // *
520  // * @warning Any invalid input (expecially NULL pointers) suppresses generation of the @link MissingETComponent MissingETComponent @endlink
521  // * object (a NULL pointer is returned).
522  // */
523  // static MissingETComponent* generate(const MissingET* pmetObj,const IParticle* pPart,const MissingETBase::Types::weight_t& weight=MissingETBase::Types::weight_t(),
524  // MissingETBase::Types::bitmask_t sw=MissingETBase::Status::defaultAccept);
525  // /*! @brief Construct with a given MET object and a first contributing object
526  // *
527  // * Instantiates a complete (loaded with one contributing object) @link MissingETComponent MissingETComponent @endlink
528  // * object with a link to a @link MissingET MissingET @endlink object and otherwise default data.
529  // *
530  // * @return Pointer to valid and loaded @link MissingETComponent MissingETComponent @endlink object. Returns NULL if problem with generation.
531  // *
532  // * @param[in] pmetObj pointer to non-modifiable MET object.
533  // * @param[in] pPart pointer to non-modifiable contributing object.
534  // * @param[in] wpx kinematic weight @f$ w_{x} @f$
535  // * @param[in] wpy kinematic weight @f$ w_{y} @f$
536  // * @param[in] wet kinematic weight @f$ w_{\rm T} @f$
537  // * @param[in] sw status of contribution (optional, default is MissingETBase::Status::defaultAccept.
538  // *
539  // * @note If the reference to the container in the MET object is invalid,
540  // * Contribution::updateMETLink() must be called after the @link MissingET MissingET @endlink object has been inserted into a storable
541  // * @link MissingETContainer MissingETContainer @endlink. Only then is the EL complete and valid. The same
542  // * applies to the EL to all contributing objects.
543  // * Invoking Contribution::updateLinks() updates all EL with the container pointers, making them valid if the container pointers are not
544  // * NULL. This action involves a loop over the full list of contributing objects.
545  // *
546  // * @warning Any invalid input (expecially NULL pointers) suppresses generation of the @link MissingETComponent MissingETComponent @endlink
547  // * object (a NULL pointer is returned).
548  // */
549  // static MissingETComponent* generate(const MissingET* pmetObj,const IParticle* pPart,double wpx,double wpy,double wet,MissingETBase::Types::bitmask_t sw=MissingETBase::Status::clearedStatus());
550 
551  // /*!@}*/
552  // }; // Contribution
553 
554 #endif
xAOD::MissingETComponentMap_v1
Definition: MissingETComponentMap_v1.h:25
xAOD::MissingETComposition::begin
static MissingETComponentMap::iterator begin(MissingETComponentMap *pMap)
Iterator access to beginning of composition map.
Jet.h
xAOD::name
name
Definition: TriggerMenuJson_v1.cxx:29
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::MissingETComposition
Collection of functions managing the MET composition map and association map.
Definition: Event/xAOD/xAODMissingET/xAODMissingET/MissingETComposition.h:22
xAOD::MissingETAssociation_v1
MET association descriptor contains object links and corresponding parameters.
Definition: MissingETAssociation_v1.h:29
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
xAOD::MissingET_v1::sumet
float sumet() const
Returns.
xAOD::MissingETComposition::addMiscAssociation
static bool addMiscAssociation(MissingETAssociationMap *pMap)
Add an association to hold objects not associated to any jet.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:227
xAOD::MissingETComposition::find
static MissingETComponentMap::const_iterator find(const MissingETComponentMap *pMap, const MissingET *pmetObj)
Find non-modifiable contribution for a given MET object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:82
xAOD::MissingETComposition::objSelected
static bool objSelected(const MissingETAssociationHelper &helper, const IParticle *obj)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:375
xAOD::MissingETComposition::end
static MissingETComponentMap::iterator end(MissingETComponentMap *pMap)
MissingETCompositionBase.h
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
MissingETBase::Types::weight_vector_t
std::vector< weight_t > weight_vector_t
Vector type for kinematic weight containers.
Definition: MissingETComponent_v1.h:265
MissingETBase::Types::bitmask_t
uint64_t bitmask_t
Type for status word bit mask.
Definition: MissingETBase.h:39
MissingETBase::UsageHandler::OnlyCluster
@ OnlyCluster
CaloCluster based only.
Definition: MissingETCompositionBase.h:184
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
MissingETComponent.h
xAOD::MissingETAssociation_v1::ConstVec
Vector sum of constituents for subtractive overlap removal.
Definition: MissingETAssociation_v1.h:36
xAOD::MissingETComposition::getRefJet
static const Jet * getRefJet(const MissingETAssociationMap *pMap, const IParticle *pPart)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:425
xAOD::MissingETAssociationMap_v1
Definition: MissingETAssociationMap_v1.h:29
xAOD::MissingETComposition::end
static MissingETComponentMap::const_iterator end(const MissingETComponentMap *pMap)
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:112
xAOD::MissingETComposition::getComponent
static const MissingETComponent * getComponent(const MissingETComponentMap *pMap, const IParticle *pPart)
Access non-modifiable contribution object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:122
xAOD::MissingETComposition::insert
static bool insert(MissingETComponentMap *pMap, const MissingET *pMET, const IParticle *pPart, MissingETBase::Types::weight_t weight=MissingETBase::Types::weight_t())
Insert contributing signal or physics object by pointer, with optional kinematic weight object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:42
xAOD::MissingETComposition::getConstVec
static MissingETBase::Types::constvec_t getConstVec(const MissingETAssociationMap *pMap, const IParticle *pPart, MissingETBase::UsageHandler::Policy p)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:361
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
xAOD::MissingETComposition::findIndex
static size_t findIndex(const MissingETComponentMap *pMap, const std::string &metName)
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
xAOD::MissingETComposition::findIndex
static size_t findIndex(const MissingETComponentMap *pMap, const MissingET *pmetObj)
xAOD::MissingETComposition::fillMissingET
static bool fillMissingET(const MissingETComponentMap *pMap, MissingET *pMET, MissingETBase::Types::bitmask_t=MissingETBase::Status::clearedStatus())
Fill a given MissingET object.
Definition: Event/xAOD/xAODMissingET/xAODMissingET/MissingETComposition.h:200
xAOD::MissingETComposition::begin
static MissingETComponentMap::const_iterator begin(const MissingETComponentMap *pMap)
Const iterator access to beginning of composition map.
checkFileSG.objs
list objs
Definition: checkFileSG.py:93
xAOD::MissingET_v1
Principal data object for Missing ET.
Definition: MissingET_v1.h:25
xAOD::MissingETComposition::getMissingET
static const MissingET * getMissingET(const MissingETComponentMap *pMap, const IParticle *pPart)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:170
MissingETAssociation.h
xAOD::MissingETComposition::setJetConstSum
static bool setJetConstSum(MissingETAssociationMap *metMap, const Jet *jet, const std::vector< const IParticle * > &altConsts, std::map< const IParticle *, MissingETBase::Types::constvec_t > pOverride)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:296
xAOD::MissingETComposition::insertMisc
static bool insertMisc(MissingETAssociationMap *pMap, const IParticle *pPart, const std::vector< const IParticle * > &constlist)
Insert contributing object into miscellaneous association.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:312
MissingETBase::UsageHandler::Policy
Policy
Policies on usage checks.
Definition: MissingETCompositionBase.h:182
xAOD::MissingET_v1::add
void add(const IParticle *particle)
Add particle kinematics to MET.
Definition: MissingET_v1.cxx:77
MissingET.h
xAOD::MissingETComposition::findIndex
static size_t findIndex(const MissingETComponentMap *pMap, MissingETBase::Types::bitmask_t src)
xAOD::MissingETComposition::add
static bool add(MissingETComponentMap *pMap, const MissingET *pMET, MissingETBase::Types::bitmask_t sw=MissingETBase::Status::clearedStatus())
Adding a MissingET object to the map.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:29
xAOD::MissingETComposition::getAssociation
static const MissingETAssociation * getAssociation(const MissingETAssociationMap *pMap, const Jet *pJet)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:415
xAOD::MissingETAssociationHelper
Definition: MissingETAssociationHelper.h:26
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
MissingETComponentMap.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
xAOD::MissingETComponent_v1::Weight
Kinematic weight descriptor.
Definition: MissingETComponent_v1.h:28
xAOD::MissingETComposition::getWeight
static MissingETBase::Types::weight_t getWeight(const MissingETComponentMap *pMap, const IParticle *pPart)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:155
MissingETAssociationMap.h
xAOD::MissingETComposition::getStatusWord
static MissingETBase::Types::bitmask_t getStatusWord(const MissingETComponentMap *pMap, const MissingET *pmetObj)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:163
python.PyAthena.obj
obj
Definition: PyAthena.py:135
MissingETBase::Status::clearedStatus
static Types::bitmask_t clearedStatus()
Cleared term tag accessor.
Definition: MissingETCompositionBase.h:115
xAOD::MissingETComposition::selectIfNoOverlaps
static bool selectIfNoOverlaps(MissingETAssociationHelper &helper, const IParticle *obj, MissingETBase::UsageHandler::Policy p)
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:382
MissingETAssociationHelper.h
MissingETBase::Types::object_vector_t
std::vector< const xAOD::IParticle * > object_vector_t
Vector of object type.
Definition: MissingETCompositionBase.h:59
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
xAOD::MissingETComponent_v1
MET component descriptor contains object links and corresponding parameters.
Definition: MissingETComponent_v1.h:24
xAOD::MissingETComposition::getAssociations
static std::vector< const MissingETAssociation * > getAssociations(const MissingETAssociationMap *pMap, const IParticle *pPart)
Access non-modifiable contribution object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:391
xAOD::MissingETComponent_v1::objects
std::vector< const IParticle * > objects() const
Access contributing objects.
Definition: MissingETComponent_v1.cxx:295