18 const std::vector<reco::TrackRef>& fTracks,
21 std::vector<math::RhoEtaPhiVector> trackP3s;
22 std::map<int, double> trackvert;
26 trackP3s.reserve(fTracks.size());
27 for (
unsigned i = 0;
i < fTracks.size(); ++
i) {
35 int trackhasvert = -1;
36 for (reco::VertexCollection::const_iterator
iv = vertices.begin();
iv != vertices.end();
iv++) {
37 std::vector<reco::TrackBaseRef>::const_iterator
rr =
find((*iv).tracks_begin(), (*iv).tracks_end(), ttr1);
38 if (rr != (*iv).tracks_end()) {
40 trackvert[
i] = (*iv).position().z();
45 if (trackhasvert < 0) {
48 trackvert[
i] = track->
dz(ppt);
55 for (
unsigned j = 0;
j < fJets.size(); ++
j) {
61 for (
unsigned t = 0;
t < fTracks.size(); ++
t) {
62 std::map<int, double>::iterator cur = trackvert.find(
t);
63 if (cur != trackvert.end()) {
64 neweta = jet->
physicsEta((*cur).second, jetEta);
72 double dR2 =
deltaR2(neweta, jetPhi, trackP3s[
t].
eta(), trackP3s[
t].
phi());
double p() const
momentum vector magnitude
Base class for all types of Jets.
JetTracksAssociationDRVertexAssigned(double fDr)
double phi() const
azimuthal angle of momentum vector
std::vector< Vertex > VertexCollection
collection of Vertex objects
double mDeltaR2Threshold
fidutial dR between track in the vertex and jet's reference direction
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
RhoEtaPhiVectorD RhoEtaPhiVector
spatial vector with cylindrical internal representation using pseudorapidity
void produce(reco::JetTracksAssociation::Container *fAssociation, const std::vector< edm::RefToBase< reco::Jet > > &fJets, const std::vector< reco::TrackRef > &fTracks, const reco::VertexCollection &vertices) const
double eta() const
pseudorapidity of momentum vector
bool setValue(Container &, const reco::JetBaseRef &, reco::TrackRefVector)
associate jet with value. Returns false and associate nothing if jet is already associated ...
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
XYZPointD XYZPoint
point in space with cartesian internal representation
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
double phi() const final
momentum azimuthal angle
static float physicsEta(float fZVertex, float fDetectorEta)
static function to convert detector eta to physics eta
double eta() const final
momentum pseudorapidity