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 
40 const edm::EventSetup& es, double nSigMultipleScattering, double
41 maxAngleRatio, std::string builderName);
43 
44  void getRanges(const DetLayer *layer, float phi[],float rz[]);
45  void getRanges(float rORz , float phi[],float rz[]);
46 
48  (GlobalPoint g3, const std::vector<const TrackingRecHit*>& h,
49  std::vector<GlobalVector>& localDirs, const edm::EventSetup& es);
50 
51 private:
52  void initLayer(const DetLayer *layer);
53 
54  void printOut(char *text);
55 
56  void invertCircle(Global2DVector& c,float& r);
58 
59  std::pair<float,float> findMinimalCircles (float r);
60  std::pair<float,float> findTouchingCircles(float r);
61 
62  std::pair<float,float> findArcIntersection
63  (std::pair<float,float> a, std::pair<float,float> b, bool& keep);
64 
65  void fitParabola
66  (const float x[3], const float y[3], float par[3]);
67  void findRectangle
68  (const float x[3], const float y[3], const float par[3],
69  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 
85  const DetLayer * theLayer;
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])
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
std::pair< float, float > arc_0m
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:120
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:121
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)
double p3[4]
Definition: TauolaWrapper.h:91