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