CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
CTPPSDiamondTrackRecognition Class Reference

Class performing smart reconstruction for PPS Diamond Detectors. More...

#include <CTPPSDiamondTrackRecognition.h>

Inheritance diagram for CTPPSDiamondTrackRecognition:
CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >

Public Member Functions

void addHit (const CTPPSDiamondRecHit &recHit) override
 Feed a new hit to the tracks recognition algorithm. More...
 
void clear () override
 Reset internal state of a class instance. More...
 
 CTPPSDiamondTrackRecognition (const edm::ParameterSet &iConfig)
 
int produceTracks (edm::DetSet< CTPPSDiamondLocalTrack > &tracks) override
 Produce a collection of tracks for the current station, given its hits collection. More...
 
- Public Member Functions inherited from CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >
 CTPPSTimingTrackRecognition (const edm::ParameterSet &iConfig)
 
virtual ~CTPPSTimingTrackRecognition ()=default
 

Private Attributes

bool excludeSingleEdgeHits_
 
std::unordered_map< int, int > mhMap_
 

Additional Inherited Members

- Protected Types inherited from CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >
typedef std::vector< CTPPSDiamondRecHitHitVector
 
typedef std::unordered_map< int, HitVectorHitVectorMap
 
typedef std::vector< CTPPSDiamondLocalTrackTrackVector
 
- Protected Member Functions inherited from CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >
SpatialRange getHitSpatialRange (const HitVector &hits)
 
void producePartialTracks (const HitVector &hits, const DimensionParameters &param, float(*getHitCenter)(const CTPPSDiamondRecHit &), float(*getHitRangeWidth)(const CTPPSDiamondRecHit &), void(*setTrackCenter)(CTPPSDiamondLocalTrack &, float), void(*setTrackSigma)(CTPPSDiamondLocalTrack &, float), TrackVector &result)
 
bool timeEval (const HitVector &hits, float &meanTime, float &timeSigma) const
 
- Protected Attributes inherited from CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >
HitVectorMap hitVectorMap_
 RecHit vectors that should be processed separately while reconstructing tracks. More...
 
reco::FormulaEvaluator pixelEfficiencyFunction_
 
const float resolution_
 
const float sigma_
 
const float threshold_
 
const float thresholdFromMaximum_
 
const float tolerance_
 

Detailed Description

Class performing smart reconstruction for PPS Diamond Detectors.

Date
Jan 2017

Definition at line 26 of file CTPPSDiamondTrackRecognition.h.

Constructor & Destructor Documentation

CTPPSDiamondTrackRecognition::CTPPSDiamondTrackRecognition ( const edm::ParameterSet iConfig)

Member Function Documentation

void CTPPSDiamondTrackRecognition::addHit ( const CTPPSDiamondRecHit recHit)
overridevirtual

Feed a new hit to the tracks recognition algorithm.

Implements CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >.

Definition at line 28 of file CTPPSDiamondTrackRecognition.cc.

References excludeSingleEdgeHits_, CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >::hitVectorMap_, CTPPSDiamondRecHit::ootIndex(), and CTPPSDiamondRecHit::toT().

Referenced by CTPPSDiamondLocalTrackFitter::produce().

28  {
29  if (excludeSingleEdgeHits_ && recHit.toT() <= 0.)
30  return;
31  // store hit parameters
32  hitVectorMap_[recHit.ootIndex()].emplace_back(recHit);
33 }
HitVectorMap hitVectorMap_
RecHit vectors that should be processed separately while reconstructing tracks.
void CTPPSDiamondTrackRecognition::clear ( void  )
overridevirtual

Reset internal state of a class instance.

Reimplemented from CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >.

Definition at line 21 of file CTPPSDiamondTrackRecognition.cc.

References CTPPSTimingTrackRecognition< TRACK_TYPE, HIT_TYPE >::clear(), and mhMap_.

Referenced by CTPPSDiamondLocalTrackFitter::produce().

21  {
23  mhMap_.clear();
24 }
virtual void clear()
Reset internal state of a class instance.
std::unordered_map< int, int > mhMap_
int CTPPSDiamondTrackRecognition::produceTracks ( edm::DetSet< CTPPSDiamondLocalTrack > &  tracks)
overridevirtual

Produce a collection of tracks for the current station, given its hits collection.

Implements CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >.

Definition at line 37 of file CTPPSDiamondTrackRecognition.cc.

References CTPPSDiamondLocalTrack::containsHit(), excludeSingleEdgeHits_, f, CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >::getHitSpatialRange(), hfClusterShapes_cfi::hits, CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >::hitVectorMap_, mhMap_, position, CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >::producePartialTracks(), edm::DetSet< T >::push_back(), CTPPSTimingLocalTrack::setPosition(), CTPPSTimingLocalTrack::setPositionSigma(), CTPPSTimingLocalTrack::setTime(), CTPPSTimingLocalTrack::setTimeSigma(), CTPPSTimingLocalTrack::setValid(), CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >::timeEval(), CTPPSTimingTrackRecognition< CTPPSDiamondLocalTrack, CTPPSDiamondRecHit >::tolerance_, HLT_2018_cff::track, x, and hit::x.

Referenced by CTPPSDiamondLocalTrackFitter::produce().

37  {
38  int numberOfTracks = 0;
39  DimensionParameters param;
40 
41  auto getX = [](const CTPPSDiamondRecHit& hit) { return hit.x(); };
42  auto getXWidth = [](const CTPPSDiamondRecHit& hit) { return hit.xWidth(); };
43  auto setX = [](CTPPSDiamondLocalTrack& track, float x) { track.setPosition(math::XYZPoint(x, 0., 0.)); };
44  auto setXSigma = [](CTPPSDiamondLocalTrack& track, float sigma) {
45  track.setPositionSigma(math::XYZPoint(sigma, 0., 0.));
46  };
47 
48  for (const auto& hitBatch : hitVectorMap_) {
49  // separate the tracking for each bunch crossing
50  const auto& oot = hitBatch.first;
51  const auto& hits = hitBatch.second;
52 
53  auto hitRange = getHitSpatialRange(hits);
54 
55  TrackVector xPartTracks;
56 
57  // produce tracks in x dimension
58  param.rangeBegin = hitRange.xBegin;
59  param.rangeEnd = hitRange.xEnd;
60  producePartialTracks(hits, param, getX, getXWidth, setX, setXSigma, xPartTracks);
61 
62  if (xPartTracks.empty())
63  continue;
64 
65  const float yRangeCenter = 0.5f * (hitRange.yBegin + hitRange.yEnd);
66  const float zRangeCenter = 0.5f * (hitRange.zBegin + hitRange.zEnd);
67  const float ySigma = 0.5f * (hitRange.yEnd - hitRange.yBegin);
68  const float zSigma = 0.5f * (hitRange.zEnd - hitRange.zBegin);
69 
70  for (const auto& xTrack : xPartTracks) {
71  math::XYZPoint position(xTrack.x0(), yRangeCenter, zRangeCenter);
72  math::XYZPoint positionSigma(xTrack.x0Sigma(), ySigma, zSigma);
73 
74  const int multipleHits = (mhMap_.find(oot) != mhMap_.end()) ? mhMap_[oot] : 0;
75  CTPPSDiamondLocalTrack newTrack(position, positionSigma, 0.f, 0.f, oot, multipleHits);
76 
77  // find contributing hits
78  HitVector componentHits;
79  for (const auto& hit : hits)
80  if (newTrack.containsHit(hit, tolerance_) && (!excludeSingleEdgeHits_ || hit.toT() > 0.))
81  componentHits.emplace_back(hit);
82  // compute timing information
83  float mean_time = 0.f, time_sigma = 0.f;
84  bool valid_hits = timeEval(componentHits, mean_time, time_sigma);
85  newTrack.setValid(valid_hits);
86  newTrack.setTime(mean_time);
87  newTrack.setTimeSigma(time_sigma);
88 
89  tracks.push_back(newTrack);
90  }
91  }
92 
93  return numberOfTracks;
94 }
void push_back(const T &t)
Definition: DetSet.h:67
void producePartialTracks(const HitVector &hits, const DimensionParameters &param, float(*getHitCenter)(const CTPPSDiamondRecHit &), float(*getHitRangeWidth)(const CTPPSDiamondRecHit &), void(*setTrackCenter)(CTPPSDiamondLocalTrack &, float), void(*setTrackSigma)(CTPPSDiamondLocalTrack &, float), TrackVector &result)
Reconstructed hit in diamond detectors.
bool timeEval(const HitVector &hits, float &meanTime, float &timeSigma) const
double f[11][100]
void setPosition(const math::XYZPoint &pos0)
HitVectorMap hitVectorMap_
RecHit vectors that should be processed separately while reconstructing tracks.
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::unordered_map< int, int > mhMap_
static int position[264][3]
Definition: ReadPGInfo.cc:289
void setPositionSigma(const math::XYZPoint &pos0_sigma)

Member Data Documentation

bool CTPPSDiamondTrackRecognition::excludeSingleEdgeHits_
private

Definition at line 38 of file CTPPSDiamondTrackRecognition.h.

Referenced by addHit(), and produceTracks().

std::unordered_map<int, int> CTPPSDiamondTrackRecognition::mhMap_
private

Definition at line 37 of file CTPPSDiamondTrackRecognition.h.

Referenced by clear(), and produceTracks().