CMS 3D CMS Logo

ErsatzMEt.cc
Go to the documentation of this file.
3 
5  MCTruthCollection_ = consumes<reco::GenParticleCollection>(ps.getParameter<edm::InputTag>("MCTruthCollection"));
6  ElectronCollection_ = consumes<reco::GsfElectronCollection>(ps.getParameter<edm::InputTag>("ElectronCollection"));
7  HybridScCollection_ = consumes<reco::SuperClusterCollection>(ps.getParameter<edm::InputTag>("HybridScCollection"));
8  M5x5ScCollection_ = consumes<reco::SuperClusterCollection>(ps.getParameter<edm::InputTag>("M5x5ScCollection"));
9  GenMEtCollection_ = consumes<reco::GenMETCollection>(ps.getParameter<edm::InputTag>("GenMEtCollection"));
10  CaloMEtCollection_ = consumes<reco::CaloMETCollection>(ps.getParameter<edm::InputTag>("CaloMEtCollection"));
11  //T1MEtCollection_ = consumes<reco::METCollection>(ps.getParameter<edm::InputTag>("T1MEtCollection"));
12  PfMEtCollection_ = consumes<reco::PFMETCollection>(ps.getParameter<edm::InputTag>("PfMEtCollection"));
13  TcMEtCollection_ = consumes<reco::METCollection>(ps.getParameter<edm::InputTag>("TcMEtCollection"));
14  TriggerEvent_ = consumes<trigger::TriggerEvent>(ps.getParameter<edm::InputTag>("TriggerEvent"));
15  TriggerPath_ = ps.getParameter<edm::InputTag>("TriggerPath");
16  TriggerResults_ = consumes<edm::TriggerResults>(ps.getParameter<edm::InputTag>("TriggerResults"));
17  TriggerName_ = ps.getParameter<std::string>("TriggerName");
18  HLTPathCheck_ = ps.getParameter<bool>("HLTPathCheck");
19 
20  Zevent_ = ps.getParameter<bool>("Zevent");
21  mW_ = ps.getParameter<double>("mW");
22  mZ_ = ps.getParameter<double>("mZ");
23  mTPmin_ = ps.getParameter<double>("mTPmin");
24  mTPmax_ = ps.getParameter<double>("mTPmax");
25  BarrelEtaMax_ = ps.getParameter<double>("BarrelEtaMax");
26  EndCapEtaMin_ = ps.getParameter<double>("EndCapEtaMin");
27  EndCapEtaMax_ = ps.getParameter<double>("EndCapEtaMax");
28 
29  hyb_fCorrPSet_ = ps.getParameter<edm::ParameterSet>("hyb_fCorrPSet");
30  m5x5_fCorrPSet_ = ps.getParameter<edm::ParameterSet>("m5x5_fCorrPSet");
31 
32  double CElecPtMin = ps.getParameter<double>("CElecPtMin");
33  double CEB_siEiE = ps.getParameter<double>("CEB_sigmaIEtaIEta");
34  double CEB_dPhiIn = ps.getParameter<double>("CEB_deltaPhiIn");
35  double CEB_dEtaIn = ps.getParameter<double>("CEB_deltaEtaIn");
36  double CEB_EcalIso = ps.getParameter<double>("CEB_EcalIso");
37  double CEB_HcalIso = ps.getParameter<double>("CEB_HcalIso");
38  double CEB_TrckIso = ps.getParameter<double>("CEB_TrckIso");
39  double CEE_siEiE = ps.getParameter<double>("CEE_sigmaIEtaIEta");
40  double CEE_dPhiIn = ps.getParameter<double>("CEE_deltaPhiIn");
41  double CEE_dEtaIn = ps.getParameter<double>("CEE_deltaEtaIn");
42  double CEE_EcalIso = ps.getParameter<double>("CEE_EcalIso");
43  double CEE_HcalIso = ps.getParameter<double>("CEE_HcalIso");
44  double CEE_TrckIso = ps.getParameter<double>("CEE_TrckIso");
45 
46  CutVector_.resize(13);
47  CutVector_[EtCut_] = CElecPtMin;
48  CutVector_[EB_sIhIh_] = CEB_siEiE;
49  CutVector_[EB_dPhiIn_] = CEB_dPhiIn;
50  CutVector_[EB_dEtaIn_] = CEB_dEtaIn;
51  CutVector_[EB_TrckIso_] = CEB_TrckIso;
52  CutVector_[EB_EcalIso_] = CEB_EcalIso;
53  CutVector_[EB_HcalIso_] = CEB_HcalIso;
54  CutVector_[EE_sIhIh_] = CEE_siEiE;
55  CutVector_[EE_dPhiIn_] = CEE_dPhiIn;
56  CutVector_[EE_dEtaIn_] = CEE_dEtaIn;
57  CutVector_[EE_TrckIso_] = CEE_TrckIso;
58  CutVector_[EE_EcalIso_] = CEE_EcalIso;
59  CutVector_[EE_HcalIso_] = CEE_HcalIso;
60 
61  for (std::vector<double>::const_iterator it = CutVector_.begin(); it != CutVector_.end(); ++it) {
62  edm::LogDebug_("", "", 101) << "CutVector_ = " << *it;
63  }
64 }
65 
67 
68 // ------------ method called once each job just before starting event loop ------------
71 
72  t_ = fs->make<TTree>("ErsatzMEt", "Data on ErsatzMEt");
73 
74  edm::LogDebug_("", "", 75) << "Creating Ersatz MEt branches.";
75 
76  t_->Branch("nTags", &nTags_, "nTags/I");
77  t_->Branch("nProbes", &nProbes_, "nProbes/I");
78 
79  t_->Branch("ErsatzV1CaloMEt", ErsatzV1CaloMEt_, "ErsatzV1CaloMEt[4]/D");
80  t_->Branch("ErsatzV1CaloMt", ErsatzV1CaloMt_, "ErsatzV1CaloMt[4]/D");
81  t_->Branch("ErsatzV1CaloMEtPhi", ErsatzV1CaloMEtPhi_, "ErsatzV1CaloMEtPhi[4]/D");
82  t_->Branch("ErsatzV2CaloMEt", ErsatzV2CaloMEt_, "ErsatzV2CaloMEt[4]/D");
83  t_->Branch("ErsatzV2CaloMEtPhi", ErsatzV2CaloMEtPhi_, "ErsatzV2CaloMEtPhi[4]/D");
84  t_->Branch("ErsatzV2CaloMt", ErsatzV2CaloMt_, "ErsatzV2CaloMt[4]/D");
85  t_->Branch("ErsatzV3CaloMEt", ErsatzV3CaloMEt_, "ErsatzV3CaloMEt[4]/D");
86  t_->Branch("ErsatzV3CaloMEtPhi", ErsatzV3CaloMEtPhi_, "ErsatzV3CaloMEtPhi[4]/D");
87  t_->Branch("ErsatzV3CaloMt", ErsatzV3CaloMt_, "ErsatzV3CaloMt[4]/D");
88  t_->Branch("ErsatzV4CaloMEt", ErsatzV4CaloMEt_, "ErsatzV4CaloMEt[4]/D");
89  t_->Branch("ErsatzV4CaloMEtPhi", ErsatzV4CaloMEtPhi_, "ErsatzV4CaloMEtPhi[4]/D");
90  t_->Branch("ErsatzV4CaloMt", ErsatzV4CaloMt_, "ErsatzV4CaloMt[4]/D");
91  t_->Branch("ErsatzV1T1MEt", ErsatzV1T1MEt_, "ErsatzV1T1MEt[4]/D");
92  t_->Branch("ErsatzV1T1Mt", ErsatzV1T1Mt_, "ErsatzV1T1Mt[4]/D");
93  t_->Branch("ErsatzV1T1MEtPhi", ErsatzV1T1MEtPhi_, "ErsatzV1T1MEtPhi[4]/D");
94  t_->Branch("ErsatzV1PfMEt", ErsatzV1PfMEt_, "ErsatzV1PfMEt[4]/D");
95  t_->Branch("ErsatzV1PfMt", ErsatzV1PfMt_, "ErsatzV1PfMt[4]/D");
96  t_->Branch("ErsatzV1PfMEtPhi", ErsatzV1TcMEtPhi_, "ErsatzV1PfMEtPhi[4]/D");
97  t_->Branch("ErsatzV1TcMEt", ErsatzV1TcMEt_, "ErsatzV1TcMEt[4]/D");
98  t_->Branch("ErsatzV1TcMt", ErsatzV1TcMt_, "ErsatzV1TcMt[4]/D");
99  t_->Branch("ErsatzV1TcMEtPhi", ErsatzV1TcMEtPhi_, "ErsatzV1TcMEtPhi[4]/D");
100 
101  t_->Branch("CaloMEt", &CaloMEt_, "CaloMEt/D");
102  t_->Branch("CaloMEtphi", &CaloMEtphi_, "CaloMEtphi/D");
103  t_->Branch("T1MEt", &T1MEt_, "T1MEt/D");
104  t_->Branch("T1MEtphi", &T1MEtphi_, "T1MEtphi/D");
105  t_->Branch("PfMEt", &PfMEt_, "PfMEt/D");
106  t_->Branch("PfMEtphi", &PfMEtphi_, "PfMEtphi/D");
107  t_->Branch("TcMEt", &TcMEt_, "TcMEt/D");
108  t_->Branch("TcMEtphi", &TcMEtphi_, "TcMEtphi/D");
109 
110  edm::LogDebug_("", "", 91) << "Creating electron branches.";
111  t_->Branch("tag_q", tag_q_, "tag_q[4]/I");
112  t_->Branch("tag_pt", tag_pt_, "tag_pt[4]/D");
113  t_->Branch("tag_eta", tag_eta_, "tag_eta[4]/D");
114  t_->Branch("tag_phi", tag_phi_, "tag_phi[4]/D");
115  t_->Branch("tag_sIhIh", tag_sIhIh_, "tag_sIhIh[4]/D");
116  t_->Branch("tag_dPhiIn", tag_dPhiIn_, "tag_dPhiIn[4]/D");
117  t_->Branch("tag_dEtaIn", tag_dEtaIn_, "tag_dEtaIn[4]/D");
118  t_->Branch("tag_trckIso", tag_trckIso_, "tag_trckIso[4]/D");
119  t_->Branch("tag_ecalIso", tag_ecalIso_, "tag_ecalIso[4]/D");
120  t_->Branch("tag_hcalIso", tag_hcalIso_, "tag_hcalIso[4]/D");
121  t_->Branch("tag_e2x5Max", tag_e2x5Max_, "tag_e2x5Max[4]/D");
122  t_->Branch("tag_e1x5Max", tag_e1x5Max_, "tag_e1x5Max[4]/D");
123  t_->Branch("tag_e5x5", tag_e5x5_, "tag_e5x5[4]/D");
124  t_->Branch("tag_hoe", tag_hoe_, "tag_hoe[4]/D");
125  t_->Branch("tag_eop", tag_eop_, "tag_eop[4]/D");
126  t_->Branch("tag_pin", tag_pin_, "tag_pin[4]/D");
127  t_->Branch("tag_pout", tag_pout_, "tag_pout[4]/D");
128  t_->Branch("tag_rescPt", tag_rescPt_, "tag_rescPt[4]/D");
129  t_->Branch("tag_rescEta", tag_rescEta_, "tag_rescEta[4]/D");
130  t_->Branch("tag_rescPhi", tag_rescPhi_, "tag_rescPhi[4]/D");
131 
132  edm::LogDebug_("", "", 103) << "Creating ersatz neutrino branches.";
133  t_->Branch("probe_q", probe_q_, "probe_q[4]/I");
134  t_->Branch("probe_pt", probe_pt_, "probe_pt[4]/D");
135  t_->Branch("probe_eta", probe_eta_, "probe_eta[4]/D");
136  t_->Branch("probe_phi", probe_phi_, "probe_phi[4]/D");
137  t_->Branch("probe_sIhIh", probe_sIhIh_, "probe_sIhIh[4]/D");
138  t_->Branch("probe_dPhiIn", probe_dPhiIn_, "probe_dPhiIn[4]/D");
139  t_->Branch("probe_dEtaIn", probe_dEtaIn_, "probe_dEtaIn[4]/D");
140  t_->Branch("probe_trckIso", probe_trckIso_, "probe_trckIso[4]/D");
141  t_->Branch("probe_ecalIso", probe_ecalIso_, "probe_ecalIso[4]/D");
142  t_->Branch("probe_hcalIso", probe_hcalIso_, "probe_hcalIso[4]/D");
143  t_->Branch("probe_e2x5Max", probe_e2x5Max_, "probe_e2x5Max[4]/D");
144  t_->Branch("probe_e1x5Max", probe_e1x5Max_, "probe_e1x5Max[4]/D");
145  t_->Branch("probe_e5x5", probe_e5x5_, "probe_e5x5[4]/D");
146  t_->Branch("probe_hoe", probe_hoe_, "probe_hoe[4]/D");
147  t_->Branch("probe_eop", probe_eop_, "probe_eop[4]/D");
148  t_->Branch("probe_pin", probe_pin_, "probe_pin[4]/D");
149  t_->Branch("probe_pout", probe_pout_, "probe_pout[4]/D");
150  t_->Branch("probe_rescPt", probe_rescPt_, "probe_rescPt[4]/D");
151  t_->Branch("probe_rescEta", probe_rescEta_, "probe_rescEta[4]/D");
152  t_->Branch("probe_rescPhi", probe_rescPhi_, "probe_rescPhi[4]/D");
153 
154  t_->Branch("Z_m", Z_m_, "Z_m[4]/D");
155  t_->Branch("Z_pt", Z_pt_, "Z_pt[4]/D");
156  t_->Branch("Z_eta", Z_eta_, "Z_eta[4]/D");
157  t_->Branch("Z_y", Z_y_, "Z_y[4]/D");
158  t_->Branch("Z_phi", Z_phi_, "Z_phi[4]/D");
159  t_->Branch("Z_rescM", Z_rescM_, "Z_rescM[4]/D");
160  t_->Branch("Z_rescPt", Z_rescPt_, "Z_rescPt[4]/D");
161  t_->Branch("Z_rescEta", Z_rescEta_, "Z_rescEta[4]/D");
162  t_->Branch("Z_rescY", Z_rescY_, "Z_rescY[4]/D");
163  t_->Branch("Z_rescPhi", Z_rescPhi_, "Z_rescPhi[4]/D");
164  t_->Branch("Z_probe_dPhi", Z_probe_dPhi_, "Z_probe_dPhi[4]/D");
165 
166  t_->Branch("probe_sc_pt", probe_sc_pt_, "probe_sc_pt[4]/D");
167  t_->Branch("probe_sc_eta", probe_sc_eta_, "probe_sc_eta[4]/D");
168  t_->Branch("probe_sc_phi", probe_sc_phi_, "probe_sc_phi[4]/D");
169  t_->Branch("probe_sc_E", probe_sc_E_, "probe_sc_E[4]/D");
170  t_->Branch("probe_sc_rawE", probe_sc_rawE_, "probe_sc_rawE[4]/D");
171  t_->Branch("probe_sc_nClus", probe_sc_nClus_, "probe_sc_nClus[4]/D");
172  t_->Branch("probe_scV2_E", probe_scV2_E_, "probe_scV2_E[4]/D");
173  t_->Branch("probe_scV3_E", probe_scV3_E_, "probe_scV3_E[4]/D");
174  t_->Branch("probe_scV4_E", probe_scV4_E_, "probe_scV4_E[4]/D");
175  t_->Branch("probe_d_MCE_SCE", probe_d_MCE_SCE_, "probe_d_MCE_SCE[4]/D");
176 
177  t_->Branch("ErsatzV1_Mesc", ErsatzV1_Mesc_, "ErsatzV1_Mesc[4]/D");
178  t_->Branch("ErsatzV1_rescMesc", ErsatzV1_rescMesc_, "ErsatzV1_rescMesc[4]/D");
179 
180  t_->Branch("McElec_nFinal", &McElec_nFinal_, "McElec_nFinal/I");
181 
182  if (Zevent_) {
183  t_->Branch("McZ_m", &McZ_m_, "McZ_m/D");
184  t_->Branch("McZ_rescM", &McZ_rescM_, "McZ_rescM/D");
185  t_->Branch("McZ_Pt", &McZ_pt_, "McZ_Pt/D");
186  t_->Branch("McZ_y", &McZ_y_, "McZ_y/D");
187  t_->Branch("McZ_Eta", &McZ_eta_, "McZ_Eta/D");
188  t_->Branch("McZ_Phi", &McZ_phi_, "McZ_Phi/D");
189  t_->Branch("McZ_rescPt", &McZ_rescPt_, "McZ_Pt/D");
190  t_->Branch("McZ_rescY", &McZ_rescY_, "McZ_rescY/D");
191  t_->Branch("McZ_rescEta", &McZ_rescEta_, "McZ_Eta/D");
192  t_->Branch("McZ_rescPhi", &McZ_rescPhi_, "McZ_Phi/D");
193  t_->Branch("McElec_nZmum", &McElec_nZmum_, "McElec_nZmum/I");
194  t_->Branch("McElec_eta", &McElec_eta_, "McElec_eta[4]/D");
195  t_->Branch("McElec_pt", &McElec_pt_, "McElec_pt[4]/D");
196  t_->Branch("McElec_phi", &McElec_phi_, "McElec_phi[4]/D");
197  t_->Branch("McElec_rescEta", &McElec_rescEta_, "McElec_rescEta[4]/D");
198  t_->Branch("McElec_rescPhi", &McElec_rescPhi_, "McElec_rescPhi[4]/D");
199  t_->Branch("McElec_rescPt", &McElec_rescPt_, "McElec_rescPt[4]/D");
200  t_->Branch("McProbe_eta", &McProbe_eta_, "McProbe_eta[4]/D");
201  t_->Branch("McProbe_pt", &McProbe_pt_, "McProbe_pt[4]/D");
202  t_->Branch("McProbe_phi", &McProbe_phi_, "McProbe_phi[4]/D");
203  t_->Branch("McProbe_rescEta", &McProbe_rescEta_, "McProbe_rescEta[4]/D");
204  t_->Branch("McProbe_rescPt", &McProbe_rescPt_, "McProbe_rescPt[4]/D");
205  t_->Branch("McProbe_rescPhi", &McProbe_rescPhi_, "McProbe_rescPhi[4]/D");
206  t_->Branch("McElecProbe_dPhi", &McElecProbe_dPhi_, "McElecProbe_dPhi/D");
207  t_->Branch("McElecProbe_dEta", &McElecProbe_dEta_, "McElecProbe_dEta/D");
208  t_->Branch("McElecProbe_dR", &McElecProbe_dR_, "McElecProbe_dR/D");
209  }
210 }
211 
212 void ErsatzMEt::analyze(const edm::Event& evt, const edm::EventSetup& es) {
215 
216  edm::LogDebug_("", "", 151) << "Initialising variables.";
217  nTags_ = -99;
218  nProbes_ = -99;
219  CaloMEt_ = -99.;
220  CaloMEtphi_ = -99.;
221  T1MEt_ = -99.;
222  T1MEtphi_ = -99.;
223  PfMEt_ = -99.;
224  PfMEtphi_ = -99.;
225  TcMEt_ = -99.;
226  TcMEtphi_ = -99.;
227  if (Zevent_) {
228  McZ_m_ = -99.;
229  McZ_pt_ = -99.;
230  McZ_y_ = -99.;
231  McZ_eta_ = -99.;
232  McZ_phi_ = -99.;
233  McZ_rescM_ = -99.;
234  McZ_rescPt_ = -99.;
235  McZ_rescY_ = -99.;
236  McZ_rescEta_ = -99.;
237  McZ_rescPhi_ = -99.;
238  McElec_nZmum_ = -99;
239  McElec_nFinal_ = -99;
240  }
241 
242  for (int i = 0; i < nEntries_arr_; ++i) {
243  tag_q_[i] = -99;
244  tag_pt_[i] = -99.;
245  tag_eta_[i] = -99.;
246  tag_phi_[i] = -99.;
247  tag_rescPt_[i] = -99.;
248  tag_rescEta_[i] = -99.;
249  tag_rescPhi_[i] = -99.;
250  tag_trckIso_[i] = -99.;
251  tag_ecalIso_[i] = -99.;
252  tag_hcalIso_[i] = -99.;
253  tag_sIhIh_[i] = -99.;
254  tag_dPhiIn_[i] = -99.;
255  tag_dEtaIn_[i] = -99.;
256  tag_e5x5_[i] = -99.;
257  tag_e2x5Max_[i] = -99.;
258  tag_e1x5Max_[i] = -99.;
259  tag_hoe_[i] = -99.;
260  tag_eop_[i] = -99.;
261  tag_pin_[i] = -99.;
262  tag_pout_[i] = -99.;
263 
264  probe_q_[i] = -99;
265  probe_pt_[i] = -99.;
266  probe_eta_[i] = -99.;
267  probe_phi_[i] = -99.;
268  probe_rescPt_[i] = -99.;
269  probe_rescEta_[i] = -99.;
270  probe_rescPhi_[i] = -99.;
271  probe_trckIso_[i] = -99.;
272  probe_ecalIso_[i] = -99.;
273  probe_hcalIso_[i] = -99.;
274  probe_sIhIh_[i] = -99.;
275  probe_dPhiIn_[i] = -99.;
276  probe_dEtaIn_[i] = -99.;
277  probe_e5x5_[i] = -99.;
278  probe_e2x5Max_[i] = -99.;
279  probe_e1x5Max_[i] = -99.;
280  probe_hoe_[i] = -99.;
281  probe_eop_[i] = -99.;
282  probe_pin_[i] = -99.;
283  probe_pout_[i] = -99.;
284 
285  Z_pt_[i] = -99.;
286  Z_y_[i] = -99.;
287  Z_eta_[i] = -99.;
288  Z_phi_[i] = -99.;
289  Z_m_[i] = -99.;
290  Z_rescPt_[i] = -99.;
291  Z_rescY_[i] = -99.;
292  Z_rescEta_[i] = -99.;
293  Z_rescPhi_[i] = -99.;
294  Z_rescM_[i] = -99.;
295  Z_probe_dPhi_[i] = -99.;
296 
297  ErsatzV1_Mesc_[i] = -99.;
298  ErsatzV1_rescMesc_[i] = -99.;
299  ErsatzV2_Mesc_[i] = -99.;
300  ErsatzV2_rescMesc_[i] = -99.;
301  ErsatzV3_Mesc_[i] = -99.;
302  ErsatzV3_rescMesc_[i] = -99.;
303  ErsatzV4_Mesc_[i] = -99.;
304  ErsatzV4_rescMesc_[i] = -99.;
305  ErsatzV1CaloMEt_[i] = -99.;
306  ErsatzV1CaloMt_[i] = -99.;
307  ErsatzV1CaloMEtPhi_[i] = -99.;
308  ErsatzV2CaloMEt_[i] = -99.;
309  ErsatzV2CaloMt_[i] = -99.;
310  ErsatzV2CaloMEtPhi_[i] = -99.;
311  ErsatzV3CaloMEt_[i] = -99.;
312  ErsatzV3CaloMt_[i] = -99.;
313  ErsatzV3CaloMEtPhi_[i] = -99.;
314  ErsatzV4CaloMEt_[i] = -99.;
315  ErsatzV4CaloMt_[i] = -99.;
316  ErsatzV4CaloMEtPhi_[i] = -99.;
317  ErsatzV1T1MEt_[i] = -99.;
318  ErsatzV1T1Mt_[i] = -99.;
319  ErsatzV1T1MEtPhi_[i] = -99.;
320  ErsatzV1PfMEt_[i] = -99.;
321  ErsatzV1PfMt_[i] = -99.;
322  ErsatzV1PfMEtPhi_[i] = -99.;
323  ErsatzV1TcMEt_[i] = -99.;
324  ErsatzV1TcMt_[i] = -99.;
325  ErsatzV1TcMEtPhi_[i] = -99.;
326 
327  probe_sc_pt_[i] = -99.;
328  probe_sc_eta_[i] = -99.;
329  probe_sc_phi_[i] = -99.;
330  probe_sc_E_[i] = -99.;
331  probe_sc_rawE_[i] = -99.;
332  probe_scV2_E_[i] = -99.;
333  probe_scV3_E_[i] = -99.;
334  probe_scV4_E_[i] = -99.;
335 
336  if (Zevent_) {
337  McElec_pt_[i] = -99.;
338  McElec_eta_[i] = -99.;
339  McElec_phi_[i] = -99.;
340  McElec_rescPt_[i] = -99.;
341  McElec_rescEta_[i] = -99.;
342  McElec_rescPhi_[i] = -99.;
343  McProbe_pt_[i] = -99.;
344  McProbe_eta_[i] = -99.;
345  McProbe_phi_[i] = -99.;
346  McProbe_rescPt_[i] = -99.;
347  McProbe_rescEta_[i] = -99.;
348  McProbe_rescPhi_[i] = -99.;
349  McElecProbe_dPhi_[i] = -99.;
350  McElecProbe_dEta_[i] = -99.;
351  McElecProbe_dR_[i] = -99.;
352  }
353 
354  edm::LogDebug_("", "", 180) << "Initialisation of array index " << i << " completed.";
355  }
356  //Get Collections
358  evt.getByToken(MCTruthCollection_, pGenPart);
360  evt.getByToken(ElectronCollection_, pElectrons);
362  evt.getByToken(HybridScCollection_, pHybrid);
364  evt.getByToken(M5x5ScCollection_, pM5x5);
366  evt.getByToken(CaloMEtCollection_, pCaloMEt);
368  // evt.getByToken(T1MEtCollection_, pT1MEt);
370  evt.getByToken(PfMEtCollection_, pPfMEt);
372  evt.getByToken(TcMEtCollection_, pTcMEt);
374  evt.getByToken(GenMEtCollection_, pGenMEt);
375  edm::Handle<edm::TriggerResults> pTriggerResults;
376  evt.getByToken(TriggerResults_, pTriggerResults);
378  evt.getByToken(TriggerEvent_, pHLT);
379 
380  std::vector<math::XYZTLorentzVector> McElecs, McElecsFinalState;
381  std::vector<math::XYZTLorentzVector> McElecsResc;
382  if (Zevent_) {
383  edm::LogDebug_("", "", 289) << "Analysing MC properties.";
384  const reco::GenParticleCollection* McCand = pGenPart.product();
385  math::XYZTLorentzVector Zboson, RescZboson, McElec1, McElec2;
386  for (reco::GenParticleCollection::const_iterator McP = McCand->begin(); McP != McCand->end(); ++McP) {
387  const reco::Candidate* mum = McP->mother();
388  if (std::abs(McP->pdgId()) == 11 && abs(mum->pdgId()) == 23) {
389  McElecs.push_back(McP->p4());
390  if (std::abs(mum->pdgId()) == 23)
391  Zboson = mum->p4();
392 
393  std::cout << "Found electron, ID = " << McP->pdgId() << "\t status = " << McP->status() << std::endl;
394  if (McP->status() != 1) {
395  const reco::Candidate* McPD = McP->daughter(0);
396  McPD = McPD->mother();
397  while (McPD->status() != 1) {
398  int n = McPD->numberOfDaughters();
399  std::cout << McPD->pdgId() << " : status = " << McPD->status() << "\tNumber of Daughters = " << n
400  << std::endl;
401  for (int j = 0; j < n; ++j) {
402  const reco::Candidate* d = McPD->daughter(j);
403  std::cout << "Daughter " << j << "\t id = " << d->pdgId() << std::endl;
404  if (std::abs(d->pdgId()) == 11) {
405  McPD = d;
406  break;
407  }
408  }
409  }
410  std::cout << McPD->pdgId() << " : status = " << McPD->status() << "\tAdding to vector!" << std::endl;
411  McElecsFinalState.push_back(McPD->p4());
412  } else
413  McElecsFinalState.push_back(McP->p4());
414  }
415  }
416  McZ_m_ = Zboson.M();
417  McZ_pt_ = Zboson.Pt();
418  McZ_phi_ = Zboson.Phi();
419  McZ_eta_ = Zboson.Eta();
420  McZ_y_ = Zboson.Rapidity();
421  McElec_nZmum_ = McElecs.size();
422  McElec_nFinal_ = McElecsFinalState.size();
423  edm::LogDebug_("", "", 309) << "MC electrons with Z mother = " << McElec_nZmum_
424  << "\tFinal state MC electrons = " << McElec_nFinal_;
425 
426  McElecsResc.resize(2);
427  // RescZboson.SetCoordinates(Zboson.Px(), Zboson.Py(), Zboson.Pz(), sqrt(Zboson.P2()+(mW_*mW_*Zboson.M2())/(mZ_*mZ_)));
428  RescZboson.SetCoordinates(
429  Zboson.Px() * mW_ / mZ_, Zboson.Py() * mW_ / mZ_, Zboson.Pz() * mW_ / mZ_, Zboson.E() * mW_ / mZ_);
430  McZ_rescM_ = RescZboson.M();
431  McZ_rescPt_ = RescZboson.Pt();
432  McZ_rescEta_ = RescZboson.Eta();
433  McZ_rescPhi_ = RescZboson.Phi();
434  McZ_rescY_ = RescZboson.Rapidity();
435  ROOT::Math::Boost CoMBoost(Zboson.BoostToCM());
436 
437  math::XYZTLorentzVector RescMcElec0 = CoMBoost(McElecsFinalState[0]);
438  math::XYZTLorentzVector RescMcElec1 = CoMBoost(McElecsFinalState[1]);
439  RescMcElec0 *= mW_ / mZ_;
440  RescMcElec1 *= mW_ / mZ_;
441 
442  double E_W = RescZboson.E();
443  ROOT::Math::Boost BackToLab(RescZboson.Px() / E_W, RescZboson.Py() / E_W, RescZboson.Pz() / E_W);
444 
445  RescMcElec0 = BackToLab(RescMcElec0);
446  // RndmMcElec_Rescaled_pt_ = RescMcElec0.Pt();
447  // RndmMcElec_Rescaled_eta_ = RescMcElec0.Eta();
448  // RndmMcElec_Rescaled_phi_ = RescMcElec0.Phi();
449 
450  RescMcElec1 = BackToLab(RescMcElec1);
451  // OthrMcElec_Rescaled_pt_ = RescMcElec1.Pt();
452  // OthrMcElec_Rescaled_eta_ = RescMcElec1.Eta();
453  // OthrMcElec_Rescaled_phi_ = RescMcElec1.Phi();
454  McElecsResc[0] = RescMcElec0;
455  McElecsResc[1] = RescMcElec1;
456  math::XYZTLorentzVector sum = RescMcElec1 + RescMcElec0;
457  edm::LogDebug_("", "", 307) << "McElecsResc[0] + McElecsResc[1] = (" << sum.Px() << ", " << sum.Py() << ", "
458  << sum.Pz() << ", " << sum.E() << ")";
459  }
460 
461  const edm::TriggerResults* HltRes = pTriggerResults.product();
462  const edm::TriggerNames& triggerNames = evt.triggerNames(*HltRes);
463  if (HLTPathCheck_) {
464  for (unsigned int itrig = 0; itrig < HltRes->size(); ++itrig) {
465  const std::string& nom = triggerNames.triggerName(itrig);
466  edm::LogInfo("") << itrig << " : Name = " << nom << "\t Accepted = " << HltRes->accept(itrig);
467  }
468  }
469  if (HltRes->accept(34) == 0)
470  edm::LogError("") << "Event did not pass " << triggerNames.triggerName(34) << "!";
471  if (HltRes->accept(34) != 0) {
472  std::vector<reco::GsfElectronRef> UniqueElectrons;
473  UniqueElectrons = uniqueElectronFinder(pElectrons);
474  edm::LogDebug_("", "ErsatzMEt", 192) << "Unique electron size = " << UniqueElectrons.size();
475  std::vector<reco::GsfElectronRef> SelectedElectrons;
476  const unsigned int fId = pHLT->filterIndex(TriggerPath_);
477  std::cout << "Filter Id = " << fId << std::endl;
478  SelectedElectrons = electronSelector(UniqueElectrons, pHLT, fId, CutVector_);
479  nTags_ = SelectedElectrons.size();
480  edm::LogDebug_("", "ErsatzMEt", 197) << "Selected electron size = " << nTags_;
481 
482  iComb_ = 0;
483  if (Zevent_) {
484  //Match MC electrons to the selected electrons and store some of their properties in the tree.
485  //The properties of the other MC electron (i.e. that not selected) are also stored.
486  for (std::vector<reco::GsfElectronRef>::const_iterator elec = SelectedElectrons.begin();
487  elec != SelectedElectrons.end();
488  ++elec) {
489  for (int m = 0; m < 2; ++m) {
490  double dRLimit = 99.;
491  double dR = reco::deltaR(McElecs[m], *(*elec));
492  if (dR < dRLimit) {
493  dRLimit = dR;
494  McElec_pt_[iComb_] = McElecs[m].pt();
495  McElec_eta_[iComb_] = McElecs[m].eta();
496  McElec_rescPt_[iComb_] = McElecsResc[m].pt();
497  McElec_rescEta_[iComb_] = McElecsResc[m].eta();
498  }
499  }
500  }
501  }
502 
503  std::map<reco::GsfElectronRef, reco::GsfElectronRef> TagProbePairs;
504  TagProbePairs = probeFinder(SelectedElectrons, pElectrons);
505  nProbes_ = TagProbePairs.size();
506  edm::LogDebug_("", "ErsatzMEt", 209) << "Number of tag-probe pairs = " << TagProbePairs.size();
507 
508  if (!TagProbePairs.empty()) {
509  const reco::CaloMETCollection* caloMEtCollection = pCaloMEt.product();
510  const reco::MET calomet = *(caloMEtCollection->begin());
511  CaloMEt_ = calomet.pt();
512  CaloMEtphi_ = calomet.phi();
513 
514  //const reco::METCollection* t1MEtCollection = pT1MEt.product();
515  //const reco::MET t1met = *(t1MEtCollection->begin());
516  //T1MEt_ = t1met.pt();
517  //T1MEtphi_ = t1met.phi();
518 
519  const reco::PFMETCollection* pfMEtCollection = pPfMEt.product();
520  const reco::MET pfmet = *(pfMEtCollection->begin());
521  PfMEt_ = pfmet.pt();
522  PfMEtphi_ = pfmet.phi();
523 
524  const reco::METCollection* tcMEtCollection = pTcMEt.product();
525  const reco::MET tcmet = *(tcMEtCollection->begin());
526  TcMEt_ = tcmet.pt();
527  TcMEtphi_ = tcmet.phi();
528 
529  reco::MET ersatzMEt;
530 
531  for (std::map<reco::GsfElectronRef, reco::GsfElectronRef>::const_iterator it = TagProbePairs.begin();
532  it != TagProbePairs.end();
533  ++it) {
534  edm::LogDebug_("", "DelendumLoop", 293) << "iComb_ = " << iComb_;
535  tag_q_[iComb_] = it->first->charge();
536  edm::LogDebug_("", "", 360) << "tag charge = " << tag_q_[iComb_];
537  tag_pt_[iComb_] = it->first->pt();
538  tag_eta_[iComb_] = it->first->eta();
539  tag_phi_[iComb_] = it->first->phi();
540  edm::LogDebug_("", "ErsatzMEt", 364)
541  << "tag pt = " << tag_pt_[iComb_] << "\teta = " << tag_eta_[iComb_] << "\tphi = " << tag_phi_[iComb_];
542  tag_trckIso_[iComb_] = it->first->isolationVariables03().tkSumPt;
543  tag_ecalIso_[iComb_] = it->first->isolationVariables04().ecalRecHitSumEt;
544  tag_hcalIso_[iComb_] = it->first->isolationVariables04().hcalDepth1TowerSumEt +
545  it->first->isolationVariables04().hcalDepth2TowerSumEt;
546  edm::LogDebug_("", "ErsatzMEt", 370)
547  << "tag trackiso = " << tag_trckIso_[iComb_] << "\tecaliso = " << tag_ecalIso_[iComb_]
548  << "\thcaliso = " << tag_hcalIso_[iComb_];
549  tag_sIhIh_[iComb_] = it->first->scSigmaIEtaIEta();
550  tag_dPhiIn_[iComb_] = it->first->deltaPhiSuperClusterTrackAtVtx();
551  tag_dEtaIn_[iComb_] = it->first->deltaEtaSuperClusterTrackAtVtx();
552  edm::LogDebug_("", "ErsatzMEt", 245)
553  << "tag sIhIh = " << tag_sIhIh_[iComb_] << "\tdPhiIn = " << tag_dPhiIn_[iComb_]
554  << "\tdEtaIn = " << tag_dEtaIn_[iComb_];
555  tag_e5x5_[iComb_] = it->first->scE5x5();
556  tag_e2x5Max_[iComb_] = it->first->scE2x5Max();
557  tag_e2x5Max_[iComb_] = it->first->scE1x5();
558  edm::LogDebug_("", "ErsatzMEt", 245)
559  << "tag e5x5 = " << tag_e5x5_[iComb_] << "\te2x5Max = " << tag_e2x5Max_[iComb_]
560  << "\te1x5Max = " << tag_e1x5Max_[iComb_];
561  tag_hoe_[iComb_] = it->first->hadronicOverEm();
562  tag_eop_[iComb_] = it->first->eSuperClusterOverP();
563  tag_pin_[iComb_] = it->first->trackMomentumAtVtx().R();
564  tag_pout_[iComb_] = it->first->trackMomentumOut().R();
565  edm::LogDebug_("", "ErsatzMEt", 245) << "tag hoe = " << tag_hoe_[iComb_] << "\tpoe = " << tag_eop_[iComb_]
566  << "\tpin = " << tag_pin_[iComb_] << "\tpout = " << tag_pout_[iComb_];
567  probe_q_[iComb_] = it->first->charge();
568  edm::LogDebug_("", "", 360) << "probe charge = " << probe_q_[iComb_];
569  probe_pt_[iComb_] = it->second->pt();
570  probe_eta_[iComb_] = it->second->eta();
571  probe_phi_[iComb_] = it->second->phi();
572  edm::LogDebug_("", "ErsatzMEt", 245) << "probe pt = " << probe_pt_[iComb_] << "\teta = " << probe_eta_[iComb_]
573  << "\tphi = " << probe_phi_[iComb_];
574  probe_trckIso_[iComb_] = it->second->isolationVariables03().tkSumPt;
575  probe_ecalIso_[iComb_] = it->second->isolationVariables04().ecalRecHitSumEt;
576  probe_hcalIso_[iComb_] = it->second->isolationVariables04().hcalDepth1TowerSumEt +
577  it->second->isolationVariables04().hcalDepth2TowerSumEt;
578  edm::LogDebug_("", "ErsatzMEt", 245)
579  << "probe trackiso = " << probe_trckIso_[iComb_] << "\tecaliso = " << probe_ecalIso_[iComb_]
580  << "\thcaliso = " << probe_phi_[iComb_];
581  probe_sIhIh_[iComb_] = it->second->scSigmaIEtaIEta();
582  probe_dPhiIn_[iComb_] = it->second->deltaPhiSuperClusterTrackAtVtx();
583  probe_dEtaIn_[iComb_] = it->second->deltaEtaSuperClusterTrackAtVtx();
584  edm::LogDebug_("", "ErsatzMEt", 245)
585  << "probe sIhIh = " << probe_sIhIh_[iComb_] << "\tdPhiIn = " << probe_dPhiIn_[iComb_]
586  << "\tdEtaIn = " << probe_dEtaIn_[iComb_];
587  probe_e5x5_[iComb_] = it->second->scE5x5();
588  probe_e2x5Max_[iComb_] = it->second->scE2x5Max();
589  probe_e2x5Max_[iComb_] = it->second->scE1x5();
590  edm::LogDebug_("", "ErsatzMEt", 245)
591  << "probe e5x5 = " << probe_e5x5_[iComb_] << "\te2x5Max = " << probe_e2x5Max_[iComb_]
592  << "\te1x5Max = " << probe_e1x5Max_[iComb_];
593  probe_hoe_[iComb_] = it->second->hadronicOverEm();
594  probe_eop_[iComb_] = it->second->eSuperClusterOverP();
595  probe_pin_[iComb_] = it->second->trackMomentumAtVtx().R();
596  probe_pout_[iComb_] = it->second->trackMomentumOut().R();
597  edm::LogDebug_("", "ErsatzMEt", 245) << "probe hoe = " << probe_hoe_[iComb_] << "\tpoe = " << probe_eop_[iComb_]
598  << "\tpin = " << probe_pin_[iComb_] << "\tpout = " << probe_pout_[iComb_];
599 
600  double dRLimit = 0.2;
601  for (unsigned int mcEId = 0; mcEId < McElecs.size(); ++mcEId) {
602  // double dR = reco::deltaR((*(*mcEl)), probeVec);
603  double dR = reco::deltaR(McElecs[mcEId], it->second->p4());
604  if (dR < dRLimit) {
605  dRLimit = dR;
606  McProbe_pt_[iComb_] = McElecs[mcEId].pt();
607  McProbe_eta_[iComb_] = McElecs[mcEId].eta();
608  McProbe_phi_[iComb_] = McElecs[mcEId].phi();
609  McProbe_rescPt_[iComb_] = McElecsResc[mcEId].pt();
610  McProbe_rescEta_[iComb_] = McElecsResc[mcEId].eta();
611  McProbe_rescPhi_[iComb_] = McElecsResc[mcEId].phi();
612  probe_d_MCE_SCE_[iComb_] = McElecs[mcEId].energy() - it->second->superCluster()->rawEnergy();
613  McElecProbe_dPhi_[iComb_] = reco::deltaPhi(McElecs[mcEId].phi(), McElecs[(mcEId + 1) % 2].phi());
614  McElecProbe_dEta_[iComb_] = fabs(McElecs[mcEId].eta() - McElecs[(mcEId + 1) % 2].eta());
615  McElecProbe_dR_[iComb_] = reco::deltaR(McElecs[mcEId], McElecs[(mcEId + 1) % 2]);
616  }
617  }
618 
619  // Uncorrected supercluster V1
620  reco::SuperCluster scV1 = *(it->second->superCluster());
621  math::XYZTLorentzVector probe_scV1_detVec = DetectorVector(scV1);
622  probe_sc_pt_[iComb_] = probe_scV1_detVec.pt();
623  probe_sc_eta_[iComb_] = scV1.eta();
624  probe_sc_phi_[iComb_] = scV1.phi();
626  probe_sc_E_[iComb_] = scV1.energy();
627  probe_sc_rawE_[iComb_] = scV1.rawEnergy();
628 
629  ersatzMEt = ersatzFabrik(it->first, scV1, calomet, 1);
630  ErsatzV1CaloMEt_[iComb_] = ersatzMEt.pt();
631  ErsatzV1CaloMEtPhi_[iComb_] = ersatzMEt.phi();
632  //ersatzMEt = ersatzFabrik(it->first, it->second, t1met);
633  //ErsatzV1T1MEt_[iComb_] = ersatzMEt.pt();
634  //ErsatzV1T1MEtPhi_[iComb_] = ersatzMEt.phi();
635  ersatzMEt = ersatzFabrik(it->first, it->second, pfmet);
636  ErsatzV1PfMEt_[iComb_] = ersatzMEt.pt();
637  ErsatzV1PfMEtPhi_[iComb_] = ersatzMEt.phi();
638  ersatzMEt = ersatzFabrik(it->first, it->second, tcmet);
639  ErsatzV1TcMEt_[iComb_] = ersatzMEt.pt();
640  ErsatzV1TcMEtPhi_[iComb_] = ersatzMEt.phi();
641 
642  // fEta corrected supercluster V2
643  reco::SuperCluster scV2;
644  if (fabs(probe_sc_eta_[iComb_]) < 1.479) {
645  scV2 = fEtaScCorr(scV1);
646  } else {
647  scV2 = scV1;
648  }
649  probe_scV2_E_[iComb_] = scV2.energy();
650  ersatzMEt = ersatzFabrik(it->first, scV2, calomet, 2);
651  ErsatzV2CaloMEt_[iComb_] = ersatzMEt.pt();
652  ErsatzV2CaloMEtPhi_[iComb_] = ersatzMEt.phi();
653 
654  // fBrem corrected supercluster V3
655  reco::SuperCluster scV3;
656  if (fabs(probe_sc_eta_[iComb_]) < 1.479) {
657  scV3 = fBremScCorr(scV1, hyb_fCorrPSet_);
658  } else {
659  scV3 = fBremScCorr(scV1, m5x5_fCorrPSet_);
660  }
661  probe_scV3_E_[iComb_] = scV3.energy();
662  ersatzMEt = ersatzFabrik(it->first, scV3, calomet, 3);
663  ErsatzV3CaloMEt_[iComb_] = ersatzMEt.pt();
664  ErsatzV3CaloMEtPhi_[iComb_] = ersatzMEt.phi();
665 
666  // Fully corrected supercluster V4
667  reco::SuperCluster scV4;
668  if (fabs(probe_sc_eta_[iComb_]) < 1.479) {
669  scV4 = fBremScCorr(scV1, hyb_fCorrPSet_);
670  } else {
671  scV4 = fBremScCorr(scV1, m5x5_fCorrPSet_);
672  }
673  probe_scV4_E_[iComb_] = scV4.energy();
674  ersatzMEt = ersatzFabrik(it->first, scV4, calomet, 4);
675  ErsatzV4CaloMEt_[iComb_] = ersatzMEt.pt();
676  ErsatzV4CaloMEtPhi_[iComb_] = ersatzMEt.phi();
677 
678  ++iComb_;
679  }
680  t_->Fill();
681  }
682  }
683 }
684 
685 std::map<reco::GsfElectronRef, reco::GsfElectronRef> ErsatzMEt::probeFinder(
686  const std::vector<reco::GsfElectronRef>& tags, const edm::Handle<reco::GsfElectronCollection> pElectrons) {
687  const reco::GsfElectronCollection* probeCands = pElectrons.product();
688  std::map<reco::GsfElectronRef, reco::GsfElectronRef> TagProbes;
689  for (std::vector<reco::GsfElectronRef>::const_iterator tagelec = tags.begin(); tagelec != tags.end(); ++tagelec) {
690  reco::GsfElectronRef tag = *tagelec;
691  std::pair<reco::GsfElectronRef, reco::GsfElectronRef> TagProbePair;
692  int nProbesPerTag = 0;
693  int index = 0;
694  for (reco::GsfElectronCollection::const_iterator probeelec = probeCands->begin(); probeelec != probeCands->end();
695  ++probeelec) {
696  reco::GsfElectronRef probe(pElectrons, index);
697  double probeScEta = probe->superCluster()->eta();
698  if (probe->superCluster() != tag->superCluster() && fabs(probeScEta) < 2.5) {
699  if (fabs(probeScEta) < 1.4442 || fabs(probeScEta) > 1.560) {
700  double invmass = ROOT::Math::VectorUtil::InvariantMass(tag->p4(), probe->p4());
701  if (mTPmin_ <= invmass && invmass <= mTPmax_) {
702  TagProbePair = std::make_pair(tag, probe);
703  ++nProbesPerTag;
704  }
705  }
706  }
707  ++index;
708  }
709  //nGsfElectrons_ = index;
710  if (nProbesPerTag == 1)
711  TagProbes.insert(TagProbePair);
712  }
713  return TagProbes;
714 }
715 
717  const reco::SuperCluster& sc,
718  const reco::MET& met,
719  const int corr) {
720  const math::XYZPoint ZVertex(
721  elec->TrackPositionAtVtx().X(), elec->TrackPositionAtVtx().Y(), elec->TrackPositionAtVtx().Z());
722 
723  math::XYZTLorentzVector nu, boost_nu, ele, boost_ele;
724  reco::SuperCluster elecSc = *(elec->superCluster());
725  nu = PhysicsVectorRaw(met.vertex(), sc);
726  boost_nu = PhysicsVectorRaw(ZVertex, sc);
727  ele = PhysicsVectorRaw(met.vertex(), elecSc);
728  boost_ele = ele;
729 
730  //Should use reco vertex for best Z->ee measurement.
731  edm::LogDebug_("ersatzFabrikV1", "", 569) << "elec = (" << elec->p4().Px() << ", " << elec->p4().Py() << ", "
732  << elec->p4().Pz() << ", " << elec->p4().E() << ")";
733  math::XYZTLorentzVector Zboson = boost_nu + elec->p4();
734  edm::LogDebug_("ersatzFabrikV1", "", 569) << "Z pt = " << Zboson.Pt() << "Z boson mass = " << Zboson.M();
735  edm::LogDebug_("ersatzFabrikV1", "", 570) << "Z boson in lab frame = (" << Zboson.Px() << ", " << Zboson.Py() << ", "
736  << Zboson.Pz() << ", " << Zboson.E() << ")";
737  math::XYZTLorentzVector RescZboson(
738  Zboson.Px(), Zboson.Py(), Zboson.Pz(), sqrt(Zboson.P2() + (mW_ * mW_ * Zboson.M2()) / (mZ_ * mZ_)));
739  edm::LogDebug_("ersatzFabrikV1", "", 573) << "W boson in lab frame = (" << RescZboson.Px() << ", " << RescZboson.Py()
740  << ", " << RescZboson.Pz() << ", " << RescZboson.E() << ")";
741  ROOT::Math::Boost BoostToZRestFrame(Zboson.BoostToCM());
742  edm::LogDebug_("ersatzFabrikV1", "", 576) << "Electron in lab frame = (" << boost_ele.Px() << ", " << boost_ele.Py()
743  << ", " << boost_ele.Pz() << ", " << boost_ele.E() << ")";
744  edm::LogDebug_("ersatzFabrikV1", "", 578) << "Ersatz Neutrino in lab frame = (" << boost_nu.Px() << ", "
745  << boost_nu.Py() << ", " << boost_nu.Pz() << ", " << boost_nu.E() << ")";
746  boost_ele = BoostToZRestFrame(boost_ele);
747  boost_nu = BoostToZRestFrame(boost_nu);
748  edm::LogDebug_("ersatzFabrikV1", "", 582) << "Electron in Z rest frame = (" << boost_ele.Px() << ", "
749  << boost_ele.Py() << ", " << boost_ele.Pz() << ", " << boost_ele.E() << ")";
750  edm::LogDebug_("ersatzFabrikV1", "", 584) << "Ersatz Neutrino in Z rest frame = (" << boost_nu.Px() << ", "
751  << boost_nu.Py() << ", " << boost_nu.Pz() << ", " << boost_nu.E() << ")";
752  boost_ele *= mW_ / mZ_;
753  boost_nu *= mW_ / mZ_;
754 
755  double E_W = RescZboson.E();
756  ROOT::Math::Boost BackToLab(RescZboson.Px() / E_W, RescZboson.Py() / E_W, RescZboson.Pz() / E_W);
757  math::XYZTLorentzVector metVec(-99999., -99999., -99., -99999.);
758  boost_ele = BackToLab(boost_ele);
759 
760  boost_nu = BackToLab(boost_nu);
761  math::XYZTLorentzVector sum = boost_nu + boost_ele;
762  edm::LogDebug_("ersatzFabrikV1", "", 597) << "Electron back in lab frame = (" << boost_ele.Px() << ", "
763  << boost_ele.Py() << ", " << boost_ele.Pz() << ", " << boost_ele.E() << ")";
764  edm::LogDebug_("ersatzFabrikV1", "", 599) << "Ersatz Neutrino back in lab frame = (" << boost_nu.Px() << ", "
765  << boost_nu.Py() << ", " << boost_nu.Pz() << ", " << boost_nu.E() << ")";
766  edm::LogDebug_("ersatzFabrikV1", "", 601)
767  << "boost_ele + boost_nu = (" << sum.Px() << ", " << sum.Py() << ", " << sum.Pz() << ", " << sum.E() << ")";
768 
769  nu.SetXYZT(nu.X(), nu.Y(), 0., nu.T());
770  ele.SetXYZT(ele.X(), ele.Y(), 0., ele.T());
771  boost_ele.SetXYZT(boost_ele.X(), boost_ele.Y(), 0., boost_ele.T());
772  metVec = met.p4() + nu + ele - boost_ele;
773 
774  reco::MET ersatzMEt(metVec, met.vertex());
775  if (corr == 1) {
776  //Z_caloV1_m_[iComb_] = Zboson.M();
777  //Z_caloV1_pt_[iComb_] = Zboson.Pt();
778  //Z_caloV1_y_[iComb_] = Zboson.Y();
779  //Z_caloV1_eta_[iComb_] = Zboson.Eta();
780  //Z_caloV1_phi_[iComb_] = Zboson.Phi();
781  //Z_caloV1_rescM_[iComb_] = RescZboson.M();
782  //Z_caloV1_rescPt_[iComb_] = RescZboson.Pt();
783  //Z_caloV1_rescY_[iComb_] = RescZboson.Y();
784  //Z_caloV1_rescEta_[iComb_] = RescZboson.Eta();
785  //Z_caloV1_rescPhi_[iComb_] = RescZboson.Phi();
786  //Z_caloV1_probe_dPhi_[iComb_] = reco::deltaPhi(Zboson.Phi(), elec->phi());
787  //tag_caloV1_rescPt_[iComb_] = boost_ele.Pt();
788  //tag_caloV1_rescEta_[iComb_] = boost_ele.Eta();
789  //tag_caloV1_rescPhi_[iComb_] = boost_ele.Phi();
790  //probe_caloV1_rescPt_[iComb_] = boost_nu.Pt();
791  //probe_caloV1_rescEta_[iComb_] = boost_nu.Eta();
792  //probe_caloV1_rescPhi_[iComb_] = boost_nu.Phi();
793  ErsatzV1_Mesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(elec->p4(), boost_nu);
794  ErsatzV1_rescMesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(ele, nu);
796  sqrt(2. * boost_ele.Pt() * ersatzMEt.pt() * (1 - cos(reco::deltaPhi(boost_ele.Phi(), ersatzMEt.phi()))));
797  }
798  if (corr == 2) {
799  //Z_caloV2_m_[iComb_] = Zboson.M();
800  //Z_caloV2_pt_[iComb_] = Zboson.Pt();
801  //Z_caloV2_y_[iComb_] = Zboson.Y();
802  //Z_caloV2_eta_[iComb_] = Zboson.Eta();
803  //Z_caloV2_phi_[iComb_] = Zboson.Phi();
804  //Z_caloV2_rescM_[iComb_] = RescZboson.M();
805  //Z_caloV2_rescPt_[iComb_] = RescZboson.Pt();
806  //Z_caloV2_rescY_[iComb_] = RescZboson.Y();
807  //Z_caloV2_rescEta_[iComb_] = RescZboson.Eta();
808  //Z_caloV2_rescPhi_[iComb_] = RescZboson.Phi();
809  //Z_caloV2_probe_dPhi_[iComb_] = reco::deltaPhi(Zboson.Phi(), boost_elec->phi());
810  //tag_caloV2_rescPt_[iComb_] = boost_ele.Pt();
811  //tag_caloV2_rescEta_[iComb_] = boost_ele.Eta();
812  //tag_caloV2_rescPhi_[iComb_] = boost_ele.Phi();
813  //probe_caloV2_rescPt_[iComb_] = boost_nu.Pt();
814  //probe_caloV2_rescEta_[iComb_] = boost_nu.Eta();
815  //probe_caloV2_rescPhi_[iComb_] = boost_nu.Phi();
816  ErsatzV2_Mesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(elec->p4(), boost_nu);
817  ErsatzV2_rescMesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(ele, nu);
819  sqrt(2. * boost_ele.Pt() * ersatzMEt.pt() * (1 - cos(reco::deltaPhi(boost_ele.Phi(), ersatzMEt.phi()))));
820  }
821  if (corr == 3) {
822  //Z_caloV3_m_[iComb_] = Zboson.M();
823  //Z_caloV3_pt_[iComb_] = Zboson.Pt();
824  //Z_caloV3_y_[iComb_] = Zboson.Y();
825  //Z_caloV3_eta_[iComb_] = Zboson.Eta();
826  //Z_caloV3_phi_[iComb_] = Zboson.Phi();
827  //Z_caloV3_rescM_[iComb_] = RescZboson.M();
828  //Z_caloV3_rescPt_[iComb_] = RescZboson.Pt();
829  //Z_caloV3_rescY_[iComb_] = RescZboson.Y();
830  //Z_caloV3_rescEta_[iComb_] = RescZboson.Eta();
831  //Z_caloV3_rescPhi_[iComb_] = RescZboson.Phi();
832  //Z_caloV3_probe_dPhi_[iComb_] = reco::deltaPhi(Zboson.Phi(), boost_elec->phi());
833  //tag_caloV3_rescPt_[iComb_] = boost_ele.Pt();
834  //tag_caloV3_rescEta_[iComb_] = boost_ele.Eta();
835  //tag_caloV3_rescPhi_[iComb_] = boost_ele.Phi();
836  //probe_caloV3_rescPt_[iComb_] = boost_nu.Pt();
837  //probe_caloV3_rescEta_[iComb_] = boost_nu.Eta();
838  //probe_caloV3_rescPhi_[iComb_] = boost_nu.Phi();
839  ErsatzV3_Mesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(elec->p4(), boost_nu);
840  ErsatzV3_rescMesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(ele, nu);
842  sqrt(2. * boost_ele.Pt() * ersatzMEt.pt() * (1 - cos(reco::deltaPhi(boost_ele.Phi(), ersatzMEt.phi()))));
843  }
844  if (corr == 4) {
845  //Z_caloV4_m_[iComb_] = Zboson.M();
846  //Z_caloV4_pt_[iComb_] = Zboson.Pt();
847  //Z_caloV4_y_[iComb_] = Zboson.Y();
848  //Z_caloV4_eta_[iComb_] = Zboson.Eta();
849  //Z_caloV4_phi_[iComb_] = Zboson.Phi();
850  //Z_caloV4_rescM_[iComb_] = RescZboson.M();
851  //Z_caloV4_rescPt_[iComb_] = RescZboson.Pt();
852  //Z_caloV4_rescY_[iComb_] = RescZboson.Y();
853  //Z_caloV4_rescEta_[iComb_] = RescZboson.Eta();
854  //Z_caloV4_rescPhi_[iComb_] = RescZboson.Phi();
855  //Z_caloV4_probe_dPhi_[iComb_] = reco::deltaPhi(Zboson.Phi(), boost_elec->phi());
856  //tag_caloV4_rescPt_[iComb_] = boost_ele.Pt();
857  //tag_caloV4_rescEta_[iComb_] = boost_ele.Eta();
858  //tag_caloV4_rescPhi_[iComb_] = boost_ele.Phi();
859  //probe_caloV4_rescPt_[iComb_] = boost_nu.Pt();
860  //probe_caloV4_rescEta_[iComb_] = boost_nu.Eta();
861  //probe_caloV4_rescPhi_[iComb_] = boost_nu.Phi();
862  ErsatzV4_Mesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(elec->p4(), boost_nu);
863  ErsatzV4_rescMesc_[iComb_] = ROOT::Math::VectorUtil::InvariantMass(ele, nu);
865  sqrt(2. * boost_ele.Pt() * ersatzMEt.pt() * (1 - cos(reco::deltaPhi(boost_ele.Phi(), ersatzMEt.phi()))));
866  }
867  return ersatzMEt;
868 }
869 
871  const reco::GsfElectronRef& probe,
872  const reco::MET& met) {
873  math::XYZTLorentzVector elec, nu, boost_elec, boost_nu;
874  boost_elec = tag->p4();
875  edm::LogDebug_("ersatzFabrikV1", "", 858) << "boost_elec = (" << boost_elec.Px() << ", " << boost_elec.Py() << ", "
876  << boost_elec.Pz() << ", " << boost_elec.E() << ")";
877  boost_nu = probe->p4();
878  edm::LogDebug_("ersatzFabrikV1", "", 860) << "boost_nu = (" << boost_nu.Px() << ", " << boost_nu.Py() << ", "
879  << boost_nu.Pz() << ", " << boost_nu.E() << ")";
880  math::XYZTLorentzVector Zboson = boost_elec + boost_nu;
881  edm::LogDebug_("ersatzFabrikV1", "", 862)
882  << "Zboson = (" << Zboson.Px() << ", " << Zboson.Py() << ", " << Zboson.Pz() << ", " << Zboson.E() << ")";
883  math::XYZTLorentzVector RescZboson(
884  Zboson.Px(), Zboson.Py(), Zboson.Pz(), sqrt(Zboson.P2() + (mW_ * mW_ * Zboson.M2()) / (mZ_ * mZ_)));
885  edm::LogDebug_("ersatzFabrikV1", "", 864) << "RescZboson = (" << RescZboson.Px() << ", " << RescZboson.Py() << ", "
886  << RescZboson.Pz() << ", " << RescZboson.E() << ")";
887  ROOT::Math::Boost BoostToZRestFrame(Zboson.BoostToCM());
888  elec = BoostToZRestFrame(boost_elec);
889  edm::LogDebug_("ersatzFabrikV1", "", 867) << "boost_elec (in Z rest frame) = (" << elec.Px() << ", " << elec.Py()
890  << ", " << elec.Pz() << ", " << elec.E() << ")";
891  nu = BoostToZRestFrame(boost_nu);
892  edm::LogDebug_("ersatzFabrikV1", "", 869)
893  << "boost_nu (in Z rest frame) = (" << nu.Px() << ", " << nu.Py() << ", " << nu.Pz() << ", " << nu.E() << ")";
894  elec *= mW_ / mZ_;
895  edm::LogDebug_("ersatzFabrikV1", "", 871)
896  << "elec (in Z rest frame) = (" << elec.Px() << ", " << elec.Py() << ", " << elec.Pz() << ", " << elec.E() << ")";
897  nu *= mW_ / mZ_;
898  edm::LogDebug_("ersatzFabrikV1", "", 873)
899  << "nu (in Z rest frame) = (" << nu.Px() << ", " << nu.Py() << ", " << nu.Pz() << ", " << nu.E() << ")";
900  ROOT::Math::Boost BoostBackToLab(
901  RescZboson.Px() / RescZboson.E(), RescZboson.Py() / RescZboson.E(), RescZboson.Pz() / RescZboson.E());
902  math::XYZTLorentzVector metVec(-99999., -99999., -99., -99999.);
903  elec = BoostBackToLab(elec);
904  edm::LogDebug_("ersatzFabrikV1", "", 877)
905  << "elec = (" << elec.Px() << ", " << elec.Py() << ", " << elec.Pz() << ", " << elec.E() << ")";
906  nu = BoostBackToLab(nu);
907  edm::LogDebug_("ersatzFabrikV1", "", 879)
908  << "nu = (" << nu.Px() << ", " << nu.Py() << ", " << nu.Pz() << ", " << nu.E() << ")";
909  Z_m_[iComb_] = Zboson.M();
910  Z_pt_[iComb_] = Zboson.Pt();
911  Z_y_[iComb_] = Zboson.Y();
912  Z_eta_[iComb_] = Zboson.Eta();
913  Z_phi_[iComb_] = Zboson.Phi();
914  Z_rescM_[iComb_] = RescZboson.M();
915  Z_rescPt_[iComb_] = RescZboson.Pt();
916  Z_rescY_[iComb_] = RescZboson.Y();
917  Z_rescEta_[iComb_] = RescZboson.Eta();
918  Z_rescPhi_[iComb_] = RescZboson.Phi();
919  Z_probe_dPhi_[iComb_] = reco::deltaPhi(Zboson.Phi(), boost_elec.phi());
920  tag_rescPt_[iComb_] = elec.Pt();
921  tag_rescEta_[iComb_] = elec.Eta();
922  tag_rescPhi_[iComb_] = elec.Phi();
923  probe_rescPt_[iComb_] = nu.Pt();
924  probe_rescEta_[iComb_] = nu.Eta();
925  probe_rescPhi_[iComb_] = nu.Phi();
926  elec.SetXYZT(elec.X(), elec.Y(), 0., elec.T());
927  nu.SetXYZT(nu.X(), nu.Y(), 0., nu.T());
928  boost_elec.SetXYZT(boost_elec.X(), boost_elec.Y(), 0., boost_elec.T());
929  metVec = met.p4() + nu + elec - boost_elec;
930  reco::MET ersatzMEt(metVec, met.vertex());
931  return ersatzMEt;
932 }
933 
934 bool ErsatzMEt::isInBarrel(double eta) { return (fabs(eta) < BarrelEtaMax_); }
935 
936 bool ErsatzMEt::isInEndCap(double eta) { return (fabs(eta) < EndCapEtaMax_ && fabs(eta) > EndCapEtaMin_); }
937 
939 
940 // ------------ method called once each job just after ending the event loop ------------
942 //define this as a plug-in
ErsatzMEt::tag_hoe_
double tag_hoe_[4]
Definition: ErsatzMEt.h:174
reco::CaloCluster::phi
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:184
reco::Candidate::daughter
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode)
ErsatzMEt::tag_eta_
double tag_eta_[4]
Definition: ErsatzMEt.h:165
ErsatzMEt::McZ_eta_
double McZ_eta_
Definition: ErsatzMEt.h:160
ErsatzMEt.h
ErsatzMEt::T1MEt_
double T1MEt_
Definition: ErsatzMEt.h:157
ErsatzMEt::ErsatzV1CaloMEt_
double ErsatzV1CaloMEt_[4]
Definition: ErsatzMEt.h:186
reco::PFMETCollection
std::vector< reco::PFMET > PFMETCollection
collection of PFMET objects
Definition: PFMETCollection.h:20
ErsatzMEt::~ErsatzMEt
~ErsatzMEt() override
Definition: ErsatzMEt.cc:66
ErsatzMEt::Z_probe_dPhi_
double Z_probe_dPhi_[4]
Definition: ErsatzMEt.h:185
ErsatzMEt::probe_q_
int probe_q_[4]
Definition: ErsatzMEt.h:175
mps_fire.i
i
Definition: mps_fire.py:355
ErsatzMEt::tag_dEtaIn_
double tag_dEtaIn_[4]
Definition: ErsatzMEt.h:171
ErsatzMEt::TcMEt_
double TcMEt_
Definition: ErsatzMEt.h:157
fEtaScCorr
reco::SuperCluster fEtaScCorr(const reco::SuperCluster &sc)
Definition: SCEnergyCorrections.h:8
ErsatzMEt::McProbe_pt_
double McProbe_pt_[4]
Definition: ErsatzMEt.h:200
ErsatzMEt::McZ_rescM_
double McZ_rescM_
Definition: ErsatzMEt.h:161
ErsatzMEt::TcMEtphi_
double TcMEtphi_
Definition: ErsatzMEt.h:158
ErsatzMEt::probe_sc_pt_
double probe_sc_pt_[4]
Definition: ErsatzMEt.h:205
ErsatzMEt::hyb_fCorrPSet_
edm::ParameterSet hyb_fCorrPSet_
Definition: ErsatzMEt.h:125
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
ErsatzMEt::McElec_rescPhi_
double McElec_rescPhi_[4]
Definition: ErsatzMEt.h:199
ErsatzMEt::ErsatzV3_Mesc_
double ErsatzV3_Mesc_[4]
Definition: ErsatzMEt.h:195
edm::Handle::product
T const * product() const
Definition: Handle.h:70
ErsatzMEt::McElec_pt_
double McElec_pt_[4]
Definition: ErsatzMEt.h:198
ErsatzMEt::probe_scV2_E_
double probe_scV2_E_[4]
Definition: ErsatzMEt.h:207
ErsatzMEt::ErsatzV1_rescMesc_
double ErsatzV1_rescMesc_[4]
Definition: ErsatzMEt.h:193
ErsatzMEt::mZ_
double mZ_
Definition: ErsatzMEt.h:126
reco::SuperCluster::clustersSize
size_t clustersSize() const
number of BasicCluster constituents
Definition: SuperCluster.h:98
ErsatzMEt::McZ_y_
double McZ_y_
Definition: ErsatzMEt.h:160
reco::SuperCluster
Definition: SuperCluster.h:18
ErsatzMEt::McZ_m_
double McZ_m_
Definition: ErsatzMEt.h:160
ErsatzMEt::McZ_rescEta_
double McZ_rescEta_
Definition: ErsatzMEt.h:161
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
ErsatzMEt::McProbe_rescEta_
double McProbe_rescEta_[4]
Definition: ErsatzMEt.h:201
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
ErsatzMEt::tag_hcalIso_
double tag_hcalIso_[4]
Definition: ErsatzMEt.h:172
ErsatzMEt::McZ_rescY_
double McZ_rescY_
Definition: ErsatzMEt.h:161
ErsatzMEt::probe_eop_
double probe_eop_[4]
Definition: ErsatzMEt.h:181
edm::LogDebug_
Definition: MessageLogger.h:510
ErsatzMEt::tag_phi_
double tag_phi_[4]
Definition: ErsatzMEt.h:165
ErsatzMEt::ErsatzV2CaloMEtPhi_
double ErsatzV2CaloMEtPhi_[4]
Definition: ErsatzMEt.h:187
gather_cfg.cout
cout
Definition: gather_cfg.py:144
ErsatzMEt::GenMEtCollection_
edm::EDGetTokenT< reco::GenMETCollection > GenMEtCollection_
Definition: ErsatzMEt.h:116
ErsatzMEt::Z_rescEta_
double Z_rescEta_[4]
Definition: ErsatzMEt.h:183
ErsatzMEt::m5x5_fCorrPSet_
edm::ParameterSet m5x5_fCorrPSet_
Definition: ErsatzMEt.h:125
edm::LogInfo
Definition: MessageLogger.h:254
ErsatzMEt::probe_scV3_E_
double probe_scV3_E_[4]
Definition: ErsatzMEt.h:208
reco::GenParticleCollection
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
Definition: GenParticleFwd.h:13
ErsatzMEt::ErsatzV4CaloMEt_
double ErsatzV4CaloMEt_[4]
Definition: ErsatzMEt.h:189
ErsatzMEt::Zevent_
bool Zevent_
Definition: ErsatzMEt.h:148
ErsatzMEt::ErsatzV1CaloMt_
double ErsatzV1CaloMt_[4]
Definition: ErsatzMEt.h:186
ErsatzMEt::probe_e5x5_
double probe_e5x5_[4]
Definition: ErsatzMEt.h:180
ErsatzMEt::EB_EcalIso_
Definition: ErsatzMEt.h:135
nEntries_arr_
#define nEntries_arr_
Definition: AnalysisErsatz.h:62
ErsatzMEt::probe_sc_rawE_
double probe_sc_rawE_[4]
Definition: ErsatzMEt.h:206
ErsatzMEt::PfMEtphi_
double PfMEtphi_
Definition: ErsatzMEt.h:158
reco::Candidate::status
virtual int status() const =0
status word
reco::GsfElectronCollection
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
Definition: GsfElectronFwd.h:14
ErsatzMEt::McProbe_rescPhi_
double McProbe_rescPhi_[4]
Definition: ErsatzMEt.h:201
CaloTopologyRecord
Definition: CaloTopologyRecord.h:10
ErsatzMEt::ErsatzV3CaloMt_
double ErsatzV3CaloMt_[4]
Definition: ErsatzMEt.h:188
reco::LeafCandidate::pt
double pt() const final
transverse momentum
Definition: LeafCandidate.h:146
edm::Event::triggerNames
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:264
ErsatzMEt::probe_rescPhi_
double probe_rescPhi_[4]
Definition: ErsatzMEt.h:177
ErsatzMEt::Z_phi_
double Z_phi_[4]
Definition: ErsatzMEt.h:182
ErsatzMEt::EE_dEtaIn_
Definition: ErsatzMEt.h:138
ErsatzMEt::ErsatzV1PfMt_
double ErsatzV1PfMt_[4]
Definition: ErsatzMEt.h:191
ErsatzMEt::HLTPathCheck_
bool HLTPathCheck_
Definition: ErsatzMEt.h:148
reco::Candidate::mother
virtual const Candidate * mother(size_type i=0) const =0
return pointer to mother
edm::Handle< reco::GenParticleCollection >
ErsatzMEt::McElec_eta_
double McElec_eta_[4]
Definition: ErsatzMEt.h:198
ErsatzMEt::probe_ecalIso_
double probe_ecalIso_[4]
Definition: ErsatzMEt.h:179
ErsatzMEt::McElecProbe_dR_
double McElecProbe_dR_[4]
Definition: ErsatzMEt.h:202
ErsatzMEt::tag_q_
int tag_q_[4]
Definition: ErsatzMEt.h:164
electronSelector
std::vector< reco::GsfElectronRef > electronSelector(const std::vector< reco::GsfElectronRef > &electrons, const edm::Handle< trigger::TriggerEvent > &pHLT, const int filterId, const std::vector< double > &Cuts)
Definition: ElectronSelector.h:8
edm::Ref
Definition: AssociativeIterator.h:58
BTaggingMonitor_cfi.met
met
Definition: BTaggingMonitor_cfi.py:84
ErsatzMEt::mW_
double mW_
Definition: ErsatzMEt.h:126
ErsatzMEt::mTPmax_
double mTPmax_
Definition: ErsatzMEt.h:126
ErsatzMEt::BarrelEtaMax_
double BarrelEtaMax_
Definition: ErsatzMEt.h:127
ErsatzMEt::McProbe_eta_
double McProbe_eta_[4]
Definition: ErsatzMEt.h:200
reco::METCollection
std::vector< reco::MET > METCollection
collection of MET objects
Definition: METCollection.h:22
ErsatzMEt::probe_pin_
double probe_pin_[4]
Definition: ErsatzMEt.h:181
ErsatzMEt::CutVector_
std::vector< double > CutVector_
Definition: ErsatzMEt.h:145
ErsatzMEt::tag_pin_
double tag_pin_[4]
Definition: ErsatzMEt.h:174
ErsatzMEt::ErsatzV1_Mesc_
double ErsatzV1_Mesc_[4]
Definition: ErsatzMEt.h:193
fBremScCorr
reco::SuperCluster fBremScCorr(const reco::SuperCluster &sc, const edm::ParameterSet &ps)
Definition: SCEnergyCorrections.h:24
reco::MET
Definition: MET.h:41
ErsatzMEt::McElec_nZmum_
int McElec_nZmum_
Definition: ErsatzMEt.h:159
tnp::TagProbePairs
std::vector< TagProbePair > TagProbePairs
Definition: TagProbePairMaker.h:27
ErsatzMEt::TriggerPath_
edm::InputTag TriggerPath_
Definition: ErsatzMEt.h:123
ErsatzMEt::tag_pout_
double tag_pout_[4]
Definition: ErsatzMEt.h:174
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
ErsatzMEt::EE_dPhiIn_
Definition: ErsatzMEt.h:139
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
ErsatzMEt::PfMEtCollection_
edm::EDGetTokenT< reco::PFMETCollection > PfMEtCollection_
Definition: ErsatzMEt.h:119
ErsatzMEt::probe_rescPt_
double probe_rescPt_[4]
Definition: ErsatzMEt.h:177
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
ErsatzMEt::ErsatzV3_rescMesc_
double ErsatzV3_rescMesc_[4]
Definition: ErsatzMEt.h:195
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
edm::HLTGlobalStatus::size
unsigned int size() const
Get number of paths stored.
Definition: HLTGlobalStatus.h:35
L1TEGammaOffline_cfi.triggerNames
triggerNames
Definition: L1TEGammaOffline_cfi.py:40
alignCSCRings.corr
dictionary corr
Definition: alignCSCRings.py:124
PVValHelper::eta
Definition: PVValidationHelpers.h:69
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
ErsatzMEt::EtCut_
Definition: ErsatzMEt.h:130
ErsatzMEt::Z_y_
double Z_y_[4]
Definition: ErsatzMEt.h:182
ErsatzMEt::ErsatzV1CaloMEtPhi_
double ErsatzV1CaloMEtPhi_[4]
Definition: ErsatzMEt.h:186
ErsatzMEt::EE_HcalIso_
Definition: ErsatzMEt.h:142
uniqueElectronFinder
std::vector< reco::GsfElectronRef > uniqueElectronFinder(edm::Handle< reco::GsfElectronCollection > &pElectrons)
Definition: UniqueElectrons.h:5
ErsatzMEt::probe_scV4_E_
double probe_scV4_E_[4]
Definition: ErsatzMEt.h:209
ErsatzMEt::ErsatzV2CaloMt_
double ErsatzV2CaloMt_[4]
Definition: ErsatzMEt.h:187
ErsatzMEt::EE_TrckIso_
Definition: ErsatzMEt.h:140
reco::Candidate::numberOfDaughters
virtual size_type numberOfDaughters() const =0
number of daughters
ErsatzMEt::Z_eta_
double Z_eta_[4]
Definition: ErsatzMEt.h:182
ErsatzMEt::pTopology_
edm::ESHandle< CaloTopology > pTopology_
Definition: ErsatzMEt.h:153
ErsatzMEt::M5x5ScCollection_
edm::EDGetTokenT< reco::SuperClusterCollection > M5x5ScCollection_
Definition: ErsatzMEt.h:115
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
ErsatzMEt::McProbe_phi_
double McProbe_phi_[4]
Definition: ErsatzMEt.h:200
ErsatzMEt::CaloMEt_
double CaloMEt_
Definition: ErsatzMEt.h:157
ErsatzMEt::probe_eta_
double probe_eta_[4]
Definition: ErsatzMEt.h:176
ErsatzMEt::tag_sIhIh_
double tag_sIhIh_[4]
Definition: ErsatzMEt.h:171
ErsatzMEt::MCTruthCollection_
edm::EDGetTokenT< reco::GenParticleCollection > MCTruthCollection_
Definition: ErsatzMEt.h:112
ErsatzMEt::tag_e2x5Max_
double tag_e2x5Max_[4]
Definition: ErsatzMEt.h:173
ErsatzMEt::probe_phi_
double probe_phi_[4]
Definition: ErsatzMEt.h:176
ErsatzMEt::EB_HcalIso_
Definition: ErsatzMEt.h:136
ErsatzMEt::McZ_rescPhi_
double McZ_rescPhi_
Definition: ErsatzMEt.h:161
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ErsatzMEt::T1MEtphi_
double T1MEtphi_
Definition: ErsatzMEt.h:158
ErsatzMEt::McElec_rescPt_
double McElec_rescPt_[4]
Definition: ErsatzMEt.h:199
ErsatzMEt::geoHandle_
edm::ESHandle< CaloGeometry > geoHandle_
Definition: ErsatzMEt.h:152
ErsatzMEt::tag_trckIso_
double tag_trckIso_[4]
Definition: ErsatzMEt.h:172
ErsatzMEt::ErsatzV1TcMt_
double ErsatzV1TcMt_[4]
Definition: ErsatzMEt.h:192
edm::ParameterSet
Definition: ParameterSet.h:36
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::LogError
Definition: MessageLogger.h:183
ErsatzMEt::probe_dEtaIn_
double probe_dEtaIn_[4]
Definition: ErsatzMEt.h:178
ErsatzMEt::McZ_phi_
double McZ_phi_
Definition: ErsatzMEt.h:160
reco::CaloCluster::eta
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
ErsatzMEt::ErsatzV4_rescMesc_
double ErsatzV4_rescMesc_[4]
Definition: ErsatzMEt.h:196
ErsatzMEt::probe_pt_
double probe_pt_[4]
Definition: ErsatzMEt.h:176
ErsatzMEt::ErsatzV1TcMEt_
double ErsatzV1TcMEt_[4]
Definition: ErsatzMEt.h:192
ErsatzMEt::ErsatzV3CaloMEt_
double ErsatzV3CaloMEt_[4]
Definition: ErsatzMEt.h:188
ErsatzMEt::probe_sc_phi_
double probe_sc_phi_[4]
Definition: ErsatzMEt.h:205
ErsatzMEt::tag_dPhiIn_
double tag_dPhiIn_[4]
Definition: ErsatzMEt.h:171
ErsatzMEt::probeFinder
std::map< reco::GsfElectronRef, reco::GsfElectronRef > probeFinder(const std::vector< reco::GsfElectronRef > &, const edm::Handle< reco::GsfElectronCollection >)
Definition: ErsatzMEt.cc:685
ErsatzMEt::tag_ecalIso_
double tag_ecalIso_[4]
Definition: ErsatzMEt.h:172
ErsatzMEt::EB_TrckIso_
Definition: ErsatzMEt.h:134
ErsatzMEt::probe_e2x5Max_
double probe_e2x5Max_[4]
Definition: ErsatzMEt.h:180
ErsatzMEt::ErsatzV1T1MEtPhi_
double ErsatzV1T1MEtPhi_[4]
Definition: ErsatzMEt.h:190
ErsatzMEt::tag_e1x5Max_
double tag_e1x5Max_[4]
Definition: ErsatzMEt.h:173
ErsatzMEt::McProbe_rescPt_
double McProbe_rescPt_[4]
Definition: ErsatzMEt.h:201
ErsatzMEt::TcMEtCollection_
edm::EDGetTokenT< reco::METCollection > TcMEtCollection_
Definition: ErsatzMEt.h:120
ErsatzMEt::isInBarrel
bool isInBarrel(double)
Definition: ErsatzMEt.cc:934
edm::Service< TFileService >
TriggerNames.h
ErsatzMEt::endJob
void endJob() override
Definition: ErsatzMEt.cc:941
ErsatzMEt::Z_rescM_
double Z_rescM_[4]
Definition: ErsatzMEt.h:183
trigger::TriggerEvent::filterIndex
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:132
ErsatzMEt::ErsatzV2CaloMEt_
double ErsatzV2CaloMEt_[4]
Definition: ErsatzMEt.h:187
ErsatzMEt::probe_sIhIh_
double probe_sIhIh_[4]
Definition: ErsatzMEt.h:178
ErsatzMEt::EE_sIhIh_
Definition: ErsatzMEt.h:137
ErsatzMEt::CaloMEtphi_
double CaloMEtphi_
Definition: ErsatzMEt.h:158
ErsatzMEt::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: ErsatzMEt.cc:212
ErsatzMEt::McZ_rescPt_
double McZ_rescPt_
Definition: ErsatzMEt.h:161
ErsatzMEt::probe_pout_
double probe_pout_[4]
Definition: ErsatzMEt.h:181
edm::EventSetup
Definition: EventSetup.h:57
ErsatzMEt::probe_hcalIso_
double probe_hcalIso_[4]
Definition: ErsatzMEt.h:179
get
#define get
ErsatzMEt::nProbes_
int nProbes_
Definition: ErsatzMEt.h:156
ErsatzMEt::McElec_nFinal_
int McElec_nFinal_
Definition: ErsatzMEt.h:159
reco::Candidate::pdgId
virtual int pdgId() const =0
PDG identifier.
ErsatzMEt::ersatzFabrik
reco::MET ersatzFabrik(const reco::GsfElectronRef &, const reco::SuperCluster &, const reco::MET &, const int)
Definition: ErsatzMEt.cc:716
ErsatzMEt::EB_dEtaIn_
Definition: ErsatzMEt.h:132
ErsatzMEt::beginJob
void beginJob() override
Definition: ErsatzMEt.cc:69
ErsatzMEt::Z_rescY_
double Z_rescY_[4]
Definition: ErsatzMEt.h:183
reco::Candidate
Definition: Candidate.h:27
ErsatzMEt::ErsatzV4_Mesc_
double ErsatzV4_Mesc_[4]
Definition: ErsatzMEt.h:196
ErsatzMEt::probe_sc_nClus_
double probe_sc_nClus_[4]
Definition: ErsatzMEt.h:206
ErsatzMEt::Z_rescPhi_
double Z_rescPhi_[4]
Definition: ErsatzMEt.h:183
PhysicsVectorRaw
math::XYZTLorentzVector PhysicsVectorRaw(const math::XYZPoint &vertex, const reco::SuperCluster &sc)
Definition: CaloVectors.h:33
ErsatzMEt::McElec_rescEta_
double McElec_rescEta_[4]
Definition: ErsatzMEt.h:199
DDAxes::phi
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
ErsatzMEt::McElecProbe_dPhi_
double McElecProbe_dPhi_[4]
Definition: ErsatzMEt.h:202
ErsatzMEt::McElec_phi_
double McElec_phi_[4]
Definition: ErsatzMEt.h:198
ErsatzMEt::probe_trckIso_
double probe_trckIso_[4]
Definition: ErsatzMEt.h:179
ErsatzMEt::ErsatzV1PfMEt_
double ErsatzV1PfMEt_[4]
Definition: ErsatzMEt.h:191
ErsatzMEt::probe_e1x5Max_
double probe_e1x5Max_[4]
Definition: ErsatzMEt.h:180
ErsatzMEt::tag_pt_
double tag_pt_[4]
Definition: ErsatzMEt.h:165
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
ErsatzMEt::TriggerEvent_
edm::EDGetTokenT< trigger::TriggerEvent > TriggerEvent_
Definition: ErsatzMEt.h:121
ErsatzMEt::isInEndCap
bool isInEndCap(double)
Definition: ErsatzMEt.cc:936
ErsatzMEt::t_
TTree * t_
Definition: ErsatzMEt.h:155
ErsatzMEt::EndCapEtaMin_
double EndCapEtaMin_
Definition: ErsatzMEt.h:127
ErsatzMEt::ErsatzV4CaloMEtPhi_
double ErsatzV4CaloMEtPhi_[4]
Definition: ErsatzMEt.h:189
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
ErsatzMEt::tag_rescPt_
double tag_rescPt_[4]
Definition: ErsatzMEt.h:170
ErsatzMEt::probe_rescEta_
double probe_rescEta_[4]
Definition: ErsatzMEt.h:177
ErsatzMEt::ErsatzV2_rescMesc_
double ErsatzV2_rescMesc_[4]
Definition: ErsatzMEt.h:194
reco::SuperCluster::rawEnergy
double rawEnergy() const
raw uncorrected energy (sum of energies of component BasicClusters)
Definition: SuperCluster.h:58
DetectorVector
math::XYZTLorentzVector DetectorVector(const reco::SuperClusterRef &sc)
Definition: CaloVectors.h:6
edm::TriggerNames
Definition: TriggerNames.h:55
ErsatzMEt::TriggerName_
std::string TriggerName_
Definition: ErsatzMEt.h:124
ErsatzMEt::mTPmin_
double mTPmin_
Definition: ErsatzMEt.h:126
ErsatzMEt::isInFiducial
bool isInFiducial(double)
Definition: ErsatzMEt.cc:938
ErsatzMEt::Z_pt_
double Z_pt_[4]
Definition: ErsatzMEt.h:182
ErsatzMEt::nTags_
int nTags_
Definition: ErsatzMEt.h:156
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
ErsatzMEt::HybridScCollection_
edm::EDGetTokenT< reco::SuperClusterCollection > HybridScCollection_
Definition: ErsatzMEt.h:114
reco::Candidate::p4
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
ErsatzMEt::ElectronCollection_
edm::EDGetTokenT< reco::GsfElectronCollection > ElectronCollection_
Definition: ErsatzMEt.h:113
edm::HLTGlobalStatus::accept
bool accept() const
Has at least one path accepted the event?
Definition: HLTGlobalStatus.h:49
triggerMatcherToHLTDebug_cfi.tags
tags
Definition: triggerMatcherToHLTDebug_cfi.py:9
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
ErsatzMEt::ErsatzV3CaloMEtPhi_
double ErsatzV3CaloMEtPhi_[4]
Definition: ErsatzMEt.h:188
ErsatzMEt::tag_rescEta_
double tag_rescEta_[4]
Definition: ErsatzMEt.h:170
ErsatzMEt::Z_rescPt_
double Z_rescPt_[4]
Definition: ErsatzMEt.h:183
ztail.d
d
Definition: ztail.py:151
ErsatzMEt::ErsatzV2_Mesc_
double ErsatzV2_Mesc_[4]
Definition: ErsatzMEt.h:194
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ErsatzMEt::ErsatzV1T1Mt_
double ErsatzV1T1Mt_[4]
Definition: ErsatzMEt.h:190
ErsatzMEt::tag_e5x5_
double tag_e5x5_[4]
Definition: ErsatzMEt.h:173
reco::CaloMETCollection
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
Definition: CaloMETCollection.h:20
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
ErsatzMEt::ErsatzV4CaloMt_
double ErsatzV4CaloMt_[4]
Definition: ErsatzMEt.h:189
ErsatzMEt::ErsatzMEt
ErsatzMEt(const edm::ParameterSet &)
Definition: ErsatzMEt.cc:4
ErsatzMEt::probe_sc_eta_
double probe_sc_eta_[4]
Definition: ErsatzMEt.h:205
ErsatzMEt::ErsatzV1TcMEtPhi_
double ErsatzV1TcMEtPhi_[4]
Definition: ErsatzMEt.h:192
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
ErsatzMEt::ErsatzV1T1MEt_
double ErsatzV1T1MEt_[4]
Definition: ErsatzMEt.h:190
edm::Event
Definition: Event.h:73
ErsatzMEt::EndCapEtaMax_
double EndCapEtaMax_
Definition: ErsatzMEt.h:127
ErsatzMEt::PfMEt_
double PfMEt_
Definition: ErsatzMEt.h:157
ErsatzMEt::probe_sc_E_
double probe_sc_E_[4]
Definition: ErsatzMEt.h:206
ErsatzMEt
Definition: ErsatzMEt.h:90
ErsatzMEt::tag_eop_
double tag_eop_[4]
Definition: ErsatzMEt.h:174
ErsatzMEt::EB_sIhIh_
Definition: ErsatzMEt.h:131
ErsatzMEt::ErsatzV1PfMEtPhi_
double ErsatzV1PfMEtPhi_[4]
Definition: ErsatzMEt.h:191
ErsatzMEt::probe_hoe_
double probe_hoe_[4]
Definition: ErsatzMEt.h:181
ErsatzMEt::TriggerResults_
edm::EDGetTokenT< edm::TriggerResults > TriggerResults_
Definition: ErsatzMEt.h:122
reco::CaloCluster::energy
double energy() const
cluster energy
Definition: CaloCluster.h:149
edm::InputTag
Definition: InputTag.h:15
ErsatzMEt::probe_d_MCE_SCE_
double probe_d_MCE_SCE_[4]
Definition: ErsatzMEt.h:204
ErsatzMEt::CaloMEtCollection_
edm::EDGetTokenT< reco::CaloMETCollection > CaloMEtCollection_
Definition: ErsatzMEt.h:117
edm::TriggerResults
Definition: TriggerResults.h:35
ErsatzMEt::McZ_pt_
double McZ_pt_
Definition: ErsatzMEt.h:160
TFileService::make
T * make(const Args &... args) const
make new ROOT object
Definition: TFileService.h:64
ErsatzMEt::EE_EcalIso_
Definition: ErsatzMEt.h:141
ErsatzMEt::tag_rescPhi_
double tag_rescPhi_[4]
Definition: ErsatzMEt.h:170
ErsatzMEt::iComb_
int iComb_
Definition: ErsatzMEt.h:211
ErsatzMEt::EB_dPhiIn_
Definition: ErsatzMEt.h:133
ErsatzMEt::Z_m_
double Z_m_[4]
Definition: ErsatzMEt.h:182
ErsatzMEt::probe_dPhiIn_
double probe_dPhiIn_[4]
Definition: ErsatzMEt.h:178
ErsatzMEt::McElecProbe_dEta_
double McElecProbe_dEta_[4]
Definition: ErsatzMEt.h:202