00001 #ifndef ASSOCIATIONUTILS_OVERLAPDECORATIONHELPER_H 00002 #define ASSOCIATIONUTILS_OVERLAPDECORATIONHELPER_H 00003 00004 // EDM includes 00005 #include "xAODBase/IParticleContainer.h" 00006 00007 // Local includes 00008 #include "AssociationUtils/OverlapRemovalDefs.h" 00009 00010 namespace ORUtils 00011 { 00012 00022 class OverlapDecorationHelper 00023 { 00024 00025 public: 00026 00034 OverlapDecorationHelper(const std::string& inputLabel, 00035 const std::string& outputLabel, 00036 bool outputPassValue = false); 00037 00039 bool isInputObject(const xAOD::IParticle& obj) const; 00040 00042 bool isRejectedObject(const xAOD::IParticle& obj) const; 00043 00045 bool isSurvivingObject(const xAOD::IParticle& obj) const; 00046 00048 char getObjectPriority(const xAOD::IParticle& obj) const; 00049 00051 void setOverlapDecoration(const xAOD::IParticle& obj, bool result); 00052 00054 void setObjectPass(const xAOD::IParticle& obj); 00055 00057 void setObjectFail(const xAOD::IParticle& obj); 00058 00062 bool isDecorated(const xAOD::IParticleContainer& container) const; 00063 00066 void initializeDecorations(const xAOD::IParticleContainer& container); 00067 00069 void resetDecorations(const xAOD::IParticleContainer& container); 00070 00071 private: 00072 00074 bool m_useInputLabel; 00075 00077 ort::inputAccessor_t m_inputAccessor; 00079 ort::outputDecorator_t m_outputDecorator; 00080 00082 bool m_outputPassValue; 00083 00084 }; // class OverlapDecorationHelper 00085 00086 } // namespace ORUtils 00087 00088 #endif