CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FastPixelHitMatcher.h
Go to the documentation of this file.
1 #ifndef FastPixelHitMatcher_H
2 #define FastPixelHitMatcher_H
3 
4 // -*- C++ -*-
5 //
6 // Package: EgammaElectronAlgos
7 // Class: FastPixelHitMatcher
8 //
17 //
18 // Original Author: Patrick Janot.
19 //
20 //
21 
24 #include <vector>
25 
30 class TrackerGeometry;
33 class TrackerLayer;
34 class TrackingRecHit;
35 class ParticlePropagator;
36 class MagneticFieldMap;
37 
39 
40  public:
41  //RC
45 
46 
47  FastPixelHitMatcher(float,float,float,float,float,float,float,float,float,float,float,float,bool);
48 
49  virtual ~FastPixelHitMatcher();
50 
51  void setES(const MagneticFieldMap* aFieldMap,
52  const TrackerGeometry* aTrackerGeometry,
53  const GeometricSearchTracker* geomSearchTracker,
54  const TrackerInteractionGeometry* interactionGeometry);
55 
56  std::vector< std::pair<ConstRecHitPointer,ConstRecHitPointer> >
57  compatibleHits(const GlobalPoint& xmeas,
58  const GlobalPoint& vprim,
59  float energy,
60  std::vector<TrajectorySeedHitCandidate>& theHits);
61 
62  inline double getVertex() { return vertex; }
63 
64  void set1stLayer (float ephimin, float ephimax,
65  float pphimin, float pphimax) {
66 
67  ephi1min = ephimin;
68  ephi1max = ephimax;
69  pphi1min = pphimin;
70  pphi1max = pphimax;
71 
72  }
73 
74  void set2ndLayer (float phimin, float phimax) {
75  phi2min = phimin;
76  phi2max = phimax;
77  }
78 
79  bool isASeed(const ParticlePropagator& myElec,
80  const ParticlePropagator& myPosi,
81  const GlobalPoint& theVertex,
82  double rCluster,
83  double zCluster,
84  const TrajectorySeedHitCandidate& hit1,
85  const TrajectorySeedHitCandidate& hit2);
86 
88  const GlobalPoint& theVertex,
89  GlobalPoint& theHit,
90  double phimin,
91  double phimax,
92  unsigned layer);
93 
94  double zVertex(double zCluster,
95  double rCluster,
96  GlobalPoint& theHit);
97 
98  bool checkRZCompatibility(double zCluster,double rCluster,
99  double zVertex,
100  float rzMin, float rzMax,
101  GlobalPoint& theHit,
102  bool forward);
103 
104 
105  void set1stLayerZRange(double zmin1, double zmax1) {
106  z1max = zmax1;
107  z1min = zmin1;
108  }
109 
110  private:
111 
113 
116  float phi2min, phi2max;
117  float z1min, z1max;
118  float z2minB, z2maxB;
119  float r2minF, r2maxF;
120  float rMinI, rMaxI;
122 
128  std::vector<const TrackerLayer*> thePixelLayers;
129  double vertex;
130 
131 
132 };
133 
134 #endif
135 
136 
137 
138 
139 
140 
141 
142 
std::vector< ConstRecHitPointer > RecHitContainer
TransientTrackingRecHit::RecHitContainer RecHitContainer
TransientTrackingRecHit::RecHitPointer RecHitPointer
void set1stLayer(float ephimin, float ephimax, float pphimin, float pphimax)
std::vector< const TrackerLayer * > thePixelLayers
double zVertex(double zCluster, double rCluster, GlobalPoint &theHit)
void set1stLayerZRange(double zmin1, double zmax1)
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
bool isASeed(const ParticlePropagator &myElec, const ParticlePropagator &myPosi, const GlobalPoint &theVertex, double rCluster, double zCluster, const TrajectorySeedHitCandidate &hit1, const TrajectorySeedHitCandidate &hit2)
std::shared_ptr< TrackingRecHit const > RecHitPointer
bool propagateToLayer(ParticlePropagator &myPart, const GlobalPoint &theVertex, GlobalPoint &theHit, double phimin, double phimax, unsigned layer)
const GeometricSearchTracker * theGeomSearchTracker
const MagneticFieldMap * theFieldMap
std::vector< std::pair< ConstRecHitPointer, ConstRecHitPointer > > compatibleHits(const GlobalPoint &xmeas, const GlobalPoint &vprim, float energy, std::vector< TrajectorySeedHitCandidate > &theHits)
FastPixelHitMatcher(float, float, float, float, float, float, float, float, float, float, float, float, bool)
const TrackerGeometry * theTrackerGeometry
const TrackerInteractionGeometry * _theGeometry
bool checkRZCompatibility(double zCluster, double rCluster, double zVertex, float rzMin, float rzMax, GlobalPoint &theHit, bool forward)
void setES(const MagneticFieldMap *aFieldMap, const TrackerGeometry *aTrackerGeometry, const GeometricSearchTracker *geomSearchTracker, const TrackerInteractionGeometry *interactionGeometry)
const MagneticField * theMagneticField
void set2ndLayer(float phimin, float phimax)
RecHitContainer hitsInTrack