11 _useKDTree(conf.getParameter<bool>(
"useKDTree")),
12 _debug(conf.getUntrackedParameter<bool>(
"debug",
false)) {}
26 "TrackAndECALLinker");
32 switch( elem1->
type() ){
52 if( elem1->
type() < elem2->
type() ) {
63 trackref->extrapolatedPoint( ECALShowerMax );
70 const double ecalphi = ecalreppos.Phi();
71 const double ecaleta = ecalreppos.Eta();
74 reco::PFMultilinksType::const_iterator mlit = multilinks.begin();
75 for (; mlit != multilinks.end(); ++mlit)
76 if ((mlit->first == ecalphi) && (mlit->second == ecaleta))
80 if (mlit != multilinks.end()){
82 tkreppos.Eta(), tkreppos.Phi());
94 std::cout <<
" Here a link has been established" 95 <<
" between a track an Ecal with dist " 98 std::cout <<
" No link found " << std::endl;
const REPPoint & positionREP() const
trajectory position in (rho, eta, phi) base
std::vector< std::pair< double, double > > PFMultilinksType
Abstract This class is used by the KDTree Track / Ecal Cluster linker to store all found links...
Abstract base class for a PFBlock element (track, cluster...)
static double computeDist(double eta1, double phi1, double eta2, double phi2, bool etaPhi=true)
computes a chisquare
double testLink(const reco::PFBlockElement *, const reco::PFBlockElement *) const override
const PFClusterRef & clusterRef() const
bool linkPrefilter(const reco::PFBlockElement *, const reco::PFBlockElement *) const override
bool isValid() const
is this point valid ?
bool isMultilinksValide() const
const PFRecTrackRef & trackRefPF() const
ROOT::Math::PositionVector3D< ROOT::Math::CylindricalEta3D< double > > REPPoint
#define DEFINE_EDM_PLUGIN(factory, type, name)
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
LayerType
Define the different layers where the track can be propagated.
static double testTrackAndClusterByRecHit(const reco::PFRecTrack &track, const reco::PFCluster &cluster, bool isBrem=false, bool debug=false)
TrackAndECALLinker(const edm::ParameterSet &conf)
const PFMultilinksType & getMultilinks() const