#include <PhysicsTools/PatAlgos/plugins/PATMHTProducer.h>
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::SigInputObj > | physobjvector_ |
edm::InputTag | tauLabel_ |
double | uncertaintyScaleFactor_ |
Definition at line 60 of file PATMHTProducer.h.
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 | ( | ) |
void PATMHTProducer::beginJob | ( | const edm::EventSetup & | iSetup | ) | [private, virtual] |
void PATMHTProducer::beginRun | ( | const edm::EventSetup & | iSetup | ) | [private, virtual] |
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 }
edm::InputTag pat::PATMHTProducer::eleLabel_ [private] |
edm::InputTag pat::PATMHTProducer::jetLabel_ [private] |
edm::InputTag pat::PATMHTProducer::mhtLabel_ [private] |
Definition at line 74 of file PATMHTProducer.h.
edm::InputTag pat::PATMHTProducer::muoLabel_ [private] |
edm::InputTag pat::PATMHTProducer::phoLabel_ [private] |
std::vector<metsig::SigInputObj> pat::PATMHTProducer::physobjvector_ [private] |
edm::InputTag pat::PATMHTProducer::tauLabel_ [private] |
double pat::PATMHTProducer::uncertaintyScaleFactor_ [private] |