1 #ifndef DataFormats_L1Trigger_HGCalMulticluster_h
2 #define DataFormats_L1Trigger_HGCalMulticluster_h
8 #include <boost/iterator/transform_iterator.hpp>
55 template <
typename Iter>
56 struct KeyGetter : std::unary_function<typename Iter::value_type, typename Iter::value_type::first_type> {
62 template <
typename Iter>
63 boost::transform_iterator<KeyGetter<Iter>, Iter>
key_iterator(Iter itr)
const {
64 return boost::make_transform_iterator<KeyGetter<Iter>, Iter>(itr,
KeyGetter<Iter>());
68 typedef boost::transform_iterator<KeyGetter<std::map<EnergyInterpretation, double>::const_iterator>,
69 std::map<EnergyInterpretation, double>::const_iterator>
72 std::pair<EnergyInterpretation_const_iterator, EnergyInterpretation_const_iterator>
energyInterpretations()
const {
math::XYZTLorentzVector iP4(const HGCalMulticluster::EnergyInterpretation eInt) const
EnergyInterpretation_const_iterator interpretations_end() const
boost::transform_iterator< KeyGetter< std::map< EnergyInterpretation, double >::const_iterator >, std::map< EnergyInterpretation, double >::const_iterator > EnergyInterpretation_const_iterator
const Iter::value_type::first_type & operator()(const typename Iter::value_type &p) const
double pt() const final
transverse momentum
double iEnergy(const HGCalMulticluster::EnergyInterpretation eInt) const
double iPt(const HGCalMulticluster::EnergyInterpretation eInt) const
std::map< EnergyInterpretation, double > energyInterpretationFractions_
const LorentzVector & p4() const final
four-momentum Lorentz vector
EnergyInterpretation_const_iterator interpretations_begin() const
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Container::value_type value_type
double p() const final
magnitude of momentum vector
std::pair< EnergyInterpretation_const_iterator, EnergyInterpretation_const_iterator > energyInterpretations() const
BXVector< HGCalMulticluster > HGCalMulticlusterBxCollection
math::PtEtaPhiMLorentzVector iPolarP4(const HGCalMulticluster::EnergyInterpretation eInt) const
math::XYZTLorentzVector LorentzVector
boost::transform_iterator< KeyGetter< Iter >, Iter > key_iterator(Iter itr) const
double interpretationFraction(const HGCalMulticluster::EnergyInterpretation eInt) const
void saveEnergyInterpretation(const HGCalMulticluster::EnergyInterpretation eInt, double energy)
size_type interpretations_size() const
~HGCalMulticluster() override
double phi() const final
momentum azimuthal angle
double energy() const final
energy
double eta() const final
momentum pseudorapidity