CMS 3D CMS Logo

CosmicMuonTrajectoryBuilder.h
Go to the documentation of this file.
1 #ifndef CosmicMuonTrajectoryBuilder_H
2 #define CosmicMuonTrajectoryBuilder_H
3 
9 
26 
27 namespace edm {
28  class Event;
29  class EventSetup;
30 } // namespace edm
31 
32 class Trajectory;
37 
40 
42 public:
45 
47  ~CosmicMuonTrajectoryBuilder() override;
48 
50  std::vector<Trajectory*> trajectories(const TrajectorySeed&) override;
51 
54 
55  void setEvent(const edm::Event&) override;
56 
57  const Propagator* propagator() const { return &*theService->propagator(thePropagatorName); }
58 
59  //FIXME
60  const Propagator* propagatorAlong() const { return &*theService->propagator("SteppingHelixPropagatorAlong"); }
61 
62  const Propagator* propagatorOpposite() const { return &*theService->propagator("SteppingHelixPropagatorOpposite"); }
63 
64  MuonTrajectoryUpdator* updator() const { return theUpdator; }
65 
66  MuonTrajectoryUpdator* backwardUpdator() const { return theBKUpdator; }
67 
68  CosmicMuonSmoother* smoother() const { return theSmoother; }
69 
70  const CosmicMuonUtilities* utilities() const { return smoother()->utilities(); }
71 
72  DirectMuonNavigation* navigation() const { return theNavigation; }
73 
74  MuonBestMeasurementFinder* bestMeasurementFinder() const { return theBestMeasurementFinder; }
75 
76  double t0(const DTRecSegment4D* deseg) const;
77 
78  PropagationDirection checkDirectionByT0(const DTRecSegment4D*, const DTRecSegment4D*) const;
79 
80 private:
82 
83  void buildSecondHalf(Trajectory&);
84 
86 
87  TrajectoryStateOnSurface intermediateState(const TrajectoryStateOnSurface&) const;
88 
90 
92  void reverseTrajectory(Trajectory&) const;
93 
95  void flipTrajectory(Trajectory&) const;
96 
98  void reverseTrajectoryPropagationDirection(Trajectory&) const;
99 
101  bool selfDuplicate(const Trajectory&) const;
102 
104  void estimateDirection(Trajectory&) const;
105 
107  void getDirectionByTime(Trajectory&) const;
108 
109  std::vector<TrajectoryMeasurement> findBestMeasurements(const DetLayer*,
111  const Propagator*,
112  const MeasurementEstimator*);
113 
114  void incrementChamberCounters(
115  const DetLayer* layer, int& dtChambers, int& cscChambers, int& rpcChambers, int& totalChambers);
116 
119 
123 
126 
128 
130 
133 
137 
138  unsigned long long theCacheId_DG;
141 };
142 #endif
CandidateContainer trajectories(const TrackCand &) override
dummy implementation, unused in this class
MuonCandidate::CandidateContainer CandidateContainer
const Propagator * propagator() const
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
std::pair< const Trajectory *, reco::TrackRef > TrackCand
MuonBestMeasurementFinder * bestMeasurementFinder() const
edm::Handle< CSCRecHit2DCollection > cschits_
MuonTrajectoryUpdator * backwardUpdator() const
edm::Handle< DTRecHitCollection > dthits_
const Propagator * propagatorOpposite() const
PropagationDirection
MuonDetLayerMeasurements * theLayerMeasurements
const CosmicMuonUtilities * utilities() const
CosmicMuonSmoother * smoother() const
DirectMuonNavigation * navigation() const
MuonTrajectoryUpdator * updator() const
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
MuonBestMeasurementFinder * theBestMeasurementFinder
MuonTransientTrackingRecHit::MuonRecHitContainer MuonRecHitContainer
HLT enums.
const Propagator * propagatorAlong() const
std::vector< MuonRecHitPointer > MuonRecHitContainer