![]() |
![]() |
#include <JetTracksAssociationDRCalo.h>
Classes | |
struct | ImpactPoint |
Definition of track impact point. More... | |
Public Member Functions | |
void | associateTracksToJet (reco::TrackRefVector &, const reco::Jet &, const TrackRefs &) |
Associate tracks to the given jet. | |
JetTracksAssociationDRCalo (double dr_threshold) | |
Constructor taking dR threshold as argument. | |
void | produce (Association *, const JetRefs &, const TrackRefs &, const MagneticField &, const Propagator &) |
Associates tracks to jets. | |
void | produce (Association *, const Jets &, const Tracks &, const TrackQuality &, const MagneticField &, const Propagator &) |
Associates tracks to jets (using Handles as input) | |
void | propagateTracks (const TrackRefs &, const MagneticField &, const Propagator &) |
~JetTracksAssociationDRCalo () | |
Destructor. | |
Static Public Member Functions | |
static math::XYZPoint | propagateTrackToCalorimeter (const reco::Track &, const MagneticField &, const Propagator &) |
Propagates track to calorimeter face. | |
Private Member Functions | |
JetTracksAssociationDRCalo () | |
Private default constructor. | |
Static Private Member Functions | |
static GlobalPoint | propagateTrackToCalo (const reco::Track &, const MagneticField &, const Propagator &) |
Propagates track to calorimeter face. | |
Private Attributes | |
std::vector< ImpactPoint > | propagatedTracks_ |
Impact points of tracks at calorimeter face. |
Definition at line 17 of file JetTracksAssociationDRCalo.h.
JetTracksAssociationDRCalo::JetTracksAssociationDRCalo | ( | double | dr_threshold | ) | [explicit] |
Constructor taking dR threshold as argument.
Definition at line 18 of file JetTracksAssociationDRCalo.cc.
: JetTracksAssociationDR(fDr), propagatedTracks_() {;}
JetTracksAssociationDRCalo::~JetTracksAssociationDRCalo | ( | ) |
JetTracksAssociationDRCalo::JetTracksAssociationDRCalo | ( | ) | [private] |
Private default constructor.
void JetTracksAssociationDRCalo::associateTracksToJet | ( | reco::TrackRefVector & | , |
const reco::Jet & | , | ||
const TrackRefs & | |||
) | [virtual] |
Associate tracks to the given jet.
Implements JetTracksAssociationDR.
Definition at line 59 of file JetTracksAssociationDRCalo.cc.
References edm::RefVector< C, T, F >::clear(), Geom::deltaR2(), reco::LeafCandidate::eta(), JetTracksAssociationDR::mDeltaR2Threshold, reco::LeafCandidate::phi(), propagatedTracks_, and edm::RefVector< C, T, F >::push_back().
{ associated.clear(); std::vector<ImpactPoint>::const_iterator ii = propagatedTracks_.begin(); std::vector<ImpactPoint>::const_iterator jj = propagatedTracks_.end(); for ( ; ii != jj; ++ii ) { double dR2 = deltaR2( fJet.eta(), fJet.phi(), ii->eta, ii->phi ); if ( dR2 < mDeltaR2Threshold ) { associated.push_back( fTracks[ii->index] ); } } }
void JetTracksAssociationDRCalo::produce | ( | Association * | fAssociation, |
const JetRefs & | fJets, | ||
const TrackRefs & | fTracks, | ||
const MagneticField & | fField, | ||
const Propagator & | fPropagator | ||
) |
Associates tracks to jets.
Definition at line 46 of file JetTracksAssociationDRCalo.cc.
References JetTracksAssociationDR::associateTracksToJets(), and propagateTracks().
{ //clear(); propagateTracks( fTracks, fField, fPropagator ); associateTracksToJets( fAssociation, fJets, fTracks ); }
void JetTracksAssociationDRCalo::produce | ( | Association * | fAssociation, |
const Jets & | fJets, | ||
const Tracks & | fTracks, | ||
const TrackQuality & | fQuality, | ||
const MagneticField & | fField, | ||
const Propagator & | fPropagator | ||
) |
Associates tracks to jets (using Handles as input)
Definition at line 30 of file JetTracksAssociationDRCalo.cc.
References JetTracksAssociationDR::createJetRefs(), JetTracksAssociationDR::createTrackRefs(), analyzePatCleaning_cfg::jets, and testEve_cfg::tracks.
{ JetRefs jets; createJetRefs( jets, fJets ); TrackRefs tracks; createTrackRefs( tracks, fTracks, fQuality ); produce( fAssociation, jets, tracks, fField, fPropagator ); }
void JetTracksAssociationDRCalo::propagateTracks | ( | const TrackRefs & | fTracks, |
const MagneticField & | fField, | ||
const Propagator & | fPropagator | ||
) |
Definition at line 74 of file JetTracksAssociationDRCalo.cc.
References PV3DBase< T, PVType, FrameType >::barePhi(), JetTracksAssociationDRCalo::ImpactPoint::eta, PV3DBase< T, PVType, FrameType >::eta(), spr::goodTrack(), JetTracksAssociationDRCalo::ImpactPoint::index, PV3DBase< T, PVType, FrameType >::mag(), JetTracksAssociationDRCalo::ImpactPoint::phi, propagatedTracks_, and propagateTrackToCalo().
Referenced by produce().
{ propagatedTracks_.clear(); propagatedTracks_.reserve( fTracks.size() ); TrackRefs::const_iterator ii = fTracks.begin(); TrackRefs::const_iterator jj = fTracks.end(); for ( ; ii != jj; ++ii ) { GlobalPoint impact = JetTracksAssociationDRCalo::propagateTrackToCalo( **ii, fField, fPropagator ); if ( impact.mag() > 0 ) { //@@ successful extrapolation ImpactPoint goodTrack; goodTrack.index = ii - fTracks.begin(); //@@ index goodTrack.eta = impact.eta(); goodTrack.phi = impact.barePhi(); propagatedTracks_.push_back( goodTrack ); } } }
GlobalPoint JetTracksAssociationDRCalo::propagateTrackToCalo | ( | const reco::Track & | fTrack, |
const MagneticField & | fField, | ||
const Propagator & | fPropagator | ||
) | [static, private] |
Propagates track to calorimeter face.
Definition at line 106 of file JetTracksAssociationDRCalo.cc.
References Plane::build(), Cylinder::build(), reco::TrackBase::charge(), JetTracksAssociationDRCalo::ImpactPoint::eta, funct::exp(), reco::Track::extra(), TrajectoryStateOnSurface::globalPosition(), JetTracksAssociationDRCalo::ImpactPoint::index, TrajectoryStateOnSurface::isValid(), reco::Track::outerPx(), reco::Track::outerPy(), reco::Track::outerPz(), reco::Track::outerX(), reco::Track::outerY(), reco::Track::outerZ(), JetTracksAssociationDRCalo::ImpactPoint::phi, Propagator::propagate(), reco::TrackBase::px(), reco::TrackBase::py(), reco::TrackBase::pz(), query::result, funct::tan(), reco::btau::trackMomentum, reco::TrackBase::vx(), reco::TrackBase::vy(), and reco::TrackBase::vz().
Referenced by propagateTracks(), and propagateTrackToCalorimeter().
{ // basic geometry constants, imported from Geometry/HcalTowerAlgo/src/CaloTowerHardcodeGeometryLoader.cc const double rBarrel = 129.; const double zEndcap = 320.; const double zVF = 1100.; const double rEndcapMin = zEndcap * tan ( 2*atan (exp (-3.))); const double rVFMin = zEndcap * tan ( 2*atan (exp (-5.191))); struct ImpactPoint { unsigned index; double eta; double phi; }; GlobalPoint trackPosition (fTrack.vx(), fTrack.vy(), fTrack.vz()); // reference point GlobalVector trackMomentum (fTrack.px(), fTrack.py(), fTrack.pz()); // reference momentum if (fTrack.extra().isAvailable() ) { // use outer point information, if available trackPosition = GlobalPoint (fTrack.outerX(), fTrack.outerY(), fTrack.outerZ()); trackMomentum = GlobalVector (fTrack.outerPx(), fTrack.outerPy(), fTrack.outerPz()); } // std::cout << "propagateTrackToCalo-> start propagating track" // << " x/y/z: " << trackPosition.x() << '/' << trackPosition.y() << '/' << trackPosition.z() // << ", pt/eta/phi: " << trackMomentum.perp() << '/' << trackMomentum.eta() << '/' << trackMomentum.barePhi() // << std::endl; GlobalTrajectoryParameters trackParams(trackPosition, trackMomentum, fTrack.charge(), &fField); FreeTrajectoryState trackState (trackParams); // first propagate to barrel TrajectoryStateOnSurface propagatedInfo = fPropagator.propagate (trackState, *Cylinder::build (Surface::PositionType (0,0,0), Surface::RotationType(), rBarrel) ); if (propagatedInfo.isValid()) { GlobalPoint result (propagatedInfo.globalPosition ()); if (fabs (result.z()) < zEndcap) { // std::cout << "propagateTrackToCalo-> propagated to barrel:" // << " x/y/z/r: " << result.x() << '/' << result.y() << '/' << result.z() << '/' << result.perp() // << std::endl; return result; } } // failed with barrel, try endcap double zTarget = trackMomentum.z() > 0 ? zEndcap : -zEndcap; propagatedInfo = fPropagator.propagate (trackState, *Plane::build( Surface::PositionType(0, 0, zTarget), Surface::RotationType()) ); if (propagatedInfo.isValid()) { GlobalPoint result (propagatedInfo.globalPosition ()); if (fabs (result.perp()) > rEndcapMin) { // std::cout << "propagateTrackToCalo-> propagated to endcap:" // << " x/y/z/r: " << result.x() << '/' << result.y() << '/' << result.z() << '/' << result.perp() // << std::endl; return result; } } // failed with endcap, try VF zTarget = trackMomentum.z() > 0 ? zVF : -zVF; propagatedInfo = fPropagator.propagate (trackState, *Plane::build( Surface::PositionType(0, 0, zTarget), Surface::RotationType()) ); if (propagatedInfo.isValid()) { GlobalPoint result (propagatedInfo.globalPosition ()); if (fabs (result.perp()) > rVFMin) { // std::cout << "propagateTrackToCalo-> propagated to VF:" // << " x/y/z/r: " << result.x() << '/' << result.y() << '/' << result.z() << '/' << result.perp() // << std::endl; return result; } } // no luck // std::cout << "propagateTrackToCalo-> failed to propagate track to calorimeter" << std::endl; return GlobalPoint (0, 0, 0); }
math::XYZPoint JetTracksAssociationDRCalo::propagateTrackToCalorimeter | ( | const reco::Track & | fTrack, |
const MagneticField & | fField, | ||
const Propagator & | fPropagator | ||
) | [static] |
Propagates track to calorimeter face.
Definition at line 96 of file JetTracksAssociationDRCalo.cc.
References propagateTrackToCalo(), query::result, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by jptJetAnalysis::TrackPropagatorToCalo::impactPoint().
{ GlobalPoint result( JetTracksAssociationDRCalo::propagateTrackToCalo( fTrack, fField, fPropagator ) ); return math::XYZPoint( result.x(), result.y(), result.z() ); }
std::vector<ImpactPoint> JetTracksAssociationDRCalo::propagatedTracks_ [private] |
Impact points of tracks at calorimeter face.
Definition at line 75 of file JetTracksAssociationDRCalo.h.
Referenced by associateTracksToJet(), and propagateTracks().