CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes
reco::JetSignalVertexCompatibilityAlgo Class Reference

#include <JetSignalVertexCompatibilityAlgo.h>

Classes

struct  RefToBaseLess
 

Public Member Functions

std::vector< float > compatibility (const reco::VertexCollection &vertices, const reco::TrackRefVector &tracks) const
 
 JetSignalVertexCompatibilityAlgo (double cut, double temperature)
 
void resetEvent (const TransientTrackBuilder *trackBuilder)
 
 ~JetSignalVertexCompatibilityAlgo ()
 

Private Types

typedef std::map< reco::TrackBaseRef, reco::TransientTrack, RefToBaseLess< reco::Track > > TransientTrackMap
 

Private Member Functions

double activation (double compat) const
 
const TransientTrackconvert (const reco::TrackBaseRef &track) const
 

Static Private Member Functions

static double trackVertexCompat (const reco::Vertex &vtx, const TransientTrack &track)
 

Private Attributes

const double cut
 
const double temperature
 
const TransientTrackBuildertrackBuilder
 
TransientTrackMap trackMap
 

Detailed Description

Definition at line 15 of file JetSignalVertexCompatibilityAlgo.h.

Member Typedef Documentation

Definition at line 30 of file JetSignalVertexCompatibilityAlgo.h.

Constructor & Destructor Documentation

JetSignalVertexCompatibilityAlgo::JetSignalVertexCompatibilityAlgo ( double  cut,
double  temperature 
)
JetSignalVertexCompatibilityAlgo::~JetSignalVertexCompatibilityAlgo ( )

Definition at line 32 of file JetSignalVertexCompatibilityAlgo.cc.

32 {}

Member Function Documentation

double JetSignalVertexCompatibilityAlgo::activation ( double  compat) const
private
std::vector< float > JetSignalVertexCompatibilityAlgo::compatibility ( const reco::VertexCollection vertices,
const reco::TrackRefVector tracks 
) const

Definition at line 63 of file JetSignalVertexCompatibilityAlgo.cc.

References activation(), edm::RefVector< C, T, F >::begin(), convert(), MillePedeFileConverter_cfg::e, edm::RefVector< C, T, F >::end(), mps_fire::i, mps_fire::result, HLT_2018_cff::track, and trackVertexCompat().

Referenced by JetSignalVertexCompatibility::produce().

64  {
65  std::vector<float> result(vertices.size(), 0.);
66  float sum = 0.;
67 
68  for (TrackRefVector::const_iterator track = tracks.begin(); track != tracks.end(); ++track) {
69  const TransientTrack &transientTrack = convert(TrackBaseRef(*track));
70 
71  for (unsigned int i = 0; i < vertices.size(); i++) {
72  double compat = trackVertexCompat(vertices[i], transientTrack);
73  double contribution = activation(compat) * (*track)->pt();
74 
75  result[i] += contribution;
76  sum += contribution;
77  }
78  }
79 
80  if (sum < 1.0e-9) {
81  for (unsigned int i = 0; i < result.size(); i++)
82  result[i] = 1.0 / result.size();
83  } else {
84  for (unsigned int i = 0; i < result.size(); i++)
85  result[i] /= sum;
86  }
87 
88  return result;
89 }
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:228
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:223
static double trackVertexCompat(const reco::Vertex &vtx, const TransientTrack &track)
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:35
const TransientTrack & convert(const reco::TrackBaseRef &track) const
const TransientTrack & JetSignalVertexCompatibilityAlgo::convert ( const reco::TrackBaseRef track) const
private

Definition at line 49 of file JetSignalVertexCompatibilityAlgo.cc.

References TransientTrackBuilder::build(), edm::RefToBase< T >::castTo(), HLT_2018_cff::track, trackBuilder, and trackMap.

Referenced by compatibility().

49  {
50  TransientTrackMap::iterator pos = trackMap.lower_bound(track);
51  if (pos != trackMap.end() && pos->first == track)
52  return pos->second;
53 
54  // the castTo will only work with regular, i.e. no GsfTracks
55  // the interface is not intrinsically polymorph...
56  return trackMap.insert(pos, std::make_pair(track, trackBuilder->build(track.castTo<TrackRef>())))->second;
57 }
reco::TransientTrack build(const reco::Track *p) const
REF castTo() const
Definition: RefToBase.h:257
void JetSignalVertexCompatibilityAlgo::resetEvent ( const TransientTrackBuilder trackBuilder)

Definition at line 91 of file JetSignalVertexCompatibilityAlgo.cc.

References trackBuilder, and trackMap.

Referenced by JetSignalVertexCompatibility::produce().

91  {
92  trackMap.clear();
93  trackBuilder = builder;
94 }
double JetSignalVertexCompatibilityAlgo::trackVertexCompat ( const reco::Vertex vtx,
const TransientTrack track 
)
staticprivate

Definition at line 34 of file JetSignalVertexCompatibilityAlgo.cc.

References RecoVertex::convertError(), RecoVertex::convertPos(), reco::Vertex::covariance(), DeadROC_duringRun::dir, reco::TransientTrack::field(), TrajectoryStateOnSurface::globalPosition(), reco::TransientTrack::impactPointState(), reco::Vertex::position(), and mathSSE::sqrt().

Referenced by compatibility().

34  {
37  TrajectoryStateOnSurface tsos = extrap.extrapolate(track.impactPointState(), point1);
38 
39  if (!tsos.isValid())
40  return 1.0e6;
41 
42  GlobalPoint point2 = tsos.globalPosition();
43  ROOT::Math::SVector<double, 3> dir(point1.x() - point2.x(), point1.y() - point2.y(), point1.z() - point2.z());
44  GlobalError cov = RecoVertex::convertError(vtx.covariance()) + tsos.cartesianError().position();
45 
46  return ROOT::Math::Mag2(dir) / std::sqrt(ROOT::Math::Similarity(cov.matrix(), dir));
47 }
reco::Vertex::Point convertPos(const GlobalPoint &p)
reco::Vertex::Error convertError(const GlobalError &ge)
Definition: ConvertError.h:8
T y() const
Definition: PV3DBase.h:60
const MagneticField * field() const
double covariance(int i, int j) const
(i, j)-th element of error matrix, i, j = 0, ... 2
Definition: Vertex.h:134
const Point & position() const
position
Definition: Vertex.h:113
T sqrt(T t)
Definition: SSEVec.h:19
T z() const
Definition: PV3DBase.h:61
TrajectoryStateOnSurface impactPointState() const
T x() const
Definition: PV3DBase.h:59

Member Data Documentation

const double reco::JetSignalVertexCompatibilityAlgo::cut
private

Definition at line 40 of file JetSignalVertexCompatibilityAlgo.h.

Referenced by activation().

const double reco::JetSignalVertexCompatibilityAlgo::temperature
private

Definition at line 41 of file JetSignalVertexCompatibilityAlgo.h.

Referenced by activation().

const TransientTrackBuilder* reco::JetSignalVertexCompatibilityAlgo::trackBuilder
private

Definition at line 38 of file JetSignalVertexCompatibilityAlgo.h.

Referenced by convert(), and resetEvent().

TransientTrackMap reco::JetSignalVertexCompatibilityAlgo::trackMap
mutableprivate

Definition at line 37 of file JetSignalVertexCompatibilityAlgo.h.

Referenced by convert(), and resetEvent().