CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/RecoTracker/SiTrackerMRHTools/interface/GroupedDAFHitCollector.h

Go to the documentation of this file.
00001 #ifndef SiTrackerMRHTools_GroupedDAFHitCollector_h
00002 #define SiTrackerMRHTools_GroupedDAFHitCollector_h
00003 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
00004 #include "RecoTracker/SiTrackerMRHTools/interface/MultiRecHitCollector.h"
00005 #include <vector>
00006 
00007 class Propagator;
00008 class MeasurementEstimator;
00009 class SiTrackerMultiRecHitUpdator;
00010 
00011 class GroupedDAFHitCollector :public MultiRecHitCollector {
00012         public:
00013         explicit GroupedDAFHitCollector(const MeasurementTracker* measurementTracker,
00014                                  const SiTrackerMultiRecHitUpdator* updator,
00015                                  const MeasurementEstimator* est,
00016                                  const Propagator* propagator,
00017                                  const Propagator* reversePropagator
00018                                  ):MultiRecHitCollector(measurementTracker), theLM(measurementTracker), theUpdator(updator), theEstimator(est), thePropagator(propagator), theReversePropagator(reversePropagator){}
00019                         
00020 
00021         virtual ~GroupedDAFHitCollector(){}
00022 
00023         //given a trajectory it returns a collection
00024         //of TSiTrackerMultiRecHits and InvalidTransientRecHits.
00025         //It tryes to build a TSiTrackerMultiRecHit for each detGroup.
00026         //a detGroup is a group of detectors mutually exclusive for the track's crossing point.
00027         //To find gouped measurements it uses the LayerMeasurements::groupedMeasurements method 
00028         
00029         virtual std::vector<TrajectoryMeasurement> recHits(const Trajectory&) const;
00030 
00031         const SiTrackerMultiRecHitUpdator* getUpdator() const {return theUpdator;}
00032         const MeasurementEstimator* getEstimator() const {return theEstimator;}
00033         const Propagator* getPropagator() const {return thePropagator;}
00034         const Propagator* getReversePropagator() const {return theReversePropagator;}
00035 
00036         private:
00037         void buildMultiRecHits(const std::vector<TrajectoryMeasurementGroup>& measgroup, std::vector<TrajectoryMeasurement>& result) const;
00038         
00039         private:
00040         LayerMeasurements theLM;
00041         const SiTrackerMultiRecHitUpdator* theUpdator;
00042         const MeasurementEstimator* theEstimator;
00043         const Propagator* thePropagator;
00044         const Propagator* theReversePropagator;
00045 
00046         
00047 
00048 };
00049 
00050 
00051 #endif