Go to the documentation of this file.
26 switch (elem1->
type()) {
44 pselem = static_cast<const reco::PFBlockElementCluster*>(elem1);
45 ecalelem = static_cast<const reco::PFBlockElementCluster*>(elem2);
47 pselem = static_cast<const reco::PFBlockElementCluster*>(elem2);
48 ecalelem = static_cast<const reco::PFBlockElementCluster*>(elem1);
53 throw cms::Exception(
"BadClusterRefs") <<
"PFBlockElementCluster's refs are null!";
57 if (
useKDTree_ && pselem->isMultilinksValide()) {
62 const double ecalPhi = ecalreppos.Phi();
63 const double ecalEta = ecalreppos.Eta();
66 reco::PFMultilinksType::const_iterator mlit = multilinks.begin();
67 for (; mlit != multilinks.end(); ++mlit)
72 if (mlit != multilinks.end()) {
74 ecalxyzpos.X() / 1000., ecalxyzpos.Y() / 1000., psxyzpos.X() / 1000., psxyzpos.Y() / 1000.,
false);
std::vector< std::pair< double, double > > PFMultilinksType
Abstract This class is used by the KDTree Track / Ecal Cluster linker to store all found links.
bool isNull() const
Checks for null.
const PFMultilinksType & getMultilinks() const
static double testECALAndPSByRecHit(const reco::PFCluster &clusterECAL, const reco::PFCluster &clusterPS, bool debug=false)
double testLink(const reco::PFBlockElement *, const reco::PFBlockElement *) const override
#define DEFINE_EDM_PLUGIN(factory, type, name)
XYZPointD XYZPoint
point in space with cartesian internal representation
PreshowerAndECALLinker(const edm::ParameterSet &conf)
Abstract base class for a PFBlock element (track, cluster...)
const PFClusterRef & clusterRef() const override
ROOT::Math::PositionVector3D< ROOT::Math::CylindricalEta3D< double > > REPPoint
static double computeDist(double eta1, double phi1, double eta2, double phi2, bool etaPhi=true)
computes a chisquare
bool linkPrefilter(const reco::PFBlockElement *, const reco::PFBlockElement *) const override
bool isMultilinksValide() const