CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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,
HitIter
Range
 

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

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

Definition at line 41 of file RecHitsSortedInPhi.h.

Definition at line 19 of file RecHitsSortedInPhi.h.

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

Definition at line 38 of file RecHitsSortedInPhi.h.

Definition at line 39 of file RecHitsSortedInPhi.h.

Constructor & Destructor Documentation

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, runTauDisplay::dr, drphi, du, dv, PVValHelper::dz, h, mps_fire::i, isBarrel, lphi, Basic3DVector< T >::perp(), 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< Hit > hits() const
std::vector< float > x
std::vector< float > lphi
std::vector< float > y
std::vector< float > v
std::vector< float > dv
std::vector< float > u
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

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
static void RecHitsSortedInPhi::copyResult ( const Range range,
std::vector< Hit > &  result 
)
inlinestatic

Definition at line 112 of file RecHitsSortedInPhi.h.

References mps_fire::i.

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  }
const uint16_t range(const Frame &aFrame)
tuple result
Definition: mps_fire.py:311
std::vector< HitWithPhi >::const_iterator HitIter
RecHitsSortedInPhi::DoubleRange RecHitsSortedInPhi::doubleRange ( float  phiMin,
float  phiMax 
) const

Definition at line 52 of file RecHitsSortedInPhi.cc.

References Geom::fpi(), Geom::ftwoPi(), 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()) {
57  r2 = unsafeRange(-Geom::fpi(), phiMax);
58  } else if (phiMax > Geom::pi()) {
59  r1 = unsafeRange(phiMin, Geom::fpi());
61  } else {
62  r1 = unsafeRange(phiMin, phiMax);
63  r2 = Range(theHits.begin(), theHits.begin());
64  }
65  } else {
66  r1 = unsafeRange(phiMin, Geom::fpi());
67  r2 = unsafeRange(-Geom::fpi(), phiMax);
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
Range unsafeRange(float phiMin, float phiMax) const
constexpr float ftwoPi()
Definition: Pi.h:36
constexpr float fpi()
Definition: Pi.h:35
std::pair< HitIter, HitIter > Range
std::array< int, 4 > DoubleRange
constexpr double pi()
Definition: Pi.h:31
bool RecHitsSortedInPhi::empty ( void  ) const
inline
GlobalPoint RecHitsSortedInPhi::gp ( int  i) const
inline

Definition at line 90 of file RecHitsSortedInPhi.h.

References 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
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
std::vector< RecHitsSortedInPhi::Hit > RecHitsSortedInPhi::hits ( float  phiMin,
float  phiMax 
) const
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(), Geom::pi(), 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 }
Range unsafeRange(float phiMin, float phiMax) const
constexpr float ftwoPi()
Definition: Pi.h:36
constexpr float fpi()
Definition: Pi.h:35
tuple result
Definition: mps_fire.py:311
static void copyResult(const Range &range, std::vector< Hit > &result)
constexpr double pi()
Definition: Pi.h:31
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().

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
tuple result
Definition: mps_fire.py:311
std::vector< HitWithPhi >::const_iterator HitIter
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
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
std::size_t RecHitsSortedInPhi::size ( void  ) const
inline

Definition at line 46 of file RecHitsSortedInPhi.h.

References theHits.

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), and HitPairGeneratorFromLayerPair::doublets().

46 { return theHits.size(); }
std::vector< HitWithPhi > theHits
RecHitsSortedInPhi::Range RecHitsSortedInPhi::unsafeRange ( float  phiMin,
float  phiMax 
) const

Definition at line 99 of file RecHitsSortedInPhi.cc.

References cuda_std::lower_bound(), theHits, and cuda_std::upper_bound().

Referenced by doubleRange(), and hits().

99  {
100  auto low = std::lower_bound(theHits.begin(), theHits.end(), HitWithPhi(phiMin), HitLessPhi());
101  return Range(low, std::upper_bound(low, theHits.end(), HitWithPhi(phiMax), HitLessPhi()));
102 }
std::vector< HitWithPhi > theHits
__host__ __device__ constexpr RandomIt upper_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
std::pair< HitIter, HitIter > Range
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})

Member Data Documentation

std::vector<float> RecHitsSortedInPhi::drphi
std::vector<float> RecHitsSortedInPhi::du
std::vector<float> RecHitsSortedInPhi::dv
bool RecHitsSortedInPhi::isBarrel
DetLayer const* RecHitsSortedInPhi::layer
std::vector<float> RecHitsSortedInPhi::lphi

Definition at line 110 of file RecHitsSortedInPhi.h.

Referenced by RecHitsSortedInPhi().

std::vector<HitWithPhi> RecHitsSortedInPhi::theHits
GlobalPoint RecHitsSortedInPhi::theOrigin

Definition at line 93 of file RecHitsSortedInPhi.h.

std::vector<float> RecHitsSortedInPhi::u

Definition at line 106 of file RecHitsSortedInPhi.h.

Referenced by RecHitsSortedInPhi(), and rv().

std::vector<float> RecHitsSortedInPhi::v

Definition at line 107 of file RecHitsSortedInPhi.h.

Referenced by RecHitsSortedInPhi(), and rv().

std::vector<float> RecHitsSortedInPhi::x
std::vector<float> RecHitsSortedInPhi::y
std::vector<float> RecHitsSortedInPhi::z