CMS 3D CMS Logo

pat::PATMHTProducer Class Reference

#include <PhysicsTools/PatAlgos/plugins/PATMHTProducer.h>

Inheritance diagram for pat::PATMHTProducer:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 PATMHTProducer (const edm::ParameterSet &)
 ~PATMHTProducer ()

Private Member Functions

virtual void beginJob (const edm::EventSetup &)
virtual void beginRun (const edm::EventSetup &)
virtual void endJob ()
virtual void produce (edm::Event &, const edm::EventSetup &)

Private Attributes

edm::InputTag eleLabel_
edm::InputTag jetLabel_
edm::InputTag mhtLabel_
edm::InputTag muoLabel_
edm::InputTag phoLabel_
std::vector< metsig::SigInputObjphysobjvector_
edm::InputTag tauLabel_
double uncertaintyScaleFactor_


Detailed Description

Definition at line 60 of file PATMHTProducer.h.


Constructor & Destructor Documentation

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

Definition at line 8 of file PATMHTProducer.cc.

References eleLabel_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), jetLabel_, muoLabel_, phoLabel_, tauLabel_, and uncertaintyScaleFactor_.

00008                                                                 {
00009 
00010   // Initialize the configurables
00011   jetLabel_ = iConfig.getUntrackedParameter<edm::InputTag>("jetTag");
00012   eleLabel_ = iConfig.getUntrackedParameter<edm::InputTag>("electronTag");
00013   muoLabel_ = iConfig.getUntrackedParameter<edm::InputTag>("muonTag");
00014   tauLabel_ = iConfig.getUntrackedParameter<edm::InputTag>("tauTag");
00015   phoLabel_ = iConfig.getUntrackedParameter<edm::InputTag>("photonTag");
00016   
00017   uncertaintyScaleFactor_ = iConfig.getParameter<double>( "uncertaintyScaleFactor") ;
00018 
00019   produces<pat::MHTCollection>();
00020 
00021 }

PATMHTProducer::~PATMHTProducer (  ) 

Definition at line 24 of file PATMHTProducer.cc.

00024                                    {
00025 }


Member Function Documentation

void PATMHTProducer::beginJob ( const edm::EventSetup iSetup  )  [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 27 of file PATMHTProducer.cc.

00027                                                             {
00028 }

void PATMHTProducer::beginRun ( const edm::EventSetup iSetup  )  [private, virtual]

Definition at line 29 of file PATMHTProducer.cc.

00029                                                             {
00030 }

void PATMHTProducer::endJob ( void   )  [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 32 of file PATMHTProducer.cc.

00032                                {
00033 }

void PATMHTProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDProducer.

Definition at line 36 of file PATMHTProducer.cc.

References metsig::ASignificance(), edm::View< T >::begin(), funct::cos(), eleLabel_, edm::View< T >::end(), lat::endl(), edm::Event::getByLabel(), jetLabel_, pfTauBenchmarkGeneric_cfi::jets, muoLabel_, muons_cfi::muons, physobjvector_, edm::Event::put(), funct::sin(), funct::sqrt(), and uncertaintyScaleFactor_.

00036                                                                                {
00037   // make sure the SigInputObj container is empty
00038   while(physobjvector_.size()>0){
00039     physobjvector_.erase(physobjvector_.begin(),physobjvector_.end());
00040 
00041   }
00042   // Get the jet object
00043 
00044   edm::Handle<edm::View<pat::Jet> > jetHandle;
00045   iEvent.getByLabel(jetLabel_,jetHandle);
00046   edm::View<pat::Jet> jets = *jetHandle;
00047 
00048   // Fill Input Vector with Jets 
00049   std::string objectname="";
00050   for(edm::View<pat::Jet>::const_iterator jet_iter = jets.begin(); jet_iter!=jets.end(); ++jet_iter){
00051     double jet_et = jet_iter->et();
00052     double jet_phi = jet_iter->phi();
00053     double sigma_et = 0.;// no longer valid: jet_iter->resolutionEt();
00054     double sigma_phi =  0.;// no longer valid: jet_iter->resolutionPhi();
00055     objectname="jet";
00056     if(sigma_et<=0 || sigma_phi<=0)
00057       edm::LogWarning("PATMHTProducer") << 
00058         " uncertainties for "  << objectname <<
00059         " are (et, phi): " << sigma_et << "," << sigma_phi << " (et,phi): " << jet_et << "," << jet_phi;
00060     // try to read out the jet resolution from the root file at PatUtils
00061     //-- Store jet for Significance Calculation --//
00062     
00063     if (uncertaintyScaleFactor_ != 1.0){
00064       sigma_et  = sigma_et  * uncertaintyScaleFactor_;
00065       sigma_phi = sigma_phi * uncertaintyScaleFactor_;
00066       // edm::LogWarning("PATMHTProducer") << " using uncertainty scale factor: " << uncertaintyScaleFactor_ <<
00067       //" , uncertainties for " << objectname <<" changed to (et, phi): " << sigma_et << "," << sigma_phi; 
00068     }
00069 
00070     metsig::SigInputObj tmp_jet(objectname,jet_et,jet_phi,sigma_et,sigma_phi);
00071     physobjvector_.push_back(tmp_jet);
00072      
00073   }
00074 
00075   edm::Handle<edm::View<pat::Electron> > electronHandle;
00076   iEvent.getByLabel(eleLabel_,electronHandle);
00077   edm::View<pat::Electron> electrons = *electronHandle;
00078 
00079   // Fill Input Vector with Electrons 
00080   for(edm::View<pat::Electron>::const_iterator electron_iter = electrons.begin(); electron_iter!=electrons.end(); ++electron_iter){
00081     double electron_et = electron_iter->et();
00082     double electron_phi = electron_iter->phi();
00083     double sigma_et = 0.;// no longer valid:  electron_iter->resolutionEt();
00084     double sigma_phi = 0.;// no longer valid:  electron_iter->resolutionPhi();
00085     objectname="electron";
00086     if(sigma_et<=0 || sigma_phi<=0)
00087       edm::LogWarning("PATMHTProducer") <<
00088         " uncertainties for "  << objectname <<
00089         " are (et, phi): " << sigma_et << "," << sigma_phi << 
00090         " (et,phi): " << electron_et << "," << electron_phi;
00091     // try to read out the electron resolution from the root file at PatUtils
00092     //-- Store electron for Significance Calculation --//
00093     
00094     if (uncertaintyScaleFactor_ != 1.0){
00095       sigma_et  = sigma_et  * uncertaintyScaleFactor_;
00096       sigma_phi = sigma_phi * uncertaintyScaleFactor_;
00097       // edm::LogWarning("PATMHTProducer") << " using uncertainty scale factor: " << uncertaintyScaleFactor_ <<
00098       //" , uncertainties for " << objectname <<" changed to (et, phi): " << sigma_et << "," << sigma_phi; 
00099     }
00100 
00101 
00102     metsig::SigInputObj tmp_electron(objectname,electron_et,electron_phi,sigma_et,sigma_phi);
00103     physobjvector_.push_back(tmp_electron);
00104      
00105   }
00106 
00107   edm::Handle<edm::View<pat::Muon> > muonHandle;
00108   iEvent.getByLabel(muoLabel_,muonHandle);
00109   edm::View<pat::Muon> muons = *muonHandle;
00110 
00111   // Fill Input Vector with Muons 
00112   for(edm::View<pat::Muon>::const_iterator muon_iter = muons.begin(); muon_iter!=muons.end(); ++muon_iter){
00113     double muon_pt = muon_iter->pt();
00114     double muon_phi = muon_iter->phi();
00115     double sigma_et = 0.;// no longer valid:  muon_iter->resolutionEt();
00116     double sigma_phi = 0.;// no longer valid:  muon_iter->resolutionPhi();
00117     objectname="muon";
00118     if(sigma_et<=0 || sigma_phi<=0)
00119       edm::LogWarning("PATMHTProducer") << 
00120         " uncertainties for "  << objectname << 
00121         " are (et, phi): " << sigma_et << "," <<
00122         sigma_phi << " (pt,phi): " << muon_pt << "," << muon_phi;
00123     // try to read out the muon resolution from the root file at PatUtils
00124     //-- Store muon for Significance Calculation --//
00125 
00126     if (uncertaintyScaleFactor_ != 1.0){
00127       sigma_et  = sigma_et  * uncertaintyScaleFactor_;
00128       sigma_phi = sigma_phi * uncertaintyScaleFactor_;
00129       //edm::LogWarning("PATMHTProducer") << " using uncertainty scale factor: " << uncertaintyScaleFactor_ <<
00130       //" , uncertainties for " << objectname <<" changed to (et, phi): " << sigma_et << "," << sigma_phi; 
00131     }
00132 
00133     metsig::SigInputObj tmp_muon(objectname,muon_pt,muon_phi,sigma_et,sigma_phi);
00134     physobjvector_.push_back(tmp_muon);
00135      
00136   }
00137   
00138   /* We'll deal with photons and taus later for sure :)
00139 
00140 
00141   edm::Handle<edm::View<pat::Photon> > photonHandle;
00142   iEvent.getByLabel(phoLabel_,photonHandle);
00143   edm::View<pat::Photon> photons = *photonHandle;
00144 
00145   // Fill Input Vector with Photons 
00146   for(edm::View<pat::Photon>::const_iterator photon_iter = photons.begin(); photon_iter!=photons.end(); ++photon_iter){
00147     double photon_et = photon_iter->et();
00148     double photon_phi = photon_iter->phi();
00149     double sigma_et = 0.;// no longer valid:  photon_iter->resolutionEt();
00150     double sigma_phi = 0.;// no longer valid:  photon_iter->resolutionPhi();
00151     objectname="photon";
00152     if(sigma_et<=0 || sigma_phi<=0)
00153       edm::LogWarning("PATMHTProducer") << " uncertainties for "  << objectname << " are (et, phi): " << sigma_et << "," << sigma_phi << " (et,phi): " << photon_et << "," << photon_phi;
00154     // try to read out the photon resolution from the root file at PatUtils
00155     //-- Store photon for Significance Calculation --//
00156     metsig::SigInputObj tmp_photon(objectname,photon_et,photon_phi,sigma_et,sigma_phi);
00157     physobjvector_.push_back(tmp_photon);
00158      
00159   }
00160 
00161   edm::Handle<edm::View<pat::Tau> > tauHandle;
00162   iEvent.getByLabel(tauLabel_,tauHandle);
00163   edm::View<pat::Tau> taus = *tauHandle;
00164 
00165   // Fill Input Vector with Taus 
00166   for(edm::View<pat::Tau>::const_iterator tau_iter = taus.begin(); tau_iter!=taus.end(); ++tau_iter){
00167     double tau_pt = tau_iter->pt();
00168     double tau_phi = tau_iter->phi();
00169     double sigma_et =  0.;// no longer valid: tau_iter->resolutionEt();
00170     double sigma_phi =  0.;// no longer valid: tau_iter->resolutionPhi();
00171     objectname="tau";
00172     if(sigma_et<=0 || sigma_phi<=0)
00173       edm::LogWarning("PATMHTProducer") << " uncertainties for "  << objectname << " are (et, phi): " << sigma_et << "," << sigma_phi << " (pt,phi): " << tau_pt << "," << tau_phi;
00174     // try to read out the tau resolution from the root file at PatUtils
00175     //-- Store tau for Significance Calculation --//
00176     metsig::SigInputObj tmp_tau(objectname,tau_pt,tau_phi,sigma_et,sigma_phi);
00177     physobjvector_.push_back(tmp_tau);
00178      
00179   }
00180   
00181   */
00182 
00183 
00184   double met_x=0;
00185   double met_y=0;
00186   double met_et=0;
00187   double met_phi=0;
00188   double met_set=0;
00189   
00190   // calculate the significance
00191 
00192   double significance = ASignificance(physobjvector_, met_et, met_phi, met_set);
00193   met_x=met_et*cos(met_phi);
00194   met_y=met_et*sin(met_phi);
00195   edm::LogInfo("PATMHTProducer")    << " met x,y: " << met_x << "," << met_y << " met_set: " << met_set << " met_et/sqrt(met_set): " << met_et/sqrt(met_set) << " met_phi: " << met_phi << " met_et: " << met_et << " met_et/sqrt(x,y): " << met_et/sqrt(met_x*met_x+met_y*met_y) << " met_sign: " << significance << std::endl;
00196   // and fill the output into the event..
00197   std::auto_ptr<pat::MHTCollection>  themetsigcoll (new pat::MHTCollection);
00198   pat::MHT themetsigobj(reco::Particle::LorentzVector(met_x,met_y,0,met_et),met_set,significance);
00199   themetsigcoll->push_back(themetsigobj);
00200 
00201   iEvent.put( themetsigcoll);
00202 
00203 }  


Member Data Documentation

edm::InputTag pat::PATMHTProducer::eleLabel_ [private]

Definition at line 76 of file PATMHTProducer.h.

Referenced by PATMHTProducer(), and produce().

edm::InputTag pat::PATMHTProducer::jetLabel_ [private]

Definition at line 75 of file PATMHTProducer.h.

Referenced by PATMHTProducer(), and produce().

edm::InputTag pat::PATMHTProducer::mhtLabel_ [private]

Definition at line 74 of file PATMHTProducer.h.

edm::InputTag pat::PATMHTProducer::muoLabel_ [private]

Definition at line 77 of file PATMHTProducer.h.

Referenced by PATMHTProducer(), and produce().

edm::InputTag pat::PATMHTProducer::phoLabel_ [private]

Definition at line 79 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

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

Definition at line 81 of file PATMHTProducer.h.

Referenced by produce().

edm::InputTag pat::PATMHTProducer::tauLabel_ [private]

Definition at line 78 of file PATMHTProducer.h.

Referenced by PATMHTProducer().

double pat::PATMHTProducer::uncertaintyScaleFactor_ [private]

Definition at line 83 of file PATMHTProducer.h.

Referenced by PATMHTProducer(), and produce().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:49:43 2009 for CMSSW by  doxygen 1.5.4