CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1MuonPixelTrackFitter.h
Go to the documentation of this file.
1 #ifndef RecoMuon_TrackerSeedGenerator_L1MuonPixelTrackFitter_H
2 #define RecoMuon_TrackerSeedGenerator_L1MuonPixelTrackFitter_H
3 
6 
12 
13 #include <vector>
14 
15 namespace edm {class EventSetup;}
16 namespace reco { class Track;}
17 
18 class TrackingRegion;
19 class TrackingRecHit;
20 class L1MuGMTCand;
21 class PixelRecoLineRZ;
22 class SeedingHitSet;
23 
25 
26 public:
27  class Circle {
28  public:
32  Circle(const GlobalPoint& h1, const GlobalPoint& h2, double curvature):theCurvature(curvature){
33  Point p1(h1); Point p2(h2); Vector dp = (p2-p1)/2.; int charge = theCurvature > 0 ? 1 : -1;
34  Vector ec = charge * dp.cross(Vector(0,0,1)).unit();
35  long double dist_tmp = 1./theCurvature/theCurvature - dp.perp2();
36  theValid = (dist_tmp > 0.);
37  theCenter = p1+dp + ec*sqrt( fabs(dist_tmp ) );
38  }
39  bool isValid() const { return theValid; }
40  const Point & center() const { return theCenter; }
41  const long double & curvature() const { return theCurvature; }
42  private:
43  bool theValid;
44  long double theCurvature;
46  };
47 
48 public:
51 
53 
54  void setL1Constraint(const L1MuGMTCand& muon);
55  void setPxConstraint(const SeedingHitSet & hits);
56 
57  virtual reco::Track* run(
58  const edm::EventSetup& es,
59  const std::vector<const TrackingRecHit *>& hits,
60  const TrackingRegion& region) const;
61 
62  static double getBending( double invPt, double eta, int charge);
63  static double getBendingError(double invPt, double eta);
64 private:
65 
66  double valInversePt( double phi0, double phiL1, double eta) const;
67  double errInversePt(double invPt, double eta) const;
68 
69  double valPhi(const Circle &c, int charge) const;
70  double errPhi(double invPt, double eta) const;
71 
72  double valCotTheta(const PixelRecoLineRZ& line) const;
73  double errCotTheta(double invPt, double eta) const;
74 
75  double valZip(double curvature, const GlobalPoint& p0, const GlobalPoint& p1) const;
76  double errZip(double invPt, double eta) const;
77 
78  double valTip(const Circle &c, double curvature) const;
79  double errTip(double invPt, double eta) const;
80 
81  double findPt(double phi0, double phiL1, double eta, int charge) const;
82  double deltaPhi( double phi1, double phi2) const;
83  static void param( double eta, double &p1, double& p2, double& p3);
84 
85 private:
86 
88 
89  // L1 constraint
91 
92  // Px constraint
94 
95 private:
96  friend class L1Seeding;
97 };
98 #endif
double errZip(double invPt, double eta) const
double errTip(double invPt, double eta) const
Vector3DBase< long double, GlobalTag > Vector
void setPxConstraint(const SeedingHitSet &hits)
double findPt(double phi0, double phiL1, double eta, int charge) const
double valTip(const Circle &c, double curvature) const
static double getBendingError(double invPt, double eta)
T perp2() const
Definition: PV3DBase.h:70
T eta() const
double charge(const std::vector< uint8_t > &Ampls)
double valPhi(const Circle &c, int charge) const
Point3DBase< long double, GlobalTag > Point
T curvature(T InversePt, const edm::EventSetup &iSetup)
static void param(double eta, double &p1, double &p2, double &p3)
T sqrt(T t)
Definition: SSEVec.h:46
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
Definition: Vector3DBase.h:119
virtual reco::Track * run(const edm::EventSetup &es, const std::vector< const TrackingRecHit * > &hits, const TrackingRegion &region) const
double valZip(double curvature, const GlobalPoint &p0, const GlobalPoint &p1) const
static double getBending(double invPt, double eta, int charge)
double p2[4]
Definition: TauolaWrapper.h:90
const long double & curvature() const
double deltaPhi(double phi1, double phi2) const
double valInversePt(double phi0, double phiL1, double eta) const
double errInversePt(double invPt, double eta) const
double p1[4]
Definition: TauolaWrapper.h:89
void setL1Constraint(const L1MuGMTCand &muon)
Circle(const GlobalPoint &h1, const GlobalPoint &h2, double curvature)
double valCotTheta(const PixelRecoLineRZ &line) const
double errPhi(double invPt, double eta) const
double errCotTheta(double invPt, double eta) const
double p3[4]
Definition: TauolaWrapper.h:91