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

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(), watchdog::const, flavorHistoryFilter_cfi::dr, drphi, du, dv, PVValHelper::dz, h, AnalysisDataFormats_SUSYBSMObjects::hp, 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
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::vector< float > drphi
DetLayer const * layer
std::vector< float > z
std::vector< Hit > hits() const
std::vector< float > x
std::vector< float > lphi
susybsm::HSCParticleRefProd hp
Definition: classes.h:27
std::vector< float > y
std::vector< float > v
std::vector< float > dv
std::vector< float > u
Definition: AbsArchive.cc:45
std::vector< float > du

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  }
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(), createfilelist::int, Geom::pi(), diffTwoXMLs::r1, diffTwoXMLs::r2, theHits, and unsafeRange().

Referenced by HitPairGeneratorFromLayerPair::doublets(), and size().

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
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(), and size().

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
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
RecHitsSortedInPhi::Range RecHitsSortedInPhi::unsafeRange ( float  phiMin,
float  phiMax 
) const

Definition at line 99 of file RecHitsSortedInPhi.cc.

References LaserClient_cfi::low, and theHits.

Referenced by doubleRange(), hits(), and size().

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
std::pair< HitIter, HitIter > Range

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
std::vector<float> RecHitsSortedInPhi::v
std::vector<float> RecHitsSortedInPhi::x
std::vector<float> RecHitsSortedInPhi::y
std::vector<float> RecHitsSortedInPhi::z