CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
pat::PATMHTProducer Class Reference

#include <PATMHTProducer.h>

Inheritance diagram for pat::PATMHTProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Classes

class  uncertaintyFunctions
 

Public Member Functions

 PATMHTProducer (const edm::ParameterSet &)
 
 ~PATMHTProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

virtual void beginJob ()
 
virtual void beginRun (const edm::EventSetup &)
 
virtual void endJob ()
 
double getElectrons (edm::Event &, const edm::EventSetup &)
 
double getJets (edm::Event &, const edm::EventSetup &)
 
double getMuons (edm::Event &, const edm::EventSetup &)
 
void getTowers (edm::Event &, const edm::EventSetup &)
 
virtual void produce (edm::Event &, const edm::EventSetup &)
 
void setUncertaintyParameters ()
 

Private Attributes

edm::InputTag CaloJetAlgorithmTag_
 
edm::InputTag CaloTowerTag_
 
bool controlledUncertainty_
 
edm::InputTag CorJetAlgorithmTag_
 
uncertaintyFunctions ecalEBUncertainty
 
uncertaintyFunctions ecalEEUncertainty
 
edm::InputTag ElectronTag_
 
double eleEtaMax_
 
double eleEtUncertaintyParameter0_
 
edm::InputTag eleLabel_
 
double elePhiUncertaintyParameter0_
 
double elePtMin_
 
uncertaintyFunctions eleUncertainty
 
uncertaintyFunctions hcalHBUncertainty
 
uncertaintyFunctions hcalHEUncertainty
 
uncertaintyFunctions hcalHFUncertainty
 
uncertaintyFunctions hcalHOUncertainty
 
std::string JetCorrectionService_
 
uncertaintyFunctions jetCorrUncertainty
 
double jetEMfracMax_
 
double jetEtaMax_
 
double jetEtUncertaintyParameter0_
 
double jetEtUncertaintyParameter1_
 
double jetEtUncertaintyParameter2_
 
edm::InputTag jetLabel_
 
double jetPhiUncertaintyParameter0_
 
double jetPhiUncertaintyParameter1_
 
double jetPhiUncertaintyParameter2_
 
double jetPtMin_
 
uncertaintyFunctions jetUncertainty
 
std::string metCollectionLabel_
 
edm::InputTag mhtLabel_
 
edm::InputTag muoLabel_
 
double muonChiSqMax_
 
uncertaintyFunctions muonCorrUncertainty
 
double muonDPtMax_
 
double muonEtaMax_
 
double muonEtUncertaintyParameter0_
 
int muonNHitsMin_
 
double muonPhiUncertaintyParameter0_
 
double muonPtMin_
 
edm::InputTag MuonTag_
 
double muonTrackD0Max_
 
double muonTrackDzMax_
 
uncertaintyFunctions muonUncertainty
 
bool noHF_
 
edm::InputTag phoLabel_
 
std::vector< metsig::SigInputObjphysobjvector_
 
std::set< CaloTowerDetIds_clusteredTowers
 
std::string significanceLabel_
 
edm::InputTag tauLabel_
 
double towerEtThreshold_
 
double uncertaintyScaleFactor_
 
bool useCaloTowers_
 
bool useElectrons_
 
bool useHO_
 
bool useJets_
 
bool useMuons_
 
double verbose_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 66 of file PATMHTProducer.h.

Constructor & Destructor Documentation

PATMHTProducer::PATMHTProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 7 of file PATMHTProducer.cc.

References CaloTowerTag_, controlledUncertainty_, eleEtaMax_, eleEtUncertaintyParameter0_, eleLabel_, elePhiUncertaintyParameter0_, elePtMin_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), jetEMfracMax_, jetEtaMax_, jetEtUncertaintyParameter0_, jetEtUncertaintyParameter1_, jetEtUncertaintyParameter2_, jetLabel_, jetPhiUncertaintyParameter0_, jetPhiUncertaintyParameter1_, jetPhiUncertaintyParameter2_, jetPtMin_, muoLabel_, muonEtaMax_, muonEtUncertaintyParameter0_, muonPhiUncertaintyParameter0_, muonPtMin_, noHF_, phoLabel_, tauLabel_, towerEtThreshold_, uncertaintyScaleFactor_, useHO_, and verbose_.

7  {
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 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
double eleEtUncertaintyParameter0_
edm::InputTag eleLabel_
double muonPhiUncertaintyParameter0_
double jetEtUncertaintyParameter1_
double elePhiUncertaintyParameter0_
double jetEtUncertaintyParameter2_
edm::InputTag jetLabel_
double jetPhiUncertaintyParameter2_
double muonEtUncertaintyParameter0_
double uncertaintyScaleFactor_
edm::InputTag CaloTowerTag_
double jetPhiUncertaintyParameter1_
double jetPhiUncertaintyParameter0_
edm::InputTag tauLabel_
double jetEtUncertaintyParameter0_
edm::InputTag muoLabel_
edm::InputTag phoLabel_
PATMHTProducer::~PATMHTProducer ( )

Definition at line 54 of file PATMHTProducer.cc.

54  {
55 }

Member Function Documentation

void PATMHTProducer::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDProducer.

Definition at line 57 of file PATMHTProducer.cc.

57  {
59 }
void PATMHTProducer::beginRun ( const edm::EventSetup iSetup)
privatevirtual

Definition at line 60 of file PATMHTProducer.cc.

60  {
61 }
void PATMHTProducer::endJob ( void  )
privatevirtual

Reimplemented from edm::EDProducer.

Definition at line 63 of file PATMHTProducer.cc.

63  {
64 }
double PATMHTProducer::getElectrons ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
private

Definition at line 228 of file PATMHTProducer.cc.

References edm::View< T >::begin(), gather_cfg::cout, HI_PhotonSkim_cff::electrons, edm::View< T >::end(), and edm::Event::getByLabel().

228  {
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 
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 }
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
edm::InputTag eleLabel_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
Definition: DetId.h:20
std::vector< metsig::SigInputObj > physobjvector_
double uncertaintyScaleFactor_
const_iterator begin() const
tuple cout
Definition: gather_cfg.py:121
const_iterator end() const
uncertaintyFunctions eleUncertainty
double PATMHTProducer::getJets ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
private

Definition at line 136 of file PATMHTProducer.cc.

References edm::View< T >::begin(), gather_cfg::cout, edm::View< T >::end(), edm::Event::getByLabel(), and fwrapper::jets.

136  {
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 
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 }
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
uncertaintyFunctions jetUncertainty
edm::InputTag jetLabel_
vector< PseudoJet > jets
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
std::vector< metsig::SigInputObj > physobjvector_
double uncertaintyScaleFactor_
const_iterator begin() const
tuple cout
Definition: gather_cfg.py:121
const_iterator end() const
std::set< CaloTowerDetId > s_clusteredTowers
double PATMHTProducer::getMuons ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
private

Definition at line 321 of file PATMHTProducer.cc.

References edm::View< T >::begin(), gather_cfg::cout, edm::View< T >::end(), edm::Event::getByLabel(), edm::HandleBase::isValid(), and patZpeak::muons.

321  {
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 
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 }
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
uncertaintyFunctions muonUncertainty
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
std::vector< metsig::SigInputObj > physobjvector_
double uncertaintyScaleFactor_
tuple muons
Definition: patZpeak.py:38
const_iterator begin() const
tuple cout
Definition: gather_cfg.py:121
const_iterator end() const
edm::InputTag muoLabel_
void pat::PATMHTProducer::getTowers ( edm::Event ,
const edm::EventSetup  
)
private
void PATMHTProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements edm::EDProducer.

Definition at line 68 of file PATMHTProducer.cc.

References metsig::significanceAlgo::addObjects(), funct::cos(), gather_cfg::cout, edm::Event::put(), pat::MHT::setNumberOfElectrons(), pat::MHT::setNumberOfJets(), pat::MHT::setNumberOfMuons(), metsig::significanceAlgo::significance(), and funct::sin().

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 }
const void addObjects(const std::vector< metsig::SigInputObj > &EventVec)
double getJets(edm::Event &, const edm::EventSetup &)
const double significance(double &met_r, double &met_phi, double &met_set)
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Definition: MHT.h:10
double getMuons(edm::Event &, const edm::EventSetup &)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
std::vector< pat::MHT > MHTCollection
Definition: MHT.h:41
double getElectrons(edm::Event &, const edm::EventSetup &)
std::vector< metsig::SigInputObj > physobjvector_
tuple cout
Definition: gather_cfg.py:121
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:25
std::set< CaloTowerDetId > s_clusteredTowers
void PATMHTProducer::setUncertaintyParameters ( )
private

Definition at line 384 of file PATMHTProducer.cc.

384  {
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 --//
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);
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);
484 
485 
486  eleUncertainty.phiUncertainty = new TF1("elePhiFunc","[0] * x",1);
487  // eleUncertainty.phiUncertainty->SetParameter(0,1*(3.14159/180.));
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);
496  muonUncertainty.phiUncertainty = new TF1("muonPhiFunc","[0] * x",1);
497  // muonUncertainty.phiUncertainty->SetParameter(0,1*(3.14159/180.));
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 }
double eleEtUncertaintyParameter0_
uncertaintyFunctions hcalHEUncertainty
double muonPhiUncertaintyParameter0_
uncertaintyFunctions muonUncertainty
uncertaintyFunctions ecalEEUncertainty
uncertaintyFunctions jetUncertainty
double jetEtUncertaintyParameter1_
double elePhiUncertaintyParameter0_
double jetEtUncertaintyParameter2_
double jetPhiUncertaintyParameter2_
uncertaintyFunctions hcalHBUncertainty
double muonEtUncertaintyParameter0_
uncertaintyFunctions hcalHFUncertainty
double jetPhiUncertaintyParameter1_
double jetPhiUncertaintyParameter0_
uncertaintyFunctions ecalEBUncertainty
double jetEtUncertaintyParameter0_
uncertaintyFunctions hcalHOUncertainty
uncertaintyFunctions eleUncertainty

Member Data Documentation

edm::InputTag pat::PATMHTProducer::CaloJetAlgorithmTag_
private

Definition at line 164 of file PATMHTProducer.h.

edm::InputTag pat::PATMHTProducer::CaloTowerTag_
private

Definition at line 169 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

bool pat::PATMHTProducer::controlledUncertainty_
private

Definition at line 98 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

edm::InputTag pat::PATMHTProducer::CorJetAlgorithmTag_
private

Definition at line 165 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::ecalEBUncertainty
private

Definition at line 110 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::ecalEEUncertainty
private

Definition at line 111 of file PATMHTProducer.h.

edm::InputTag pat::PATMHTProducer::ElectronTag_
private

Definition at line 168 of file PATMHTProducer.h.

double pat::PATMHTProducer::eleEtaMax_
private

Definition at line 138 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::eleEtUncertaintyParameter0_
private

Definition at line 158 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

edm::InputTag pat::PATMHTProducer::eleLabel_
private

Definition at line 90 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::elePhiUncertaintyParameter0_
private

Definition at line 159 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::elePtMin_
private

Definition at line 137 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

uncertaintyFunctions pat::PATMHTProducer::eleUncertainty
private

Definition at line 119 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::hcalHBUncertainty
private

Definition at line 112 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::hcalHEUncertainty
private

Definition at line 113 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::hcalHFUncertainty
private

Definition at line 115 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::hcalHOUncertainty
private

Definition at line 114 of file PATMHTProducer.h.

std::string pat::PATMHTProducer::JetCorrectionService_
private

Definition at line 166 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::jetCorrUncertainty
private

Definition at line 118 of file PATMHTProducer.h.

double pat::PATMHTProducer::jetEMfracMax_
private

Definition at line 135 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetEtaMax_
private

Definition at line 134 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetEtUncertaintyParameter0_
private

Definition at line 150 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetEtUncertaintyParameter1_
private

Definition at line 151 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetEtUncertaintyParameter2_
private

Definition at line 152 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

edm::InputTag pat::PATMHTProducer::jetLabel_
private

Definition at line 89 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetPhiUncertaintyParameter0_
private

Definition at line 154 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetPhiUncertaintyParameter1_
private

Definition at line 155 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetPhiUncertaintyParameter2_
private

Definition at line 156 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::jetPtMin_
private

Definition at line 133 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

uncertaintyFunctions pat::PATMHTProducer::jetUncertainty
private

Definition at line 117 of file PATMHTProducer.h.

std::string pat::PATMHTProducer::metCollectionLabel_
private

Definition at line 170 of file PATMHTProducer.h.

edm::InputTag pat::PATMHTProducer::mhtLabel_
private

Definition at line 88 of file PATMHTProducer.h.

edm::InputTag pat::PATMHTProducer::muoLabel_
private

Definition at line 91 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::muonChiSqMax_
private

Definition at line 146 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::muonCorrUncertainty
private

Definition at line 121 of file PATMHTProducer.h.

double pat::PATMHTProducer::muonDPtMax_
private

Definition at line 145 of file PATMHTProducer.h.

double pat::PATMHTProducer::muonEtaMax_
private

Definition at line 141 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::muonEtUncertaintyParameter0_
private

Definition at line 161 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

int pat::PATMHTProducer::muonNHitsMin_
private

Definition at line 144 of file PATMHTProducer.h.

double pat::PATMHTProducer::muonPhiUncertaintyParameter0_
private

Definition at line 162 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::muonPtMin_
private

Definition at line 140 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

edm::InputTag pat::PATMHTProducer::MuonTag_
private

Definition at line 167 of file PATMHTProducer.h.

double pat::PATMHTProducer::muonTrackD0Max_
private

Definition at line 142 of file PATMHTProducer.h.

double pat::PATMHTProducer::muonTrackDzMax_
private

Definition at line 143 of file PATMHTProducer.h.

uncertaintyFunctions pat::PATMHTProducer::muonUncertainty
private

Definition at line 120 of file PATMHTProducer.h.

bool pat::PATMHTProducer::noHF_
private

Definition at line 131 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

edm::InputTag pat::PATMHTProducer::phoLabel_
private

Definition at line 93 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

std::vector<metsig::SigInputObj> pat::PATMHTProducer::physobjvector_
private

Definition at line 95 of file PATMHTProducer.h.

std::set<CaloTowerDetId> pat::PATMHTProducer::s_clusteredTowers
private

Definition at line 129 of file PATMHTProducer.h.

std::string pat::PATMHTProducer::significanceLabel_
private

Definition at line 171 of file PATMHTProducer.h.

edm::InputTag pat::PATMHTProducer::tauLabel_
private

Definition at line 92 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::towerEtThreshold_
private

Definition at line 177 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::uncertaintyScaleFactor_
private

Definition at line 97 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

bool pat::PATMHTProducer::useCaloTowers_
private

Definition at line 125 of file PATMHTProducer.h.

bool pat::PATMHTProducer::useElectrons_
private

Definition at line 127 of file PATMHTProducer.h.

bool pat::PATMHTProducer::useHO_
private

Definition at line 178 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

bool pat::PATMHTProducer::useJets_
private

Definition at line 126 of file PATMHTProducer.h.

bool pat::PATMHTProducer::useMuons_
private

Definition at line 128 of file PATMHTProducer.h.

double pat::PATMHTProducer::verbose_
private

Definition at line 85 of file PATMHTProducer.h.

Referenced by PATMHTProducer().