1 #ifndef __L1Trigger_L1THGCal_HGCalShowerShape_h__ 2 #define __L1Trigger_L1THGCal_HGCalShowerShape_h__ 66 template <
typename Delta = std::minus<
float>>
67 float varXX(
const std::vector<pair<float, float>>& energy_X_tc,
const float X_cluster)
const {
70 float deltaX2_sum = 0;
71 for (
const auto& energy_X : energy_X_tc) {
72 deltaX2_sum += energy_X.first *
pow(
delta(energy_X.second, X_cluster), 2);
73 Etot += energy_X.first;
77 X_MSE = deltaX2_sum / Etot;
82 float X_RMS =
sqrt(
varXX(energy_X_tc, X_cluster));
95 return varXX<DeltaPhi<float>>(energy_phi_tc, phi_cluster);
98 template <
typename T,
typename Tref>
99 bool pass(
const T&
obj,
const Tref& ref)
const {
103 return pass_threshold && pass_distance;
float meanX(const std::vector< pair< float, float >> &energy_X_tc) const
float varZZ(const l1t::HGCalMulticluster &c3d) const
float varPhiPhi(const std::vector< pair< float, float >> &energy_phi_tc, const float phi_cluster) const
HGCalTriggerTools triggerTools_
float percentileTriggerCells(const l1t::HGCalMulticluster &c3d, float quantile=0.5) const
int lastLayer(const l1t::HGCalMulticluster &c3d) const
float percentileLayer(const l1t::HGCalMulticluster &c3d, const HGCalTriggerGeometryBase &triggerGeometry, float quantile=0.5) const
int showerLength(const l1t::HGCalMulticluster &c3d) const
float varEtaEta(const l1t::HGCalMulticluster &c3d) const
float sigmaEtaEtaTot(const l1t::HGCalMulticluster &c3d) const
float sigmaZZ(const l1t::HGCalMulticluster &c3d) const
float eMax(const l1t::HGCalMulticluster &c3d) const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
T operator()(const T &x, const T &y) const
float sigmaXX(const std::vector< pair< float, float >> &energy_X_tc, const float X_cluster) const
float sigmaPhiPhiMax(const l1t::HGCalMulticluster &c3d) const
void setGeometry(const HGCalTriggerGeometryBase *const geom)
void fillShapes(l1t::HGCalMulticluster &, const HGCalTriggerGeometryBase &) const
Abs< T >::type abs(const T &t)
int coreShowerLength(const l1t::HGCalMulticluster &c3d, const HGCalTriggerGeometryBase &triggerGeometry) const
math::XYZTLorentzVector LorentzVector
bool pass(const T &obj, const Tref &ref) const
float varRR(const l1t::HGCalMulticluster &c3d) const
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
int maxLayer(const l1t::HGCalMulticluster &c3d) const
float sigmaRRMax(const l1t::HGCalMulticluster &c3d) const
float sigmaRRTot(const l1t::HGCalMulticluster &c3d) const
float varXX(const std::vector< pair< float, float >> &energy_X_tc, const float X_cluster) const
float sigmaEtaEtaMax(const l1t::HGCalMulticluster &c3d) const
float sigmaPhiPhiTot(const l1t::HGCalMulticluster &c3d) const
float varPhiPhi(const l1t::HGCalMulticluster &c3d) const
float sumLayers(const l1t::HGCalMulticluster &c3d, int start=1, int end=0) const
int firstLayer(const l1t::HGCalMulticluster &c3d) const
float meanZ(const l1t::HGCalMulticluster &c3d) const
Power< A, B >::type pow(const A &a, const B &b)
float sigmaRRMean(const l1t::HGCalMulticluster &c3d, float radius=5.) const
int bitmap(const l1t::HGCalMulticluster &c3d, int start=1, int end=14, float threshold=0) const
float sigmaPhiPhi(const std::vector< pair< float, float >> &energy_phi_tc, const float phi_cluster) const