38 if( elem1->
type() < elem2->
type() ) {
49 trackref->extrapolatedPoint( HCALEntrance );
51 trackref->extrapolatedPoint( HCALExit );
52 const double dHEta = ( tkAtHCALEx.
positionREP().Eta() -
56 if (
_useKDTree && hcalelem->isMultilinksValide() ) {
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...
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)
double deltaPhi(double phi1, double phi2)
bool isValid() const
is this point valid ?
ROOT::Math::PositionVector3D< ROOT::Math::CylindricalEta3D< double > > REPPoint
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)