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 {class Event; class EventSetup;}
28 
29 class Trajectory;
34 
37 
39 
40 public:
41 
44 
46  ~CosmicMuonTrajectoryBuilder() override;
47 
49  std::vector<Trajectory*> trajectories(const TrajectorySeed&) override;
50 
53  return CandidateContainer();
54  }
55 
56  void setEvent(const edm::Event&) override;
57 
58  const Propagator* propagator() const {return &*theService->propagator(thePropagatorName);}
59 
60  //FIXME
61  const Propagator* propagatorAlong() const {return &*theService->propagator("SteppingHelixPropagatorAlong");}
62 
63  const Propagator* propagatorOpposite() const {return &*theService->propagator("SteppingHelixPropagatorOpposite");}
64 
65  MuonTrajectoryUpdator* updator() const {return theUpdator;}
66 
67  MuonTrajectoryUpdator* backwardUpdator() const {return theBKUpdator;}
68 
69  CosmicMuonSmoother* smoother() const {return theSmoother;}
70 
71  const CosmicMuonUtilities* utilities() const {return smoother()->utilities();}
72 
73  DirectMuonNavigation* navigation() const {return theNavigation;}
74 
75  MuonBestMeasurementFinder* bestMeasurementFinder() const {return theBestMeasurementFinder;}
76 
77  double t0(const DTRecSegment4D* deseg) const;
78 
79  PropagationDirection checkDirectionByT0(const DTRecSegment4D*, const DTRecSegment4D*) const;
80 
81 
82 private:
83 
85 
86  void buildSecondHalf(Trajectory&);
87 
88  void build(const TrajectoryStateOnSurface&, const NavigationDirection&, Trajectory&);
89 
90  TrajectoryStateOnSurface intermediateState(const TrajectoryStateOnSurface&) const;
91 
93 
95  void reverseTrajectory(Trajectory&) const;
96 
98  void flipTrajectory(Trajectory&) const;
99 
101  void reverseTrajectoryPropagationDirection(Trajectory&) const;
102 
104  bool selfDuplicate(const Trajectory&) const;
105 
107  void estimateDirection(Trajectory&) const;
108 
110  void getDirectionByTime(Trajectory&) const;
111 
112  std::vector<TrajectoryMeasurement> findBestMeasurements(const DetLayer*, const TrajectoryStateOnSurface&, const Propagator*, const MeasurementEstimator*);
113 
114  void incrementChamberCounters(const DetLayer* layer, int& dtChambers, int& cscChambers, int& rpcChambers, int& totalChambers);
115 
118 
122 
125 
127 
129 
132 
136 
137  unsigned long long theCacheId_DG;
140 
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