Commit 19500f1f authored by Christos Anastopoulos's avatar Christos Anastopoulos
Browse files

xAODEgamma: Remove possibly unused methods

parent 7e7fea0e
......@@ -23,46 +23,46 @@ namespace xAOD {
/// Explicit Instantiation of Template
const SG::AuxElement::Accessor< float >*
showerShapeAccessorV1( xAOD::EgammaParameters::ShowerShapeType type )
{
showerShapeAccessorV1( xAOD::EgammaParameters::ShowerShapeType type )
{
switch( type ) {
DEFINE_ACCESSOR( float, e011 );
DEFINE_ACCESSOR( float, e033 );
DEFINE_ACCESSOR( float, e132 );
DEFINE_ACCESSOR( float, e1152 );
DEFINE_ACCESSOR( float, ethad1 );
DEFINE_ACCESSOR( float, ethad );
DEFINE_ACCESSOR( float, ehad1 );
DEFINE_ACCESSOR( float, f1 );
DEFINE_ACCESSOR( float, f3 );
DEFINE_ACCESSOR( float, f1core );
DEFINE_ACCESSOR( float, f3core );
DEFINE_ACCESSOR( float, e233 );
DEFINE_ACCESSOR( float, e235 );
DEFINE_ACCESSOR( float, e255 );
DEFINE_ACCESSOR( float, e237 );
DEFINE_ACCESSOR( float, e277 );
DEFINE_ACCESSOR( float, e333 );
DEFINE_ACCESSOR( float, e335 );
DEFINE_ACCESSOR( float, e337 );
DEFINE_ACCESSOR( float, e377 );
DEFINE_ACCESSOR( float, weta1 );
DEFINE_ACCESSOR( float, weta2 );
DEFINE_ACCESSOR( float, e2ts1 );
DEFINE_ACCESSOR( float, e2tsts1 );
DEFINE_ACCESSOR( float, fracs1 );
DEFINE_ACCESSOR( float, widths1 );
DEFINE_ACCESSOR( float, widths2 );
DEFINE_ACCESSOR( float, poscs1 );
DEFINE_ACCESSOR( float, poscs2 );
DEFINE_ACCESSOR( float, asy1 );
DEFINE_ACCESSOR( float, pos );
DEFINE_ACCESSOR( float, pos7 );
DEFINE_ACCESSOR( float, barys1 );
DEFINE_ACCESSOR( float, wtots1 );
DEFINE_ACCESSOR( float, emins1 );
DEFINE_ACCESSOR( float, emaxs1 );
DEFINE_ACCESSOR( float, r33over37allcalo );
DEFINE_ACCESSOR( float, e011 );
DEFINE_ACCESSOR( float, e033 );
DEFINE_ACCESSOR( float, e132 );
DEFINE_ACCESSOR( float, e1152 );
DEFINE_ACCESSOR( float, ethad1 );
DEFINE_ACCESSOR( float, ethad );
DEFINE_ACCESSOR( float, ehad1 );
DEFINE_ACCESSOR( float, f1 );
DEFINE_ACCESSOR( float, f3 );
DEFINE_ACCESSOR( float, f1core );
DEFINE_ACCESSOR( float, f3core );
DEFINE_ACCESSOR( float, e233 );
DEFINE_ACCESSOR( float, e235 );
DEFINE_ACCESSOR( float, e255 );
DEFINE_ACCESSOR( float, e237 );
DEFINE_ACCESSOR( float, e277 );
DEFINE_ACCESSOR( float, e333 );
DEFINE_ACCESSOR( float, e335 );
DEFINE_ACCESSOR( float, e337 );
DEFINE_ACCESSOR( float, e377 );
DEFINE_ACCESSOR( float, weta1 );
DEFINE_ACCESSOR( float, weta2 );
DEFINE_ACCESSOR( float, e2ts1 );
DEFINE_ACCESSOR( float, e2tsts1 );
DEFINE_ACCESSOR( float, fracs1 );
DEFINE_ACCESSOR( float, widths1 );
DEFINE_ACCESSOR( float, widths2 );
DEFINE_ACCESSOR( float, poscs1 );
DEFINE_ACCESSOR( float, poscs2 );
DEFINE_ACCESSOR( float, asy1 );
DEFINE_ACCESSOR( float, pos );
DEFINE_ACCESSOR( float, pos7 );
DEFINE_ACCESSOR( float, barys1 );
DEFINE_ACCESSOR( float, wtots1 );
DEFINE_ACCESSOR( float, emins1 );
DEFINE_ACCESSOR( float, emaxs1 );
DEFINE_ACCESSOR( float, r33over37allcalo );
DEFINE_ACCESSOR( float, ecore );
DEFINE_ACCESSOR( float, Reta );
DEFINE_ACCESSOR( float, Rphi );
......@@ -70,48 +70,12 @@ namespace xAOD {
DEFINE_ACCESSOR( float, Rhad );
DEFINE_ACCESSOR( float, Rhad1 );
DEFINE_ACCESSOR( float, DeltaE );
default:
default:
std::cerr << "xAOD::Egamma ERROR Unknown float ShowerShapeType ("
<< type << ") requested" << std::endl;
return nullptr;
}
}
const SG::AuxElement::Accessor< char >*
selectionMenuAccessorV1( xAOD::EgammaParameters::SelectionMenu menu )
{
switch( menu ) {
DEFINE_ACCESSOR( char, Loose);
DEFINE_ACCESSOR( char, Medium);
DEFINE_ACCESSOR( char, Tight);
DEFINE_ACCESSOR( char, LHLoose);
DEFINE_ACCESSOR( char, LHMedium);
DEFINE_ACCESSOR( char, LHTight);
DEFINE_ACCESSOR( char, MultiLepton);
default:
std::cerr << "xAOD::Egamma ERROR Unknown char ElectronSelectionMenu ("
<< menu << ") requested" << std::endl;
return nullptr;
}
}
const SG::AuxElement::Accessor< unsigned int >*
selectionisEMAccessorV1( xAOD::EgammaParameters::SelectionisEM isEM )
{
switch( isEM ) {
DEFINE_ACCESSOR( unsigned int, isEMLoose);
DEFINE_ACCESSOR( unsigned int, isEMMedium);
DEFINE_ACCESSOR( unsigned int, isEMTight);
DEFINE_ACCESSOR( unsigned int, isEMLHLoose);
DEFINE_ACCESSOR( unsigned int, isEMLHMedium);
DEFINE_ACCESSOR( unsigned int, isEMLHTight);
DEFINE_ACCESSOR( unsigned int, isEMMultiLepton);
default:
std::cerr << "xAOD::Egamma ERROR Unknown unsigned int ElectronSelectionisEM ("
<< isEM << ") requested" << std::endl;
return nullptr;
}
}
......
......@@ -9,7 +9,7 @@
#include "xAODEgamma/EgammaContainer.h"
#include "EgammaAccessors_v1.h"
#include "xAODPrimitives/tools/getIsolationAccessor.h"
#include "xAODPrimitives/tools/getIsolationCorrectionAccessor.h"
#include "xAODPrimitives/tools/getIsolationCorrectionAccessor.h"
#include "EventPrimitives/EventPrimitivesHelpers.h"
#include <stdexcept>
......@@ -53,8 +53,8 @@ Egamma_v1::Egamma_v1(const Egamma_v1& eg) : IParticle(eg) {
Egamma_v1& Egamma_v1::operator=(const Egamma_v1& eg ){
if (this != &eg){ // protect against invalid self-assignment
if (!this->container() && !this->hasStore() ) {
if (this != &eg){ // protect against invalid self-assignment
if (!this->container() && !this->hasStore() ) {
makePrivateStore();
}
this->IParticle::operator=( eg );
......@@ -89,17 +89,17 @@ Egamma_v1::GenVecFourMom_t Egamma_v1::genvecP4() const {
}
double Egamma_v1::e() const{
return genvecP4().E();
return genvecP4().E();
}
double Egamma_v1::rapidity() const {
return genvecP4().Rapidity();
return genvecP4().Rapidity();
}
Egamma_v1::FourMom_t Egamma_v1::p4() const {
FourMom_t p4;
p4.SetPtEtaPhiM( pt(), eta(), phi(),m());
return p4;
p4.SetPtEtaPhiM( pt(), eta(), phi(),m());
return p4;
}
void Egamma_v1::setP4(float pt, float eta, float phi, float m){
......@@ -139,15 +139,15 @@ Egamma_v1::EgammaCovMatrix_t Egamma_v1::covMatrix() const{
EgammaCovMatrix_t cov;
cov.setZero();
if(!acc.isAvailable(*this) ) {
if(!acc.isAvailable(*this) ) {
return cov;
}
const std::vector<float>& v = acc(*this);
size_t size= v.size();
const std::vector<float>& v = acc(*this);
size_t size= v.size();
if(size==16){
//up to 21.0.11
cov = Eigen::Map<const EgammaCovMatrix_t> (v.data());
}
}
else {
//from >21.0.11
EgammaCovMatrix_t cov;
......@@ -163,7 +163,7 @@ void Egamma_v1::setCovMatrix(const Egamma_v1::EgammaCovMatrix_t& cov){
MatrixHelpers::compress(cov,acc(*this));
}
///egamma author
///egamma author
uint16_t Egamma_v1::author(uint16_t mask) const {
static const Accessor< uint16_t > acc( "author" );
uint16_t author = acc(*this);
......@@ -210,7 +210,7 @@ bool Egamma_v1::showerShapeValue(float& value, const EgammaParameters::ShowerSha
if( !acc ) {
return false;
}
if(!acc->isAvailable(*this) ) {
if(!acc->isAvailable(*this) ) {
return false;
}
// Retrieve the value:
......@@ -279,7 +279,7 @@ bool Egamma_v1::setIsolation(float value, const Iso::IsolationType information)
}
///Isolation corrections
bool Egamma_v1::isolationCaloCorrection(float& value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
bool Egamma_v1::isolationCaloCorrection(float& value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
const Iso::IsolationCorrectionParameter param) const{
const SG::AuxElement::Accessor< float > acc = getIsolationCorrectionAccessor(flavour,corr,param);
if(!acc.isAvailable(*this) ) {
......@@ -290,7 +290,7 @@ bool Egamma_v1::isolationCaloCorrection(float& value, const Iso::IsolationFlavou
return true;
}
float Egamma_v1::isolationCaloCorrection(const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
float Egamma_v1::isolationCaloCorrection(const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
const Iso::IsolationCorrectionParameter param) const{
const SG::AuxElement::Accessor< float > acc = getIsolationCorrectionAccessor(flavour,corr,param);
......@@ -298,7 +298,7 @@ float Egamma_v1::isolationCaloCorrection(const Iso::IsolationFlavour flavour, co
return acc(*this);
}
bool Egamma_v1::setIsolationCaloCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
bool Egamma_v1::setIsolationCaloCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
const Iso::IsolationCorrectionParameter param){
const SG::AuxElement::Accessor< float > acc = getIsolationCorrectionAccessor(flavour,corr,param);
// Set the value:
......@@ -338,7 +338,7 @@ bool Egamma_v1::isolationTrackCorrection(float& value, const Iso::IsolationFlavo
return true;
}
float Egamma_v1::isolationTrackCorrection(const Iso::IsolationFlavour flavour, const Iso::IsolationTrackCorrection corr) const{
float Egamma_v1::isolationTrackCorrection(const Iso::IsolationFlavour flavour, const Iso::IsolationTrackCorrection corr) const{
const SG::AuxElement::Accessor< float > acc = getIsolationCorrectionAccessor(flavour,corr);
if( !acc.isAvailable(*this) ) {throw std::runtime_error( "Unknown/Unavailable Isolation correction requested" );}
return acc(*this);
......@@ -411,58 +411,10 @@ Egamma_v1::caloClusterLink( size_t index ) const {
AUXSTORE_OBJECT_SETTER_AND_GETTER( Egamma_v1, Egamma_v1::CLELVec_t,
caloClusterLinks, setCaloClusterLinks)
///Selectors / isEM and all that
///First with enums (static accessor no lookup => faster but less flexible)
bool Egamma_v1::passSelection(bool& value, const xAOD::EgammaParameters::SelectionMenu menu ) const {
const SG::AuxElement::Accessor< char >* acc = selectionMenuAccessorV1( menu );
if( !acc ) {
return false;
}
if(!acc->isAvailable(*this) ) {
return false;
}
value= (*acc)(*this);
return true;
}
bool Egamma_v1::passSelection(const xAOD::EgammaParameters::SelectionMenu menu ) const {
const SG::AuxElement::Accessor< char >* acc = selectionMenuAccessorV1( menu );
if(!acc ) throw std::runtime_error( "Unknown/Unavailable bool selection menu requested" );
return (*acc)(*this);
}
void Egamma_v1::setPassSelection(bool value, const xAOD::EgammaParameters::SelectionMenu menu){
const SG::AuxElement::Accessor< char >* acc = selectionMenuAccessorV1( menu );
( *acc )(*this)=value;
}
bool Egamma_v1::selectionisEM(unsigned int& value, const xAOD::EgammaParameters::SelectionisEM isEM) const {
const SG::AuxElement::Accessor< unsigned int >* acc = selectionisEMAccessorV1( isEM );
if(!acc ) {
return false;
}
if(!acc->isAvailable(*this) ) {
return false;
}
value= (*acc)(*this);
return true;
}
unsigned int Egamma_v1::selectionisEM(const xAOD::EgammaParameters::SelectionisEM isEM) const {
const SG::AuxElement::Accessor< unsigned int >* acc = selectionisEMAccessorV1( isEM );
if(!acc ) throw std::runtime_error( "Unknown/Unavailable unsigned int isEM requested" );
return (*acc)(*this);
}
void Egamma_v1::setSelectionisEM(unsigned int value, const xAOD::EgammaParameters::SelectionisEM isEM){
const SG::AuxElement::Accessor< unsigned int >* acc = selectionisEMAccessorV1( isEM );
( *acc )(*this)=value;
}
///Then with strings (full flexibility when adding new menus dynamically)
bool Egamma_v1::passSelection(bool& value, const std::string& menu ) const {
const SG::AuxElement::Accessor< char > acc( menu );
if(!acc.isAvailable(*this) ) {
if(!acc.isAvailable(*this) ) {
return false;
}
value= acc(*this);
......@@ -481,7 +433,7 @@ void Egamma_v1::setPassSelection(bool value, const std::string& menu){
bool Egamma_v1::selectionisEM(unsigned int& value, const std::string& isEM) const{
const SG::AuxElement::Accessor< unsigned int > acc( isEM );
if(!acc.isAvailable(*this) ) {
if(!acc.isAvailable(*this) ) {
return false;
}
value= acc(*this);
......@@ -500,7 +452,7 @@ void Egamma_v1::setSelectionisEM(unsigned int value, const std::string& isEM){
bool Egamma_v1::likelihoodValue(float& value, const std::string& LHValue/*=std::string("LHValue")*/) const{
const SG::AuxElement::Accessor<float> acc( LHValue );
if(!acc.isAvailable(*this) ) {
if(!acc.isAvailable(*this) ) {
return false;
}
value= acc(*this);
......
......@@ -29,7 +29,7 @@ namespace xAOD {
/** @brief Electron reconstructed by the Forward cluster-based algorithm */
const uint16_t AuthorFwdElectron=0x8;
/** @brief Object Reconstructed by standard cluster-based algorithm. Ambiguous ==> can be either Electron or Photon */
const uint16_t AuthorAmbiguous=0x10;
const uint16_t AuthorAmbiguous=0x10;
/** @brief trigger Electrons */
const uint16_t AuthorTrigElectron=0x20;
/** @brief trigger Photons */
......@@ -112,24 +112,24 @@ namespace xAOD {
};
/** @brief */
const uint32_t BADCLUSELECTRON =
const uint32_t BADCLUSELECTRON =
0x1 << MaskedCellCore |
0x1 << MissingFEBCellCore |
0x1 << MissingFEBCellEdgeS1 |
0x1 << MissingFEBCellEdgeS2 |
0x1 << DeadHVS1S2S3Core |
0x1 << DeadHVS1S2S3Edge ;
const uint32_t BADCLUSPHOTON =
0x1 << DeadHVS1S2S3Core |
0x1 << DeadHVS1S2S3Edge ;
const uint32_t BADCLUSPHOTON =
0x1 << MaskedCellCore |
0x1 << MissingFEBCellCore |
0x1 << MissingFEBCellEdgeS1 |
0x1 << MissingFEBCellEdgeS2 |
0x1 << DeadHVS1S2S3Core |
0x1 << DeadHVS1S2S3Core |
0x1 << DeadHVS1S2S3Edge |
0x1 << BadS1Core;
0x1 << BadS1Core;
const uint32_t ALLOQ= 0xFFFFFFFF;
......
......@@ -18,8 +18,8 @@
#include "xAODEgamma/EgammaEnums.h"
//CaloCluster include
#include "xAODCaloEvent/CaloCluster.h"
#include "xAODCaloEvent/CaloClusterContainer.h"
#include "xAODCaloEvent/CaloCluster.h"
#include "xAODCaloEvent/CaloClusterContainer.h"
//xAOD Primitives
#include "xAODPrimitives/IsolationCorrection.h"
......@@ -42,7 +42,7 @@
namespace xAOD {
/// @class xAOD::Egamma
/// @brief Class describing an e/gamma
/// @brief Class describing an e/gamma
/// @name xAOD::Egamma provides a public interface.
/// @name xAOD::Electron and xAOD::Photon inherit from this class
///
......@@ -58,7 +58,7 @@ namespace xAOD {
protected:
/// @name xAOD::Egamma constructors
/// The xAOD::Egamma is not supposed to be created directly, only via xAOD::Electron and xAOD::Photon.
/// xAOD::Egamma is an abstract class. It does not define the type() pure virtual function from IParticle
/// xAOD::Egamma is an abstract class. It does not define the type() pure virtual function from IParticle
/// The default constructors is protected
/// @{
......@@ -84,7 +84,7 @@ namespace xAOD {
/// @name xAOD::IParticle functions
/// These are already virtual due to IParticle
/// @{
/// @brief The transverse momentum (\f$p_T\f$) of the particle
virtual double pt() const final;
......@@ -102,7 +102,7 @@ namespace xAOD {
/// @brief The true rapidity (y) of the particle
virtual double rapidity() const final;
/// @brief Definition of the 4-momentum type
typedef IParticle::FourMom_t FourMom_t;
......@@ -110,8 +110,8 @@ namespace xAOD {
virtual FourMom_t p4() const final;
/// @brief The type of the object as a simple enumeration, remains pure virtual in e/gamma.
virtual Type::ObjectType type() const override =0 ;
virtual Type::ObjectType type() const override =0 ;
/// @}
......@@ -122,8 +122,8 @@ namespace xAOD {
typedef ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<double> > GenVecFourMom_t;
/// The full 4-momentum of the particle : internal egamma type.
GenVecFourMom_t genvecP4() const;
GenVecFourMom_t genvecP4() const;
/// @brief set the 4-vec
void setP4(float pt, float eta, float phi, float m);
......@@ -138,28 +138,28 @@ namespace xAOD {
/// @brief set the Mass
void setM(float m);
/// @}
/// @name xAOD::Egamma 4x4 Covariance Matrix
/// @{
/// @{
///4x4 Covariance Matrix in EtEtaPhiM (needs decision)
typedef Eigen::Matrix<float,4,4> EgammaCovMatrix_t;
/// Returns the 4x4 symmetric covariance matrix .
EgammaCovMatrix_t covMatrix() const;
EgammaCovMatrix_t covMatrix() const;
/// set the 4x4 symmetric covariance matrix .
void setCovMatrix(const EgammaCovMatrix_t& cov);
/// @}
/// @}
/// @name xAOD::Egamma Pointer to CaloClusters
/// @{
/// @{
/// @brief Return the number of xAOD::CaloClusters that define the electron
/// candidate
size_t nCaloClusters() const;
size_t nCaloClusters() const;
/// @brief Pointer to the xAOD::CaloCluster/s that define the electron
/// candidate
......@@ -168,14 +168,14 @@ namespace xAOD {
/// @brief ElementLink to the xAOD::CaloCluster/s that match the electron
/// candidate
const ElementLink< CaloClusterContainer >&
caloClusterLink( size_t index = 0 ) const;
caloClusterLink( size_t index = 0 ) const;
/// Helper type definition
typedef std::vector< ElementLink< CaloClusterContainer > > CLELVec_t;
/// @brief Get all cluster links
const CLELVec_t& caloClusterLinks() const;
/// @brief set Pointer to the xAOD::CaloCluster
/// @brief set Pointer to the xAOD::CaloCluster
void setCaloClusterLinks( const CLELVec_t& links );
/// @}
......@@ -184,13 +184,13 @@ namespace xAOD {
/// @name xAOD::Egamma author (i.e. which reco algorithm was used)
/// @{
/// @brief Get author
/// @brief Get author
uint16_t author(uint16_t bitmask=EgammaParameters::AuthorALL) const;
/// @brief add author
/// @brief add author
void addAuthor( uint16_t );
/// @brief set author
/// @brief set author
void setAuthor( uint16_t );
/// @}
......@@ -198,16 +198,16 @@ namespace xAOD {
/// as the same cluster leads to creation of both.
/// @{
/// @brief Get ambiguous
/// @brief Get ambiguous
const Egamma_v1* ambiguousObject() const;
/// @}
/// @name xAOD::Egamma Shower shape Accesors
/// If 'information' is stored in this xAOD::Egamma and is of the correct type,
/// then the function fills 'value' and returns 'true', otherwise it returns 'false', and does not touch 'value'.
///
/// @{
/// @{
/// @brief Accessor for ShowerShape values.
bool showerShapeValue(float& value,const EgammaParameters::ShowerShapeType information) const;
......@@ -222,9 +222,9 @@ namespace xAOD {
/// @}
/// @name xAOD::Egamma object quality of the calorimeter cluster
/// @{
/// @name xAOD::Egamma object quality of the calorimeter cluster
/// @{
/// @brief Check object quality. Return True is it is Good Object Quality
bool isGoodOQ(uint32_t mask ) const;
......@@ -233,14 +233,14 @@ namespace xAOD {
/// @brief Set the object quality
void setOQ(uint32_t newOQ);
///@}
/// @name xAOD::Egamma Isolation value Accesors
/// If 'information' is stored in this xAOD::Egamma and is of the correct type,
/// then the function fills 'value' and returns 'true', otherwise it returns 'false', and does not touch 'value'.
///
/// @{
/// @{
/// @brief Accessor for Isolation values.
bool isolation(float& value, const Iso::IsolationType information) const;
......@@ -275,19 +275,19 @@ namespace xAOD {
/// If 'information' is stored in this xAOD::Egamma and is of the correct type,
/// then the function fills 'value' and returns 'true', otherwise it returns 'false', and does not touch 'value'.
///
/// @{
/// @{
/// @brief Accessor for flavour and type depended Isolation Calo correction.
bool isolationCaloCorrection(float& value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
bool isolationCaloCorrection(float& value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
const Iso::IsolationCorrectionParameter param) const;
/// @brief Accessor for flavour and type depended Isolation Calo corrections , this just returns the correction without internaly checking if it exists.
/// Will lead to an exception if the information is not available
float isolationCaloCorrection(const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
float isolationCaloCorrection(const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
const Iso::IsolationCorrectionParameter param) const;
/// @brief set method for flavour and type depended Isolation Calo Corrections.
bool setIsolationCaloCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
bool setIsolationCaloCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection corr,
const Iso::IsolationCorrectionParameter param);
/// @brief Accessor for type depended Isolation Calo correction.
......@@ -323,52 +323,16 @@ namespace xAOD {
/// @}
/// @name xAOD::Egamma selector / isEM methods using enums
/// @{
/// @name xAOD::Egamma selector methods with enums
/// @brief Check if the egamma object pass a selection menu
///If the menu decision is stored in this xAOD::Egamma,
///then the function fills 'value' with the decision (reference)
///and returns 'true', otherwise it returns 'false',
///and does not touch 'value'.
bool passSelection(bool& value, const xAOD::EgammaParameters::SelectionMenu menu ) const;
/// @brief Check if the egamma object pass a selection menu
/// If the particular menu decision is not stored in this xAOD::Egamma,
/// an exception will occur
bool passSelection( const xAOD::EgammaParameters::SelectionMenu menu ) const;
/// @brief Set the selection decision for a menu
void setPassSelection(bool value, const xAOD::EgammaParameters::SelectionMenu menu);
/// @brief Return the isEM word for a selection menu
///If the menu isEM is stored in this xAOD::Egamma,
///then the function fills 'value' with the isEM (reference)
///and returns 'true', otherwise it returns 'false',