20 usePt_ ( iConfig.getParameter<bool>(
"usePt") ),
21 minPtTowerHt_ ( iConfig.getParameter<double>(
"minPtTowerHt") ),
22 minPtTowerMht_ ( iConfig.getParameter<double>(
"minPtTowerMht") ),
23 maxEtaTowerHt_ ( iConfig.getParameter<double>(
"maxEtaTowerHt") ),
24 maxEtaTowerMht_ ( iConfig.getParameter<double>(
"maxEtaTowerMht") ),
25 towersLabel_ ( iConfig.getParameter<
edm::InputTag>(
"towersLabel") ) {
29 produces<reco::METCollection>();
39 desc.
add<
bool>(
"usePt",
false);
40 desc.
add<
double>(
"minPtTowerHt", 1.);
41 desc.
add<
double>(
"minPtTowerMht", 1.);
42 desc.
add<
double>(
"maxEtaTowerHt", 5.);
43 desc.
add<
double>(
"maxEtaTowerMht", 5.);
45 descriptions.
add(
"hltCaloTowerHtMhtProducer", desc);
57 double ht = 0., mhx = 0., mhy = 0.;
59 if (towers->
size() > 0) {
60 for(
auto const & j : *towers) {
61 double pt =
usePt_ ? j.pt() : j.et();
64 double px =
usePt_ ? j.px() : j.et() *
cos(phi);
65 double py =
usePt_ ? j.py() : j.et() *
sin(phi);
81 result->push_back(htmht);
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Sin< T >::type sin(const T &t)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< reco::MET > METCollection
collection of MET objects
HLTCaloTowerHtMhtProducer(const edm::ParameterSet &iConfig)
~HLTCaloTowerHtMhtProducer()
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double minPtTowerHt_
Minimum pt requirement for jets.
void add(std::string const &label, ParameterSetDescription const &psetDescription)
math::XYZTLorentzVector LorentzVector
Lorentz vector.
edm::InputTag towersLabel_
Input CaloTower collection.
edm::EDGetTokenT< CaloTowerCollection > m_theTowersToken
double maxEtaTowerHt_
Maximum (abs) eta requirement for jets.
bool usePt_
Use pt; otherwise, use et.
math::XYZPoint Point
point in the space