CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PATMHTProducer.cc
Go to the documentation of this file.
1 //
2 //
3 
5 
7 
8  // Initialize the configurables
9  verbose_ = iConfig.getParameter<double>("verbose");
10 
11  jetToken_ = consumes<edm::View<pat::Jet> >(iConfig.getUntrackedParameter<edm::InputTag>("jetTag"));
12  eleToken_ = consumes<edm::View<pat::Electron> >(iConfig.getUntrackedParameter<edm::InputTag>("electronTag"));
13  muoToken_ = consumes<edm::View<pat::Muon> >(iConfig.getUntrackedParameter<edm::InputTag>("muonTag"));
14  tauToken_ = consumes<edm::View<pat::Tau> >(iConfig.getUntrackedParameter<edm::InputTag>("tauTag"));
15  phoToken_ = consumes<edm::View<pat::Photon> >(iConfig.getUntrackedParameter<edm::InputTag>("photonTag"));
16 
17  uncertaintyScaleFactor_ = iConfig.getParameter<double>( "uncertaintyScaleFactor") ;
18  controlledUncertainty_ = iConfig.getParameter<bool>( "controlledUncertainty") ;
19 
20  jetPtMin_ = iConfig.getParameter<double>("jetPtMin");
21  jetEtaMax_ = iConfig.getParameter<double>("jetEtaMax");
22  jetEMfracMax_ = iConfig.getParameter<double>("jetEMfracMax");
23  elePtMin_ = iConfig.getParameter<double>("elePtMin");
24  eleEtaMax_ = iConfig.getParameter<double>("eleEtaMax");
25  muonPtMin_ = iConfig.getParameter<double>("muonPtMin");
26  muonEtaMax_ = iConfig.getParameter<double>("muonEtaMax");
27 
28  jetEtUncertaintyParameter0_ = iConfig.getParameter<double>( "jetEtUncertaintyParameter0") ;
29  jetEtUncertaintyParameter1_ = iConfig.getParameter<double>( "jetEtUncertaintyParameter1") ;
30  jetEtUncertaintyParameter2_ = iConfig.getParameter<double>( "jetEtUncertaintyParameter2") ;
31  jetPhiUncertaintyParameter0_= iConfig.getParameter<double>( "jetPhiUncertaintyParameter0");
32  jetPhiUncertaintyParameter1_= iConfig.getParameter<double>( "jetPhiUncertaintyParameter1");
33  jetPhiUncertaintyParameter2_= iConfig.getParameter<double>( "jetPhiUncertaintyParameter2");
34 
35  eleEtUncertaintyParameter0_ = iConfig.getParameter<double>( "eleEtUncertaintyParameter0") ;
36  elePhiUncertaintyParameter0_ = iConfig.getParameter<double>( "elePhiUncertaintyParameter0") ;
37 
38  muonEtUncertaintyParameter0_ = iConfig.getParameter<double>( "muonEtUncertaintyParameter0") ;
39  muonPhiUncertaintyParameter0_ = iConfig.getParameter<double>( "muonPhiUncertaintyParameter0") ;
40 
41  CaloTowerTag_ = iConfig.getParameter<edm::InputTag>("CaloTowerTag");
42  noHF_ = iConfig.getParameter<bool>( "noHF");
43 
44  // muonCalo_ = iConfig.getParameter<bool>("muonCalo");
45  towerEtThreshold_ = iConfig.getParameter<double>( "towerEtThreshold") ;
46  useHO_ = iConfig.getParameter<bool>("useHO");
47 
48  produces<pat::MHTCollection>();
49 
50 }
51 
52 
54 }
55 
57  setUncertaintyParameters();
58 }
60 }
61 
62 
63 void
65 {
66  // make sure the SigInputObj container is empty
67  while(physobjvector_.size()>0){
68  physobjvector_.erase(physobjvector_.begin(),physobjvector_.end());
69  }
70 
71  // Clean the clustered towers
72  s_clusteredTowers.clear();
73 
74  double number_of_jets = getJets(iEvent, iSetup);
75 
76  double number_of_electrons = getElectrons(iEvent, iSetup);
77 
78  double number_of_muons = getMuons(iEvent, iSetup);
79 
80  if (verbose_ == 1.) {
81  std::cout << ">>>---> Number of jets: " << number_of_jets << std::endl;
82  std::cout << ">>>---> Number of electrons: " << number_of_jets << std::endl;
83  std::cout << ">>>---> Number of muons: " << number_of_muons << std::endl;
84  }
85 
86  double met_x=0;
87  double met_y=0;
88  double met_et=0;
89  double met_phi=0;
90  double met_set=0;
91 
92 
93  std::auto_ptr<pat::MHTCollection> themetsigcoll (new pat::MHTCollection);
94 
95  if(physobjvector_.size() >= 1) { // Only when the vector is not empty
96 
97  // calculate the MHT significance
98 
99  metsig::significanceAlgo signifAlgo;
100  signifAlgo.addObjects(physobjvector_);
101  double significance = signifAlgo.significance(met_et,met_phi,met_set);
102 
103  met_x=met_et*cos(met_phi);
104  met_y=met_et*sin(met_phi);
105 
106  if (verbose_ == 1.) {
107  std::cout << ">>>----> MHT Sgificance = " << significance << std::endl;
108  }
109 
110  pat::MHT themetsigobj(reco::Particle::LorentzVector(met_x,met_y,0,met_et),met_set,significance);
111 
112 
113  // Store the number of jets, electrons, muons
114  themetsigobj.setNumberOfJets(number_of_jets);
115  themetsigobj.setNumberOfElectrons(number_of_electrons);
116  themetsigobj.setNumberOfMuons(number_of_muons);
117 
118  themetsigcoll->push_back(themetsigobj);
119 
120  } // If the vector is empty, just put empty product.
121 
122 
123  iEvent.put( themetsigcoll);
124 
125 
126 }
127 
128 // --------------------------------------------------
129 // Fill Input Vector with Jets
130 // --------------------------------------------------
131 double
133 
134  std::string objectname="jet";
135 
136  double number_of_jets_ = 0.0;
137 
139  iEvent.getByToken(jetToken_,jetHandle);
140  edm::View<pat::Jet> jets = *jetHandle;
141 
142  // Fill Input Vector with Jets
143  for(edm::View<pat::Jet>::const_iterator jet_iter = jets.begin(); jet_iter!=jets.end(); ++jet_iter){
144 
145  if( (jet_iter->pt() < jetPtMin_) ||
146  (TMath::Abs(jet_iter->eta()) > jetEtaMax_) ||
147  (jet_iter->emEnergyFraction() > jetEMfracMax_ ) )
148  continue;
149 
150  double jet_et = jet_iter->et();
151  double jet_phi = jet_iter->phi();
152 
153  if (verbose_ == 3.) {
154  std::cout << "jet pt : " << jet_iter->pt() << " eta : " << jet_iter->eta()
155  << " EMF: " << jet_iter->emEnergyFraction() << std::endl;
156  }
157 
158  double sigma_et, sigma_phi ;
159 
160  if (controlledUncertainty_) {
161  sigma_et = jetUncertainty.etUncertainty->Eval(jet_et);
162  sigma_phi = jetUncertainty.phiUncertainty->Eval(jet_et);
163  }
164  else {
165  sigma_et = 0.0 ; // jet_iter->resolutionEt();
166  sigma_phi = 0.0 ; //jet_iter->resolutionPhi();
167  }
168 
169  if (verbose_ == 3.) {
170  std::cout << "jet sigma_et : " << sigma_et << ", jet sigma_phi : " << sigma_phi << std::endl;
171  }
172 
173  if(sigma_et<=0 || sigma_phi<=0)
174  edm::LogWarning("PATMHTProducer") <<
175  " uncertainties for " << objectname <<
176  " are (et, phi): " << sigma_et << "," << sigma_phi << " (et,phi): " << jet_et << "," << jet_phi;
177  // try to read out the jet resolution from the root file at PatUtils
178  //-- Store jet for Significance Calculation --//
179 
180  if (uncertaintyScaleFactor_ != 1.0){
181  sigma_et = sigma_et * uncertaintyScaleFactor_;
182  sigma_phi = sigma_phi * uncertaintyScaleFactor_;
183  // edm::LogWarning("PATMHTProducer") << " using uncertainty scale factor: " << uncertaintyScaleFactor_ <<
184  //" , uncertainties for " << objectname <<" changed to (et, phi): " << sigma_et << "," << sigma_phi;
185  }
186 
187 
188  if (verbose_ == 101.) { // Study the Jets behavior
189 
190  std::cout << "v101> " << number_of_jets_ << " "
191  << jet_et << " " << sigma_et << " "
192  << jet_phi << " " << sigma_phi << std::endl;
193  }
194 
195 
196  metsig::SigInputObj tmp_jet(objectname,jet_et,jet_phi,sigma_et,sigma_phi);
197  physobjvector_.push_back(tmp_jet);
198  number_of_jets_ ++;
199 
200  //-- Store tower DetId's to be removed from Calo Tower sum later --//
201  std::vector<CaloTowerPtr> v_towers = jet_iter->getCaloConstituents();
202  //std::cout << "tower size = " << v_towers.size() << std::endl;
203 
204  for (unsigned int ii=0; ii < v_towers.size(); ii++) {
205  s_clusteredTowers.insert( (*v_towers.at(ii)).id() );
206  //std::cout << "tower id = " << (*v_towers.at(ii)).id() << std::endl;
207  }
208 
209  }
210 
211  if (verbose_ == 101.) { // Study the Jets behavior - seperate events
212  std::cout << "v101> --------------------------------------------" << std::endl;
213  }
214 
215  return number_of_jets_;
216 
217 }
218 
219 
220 // --------------------------------------------------
221 // Fill Input Vector with Electrons
222 // --------------------------------------------------
223 double
225 
226  std::string objectname="electron";
227 
228  double number_of_electrons_ = 0.0;
229 
230  // edm::ESHandle<CaloTowerConstituentsMap> cttopo;
231  // iSetup.get<IdealGeometryRecord>().get(cttopo);
232  // const CaloTowerConstituentsMap* caloTowerMap = cttopo.product();
233 
234  edm::Handle<edm::View<pat::Electron> > electronHandle;
235  iEvent.getByToken(eleToken_,electronHandle);
236  edm::View<pat::Electron> electrons = *electronHandle;
237  DetId nullDetId;
238 
239  // Fill Input Vector with Electrons
240  for(edm::View<pat::Electron>::const_iterator electron_iter = electrons.begin(); electron_iter!=electrons.end(); ++electron_iter){
241 
242  // Select electrons
243  if (electron_iter->et() < elePtMin_ ||
244  TMath::Abs(electron_iter->eta()) > eleEtaMax_ ) continue;
245 
246  if (verbose_ == 3.) {
247  std::cout << "electron pt = " << electron_iter->pt() << " eta : " << electron_iter->eta()
248  << std::endl;
249  }
250 
251  double electron_et = electron_iter->et();
252  double electron_phi = electron_iter->phi();
253 
254  double sigma_et, sigma_phi ;
255 
256  if (controlledUncertainty_) {
257  sigma_et = eleUncertainty.etUncertainty->Eval(electron_et);
258  sigma_phi = eleUncertainty.phiUncertainty->Eval(electron_et);
259  }
260  else {
261  sigma_et = 0.0; //electron_iter->resolutionEt();
262  sigma_phi = 0.0; // electron_iter->resolutionPhi();
263  }
264 
265  if (verbose_ == 3.) {
266  std::cout << "electron sigma_et : " << sigma_et << ", electron sigma_phi : " << sigma_phi
267  << std::endl;}
268 
269  if(sigma_et< 0 || sigma_phi< 0)
270  edm::LogWarning("PATMHTProducer") << " uncertainties for " << objectname
271  <<" are (et, phi): " << sigma_et
272  << "," << sigma_phi << " (et,phi): "
273  << electron_et << "," << electron_phi;
274 
275  if (uncertaintyScaleFactor_ != 1.0){
276  sigma_et = sigma_et * uncertaintyScaleFactor_;
277  sigma_phi = sigma_phi * uncertaintyScaleFactor_;
278  }
279 
280  metsig::SigInputObj tmp_electron(objectname,electron_et,electron_phi,sigma_et,sigma_phi);
281  physobjvector_.push_back(tmp_electron);
282  number_of_electrons_ ++;
283 
284  //-- Store tower DetId's to be removed from Calo Tower sum later --//
285  /*
286  const reco::SuperCluster& eleSC = *( electron_iter->superCluster() );
287 
288  std::vector<DetId> v_eleDetIds = eleSC.getHitsByDetId();
289 
290  //-- Convert cells to calo towers and add to set --//
291  for( std::vector<DetId>::iterator cellId = v_eleDetIds.begin();
292  cellId != v_eleDetIds.end();
293  cellId++) {
294 
295  CaloTowerDetId towerId = caloTowerMap->towerOf(*cellId);
296  if (towerId != nullDetId) {
297  //std::cout << ">>> electron towerId: " << towerId << std::endl;
298  std::pair<std::_Rb_tree_const_iterator<CaloTowerDetId>,bool> p1 = s_clusteredTowers.insert(towerId);
299  }
300  else
301  std::cerr<<"No matching tower found for electron cell!\n";
302  }
303 
304  */
305 
306  }
307 
308  return number_of_electrons_;
309 }
310 
311 
312 
313 // --------------------------------------------------
314 // Fill Input Vector with Muons
315 // --------------------------------------------------
316 
318 
319  std::string objectname="muon";
321  iEvent.getByToken(muoToken_,muonHandle);
322  edm::View<pat::Muon> muons = *muonHandle;
323 
324  if ( !muonHandle.isValid() ) {
325  std::cout << ">>> PATMHTSelector not valid muon Handle!" << std::endl;
326  return 0.0;
327  }
328 
329 
330  double number_of_muons_ = 0.0;
331 
332  for(edm::View<pat::Muon>::const_iterator muon_iter = muons.begin(); muon_iter!=muons.end(); ++muon_iter){
333 
334  if (muon_iter->pt() < muonPtMin_ || TMath::Abs(muon_iter->eta()) > muonEtaMax_ ) continue;
335 
336  if (verbose_ == 3.) {
337  std::cout << "muon pt = " << muon_iter->pt() << " eta : " << muon_iter->eta() << std::endl;
338  }
339 
340  double muon_pt = muon_iter->pt();
341  double muon_phi = muon_iter->phi();
342 
343  double sigma_et, sigma_phi ;
344 
345  if (controlledUncertainty_) {
346  sigma_et = muonUncertainty.etUncertainty->Eval(muon_pt);
347  sigma_phi = muonUncertainty.phiUncertainty->Eval(muon_pt);
348  }
349  else {
350  sigma_et = 0.0; //muon_iter->resolutionEt();
351  sigma_phi = 0.0; // muon_iter->resolutionPhi();
352  }
353 
354  if (verbose_ == 3.) {
355  std::cout << "muon sigma_et : " << sigma_et
356  << ", muon sigma_phi : " << sigma_phi
357  << std::endl;}
358 
359  if(sigma_et< 0 || sigma_phi< 0)
360  edm::LogWarning("PATMHTProducer") <<
361  " uncertainties for " << objectname << " are (et, phi): " << sigma_et << "," <<
362  sigma_phi << " (pt,phi): " << muon_pt << "," << muon_phi;
363 
364  if (uncertaintyScaleFactor_ != 1.0){
365  sigma_et = sigma_et * uncertaintyScaleFactor_;
366  sigma_phi = sigma_phi * uncertaintyScaleFactor_;
367  }
368 
369  metsig::SigInputObj tmp_muon(objectname,muon_pt,muon_phi,sigma_et,sigma_phi);
370  physobjvector_.push_back(tmp_muon);
371  number_of_muons_ ++;
372 
373  }// end Muon loop
374 
375  return number_of_muons_;
376 }
377 
378 
379 //=== Uncertainty Functions ===============================================
381 
382  // set the various functions here:
383 
384  //-- For Et functions, [0]= par_n, [1]=par_s, [2]= par_c ---//
385  //-- Ecal Uncertainty Functions ------------------------------------//
386  //-- From: FastSimulation/Calorimetry/data/HcalResponse.cfi --//
387  //-- Ecal Barrel --//
388  ecalEBUncertainty.etUncertainty = new TF1("ecalEBEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
389  ecalEBUncertainty.etUncertainty->SetParameter(0,0.2);
390  ecalEBUncertainty.etUncertainty->SetParameter(1,0.03);
391  ecalEBUncertainty.etUncertainty->SetParameter(2,0.005);
392 
393  ecalEBUncertainty.phiUncertainty = new TF1("ecalEBphiFunc","[0]*x",1);
394  ecalEBUncertainty.phiUncertainty->SetParameter(0,0.0174);
395 
396  //-- Ecal Endcap --//
397  ecalEEUncertainty.etUncertainty = new TF1("ecalEEEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
398  ecalEEUncertainty.etUncertainty->SetParameter(0,0.2);
399  ecalEEUncertainty.etUncertainty->SetParameter(1,0.03);
400  ecalEEUncertainty.etUncertainty->SetParameter(2,0.005);
401 
402  ecalEEUncertainty.phiUncertainty = new TF1("ecalEEphiFunc","[0]*x",1);
403  ecalEEUncertainty.phiUncertainty->SetParameter(0,0.087);
404 
405  //-- Hcal Uncertainty Functions --------------------------------------//
406  //-- From: FastSimulation/Calorimetry/data/HcalResponse.cfi --//
407  //-- Hcal Barrel --//
408  hcalHBUncertainty.etUncertainty = new TF1("hcalHBEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
409  hcalHBUncertainty.etUncertainty->SetParameter(0,0.);
410  hcalHBUncertainty.etUncertainty->SetParameter(1,1.22);
411  hcalHBUncertainty.etUncertainty->SetParameter(2,0.05);
412 
413  hcalHBUncertainty.phiUncertainty = new TF1("ecalHBphiFunc","[0]*x",1);
414  hcalHBUncertainty.phiUncertainty->SetParameter(0,0.087);
415 
416  //-- Hcal Endcap --//
417  hcalHEUncertainty.etUncertainty = new TF1("hcalHEEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
418  hcalHEUncertainty.etUncertainty->SetParameter(0,0.);
419  hcalHEUncertainty.etUncertainty->SetParameter(1,1.3);
420  hcalHEUncertainty.etUncertainty->SetParameter(2,0.05);
421 
422  hcalHEUncertainty.phiUncertainty = new TF1("ecalHEphiFunc","[0]*x",1);
423  hcalHEUncertainty.phiUncertainty->SetParameter(0,0.087);
424 
425  //-- Hcal Outer --//
426  hcalHOUncertainty.etUncertainty = new TF1("hcalHOEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
427  hcalHOUncertainty.etUncertainty->SetParameter(0,0.);
428  hcalHOUncertainty.etUncertainty->SetParameter(1,1.82);
429  hcalHOUncertainty.etUncertainty->SetParameter(2,0.09);
430 
431  hcalHOUncertainty.phiUncertainty = new TF1("ecalHOphiFunc","[0]*x",1);
432  hcalHOUncertainty.phiUncertainty->SetParameter(0,0.087);
433 
434  //-- Hcal Forward --//
435  hcalHFUncertainty.etUncertainty = new TF1("hcalHFEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
436  hcalHFUncertainty.etUncertainty->SetParameter(0,0.);
437  hcalHFUncertainty.etUncertainty->SetParameter(1,1.82);
438  hcalHFUncertainty.etUncertainty->SetParameter(2,0.09);
439 
440  hcalHFUncertainty.phiUncertainty = new TF1("ecalHFphiFunc","[0]*x",1);
441  hcalHFUncertainty.phiUncertainty->SetParameter(0,0.174);
442 
443  //--- Jet Uncertainty Functions --------------------------------------//
444  jetUncertainty.etUncertainty = new TF1("jetEtFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
445  //-- values from PTDR 1, ch 11.4 --//
446  jetUncertainty.etUncertainty->SetParameter(0, jetEtUncertaintyParameter0_);
447  jetUncertainty.etUncertainty->SetParameter(1, jetEtUncertaintyParameter1_);
448  jetUncertainty.etUncertainty->SetParameter(2, jetEtUncertaintyParameter2_);
449 
450 
451  //-- phi value from our own fits --//
452  //jetUncertainty.phiUncertainty = new TF1("jetPhiFunc","[0]*x",1);
453  //jetUncertainty.phiUncertainty->SetParameter(0, jetPhiUncertaintyParameter0_);
454 
455  //-- phi Functions and values from
456  // http://indico.cern.ch/getFile.py/access?contribId=9&sessionId=0&resId=0&materialId=slides&confId=46394
457  jetUncertainty.phiUncertainty = new TF1("jetPhiFunc","x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
458  jetUncertainty.phiUncertainty->SetParameter(0, jetPhiUncertaintyParameter0_);
459  jetUncertainty.phiUncertainty->SetParameter(1, jetPhiUncertaintyParameter1_);
460  jetUncertainty.phiUncertainty->SetParameter(2, jetPhiUncertaintyParameter2_);
461 
462 
463 
464  //-- Jet corrections are assumed not to have an error --//
465  /*jetCorrUncertainty.etUncertainty = new TF1("jetCorrEtFunc","[0]*x",1);
466  jetCorrUncertainty.etUncertainty->SetParameter(0,0.0);
467  jetCorrUncertainty.phiUncertainty = new TF1("jetCorrPhiFunc","[0]*x",1);
468  jetCorrUncertainty.phiUncertainty->SetParameter(0,0.0*(3.14159/180.));*/
469 
470 
471  //--- Electron Uncertainty Functions ---------------------------------//
472  // completely ambiguious values for electron-like jets...
473  // the egamma group keeps track of these here:
474  // https://twiki.cern.ch/twiki/bin/view/CMS/EgammaCMSSWVal
475  // electron resolution in energy is around 3.4%, measured for 10 < pT < 50 at realistic events with pile-up.
476 
477  eleUncertainty.etUncertainty = new TF1("eleEtFunc","[0] * x",1);
478  // eleUncertainty.etUncertainty->SetParameter(0,0.034);
479  eleUncertainty.etUncertainty->SetParameter(0, eleEtUncertaintyParameter0_);
480 
481 
482  eleUncertainty.phiUncertainty = new TF1("elePhiFunc","[0] * x",1);
483  // eleUncertainty.phiUncertainty->SetParameter(0,1*(3.14159/180.));
484  eleUncertainty.phiUncertainty->SetParameter(0, elePhiUncertaintyParameter0_);
485 
486  //--- Muon Uncertainty Functions ------------------------------------//
487  // and ambiguious values for the muons...
488 
489  muonUncertainty.etUncertainty = new TF1("muonEtFunc","[0] * x",1);
490  // muonUncertainty.etUncertainty->SetParameter(0,0.01);
491  muonUncertainty.etUncertainty->SetParameter(0, muonEtUncertaintyParameter0_);
492  muonUncertainty.phiUncertainty = new TF1("muonPhiFunc","[0] * x",1);
493  // muonUncertainty.phiUncertainty->SetParameter(0,1*(3.14159/180.));
494  muonUncertainty.phiUncertainty->SetParameter(0, muonPhiUncertaintyParameter0_);
495 
496  //-- Muon calo deposites are assumed not to have an error --//
497  /*muonCorrUncertainty.etUncertainty = new TF1("muonCorrEtFunc","[0] * x",1);
498  muonCorrUncertainty.etUncertainty->SetParameter(0,0.0);
499  muonCorrUncertainty.phiUncertainty = new TF1("muonCorrPhiFunc","[0] * x",1);
500  muonCorrUncertainty.phiUncertainty->SetParameter(0,0.0*(3.14159/180.)); */
501 
502 }
503 
504 
505 using namespace pat;
507 
T getParameter(std::string const &) const
const void addObjects(const std::vector< metsig::SigInputObj > &EventVec)
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::View< pat::Photon > > phoToken_
double eleEtUncertaintyParameter0_
void setNumberOfMuons(const double &numberOfMuons)
Definition: MHT.cc:4
double getJets(edm::Event &, const edm::EventSetup &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
double muonPhiUncertaintyParameter0_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
const double significance(double &met_r, double &met_phi, double &met_set)
void setNumberOfJets(const double &numberOfJets)
Definition: MHT.cc:16
edm::EDGetTokenT< edm::View< pat::Muon > > muoToken_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
double jetEtUncertaintyParameter1_
double elePhiUncertaintyParameter0_
double jetEtUncertaintyParameter2_
Definition: MHT.h:10
int ii
Definition: cuy.py:588
double jetPhiUncertaintyParameter2_
double getMuons(edm::Event &, const edm::EventSetup &)
int iEvent
Definition: GenABIO.cc:230
const_iterator begin() const
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
edm::EDGetTokenT< edm::View< pat::Tau > > tauToken_
std::vector< JetPair > getJets(HWW &hww, int, double, double, bool, bool)
vector< PseudoJet > jets
double muonEtUncertaintyParameter0_
PATMHTProducer(const edm::ParameterSet &)
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
T Abs(T a)
Definition: MathUtil.h:49
std::vector< pat::MHT > MHTCollection
Definition: MHT.h:41
bool isValid() const
Definition: HandleBase.h:75
double getElectrons(edm::Event &, const edm::EventSetup &)
Definition: DetId.h:18
edm::EDGetTokenT< edm::View< pat::Electron > > eleToken_
double uncertaintyScaleFactor_
edm::InputTag CaloTowerTag_
double jetPhiUncertaintyParameter1_
virtual void produce(edm::Event &, const edm::EventSetup &) override
double jetPhiUncertaintyParameter0_
tuple muons
Definition: patZpeak.py:38
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
virtual void endJob()
edm::EDGetTokenT< edm::View< pat::Jet > > jetToken_
virtual void beginJob()
tuple cout
Definition: gather_cfg.py:121
const_iterator end() const
double jetEtUncertaintyParameter0_
void setNumberOfElectrons(const double &numberOfElectrons)
Definition: MHT.cc:27
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21