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 
26 
29 
30 #include <vector>
31 #include <utility>
32 
34 public:
37 
41  const edm::EventSetup& es,
43  double maxAngleRatio,
44  std::string builderName);
46 
47  void getRanges(const DetLayer* layer, float phi[], float rz[]);
48  void getRanges(float rORz, float phi[], float rz[]);
49 
51  const std::vector<const TrackingRecHit*>& h,
52  std::vector<GlobalVector>& localDirs,
53  const edm::EventSetup& es);
54 
55 private:
56  void initLayer(const DetLayer* layer);
57 
58  void printOut(char* text);
59 
60  void invertCircle(Global2DVector& c, float& r);
62 
63  std::pair<float, float> findMinimalCircles(float r);
64  std::pair<float, float> findTouchingCircles(float r);
65 
66  std::pair<float, float> findArcIntersection(std::pair<float, float> a, std::pair<float, float> b, bool& keep);
67 
68  void fitParabola(const float x[3], const float y[3], float par[3]);
69  void findRectangle(const float x[3], const float y[3], const float par[3], float phi[2], float z[2]);
70 
71  float areaParallelogram(const Global2DVector& a, const Global2DVector& b);
72  float angleRatio(const Global2DVector& p3, const Global2DVector& c);
73 
74  void spinCloser(float phi[3]);
75 
76  void calculateRangesBarrel(float r3, float phi[2], float z[2], bool keep);
77  void calculateRangesForward(float z3, float phi[2], float r[2], bool keep);
78  void calculateRanges(float rz3, float phi[2], float rz[2]);
79 
81  Range theDetRange;
82  Margin theTolerance;
84 
86 
88 
89  // Data
90  float Bz, r0, rm;
93  std::pair<float, float> arc_0m;
94 
95  bool keep;
96 
97  double nSigma;
98  double maxRatio;
99 };
100 #endif
void findRectangle(const float x[3], const float y[3], const float par[3], float phi[2], float z[2])
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
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)
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
double b
Definition: hdecay.h:118
ThirdHitPrediction(const TrackingRegion &region, GlobalPoint inner, GlobalPoint outer, const edm::EventSetup &es, double nSigMultipleScattering, double maxAngleRatio, std::string builderName)
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])
bool isCompatibleWithMultipleScattering(GlobalPoint g3, const std::vector< const TrackingRecHit * > &h, std::vector< GlobalVector > &localDirs, const edm::EventSetup &es)
void getRanges(const DetLayer *layer, float phi[], float rz[])
std::pair< float, float > findTouchingCircles(float r)
std::pair< float, float > arc_0m
double p3[4]
Definition: TauolaWrapper.h:91