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 
33 
34 public:
35  typedef std::pair<ConstMuonRecHitPointer, ConstMuonRecHitPointer> RPCSegment;
36  typedef std::pair<TrajectorySeed, double> weightedTrajectorySeed;
37 
38 public:
41  void configure(const edm::ParameterSet& iConfig);
42  void clear() { theRecHits.clear(); }
43  void add(const ConstMuonRecHitPointer& hit) { theRecHits.push_back(hit); }
44  unsigned int nrhit() const { return theRecHits.size(); }
45 
46 private:
47  friend class RPCSeedFinder;
48  weightedTrajectorySeed seed(const edm::EventSetup& eSetup, int& isGoodSeed);
49  void ThreePointsAlgorithm();
50  void MiddlePointsAlgorithm();
51  void SegmentAlgorithm();
53  bool checkSegment() const;
54  ConstMuonRecHitPointer FirstRecHit() const;
55  ConstMuonRecHitPointer BestRefRecHit() const;
56  LocalTrajectoryError getSpecialAlgorithmErrorMatrix(const ConstMuonRecHitPointer& first,
57  const ConstMuonRecHitPointer& best);
58  weightedTrajectorySeed createFakeSeed(int& isGoodSeed, const edm::EventSetup& eSetup);
59  weightedTrajectorySeed createSeed(int& isGoodSeed, const edm::EventSetup& eSetup);
60  double getDistance(const ConstMuonRecHitPointer& precHit, const GlobalVector& Center) const;
61  bool checkStraightwithThreerecHits(ConstMuonRecHitPointer (&precHit)[3], double MinDeltaPhi) const;
62  GlobalVector computePtwithThreerecHits(double& pt, double& pt_err, ConstMuonRecHitPointer (&precHit)[3]) const;
63  bool checkStraightwithSegment(const RPCSegment& Segment1, const RPCSegment& Segment2, double MinDeltaPhi) const;
64  GlobalVector computePtwithSegment(const RPCSegment& Segment1, const RPCSegment& Segment2) const;
65  bool checkStraightwithThreerecHits(double (&x)[3], double (&y)[3], double MinDeltaPhi) const;
66  GlobalVector computePtWithThreerecHits(double& pt, double& pt_err, double (&x)[3], double (&y)[3]) const;
67 
70  double extropolateStep(const GlobalPoint& startPosition,
71  const GlobalVector& startMomentum,
72  ConstMuonRecHitContainer::const_iterator iter,
73  const int ClockwiseDirection,
74  double& tracklength,
75  const edm::EventSetup& eSetup);
76 
77  //void computeBestPt(double* pt, double* spt, double& ptmean0, double& sptmean0, unsigned int NumberofPt) const;
78 
79  // ----------member data ---------------------------
80 
81  // parameters for configuration
82  double MaxRSD;
84  unsigned int AlgorithmType;
86  double ZError;
87  double MinDeltaPhi;
88  double stepLength;
89  unsigned int sampleCount;
90  // Signals for run seed()
92  // recHits of a pattern
93  ConstMuonRecHitContainer theRecHits;
94  // Complex pattern
99  double meanRadius2;
100  RPCSegment SegmentRB[2];
103  double lastPhi;
104  double S;
105  // Simple pattern
108  double meanRadius;
109  double meanBz;
110  double deltaBz;
111  // Pattern estimation part
116  int Charge;
117  double meanPt;
118  double meanSpt;
120 };
121 
122 #endif
MuonTransientTrackingRecHit::ConstMuonRecHitPointer ConstMuonRecHitPointer
weightedTrajectorySeed createFakeSeed(int &isGoodSeed, const edm::EventSetup &eSetup)
void configure(const edm::ParameterSet &iConfig)
void checkSegmentAlgorithmSpecial(const edm::EventSetup &eSetup)
void MiddlePointsAlgorithm()
double MagnecticFieldThreshold
ConstMuonRecHitPointer FirstRecHit() const
GlobalPoint entryPosition
bool checkStraightwithThreerecHits(ConstMuonRecHitPointer(&precHit)[3], double MinDeltaPhi) const
weightedTrajectorySeed createSeed(int &isGoodSeed, const edm::EventSetup &eSetup)
GlobalVector Momentum
double extropolateStep(const GlobalPoint &startPosition, const GlobalVector &startMomentum, ConstMuonRecHitContainer::const_iterator iter, const int ClockwiseDirection, double &tracklength, const edm::EventSetup &eSetup)
std::pair< ConstMuonRecHitPointer, ConstMuonRecHitPointer > RPCSegment
LocalTrajectoryError getSpecialAlgorithmErrorMatrix(const ConstMuonRecHitPointer &first, const ConstMuonRecHitPointer &best)
double getDistance(const ConstMuonRecHitPointer &precHit, const GlobalVector &Center) const
bool autoAlgorithmChoose
unsigned int nrhit() const
double deltaRThreshold
RPCSegment SegmentRB[2]
MuonTransientTrackingRecHit::ConstMuonRecHitContainer ConstMuonRecHitContainer
MuonTransientTrackingRecHit::MuonRecHitContainer MuonRecHitContainer
std::shared_ptr< MuonTransientTrackingRecHit > MuonRecHitPointer
weightedTrajectorySeed seed(const edm::EventSetup &eSetup, int &isGoodSeed)
ConstMuonRecHitContainer theRecHits
void ThreePointsAlgorithm()
const edm::EventSetup * eSetup
Definition: RPCSeedFinder.h:46
ConstMuonRecHitPointer BestRefRecHit() const
GlobalVector Center
std::pair< TrajectorySeed, double > weightedTrajectorySeed
std::vector< ConstMuonRecHitPointer > ConstMuonRecHitContainer
GlobalVector Center2
unsigned int AlgorithmType
GlobalVector meanMagneticField2
void checkSimplePattern(const edm::EventSetup &eSetup)
void SegmentAlgorithmSpecial(const edm::EventSetup &eSetup)
GlobalVector computePtWithThreerecHits(double &pt, double &pt_err, double(&x)[3], double(&y)[3]) const
void add(const ConstMuonRecHitPointer &hit)
bool checkSegment() const
bool checkStraightwithSegment(const RPCSegment &Segment1, const RPCSegment &Segment2, double MinDeltaPhi) const
GlobalPoint leavePosition
std::shared_ptr< MuonTransientTrackingRecHit const > ConstMuonRecHitPointer
unsigned int sampleCount
GlobalVector computePtwithSegment(const RPCSegment &Segment1, const RPCSegment &Segment2) const
GlobalVector computePtwithThreerecHits(double &pt, double &pt_err, ConstMuonRecHitPointer(&precHit)[3]) const
std::vector< MuonRecHitPointer > MuonRecHitContainer
MuonTransientTrackingRecHit::MuonRecHitPointer MuonRecHitPointer