ATLAS Offline Software
Loading...
Searching...
No Matches
IDPerfMonEoverP Class Reference

Create a simple ntuple to perform EoverP studies with. More...

#include <IDPerfMonEoverP.h>

Inheritance diagram for IDPerfMonEoverP:

Public Member Functions

 IDPerfMonEoverP (const std::string &name, ISvcLocator *pSvcLocator)
 Default constructor.
 ~IDPerfMonEoverP ()
 Destructor.
StatusCode initialize ()
 Gaudi algorithm hooks.
StatusCode finalize ()
StatusCode execute (const EventContext &ctx)
 Execute method.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvc > StoreGateSvc_t

Private Member Functions

void addToValidationNtuple (const Trk::Perigee *, const xAOD::CaloCluster *, int isOrginal)
 addToValidationNutple
void clearValidationNtuple ()
void validationAction ()
void deleteAction () const
void fillIsEM (const xAOD::Electron *eg)
void fillGeneral (const xAOD::Electron *eg)
bool passMETCleaningCuts () const
bool fillVertexInformation (std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, xAOD::Vertex const *&primaryVertexFirstCandidate)
bool storeMETinformation ()
VxPos findAssociatedVertex (std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, const xAOD::Vertex *primaryVertexFirstCandidate, const xAOD::Electron *) const
void extrapolateToTheCalo (const Trk::TrackParameters *trkPar, const xAOD::CaloCluster *cluster, double *eta, double *phi, double *deltaEta, double *delatPhi)
void fillElectronInfo (const xAOD::Electron *p)
void fillTriggerInformation ()
bool fillLastMeasurement (const Trk::Track *track, const int fitter)
double correctIP_PV (int electron_i, bool do_d0)
std::vector< int > FillSimpleTree ()
bool passWenuSelection (std::vector< int > &electrons)
bool passZeeSelection (std::vector< int > &electrons)
double getMassCluster (int el1, int el2)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::string m_InputElectronContainerName
 Electron collection input name.
std::string m_metRefFinalName
std::string m_jetContainerName
 JEt collection input name.
std::string m_missingEtObjectName
 MET input name.
std::string m_primaryVertexCollection
 Primary vertex input name.
std::string m_OutputTrackCollectionName_no1
 Name of output of Refitted Inner Detector Tracks.
std::string m_OutputTrackCollectionName_no2
TrackCollection * m_refittedTracks_no1
 Refitted track collection.
TrackCollection * m_refittedTracks_no2
SG::ReadHandleKey< xAOD::EventInfo > m_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}
 ReadHandle to the Event Info.
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter
 The track refitter.
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter_no2
 The track refitter.
ToolHandle< Trig::TrigDecisionTool > m_trigDec
 The trigger decision tool.
ToolHandle< IJetSelector > m_jetCleaningTool {this,"JetCleaningTool","JetCleaningTool/JetCleaningTool",""}
 jet selector tool
bool m_refitEverything
bool m_isDATA
bool m_fillVertexInfo
bool m_validationMode
 < boolean to switch to validation mode
bool m_fillDetailedTree
 validation tree name - to be acessed by this from root
std::string m_validationTreeName
 validation tree description - second argument in TTree
std::string m_validationTreeDescription
 stream/folder to for the TTree to be written out
std::string m_validationTreeFolder
 Root Validation Tree.
TTree * m_validationTree
unsigned int m_runNumber
unsigned int m_evtNumber
unsigned int m_lumi_block
int m_nelectrons
int m_electronCounter
 counter for electrons
float m_electronTheta [3][NOS_ELECTRONS] {}
 Track theta at perigee.
float m_electronEta [3][NOS_ELECTRONS] {}
 Track Eta at perigee.
float m_electronPhi [3][NOS_ELECTRONS] {}
 Track Phi on electron.
float m_electronQoverP [3][NOS_ELECTRONS] {}
 Track q over p on electron.
float m_electrond0 [3][NOS_ELECTRONS] {}
 Track Phi on electron.
float m_electronz0 [3][NOS_ELECTRONS] {}
 Track q over p on electron.
float m_electronLMQoverP [3][NOS_ELECTRONS] {}
 Track q over p on electron.
float m_electronErrTheta [3][NOS_ELECTRONS] {}
 Track theta error on electron.
float m_electronErrPhi [3][NOS_ELECTRONS] {}
 Track phi error on electron.
float m_electronErrQoverP [3][NOS_ELECTRONS] {}
float m_electronErrd0 [3][NOS_ELECTRONS] {}
float m_electronErrz0 [3][NOS_ELECTRONS] {}
int m_nTRT [NOS_ELECTRONS] {}
int m_nSCT [NOS_ELECTRONS] {}
int m_nBLayer [NOS_ELECTRONS] {}
int m_nPIX [NOS_ELECTRONS] {}
int m_nTRTout [NOS_ELECTRONS] {}
int m_nSCTout [NOS_ELECTRONS] {}
int m_nPIXout [NOS_ELECTRONS] {}
int m_nTRTHT [NOS_ELECTRONS] {}
int m_nTRTHTout [NOS_ELECTRONS] {}
int m_author [NOS_ELECTRONS] {}
float m_ClusterEnergy [NOS_ELECTRONS] {}
float m_ClusterEta [NOS_ELECTRONS] {}
float m_ClusterPhi [NOS_ELECTRONS] {}
bool m_IsEMLoose [NOS_ELECTRONS] {}
bool m_IsEMMedium [NOS_ELECTRONS] {}
bool m_IsEMTight [NOS_ELECTRONS] {}
bool m_IsEMTightTRT [NOS_ELECTRONS] {}
bool m_isGoodOQ [NOS_ELECTRONS] {}
int m_associatedToVtx [NOS_ELECTRONS] {}
VxPos m_vxpos [NOS_ELECTRONS]
int m_nbpv
int m_pvtype [NO_PV] {}
int m_pvnbtk [NO_PV] {}
float m_pvsumpt [NO_PV] {}
float m_pvx [NO_PV] {}
float m_pvy [NO_PV] {}
float m_pvz [NO_PV] {}
float m_errpvx [NO_PV] {}
float m_errpvy [NO_PV] {}
float m_errpvz [NO_PV] {}
float m_covpvxpvy [NO_PV] {}
float m_covpvypvz [NO_PV] {}
float m_covpvzpvx [NO_PV] {}
bool m_METgoodness
float m_sumet
float m_missingEt
float m_missingEtx
float m_missingEty
float m_ePID_ShowerType [50][NOS_ELECTRONS] {}
float m_ePID_IsolationType [50][NOS_ELECTRONS] {}
float m_ePID_TrackCaloMatchType [50][NOS_ELECTRONS] {}
float m_ePID_SummaryType [50][NOS_ELECTRONS] {}
std::vector< std::pair< xAOD::EgammaParameters::ShowerShapeType, std::string > > m_PID_ShowerType_Names
std::vector< std::pair< xAOD::Iso::IsolationType, std::string > > m_PID_IsolationType_Names
std::vector< std::pair< xAOD::EgammaParameters::TrackCaloMatchType, std::string > > m_PID_TrackCaloMatchType_Names
std::vector< std::pair< xAOD::SummaryType, std::string > > m_PID_SummaryType_Names
bool m_trigger [50] {}
std::vector< std::string > m_triggerNames
TH1F * m_ZeeLooseMassOS_Cluster
TH1F * m_ZeeLooseMassSS_Cluster
TH1F * m_ZeeMediumMassOS_Cluster
TH1F * m_ZeeMediumMassSS_Cluster
TH2F * m_ZeeMediumOS_ClusterPtEta
TH1F * m_WenuLooseElectronET
TH1F * m_WenuTight_Met
TH1F * m_WenuTight_MT
TH1F * m_WenuTightMet_MT
TH1F * m_WenuTightElectronET
TH1F * m_WenuTightW_PT
TH2F * m_WenuTightElectron_PTEtaPos
TH2F * m_WenuTightElectron_PTEtaNeg
 validation tree name - to be acessed by this from root
std::string m_smallValidationTreeName
 validation tree description - second argument in TTree
std::string m_smallValidationTreeDescription
 stream/folder to for the TTree to be written out
std::string m_smallValidationTreeFolder
 Root Validation Tree.
TTree * m_smallValidationTree
double m_small_QoverP
double m_small1_QoverP
double m_small2_QoverP
double m_smallClusterEnergy
double m_smallClusterPhi
double m_smallClusterEta
double m_smallTrackTheta
double m_smallCharge
double m_smalld0
double m_smallz0
std::string m_lhTune
AsgElectronLikelihoodTool * m_LHToolLoose2015
AsgElectronLikelihoodTool * m_LHToolMedium2015
AsgElectronLikelihoodTool * m_LHToolTight2015
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Create a simple ntuple to perform EoverP studies with.

Author
A. Morley

Definition at line 79 of file IDPerfMonEoverP.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 376 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ IDPerfMonEoverP()

IDPerfMonEoverP::IDPerfMonEoverP ( const std::string & name,
ISvcLocator * pSvcLocator )

Default constructor.

Definition at line 52 of file IDPerfMonEoverP.cxx.

53 :
54 AthAlgorithm(name, pSvcLocator),
59 m_trigDec("Trig::TrigDecisionTool/TrigDecisionTool"),
61 m_isDATA(true),
62 m_validationMode(true),
63 m_fillDetailedTree(false),
64 m_validationTreeName( "EGrefitter" ),
65 m_validationTreeDescription( "egamma track refitter caches" ),
66 m_validationTreeFolder( "/ZmumuValidationUserSel/EGrefitter"), // use same root file name as Zmumu
73 m_nbpv{},
75 m_sumet{},
84 m_WenuLooseElectronET(nullptr),
85 m_WenuTight_Met(nullptr),
86 m_WenuTight_MT(nullptr),
87 m_WenuTightMet_MT(nullptr),
88 m_WenuTightElectronET(nullptr),
89 m_WenuTightW_PT(nullptr),
92 m_smallValidationTreeName("EGrefitterSmall"),
93 m_smallValidationTreeDescription("Small Tree for E/p fits"),
94 m_smallValidationTreeFolder("/eoverpValidation2/efitterValidation2"),
95 m_smallValidationTree(nullptr),
104 m_smalld0{},
105 m_smallz0{},
109{
110
111// The following properties are specified at run-time
112// (declared in jobOptions file)
113 declareProperty("RefitTracks", m_refitEverything);
114 declareProperty("isDATA", m_isDATA);
115 declareProperty("FillVertexInfo", m_fillVertexInfo = false, "job option to activate the filling of the vertex info");
116 declareProperty("ReFitterTool", m_TrackRefitter, "ToolHandle for track fitter implementation");
117 declareProperty("ReFitterTool2", m_TrackRefitter_no2, "ToolHandle for track fitter implementation");
118 declareProperty("TrigDecisionTool", m_trigDec, "The TrigDecisionTool instance.");
119 declareProperty("InputElectronContainerName", m_InputElectronContainerName = "Electrons");
120 declareProperty("InputJetContainerName", m_jetContainerName = "AntiKt4LCTopoJets");
121 // declareProperty("MissingEtObjectName", m_missingEtObjectName = "MET_RefFinal");
122 declareProperty("METFinalName", m_metRefFinalName= "FinalClus");
123 declareProperty("MissingEtObjectName", m_missingEtObjectName = "MET_Reference_AntiKt4LCTopo");
124 declareProperty("primaryVertexCollection", m_primaryVertexCollection = "PrimaryVertices");
125 declareProperty("RefittedElectronTrackContainer1", m_OutputTrackCollectionName_no1="GSFTracks");
126 declareProperty("RefittedElectronTrackContainer2", m_OutputTrackCollectionName_no2="DNATracks");
127 declareProperty("ValidationMode", m_validationMode);
128 declareProperty("FillDetailedTree", m_fillDetailedTree);
129 declareProperty("ElectronLikelihoodTune", m_lhTune="mc15_20150712");
130 declareProperty("ValidationTreeFolder", m_validationTreeFolder, "/ZmumuValidationUserSel/EGrefitter"); // use same root file name as Zmumu
131}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_missingEtObjectName
MET input name.
TH1F * m_ZeeMediumMassOS_Cluster
std::string m_OutputTrackCollectionName_no2
TH2F * m_WenuTightElectron_PTEtaNeg
validation tree name - to be acessed by this from root
AsgElectronLikelihoodTool * m_LHToolLoose2015
TTree * m_smallValidationTree
std::string m_smallValidationTreeName
validation tree description - second argument in TTree
TH1F * m_ZeeMediumMassSS_Cluster
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter
The track refitter.
std::string m_validationTreeName
validation tree description - second argument in TTree
TH2F * m_WenuTightElectron_PTEtaPos
TH1F * m_ZeeLooseMassSS_Cluster
TrackCollection * m_refittedTracks_no2
std::string m_primaryVertexCollection
Primary vertex input name.
unsigned int m_evtNumber
std::string m_smallValidationTreeDescription
stream/folder to for the TTree to be written out
unsigned int m_lumi_block
TrackCollection * m_refittedTracks_no1
Refitted track collection.
std::string m_InputElectronContainerName
Electron collection input name.
std::string m_validationTreeFolder
Root Validation Tree.
bool m_validationMode
< boolean to switch to validation mode
std::string m_OutputTrackCollectionName_no1
Name of output of Refitted Inner Detector Tracks.
int m_electronCounter
counter for electrons
TH2F * m_ZeeMediumOS_ClusterPtEta
std::string m_metRefFinalName
std::string m_lhTune
AsgElectronLikelihoodTool * m_LHToolTight2015
unsigned int m_runNumber
TH1F * m_ZeeLooseMassOS_Cluster
ToolHandle< Trig::TrigDecisionTool > m_trigDec
The trigger decision tool.
bool m_fillDetailedTree
validation tree name - to be acessed by this from root
AsgElectronLikelihoodTool * m_LHToolMedium2015
std::string m_jetContainerName
JEt collection input name.
std::string m_validationTreeDescription
stream/folder to for the TTree to be written out
std::string m_smallValidationTreeFolder
Root Validation Tree.
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter_no2
The track refitter.

◆ ~IDPerfMonEoverP()

IDPerfMonEoverP::~IDPerfMonEoverP ( )

Destructor.

Definition at line 135 of file IDPerfMonEoverP.cxx.

136{
137
138}

Member Function Documentation

◆ addToValidationNtuple()

void IDPerfMonEoverP::addToValidationNtuple ( const Trk::Perigee * perigee,
const xAOD::CaloCluster * ,
int isOrginal )
private

addToValidationNutple

Definition at line 697 of file IDPerfMonEoverP.cxx.

697 {
698 if (perigee){
699 ATH_MSG_DEBUG( "Adding data to ntuple" );
700 if (isOriginal >= 0 && isOriginal <3){
701 m_electrond0[isOriginal][m_electronCounter] = perigee->parameters()[Trk::d0];
702 m_electronz0[isOriginal][m_electronCounter] = perigee->parameters()[Trk::z0];
703 m_electronPhi[isOriginal][m_electronCounter] = perigee->parameters()[Trk::phi0];
704 m_electronTheta[isOriginal][m_electronCounter] = perigee->parameters()[Trk::theta];
705 m_electronEta[isOriginal][m_electronCounter] = perigee->eta();
706 m_electronQoverP[isOriginal][m_electronCounter]= perigee->parameters()[Trk::qOverP];
707 //
708 const AmgSymMatrix(5)* matrix = perigee->covariance();
709 if (matrix){
710 m_electronErrd0[isOriginal][m_electronCounter] =std::sqrt( (*matrix)(Trk::d0,Trk::d0) );
711 m_electronErrz0[isOriginal][m_electronCounter] = std::sqrt( (*matrix)(Trk::z0,Trk::z0) );
712 m_electronErrPhi[isOriginal][m_electronCounter] = std::sqrt( (*matrix)(Trk::phi0,Trk::phi0) );
713 m_electronErrTheta[isOriginal][m_electronCounter]= std::sqrt( (*matrix)(Trk::theta,Trk::theta) );
714 m_electronErrQoverP[isOriginal][m_electronCounter]= std::sqrt( (*matrix)(Trk::qOverP,Trk::qOverP) );
715 }
716 }
717 } else {
718 ATH_MSG_DEBUG( "No MeasuredPerigee - cannot add data to ntuple" );
719 }
720
721 ATH_MSG_DEBUG( "Finished adding data to ntuple" );
722}
#define ATH_MSG_DEBUG(x,...)
#define AmgSymMatrix(dim)
float m_electronErrd0[3][NOS_ELECTRONS]
float m_electronEta[3][NOS_ELECTRONS]
Track Eta at perigee.
float m_electrond0[3][NOS_ELECTRONS]
Track Phi on electron.
float m_electronz0[3][NOS_ELECTRONS]
Track q over p on electron.
float m_electronErrz0[3][NOS_ELECTRONS]
float m_electronPhi[3][NOS_ELECTRONS]
Track Phi on electron.
float m_electronErrPhi[3][NOS_ELECTRONS]
Track phi error on electron.
float m_electronErrTheta[3][NOS_ELECTRONS]
Track theta error on electron.
float m_electronQoverP[3][NOS_ELECTRONS]
Track q over p on electron.
float m_electronTheta[3][NOS_ELECTRONS]
Track theta at perigee.
float m_electronErrQoverP[3][NOS_ELECTRONS]
double eta() const
Access method for pseudorapidity - from momentum.
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64

◆ clearValidationNtuple()

void IDPerfMonEoverP::clearValidationNtuple ( )
private

Definition at line 768 of file IDPerfMonEoverP.cxx.

769{
770 ATH_MSG_DEBUG( "clear ValidationNtuple variables" );
771 for (int i = 0 ; i < NOS_ELECTRONS ; ++i){
772 for (int j = 0 ; j <3 ; ++j){
773 m_electrond0[j][i] = 0;
774 m_electronz0[j][i] = 0;
775 m_electronPhi[j][i] = 0;
776 m_electronTheta[j][i] = 0;
777 m_electronEta[j][i] = 0;
778 m_electronQoverP[j][i] = 0;
779 m_electronLMQoverP[j][i] = 0;
780
781 m_electronErrd0[j][i] = 0;
782 m_electronErrz0[j][i] = 0;
783 m_electronErrPhi[j][i] = 0;
784 m_electronErrTheta[j][i] = 0;
785 m_electronErrQoverP[j][i] = 0;
786
787 }
788 m_associatedToVtx[i] = 0;
789
790 m_author[i] = 0;
791
792 m_ClusterEnergy[i] = 0;
793
794 m_IsEMLoose[i] = false;
795 m_IsEMMedium[i] = false;
796 m_IsEMTight[i] = false;
797 m_IsEMTightTRT[i] = false;
798
799
800 for (int j = 0 ; j < 50 ; ++j){
801 m_ePID_ShowerType[j][i] =0;
805 m_trigger[j] = false;
806 }
807 }
808
809
810 //Vertex information
811 m_nbpv =0;
812 for (int i(0); i< NO_PV; ++i){
813 m_pvtype[i] =0;
814 m_pvnbtk[i]=0;
815 m_pvsumpt[i]=0;
816 m_pvx[i]=0;
817 m_pvy[i]=0;
818 m_pvz[i]=0;
819 m_errpvx[i]=0;
820 m_errpvy[i]=0;
821 m_errpvz[i]=0;
822 m_covpvxpvy[i]=0;
823 m_covpvypvz[i]=0;
824 m_covpvzpvx[i]=0;
825 }
826 //MET
827 m_METgoodness=false;
828 m_sumet=0;
829 m_missingEt=0;
830 m_missingEtx=0;
831 m_missingEty=0;
832
833 return;
834}
#define NO_PV
#define NOS_ELECTRONS
float m_pvy[NO_PV]
float m_ePID_ShowerType[50][NOS_ELECTRONS]
float m_ePID_SummaryType[50][NOS_ELECTRONS]
float m_covpvxpvy[NO_PV]
float m_ePID_TrackCaloMatchType[50][NOS_ELECTRONS]
float m_covpvzpvx[NO_PV]
float m_ePID_IsolationType[50][NOS_ELECTRONS]
bool m_IsEMMedium[NOS_ELECTRONS]
float m_pvsumpt[NO_PV]
float m_errpvy[NO_PV]
int m_author[NOS_ELECTRONS]
int m_associatedToVtx[NOS_ELECTRONS]
bool m_IsEMTight[NOS_ELECTRONS]
bool m_IsEMTightTRT[NOS_ELECTRONS]
float m_ClusterEnergy[NOS_ELECTRONS]
float m_pvx[NO_PV]
float m_electronLMQoverP[3][NOS_ELECTRONS]
Track q over p on electron.
float m_pvz[NO_PV]
float m_covpvypvz[NO_PV]
float m_errpvz[NO_PV]
float m_errpvx[NO_PV]
bool m_IsEMLoose[NOS_ELECTRONS]
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ correctIP_PV()

double IDPerfMonEoverP::correctIP_PV ( int electron_i,
bool do_d0 )
private

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ deleteAction()

void IDPerfMonEoverP::deleteAction ( ) const
private

Definition at line 837 of file IDPerfMonEoverP.cxx.

838{
839
840}

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode IDPerfMonEoverP::execute ( const EventContext & ctx)
virtual

Execute method.

Implements AthAlgorithm.

Definition at line 474 of file IDPerfMonEoverP.cxx.

475{
476 ATH_MSG_DEBUG( "Executing IDPerfMonEoverP" );
477 StatusCode sc(StatusCode::SUCCESS);
478 std::map<const xAOD::TrackParticle*, VxPos > trackParticleVertexMap;
479 const xAOD::Vertex* primaryVertexFirstCandidate = nullptr;
480 if (m_validationMode){
482 }else{
483 ATH_MSG_WARNING( " Validation Mode has been turned off ALG will do not fill Ntuples" );
484 return sc;
485 }
486
487 ATH_MSG_DEBUG("Retrieving event info.");
488 SG::ReadHandle<xAOD::EventInfo> evt(m_evt, ctx);
489 if(evt.isValid()) {
490 m_runNumber = evt->runNumber();
491 m_evtNumber = evt->eventNumber();
492 m_lumi_block = evt->lumiBlock();
493 ATH_MSG_DEBUG(" --> run: " << m_runNumber << " event: " << m_evtNumber << " lumiblock: " << m_lumi_block );
494 }
495 else {
496 ATH_MSG_ERROR("Could not retrieve event info."); // Keeping ERROR only to preserve old functionality
497 }
498
499 ATH_MSG_DEBUG("Retrieved Trigger info.");
501
502 if (m_fillVertexInfo) {
503 if ( not fillVertexInformation(trackParticleVertexMap, primaryVertexFirstCandidate) ){
504 ATH_MSG_DEBUG("No Primary Vertex info found");
505 }
506 } // doVertexInfo
507
508 ATH_MSG_DEBUG("MET info.being stored");
509 if( storeMETinformation() ) {
510 ATH_MSG_DEBUG("MET info. stored");
511 }
512 else {
513 ATH_MSG_DEBUG("NO MET info. stored :(");
514 }
515
516 // Get the electron AOD container
517 const xAOD::ElectronContainer* ElectronInput_container;
518 ATH_MSG_DEBUG("Retrieving ElectronInput_container: " << m_InputElectronContainerName);
519 sc = evtStore()->retrieve(ElectronInput_container, m_InputElectronContainerName);
520 if (sc != StatusCode::SUCCESS){
521 ATH_MSG_WARNING("No electron container --> return");
522 deleteAction();
523 return StatusCode::SUCCESS;
524 }
525
526 if (ElectronInput_container->empty() ){
527 ATH_MSG_DEBUG("-- ElectronInput_container is empty -> return");
528 deleteAction();
529 return StatusCode::SUCCESS;
530 }
531
534
535
536 typedef xAOD::ElectronContainer::const_iterator electron_iterator;
537 electron_iterator iter = ElectronInput_container->begin();
538 electron_iterator iterEnd = ElectronInput_container->end();
539
540 // Loop over the Electrons
541 ATH_MSG_DEBUG("Electron info. being stored");
542 for(; iter != iterEnd ; ++iter) {
543 ATH_MSG_DEBUG("Dealing with electron: "<< m_electronCounter+1);
544 if (m_electronCounter >= NOS_ELECTRONS) break;
545 const xAOD::Electron *pThisElectron = (*iter);
546
547 if (pThisElectron->passSelection("LHTight") ) { // keep only tight electrons
549
550 // Cluster Info
551 fillElectronInfo ( pThisElectron );
552 // Fill General info
553 fillGeneral( pThisElectron );
554 // Fill IsEm info
555 fillIsEM( pThisElectron );
556
557 //Get the track particle
558 const xAOD::TrackParticle* mytp = (*iter)->trackParticle();
559 if ( mytp != nullptr ) ATH_MSG_DEBUG("-- electron: "<< m_electronCounter+1 << " pt: " << mytp->p4().Perp() );
560
561 if( mytp != nullptr ){
562 uint8_t dummy(0);
563 auto summaryByDetector=[&mytp,&dummy]( const xAOD::SummaryType & t){
564 return mytp->summaryValue(dummy, t) ? (dummy) : (-1);
565 };
566 m_nTRT[m_electronCounter] = summaryByDetector( xAOD::numberOfTRTHits );
567 m_nSCT[m_electronCounter] = summaryByDetector( xAOD::numberOfSCTHits );
568 m_nPIX[m_electronCounter] = summaryByDetector( xAOD::numberOfPixelHits );
574 }
575 else{
576 ATH_MSG_DEBUG("Electron with no track particle?? Possibly Forward");
577 continue;
578 }
579
580 //Find which if any vertex the electron track is associated to
581 VxPos myVxPos = findAssociatedVertex( trackParticleVertexMap,
582 primaryVertexFirstCandidate,
583 pThisElectron );
584 m_associatedToVtx[m_electronCounter] = myVxPos.second;
585 if( mytp->track() ){
586 const Trk::Track* oTrkTrack = mytp->track();
587 if (oTrkTrack){
588 const Trk::Perigee* oMeasPer = oTrkTrack->perigeeParameters() ;
589 if (oMeasPer) addToValidationNtuple( oMeasPer, pThisElectron->caloCluster(), 0 );
590 fillLastMeasurement( oTrkTrack , 0 );
591 }
592 }
593 else {
594 ATH_MSG_DEBUG("mytp->track() == 0");
595 const Trk::Perigee* oMeasPer = &(mytp->perigeeParameters()) ;
596 addToValidationNtuple( oMeasPer, pThisElectron->caloCluster(), 0 );
597 }
598
599
601 // First Refitter................
602 ATH_MSG_DEBUG( "Refitting the track" );
603
604 IegammaTrkRefitterTool::Cache cache1{};
605 StatusCode sc = m_TrackRefitter->refitTrack(ctx,
606 pThisElectron->trackParticle()->track(),
607 cache1 );
608
609 if (sc == StatusCode::SUCCESS){
610 Trk::Track* trkTrack= cache1.refittedTrack.release();
611 m_refittedTracks_no1->push_back(trkTrack);
612 addToValidationNtuple( cache1.refittedTrackPerigee ,pThisElectron->caloCluster(), 1 );
613 fillLastMeasurement(trkTrack, 1 );
614 } else {
615 ATH_MSG_DEBUG( "Track Refit Failed" );
616 }
617 //******************************************************//
618 // Refit tracks using the second refitter if it is present
619 //******************************************************//
620 ATH_MSG_DEBUG( "Refitting the track again" );
621
622 IegammaTrkRefitterTool::Cache cache2{};
623 sc = m_TrackRefitter_no2->refitTrack(ctx,
624 pThisElectron->trackParticle()->track(),
625 cache2 );
626
627 if (sc == StatusCode::SUCCESS){
628 Trk::Track* trkTrack= cache2.refittedTrack.release();
629 //Add the refitted track to the TrackCollection
630 m_refittedTracks_no2->push_back( trkTrack );
631 //Add data to the trkRefitterNtuple
632
633 addToValidationNtuple( cache2.refittedTrackPerigee ,pThisElectron->caloCluster(), 2 );
634 fillLastMeasurement( trkTrack, 2 );
635 }
636 else {
637 ATH_MSG_DEBUG( "Track Refit Failed" );
638 }
639 }
640 else {
641 ATH_MSG_DEBUG( "Not Refitting the track -- DO NOTHING" );
642 }//End if >6 silicon hits;
643
644 //Increment the electron counter for the validation nutple
646 } // isTightElec
647 } // loop on electrons
648
649 // Commit Data to Ntuple;
651 // Fill much smaller tree
652 std::vector<int> goodElectrons = FillSimpleTree();
653 TrackCollection* selectedElectrons = new TrackCollection;
654
655 for( const auto & thisGoodElectron: goodElectrons){
656 IegammaTrkRefitterTool::Cache cache{};
657 StatusCode sc = m_TrackRefitter->refitTrack(ctx,
658 (*ElectronInput_container)[thisGoodElectron]->trackParticle()->track(),
659 cache );
660 if (sc == StatusCode::SUCCESS){
661 Trk::Track* trkTrack= cache.refittedTrack.release();
662 selectedElectrons->push_back(trkTrack);
663 }
664 }
665
666 //******************************************************//
667 //* Add the newly created TrackCollection to StoreGate *//
668 //******************************************************//
669
671 if (sc.isFailure())
672 {
673 ATH_MSG_ERROR("Could not record "<< m_OutputTrackCollectionName_no1 <<" object.");
674 delete selectedElectrons;
675 return (StatusCode::FAILURE);
676 }
677 //
679 if (sc.isFailure())
680 {
681 ATH_MSG_ERROR("Could not record "<< m_OutputTrackCollectionName_no2 <<" object.");
682 delete selectedElectrons;
683 return (StatusCode::FAILURE);
684 }
685 //
686 sc = evtStore()->record( selectedElectrons, m_OutputTrackCollectionName_no1 + "Selected", false );
687 if (sc.isFailure())
688 {
689 ATH_MSG_ERROR("Could not record "<< m_OutputTrackCollectionName_no1+"Selected" <<" object.");
690 delete selectedElectrons;
691 return (StatusCode::FAILURE);
692 }
693 ATH_MSG_DEBUG( "execute completed successfully");
694 return StatusCode::SUCCESS;
695}
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
std::pair< const xAOD::Vertex *, int > VxPos
static Double_t sc
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:861
value_type push_back(value_type pElem)
Add an element to the end of the collection.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
bool empty() const noexcept
Returns true if the collection is empty.
SG::ReadHandleKey< xAOD::EventInfo > m_evt
ReadHandle to the Event Info.
void fillGeneral(const xAOD::Electron *eg)
int m_nTRT[NOS_ELECTRONS]
int m_nTRTout[NOS_ELECTRONS]
int m_nBLayer[NOS_ELECTRONS]
void addToValidationNtuple(const Trk::Perigee *, const xAOD::CaloCluster *, int isOrginal)
addToValidationNutple
void fillIsEM(const xAOD::Electron *eg)
VxPos findAssociatedVertex(std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, const xAOD::Vertex *primaryVertexFirstCandidate, const xAOD::Electron *) const
int m_nSCT[NOS_ELECTRONS]
int m_nPIX[NOS_ELECTRONS]
int m_nTRTHT[NOS_ELECTRONS]
void fillElectronInfo(const xAOD::Electron *p)
int m_nSCTout[NOS_ELECTRONS]
bool fillLastMeasurement(const Trk::Track *track, const int fitter)
std::vector< int > FillSimpleTree()
int m_nTRTHTout[NOS_ELECTRONS]
bool fillVertexInformation(std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, xAOD::Vertex const *&primaryVertexFirstCandidate)
void deleteAction() const
const Perigee * perigeeParameters() const
return Perigee.
bool passSelection(bool &value, const std::string &menu) const
Check if the egamma object pass a selection menu (using the name) If the menu decision is stored in t...
uint16_t author(uint16_t bitmask=EgammaParameters::AuthorALL) const
Get author.
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
::StatusCode StatusCode
StatusCode definition for legacy code.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
const IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.
const uint16_t AuthorElectron
Object Reconstructed by standard cluster-based algorithm.
Definition EgammaDefs.h:24
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
SummaryType
Enumerates the different types of information stored in Summary.
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Electron_v1 Electron
Definition of the current "egamma version".
Definition Electron.h:17
std::unique_ptr< Trk::Track > refittedTrack
Pointer to the refitted track.
const Trk::Perigee * refittedTrackPerigee
Pointer to the refitted MeasuredPerigee.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ extrapolateToTheCalo()

void IDPerfMonEoverP::extrapolateToTheCalo ( const Trk::TrackParameters * trkPar,
const xAOD::CaloCluster * cluster,
double * eta,
double * phi,
double * deltaEta,
double * delatPhi )
private

◆ fillElectronInfo()

void IDPerfMonEoverP::fillElectronInfo ( const xAOD::Electron * p)
private

Definition at line 1019 of file IDPerfMonEoverP.cxx.

1020{
1021 ATH_MSG_VERBOSE( "In fillElectronInfo()" );
1022 for (size_t i = 0; i < m_PID_ShowerType_Names.size(); i++) {
1023 float dummy(-1);
1024 m_ePID_ShowerType[i][m_electronCounter] = static_cast<float> (p->showerShapeValue( dummy, m_PID_ShowerType_Names[i].first ))? dummy :-1;
1025 }
1026 for (size_t i = 0; i < m_PID_TrackCaloMatchType_Names.size(); i++) {
1027 float dummy(-1);
1028 m_ePID_TrackCaloMatchType[i][m_electronCounter] = static_cast<float> (p->trackCaloMatchValue( dummy, m_PID_TrackCaloMatchType_Names[i].first ))? dummy :-1;
1029 }
1030
1031for (size_t i = 0; i < m_PID_SummaryType_Names.size(); i++) {
1032 float dummy(-1);
1033 m_ePID_SummaryType[i][m_electronCounter] = static_cast<float> (p->trackParticleSummaryValue( dummy, m_PID_SummaryType_Names[i].first ))? dummy :-1;
1034 }
1035
1036 return;
1037
1038}
#define ATH_MSG_VERBOSE(x,...)
std::vector< std::pair< xAOD::EgammaParameters::ShowerShapeType, std::string > > m_PID_ShowerType_Names
std::vector< std::pair< xAOD::SummaryType, std::string > > m_PID_SummaryType_Names
std::vector< std::pair< xAOD::EgammaParameters::TrackCaloMatchType, std::string > > m_PID_TrackCaloMatchType_Names

◆ fillGeneral()

void IDPerfMonEoverP::fillGeneral ( const xAOD::Electron * eg)
private

Definition at line 755 of file IDPerfMonEoverP.cxx.

756{
757 ATH_MSG_DEBUG( "fillGeneral" );
758 const xAOD::CaloCluster* cluster = eg->caloCluster();
759 if(!cluster) return;
760 m_ClusterEnergy[m_electronCounter] = cluster->e();
761 m_ClusterPhi[m_electronCounter] = cluster->phi();
762 m_ClusterEta[m_electronCounter] = cluster->eta();
763}
float m_ClusterPhi[NOS_ELECTRONS]
float m_ClusterEta[NOS_ELECTRONS]
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ fillIsEM()

void IDPerfMonEoverP::fillIsEM ( const xAOD::Electron * eg)
private

Definition at line 725 of file IDPerfMonEoverP.cxx.

726{
727 ATH_MSG_DEBUG( "fillIsEM" );
729 m_isGoodOQ[m_electronCounter] = el_goodOQ;
730 // check loose LH
731 bool val_loose = (bool) m_LHToolLoose2015->accept(eg);
732 ATH_MSG_DEBUG( "Loose value : " << val_loose);
733 if(val_loose){
734 m_IsEMLoose[m_electronCounter] = val_loose;
735 }//else{ATH_MSG_DEBUG("Loose electron not defined !");}
736
737 // check medium LH
738 bool val_med = (bool) m_LHToolMedium2015->accept(eg);
739 ATH_MSG_DEBUG( "Medium value : " << val_med );
740 if(val_med){
742 }//else{ATH_MSG_DEBUG("Mediu, electron not defined !");}
743
744 // check tight LH
745 bool val_tight = (bool) m_LHToolTight2015->accept(eg);
746 ATH_MSG_DEBUG( "Tight value : " << val_tight);
747 if(val_tight){
748 m_IsEMTight[m_electronCounter] = val_tight;
749 }//else{ATH_MSG_DEBUG("Tight electron not defined !");}
750 return;
751
752}
bool m_isGoodOQ[NOS_ELECTRONS]
bool isGoodOQ(uint32_t mask) const
Check object quality. Return True is it is Good Object Quality.
const uint32_t BADCLUSELECTRON
Definition EgammaDefs.h:116
setBGCode setTAP setLVL2ErrorBits bool

◆ fillLastMeasurement()

bool IDPerfMonEoverP::fillLastMeasurement ( const Trk::Track * track,
const int fitter )
private

Definition at line 1040 of file IDPerfMonEoverP.cxx.

1041{
1042 ATH_MSG_VERBOSE("In fillLastMeasurement()");
1043 if(!track) return false;
1044 const Trk::TrackParameters* trkPara =0;
1045
1046 const Trk::TrackStates* oldTrackStates = track->trackStateOnSurfaces();
1047 if (oldTrackStates == 0)
1048 {
1049 return false;
1050 }
1051
1052 for ( Trk::TrackStates::const_reverse_iterator rItTSoS = oldTrackStates->rbegin(); rItTSoS != oldTrackStates->rend(); ++rItTSoS)
1053 {
1054 if (trkPara!=0){
1055 break;
1056 }
1057
1058 if ( (*rItTSoS)->type(Trk::TrackStateOnSurface::Measurement) && (*rItTSoS)->trackParameters()!=0 && (*rItTSoS)->measurementOnTrack()!=0)
1059 {
1060 trkPara = (*rItTSoS)->trackParameters();
1061 }
1062 }
1063
1064 if (trkPara !=0 ){
1065 m_electronLMQoverP[fitter][m_electronCounter] = trkPara->parameters()[Trk::qOverP] ;
1066 return true;
1067 }
1068
1069 return false;
1070
1071}
const_reverse_iterator rend() const noexcept
Return a const_reverse_iterator pointing at the beginning of the collection.
const_reverse_iterator rbegin() const noexcept
Return a const_reverse_iterator pointing past the end of the collection.
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition DataVector.h:870
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
const ShapeFitter * fitter
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ FillSimpleTree()

std::vector< int > IDPerfMonEoverP::FillSimpleTree ( )
private

Definition at line 1318 of file IDPerfMonEoverP.cxx.

1319{
1320 ATH_MSG_VERBOSE("In fillSimpleTree()");
1321 std::vector<int> electronsZee;
1322 std::vector<int> electronsWenu;
1323
1324 // check if Zee or Wenu event
1325 passZeeSelection(electronsZee);
1326 passWenuSelection(electronsWenu);
1327
1328 std::vector<int> allInterestingElectrons;
1329 for(int i(0); i < (int)electronsZee.size(); ++i){
1330 int ele = electronsZee[i];
1331 if ( std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1332 allInterestingElectrons.push_back(ele);
1333 }
1334 }
1335 for(int i(0); i < (int)electronsWenu.size(); ++i){
1336 int ele = electronsWenu[i];
1337 if ( std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1338 allInterestingElectrons.push_back(ele);
1339 }
1340 }
1341 ATH_MSG_DEBUG(" SimpleTreeElectrons " << allInterestingElectrons.size() );
1342 for(int i(0); i < (int)allInterestingElectrons.size(); ++i){
1343 int ele = allInterestingElectrons[i];
1344 if (m_electronQoverP[0][ele] > 0 )
1345 m_smallCharge = 1.;
1346 else
1347 m_smallCharge =-1.;
1355 m_smallValidationTree->Fill();
1356 }
1357
1358 return allInterestingElectrons;
1359}
bool passWenuSelection(std::vector< int > &electrons)
bool passZeeSelection(std::vector< int > &electrons)

◆ fillTriggerInformation()

void IDPerfMonEoverP::fillTriggerInformation ( )
private

Definition at line 1000 of file IDPerfMonEoverP.cxx.

1001{
1002 ATH_MSG_VERBOSE("In fillTriggerInformation()");
1003 ATH_MSG_DEBUG( "Pass state All = " << m_trigDec->isPassed( ".*" ) );
1004 ATH_MSG_DEBUG( "Pass state L1 = " << m_trigDec->isPassed( "L1_.*" ) );
1005 ATH_MSG_DEBUG( "Pass state L2 = " << m_trigDec->isPassed( "L2_.*" ) );
1006 ATH_MSG_DEBUG( "Pass state EF = " << m_trigDec->isPassed( "EF_.*" ) );
1007 ATH_MSG_DEBUG("HLT_.* is passed: " << m_trigDec->isPassed("HLT_.*"));
1008 for (unsigned int i=0; i < m_triggerNames.size(); ++i){
1009 if(m_triggerNames[i] == "ALL")
1010 m_trigger[i] = m_trigDec->isPassed(".*");
1011 else if(m_triggerNames[i] == "HLT_ALL")
1012 m_trigger[i] = m_trigDec->isPassed("HLT_.*");
1013 else
1014 m_trigger[i] = m_trigDec->isPassed(m_triggerNames[i]);
1015 }
1016 return;
1017}
std::vector< std::string > m_triggerNames

◆ fillVertexInformation()

bool IDPerfMonEoverP::fillVertexInformation ( std::map< const xAOD::TrackParticle *, VxPos > & trackParticleVertexMap,
xAOD::Vertex const *& primaryVertexFirstCandidate )
private

Definition at line 904 of file IDPerfMonEoverP.cxx.

906{
907 ATH_MSG_DEBUG( "fillVertexInformation() -- START --" );
908 const xAOD::VertexContainer* vxContainer(0);
909 int npv = 0;
910 StatusCode sc = evtStore()->retrieve(vxContainer, m_primaryVertexCollection);
911 if (sc.isFailure()) {
912 ATH_MSG_WARNING( "Could not retrieve primary vertex info: " << m_primaryVertexCollection );
913 return false;
914 }
915 else {
916 ATH_MSG_DEBUG( "Found primary vertex info: " << m_primaryVertexCollection );
917 if(vxContainer) {
918 ATH_MSG_DEBUG("Nb of reco primary vertex for coll "
919 << " = " << vxContainer->size() );
920 primaryVertexFirstCandidate = std::begin(*vxContainer)[0];
921 ATH_MSG_DEBUG( "The primary vertex type: " << primaryVertexFirstCandidate->type() );
922 int vtxCount = 0;
923 for(const auto* vxI : *vxContainer ) {
924 int type = (int)(vxI)->vertexType();
925 const xAOD::Vertex* primaryVertex = vxI;
926 vtxCount++;
927 ATH_MSG_DEBUG( " -- dealing with vertex " << vtxCount << " type: " << type );
928 int nbtk = 0;
929 const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = vxI->trackParticleLinks();
930 float sumpt = 0.;
931 if(not tpLinks.empty()) {
932 nbtk = tpLinks.size();
933 ATH_MSG_DEBUG( " -- vertex " << vtxCount << " has " << nbtk << " track particles" );
934 for(const auto& tp_elem : tpLinks ){
935 const xAOD::TrackParticle* trk = *tp_elem;
936 if (trk != NULL) {
937 VxPos myVxPos = std::make_pair(vxI,npv);
938 trackParticleVertexMap.insert( std::make_pair( trk, myVxPos ) );
939 if(trk) {
940 sumpt += trk->p4().Perp();
941 }
942 }
943 else {
944 ATH_MSG_DEBUG( " -- trk is NULL :(" );
945 } // trk not null
946 } // loop on tracks
947 ATH_MSG_DEBUG( "Reco PV " << npv << ": ("
948 << primaryVertex->position().x() << ","
949 << primaryVertex->position().y() << ","
950 << primaryVertex->position().z() << ")"
951 << " type=" << type
952 << " nbtk=" << nbtk
953 << " sumpt=" << sumpt);
954
955 if(npv >= NO_PV) {
956 ATH_MSG_WARNING( "More than " << NO_PV << " reconstructed primary vertices in event "
957 << "for run= " << m_runNumber << " evt= " << m_evtNumber
958 << ". Truncated event. " );
959 } else {
960 m_pvtype[npv] = type;
961 m_pvnbtk[npv] = nbtk;
962 m_pvsumpt[npv] = sumpt;
963 m_pvx[npv] = primaryVertex->position().x();
964 m_pvy[npv] = primaryVertex->position().y();
965 m_pvz[npv] = primaryVertex->position().z();
966
967 }
968 ++npv;
969 } else {
970 ATH_MSG_DEBUG( "Vertex " << npv << " has no tracks associated to it!" );
971 }
972 }
973 } else {
974 ATH_MSG_DEBUG( "No container in collection?? " << m_primaryVertexCollection );
975 }
976 }
977 m_nbpv = npv;
978
979 ATH_MSG_DEBUG("Done filling Vertex information -- completed -- ");
980
981 if (npv == 0) return false;
982 return true;
983}
const Amg::Vector3D & position() const
Returns the 3-pos.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode IDPerfMonEoverP::finalize ( )

Definition at line 467 of file IDPerfMonEoverP.cxx.

468{
469 return StatusCode::SUCCESS;
470}

◆ findAssociatedVertex()

VxPos IDPerfMonEoverP::findAssociatedVertex ( std::map< const xAOD::TrackParticle *, VxPos > & trackParticleVertexMap,
const xAOD::Vertex * primaryVertexFirstCandidate,
const xAOD::Electron * eg ) const
private

Definition at line 985 of file IDPerfMonEoverP.cxx.

988{
989 ATH_MSG_VERBOSE("In findAssociatedVertex()");
990 std::map<const xAOD::TrackParticle*, VxPos>::iterator tpVx =
991 trackParticleVertexMap.find(eg->trackParticle());
992 if (tpVx == trackParticleVertexMap.end() ){
993 return std::make_pair( primaryVertexFirstCandidate,-1 );
994 } else
995 return (*tpVx).second;
996
997}

◆ getMassCluster()

double IDPerfMonEoverP::getMassCluster ( int el1,
int el2 )
private

Definition at line 1302 of file IDPerfMonEoverP.cxx.

1303{
1304 ATH_MSG_VERBOSE("In getMassCluster()");
1305 double ELECTRON_MASS = ParticleConstants::electronMassInMeV; //MeV
1306 TLorentzVector v0,v1;
1307 double pt1 = m_ClusterEnergy[el1]*std::sin(m_electronTheta[0][el1]);
1308 double pt2 = m_ClusterEnergy[el2]*std::sin(m_electronTheta[0][el2]);
1309 double eta1 = -std::log( std::tan(m_electronTheta[0][el1] * 0.5) );
1310 double eta2 = -std::log( std::tan(m_electronTheta[0][el2] * 0.5) );
1311 v0.SetPtEtaPhiM(pt1,eta1,m_electronPhi[0][el1], ELECTRON_MASS);
1312 v1.SetPtEtaPhiM(pt2,eta2,m_electronPhi[0][el2], ELECTRON_MASS);
1313 double mass = (v0+v1).M();
1314 return mass;
1315
1316}
constexpr double electronMassInMeV
the mass of the electron (in MeV)
setEt setPhi setE277 setWeta2 eta1

◆ initialize()

StatusCode IDPerfMonEoverP::initialize ( )

Gaudi algorithm hooks.

Definition at line 144 of file IDPerfMonEoverP.cxx.

145{
146 ATH_MSG_INFO("Initializing IDPerfMonEoverP");
147
148 ATH_CHECK( m_evt.initialize() );
149
150 // Retrieve Jet selector tool
151 CHECK( m_jetCleaningTool.retrieve() );
152
153 // Retrieve fitter
154 if (m_TrackRefitter.retrieve().isFailure()) {
155 ATH_MSG_FATAL("Unable to retrieve " << m_TrackRefitter );
156 return StatusCode::FAILURE;
157 } else
158 ATH_MSG_INFO("Retrieved tool" << m_TrackRefitter );
159
160 // Retrieve the second fitter
161 if (m_TrackRefitter_no2.retrieve().isFailure()) {
162 ATH_MSG_FATAL("Unable to retrieve " << m_TrackRefitter_no2 );
163 return StatusCode::FAILURE;
164 } else {
165 ATH_MSG_INFO("Retrieved tool" << m_TrackRefitter_no2 );
166 }
167
168 if(m_trigDec.retrieve().isFailure()) {
169 ATH_MSG_FATAL("Unable to retrieve " << m_trigDec << " turn it off");
170 return StatusCode::FAILURE;
171 }
172 else {
173 ATH_MSG_INFO("Retrieved tool " << m_trigDec );
174 }
175
176
177 //
178 // Electron PID Variables
179 //
180 // Following are of ShowerShapeType
181 namespace xEgamma = xAOD::EgammaParameters;
182 namespace xIso = xAOD::Iso;
184 {xEgamma::f1, "f1"},
185 {xEgamma::emins1, "f1core"},
186 {xEgamma::fracs1, "fside"},
187 {xEgamma::e2tsts1, "Emax2"},
188 {xEgamma::weta1, "ws3"},
189 {xEgamma::wtots1, "wstot"},
190 {xEgamma::emaxs1,"emaxs1"},
191 {xEgamma::e233,"E233"},
192 {xEgamma::e237,"E237"},
193 {xEgamma::e277,"E277"},
194 {xEgamma::weta2,"weta2"},
195 {xEgamma::f3,"f3"},
196 {xEgamma::f3core,"f3core"}
197 };
198 // Following are of isolation type
200 {xIso::etcone20,"Etcone20"},
201 {xIso::etcone30,"Etcone30"},
202 {xIso::etcone40,"Etcone40"},
203 {xIso::ptcone30,"ptcone30"}
204 };
205 // Following are of trackcalomatch type
207 {xEgamma::deltaEta1,"deltaeta1"},
208 {xEgamma::deltaEta2,"deltaeta2"},
209 {xEgamma::deltaPhi2,"deltaphi2"}
210 };
211
212
213
214 //
215 // Trigger
216 //
218 "L1_MBTS_1",
219 "L1_EM2",
220 "L1_2EM2",
221 "L1_2EM4",
222 "L1_EM5",
223 "L1_EM10",
224 "L1_EM10I",
225 "L1_EM14",
226 "L1_EM18",
227 "L1_EM18I",
228 "L1_EM23I",
229 "L1_EM100",
230 "EF_2e5_medium",
231 "EF_e10_medium",
232 "EF_e20_loose",
233 "EF_em105_passHLT",
234 "EF_g20_loose",
235 "EF_e20_medium",
236 "EF_e22_medium",
237 //run 2 test
238 "HLT_e24_lhmedium_idperf_L1EM20VH",
239 "HLT_e24_medium_L1EM18VH",
240 "e5_vloose",
241 "ALL",
242 "HLT_ALL"
243 };
244
245 // If the validation nuptle has been requested Setup the ntuple
246 if (m_validationMode){
247 if (m_validationTree == nullptr ){ // validation tree does not exist yet
248 // create the new Tree
249 ATH_MSG_DEBUG ( "Booking validationTree with name: " << m_validationTreeName );
251 std::string FitterNames[3] = {"GX2","Refitted1","Refitted2"};
252 m_validationTree->Branch("runNumber" , &m_runNumber, "runNumber/I");
253 m_validationTree->Branch("eventNumber" , &m_evtNumber, "eventNumber/I");
254 m_validationTree->Branch("lumi_block" , &m_lumi_block, "lumi_block/I");
255 // counter for number of electrons
256 m_validationTree->Branch("nElectrons" , &m_nelectrons, "nElectrons/I");
257 // Track fitter information
258 for(int fitter(0); fitter < 3; ++fitter){
259 m_validationTree->Branch( (FitterNames[fitter]+"_Theta").c_str() , m_electronTheta[fitter], (FitterNames[fitter]+"_Theta0[nElectrons]/F").c_str() );
260 m_validationTree->Branch( (FitterNames[fitter]+"_Eta").c_str() , m_electronEta[fitter], (FitterNames[fitter]+"_Eta[nElectrons]/F").c_str() );
261 m_validationTree->Branch( (FitterNames[fitter]+"_Eta").c_str() , m_electronEta[fitter], (FitterNames[fitter]+"_Eta[nElectrons]/F").c_str() );
262 m_validationTree->Branch( (FitterNames[fitter]+"_Phi0").c_str() , m_electronPhi[fitter], (FitterNames[fitter]+"_Phi0[nElectrons]/F").c_str() );
263 m_validationTree->Branch( (FitterNames[fitter]+"_QoverP").c_str() , m_electronQoverP[fitter], (FitterNames[fitter]+"_QoverP[nElectrons]/F").c_str());
264 m_validationTree->Branch( (FitterNames[fitter]+"_d0").c_str() , m_electrond0[fitter], (FitterNames[fitter]+"_d0[nElectrons]/F").c_str());
265 m_validationTree->Branch( (FitterNames[fitter]+"_z0").c_str() , m_electronz0[fitter], (FitterNames[fitter]+"_z0[nElectrons]/F").c_str());
266 m_validationTree->Branch( (FitterNames[fitter]+"_LMQoverP").c_str() , m_electronLMQoverP[fitter], (FitterNames[fitter]+"_LMQoverP[nElectrons]/F").c_str());
267 m_validationTree->Branch( (FitterNames[fitter]+"_ThetaErr").c_str() , m_electronErrTheta[fitter], (FitterNames[fitter]+"_Theta0Err[nElectrons]/F").c_str());
268 m_validationTree->Branch( (FitterNames[fitter]+"_Phi0Err").c_str() , m_electronErrPhi[fitter], (FitterNames[fitter]+"_Phi0Err[nElectrons]/F").c_str());
269 m_validationTree->Branch( (FitterNames[fitter]+"_QoverPErr").c_str(), m_electronErrQoverP[fitter],(FitterNames[fitter]+"_QoverPErr[nElectrons]/F").c_str());
270 m_validationTree->Branch( (FitterNames[fitter]+"_d0Err").c_str() , m_electronErrd0[fitter], (FitterNames[fitter]+"_d0Err[nElectrons]/F").c_str());
271 m_validationTree->Branch( (FitterNames[fitter]+"_z0Err").c_str() , m_electronErrz0[fitter], (FitterNames[fitter]+"_z0Err[nElectrons]/F").c_str());
272 }
273
274 m_validationTree->Branch("associatedToVtx" , m_associatedToVtx, "associatedToVtx[nElectrons]/I");
275 m_validationTree->Branch("nbpv", &m_nbpv, "nbpv/I");
276 m_validationTree->Branch("pvtype", m_pvtype, "pvtype[nbpv]/I");
277 m_validationTree->Branch("pvnbtk", m_pvnbtk, "pvnbtk[nbpv]/I");
278 m_validationTree->Branch("pvsumpt", m_pvsumpt, "pvsumpt[nbpv]/F");
279 m_validationTree->Branch("pvx", m_pvx, "pvx[nbpv]/F");
280 m_validationTree->Branch("pvy", m_pvy, "pvy[nbpv]/F");
281 m_validationTree->Branch("pvz", m_pvz, "pvz[nbpv]/F");
282 m_validationTree->Branch("errpvx", m_errpvx, "errpvx[nbpv]/F");
283 m_validationTree->Branch("errpvy", m_errpvy, "errpvy[nbpv]/F");
284 m_validationTree->Branch("errpvz", m_errpvz, "errpvz[nbpv]/F");
285 m_validationTree->Branch("covpvxpvy", m_covpvxpvy, "covpvxpvy[nbpv]/F");
286 m_validationTree->Branch("covpvzpvx", m_covpvzpvx, "covpvzpvx[nbpv]/F");
287 m_validationTree->Branch("covpvypvz", m_covpvypvz, "covpvypvz[nbpv]/F");
288
289
290 m_validationTree->Branch("METgoodness", &m_METgoodness, "METgoodness/B");
291 m_validationTree->Branch("sumet", &m_sumet, "sumet/F");
292 m_validationTree->Branch("missingEt", &m_missingEt, "missingEt/F");
293 m_validationTree->Branch("missingEtx", &m_missingEtx, "missingEtx/F");
294 m_validationTree->Branch("missingEty", &m_missingEty, "missingEty/F");
295
296
297 m_validationTree->Branch("ElectronAuthor" , m_author, "ElectronAuthor[nElectrons]/I");
298 m_validationTree->Branch("ClusterEnergy" , m_ClusterEnergy, "ClusterEnergy[nElectrons]/F");
299 m_validationTree->Branch("ClusterEta" , m_ClusterEta, "ClusterEta[nElectrons]/F");
300 m_validationTree->Branch("ClusterPhi" , m_ClusterPhi, "ClusterPhi[nElectrons]/F");
301
302 m_validationTree->Branch("IsEMLoose" , m_IsEMLoose, "m_IsEMLoose[nElectrons]/O");
303 m_validationTree->Branch("IsEMMedium" , m_IsEMMedium, "m_IsEMMedium[nElectrons]/O");
304 m_validationTree->Branch("IsEMTight" , m_IsEMTight, "m_IsEMTight[nElectrons]/O");
305 m_validationTree->Branch("isGoodOQ" , m_isGoodOQ, "isGoodOQ[nElectrons]/O");
306
307 m_validationTree->Branch("nTRT" , m_nTRT , "nTRT[nElectrons]/I");
308 m_validationTree->Branch("nSCT" , m_nSCT, "nSCT[nElectrons]/I");
309 m_validationTree->Branch("nBLayer" , m_nBLayer, "nBLayer[nElectrons]/I");
310 m_validationTree->Branch("nPIX" , m_nPIX, "nPIX[nElectrons]/I");
311 m_validationTree->Branch("nTRTout" , m_nTRTout, "nTRTout[nElectrons]/I");
312 m_validationTree->Branch("nSCTout" , m_nSCTout, "nSCTout[nElectrons]/I");
313 m_validationTree->Branch("nPIXout" , m_nPIXout, "nPIXout[nElectrons]/I");
314 m_validationTree->Branch("nTRTHT" , m_nTRTHT, "nTRTHT[nElectrons]/I");
315 m_validationTree->Branch("nTRTHout" , m_nTRTHTout, "nTRTHTout[nElectrons]/I");
316
317
318 for(unsigned int item(0); item < m_PID_ShowerType_Names.size(); ++item){
319 m_validationTree->Branch( m_PID_ShowerType_Names[item].second.c_str() , m_ePID_ShowerType[item], std::string( m_PID_ShowerType_Names[item].second + "[nElectrons]/F").c_str() );
320 }
321
322 for(unsigned int item(0); item < m_PID_IsolationType_Names.size(); ++item){
323 m_validationTree->Branch( m_PID_IsolationType_Names[item].second.c_str() , m_ePID_IsolationType[item], std::string( m_PID_IsolationType_Names[item].second + "[nElectrons]/F").c_str() );
324 }
325
326 for(unsigned int item(0); item < m_PID_TrackCaloMatchType_Names.size(); ++item){
327 m_validationTree->Branch( m_PID_TrackCaloMatchType_Names[item].second.c_str() , m_ePID_TrackCaloMatchType[item], std::string( m_PID_TrackCaloMatchType_Names[item].second + "[nElectrons]/F").c_str() );
328 }
329
330 for(unsigned int item(0); item < m_PID_SummaryType_Names.size(); ++item){
331 m_validationTree->Branch( m_PID_SummaryType_Names[item].second.c_str() , m_ePID_SummaryType[item], std::string( m_PID_SummaryType_Names[item].second + "[nElectrons]/F").c_str() );
332 }
333
334 for(unsigned int item(0); item < m_triggerNames.size(); ++item){
335 m_validationTree->Branch( m_triggerNames[item].c_str() , &m_trigger[item], std::string( m_triggerNames[item]+ "/B" ).c_str() );
336 }
337
338 }
339
340
341 if(m_smallValidationTree == nullptr){
342
344
345 m_smallValidationTree->Branch("charge",&m_smallCharge,"charge/D");
346 m_smallValidationTree->Branch("runNumber" , &m_runNumber, "runNumber/I");
347 m_smallValidationTree->Branch("Default_QoverP",&m_small_QoverP,"Default_QoverP/D");
348 m_smallValidationTree->Branch("Refitted1_QoverP",&m_small1_QoverP,"Refitted1_QoverP/D");
349 m_smallValidationTree->Branch("Refitted2_QoverP",&m_small2_QoverP,"Refitted2_QoverP/D");
350 m_smallValidationTree->Branch("ClusterEnergy",&m_smallClusterEnergy,"ClusterEnergy/D");
351 m_smallValidationTree->Branch("ClusterEta" ,&m_smallClusterEta,"ClusterEta/D");
352 m_smallValidationTree->Branch("ClusterPhi" ,&m_smallClusterPhi,"ClusterPhi/D");
353 m_smallValidationTree->Branch("TrackTheta" ,&m_smallTrackTheta,"TrackTheta/D");
354 }
355
356 // Access THistSvc
357 ServiceHandle<ITHistSvc> tHistSvc("THistSvc", name());
358 if ( tHistSvc.retrieve().isSuccess()) {
359 ATH_MSG_DEBUG(" initialize() THistSvc successfully retrieved ");
360 }
361 else {
362 ATH_MSG_ERROR("initialize() Could not find Hist Service -> Switching ValidationMode Off !");
365 m_validationMode = false;
366 }
367
368 // now register the Tree
369 if (m_validationTree != nullptr ) {
370 if ( (tHistSvc->regTree(m_validationTreeFolder, m_validationTree)).isSuccess() ) {
371 ATH_MSG_DEBUG( "initialize() validation tree (" << m_validationTree->GetName() <<") successfully registered in folder " << m_validationTreeFolder );
372 }
373 else {
374 ATH_MSG_ERROR( "initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
376 m_validationMode = false;
377 }
378 }
379 else {
380 ATH_MSG_DEBUG( "initialize() no validation tree to register :( ");
381 }
382
383 if ((tHistSvc->regTree(m_smallValidationTreeFolder, m_smallValidationTree)).isFailure() ) {
384 ATH_MSG_ERROR("initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
386 m_validationMode = false;
387 }
388 else {
389 m_ZeeLooseMassOS_Cluster = new TH1F("ZeeMassLooseOS","ZeeMassLooseOS", 120, 60000 ,120000);
390 m_ZeeLooseMassSS_Cluster = new TH1F("ZeeMassLooseSS","ZeeMassLooseSS", 120, 60000 ,120000);
391 m_ZeeMediumMassOS_Cluster = new TH1F("ZeeMassMediumOS","ZeeMassMediumOS", 120, 60000 ,120000);
392 m_ZeeMediumMassSS_Cluster = new TH1F("ZeeMassMediumSS","ZeeMassMediumSS", 120, 60000 ,120000);
393 m_WenuLooseElectronET= new TH1F("WenuLooseElectronET","WenuLooseElectronET", 80, 20000 ,100000);
394 m_WenuTight_Met = new TH1F("WenuTight_Met","WenuTight_Met", 120, 00000 ,120000);
395 m_WenuTight_MT = new TH1F("WenuTight_MT","WenuTight_MT", 120, 00000 ,120000);
396 m_WenuTightMet_MT = new TH1F("WenuTightMet_MT","WenuTightMet_MT", 120, 00000 ,120000);
397 m_WenuTightElectronET = new TH1F("WenuTightElectronET","WenuTightElectronET", 100, 00000 ,100000);
398 m_WenuTightW_PT = new TH1F("WenuTightW_PT","WenuTightW_PT", 100, 00000 ,100000);
399
400 m_ZeeMediumOS_ClusterPtEta = new TH2F("ZeeMediumOS_ClusterPtEta", "ZeeMediumOS_ClusterPtEta",100,20000,120000,50,-2.5,2.5);
401 m_WenuTightElectron_PTEtaPos = new TH2F("WenuTightElectron_PTEtaPos", "WenuTightElectron_PTEtaPos",100,20000,120000,50,-2.5,2.5);
402 m_WenuTightElectron_PTEtaNeg = new TH2F("WenuTightElectron_PTEtaNeg", "WenuTightElectron_PTEtaNeg",100,20000,120000,50,-2.5,2.5);
403
404 bool somethingFailed{};
405 somethingFailed |= ( (tHistSvc->regHist(m_smallValidationTreeFolder + "/ZeeMassLooseOS",m_ZeeLooseMassOS_Cluster )).isFailure() );
406 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/ZeeMassLooseSS",m_ZeeLooseMassSS_Cluster )).isFailure() );
407 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/ZeeMassMediumOS",m_ZeeMediumMassOS_Cluster )).isFailure() );
408 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/ZeeMassMediumSS",m_ZeeMediumMassSS_Cluster )).isFailure() );
409 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuLooseElectronET",m_WenuLooseElectronET )).isFailure() );
410 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTight_Met",m_WenuTight_Met )).isFailure() );
411 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTight_MT",m_WenuTight_MT )).isFailure() );
412 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTightMet_MT",m_WenuTightMet_MT )).isFailure() );
413 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTightElectronET",m_WenuTightElectronET )).isFailure() );
414 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTightW_PT",m_WenuTightW_PT )).isFailure() );
415 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/ZeeMediumOS_ClusterPtEta",m_ZeeMediumOS_ClusterPtEta )).isFailure() );
416 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTightElectron_PTEtaPos",m_WenuTightElectron_PTEtaPos )).isFailure() );
417 somethingFailed |=( (tHistSvc->regHist(m_smallValidationTreeFolder + "/WenuTightElectron_PTEtaNeg",m_WenuTightElectron_PTEtaNeg )).isFailure() );
418 if (somethingFailed) ATH_MSG_ERROR("initialize() Could not register histogram ");
419
420 ATH_MSG_INFO("Booked Small Tree add histograms");
421 }
422
423 ATH_MSG_INFO("Loaded THistSvc");
424 }
425
426 //---Electron Likelihood tool---
427 ATH_MSG_INFO("IDPerfMonEoverP::Initialize() -- Setting up electron LH tool.");
428 m_LHToolLoose2015 = new AsgElectronLikelihoodTool ("m_LHToolLoose2015");
429 m_LHToolMedium2015 = new AsgElectronLikelihoodTool ("m_LHToolMedium2015");
430 m_LHToolTight2015 = new AsgElectronLikelihoodTool ("m_LHToolTight2015");
431
432 if((m_LHToolLoose2015->setProperty("primaryVertexContainer",m_primaryVertexCollection)).isFailure())
433 ATH_MSG_WARNING("Failure setting primary vertex container " << m_primaryVertexCollection << "in loose electron likelihood tool");
434 if((m_LHToolMedium2015->setProperty("primaryVertexContainer",m_primaryVertexCollection)).isFailure())
435 ATH_MSG_WARNING("Failure setting primary vertex container " << m_primaryVertexCollection << "in medium electron likelihood tool");
436 if((m_LHToolTight2015->setProperty("primaryVertexContainer",m_primaryVertexCollection)).isFailure())
437 ATH_MSG_WARNING("Failure setting primary vertex container " << m_primaryVertexCollection << "in tight electron likelihood tool");
438
439 //Set up electron LH level
440 std::string confDir = "ElectronPhotonSelectorTools/offline/"+m_lhTune+"/";
441 std::string configFileL = confDir+"ElectronLikelihoodLooseOfflineConfig2015.conf";
442 std::string configFileM = confDir+"ElectronLikelihoodMediumOfflineConfig2015.conf";
443 std::string configFileT = confDir+"ElectronLikelihoodTightOfflineConfig2015.conf";
444
445 if((m_LHToolLoose2015->setProperty("ConfigFile",configFileL)).isFailure())
446 ATH_MSG_WARNING("Failure loading ConfigFile in loose electron likelihood tool.");
447 if((m_LHToolMedium2015->setProperty("ConfigFile",configFileM)).isFailure())
448 ATH_MSG_WARNING("Failure loading ConfigFile in medium electron likelihood tool.");
449 if((m_LHToolTight2015->setProperty("ConfigFile",configFileT)).isFailure())
450 ATH_MSG_WARNING("Failure loading ConfigFile in tight electron likelihood tool.");
451
452 StatusCode lhl = m_LHToolLoose2015->initialize();
453 if(lhl.isFailure())
454 ATH_MSG_WARNING("Loose electron likelihood tool initialize() failed!");
455 StatusCode lhm = m_LHToolMedium2015->initialize();
456 if(lhm.isFailure())
457 ATH_MSG_WARNING("Medium electron likelihood tool initialize() failed!");
458 StatusCode lht = m_LHToolTight2015->initialize();
459 if(lht.isFailure())
460 ATH_MSG_WARNING("Tight electron likelihood tool initialize() failed!");
461 ATH_MSG_INFO( "Initialization completed successfully");
462 return StatusCode::SUCCESS;
463}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(x,...)
#define CHECK(...)
Evaluate an expression and check for errors.
ToolHandle< IJetSelector > m_jetCleaningTool
jet selector tool
std::vector< std::pair< xAOD::Iso::IsolationType, std::string > > m_PID_IsolationType_Names
int m_nPIXout[NOS_ELECTRONS]
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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.

◆ passMETCleaningCuts()

bool IDPerfMonEoverP::passMETCleaningCuts ( ) const
private

Definition at line 886 of file IDPerfMonEoverP.cxx.

887{
888 const xAOD::JetContainer* jetTDS = nullptr;
889 StatusCode sc= evtStore()->retrieve( jetTDS, m_jetContainerName);
890 if( sc.isFailure() || !jetTDS ) {
891 ATH_MSG_WARNING("No " << m_jetContainerName << " jet container found in TDS");
892 return false;
893 }
894 if (jetTDS->empty()) return true;
895 bool cleanJet = true;
896 for(const auto* jet_elem : *jetTDS ) {
897 if(!m_jetCleaningTool->keep( *jet_elem )) cleanJet=false;
898 if(!cleanJet) break;
899 }
900 return cleanJet;
901}
JetContainer_v1 JetContainer
Definition of the current "jet container version".

◆ passWenuSelection()

bool IDPerfMonEoverP::passWenuSelection ( std::vector< int > & electrons)
private

Definition at line 1182 of file IDPerfMonEoverP.cxx.

1183{
1184 ATH_MSG_VERBOSE("In passWenuSelection() -- START -- ");
1185 if(m_nbpv<1) return false;
1186 bool primaryVertexOk(false);
1187 electrons.clear();
1188
1189 for (int i(0); i<m_nbpv; ++i){
1190 if (m_pvnbtk[i] > 2) primaryVertexOk = true;
1191 }
1192 if(!primaryVertexOk) {
1193 ATH_MSG_DEBUG (" -- passWenuSelection() -- failing on primary vertices");
1194 return false;
1195 }
1196
1197 //MET Goodness
1198 if( m_isDATA && !m_METgoodness) {
1199 ATH_MSG_DEBUG (" -- passWenuSelection() -- failing on m_isDATA && !m_METgoodness");
1200 return false;
1201 }
1202
1203 //Trigger
1204 //no need to pass trigger for perfromance studies
1205
1206
1207 //Loose electron selection
1208 std::vector<int> goodLooseElectrons;
1209 for(int ele(0); ele<m_nelectrons; ++ele){
1210 //Loose electron selection
1211 if (!m_IsEMLoose[ele]) continue;
1212 //Pt
1213 double clusterEt = cosh( m_ClusterEta[ele] ) != 0 ? m_ClusterEnergy[ele] / std::cosh( m_ClusterEta[ele] ) : 0.;
1214 if (clusterEt <= 25000) continue;
1215 //Range
1216 double absEta = std::abs(m_ClusterEta[ele]);
1217 if (absEta >= 2.47 || ( absEta >= 1.37 && absEta <= 1.52 ) ) continue;
1218 //OTx ...
1219 if(!m_isGoodOQ[ele]) continue;
1220 //Author
1221 if(m_author[ele]!=1 && m_author[ele]!=3) continue;
1222 goodLooseElectrons.push_back(ele);
1223 }
1224
1225 //Fill Loose electron ET spectrum;
1226 for(int gele(0); gele < (int) goodLooseElectrons.size(); ++gele){
1227 int ele = goodLooseElectrons[gele];
1228 double trackEt = m_ClusterEnergy[gele]*sin(m_electronTheta[0][ele]);
1229 m_WenuLooseElectronET->Fill(trackEt);
1230 }
1231
1232 int nMediumElectrons(0);
1233 int nTightElectrons(0);
1234 int tightElectron(0);
1235
1236 for(int gele(0); gele < (int) goodLooseElectrons.size(); ++gele){
1237 //
1238 int ele = goodLooseElectrons[gele];
1239 if(m_IsEMMedium[ele]) ++nMediumElectrons;
1240 if (!m_IsEMTight[ele]) continue;
1241 ++nTightElectrons;
1242 tightElectron = ele;
1243 }
1244
1245 //Reject events with more than one good electron
1246 if (nMediumElectrons >2) {
1247 ATH_MSG_DEBUG (" -- passWenuSelection() -- failing number of medium electrons cut " << nMediumElectrons );
1248 return false;
1249 }
1250 //Reject events with no tight electrons;
1251 if (nTightElectrons <1) {
1252 ATH_MSG_DEBUG (" -- passWenuSelection() -- failing number of tight electrons cut " << nTightElectrons );
1253 return false;
1254 }
1255 double metphi = atan2(m_missingEty,m_missingEtx);
1256 double trackEt = m_ClusterEnergy[tightElectron]*std::sin(m_electronTheta[0][tightElectron]);
1257 double clusterEt = std::cosh( m_ClusterEta[tightElectron] ) !=0 ? m_ClusterEnergy[tightElectron] / std::cosh( m_ClusterEta[tightElectron] ) : 0.;
1258
1259 double massT = 2*m_missingEt*trackEt*(1-cos(m_electronPhi[0][tightElectron]-metphi));
1260 if(massT > 0) massT =std::sqrt(massT);
1261 else massT = 0;
1262
1263
1265 m_WenuTight_MT->Fill(massT);
1266
1267 if (m_missingEt <= 25000) {
1268 ATH_MSG_DEBUG (" -- passWenuSelection() -- failing missingEt cut " << m_missingEt );
1269 return false;
1270 }
1271 m_WenuTightMet_MT->Fill(massT);
1272
1273 if (massT <= 50000) {
1274 ATH_MSG_DEBUG (" -- passWenuSelection() -- failing transverse mass cut " << massT );
1275 return false;
1276 }
1277
1278 m_WenuTightElectronET->Fill(clusterEt);
1279
1280 double sumpx = m_ClusterEnergy[tightElectron]*std::sin( m_electronPhi[0][tightElectron] ) * std::sin(m_electronTheta[0][tightElectron]) + m_missingEtx;
1281 double sumpy = m_ClusterEnergy[tightElectron]*std::cos( m_electronPhi[0][tightElectron] ) * std::sin(m_electronTheta[0][tightElectron]) + m_missingEty;
1282
1283 double wpt = sumpx*sumpx +sumpy*sumpy - massT*massT;
1284 if(wpt > 0) wpt =std::sqrt(wpt);
1285 else wpt = 0;
1286
1287 m_WenuTightW_PT->Fill(wpt);
1288
1289
1290 if(m_electronQoverP[0][tightElectron] > 0){
1291 m_WenuTightElectron_PTEtaPos->Fill(trackEt,m_ClusterEta[tightElectron]);
1292 } else {
1293 m_WenuTightElectron_PTEtaNeg->Fill(trackEt,m_ClusterEta[tightElectron]);
1294 }
1295
1296 electrons.push_back(tightElectron);
1297
1298 ATH_MSG_VERBOSE("In passWenuSelection() -- completed -- ");
1299 return true;
1300}
bool absEta(const xAOD::TauJet &tau, float &out)

◆ passZeeSelection()

bool IDPerfMonEoverP::passZeeSelection ( std::vector< int > & electrons)
private

Definition at line 1074 of file IDPerfMonEoverP.cxx.

1075{
1076 ATH_MSG_VERBOSE("In passZeeSelection() -- START -- ");
1077 //ATH_MSG_WARNING("Zee seletion needs to be adjusted for run2");
1078 // Adjusted according to https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/WZCommonAnalysisTopics2015
1079 if(m_nbpv<1) {
1080 ATH_MSG_DEBUG (" -- passZeeSelection() -- failing on primary vertices: m_nbpv= " << m_nbpv);
1081 return false;
1082 }
1083
1084 bool primaryVertexOk(false);
1085 electrons.clear();
1086
1087 for (int i=0; i<m_nbpv; ++i){
1088 if (m_pvnbtk[i] > 2) primaryVertexOk = true;
1089 }
1090 if(!primaryVertexOk) {
1091 ATH_MSG_DEBUG (" -- passZeeSelection() -- failing on primary vertices");
1092 return false;
1093 }
1094 //Trigger
1095 //No need to pass the trigger for tracking performance studies
1096
1097 //Loose electron selection
1098 std::vector<int> goodLooseElectrons;
1099
1100 for(int ele=0; ele<m_nelectrons; ele++){
1101 //Loose electron selection
1102 if (!m_IsEMLoose[ele]) continue;
1103 //Pt
1104 double clusterEt = cosh( m_ClusterEta[ele] ) != 0 ? m_ClusterEnergy[ele] / std::cosh( m_ClusterEta[ele] ) : 0.;
1105 if (clusterEt <= 25000) continue;
1106
1107 //Range
1108 double absEta = std::abs(m_ClusterEta[ele]);
1109 if (absEta >= 2.47 || ( absEta >= 1.37 && absEta <= 1.52 )) continue;
1110
1111 //OTx ...
1112 if(!m_isGoodOQ[ele]) continue;
1113
1114 //Author
1115 if(m_author[ele]!=1 && m_author[ele]!=3) continue;
1116
1117 goodLooseElectrons.push_back(ele);
1118 }
1119
1120 int pairsLooseInMassWindow = 0;
1121
1122 ATH_MSG_DEBUG(" -- passZeeSelection() -- report -- N Loose electrons " << goodLooseElectrons.size());
1123
1124 //Fill Loose electron ET spectrum;
1125 for(int gele1 = 0; gele1 < (int)goodLooseElectrons.size()-1; ++gele1){
1126 for(int gele2 = gele1+1; gele2 < (int)goodLooseElectrons.size(); ++gele2){
1127 int ele1 = goodLooseElectrons[gele1];
1128 int ele2 = goodLooseElectrons[gele2];
1129 double mass = getMassCluster(ele1,ele2);
1130 if (mass > 60000 && mass < 120000){
1131 ++pairsLooseInMassWindow;
1132 if(m_electronQoverP[0][ele1]*m_electronQoverP[0][ele2]<0)
1133 m_ZeeLooseMassOS_Cluster->Fill(mass);
1134 else
1135 m_ZeeLooseMassSS_Cluster->Fill(mass);
1136 }
1137 }
1138 }
1139
1140 if (pairsLooseInMassWindow < 1) {
1141 ATH_MSG_DEBUG (" -- passZeeSelection() -- failing pairsLooseInMassWindow= " << pairsLooseInMassWindow );
1142 return false;
1143 }
1144 std::vector<int> goodMediumElectrons;
1145
1146 for(int gele = 0; gele < (int)goodLooseElectrons.size(); ++gele){
1147 int ele = goodLooseElectrons[gele];
1148 if(m_IsEMMedium[ele]){
1149 goodMediumElectrons.push_back(ele);
1150 }
1151 }
1152
1153 //Reject events with more than two good electrons
1154 if (goodMediumElectrons.size() != 2) {
1155 ATH_MSG_DEBUG (" -- passZeeSelection() -- failing goodMediumElectrons != 2 --> " << goodMediumElectrons.size());
1156 return false;
1157 }
1158
1159 // Make the mass out of the highest pt electrons ....
1160 double mass = getMassCluster(goodMediumElectrons[0],goodMediumElectrons[1]);
1161 if (mass > 66000 && mass < 116000){
1162 if(m_electronQoverP[0][goodMediumElectrons[0]]*m_electronQoverP[0][goodMediumElectrons[1]]<0){
1163 m_ZeeMediumMassOS_Cluster->Fill(mass);
1164 electrons.push_back(goodMediumElectrons[0]);
1165 electrons.push_back(goodMediumElectrons[1]);
1166
1167 double trackEt = m_ClusterEnergy[goodMediumElectrons[0]]*sin(m_electronTheta[0][goodMediumElectrons[0]]);
1168 m_ZeeMediumOS_ClusterPtEta->Fill(trackEt, m_ClusterEta[0] );
1169 trackEt = m_ClusterEnergy[goodMediumElectrons[1]]*sin(m_electronTheta[0][goodMediumElectrons[1]]);
1170 m_ZeeMediumOS_ClusterPtEta->Fill(trackEt, m_ClusterEta[1] );
1171
1172 return true;
1173 } else{
1174 m_ZeeMediumMassSS_Cluster->Fill(mass);
1175 return false;
1176 }
1177 }
1178 return false;
1179}
double getMassCluster(int el1, int el2)

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 368 of file AthCommonDataStore.h.

369 {
370 h.renounce();
372 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 352 of file AthCommonDataStore.h.

352 {
354 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ storeMETinformation()

bool IDPerfMonEoverP::storeMETinformation ( )
private

Definition at line 860 of file IDPerfMonEoverP.cxx.

861{
862 ATH_MSG_VERBOSE("In storeMETinformation()");
863 const xAOD::MissingETContainer *pMissingCont(0);
864 const xAOD::MissingET *MET;
866 ATH_MSG_WARNING("No collection with name " << m_missingEtObjectName << " found in StoreGate");
867 return false;
868 }
869
871 sc = evtStore()->retrieve(pMissingCont,m_missingEtObjectName);
872 if (sc.isFailure()) {
873 ATH_MSG_ERROR( "Could not retrieve MissingETContainer" );
874 return false;
875 }
876 MET = (*pMissingCont)[m_metRefFinalName];
878 m_sumet = MET->sumet();
879 m_missingEt = MET->met();
880 m_missingEtx = MET->mpx();
881 m_missingEty = MET->mpy();
882 return true;
883}
bool passMETCleaningCuts() const
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116
MissingET_v1 MissingET
Version control by type defintion.
Definition MissingET.h:15
MissingETContainer_v1 MissingETContainer

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 298 of file AthCommonDataStore.h.

298 {
299 for (auto &a : m_vhka) {
301 for (auto k : keys) {
302 k->setOwner(this);
303 }
304 }
305 }

◆ validationAction()

void IDPerfMonEoverP::validationAction ( )
private

Definition at line 843 of file IDPerfMonEoverP.cxx.

844{
845 ATH_MSG_DEBUG( "validationAction() -- START -- ");
846 // first record the values
847 if (m_validationTree){
850 m_validationTree->Fill();
851 ATH_MSG_DEBUG( "Writing data into ntuple " << m_validationTree->GetName() << ". Entry #" << m_validationTree->GetEntries() );
852 }
853 // then reset
855 ATH_MSG_DEBUG( "validationAction() -- completed -- current number of entries " << m_validationTree->GetEntries() );
856 }
857}

Member Data Documentation

◆ m_associatedToVtx

int IDPerfMonEoverP::m_associatedToVtx[NOS_ELECTRONS] {}
private

Definition at line 245 of file IDPerfMonEoverP.h.

245{};

◆ m_author

int IDPerfMonEoverP::m_author[NOS_ELECTRONS] {}
private

Definition at line 230 of file IDPerfMonEoverP.h.

230{};

◆ m_ClusterEnergy

float IDPerfMonEoverP::m_ClusterEnergy[NOS_ELECTRONS] {}
private

Definition at line 232 of file IDPerfMonEoverP.h.

232{};

◆ m_ClusterEta

float IDPerfMonEoverP::m_ClusterEta[NOS_ELECTRONS] {}
private

Definition at line 233 of file IDPerfMonEoverP.h.

233{};

◆ m_ClusterPhi

float IDPerfMonEoverP::m_ClusterPhi[NOS_ELECTRONS] {}
private

Definition at line 234 of file IDPerfMonEoverP.h.

234{};

◆ m_covpvxpvy

float IDPerfMonEoverP::m_covpvxpvy[NO_PV] {}
private

Definition at line 259 of file IDPerfMonEoverP.h.

259{};

◆ m_covpvypvz

float IDPerfMonEoverP::m_covpvypvz[NO_PV] {}
private

Definition at line 260 of file IDPerfMonEoverP.h.

260{};

◆ m_covpvzpvx

float IDPerfMonEoverP::m_covpvzpvx[NO_PV] {}
private

Definition at line 261 of file IDPerfMonEoverP.h.

261{};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 381 of file AthCommonDataStore.h.

◆ m_electronCounter

int IDPerfMonEoverP::m_electronCounter
private

counter for electrons

Definition at line 201 of file IDPerfMonEoverP.h.

◆ m_electrond0

float IDPerfMonEoverP::m_electrond0[3][NOS_ELECTRONS] {}
private

Track Phi on electron.

Definition at line 207 of file IDPerfMonEoverP.h.

207{};

◆ m_electronErrd0

float IDPerfMonEoverP::m_electronErrd0[3][NOS_ELECTRONS] {}
private

Definition at line 215 of file IDPerfMonEoverP.h.

215{};

◆ m_electronErrPhi

float IDPerfMonEoverP::m_electronErrPhi[3][NOS_ELECTRONS] {}
private

Track phi error on electron.

Definition at line 213 of file IDPerfMonEoverP.h.

213{};

◆ m_electronErrQoverP

float IDPerfMonEoverP::m_electronErrQoverP[3][NOS_ELECTRONS] {}
private

Definition at line 214 of file IDPerfMonEoverP.h.

214{};

◆ m_electronErrTheta

float IDPerfMonEoverP::m_electronErrTheta[3][NOS_ELECTRONS] {}
private

Track theta error on electron.

Definition at line 212 of file IDPerfMonEoverP.h.

212{};

◆ m_electronErrz0

float IDPerfMonEoverP::m_electronErrz0[3][NOS_ELECTRONS] {}
private

Definition at line 216 of file IDPerfMonEoverP.h.

216{};

◆ m_electronEta

float IDPerfMonEoverP::m_electronEta[3][NOS_ELECTRONS] {}
private

Track Eta at perigee.

Definition at line 204 of file IDPerfMonEoverP.h.

204{};

◆ m_electronLMQoverP

float IDPerfMonEoverP::m_electronLMQoverP[3][NOS_ELECTRONS] {}
private

Track q over p on electron.

Definition at line 210 of file IDPerfMonEoverP.h.

210{};

◆ m_electronPhi

float IDPerfMonEoverP::m_electronPhi[3][NOS_ELECTRONS] {}
private

Track Phi on electron.

Definition at line 205 of file IDPerfMonEoverP.h.

205{};

◆ m_electronQoverP

float IDPerfMonEoverP::m_electronQoverP[3][NOS_ELECTRONS] {}
private

Track q over p on electron.

Definition at line 206 of file IDPerfMonEoverP.h.

206{};

◆ m_electronTheta

float IDPerfMonEoverP::m_electronTheta[3][NOS_ELECTRONS] {}
private

Track theta at perigee.

Definition at line 203 of file IDPerfMonEoverP.h.

203{};

◆ m_electronz0

float IDPerfMonEoverP::m_electronz0[3][NOS_ELECTRONS] {}
private

Track q over p on electron.

Definition at line 208 of file IDPerfMonEoverP.h.

208{};

◆ m_ePID_IsolationType

float IDPerfMonEoverP::m_ePID_IsolationType[50][NOS_ELECTRONS] {}
private

Definition at line 272 of file IDPerfMonEoverP.h.

272{};

◆ m_ePID_ShowerType

float IDPerfMonEoverP::m_ePID_ShowerType[50][NOS_ELECTRONS] {}
private

Definition at line 271 of file IDPerfMonEoverP.h.

271{};

◆ m_ePID_SummaryType

float IDPerfMonEoverP::m_ePID_SummaryType[50][NOS_ELECTRONS] {}
private

Definition at line 274 of file IDPerfMonEoverP.h.

274{};

◆ m_ePID_TrackCaloMatchType

float IDPerfMonEoverP::m_ePID_TrackCaloMatchType[50][NOS_ELECTRONS] {}
private

Definition at line 273 of file IDPerfMonEoverP.h.

273{};

◆ m_errpvx

float IDPerfMonEoverP::m_errpvx[NO_PV] {}
private

Definition at line 256 of file IDPerfMonEoverP.h.

256{};

◆ m_errpvy

float IDPerfMonEoverP::m_errpvy[NO_PV] {}
private

Definition at line 257 of file IDPerfMonEoverP.h.

257{};

◆ m_errpvz

float IDPerfMonEoverP::m_errpvz[NO_PV] {}
private

Definition at line 258 of file IDPerfMonEoverP.h.

258{};

◆ m_evt

SG::ReadHandleKey<xAOD::EventInfo> IDPerfMonEoverP::m_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}
private

ReadHandle to the Event Info.

Definition at line 153 of file IDPerfMonEoverP.h.

153{this, "EvtInfo", "EventInfo", "EventInfo name"};

◆ m_evtNumber

unsigned int IDPerfMonEoverP::m_evtNumber
private

Definition at line 196 of file IDPerfMonEoverP.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 378 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_fillDetailedTree

bool IDPerfMonEoverP::m_fillDetailedTree
private

validation tree name - to be acessed by this from root

Definition at line 182 of file IDPerfMonEoverP.h.

◆ m_fillVertexInfo

bool IDPerfMonEoverP::m_fillVertexInfo
private

Definition at line 175 of file IDPerfMonEoverP.h.

◆ m_InputElectronContainerName

std::string IDPerfMonEoverP::m_InputElectronContainerName
private

Electron collection input name.

Definition at line 133 of file IDPerfMonEoverP.h.

◆ m_isDATA

bool IDPerfMonEoverP::m_isDATA
private

Definition at line 172 of file IDPerfMonEoverP.h.

◆ m_IsEMLoose

bool IDPerfMonEoverP::m_IsEMLoose[NOS_ELECTRONS] {}
private

Definition at line 236 of file IDPerfMonEoverP.h.

236{};

◆ m_IsEMMedium

bool IDPerfMonEoverP::m_IsEMMedium[NOS_ELECTRONS] {}
private

Definition at line 237 of file IDPerfMonEoverP.h.

237{};

◆ m_IsEMTight

bool IDPerfMonEoverP::m_IsEMTight[NOS_ELECTRONS] {}
private

Definition at line 238 of file IDPerfMonEoverP.h.

238{};

◆ m_IsEMTightTRT

bool IDPerfMonEoverP::m_IsEMTightTRT[NOS_ELECTRONS] {}
private

Definition at line 239 of file IDPerfMonEoverP.h.

239{};

◆ m_isGoodOQ

bool IDPerfMonEoverP::m_isGoodOQ[NOS_ELECTRONS] {}
private

Definition at line 240 of file IDPerfMonEoverP.h.

240{};

◆ m_jetCleaningTool

ToolHandle< IJetSelector > IDPerfMonEoverP::m_jetCleaningTool {this,"JetCleaningTool","JetCleaningTool/JetCleaningTool",""}
private

jet selector tool

Definition at line 165 of file IDPerfMonEoverP.h.

166{this,"JetCleaningTool","JetCleaningTool/JetCleaningTool",""};

◆ m_jetContainerName

std::string IDPerfMonEoverP::m_jetContainerName
private

JEt collection input name.

Definition at line 138 of file IDPerfMonEoverP.h.

◆ m_LHToolLoose2015

AsgElectronLikelihoodTool* IDPerfMonEoverP::m_LHToolLoose2015
private

Definition at line 331 of file IDPerfMonEoverP.h.

◆ m_LHToolMedium2015

AsgElectronLikelihoodTool* IDPerfMonEoverP::m_LHToolMedium2015
private

Definition at line 332 of file IDPerfMonEoverP.h.

◆ m_LHToolTight2015

AsgElectronLikelihoodTool* IDPerfMonEoverP::m_LHToolTight2015
private

Definition at line 333 of file IDPerfMonEoverP.h.

◆ m_lhTune

std::string IDPerfMonEoverP::m_lhTune
private

Definition at line 330 of file IDPerfMonEoverP.h.

◆ m_lumi_block

unsigned int IDPerfMonEoverP::m_lumi_block
private

Definition at line 197 of file IDPerfMonEoverP.h.

◆ m_METgoodness

bool IDPerfMonEoverP::m_METgoodness
private

Definition at line 264 of file IDPerfMonEoverP.h.

◆ m_metRefFinalName

std::string IDPerfMonEoverP::m_metRefFinalName
private

Definition at line 135 of file IDPerfMonEoverP.h.

◆ m_missingEt

float IDPerfMonEoverP::m_missingEt
private

Definition at line 266 of file IDPerfMonEoverP.h.

◆ m_missingEtObjectName

std::string IDPerfMonEoverP::m_missingEtObjectName
private

MET input name.

Definition at line 140 of file IDPerfMonEoverP.h.

◆ m_missingEtx

float IDPerfMonEoverP::m_missingEtx
private

Definition at line 267 of file IDPerfMonEoverP.h.

◆ m_missingEty

float IDPerfMonEoverP::m_missingEty
private

Definition at line 268 of file IDPerfMonEoverP.h.

◆ m_nBLayer

int IDPerfMonEoverP::m_nBLayer[NOS_ELECTRONS] {}
private

Definition at line 221 of file IDPerfMonEoverP.h.

221{};

◆ m_nbpv

int IDPerfMonEoverP::m_nbpv
private

Definition at line 249 of file IDPerfMonEoverP.h.

◆ m_nelectrons

int IDPerfMonEoverP::m_nelectrons
private

Definition at line 200 of file IDPerfMonEoverP.h.

◆ m_nPIX

int IDPerfMonEoverP::m_nPIX[NOS_ELECTRONS] {}
private

Definition at line 222 of file IDPerfMonEoverP.h.

222{};

◆ m_nPIXout

int IDPerfMonEoverP::m_nPIXout[NOS_ELECTRONS] {}
private

Definition at line 225 of file IDPerfMonEoverP.h.

225{};

◆ m_nSCT

int IDPerfMonEoverP::m_nSCT[NOS_ELECTRONS] {}
private

Definition at line 220 of file IDPerfMonEoverP.h.

220{};

◆ m_nSCTout

int IDPerfMonEoverP::m_nSCTout[NOS_ELECTRONS] {}
private

Definition at line 224 of file IDPerfMonEoverP.h.

224{};

◆ m_nTRT

int IDPerfMonEoverP::m_nTRT[NOS_ELECTRONS] {}
private

Definition at line 219 of file IDPerfMonEoverP.h.

219{};

◆ m_nTRTHT

int IDPerfMonEoverP::m_nTRTHT[NOS_ELECTRONS] {}
private

Definition at line 226 of file IDPerfMonEoverP.h.

226{};

◆ m_nTRTHTout

int IDPerfMonEoverP::m_nTRTHTout[NOS_ELECTRONS] {}
private

Definition at line 227 of file IDPerfMonEoverP.h.

227{};

◆ m_nTRTout

int IDPerfMonEoverP::m_nTRTout[NOS_ELECTRONS] {}
private

Definition at line 223 of file IDPerfMonEoverP.h.

223{};

◆ m_OutputTrackCollectionName_no1

std::string IDPerfMonEoverP::m_OutputTrackCollectionName_no1
private

Name of output of Refitted Inner Detector Tracks.

Definition at line 145 of file IDPerfMonEoverP.h.

◆ m_OutputTrackCollectionName_no2

std::string IDPerfMonEoverP::m_OutputTrackCollectionName_no2
private

Definition at line 146 of file IDPerfMonEoverP.h.

◆ m_PID_IsolationType_Names

std::vector< std::pair <xAOD::Iso::IsolationType, std::string > > IDPerfMonEoverP::m_PID_IsolationType_Names
private

Definition at line 277 of file IDPerfMonEoverP.h.

◆ m_PID_ShowerType_Names

std::vector< std::pair <xAOD::EgammaParameters::ShowerShapeType, std::string > > IDPerfMonEoverP::m_PID_ShowerType_Names
private

Definition at line 276 of file IDPerfMonEoverP.h.

◆ m_PID_SummaryType_Names

std::vector< std::pair <xAOD::SummaryType, std::string > > IDPerfMonEoverP::m_PID_SummaryType_Names
private

Definition at line 279 of file IDPerfMonEoverP.h.

◆ m_PID_TrackCaloMatchType_Names

std::vector< std::pair <xAOD::EgammaParameters::TrackCaloMatchType, std::string > > IDPerfMonEoverP::m_PID_TrackCaloMatchType_Names
private

Definition at line 278 of file IDPerfMonEoverP.h.

◆ m_primaryVertexCollection

std::string IDPerfMonEoverP::m_primaryVertexCollection
private

Primary vertex input name.

Definition at line 142 of file IDPerfMonEoverP.h.

◆ m_pvnbtk

int IDPerfMonEoverP::m_pvnbtk[NO_PV] {}
private

Definition at line 251 of file IDPerfMonEoverP.h.

251{};

◆ m_pvsumpt

float IDPerfMonEoverP::m_pvsumpt[NO_PV] {}
private

Definition at line 252 of file IDPerfMonEoverP.h.

252{};

◆ m_pvtype

int IDPerfMonEoverP::m_pvtype[NO_PV] {}
private

Definition at line 250 of file IDPerfMonEoverP.h.

250{};

◆ m_pvx

float IDPerfMonEoverP::m_pvx[NO_PV] {}
private

Definition at line 253 of file IDPerfMonEoverP.h.

253{};

◆ m_pvy

float IDPerfMonEoverP::m_pvy[NO_PV] {}
private

Definition at line 254 of file IDPerfMonEoverP.h.

254{};

◆ m_pvz

float IDPerfMonEoverP::m_pvz[NO_PV] {}
private

Definition at line 255 of file IDPerfMonEoverP.h.

255{};

◆ m_refitEverything

bool IDPerfMonEoverP::m_refitEverything
private

Definition at line 169 of file IDPerfMonEoverP.h.

◆ m_refittedTracks_no1

TrackCollection* IDPerfMonEoverP::m_refittedTracks_no1
private

Refitted track collection.

Definition at line 149 of file IDPerfMonEoverP.h.

◆ m_refittedTracks_no2

TrackCollection* IDPerfMonEoverP::m_refittedTracks_no2
private

Definition at line 150 of file IDPerfMonEoverP.h.

◆ m_runNumber

unsigned int IDPerfMonEoverP::m_runNumber
private

Definition at line 195 of file IDPerfMonEoverP.h.

◆ m_small1_QoverP

double IDPerfMonEoverP::m_small1_QoverP
private

Definition at line 314 of file IDPerfMonEoverP.h.

◆ m_small2_QoverP

double IDPerfMonEoverP::m_small2_QoverP
private

Definition at line 315 of file IDPerfMonEoverP.h.

◆ m_small_QoverP

double IDPerfMonEoverP::m_small_QoverP
private

Definition at line 313 of file IDPerfMonEoverP.h.

◆ m_smallCharge

double IDPerfMonEoverP::m_smallCharge
private

Definition at line 320 of file IDPerfMonEoverP.h.

◆ m_smallClusterEnergy

double IDPerfMonEoverP::m_smallClusterEnergy
private

Definition at line 316 of file IDPerfMonEoverP.h.

◆ m_smallClusterEta

double IDPerfMonEoverP::m_smallClusterEta
private

Definition at line 318 of file IDPerfMonEoverP.h.

◆ m_smallClusterPhi

double IDPerfMonEoverP::m_smallClusterPhi
private

Definition at line 317 of file IDPerfMonEoverP.h.

◆ m_smalld0

double IDPerfMonEoverP::m_smalld0
private

Definition at line 321 of file IDPerfMonEoverP.h.

◆ m_smallTrackTheta

double IDPerfMonEoverP::m_smallTrackTheta
private

Definition at line 319 of file IDPerfMonEoverP.h.

◆ m_smallValidationTree

TTree* IDPerfMonEoverP::m_smallValidationTree
private

Definition at line 310 of file IDPerfMonEoverP.h.

◆ m_smallValidationTreeDescription

std::string IDPerfMonEoverP::m_smallValidationTreeDescription
private

stream/folder to for the TTree to be written out

Definition at line 306 of file IDPerfMonEoverP.h.

◆ m_smallValidationTreeFolder

std::string IDPerfMonEoverP::m_smallValidationTreeFolder
private

Root Validation Tree.

Definition at line 308 of file IDPerfMonEoverP.h.

◆ m_smallValidationTreeName

std::string IDPerfMonEoverP::m_smallValidationTreeName
private

validation tree description - second argument in TTree

Definition at line 304 of file IDPerfMonEoverP.h.

◆ m_smallz0

double IDPerfMonEoverP::m_smallz0
private

Definition at line 322 of file IDPerfMonEoverP.h.

◆ m_sumet

float IDPerfMonEoverP::m_sumet
private

Definition at line 265 of file IDPerfMonEoverP.h.

◆ m_TrackRefitter

ToolHandle<IegammaTrkRefitterTool> IDPerfMonEoverP::m_TrackRefitter
private

The track refitter.

Definition at line 156 of file IDPerfMonEoverP.h.

◆ m_TrackRefitter_no2

ToolHandle<IegammaTrkRefitterTool> IDPerfMonEoverP::m_TrackRefitter_no2
private

The track refitter.

Definition at line 159 of file IDPerfMonEoverP.h.

◆ m_trigDec

ToolHandle<Trig::TrigDecisionTool> IDPerfMonEoverP::m_trigDec
private

The trigger decision tool.

Definition at line 162 of file IDPerfMonEoverP.h.

◆ m_trigger

bool IDPerfMonEoverP::m_trigger[50] {}
private

Definition at line 283 of file IDPerfMonEoverP.h.

283{};

◆ m_triggerNames

std::vector<std::string> IDPerfMonEoverP::m_triggerNames
private

Definition at line 284 of file IDPerfMonEoverP.h.

◆ m_validationMode

bool IDPerfMonEoverP::m_validationMode
private

< boolean to switch to validation mode

boolean to switch to on Detailed Tree Filling – large increase in the ntuple size

Definition at line 179 of file IDPerfMonEoverP.h.

◆ m_validationTree

TTree* IDPerfMonEoverP::m_validationTree
private

Definition at line 192 of file IDPerfMonEoverP.h.

◆ m_validationTreeDescription

std::string IDPerfMonEoverP::m_validationTreeDescription
private

stream/folder to for the TTree to be written out

Definition at line 188 of file IDPerfMonEoverP.h.

◆ m_validationTreeFolder

std::string IDPerfMonEoverP::m_validationTreeFolder
private

Root Validation Tree.

Definition at line 190 of file IDPerfMonEoverP.h.

◆ m_validationTreeName

std::string IDPerfMonEoverP::m_validationTreeName
private

validation tree description - second argument in TTree

Definition at line 186 of file IDPerfMonEoverP.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 387 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 386 of file AthCommonDataStore.h.

◆ m_vxpos

VxPos IDPerfMonEoverP::m_vxpos[NOS_ELECTRONS]
private

Definition at line 246 of file IDPerfMonEoverP.h.

◆ m_WenuLooseElectronET

TH1F* IDPerfMonEoverP::m_WenuLooseElectronET
private

Definition at line 293 of file IDPerfMonEoverP.h.

◆ m_WenuTight_Met

TH1F* IDPerfMonEoverP::m_WenuTight_Met
private

Definition at line 294 of file IDPerfMonEoverP.h.

◆ m_WenuTight_MT

TH1F* IDPerfMonEoverP::m_WenuTight_MT
private

Definition at line 295 of file IDPerfMonEoverP.h.

◆ m_WenuTightElectron_PTEtaNeg

TH2F* IDPerfMonEoverP::m_WenuTightElectron_PTEtaNeg
private

validation tree name - to be acessed by this from root

Definition at line 300 of file IDPerfMonEoverP.h.

◆ m_WenuTightElectron_PTEtaPos

TH2F* IDPerfMonEoverP::m_WenuTightElectron_PTEtaPos
private

Definition at line 299 of file IDPerfMonEoverP.h.

◆ m_WenuTightElectronET

TH1F* IDPerfMonEoverP::m_WenuTightElectronET
private

Definition at line 297 of file IDPerfMonEoverP.h.

◆ m_WenuTightMet_MT

TH1F* IDPerfMonEoverP::m_WenuTightMet_MT
private

Definition at line 296 of file IDPerfMonEoverP.h.

◆ m_WenuTightW_PT

TH1F* IDPerfMonEoverP::m_WenuTightW_PT
private

Definition at line 298 of file IDPerfMonEoverP.h.

◆ m_ZeeLooseMassOS_Cluster

TH1F* IDPerfMonEoverP::m_ZeeLooseMassOS_Cluster
private

Definition at line 287 of file IDPerfMonEoverP.h.

◆ m_ZeeLooseMassSS_Cluster

TH1F* IDPerfMonEoverP::m_ZeeLooseMassSS_Cluster
private

Definition at line 288 of file IDPerfMonEoverP.h.

◆ m_ZeeMediumMassOS_Cluster

TH1F* IDPerfMonEoverP::m_ZeeMediumMassOS_Cluster
private

Definition at line 289 of file IDPerfMonEoverP.h.

◆ m_ZeeMediumMassSS_Cluster

TH1F* IDPerfMonEoverP::m_ZeeMediumMassSS_Cluster
private

Definition at line 290 of file IDPerfMonEoverP.h.

◆ m_ZeeMediumOS_ClusterPtEta

TH2F* IDPerfMonEoverP::m_ZeeMediumOS_ClusterPtEta
private

Definition at line 291 of file IDPerfMonEoverP.h.


The documentation for this class was generated from the following files: