Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:43

0001 /** \class GroupedDAFHitCollector
0002   *  Returns a collection of SiTrackerMultiRecHits and InvalidRecHits given a Trajectory.
0003   *  Builds a SiTrackerMultiRecHit for each detGroup 
0004   *  (i.e. a group of detectors mutually exclusive for the track's crossing point)
0005   *
0006   *  \author tropiano, genta
0007   *  \review in May 2014 by brondolin 
0008   */
0009 
0010 #ifndef SiTrackerMRHTools_GroupedDAFHitCollector_h
0011 #define SiTrackerMRHTools_GroupedDAFHitCollector_h
0012 
0013 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
0014 #include "RecoTracker/SiTrackerMRHTools/interface/MultiRecHitCollector.h"
0015 #include <vector>
0016 
0017 class Propagator;
0018 class MeasurementEstimator;
0019 class MeasurementTracker;
0020 class SiTrackerMultiRecHitUpdator;
0021 
0022 class GroupedDAFHitCollector : public MultiRecHitCollector {
0023 public:
0024   explicit GroupedDAFHitCollector(const MeasurementTracker* measurementTracker,
0025                                   const SiTrackerMultiRecHitUpdator* updator,
0026                                   const MeasurementEstimator* est,
0027                                   const Propagator* propagator,
0028                                   const Propagator* reversePropagator,
0029                                   bool debug)
0030       : MultiRecHitCollector(measurementTracker),
0031         theUpdator(updator),
0032         theEstimator(est),
0033         thePropagator(propagator),
0034         theReversePropagator(reversePropagator),
0035         debug_(debug) {}
0036 
0037   ~GroupedDAFHitCollector() override {}
0038 
0039   std::vector<TrajectoryMeasurement> recHits(const Trajectory&, const MeasurementTrackerEvent* theMT) const override;
0040 
0041   const SiTrackerMultiRecHitUpdator* getUpdator() const { return theUpdator; }
0042   const MeasurementEstimator* getEstimator() const { return theEstimator; }
0043   const Propagator* getPropagator() const { return thePropagator; }
0044   const Propagator* getReversePropagator() const { return theReversePropagator; }
0045 
0046 private:
0047   void buildMultiRecHits(const std::vector<TrajectoryMeasurementGroup>& measgroup,
0048                          std::vector<TrajectoryMeasurement>& result,
0049                          const MeasurementTrackerEvent*& theMTE) const;
0050 
0051   const SiTrackerMultiRecHitUpdator* theUpdator;
0052   const MeasurementEstimator* theEstimator;
0053   const Propagator* thePropagator;
0054   const Propagator* theReversePropagator;
0055   const bool debug_;
0056 };
0057 
0058 #endif