CMS 3D CMS Logo

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