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