src
RecoMET
METAlgorithms
interface
TCMETAlgo.h
Go to the documentation of this file.
1
// -*- C++ -*-
2
//
3
// Package: METAlgorithms
4
// Class: TCMETAlgo
5
//
6
//
7
18
//
19
// Original Author: F. Golf
20
// Created: March 24, 2009
21
//
22
//
23
24
//____________________________________________________________________________||
25
#ifndef TCMETAlgo_h
26
#define TCMETAlgo_h
27
28
//____________________________________________________________________________||
29
#include <vector>
30
#include <string>
31
#include "
FWCore/Framework/interface/Event.h
"
32
#include "
DataFormats/Common/interface/Handle.h
"
33
#include "
FWCore/Framework/interface/ESHandle.h
"
34
#include "
FWCore/Framework/interface/EventSetup.h
"
35
#include "
DataFormats/Common/interface/ValueMap.h
"
36
37
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
38
#include "
DataFormats/Candidate/interface/CandidateFwd.h
"
39
#include "
DataFormats/METReco/interface/CommonMETData.h
"
40
#include "
DataFormats/METReco/interface/MET.h
"
41
42
#include "
DataFormats/EgammaCandidates/interface/Electron.h
"
43
#include "
DataFormats/EgammaCandidates/interface/ElectronFwd.h
"
44
#include "
DataFormats/EgammaCandidates/interface/GsfElectron.h
"
45
#include "
DataFormats/EgammaCandidates/interface/GsfElectronFwd.h
"
46
47
#include "
DataFormats/MuonReco/interface/Muon.h
"
48
#include "
DataFormats/MuonReco/interface/MuonFwd.h
"
49
#include "
DataFormats/TrackReco/interface/TrackBase.h
"
50
#include "
DataFormats/VertexReco/interface/Vertex.h
"
51
#include "
DataFormats/VertexReco/interface/VertexFwd.h
"
52
#include "
DataFormats/TrackReco/interface/TrackFwd.h
"
53
#include "
DataFormats/METReco/interface/CaloMET.h
"
54
#include "
DataFormats/METReco/interface/CaloMETCollection.h
"
55
#include "
DataFormats/BeamSpot/interface/BeamSpot.h
"
56
#include "
DataFormats/MuonReco/interface/MuonMETCorrectionData.h
"
57
#include "
DataFormats/ParticleFlowReco/interface/PFClusterFwd.h
"
58
59
#include "
MagneticField/Engine/interface/MagneticField.h
"
60
#include "
MagneticField/Records/interface/IdealMagneticFieldRecord.h
"
61
62
#include "
FWCore/Framework/interface/ConsumesCollector.h
"
63
64
#include "TH2D.h"
65
#include "TVector3.h"
66
67
//____________________________________________________________________________||
68
class
TCMETAlgo
{
69
public
:
70
typedef
std::vector<const reco::Candidate>
InputCollection
;
71
TCMETAlgo
();
72
virtual
~TCMETAlgo
();
73
reco::MET
CalculateTCMET
(
edm::Event
&
event
,
const
edm::EventSetup
&
setup
);
74
TH2D*
getResponseFunction_fit
();
75
TH2D*
getResponseFunction_mode
();
76
TH2D*
getResponseFunction_shower
();
77
TH2D*
getResponseFunction_noshower
();
78
void
configure
(
const
edm::ParameterSet
& iConfig,
edm::ConsumesCollector
&& iConsumesCollector);
79
80
private
:
81
double
met_x_
;
82
double
met_y_
;
83
double
sumEt_
;
84
85
void
initialize_MET_with_PFClusters
(
edm::Event
&
event
);
86
void
initialize_MET_with_CaloMET
(
edm::Event
&
event
);
87
void
correct_MET_for_Muons
();
88
void
correct_MET_for_Tracks
();
89
90
edm::Handle<reco::MuonCollection>
muonHandle_
;
91
edm::Handle<reco::GsfElectronCollection>
electronHandle_
;
92
edm::Handle<reco::TrackCollection>
trackHandle_
;
93
edm::Handle<reco::BeamSpot>
beamSpotHandle_
;
94
edm::Handle<reco::VertexCollection>
vertexHandle_
;
95
edm::Handle<edm::ValueMap<reco::MuonMETCorrectionData>
>
muonDepValueMapHandle_
;
96
edm::Handle<edm::ValueMap<reco::MuonMETCorrectionData>
>
tcmetDepValueMapHandle_
;
97
98
edm::ESHandle<MagneticField>
magneticFieldHandle_
;
99
100
edm::EDGetTokenT<reco::MuonCollection>
muonToken_
;
101
edm::EDGetTokenT<reco::GsfElectronCollection>
electronToken_
;
102
edm::EDGetTokenT<edm::View<reco::MET>
>
metToken_
;
103
edm::EDGetTokenT<reco::TrackCollection>
trackToken_
;
104
edm::EDGetTokenT<reco::BeamSpot>
beamSpotToken_
;
105
edm::EDGetTokenT<reco::VertexCollection>
vertexToken_
;
106
edm::EDGetTokenT<reco::PFClusterCollection>
clustersECALToken_
;
107
edm::EDGetTokenT<reco::PFClusterCollection>
clustersHCALToken_
;
108
edm::EDGetTokenT<reco::PFClusterCollection>
clustersHFToken_
;
109
edm::EDGetTokenT<edm::ValueMap<reco::MuonMETCorrectionData>
>
muonDepValueMapToken_
;
110
edm::EDGetTokenT<edm::ValueMap<reco::MuonMETCorrectionData>
>
tcmetDepValueMapToken_
;
111
edm::ESGetToken<MagneticField, IdealMagneticFieldRecord>
magneticFieldToken_
;
112
113
bool
usePFClusters_
;
114
int
nLayers_
;
115
int
nLayersTight_
;
116
int
vertexNdof_
;
117
double
vertexZ_
;
118
double
vertexRho_
;
119
double
vertexMaxDZ_
;
120
double
maxpt_eta25_
;
121
double
maxpt_eta20_
;
122
bool
vetoDuplicates_
;
123
double
dupMinPt_
;
124
double
dupDPhi_
;
125
double
dupDCotTh_
;
126
std::vector<int>
duplicateTracks_
;
127
128
double
d0cuta_
;
129
double
d0cutb_
;
130
double
maxd0cut_
;
131
double
maxchi2_tight_
;
132
double
minhits_tight_
;
133
double
maxPtErr_tight_
;
134
int
nMinOuterHits_
;
135
std::vector<reco::TrackBase::TrackAlgorithm>
trackAlgos_
;
136
double
usedeltaRRejection_
;
137
double
deltaRShower_
;
138
double
minpt_
;
139
double
maxpt_
;
140
double
maxeta_
;
141
double
maxchi2_
;
142
double
minhits_
;
143
double
maxPtErr_
;
144
double
radius_
;
145
double
zdist_
;
146
double
corner_
;
147
double
eVetoDeltaR_
;
148
double
eVetoDeltaPhi_
;
149
double
eVetoDeltaCotTheta_
;
150
double
eVetoMinElectronPt_
;
151
double
hOverECut_
;
152
std::vector<int>
trkQuality_
;
153
std::vector<reco::TrackBase::TrackAlgorithm>
trkAlgos_
;
154
155
bool
isCosmics_
;
156
bool
correctShowerTracks_
;
157
bool
electronVetoCone_
;
158
bool
usePvtxd0_
;
159
bool
checkTrackPropagation_
;
160
161
class
TH2D*
response_function_
;
162
class
TH2D*
showerRF_
;
163
bool
hasValidVertex_
;
164
const
reco::VertexCollection
*
vertexColl_
;
165
166
bool
isMuon
(
const
reco::TrackRef
& trackRef);
167
bool
isElectron
(
const
reco::TrackRef
& trackRef);
168
bool
isGoodTrack
(
const
reco::TrackRef
trackRef);
169
bool
closeToElectron
(
const
reco::TrackRef
);
170
void
correctMETforMuon
(
const
reco::TrackRef
,
reco::MuonRef
& muonRef);
171
void
correctMETforMuon
(
reco::MuonRef
& muonRef);
172
void
correctMETforTrack
(
const
reco::TrackRef
, TH2D*
rf
,
const
TVector3&);
173
void
correctSumEtForTrack
(
const
reco::TrackRef
, TH2D*
rf
,
const
TVector3&);
174
class
TVector3
propagateTrackToCalorimeterFace
(
const
reco
::
TrackRef
trackRef);
175
void
findGoodShowerTracks
(std::vector<int>& goodShowerTracks);
176
bool
nearGoodShowerTrack
(const reco::TrackRef, const std::vector<int>& goodShowerTracks);
177
int
nExpectedInnerHits
(const reco::TrackRef);
178
int
nExpectedOuterHits
(const reco::TrackRef);
179
int
nLayers
(const reco::TrackRef);
180
bool
isValidVertex
();
181
void
findDuplicateTracks
();
182
int
vetoTrack
(int i1, int i2);
183
};
184
185
//____________________________________________________________________________||
186
#endif // TCMETAlgo_h
TCMETAlgo::beamSpotToken_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
Definition:
TCMETAlgo.h:104
TCMETAlgo::tcmetDepValueMapHandle_
edm::Handle< edm::ValueMap< reco::MuonMETCorrectionData > > tcmetDepValueMapHandle_
Definition:
TCMETAlgo.h:96
Vertex.h
TCMETAlgo::zdist_
double zdist_
Definition:
TCMETAlgo.h:145
TCMETAlgo::CalculateTCMET
reco::MET CalculateTCMET(edm::Event &event, const edm::EventSetup &setup)
Definition:
TCMETAlgo.cc:170
TCMETAlgo::eVetoDeltaPhi_
double eVetoDeltaPhi_
Definition:
TCMETAlgo.h:148
TCMETAlgo::getResponseFunction_fit
TH2D * getResponseFunction_fit()
Definition:
TCMETAlgo.cc:3523
TCMETAlgo::met_y_
double met_y_
Definition:
TCMETAlgo.h:82
TCMETAlgo::getResponseFunction_noshower
TH2D * getResponseFunction_noshower()
Definition:
TCMETAlgo.cc:2153
PFClusterFwd.h
TCMETAlgo::vertexHandle_
edm::Handle< reco::VertexCollection > vertexHandle_
Definition:
TCMETAlgo.h:94
TCMETAlgo::magneticFieldHandle_
edm::ESHandle< MagneticField > magneticFieldHandle_
Definition:
TCMETAlgo.h:98
runTheMatrix.const
const
Definition:
runTheMatrix.py:338
TCMETAlgo::nLayers
int nLayers(const reco::TrackRef)
Definition:
TCMETAlgo.cc:545
edm::Ref< TrackCollection >
TCMETAlgo::tcmetDepValueMapToken_
edm::EDGetTokenT< edm::ValueMap< reco::MuonMETCorrectionData > > tcmetDepValueMapToken_
Definition:
TCMETAlgo.h:110
MET.h
TCMETAlgo::vertexRho_
double vertexRho_
Definition:
TCMETAlgo.h:118
TCMETAlgo::dupDCotTh_
double dupDCotTh_
Definition:
TCMETAlgo.h:125
TCMETAlgo::dupMinPt_
double dupMinPt_
Definition:
TCMETAlgo.h:123
Event.h
TCMETAlgo::trkAlgos_
std::vector< reco::TrackBase::TrackAlgorithm > trkAlgos_
Definition:
TCMETAlgo.h:153
TCMETAlgo::vertexNdof_
int vertexNdof_
Definition:
TCMETAlgo.h:116
TCMETAlgo::nearGoodShowerTrack
bool nearGoodShowerTrack(const reco::TrackRef, const std::vector< int > &goodShowerTracks)
Definition:
TCMETAlgo.cc:492
edm::Handle< reco::MuonCollection >
EventSetup.h
TCMETAlgo::corner_
double corner_
Definition:
TCMETAlgo.h:146
TCMETAlgo::correctSumEtForTrack
void correctSumEtForTrack(const reco::TrackRef, TH2D *rf, const TVector3 &)
Definition:
TCMETAlgo.cc:725
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition:
VertexFwd.h:9
TCMETAlgo::vertexColl_
const reco::VertexCollection * vertexColl_
Definition:
TCMETAlgo.h:164
CommonMETData.h
TCMETAlgo::eVetoDeltaR_
double eVetoDeltaR_
Definition:
TCMETAlgo.h:147
TCMETAlgo::usePFClusters_
bool usePFClusters_
Definition:
TCMETAlgo.h:113
TrackFwd.h
CaloMETCollection.h
TCMETAlgo::trackToken_
edm::EDGetTokenT< reco::TrackCollection > trackToken_
Definition:
TCMETAlgo.h:103
TCMETAlgo::nExpectedOuterHits
int nExpectedOuterHits(const reco::TrackRef)
Definition:
TCMETAlgo.cc:540
TCMETAlgo::showerRF_
class TH2D * showerRF_
Definition:
TCMETAlgo.h:162
VertexFwd.h
MuonMETCorrectionData.h
TCMETAlgo::usePvtxd0_
bool usePvtxd0_
Definition:
TCMETAlgo.h:158
ValueMap.h
edm::EDGetTokenT< reco::MuonCollection >
TCMETAlgo::maxpt_eta25_
double maxpt_eta25_
Definition:
TCMETAlgo.h:120
TCMETAlgo::getResponseFunction_shower
TH2D * getResponseFunction_shower()
Definition:
TCMETAlgo.cc:785
TCMETAlgo::beamSpotHandle_
edm::Handle< reco::BeamSpot > beamSpotHandle_
Definition:
TCMETAlgo.h:93
funct::void
TEMPL(T2) struct Divides void
Definition:
Factorize.h:24
TCMETAlgo::isMuon
bool isMuon(const reco::TrackRef &trackRef)
Definition:
TCMETAlgo.cc:548
MuonFwd.h
TCMETAlgo::electronVetoCone_
bool electronVetoCone_
Definition:
TCMETAlgo.h:157
MagneticField.h
ParameterSet.h
TCMETAlgo::maxpt_eta20_
double maxpt_eta20_
Definition:
TCMETAlgo.h:121
TCMETAlgo::eVetoMinElectronPt_
double eVetoMinElectronPt_
Definition:
TCMETAlgo.h:150
TCMETAlgo::vertexToken_
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
Definition:
TCMETAlgo.h:105
ElectronFwd.h
TCMETAlgo::vertexZ_
double vertexZ_
Definition:
TCMETAlgo.h:117
TCMETAlgo::findGoodShowerTracks
void findGoodShowerTracks(std::vector< int > &goodShowerTracks)
Definition:
TCMETAlgo.cc:511
TCMETAlgo::isElectron
bool isElectron(const reco::TrackRef &trackRef)
Definition:
TCMETAlgo.cc:559
TCMETAlgo::TCMETAlgo
TCMETAlgo()
Definition:
TCMETAlgo.cc:59
TCMETAlgo::maxeta_
double maxeta_
Definition:
TCMETAlgo.h:140
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord >
TCMETAlgo::isValidVertex
bool isValidVertex()
Definition:
TCMETAlgo.cc:442
hcal_runs.rf
rf
Definition:
hcal_runs.py:75
TCMETAlgo::nLayers_
int nLayers_
Definition:
TCMETAlgo.h:114
TCMETAlgo::correctShowerTracks_
bool correctShowerTracks_
Definition:
TCMETAlgo.h:156
TCMETAlgo::trackHandle_
edm::Handle< reco::TrackCollection > trackHandle_
Definition:
TCMETAlgo.h:92
TCMETAlgo::findDuplicateTracks
void findDuplicateTracks()
Definition:
TCMETAlgo.cc:375
createfilelist.int
int
Definition:
createfilelist.py:10
TCMETAlgo::d0cuta_
double d0cuta_
Definition:
TCMETAlgo.h:128
TCMETAlgo::InputCollection
std::vector< const reco::Candidate > InputCollection
Definition:
TCMETAlgo.h:70
TCMETAlgo::trkQuality_
std::vector< int > trkQuality_
Definition:
TCMETAlgo.h:152
TCMETAlgo::d0cutb_
double d0cutb_
Definition:
TCMETAlgo.h:129
reco::MET
Definition:
MET.h:41
TCMETAlgo::isGoodTrack
bool isGoodTrack(const reco::TrackRef trackRef)
Definition:
TCMETAlgo.cc:577
TCMETAlgo::muonToken_
edm::EDGetTokenT< reco::MuonCollection > muonToken_
Definition:
TCMETAlgo.h:100
edm::ESHandle< MagneticField >
TCMETAlgo::radius_
double radius_
Definition:
TCMETAlgo.h:144
TrackBase.h
ESHandle.h
TCMETAlgo::hasValidVertex_
bool hasValidVertex_
Definition:
TCMETAlgo.h:163
TCMETAlgo
Definition:
TCMETAlgo.h:68
TCMETAlgo::correct_MET_for_Tracks
void correct_MET_for_Tracks()
Definition:
TCMETAlgo.cc:319
TCMETAlgo::maxchi2_tight_
double maxchi2_tight_
Definition:
TCMETAlgo.h:131
TCMETAlgo::getResponseFunction_mode
TH2D * getResponseFunction_mode()
Definition:
TCMETAlgo.cc:4995
TCMETAlgo::met_x_
double met_x_
Definition:
TCMETAlgo.h:81
edm::EventSetup
Definition:
EventSetup.h:59
TCMETAlgo::usedeltaRRejection_
double usedeltaRRejection_
Definition:
TCMETAlgo.h:136
Muon.h
TCMETAlgo::magneticFieldToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
Definition:
TCMETAlgo.h:111
singleTopDQM_cfi.setup
setup
SETUP
Definition:
singleTopDQM_cfi.py:37
TCMETAlgo::sumEt_
double sumEt_
Definition:
TCMETAlgo.h:83
TCMETAlgo::muonHandle_
edm::Handle< reco::MuonCollection > muonHandle_
Definition:
TCMETAlgo.h:90
TCMETAlgo::metToken_
edm::EDGetTokenT< edm::View< reco::MET > > metToken_
Definition:
TCMETAlgo.h:102
TCMETAlgo::initialize_MET_with_CaloMET
void initialize_MET_with_CaloMET(edm::Event &event)
Definition:
TCMETAlgo.cc:240
GsfElectron.h
electrons_cff.bool
bool
Definition:
electrons_cff.py:381
TCMETAlgo::correctMETforMuon
void correctMETforMuon(const reco::TrackRef, reco::MuonRef &muonRef)
Definition:
TCMETAlgo.cc:678
GsfElectronFwd.h
TCMETAlgo::propagateTrackToCalorimeterFace
class TVector3 propagateTrackToCalorimeterFace(const reco::TrackRef trackRef)
Definition:
TCMETAlgo.cc:740
TCMETAlgo::minhits_
double minhits_
Definition:
TCMETAlgo.h:142
TCMETAlgo::clustersECALToken_
edm::EDGetTokenT< reco::PFClusterCollection > clustersECALToken_
Definition:
TCMETAlgo.h:106
TCMETAlgo::deltaRShower_
double deltaRShower_
Definition:
TCMETAlgo.h:137
TCMETAlgo::correctMETforTrack
void correctMETforTrack(const reco::TrackRef, TH2D *rf, const TVector3 &)
Definition:
TCMETAlgo.cc:702
TCMETAlgo::nLayersTight_
int nLayersTight_
Definition:
TCMETAlgo.h:115
reco::TrackRef
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition:
TrackFwd.h:20
TCMETAlgo::maxpt_
double maxpt_
Definition:
TCMETAlgo.h:139
TCMETAlgo::nMinOuterHits_
int nMinOuterHits_
Definition:
TCMETAlgo.h:134
TCMETAlgo::eVetoDeltaCotTheta_
double eVetoDeltaCotTheta_
Definition:
TCMETAlgo.h:149
TCMETAlgo::~TCMETAlgo
virtual ~TCMETAlgo()
Definition:
TCMETAlgo.cc:164
TCMETAlgo::clustersHCALToken_
edm::EDGetTokenT< reco::PFClusterCollection > clustersHCALToken_
Definition:
TCMETAlgo.h:107
TCMETAlgo::muonDepValueMapToken_
edm::EDGetTokenT< edm::ValueMap< reco::MuonMETCorrectionData > > muonDepValueMapToken_
Definition:
TCMETAlgo.h:109
TCMETAlgo::vetoTrack
int vetoTrack(int i1, int i2)
Definition:
TCMETAlgo.cc:420
TCMETAlgo::maxchi2_
double maxchi2_
Definition:
TCMETAlgo.h:141
reco
fixed size matrix
Definition:
AlignmentAlgorithmBase.h:46
TCMETAlgo::isCosmics_
bool isCosmics_
Definition:
TCMETAlgo.h:155
TCMETAlgo::response_function_
class TH2D * response_function_
Definition:
TCMETAlgo.h:161
BeamSpot.h
TCMETAlgo::clustersHFToken_
edm::EDGetTokenT< reco::PFClusterCollection > clustersHFToken_
Definition:
TCMETAlgo.h:108
TCMETAlgo::electronHandle_
edm::Handle< reco::GsfElectronCollection > electronHandle_
Definition:
TCMETAlgo.h:91
TCMETAlgo::trackAlgos_
std::vector< reco::TrackBase::TrackAlgorithm > trackAlgos_
Definition:
TCMETAlgo.h:135
TCMETAlgo::configure
void configure(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iConsumesCollector)
Definition:
TCMETAlgo.cc:62
edm::ParameterSet
Definition:
ParameterSet.h:48
CandidateFwd.h
TCMETAlgo::electronToken_
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
Definition:
TCMETAlgo.h:101
TCMETAlgo::initialize_MET_with_PFClusters
void initialize_MET_with_PFClusters(edm::Event &event)
Definition:
TCMETAlgo.cc:196
CaloMET.h
edm::Event
Definition:
Event.h:73
TCMETAlgo::checkTrackPropagation_
bool checkTrackPropagation_
Definition:
TCMETAlgo.h:159
TCMETAlgo::hOverECut_
double hOverECut_
Definition:
TCMETAlgo.h:151
TCMETAlgo::closeToElectron
bool closeToElectron(const reco::TrackRef)
Definition:
TCMETAlgo.cc:456
TCMETAlgo::vertexMaxDZ_
double vertexMaxDZ_
Definition:
TCMETAlgo.h:119
TCMETAlgo::duplicateTracks_
std::vector< int > duplicateTracks_
Definition:
TCMETAlgo.h:126
ConsumesCollector.h
TCMETAlgo::dupDPhi_
double dupDPhi_
Definition:
TCMETAlgo.h:124
TCMETAlgo::maxPtErr_
double maxPtErr_
Definition:
TCMETAlgo.h:143
Electron.h
TCMETAlgo::muonDepValueMapHandle_
edm::Handle< edm::ValueMap< reco::MuonMETCorrectionData > > muonDepValueMapHandle_
Definition:
TCMETAlgo.h:95
TCMETAlgo::minpt_
double minpt_
Definition:
TCMETAlgo.h:138
TCMETAlgo::minhits_tight_
double minhits_tight_
Definition:
TCMETAlgo.h:132
IdealMagneticFieldRecord.h
TCMETAlgo::nExpectedInnerHits
int nExpectedInnerHits(const reco::TrackRef)
Definition:
TCMETAlgo.cc:535
TCMETAlgo::maxd0cut_
double maxd0cut_
Definition:
TCMETAlgo.h:130
TCMETAlgo::vetoDuplicates_
bool vetoDuplicates_
Definition:
TCMETAlgo.h:122
TCMETAlgo::correct_MET_for_Muons
void correct_MET_for_Muons()
Definition:
TCMETAlgo.cc:249
event
Definition:
event.py:1
edm::ConsumesCollector
Definition:
ConsumesCollector.h:45
Handle.h
TCMETAlgo::maxPtErr_tight_
double maxPtErr_tight_
Definition:
TCMETAlgo.h:133
Generated for CMSSW Reference Manual by
1.8.14