Main Page
Namespaces
Classes
Package Documentation
ElectroWeakAnalysis
ZEE
src
AnalysisErsatz.cc
Go to the documentation of this file.
1
/*#include "ElectroWeakAnalysis/ZEE/interface/AnalysisErsatz.h"
2
AnalysisErsatz::AnalysisErsatz(const edm::ParameterSet& ps)
3
{
4
MCTruthCollection_ = consumes<reco::GenParticleCollection>(ps.getParameter<edm::InputTag>("MCTruthCollection"));
5
ElectronCollection_ = consumes<reco::GsfElectronCollection>(ps.getParameter<edm::InputTag>("ElectronCollection"));
6
GenMEtCollection_ = consumes<reco::GenMETCollection>(ps.getParameter<edm::InputTag>("GenMEtCollection"));
7
//T1MEtCollection_ = consumes<reco::METCollection>(ps.getParameter<edm::InputTag>("T1MEtCollection"));
8
PfMEtCollection_ = consumes<reco::PFMETCollection>(ps.getParameter<edm::InputTag>("PfMEtCollection"));
9
TcMEtCollection_ = consumes<reco::METCollection>(ps.getParameter<edm::InputTag>("TcMEtCollection"));
10
CaloMEtCollection_ = consumes<reco::CaloMETCollection>(ps.getParameter<edm::InputTag>("CaloMEtCollection"));
11
TriggerEvent_ = consumes<trigger::TriggerEvent>(ps.getParameter<edm::InputTag>("TriggerEvent"));
12
TriggerPath_ = ps.getParameter<edm::InputTag>("TriggerPath");
13
TriggerResults_ = consumes<edm::TriggerResults>(ps.getParameter<edm::InputTag>("TriggerResults"));
14
TriggerName_ = ps.getParameter<std::string>("TriggerName");
15
ErsatzEvent_ = ps.getParameter<bool>("ErsatzEvent");
16
double CElecPtMin = ps.getParameter<double>("CElecPtMin");
17
double CEB_siEiE = ps.getParameter<double>("CEB_sigmaIEtaIEta");
18
double CEB_dPhiIn = ps.getParameter<double>("CEB_deltaPhiIn");
19
double CEB_dEtaIn = ps.getParameter<double>("CEB_deltaEtaIn");
20
double CEB_EcalIso = ps.getParameter<double>("CEB_EcalIso");
21
double CEB_HcalIso = ps.getParameter<double>("CEB_HcalIso");
22
double CEB_TrckIso = ps.getParameter<double>("CEB_TrckIso");
23
double CEE_siEiE = ps.getParameter<double>("CEE_sigmaIEtaIEta");
24
double CEE_dPhiIn = ps.getParameter<double>("CEE_deltaPhiIn");
25
double CEE_dEtaIn = ps.getParameter<double>("CEE_deltaEtaIn");
26
double CEE_EcalIso = ps.getParameter<double>("CEE_EcalIso");
27
double CEE_HcalIso = ps.getParameter<double>("CEE_HcalIso");
28
double CEE_TrckIso = ps.getParameter<double>("CEE_TrckIso");
29
mW_ = ps.getParameter<double>("mW");
30
mZ_ = ps.getParameter<double>("mZ");
31
32
CutVector_.resize(13);
33
CutVector_[EtCut_] = CElecPtMin;
34
CutVector_[EB_sIhIh_] = CEB_siEiE;
35
CutVector_[EB_dPhiIn_] = CEB_dPhiIn;
36
CutVector_[EB_dEtaIn_] = CEB_dEtaIn;
37
CutVector_[EB_TrckIso_] = CEB_TrckIso;
38
CutVector_[EB_EcalIso_] = CEB_EcalIso;
39
CutVector_[EB_HcalIso_] = CEB_HcalIso;
40
CutVector_[EE_sIhIh_] = CEE_siEiE;
41
CutVector_[EE_dPhiIn_] = CEE_dPhiIn;
42
CutVector_[EE_dEtaIn_] = CEE_dEtaIn;
43
CutVector_[EE_TrckIso_] = CEE_TrckIso;
44
CutVector_[EE_EcalIso_] = CEE_EcalIso;
45
CutVector_[EE_HcalIso_] = CEE_HcalIso;
46
47
}
48
49
50
AnalysisErsatz::~AnalysisErsatz()
51
{
52
}
53
54
55
// ------------ method called once each job just before starting event loop ------------
56
void AnalysisErsatz::beginJob()
57
{
58
edm::Service<TFileService> fs;
59
t_ = fs->make<TTree>("AnalysisData", "Analysis of Ersatz MEt Properties");
60
61
t_->Branch("Boson_pt", &Boson_pt_,"Boson_pt/D");
62
t_->Branch("Boson_y", &Boson_y_,"Boson_y/D");
63
t_->Branch("Boson_phi", &Boson_phi_,"Boson_phi/D");
64
t_->Branch("Boson_m", &Boson_m_,"Boson_m/D");
65
t_->Branch("McElec1_pt", McElec1_pt_,"McElec1_pt[4]/D");
66
t_->Branch("McElec1_eta", McElec1_eta_,"McElec1_eta[4]/D");
67
t_->Branch("McElec3_pt", McElec3_pt_,"McElec3_pt[4]/D");
68
t_->Branch("McElec3_eta", McElec3_eta_,"McElec3_eta[4]/D");
69
t_->Branch("RndmInt", &RndmInt_, "RndmInt/I");
70
t_->Branch("RndmTrig", &RndmTrig_, "RndmTrig/I");
71
t_->Branch("RndmReco", &RndmReco_, "RndmReco/I");
72
t_->Branch("OthrTrig", &OthrTrig_, "OthrTrig/I");
73
t_->Branch("OthrReco", &OthrReco_, "OthrReco/I");
74
t_->Branch("RndmMcElec_pt", &RndmMcElec_pt_,"RndmMcElec_pt/D");
75
t_->Branch("RndmMcElec_eta", &RndmMcElec_eta_,"RndmMcElec_eta/D");
76
t_->Branch("RndmMcElec_phi", &RndmMcElec_phi_,"RndmMcElec_phi/D");
77
t_->Branch("RndmMcElec_Rescaled_pt", &RndmMcElec_Rescaled_pt_,"RndmMcElec_Rescaled_pt/D");
78
t_->Branch("RndmMcElec_Rescaled_eta", &RndmMcElec_Rescaled_eta_,"RndmMcElec_Rescaled_eta/D");
79
t_->Branch("RndmMcElec_Rescaled_phi", &RndmMcElec_Rescaled_phi_,"RndmMcElec_Rescaled_phi/D");
80
t_->Branch("RndmMcElecTRIG_pt", &RndmMcElecTRIG_pt_,"RndmMcElecTRIG_pt/D");
81
t_->Branch("RndmMcElecTRIG_eta", &RndmMcElecTRIG_eta_,"RndmMcElecTRIG_eta/D");
82
t_->Branch("RndmMcElecRECO_pt", &RndmMcElecRECO_pt_,"RndmMcElecRECO_pt/D");
83
t_->Branch("RndmMcElecRECO_eta", &RndmMcElecRECO_eta_,"RndmMcElecRECO_eta/D");
84
t_->Branch("OthrMcElec_pt", &OthrMcElec_pt_,"OthrMcElec_pt/D");
85
t_->Branch("OthrMcElec_eta", &OthrMcElec_eta_,"OthrMcElec_eta/D");
86
t_->Branch("OthrMcElec_phi", &OthrMcElec_phi_,"OthrMcElec_phi/D");
87
t_->Branch("OthrMcElec_Rescaled_pt", &OthrMcElec_Rescaled_pt_,"OthrMcElec_Rescaled_pt/D");
88
t_->Branch("OthrMcElec_Rescaled_eta", &OthrMcElec_Rescaled_eta_,"OthrMcElec_Rescaled_eta/D");
89
t_->Branch("OthrMcElec_Rescaled_phi", &OthrMcElec_Rescaled_phi_,"OthrMcElec_Rescaled_phi/D");
90
t_->Branch("OthrMcElecTRIG_pt", &OthrMcElecTRIG_pt_,"OthrMcElecTRIG_pt/D");
91
t_->Branch("OthrMcElecTRIG_eta", &OthrMcElecTRIG_eta_,"OthrMcElecTRIG_eta/D");
92
t_->Branch("OthrMcElecRECO_pt", &OthrMcElecRECO_pt_,"OthrMcElecRECO_pt/D");
93
t_->Branch("OthrMcElecRECO_eta", &OthrMcElecRECO_eta_,"OthrMcElecRECO_eta/D");
94
t_->Branch("McNu_pt", &McNu_pt_,"McNu_pt/D");
95
t_->Branch("McNu_eta", &McNu_eta_,"McNu_eta/D");
96
t_->Branch("McNu_phi", &McNu_phi_,"McNu_phi/D");
97
t_->Branch("McNu_vx", &McNu_vx_,"McNu_vx/D");
98
t_->Branch("McNu_vy", &McNu_vy_,"McNu_vy/D");
99
t_->Branch("McNu_vz", &McNu_vz_,"McNu_vz/D");
100
t_->Branch("McLeptons_dPhi", &McLeptons_dPhi_,"McLeptons_dPhi/D");
101
t_->Branch("McLeptons_dEta", &McLeptons_dEta_,"McLeptons_dEta/D");
102
t_->Branch("McLeptons_dR", &McLeptons_dR_,"McLeptons_dR/D");
103
t_->Branch("nSelElecs", &nSelElecs_,"nSelElecs/I");
104
t_->Branch("elec_q", elec_q_,"elec_q[4]/D");
105
t_->Branch("elec_pt", elec_pt_,"elec_pt[4]/D");
106
t_->Branch("elec_eta", elec_eta_,"elec_eta[4]/D");
107
t_->Branch("elec_phi", elec_phi_,"elec_phi[4]/D");
108
t_->Branch("elec_pt25", &elec_pt25_,"elec_pt25/D");
109
t_->Branch("elec_eta25", &elec_eta25_,"elec_eta25/D");
110
t_->Branch("elec_phi25", &elec_phi25_,"elec_phi25/D");
111
t_->Branch("elec_sIhIh", elec_sIhIh_, "elec_sIhIh[4]/D");
112
t_->Branch("elec_dPhiIn", elec_dPhiIn_, "elec_dPhiIn[4]/D");
113
t_->Branch("elec_dEtaIn", elec_dEtaIn_, "elec_dEtaIn[4]/D");
114
t_->Branch("elec_trckIso", elec_trckIso_,"elec_trckIso[4]/D");
115
t_->Branch("elec_ecalIso", elec_ecalIso_,"elec_ecalIso[4]/D");
116
t_->Branch("elec_hcalIso", elec_hcalIso_,"elec_hcalIso[4]/D");
117
t_->Branch("elec_e2x5Max", elec_e2x5Max_,"elec_e2x5Max[4]/D");
118
t_->Branch("elec_e1x5Max", elec_e1x5Max_,"elec_e1x5Max[4]/D");
119
t_->Branch("elec_e5x5", elec_e5x5_,"elec_e5x5[4]/D");
120
t_->Branch("elec_hoe", elec_hoe_,"elec_hoe[4]/D");
121
t_->Branch("elec_eop", elec_eop_,"elec_eop[4]/D");
122
t_->Branch("elec_pin", elec_pin_,"elec_pin[4]/D");
123
t_->Branch("elec_pout", elec_pout_,"elec_pout[4]/D");
124
125
t_->Branch("Selected_nuPt", Selected_nuPt_, "Selected_nuPt[4]/D");
126
t_->Branch("Selected_nuEta", Selected_nuEta_, "Selected_nuEta[4]/D");
127
t_->Branch("Selected_nuPhi", Selected_nuPhi_, "Selected_nuPhi[4]/D");
128
t_->Branch("caloMEt", &caloMEt_,"caloMEt/D");
129
t_->Branch("t1MEt", &t1MEt_,"t1MEt/D");
130
t_->Branch("t1MEtPhi", &t1MEtPhi_,"t1MEtPhi/D");
131
t_->Branch("t1SumEt", &t1SumEt_,"t1SumEt/D");
132
t_->Branch("pfMEt", &pfMEt_,"pfMEt/D");
133
t_->Branch("pfMEtPhi", &pfMEtPhi_,"pfMEtPhi/D");
134
t_->Branch("pfSumEt", &pfSumEt_,"pfSumEt/D");
135
t_->Branch("tcMEt", &tcMEt_,"tcMEt/D");
136
t_->Branch("tcMEtPhi", &tcMEtPhi_,"tcMEtPhi/D");
137
t_->Branch("tcSumEt", &tcSumEt_,"tcSumEt/D");
138
t_->Branch("caloSumEt", &caloSumEt_,"caloSumEt/D");
139
t_->Branch("caloMEt25", &caloMEt25_,"caloMEt25/D");
140
t_->Branch("caloMEt30", &caloMEt30_,"caloMEt30/D");
141
t_->Branch("caloMEtECAL25", &caloMEtECAL25_,"caloMEtECAL25/D");
142
t_->Branch("caloMEtECAL30", &caloMEtECAL30_,"caloMEtECAL30/D");
143
t_->Branch("caloMEtPhi", &caloMEtPhi_,"caloMEtPhi/D");
144
t_->Branch("caloMEtPhi25", &caloMEtPhi25_,"caloMEtPhi25/D");
145
t_->Branch("caloMEtPhi30", &caloMEtPhi30_,"caloMEtPhi30/D");
146
t_->Branch("caloMEtPhiECAL25", &caloMEtPhiECAL25_,"caloMEtPhiECAL25/D");
147
t_->Branch("caloMEtPhiECAL30", &caloMEtPhiECAL30_,"caloMEtPhiECAL30/D");
148
t_->Branch("caloMt", caloMt_,"caloMt[4]/D");
149
t_->Branch("caloMt25", caloMt25_,"caloMt25[4]/D");
150
t_->Branch("caloMt30", caloMt30_,"caloMt30[4]/D");
151
t_->Branch("caloUESumEt", &caloUESumEt_, "caloUESumEt_/D");
152
t_->Branch("nHltObj", &nHltObj_, "nHltObj/I");
153
t_->Branch("HltObj_pt_", HltObj_pt_,"HltObj_pt_[4]/D");
154
t_->Branch("HltObj_eta_", HltObj_eta_,"HltObj_eta_[4]/D");
155
t_->Branch("genMEt", &genMEt_,"genMEt/D");
156
t_->Branch("genUESumEt", &genUESumEt_, "genUESumEt_/D");
157
158
}
159
// ------------ method called to for each event ------------
160
void AnalysisErsatz::analyze(const edm::Event& evt, const edm::EventSetup& es)
161
{
162
caloMEt_ = -99.; caloSumEt_ = -99.; caloUESumEt_ = -99.;
163
caloMEt25_ = -99.; caloMEt30_ = -99.;
164
caloMEtECAL25_ = -99.; caloMEtECAL30_ =- 99.;
165
caloMEtPhi_ = -99.; caloMEtPhi25_ = -99.; caloMEtPhi30_ = -99.;
166
caloMEtPhiECAL25_ = -99.; caloMEtPhiECAL30_ =- 99.;
167
genMEt_ = -99.; genUESumEt_ = -99.; genMEt25_ = -99.;
168
t1MEt_ = -99.; t1MEtPhi_ = -99.; t1SumEt_ = -99.;
169
pfMEt_ = -99.; pfMEtPhi_ = -99.; pfSumEt_ = -99.;
170
tcMEt_ = -99.; tcMEtPhi_ = -99.; tcSumEt_ = -99.;
171
nHltObj_ = -99; nSelElecs_ = -99;
172
Boson_pt_ = -99.; Boson_y_ = -99.; Boson_m_ = -99.; Boson_mt_ = -99.; Boson_phi_ = -99.;
173
McNu_pt_ = -99.; McNu_eta_ = -99.; McNu_phi_ = -99.;
174
McNu_vx_= -99.; McNu_vy_= -99.; McNu_vz_ = -99.;
175
McLeptons_dPhi_ = -99.; McLeptons_dEta_ = -99.; McLeptons_dR_ = -99.;
176
RndmMcElec_pt_ = -99.; RndmMcElec_eta_ = -99.; RndmMcElec_phi_ = -99.;
177
RndmMcElec_Rescaled_pt_ = -99.; RndmMcElec_Rescaled_eta_ = -99.; RndmMcElec_Rescaled_phi_ = -99.;
178
RndmMcElecTRIG_pt_ = -99.; RndmMcElecTRIG_eta_ = -99.; RndmMcElecRECO_pt_ = -99.; RndmMcElecRECO_eta_ = -99.;
179
OthrMcElec_pt_ = -99.; OthrMcElec_eta_ = -99.; OthrMcElec_phi_ = -99.;
180
OthrMcElec_Rescaled_pt_ = -99.; OthrMcElec_Rescaled_eta_ = -99.; OthrMcElec_Rescaled_phi_ = -99.;
181
OthrMcElecTRIG_pt_ = -99.; OthrMcElecTRIG_eta_ = -99.; OthrMcElecRECO_pt_ = -99.; OthrMcElecRECO_eta_ = -99.;
182
RndmTrig_ = 0; RndmReco_ = 0; OthrTrig_ = 0; OthrReco_ = 0;
183
elec_pt25_ = -99.; elec_eta25_= -99.; elec_eta25_= -99.;
184
for(int i = 0; i < nEntries_arr_; ++i)
185
{
186
McElec1_pt_[i] = -99.; McElec1_eta_[i] = -99.;
187
McElec3_pt_[i] = -99.; McElec3_eta_[i] = -99.;
188
elec_q_[i] = -99.; elec_pt_[i] = -99.; elec_eta_[i]= -99.; elec_phi_[i]= -99.;
189
elec_trckIso_[i] = -99.; elec_ecalIso_[i] = -99.; elec_hcalIso_[i] = -99.;
190
elec_sIhIh_[i] = -99.; elec_dPhiIn_[i] = -99.; elec_dEtaIn_[i] = -99.;
191
elec_e5x5_[i] = -99.; elec_e2x5Max_[i] = -99.; elec_e1x5Max_[i] = -99.;
192
elec_hoe_[i] = -99.; elec_eop_[i] = -99.; elec_pin_[i] = -99.; elec_pout_[i] = -99.;
193
Selected_nuPt_[i] = -99.; Selected_nuEta_[i] = -99.; Selected_nuPhi_[i] = -99.;
194
caloMt_[i] = -99.; caloMt25_[i] = -99.; caloMt30_[i] = -99.;
195
genMt_[i] = -99.;
196
}
197
edm::Handle<reco::GenParticleCollection> pGenPart;
198
evt.getByToken(MCTruthCollection_, pGenPart);
199
edm::Handle<reco::GsfElectronCollection> pElectrons;
200
evt.getByToken(ElectronCollection_, pElectrons);
201
edm::Handle<reco::CaloMETCollection> pCaloMEt;
202
evt.getByToken(CaloMEtCollection_, pCaloMEt);
203
//edm::Handle<reco::METCollection> pT1MEt;
204
// evt.getByToken(T1MEtCollection_, pT1MEt);
205
edm::Handle<reco::PFMETCollection> pPfMEt;
206
evt.getByToken(PfMEtCollection_, pPfMEt);
207
edm::Handle<reco::METCollection> pTcMEt;
208
evt.getByToken(TcMEtCollection_, pTcMEt);
209
edm::Handle<reco::GenMETCollection> pGenMEt;
210
evt.getByToken(GenMEtCollection_, pGenMEt);
211
edm::Handle<edm::TriggerResults> pTriggerResults;
212
evt.getByToken(TriggerResults_, pTriggerResults);
213
const edm::TriggerResults* HltRes = pTriggerResults.product();
214
edm::Handle<trigger::TriggerEvent> pHLT;
215
if(HltRes->accept(34) !=0)
216
{
217
evt.getByToken(TriggerEvent_, pHLT);
218
}
219
edm::LogDebug_("analyse","", 143)<<"Have obtained collections."<<std::endl;
220
int m = 0; int n = 0; int k = 0;
221
bool BosonAnalysed = false; bool nuInEta25 = false; bool nuInEta30 = false;
222
double elecEt = 0;
223
std::vector<reco::GenParticleCollection::const_iterator> Leptons;
224
const reco::GenParticleCollection *McCand = pGenPart.product();
225
math::XYZTLorentzVector RndmMcElec, OthrMcElec;
226
edm::Service<edm::RandomNumberGenerator> rng;
227
math::XYZTLorentzVector RndmMcElec_alt, OthrMcElec_alt, Zboson;
228
CLHEP::RandFlat flatDistribution(rng->getEngine(), 0, 2);
229
double RandomNum = flatDistribution.fire();
230
RndmInt_ = int(RandomNum);
231
// std::cout<<"Random Number = "<< RandomNum <<"\t int = "<< int(RandomNum)<<std::endl;
232
for(reco::GenParticleCollection::const_iterator McP = McCand->begin(); McP != McCand->end(); ++McP)
233
{
234
const reco::Candidate* mum = McP->mother();
235
if(McP->pdgId()==11)
236
{
237
edm::LogDebug_("", "", 216)<<"Found electron, mother = "<< mum->pdgId() <<"\t status = "<< McP->status()
238
<<"\tpt = "<< McP->pt() <<"\teta = "<< McP->eta();
239
}
240
if(McP->pdgId()==-11)
241
{
242
edm::LogDebug_("", "", 221)<<"Found positron, mother = "<< mum->pdgId() <<"\t status = "<< McP->status()
243
<<"\tpt = "<< McP->pt() <<"\teta = "<< McP->eta();
244
}
245
if(abs(McP->pdgId())==12)
246
{
247
edm::LogDebug_("", "", 216)<<"Found neutrino, mother = "<< mum->pdgId() <<"\t status = "<< McP->status()
248
<<"\tpt = "<< McP->pt() <<"\teta = "<< McP->eta();
249
}
250
if(abs(McP->pdgId())==11 && (abs(mum->pdgId()) == 24|| abs(mum->pdgId()) == 23))
251
{
252
// Leptons.push_back(McP);
253
if(!BosonAnalysed)
254
{
255
Boson_pt_ = mum->pt();
256
Boson_y_ = mum->y();
257
Boson_phi_ = mum->phi();
258
Boson_m_ = mum->mass();
259
Boson_mt_ = mum->mt();
260
if(abs(mum->pdgId() == 23)) Zboson = mum->p4();
261
BosonAnalysed = true;
262
}
263
McElec3_pt_[k] = McP->pt();
264
McElec3_eta_[k] = McP->eta();
265
if(k == int(RandomNum))
266
{
267
RndmMcElec_alt = McP->p4();
268
}else OthrMcElec_alt = McP->p4();
269
++k;
270
}
271
if(abs(McP->pdgId())==12 && abs(mum->pdgId()) == 24)
272
{
273
Leptons.push_back(McP);
274
edm::LogDebug_("","",328)<<"Pushed neutrino back into Leptons. Leptons.size() = "<< Leptons.size();
275
McNu_pt_ = McP->pt();
276
McNu_eta_ = McP->eta();
277
edm::LogDebug_("","",332)<<"ECAL eta = "<< McNu_ECALeta_;
278
McNu_phi_ = McP->phi();
279
McNu_vx_ = McP->vx();
280
McNu_vy_ = McP->vy();
281
McNu_vz_ = McP->vz();
282
if(fabs(McNu_eta_) < 2.5) nuInEta25 = true;
283
if(fabs(McNu_eta_) < 3.0) nuInEta30 = true;
284
++n;
285
}
286
if(abs(McP->pdgId())==11 && McP->status() == 1 && (abs(mum->pdgId()) == 11))
287
{
288
Leptons.push_back(McP);
289
edm::LogDebug_("","",344)<<"Pushed electron back into Leptons. Leptons.size() = "<< Leptons.size();
290
McElec1_pt_[m] = McP->pt();
291
McElec1_eta_[m] = McP->eta();
292
if(m == int(RandomNum))
293
{
294
RndmMcElec = McP->p4();
295
RndmMcElec_pt_ = McElec1_pt_[m];
296
RndmMcElec_eta_ = McElec1_eta_[m];
297
RndmMcElec_phi_ = McP->phi();
298
}
299
else{
300
OthrMcElec = McP->p4();
301
OthrMcElec_pt_ = McElec1_pt_[m];
302
OthrMcElec_eta_ = McElec1_eta_[m];
303
OthrMcElec_phi_ = McP->phi();
304
}
305
306
elecEt += McP->pt();
307
++m;
308
}
309
}
310
edm::LogDebug_("", "", 362)<<"Size of Leptons = "<< Leptons.size();
311
McLeptons_dPhi_ = reco::deltaPhi(Leptons[0]->phi(), Leptons[1]->phi());
312
McLeptons_dEta_ = Leptons[0]->eta() - Leptons[1]->eta();
313
McLeptons_dR_ = reco::deltaR(*Leptons[0], *Leptons[1]);
314
edm::LogDebug_("","",369)<<"McLeptons_dR_ = "<< McLeptons_dR_;
315
316
math::XYZTLorentzVector Wboson;
317
if(McNu_pt_ < -98.)
318
{
319
edm::LogDebug_("", "", 303)<<"Z pt = "<< Zboson.Pt() << "Z boson mass = " << Zboson.M();
320
edm::LogDebug_("","", 307)<<"Z boson in lab frame = ("<<Zboson.Px()<<", "<<Zboson.Py()<<", "
321
<<Zboson.Pz()<<", "<<Zboson.E()<<")";
322
323
Wboson.SetCoordinates(Zboson.Px(), Zboson.Py(), Zboson.Pz(), sqrt(Zboson.P2()+(mW_*mW_*Zboson.M2())/(mZ_*mZ_)));
324
edm::LogDebug_("","", 307)<<"W boson in lab frame = ("<<Wboson.Px()<<", "<<Wboson.Py()<<", "
325
<<Wboson.Pz()<<", "<<Wboson.E()<<")";
326
ROOT::Math::Boost CoMBoost(Zboson.BoostToCM());
327
edm::LogDebug_("","", 307)<<"RndmElec in lab frame = ("<<RndmMcElec_alt.Px()<<", "<<RndmMcElec_alt.Py()<<", "
328
<<RndmMcElec_alt.Pz()<<", "<<RndmMcElec_alt.E()<<")";
329
edm::LogDebug_("","", 307)<<"OthrElec in lab frame = ("<<OthrMcElec_alt.Px()<<", "<<OthrMcElec_alt.Py()<<", "
330
<<OthrMcElec_alt.Pz()<<", "<<OthrMcElec_alt.E()<<")";
331
RndmMcElec_alt = CoMBoost(RndmMcElec_alt);
332
OthrMcElec_alt = CoMBoost(OthrMcElec_alt);
333
edm::LogDebug_("","", 307)<<"RndmElec in Z rest frame = ("<<RndmMcElec_alt.Px()<<", "<<RndmMcElec_alt.Py()<<", "
334
<<RndmMcElec_alt.Pz()<<", "<<RndmMcElec_alt.E()<<")";
335
edm::LogDebug_("","", 307)<<"OthrElec in Z rest frame = ("<<OthrMcElec_alt.Px()<<", "<<OthrMcElec_alt.Py()<<", "
336
<<OthrMcElec_alt.Pz()<<", "<<OthrMcElec_alt.E()<<")";
337
RndmMcElec_alt *= mW_/mZ_;
338
OthrMcElec_alt *= mW_/mZ_;
339
340
double E_W = Wboson.E();
341
ROOT::Math::Boost BackToLab(Wboson.Px()/E_W, Wboson.Py()/E_W, Wboson.Pz()/E_W);
342
343
RndmMcElec_alt = BackToLab(RndmMcElec_alt);
344
RndmMcElec_Rescaled_pt_ = RndmMcElec_alt.Pt();
345
RndmMcElec_Rescaled_eta_ = RndmMcElec_alt.Eta();
346
RndmMcElec_Rescaled_phi_ = RndmMcElec_alt.Phi();
347
348
OthrMcElec_alt = BackToLab(OthrMcElec_alt);
349
OthrMcElec_Rescaled_pt_ = OthrMcElec_alt.Pt();
350
OthrMcElec_Rescaled_eta_ = OthrMcElec_alt.Eta();
351
OthrMcElec_Rescaled_phi_ = OthrMcElec_alt.Phi();
352
353
math::XYZTLorentzVector sum = OthrMcElec_alt+RndmMcElec_alt;
354
edm::LogDebug_("","", 307)<<"RndmElec back in lab frame = ("<<RndmMcElec_alt.Px()<<", "<<RndmMcElec_alt.Py()<<", "
355
<<RndmMcElec_alt.Pz()<<", "<<RndmMcElec_alt.E()<<")";
356
edm::LogDebug_("","", 307)<<"OthrElec back in lab frame = ("<<OthrMcElec_alt.Px()<<", "<<OthrMcElec_alt.Py()<<", "
357
<<OthrMcElec_alt.Pz()<<", "<<OthrMcElec_alt.E()<<")";
358
edm::LogDebug_("","", 307)<<"OthrElec +RndmElec = ("<<sum.Px()<<", "<<sum.Py()<<", "
359
<<sum.Pz()<<", "<<sum.E()<<")";
360
}else{
361
edm::LogDebug_("","", 416)<<"McNu_pt_ = "<<McNu_pt_;
362
RndmMcElec_Rescaled_pt_ = RndmMcElec_pt_;
363
edm::LogDebug_("","",416)<<" RndmMcElec_Rescaled_pt_ = "<< RndmMcElec_Rescaled_pt_;
364
OthrMcElec_Rescaled_pt_ = OthrMcElec_pt_;
365
}
366
//TriggerNames_.init(*HltRes);
367
368
edm::LogDebug_("","", 420)<<"HltRes->accept() = "<< HltRes->accept(34);
369
if(HltRes->accept(34) ==0) edm::LogError("")<<"Event did not pass HLT path 34, assumed to be "<< TriggerName_ <<"!";
370
unsigned int fId = 999;
371
if(HltRes->accept(34) !=0)
372
{
373
fId = pHLT->filterIndex(TriggerPath_); // something wrong with this step
374
edm::LogDebug_("","",426)<<"fId = pHLT->filterIndex("<< TriggerPath_<<") = "<< fId;
375
const trigger::Keys& ring = pHLT->filterKeys(fId);
376
const trigger::TriggerObjectCollection& HltObjColl = pHLT->getObjects();
377
nHltObj_ = ring.size();
378
for(int k = 0; k < nHltObj_; ++k)
379
{
380
const trigger::TriggerObject& HltObj = HltObjColl[ring[k]];
381
if(reco::deltaR(RndmMcElec, HltObj) < 0.1) RndmTrig_ = 1;
382
if(reco::deltaR(OthrMcElec, HltObj) < 0.1) OthrTrig_ = 1;
383
if(k < 4)
384
{
385
HltObj_pt_[k] = HltObj.pt();
386
HltObj_eta_[k] = HltObj.eta();
387
}
388
}
389
}
390
if(RndmTrig_ != 0)
391
{
392
RndmMcElecTRIG_pt_ = RndmMcElec_pt_;
393
RndmMcElecTRIG_eta_ = RndmMcElec_eta_;
394
}
395
if(OthrTrig_ != 0)
396
{
397
OthrMcElecTRIG_pt_ = OthrMcElec_pt_;
398
OthrMcElecTRIG_eta_ = OthrMcElec_eta_;
399
}
400
const reco::GenMETCollection* genMEtCollection = pGenMEt.product();
401
reco::GenMETCollection::const_iterator genMEt = genMEtCollection->begin();
402
genMEt_ = genMEt->pt();
403
genUESumEt_ = genMEt->sumEt() - elecEt;
404
// std::cout<<"genMEt->sumEt() - elecEt = "<< genMEt->sumEt()<<" - "<< elecEt <<" = "<< genUESumEt_;
405
406
const reco::CaloMETCollection* caloMEtCollection = pCaloMEt.product();
407
reco::CaloMETCollection::const_iterator met = caloMEtCollection->begin();
408
caloMEt_ = met->pt();
409
edm::LogDebug_("","",462)<<"caloMEt_ = "<< caloMEt_;
410
caloMEtPhi_ = met->phi();
411
caloSumEt_ = met->sumEt();
412
413
//const reco::METCollection* t1MEtCollection = pT1MEt.product();
414
//reco::METCollection::const_iterator t1met = t1MEtCollection->begin();
415
//t1MEt_ = t1met->pt();
416
//edm::LogDebug_("","",462)<<"t1MEt_ = "<< t1MEt_;
417
//t1MEtPhi_ = t1met->phi();
418
//t1SumEt_ = t1met->sumEt();
419
420
const reco::PFMETCollection* pfMEtCollection = pPfMEt.product();
421
reco::PFMETCollection::const_iterator pfmet = pfMEtCollection->begin();
422
pfMEt_ = pfmet->pt();
423
edm::LogDebug_("","",462)<<"pfMEt_ = "<< pfMEt_;
424
pfMEtPhi_ = pfmet->phi();
425
pfSumEt_ = pfmet->sumEt();
426
427
const reco::METCollection* tcMEtCollection = pTcMEt.product();
428
reco::METCollection::const_iterator tcmet = tcMEtCollection->begin();
429
tcMEt_ = tcmet->pt();
430
edm::LogDebug_("","",462)<<"tcMEt_ = "<< tcMEt_;
431
tcMEtPhi_ = tcmet->phi();
432
tcSumEt_ = tcmet->sumEt();
433
434
if(fabs(McNu_ECALeta_) < 2.5)
435
{
436
caloMEtECAL25_ = met->pt();
437
caloMEtPhiECAL25_ = met->phi();
438
}
439
if(fabs(McNu_ECALeta_) < 3.0)
440
{
441
caloMEtECAL30_ = met->pt();
442
caloMEtPhiECAL30_ = met->phi();
443
}
444
if(nuInEta25)
445
{
446
genMEt25_ = genMEt->pt();
447
caloMEt25_ = met->pt();
448
caloMEtPhi25_ = met->phi();
449
}
450
if(nuInEta30){
451
caloMEt30_ = met->pt();
452
caloMEtPhi30_ = met->phi();
453
}
454
455
std::vector<reco::GsfElectronRef> UniqueElectrons = uniqueElectronFinder(pElectrons);
456
caloUESumEt_ = met->sumEt();
457
for(std::vector<reco::GsfElectronRef>::const_iterator Relec = UniqueElectrons.begin(); Relec != UniqueElectrons.end(); ++Relec)
458
{
459
reco::GsfElectronRef elec = *Relec;
460
math::XYZTLorentzVector sc = PhysicsVector(met->vertex(), *(elec->superCluster()));
461
if(reco::deltaR(RndmMcElec, *elec) < 0.1) RndmReco_ = 1;
462
if(reco::deltaR(OthrMcElec, *elec) < 0.1) OthrReco_ = 1;
463
caloUESumEt_ -= sc.Pt();
464
}
465
if(RndmReco_ != 0)
466
{
467
RndmMcElecRECO_pt_ = RndmMcElec_pt_;
468
RndmMcElecRECO_eta_ = RndmMcElec_eta_;
469
}
470
if(OthrReco_ != 0)
471
{
472
OthrMcElecRECO_pt_ = OthrMcElec_pt_;
473
OthrMcElecRECO_eta_ = OthrMcElec_eta_;
474
}
475
edm::LogDebug_("analyse","", 230)<<"Analysed UE information"<<std::endl;
476
if(HltRes->accept(34) != 0)
477
{
478
std::vector<reco::GsfElectronRef> SelectedElectrons = electronSelector(UniqueElectrons, pHLT, fId, CutVector_);
479
nSelElecs_ = SelectedElectrons.size();
480
m = 0;
481
for(std::vector<reco::GsfElectronRef>::const_iterator Relec = SelectedElectrons.begin(); Relec != SelectedElectrons.end(); ++Relec)
482
{
483
reco::GsfElectronRef elec = *Relec;
484
if(elec->pt() > CutVector_[0])
485
{
486
elec_q_[m] = elec->charge();
487
elec_pt_[m] = elec->pt();
488
elec_eta_[m] = elec->eta();
489
elec_phi_[m] = elec->phi();
490
elec_trckIso_[m] = elec->isolationVariables03().tkSumPt;
491
elec_ecalIso_[m] = elec->isolationVariables04().ecalRecHitSumEt;
492
elec_hcalIso_[m] = elec->isolationVariables04().hcalDepth1TowerSumEt
493
+ elec->isolationVariables04().hcalDepth2TowerSumEt;
494
elec_sIhIh_[m] = elec->scSigmaIEtaIEta();
495
elec_dPhiIn_[m] = elec->deltaPhiSuperClusterTrackAtVtx();
496
elec_dEtaIn_[m] = elec->deltaEtaSuperClusterTrackAtVtx();
497
elec_e5x5_[m] = elec->scE5x5();
498
elec_e2x5Max_[m] = elec->scE2x5Max();
499
elec_e2x5Max_[m] = elec->scE1x5();
500
elec_hoe_[m] = elec->hadronicOverEm();
501
elec_eop_[m] = elec->eSuperClusterOverP();
502
elec_pin_[m] = elec->trackMomentumAtVtx().R();
503
elec_pout_[m] = elec->trackMomentumOut().R();
504
505
Selected_nuPt_[m] = McNu_pt_;
506
Selected_nuEta_[m] = McNu_eta_;
507
Selected_nuPhi_[m] = McNu_phi_;
508
caloMt_[m] = sqrt(2.*elec->pt()*met->pt()*(1-cos(reco::deltaPhi(elec->phi(), met->phi()))));
509
if(nuInEta25)
510
{
511
caloMt25_[m] = caloMt_[m];
512
elec_pt25_ = elec->pt();
513
elec_eta25_ = elec->eta();
514
elec_phi25_ = elec->phi();
515
}
516
if(nuInEta30) caloMt30_[m] = caloMt_[m];
517
++m;
518
}
519
}
520
}
521
522
edm::LogDebug_("analyse","", 248)<<"Analysed final selection information"<<std::endl;
523
t_->Fill();
524
}
525
526
527
528
// ------------ method called once each job just after ending the event loop ------------
529
void AnalysisErsatz::endJob() {
530
}
531
532
//define this as a plug-in
533
DEFINE_FWK_MODULE(AnalysisErsatz);
534
*/
Generated for CMSSW Reference Manual by
1.8.11