49 produces<pat::MHTCollection>();
58 setUncertaintyParameters();
68 while(physobjvector_.size()>0){
69 physobjvector_.erase(physobjvector_.begin(),physobjvector_.end());
73 s_clusteredTowers.clear();
75 double number_of_jets = getJets(iEvent, iSetup);
77 double number_of_electrons = getElectrons(iEvent, iSetup);
79 double number_of_muons = getMuons(iEvent, iSetup);
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;
96 if(physobjvector_.size() >= 1) {
102 double significance = signifAlgo.
significance(met_et,met_phi,met_set);
104 met_x=met_et*
cos(met_phi);
105 met_y=met_et*
sin(met_phi);
107 if (verbose_ == 1.) {
108 std::cout <<
">>>----> MHT Sgificance = " << significance << std::endl;
119 themetsigcoll->push_back(themetsigobj);
124 iEvent.
put( themetsigcoll);
137 double number_of_jets_ = 0.0;
146 if( (jet_iter->pt() < jetPtMin_) ||
147 (TMath::Abs(jet_iter->eta()) > jetEtaMax_) ||
148 (jet_iter->emEnergyFraction() > jetEMfracMax_ ) )
151 double jet_et = jet_iter->et();
152 double jet_phi = jet_iter->phi();
154 if (verbose_ == 3.) {
155 std::cout <<
"jet pt : " << jet_iter->pt() <<
" eta : " << jet_iter->eta()
156 <<
" EMF: " << jet_iter->emEnergyFraction() << std::endl;
159 double sigma_et, sigma_phi ;
161 if (controlledUncertainty_) {
162 sigma_et = jetUncertainty.etUncertainty->Eval(jet_et);
163 sigma_phi = jetUncertainty.phiUncertainty->Eval(jet_et);
170 if (verbose_ == 3.) {
171 std::cout <<
"jet sigma_et : " << sigma_et <<
", jet sigma_phi : " << sigma_phi << std::endl;
174 if(sigma_et<=0 || sigma_phi<=0)
176 " uncertainties for " << objectname <<
177 " are (et, phi): " << sigma_et <<
"," << sigma_phi <<
" (et,phi): " << jet_et <<
"," << jet_phi;
181 if (uncertaintyScaleFactor_ != 1.0){
182 sigma_et = sigma_et * uncertaintyScaleFactor_;
183 sigma_phi = sigma_phi * uncertaintyScaleFactor_;
189 if (verbose_ == 101.) {
191 std::cout <<
"v101> " << number_of_jets_ <<
" "
192 << jet_et <<
" " << sigma_et <<
" "
193 << jet_phi <<
" " << sigma_phi << std::endl;
198 physobjvector_.push_back(tmp_jet);
202 std::vector<CaloTowerPtr> v_towers = jet_iter->getCaloConstituents();
205 for (
unsigned int ii=0;
ii < v_towers.size();
ii++) {
206 s_clusteredTowers.insert( (*v_towers.at(
ii)).
id() );
212 if (verbose_ == 101.) {
213 std::cout <<
"v101> --------------------------------------------" << std::endl;
216 return number_of_jets_;
229 double number_of_electrons_ = 0.0;
244 if (electron_iter->et() < elePtMin_ ||
245 TMath::Abs(electron_iter->eta()) > eleEtaMax_ )
continue;
247 if (verbose_ == 3.) {
248 std::cout <<
"electron pt = " << electron_iter->pt() <<
" eta : " << electron_iter->eta()
252 double electron_et = electron_iter->et();
253 double electron_phi = electron_iter->phi();
255 double sigma_et, sigma_phi ;
257 if (controlledUncertainty_) {
258 sigma_et = eleUncertainty.etUncertainty->Eval(electron_et);
259 sigma_phi = eleUncertainty.phiUncertainty->Eval(electron_et);
266 if (verbose_ == 3.) {
267 std::cout <<
"electron sigma_et : " << sigma_et <<
", electron sigma_phi : " << sigma_phi
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;
276 if (uncertaintyScaleFactor_ != 1.0){
277 sigma_et = sigma_et * uncertaintyScaleFactor_;
278 sigma_phi = sigma_phi * uncertaintyScaleFactor_;
282 physobjvector_.push_back(tmp_electron);
283 number_of_electrons_ ++;
309 return number_of_electrons_;
326 std::cout <<
">>> PATMHTSelector not valid muon Handle!" << std::endl;
331 double number_of_muons_ = 0.0;
335 if (muon_iter->pt() < muonPtMin_ || TMath::Abs(muon_iter->eta()) > muonEtaMax_ )
continue;
337 if (verbose_ == 3.) {
338 std::cout <<
"muon pt = " << muon_iter->pt() <<
" eta : " << muon_iter->eta() << std::endl;
341 double muon_pt = muon_iter->pt();
342 double muon_phi = muon_iter->phi();
344 double sigma_et, sigma_phi ;
346 if (controlledUncertainty_) {
347 sigma_et = muonUncertainty.etUncertainty->Eval(muon_pt);
348 sigma_phi = muonUncertainty.phiUncertainty->Eval(muon_pt);
355 if (verbose_ == 3.) {
356 std::cout <<
"muon sigma_et : " << sigma_et
357 <<
", muon sigma_phi : " << sigma_phi
360 if(sigma_et< 0 || sigma_phi< 0)
362 " uncertainties for " << objectname <<
" are (et, phi): " << sigma_et <<
"," <<
363 sigma_phi <<
" (pt,phi): " << muon_pt <<
"," << muon_phi;
365 if (uncertaintyScaleFactor_ != 1.0){
366 sigma_et = sigma_et * uncertaintyScaleFactor_;
367 sigma_phi = sigma_phi * uncertaintyScaleFactor_;
371 physobjvector_.push_back(tmp_muon);
376 return number_of_muons_;
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);
394 ecalEBUncertainty.phiUncertainty =
new TF1(
"ecalEBphiFunc",
"[0]*x",1);
395 ecalEBUncertainty.phiUncertainty->SetParameter(0,0.0174);
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);
403 ecalEEUncertainty.phiUncertainty =
new TF1(
"ecalEEphiFunc",
"[0]*x",1);
404 ecalEEUncertainty.phiUncertainty->SetParameter(0,0.087);
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);
414 hcalHBUncertainty.phiUncertainty =
new TF1(
"ecalHBphiFunc",
"[0]*x",1);
415 hcalHBUncertainty.phiUncertainty->SetParameter(0,0.087);
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);
423 hcalHEUncertainty.phiUncertainty =
new TF1(
"ecalHEphiFunc",
"[0]*x",1);
424 hcalHEUncertainty.phiUncertainty->SetParameter(0,0.087);
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);
432 hcalHOUncertainty.phiUncertainty =
new TF1(
"ecalHOphiFunc",
"[0]*x",1);
433 hcalHOUncertainty.phiUncertainty->SetParameter(0,0.087);
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);
441 hcalHFUncertainty.phiUncertainty =
new TF1(
"ecalHFphiFunc",
"[0]*x",1);
442 hcalHFUncertainty.phiUncertainty->SetParameter(0,0.174);
445 jetUncertainty.etUncertainty =
new TF1(
"jetEtFunc",
"x*sqrt(([0]*[0]/(x*x))+([1]*[1]/x)+([2]*[2]))",3);
447 jetUncertainty.etUncertainty->SetParameter(0, jetEtUncertaintyParameter0_);
448 jetUncertainty.etUncertainty->SetParameter(1, jetEtUncertaintyParameter1_);
449 jetUncertainty.etUncertainty->SetParameter(2, jetEtUncertaintyParameter2_);
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_);
478 eleUncertainty.etUncertainty =
new TF1(
"eleEtFunc",
"[0] * x",1);
480 eleUncertainty.etUncertainty->SetParameter(0, eleEtUncertaintyParameter0_);
483 eleUncertainty.phiUncertainty =
new TF1(
"elePhiFunc",
"[0] * x",1);
485 eleUncertainty.phiUncertainty->SetParameter(0, elePhiUncertaintyParameter0_);
490 muonUncertainty.etUncertainty =
new TF1(
"muonEtFunc",
"[0] * x",1);
492 muonUncertainty.etUncertainty->SetParameter(0, muonEtUncertaintyParameter0_);
493 muonUncertainty.phiUncertainty =
new TF1(
"muonPhiFunc",
"[0] * x",1);
495 muonUncertainty.phiUncertainty->SetParameter(0, muonPhiUncertaintyParameter0_);
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
double eleEtUncertaintyParameter0_
void setNumberOfMuons(const double &numberOfMuons)
double getJets(edm::Event &, const edm::EventSetup &)
bool controlledUncertainty_
double muonPhiUncertaintyParameter0_
#define DEFINE_FWK_MODULE(type)
const double significance(double &met_r, double &met_phi, double &met_set)
void setNumberOfJets(const double &numberOfJets)
Sin< T >::type sin(const T &t)
double jetEtUncertaintyParameter1_
double elePhiUncertaintyParameter0_
double jetEtUncertaintyParameter2_
double jetPhiUncertaintyParameter2_
double getMuons(edm::Event &, const edm::EventSetup &)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
double muonEtUncertaintyParameter0_
PATMHTProducer(const edm::ParameterSet &)
Cos< T >::type cos(const T &t)
void setUncertaintyParameters()
std::vector< pat::MHT > MHTCollection
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
double getElectrons(edm::Event &, const edm::EventSetup &)
double uncertaintyScaleFactor_
edm::InputTag CaloTowerTag_
double jetPhiUncertaintyParameter1_
virtual void produce(edm::Event &, const edm::EventSetup &) override
double jetPhiUncertaintyParameter0_
const_iterator begin() const
const_iterator end() const
double jetEtUncertaintyParameter0_
void setNumberOfElectrons(const double &numberOfElectrons)
math::XYZTLorentzVector LorentzVector
Lorentz vector.