CMS 3D CMS Logo

ThirdHitPrediction.h
Go to the documentation of this file.
1 #ifndef _ThirdHitPrediction_h_
2 #define _ThirdHitPrediction_h_
3 
13 
17 
20 
21 class DetLayer;
22 class OrderedHitPair;
23 class TrackingRecHit;
24 
25 class MagneticField;
28 
31 
32 #include <vector>
33 #include <utility>
34 
36 public:
39 
43  const MagneticField& magfield,
44  const TransientTrackingRecHitBuilder& ttrhBuilder,
46  double maxAngleRatio);
48 
49  void getRanges(const DetLayer* layer, float phi[], float rz[]);
50  void getRanges(float rORz, float phi[], float rz[]);
51 
53  const std::vector<const TrackingRecHit*>& h,
54  std::vector<GlobalVector>& localDirs,
56 
57 private:
58  void initLayer(const DetLayer* layer);
59 
60  void printOut(char* text);
61 
62  void invertCircle(Global2DVector& c, float& r);
64 
65  std::pair<float, float> findMinimalCircles(float r);
66  std::pair<float, float> findTouchingCircles(float r);
67 
68  std::pair<float, float> findArcIntersection(std::pair<float, float> a, std::pair<float, float> b, bool& keep);
69 
70  void fitParabola(const float x[3], const float y[3], float par[3]);
71  void findRectangle(const float x[3], const float y[3], const float par[3], float phi[2], float z[2]);
72 
73  float areaParallelogram(const Global2DVector& a, const Global2DVector& b);
74  float angleRatio(const Global2DVector& p3, const Global2DVector& c);
75 
76  void spinCloser(float phi[3]);
77 
78  void calculateRangesBarrel(float r3, float phi[2], float z[2], bool keep);
79  void calculateRangesForward(float z3, float phi[2], float r[2], bool keep);
80  void calculateRanges(float rz3, float phi[2], float rz[2]);
81 
86 
88 
90 
91  // Data
92  float Bz, r0, rm;
95  std::pair<float, float> arc_0m;
96 
97  bool keep;
98 
99  double nSigma;
100  double maxRatio;
101 };
102 #endif
void findRectangle(const float x[3], const float y[3], const float par[3], float phi[2], float z[2])
void invertCircle(Global2DVector &c, float &r)
void initLayer(const DetLayer *layer)
void calculateRangesForward(float z3, float phi[2], float r[2], bool keep)
void calculateRangesBarrel(float r3, float phi[2], float z[2], bool keep)
void printOut(char *text)
float angleRatio(const Global2DVector &p3, const Global2DVector &c)
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
Vector2DBase< float, GlobalTag > Global2DVector
const DetLayer * theLayer
TkTrackingRegionsMargin< float > Margin
const TransientTrackingRecHitBuilder * theTTRecHitBuilder
float areaParallelogram(const Global2DVector &a, const Global2DVector &b)
PixelRecoRange< float > Range
std::pair< float, float > findMinimalCircles(float r)
PixelRecoLineRZ theLine
ThirdHitPrediction(const TrackingRegion &region, GlobalPoint inner, GlobalPoint outer, const MagneticField &magfield, const TransientTrackingRecHitBuilder &ttrhBuilder, double nSigMultipleScattering, double maxAngleRatio)
double b
Definition: hdecay.h:118
void spinCloser(float phi[3])
std::pair< float, float > findArcIntersection(std::pair< float, float > a, std::pair< float, float > b, bool &keep)
double a
Definition: hdecay.h:119
void invertPoint(Global2DVector &p)
void fitParabola(const float x[3], const float y[3], float par[3])
void calculateRanges(float rz3, float phi[2], float rz[2])
void getRanges(const DetLayer *layer, float phi[], float rz[])
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
std::pair< float, float > findTouchingCircles(float r)
std::pair< float, float > arc_0m
bool isCompatibleWithMultipleScattering(GlobalPoint g3, const std::vector< const TrackingRecHit *> &h, std::vector< GlobalVector > &localDirs, const MultipleScatteringParametrisationMaker &msmaker)