13 _useKDTree(conf.getParameter<bool>(
"useKDTree")),
14 _debug(conf.getUntrackedParameter<bool>(
"debug",
false)) {}
26 "TrackAndHCALLinker");
38 if( elem1->
type() < elem2->
type() ) {
49 trackref->extrapolatedPoint( HCALEntrance );
51 trackref->extrapolatedPoint( HCALExit );
52 const double dHEta = ( tkAtHCALEx.
positionREP().Eta() -
58 const double tracketa = tkAtHCALEnt.
positionREP().Eta();
59 const double trackphi = tkAtHCALEnt.
positionREP().Phi();
62 reco::PFMultilinksType::const_iterator mlit = multilinks.begin();
63 for (; mlit != multilinks.end(); ++mlit)
64 if ((mlit->first == trackphi) && (mlit->second == tracketa))
71 if (mlit != multilinks.end()){
83 edm::LogWarning(
"TrackHCALLinker ") <<
"Special case of linking with track hitting HCAL and looping back in the tracker ";
88 tracketa + 0.1 * dHEta,
89 trackphi + 0.1 * dHPhi);
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...)
double testLink(const reco::PFBlockElement *, const reco::PFBlockElement *) const override
static double computeDist(double eta1, double phi1, double eta2, double phi2, bool etaPhi=true)
computes a chisquare
const math::XYZPoint & position() const
cartesian position (x, y, z)
const PFClusterRef & clusterRef() const
double deltaPhi(double phi1, double phi2)
bool isValid() const
is this point valid ?
TrackAndHCALLinker(const edm::ParameterSet &conf)
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)
const PFMultilinksType & getMultilinks() const