CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes
RecHitsSortedInPhi Class Reference

#include <RecHitsSortedInPhi.h>

Classes

struct  HitLessPhi
 
class  HitWithPhi
 

Public Types

using DoubleRange = std::array< int, 4 >
 
typedef BaseTrackerRecHit const * Hit
 
typedef std::vector< HitWithPhi >::const_iterator HitIter
 
typedef std::pair< HitIter, HitIterRange
 

Public Member Functions

Range all () const
 
DoubleRange doubleRange (float phiMin, float phiMax) const
 
bool empty () const
 
GlobalPoint gp (int i) const
 
float gv (int i) const
 
std::vector< Hithits (float phiMin, float phiMax) const
 
void hits (float phiMin, float phiMax, std::vector< Hit > &result) const
 
std::vector< Hithits () const
 
float phi (int i) const
 
 RecHitsSortedInPhi (const std::vector< Hit > &hits, GlobalPoint const &origin, DetLayer const *il)
 
float rv (int i) const
 
std::size_t size () const
 
Range unsafeRange (float phiMin, float phiMax) const
 

Static Public Member Functions

static void copyResult (const Range &range, std::vector< Hit > &result)
 

Public Attributes

std::vector< float > drphi
 
std::vector< float > du
 
std::vector< float > dv
 
bool isBarrel
 
DetLayer const * layer
 
std::vector< float > lphi
 
std::vector< HitWithPhitheHits
 
GlobalPoint theOrigin
 
std::vector< float > u
 
std::vector< float > v
 
std::vector< float > x
 
std::vector< float > y
 
std::vector< float > z
 

Detailed Description

A RecHit container sorted in phi. Provides fast access for hits in a given phi window using binary search.

Definition at line 17 of file RecHitsSortedInPhi.h.

Member Typedef Documentation

◆ DoubleRange

using RecHitsSortedInPhi::DoubleRange = std::array<int, 4>

Definition at line 41 of file RecHitsSortedInPhi.h.

◆ Hit

Definition at line 19 of file RecHitsSortedInPhi.h.

◆ HitIter

typedef std::vector<HitWithPhi>::const_iterator RecHitsSortedInPhi::HitIter

Definition at line 38 of file RecHitsSortedInPhi.h.

◆ Range

Definition at line 39 of file RecHitsSortedInPhi.h.

Constructor & Destructor Documentation

◆ RecHitsSortedInPhi()

RecHitsSortedInPhi::RecHitsSortedInPhi ( const std::vector< Hit > &  hits,
GlobalPoint const &  origin,
DetLayer const *  il 
)

Definition at line 7 of file RecHitsSortedInPhi.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), runTheMatrix::const, flavorHistoryFilter_cfi::dr, drphi, du, dv, PVValHelper::dz, h, hits(), trackingPlots::hp, mps_fire::i, isBarrel, lphi, Basic3DVector< T >::perp(), jetUpdater_cfi::sort, theHits, u, v, x, y, and z.

8  : layer(il),
9  isBarrel(il->isBarrel()),
10  x(hits.size()),
11  y(hits.size()),
12  z(hits.size()),
13  drphi(hits.size()),
14  u(hits.size()),
15  v(hits.size()),
16  du(hits.size()),
17  dv(hits.size()),
18  lphi(hits.size()) {
19  // standard region have origin as 0,0,z (not true!!!!0
20  // cosmic region never used here
21  // assert(origin.x()==0 && origin.y()==0);
22 
23  theHits.reserve(hits.size());
24  for (auto const& hp : hits)
25  theHits.emplace_back(hp);
26 
27  std::sort(theHits.begin(), theHits.end(), HitLessPhi());
28 
29  for (unsigned int i = 0; i != theHits.size(); ++i) {
30  auto const& h = *theHits[i].hit();
31  auto const& gs = static_cast<BaseTrackerRecHit const&>(h).globalState();
32  auto loc = gs.position - origin.basicVector();
33  float lr = loc.perp();
34  // float lr = gs.position.perp();
35  float lz = gs.position.z();
36  float dr = gs.errorR;
37  float dz = gs.errorZ;
38  // r[i] = gs.position.perp();
39  // phi[i] = gs.position.barePhi();
40  x[i] = gs.position.x();
41  y[i] = gs.position.y();
42  z[i] = lz;
43  drphi[i] = gs.errorRPhi;
44  u[i] = isBarrel ? lr : lz;
45  v[i] = isBarrel ? lz : lr;
46  du[i] = isBarrel ? dr : dz;
47  dv[i] = isBarrel ? dz : dr;
48  lphi[i] = loc.barePhi();
49  }
50 }
std::vector< HitWithPhi > theHits
std::vector< float > drphi
DetLayer const * layer
std::vector< float > z
std::vector< float > x
std::vector< float > lphi
std::vector< float > y
std::vector< float > v
std::vector< Hit > hits() const
std::vector< float > dv
std::vector< float > u
Definition: AbsArchive.cc:46
std::vector< float > du
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4

Member Function Documentation

◆ all()

Range RecHitsSortedInPhi::all ( ) const
inline

Definition at line 84 of file RecHitsSortedInPhi.h.

References theHits.

Referenced by HitQuadrupletGeneratorFromLayerPairForPhotonConversion::hitPairs(), MultiHitGeneratorFromChi2::hitSets(), and LayerHitMapCache::operator()().

84 { return Range(theHits.begin(), theHits.end()); }
std::vector< HitWithPhi > theHits
std::pair< HitIter, HitIter > Range

◆ copyResult()

static void RecHitsSortedInPhi::copyResult ( const Range range,
std::vector< Hit > &  result 
)
inlinestatic

Definition at line 112 of file RecHitsSortedInPhi.h.

References mps_fire::i, FastTimerService_cff::range, and mps_fire::result.

Referenced by hits().

112  {
113  result.reserve(result.size() + (range.second - range.first));
114  for (HitIter i = range.first; i != range.second; i++)
115  result.push_back(i->hit());
116  }
std::vector< HitWithPhi >::const_iterator HitIter

◆ doubleRange()

RecHitsSortedInPhi::DoubleRange RecHitsSortedInPhi::doubleRange ( float  phiMin,
float  phiMax 
) const

Definition at line 52 of file RecHitsSortedInPhi.cc.

References Geom::fpi(), Geom::ftwoPi(), createfilelist::int, AlignmentTrackSelector_cfi::phiMax, AlignmentTrackSelector_cfi::phiMin, Geom::pi(), diffTwoXMLs::r1, diffTwoXMLs::r2, theHits, and unsafeRange().

Referenced by HitPairGeneratorFromLayerPair::doublets().

52  {
53  Range r1, r2;
54  if (phiMin < phiMax) {
55  if (phiMin < -Geom::fpi()) {
58  } else if (phiMax > Geom::pi()) {
61  } else {
63  r2 = Range(theHits.begin(), theHits.begin());
64  }
65  } else {
68  }
69 
70  return (DoubleRange){{int(r1.first - theHits.begin()),
71  int(r1.second - theHits.begin()),
72  int(r2.first - theHits.begin()),
73  int(r2.second - theHits.begin())}};
74 }
std::vector< HitWithPhi > theHits
constexpr float ftwoPi()
Definition: Pi.h:36
constexpr float fpi()
Definition: Pi.h:35
Range unsafeRange(float phiMin, float phiMax) const
std::pair< HitIter, HitIter > Range
std::array< int, 4 > DoubleRange
constexpr double pi()
Definition: Pi.h:31

◆ empty()

bool RecHitsSortedInPhi::empty ( void  ) const
inline

◆ gp()

GlobalPoint RecHitsSortedInPhi::gp ( int  i) const
inline

Definition at line 90 of file RecHitsSortedInPhi.h.

References mps_fire::i, x, y, and z.

Referenced by gv().

90 { return GlobalPoint(x[i], y[i], z[i]); }
std::vector< float > z
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::vector< float > x
std::vector< float > y

◆ gv()

float RecHitsSortedInPhi::gv ( int  i) const
inline

Definition at line 88 of file RecHitsSortedInPhi.h.

References gp(), mps_fire::i, isBarrel, PV3DBase< T, PVType, FrameType >::perp(), and z.

88 { return isBarrel ? z[i] : gp(i).perp(); } // global v
T perp() const
Definition: PV3DBase.h:69
std::vector< float > z
GlobalPoint gp(int i) const

◆ hits() [1/3]

std::vector< RecHitsSortedInPhi::Hit > RecHitsSortedInPhi::hits ( float  phiMin,
float  phiMax 
) const

◆ hits() [2/3]

void RecHitsSortedInPhi::hits ( float  phiMin,
float  phiMax,
std::vector< Hit > &  result 
) const

Definition at line 76 of file RecHitsSortedInPhi.cc.

References copyResult(), Geom::fpi(), Geom::ftwoPi(), AlignmentTrackSelector_cfi::phiMax, AlignmentTrackSelector_cfi::phiMin, Geom::pi(), mps_fire::result, and unsafeRange().

76  {
77  if (phiMin < phiMax) {
78  if (phiMin < -Geom::fpi()) {
81  } else if (phiMax > Geom::pi()) {
84  } else {
86  }
87  } else {
90  }
91 }
constexpr float ftwoPi()
Definition: Pi.h:36
constexpr float fpi()
Definition: Pi.h:35
Range unsafeRange(float phiMin, float phiMax) const
static void copyResult(const Range &range, std::vector< Hit > &result)
constexpr double pi()
Definition: Pi.h:31

◆ hits() [3/3]

std::vector<Hit> RecHitsSortedInPhi::hits ( void  ) const
inline

Definition at line 76 of file RecHitsSortedInPhi.h.

References mps_fire::i, mps_fire::result, and theHits.

Referenced by hits(), and RecHitsSortedInPhi().

76  {
77  std::vector<Hit> result;
78  result.reserve(theHits.size());
79  for (HitIter i = theHits.begin(); i != theHits.end(); i++)
80  result.push_back(i->hit());
81  return result;
82  }
std::vector< HitWithPhi > theHits
std::vector< HitWithPhi >::const_iterator HitIter

◆ phi()

float RecHitsSortedInPhi::phi ( int  i) const
inline

Definition at line 87 of file RecHitsSortedInPhi.h.

References mps_fire::i, and theHits.

Referenced by Particle.Particle::__str__(), and ntupleDataFormat.Track::phiPull().

87 { return theHits[i].phi(); }
std::vector< HitWithPhi > theHits

◆ rv()

float RecHitsSortedInPhi::rv ( int  i) const
inline

Definition at line 89 of file RecHitsSortedInPhi.h.

References mps_fire::i, isBarrel, u, and v.

Referenced by HitPairGeneratorFromLayerPair::doublets().

89 { return isBarrel ? u[i] : v[i]; } // dispaced r
std::vector< float > v
std::vector< float > u

◆ size()

std::size_t RecHitsSortedInPhi::size ( void  ) const
inline

◆ unsafeRange()

RecHitsSortedInPhi::Range RecHitsSortedInPhi::unsafeRange ( float  phiMin,
float  phiMax 
) const

Member Data Documentation

◆ drphi

std::vector<float> RecHitsSortedInPhi::drphi

◆ du

std::vector<float> RecHitsSortedInPhi::du

◆ dv

std::vector<float> RecHitsSortedInPhi::dv

◆ isBarrel

bool RecHitsSortedInPhi::isBarrel

◆ layer

DetLayer const* RecHitsSortedInPhi::layer

◆ lphi

std::vector<float> RecHitsSortedInPhi::lphi

Definition at line 110 of file RecHitsSortedInPhi.h.

Referenced by RecHitsSortedInPhi().

◆ theHits

std::vector<HitWithPhi> RecHitsSortedInPhi::theHits

◆ theOrigin

GlobalPoint RecHitsSortedInPhi::theOrigin

Definition at line 93 of file RecHitsSortedInPhi.h.

◆ u

std::vector<float> RecHitsSortedInPhi::u

Definition at line 106 of file RecHitsSortedInPhi.h.

Referenced by RecHitsSortedInPhi(), and rv().

◆ v

std::vector<float> RecHitsSortedInPhi::v

Definition at line 107 of file RecHitsSortedInPhi.h.

Referenced by RecHitsSortedInPhi(), and rv().

◆ x

std::vector<float> RecHitsSortedInPhi::x

◆ y

std::vector<float> RecHitsSortedInPhi::y

◆ z

std::vector<float> RecHitsSortedInPhi::z