ATLAS Offline Software
Loading...
Searching...
No Matches
IDPerfMonWenu.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef IDPerfMonWenu_H
6#define IDPerfMonWenu_H
7
8// **********************************************************************
9// IDPerfMonWenu.cxx
10// AUTHORS: Beate Heinemann, Tobias Golling, Sara Strandberg
11// **********************************************************************
12
13#include <vector>
14#include <memory>
15
16//#include "AthenaMonitoring/AthenaMonManager.h"
18
20
22
24
26
29
30class TH1;
31class TH1F;
32class TH2;
33class TH2F;
34class TProfile;
35
37{
38
39public:
40
41 IDPerfMonWenu(const std::string & type, const std::string & name, const IInterface* parent);
42
43 virtual ~IDPerfMonWenu();
44
45 virtual StatusCode initialize();
46 virtual StatusCode bookHistograms();
47 virtual StatusCode fillHistograms();
48 virtual StatusCode procHistograms();
49
50 void RegisterHisto(MonGroup& mon, TH1* histo, bool doSumw2 = false);
51 void RegisterHisto(MonGroup& mon, TH2* histo, bool d0Sumw2 = false);
52 void RegisterHisto(MonGroup& mon, TProfile* histo);
53
54 const xAOD::CaloCluster* getLeadingEMcluster(const xAOD::CaloClusterContainer* clusters, const xAOD::CaloCluster* omitCluster = 0) const;
55 const xAOD::CaloCluster* getLeadingEMcluster(const xAOD::PhotonContainer* photons, const xAOD::ElectronContainer* electrons, const xAOD::CaloCluster* omitCluster = 0) const;
56
58 double dEta = 0.05, double dPhi = 0.1) const;
59 double electronTrackMatchEta(const xAOD::TrackParticleContainer* tracks, const xAOD::CaloCluster* cluster,
60 double dEta = 0.05) const;
61 double electronTrackMatchPhi(const xAOD::TrackParticleContainer* tracks, const xAOD::CaloCluster* cluster,
62 double dPhi = 0.1) const;
63 double InvMass(const xAOD::CaloCluster* EM1, const xAOD::CaloCluster* EM2) const;
64 double InvMass(const xAOD::TrackParticle* trk1, const xAOD::TrackParticle* trk2) const;
65 double TransMass(const xAOD::CaloCluster* EM, const xAOD::MissingET* met) const;
66 double TransMass(const xAOD::TrackParticle* track, const xAOD::MissingET* met) const;
67 double deltaR(const xAOD::CaloCluster* cluster, const xAOD::TrackParticle* track) const;
68 double signedDeltaPhi(double phi1, double phi2) const;
69
70 int isWenu(const xAOD::CaloCluster* em, const xAOD::CaloCluster* em2, double met) const;
71
72 void makeEffHisto(TH1F* h_num, TH1F* h_denom, TH1F* h_eff);
73
74 int etaRegion(double eta);
75
76 void FillHistosPerCluster(const xAOD::CaloCluster* cluster, const xAOD::TrackParticle* track, int region, float dEta, float dPhi);
77
78 protected:
79
81
83 std::vector<std::string> m_region_strings;
84
85 // event histos
86
87 TH1F* m_Nevents{};
88
94
95 // cluster histos
96
97 std::vector<TH1F*> m_Wenu_eta;
98 std::vector<TH1F*> m_Wenu_phi;
99 std::vector<TH1F*> m_Wenu_deta;
100 std::vector<TProfile*> m_Wenu_deta_vs_eta;
101 std::vector<TProfile*> m_Wenu_deta_vs_phi;
102 std::vector<TProfile*> m_Wenu_absdeta_vs_eta;
103 std::vector<TProfile*> m_Wenu_absdeta_vs_phi;
104 std::vector<TH1F*> m_Wenu_dphi;
105 std::vector<TProfile*> m_Wenu_dphi_vs_eta;
106 std::vector<TProfile*> m_Wenu_dphi_vs_phi;
107 std::vector<TProfile*> m_Wenu_absdphi_vs_eta;
108 std::vector<TProfile*> m_Wenu_absdphi_vs_phi;
109
110 std::vector<TH1F*> m_Wenu_trackmatched_eta;
111 std::vector<TH1F*> m_Wenu_trackmatched_phi;
118 std::vector<TH1F*> m_Wenu_Eopmatch_eff_vs_eta;
119 std::vector<TH1F*> m_Wenu_Eopmatch_eff_vs_phi;
122
123 std::vector<TH1F*> m_Wenu_Eop;
124 std::vector<TH1F*> m_Wenu_Eop_plus;
125 std::vector<TH1F*> m_Wenu_Eop_minus;
126 std::vector<TProfile*> m_Wenu_meanEop_vs_p;
127 std::vector<TProfile*> m_Wenu_meanEop_vs_invp;
128 std::vector<TProfile*> m_Wenu_meanEop_vs_E;
129 std::vector<TProfile*> m_Wenu_meanEop_vs_chargedp;
130 std::vector<TProfile*> m_Wenu_meanEop_vs_chargedE;
131 std::vector<TProfile*> m_Wenu_meanEop_vs_phi;
132 std::vector<TProfile*> m_Wenu_meanEop_vs_eta;
133 std::vector<TProfile*> m_Wenu_meanEop_vs_p_plus;
134 std::vector<TProfile*> m_Wenu_meanEop_vs_invp_plus;
135 std::vector<TProfile*> m_Wenu_meanEop_vs_E_plus;
136 std::vector<TProfile*> m_Wenu_meanEop_vs_phi_plus;
137 std::vector<TProfile*> m_Wenu_meanEop_vs_eta_plus;
138 std::vector<TProfile*> m_Wenu_meanEop_vs_p_minus;
139 std::vector<TProfile*> m_Wenu_meanEop_vs_invp_minus;
140 std::vector<TProfile*> m_Wenu_meanEop_vs_E_minus;
141 std::vector<TProfile*> m_Wenu_meanEop_vs_phi_minus;
142 std::vector<TProfile*> m_Wenu_meanEop_vs_eta_minus;
143 std::vector<TH1F*> m_Wenu_Eop_lt1_gt1;
144 std::vector<TH1F*> m_Wenu_Eopdiff;
145 std::vector<TProfile*> m_Wenu_Eopdiff_vs_p;
146 std::vector<TProfile*> m_Wenu_Eopdiff_vs_invp;
147 std::vector<TProfile*> m_Wenu_Eopdiff_vs_E;
148 std::vector<TProfile*> m_Wenu_Eopdiff_vs_phi;
149 std::vector<TProfile*> m_Wenu_Eopdiff_vs_eta;
150 std::vector<TH1F*> m_Wenu_Eop_lt1_vs_eta;
151 std::vector<TH1F*> m_Wenu_Eop_lt1_vs_phi;
152 std::vector<TH1F*> m_Wenu_Eop_gt1_vs_eta;
153 std::vector<TH1F*> m_Wenu_Eop_gt1_vs_phi;
154 std::vector<TH1F*> m_Wenu_frac_Eop_lt1_vs_eta;
155 std::vector<TH1F*> m_Wenu_frac_Eop_lt1_vs_phi;
156
157 std::vector<TH1F*> m_Wenu_Eop_05_25;
158 std::vector<TH1F*> m_Wenu_Eop_15_25;
159 std::vector<TH1F*> m_Wenu_frac_Eop_05_25_15_25;
160
161 private:
162
163 std::string m_stream;
164 std::string m_tracksName;
165 std::string m_electronsName;
166 std::string m_photonsName;
168 std::string m_emclustersName;
169 std::string m_metName;
171 std::string m_metRefFinalName;
178 std::string m_electronIDLevel;
180 //Likelihood tool:
181 std::unique_ptr<AsgElectronLikelihoodTool> m_LHTool2015;
182
183};
184
185#endif
Scalar eta() const
pseudorapidity method
virtual ~IDPerfMonWenu()
TH1F * m_Wenu_transmass_sel
double m_eoverp_tight_max
std::vector< TProfile * > m_Wenu_meanEop_vs_chargedE
void makeEffHisto(TH1F *h_num, TH1F *h_denom, TH1F *h_eff)
std::vector< TH1F * > m_Wenu_phi
TH1F * m_Wenu_trk_transmass_sel
std::vector< TH1F * > m_Wenu_frac_Eop_lt1_vs_eta
std::string m_photonsName
std::vector< TProfile * > m_Wenu_Eopdiff_vs_E
std::vector< TH1F * > m_Wenu_tightEopmatch_eff_vs_eta
std::vector< TProfile * > m_Wenu_meanEop_vs_phi_minus
std::string m_metRefFinalName
std::vector< TH1F * > m_Wenu_frac_Eop_lt1_vs_phi
std::vector< TProfile * > m_Wenu_dphi_vs_phi
std::vector< TH1F * > m_Wenu_trackmatch_eff_vs_eta
TH1F * m_Wenu_met_sel
std::vector< TProfile * > m_Wenu_meanEop_vs_phi
std::vector< TProfile * > m_Wenu_Eopdiff_vs_p
std::vector< TProfile * > m_Wenu_meanEop_vs_chargedp
std::vector< TH1F * > m_Wenu_trackmatched_eta
std::vector< TProfile * > m_Wenu_meanEop_vs_p_minus
std::vector< TProfile * > m_Wenu_meanEop_vs_invp_plus
std::vector< TProfile * > m_Wenu_deta_vs_phi
std::vector< TH1F * > m_Wenu_Eop_gt1_vs_phi
std::vector< TH1F * > m_Wenu_Eop_plus
std::vector< TH1F * > m_Wenu_trackmatched_tightEopmatched_eta
std::vector< TProfile * > m_Wenu_Eopdiff_vs_invp
int etaRegion(double eta)
double signedDeltaPhi(double phi1, double phi2) const
std::vector< TProfile * > m_Wenu_meanEop_vs_phi_plus
std::string m_electronsName
std::vector< TH1F * > m_Wenu_Eopdiff
std::string m_metName
double electronTrackMatchPhi(const xAOD::TrackParticleContainer *tracks, const xAOD::CaloCluster *cluster, double dPhi=0.1) const
std::vector< TH1F * > m_Wenu_Eopmatch_eff_vs_eta
IDPerfMonWenu(const std::string &type, const std::string &name, const IInterface *parent)
std::vector< TH1F * > m_Wenu_deta
std::vector< TH1F * > m_Wenu_tightEopmatch_eff_vs_phi
TH1F * m_Wenu_trk_transmass_sel_scaled
double electronTrackMatchEta(const xAOD::TrackParticleContainer *tracks, const xAOD::CaloCluster *cluster, double dEta=0.05) const
std::vector< TH1F * > m_Wenu_Eop_gt1_vs_eta
double m_eoverp_standard_max
double InvMass(const xAOD::CaloCluster *EM1, const xAOD::CaloCluster *EM2) const
std::vector< TProfile * > m_Wenu_meanEop_vs_p
const xAOD::TrackParticle * electronTrackMatch(const xAOD::TrackParticleContainer *tracks, const xAOD::CaloCluster *cluster, double dEta=0.05, double dPhi=0.1) const
std::string m_triggerChainName
std::string m_stream
double m_eoverp_standard_min
virtual StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
std::vector< TProfile * > m_Wenu_dphi_vs_eta
std::vector< TProfile * > m_Wenu_meanEop_vs_eta_plus
std::vector< TProfile * > m_Wenu_meanEop_vs_E
std::vector< TProfile * > m_Wenu_absdphi_vs_eta
std::vector< TProfile * > m_Wenu_meanEop_vs_invp_minus
TH1F * m_Wenu_clus_pt
std::unique_ptr< AsgElectronLikelihoodTool > m_LHTool2015
void RegisterHisto(MonGroup &mon, TH1 *histo, bool doSumw2=false)
std::vector< TH1F * > m_Wenu_Eop_05_25
double m_eoverp_tight_min
std::vector< TProfile * > m_Wenu_deta_vs_eta
double InvMass(const xAOD::TrackParticle *trk1, const xAOD::TrackParticle *trk2) const
std::vector< TProfile * > m_Wenu_absdphi_vs_phi
std::string m_VxPrimContainerName
virtual StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
double TransMass(const xAOD::CaloCluster *EM, const xAOD::MissingET *met) const
std::string m_electronIDLevel
const xAOD::CaloCluster * getLeadingEMcluster(const xAOD::CaloClusterContainer *clusters, const xAOD::CaloCluster *omitCluster=0) const
std::vector< TProfile * > m_Wenu_meanEop_vs_invp
std::vector< TProfile * > m_Wenu_Eopdiff_vs_phi
std::vector< TProfile * > m_Wenu_absdeta_vs_phi
double deltaR(const xAOD::CaloCluster *cluster, const xAOD::TrackParticle *track) const
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
std::vector< TH1F * > m_Wenu_trackmatched_Eopmatched_eta
void FillHistosPerCluster(const xAOD::CaloCluster *cluster, const xAOD::TrackParticle *track, int region, float dEta, float dPhi)
std::vector< std::string > m_region_strings
std::vector< TH1F * > m_Wenu_trackmatched_phi
std::vector< TH1F * > m_Wenu_trackmatch_eff_vs_phi
virtual StatusCode initialize()
std::vector< TH1F * > m_Wenu_dphi
std::vector< TH1F * > m_Wenu_eta
std::vector< TH1F * > m_Wenu_Eop_lt1_vs_eta
std::string m_emclustersName
std::string m_tracksName
std::vector< TProfile * > m_Wenu_meanEop_vs_E_minus
double TransMass(const xAOD::TrackParticle *track, const xAOD::MissingET *met) const
std::vector< TProfile * > m_Wenu_meanEop_vs_eta
std::vector< TH1F * > m_Wenu_trackmatched_tightEopmatched_phi
std::vector< TProfile * > m_Wenu_meanEop_vs_E_plus
std::vector< TProfile * > m_Wenu_meanEop_vs_p_plus
std::vector< TProfile * > m_Wenu_absdeta_vs_eta
std::vector< TH1F * > m_Wenu_trackmatched_Eopmatched_phi
bool m_rejectSecondCluster
std::vector< TH1F * > m_Wenu_Eop_minus
std::vector< TH1F * > m_Wenu_Eop_lt1_vs_phi
std::vector< TProfile * > m_Wenu_meanEop_vs_eta_minus
std::vector< TH1F * > m_Wenu_Eopmatch_eff_vs_phi
std::vector< TH1F * > m_Wenu_frac_Eop_05_25_15_25
std::vector< TH1F * > m_Wenu_Eop
int isWenu(const xAOD::CaloCluster *em, const xAOD::CaloCluster *em2, double met) const
std::vector< TProfile * > m_Wenu_Eopdiff_vs_eta
std::vector< TH1F * > m_Wenu_Eop_15_25
std::vector< TH1F * > m_Wenu_Eop_lt1_gt1
A container of information describing a monitoring object.
ManagedMonitorToolBase(const std::string &type, const std::string &name, const IInterface *parent)
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
MissingET_v1 MissingET
Version control by type defintion.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.