CMS 3D CMS Logo

RPCSeedPattern.h
Go to the documentation of this file.
1 #ifndef MRecoMuon_MuonSeedGenerator_RPCSeedPattern_H
2 #define MRecoMuon_MuonSeedGenerator_RPCSeedPattern_H
3 
18 #include <vector>
19 
20 #ifndef upper_limit_pt
21 #define upper_limit_pt 100
22 #endif
23 
24 #ifndef lower_limit_pt
25 #define lower_limit_pt 3.0
26 #endif
27 
28 class RPCGeometry;
29 
35 
36 public:
37  typedef std::pair<ConstMuonRecHitPointer, ConstMuonRecHitPointer> RPCSegment;
38  typedef std::pair<TrajectorySeed, double> weightedTrajectorySeed;
39 
40 public:
43  void configure(const edm::ParameterSet& iConfig);
44  void clear() { theRecHits.clear(); }
45  void add(const ConstMuonRecHitPointer& hit) { theRecHits.push_back(hit); }
46  unsigned int nrhit() const { return theRecHits.size(); }
47 
48 private:
49  friend class RPCSeedFinder;
50  weightedTrajectorySeed seed(const MagneticField& Field, const RPCGeometry& rpcGeom, int& isGoodSeed);
51  void ThreePointsAlgorithm();
52  void MiddlePointsAlgorithm();
53  void SegmentAlgorithm();
54  void SegmentAlgorithmSpecial(const MagneticField& Field);
55  bool checkSegment() const;
59  const ConstMuonRecHitPointer& best);
60  weightedTrajectorySeed createFakeSeed(int& isGoodSeed, const MagneticField&);
61  weightedTrajectorySeed createSeed(int& isGoodSeed, const MagneticField&);
62  double getDistance(const ConstMuonRecHitPointer& precHit, const GlobalVector& Center) const;
63  bool checkStraightwithThreerecHits(ConstMuonRecHitPointer (&precHit)[3], double MinDeltaPhi) const;
64  GlobalVector computePtwithThreerecHits(double& pt, double& pt_err, ConstMuonRecHitPointer (&precHit)[3]) const;
65  bool checkStraightwithSegment(const RPCSegment& Segment1, const RPCSegment& Segment2, double MinDeltaPhi) const;
66  GlobalVector computePtwithSegment(const RPCSegment& Segment1, const RPCSegment& Segment2) const;
67  bool checkStraightwithThreerecHits(double (&x)[3], double (&y)[3], double MinDeltaPhi) const;
68  GlobalVector computePtWithThreerecHits(double& pt, double& pt_err, double (&x)[3], double (&y)[3]) const;
69 
70  void checkSimplePattern(const MagneticField& Field);
71  void checkSegmentAlgorithmSpecial(const MagneticField& Field, const RPCGeometry& rpcGeometry);
72  double extropolateStep(const GlobalPoint& startPosition,
73  const GlobalVector& startMomentum,
74  ConstMuonRecHitContainer::const_iterator iter,
75  const int ClockwiseDirection,
76  double& tracklength,
77  const MagneticField& Field,
78  const RPCGeometry& rpcGeometry);
79 
80  //void computeBestPt(double* pt, double* spt, double& ptmean0, double& sptmean0, unsigned int NumberofPt) const;
81 
82  // ----------member data ---------------------------
83 
84  // parameters for configuration
85  double MaxRSD;
87  unsigned int AlgorithmType;
89  double ZError;
90  double MinDeltaPhi;
91  double stepLength;
92  unsigned int sampleCount;
93  // Signals for run seed()
95  // recHits of a pattern
97  // Complex pattern
102  double meanRadius2;
106  double lastPhi;
107  double S;
108  // Simple pattern
111  double meanRadius;
112  double meanBz;
113  double deltaBz;
114  // Pattern estimation part
119  int Charge;
120  double meanPt;
121  double meanSpt;
123 };
124 
125 #endif
MuonTransientTrackingRecHit::ConstMuonRecHitPointer ConstMuonRecHitPointer
double extropolateStep(const GlobalPoint &startPosition, const GlobalVector &startMomentum, ConstMuonRecHitContainer::const_iterator iter, const int ClockwiseDirection, double &tracklength, const MagneticField &Field, const RPCGeometry &rpcGeometry)
void configure(const edm::ParameterSet &iConfig)
ConstMuonRecHitPointer BestRefRecHit() const
weightedTrajectorySeed createSeed(int &isGoodSeed, const MagneticField &)
void MiddlePointsAlgorithm()
double MagnecticFieldThreshold
GlobalPoint entryPosition
GlobalVector Momentum
std::pair< ConstMuonRecHitPointer, ConstMuonRecHitPointer > RPCSegment
GlobalVector computePtWithThreerecHits(double &pt, double &pt_err, double(&x)[3], double(&y)[3]) const
LocalTrajectoryError getSpecialAlgorithmErrorMatrix(const ConstMuonRecHitPointer &first, const ConstMuonRecHitPointer &best)
bool autoAlgorithmChoose
double deltaRThreshold
RPCSegment SegmentRB[2]
MuonTransientTrackingRecHit::ConstMuonRecHitContainer ConstMuonRecHitContainer
MuonTransientTrackingRecHit::MuonRecHitContainer MuonRecHitContainer
std::shared_ptr< MuonTransientTrackingRecHit > MuonRecHitPointer
GlobalVector computePtwithSegment(const RPCSegment &Segment1, const RPCSegment &Segment2) const
bool checkSegment() const
ConstMuonRecHitContainer theRecHits
void ThreePointsAlgorithm()
bool checkStraightwithThreerecHits(ConstMuonRecHitPointer(&precHit)[3], double MinDeltaPhi) const
double getDistance(const ConstMuonRecHitPointer &precHit, const GlobalVector &Center) const
void SegmentAlgorithmSpecial(const MagneticField &Field)
GlobalVector Center
std::pair< TrajectorySeed, double > weightedTrajectorySeed
ConstMuonRecHitPointer FirstRecHit() const
std::vector< ConstMuonRecHitPointer > ConstMuonRecHitContainer
GlobalVector Center2
void checkSegmentAlgorithmSpecial(const MagneticField &Field, const RPCGeometry &rpcGeometry)
unsigned int AlgorithmType
unsigned int nrhit() const
GlobalVector meanMagneticField2
void checkSimplePattern(const MagneticField &Field)
void add(const ConstMuonRecHitPointer &hit)
bool checkStraightwithSegment(const RPCSegment &Segment1, const RPCSegment &Segment2, double MinDeltaPhi) const
GlobalPoint leavePosition
GlobalVector computePtwithThreerecHits(double &pt, double &pt_err, ConstMuonRecHitPointer(&precHit)[3]) const
std::shared_ptr< MuonTransientTrackingRecHit const > ConstMuonRecHitPointer
unsigned int sampleCount
weightedTrajectorySeed createFakeSeed(int &isGoodSeed, const MagneticField &)
std::vector< MuonRecHitPointer > MuonRecHitContainer
MuonTransientTrackingRecHit::MuonRecHitPointer MuonRecHitPointer
weightedTrajectorySeed seed(const MagneticField &Field, const RPCGeometry &rpcGeom, int &isGoodSeed)