Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:17

0001 #ifndef RecoMuon_TrackingTools_MuonBestMeasurementFinder_H
0002 #define RecoMuon_TrackingTools_MuonBestMeasurementFinder_H
0003 
0004 /** \class MuonBestMeasurementFinder
0005  *  Algorithmic class to get best measurement from a list of TM
0006  *  the chi2 cut for the MeasurementEstimator is huge since should not be used.
0007  *  The aim of this class is to return the "best" measurement according to the
0008  *  chi2, but without any cut. The decision whether to use or not the
0009  *  measurement is taken in the caller class.
0010  *  The evaluation is made (in hard-code way) with the granularity = 1. Where
0011  *  the granularity is the one defined in the MuonTrajectoyUpdatorClass.
0012  *
0013  *  \author R. Bellan - INFN Torino <riccardo.bellan@cern.ch>
0014  *  \author S. Lacaprara - INFN Legnaro <stefano.lacaprara@pd.infn.it>
0015  */
0016 
0017 #include <vector>
0018 
0019 class Propagator;
0020 class MeasurementEstimator;
0021 class TrajectoryMeasurement;
0022 class MuonTransientTrackingRecHit;
0023 
0024 class MuonBestMeasurementFinder {
0025   typedef std::vector<TrajectoryMeasurement*> TMContainer;
0026   typedef TMContainer::iterator TMIterator;
0027 
0028 public:
0029   /// Constructor
0030   MuonBestMeasurementFinder();
0031 
0032   /// Destructor
0033   virtual ~MuonBestMeasurementFinder();
0034 
0035   // Operations
0036 
0037   /// return the Tm with the best chi2: no cut applied.
0038   TrajectoryMeasurement* findBestMeasurement(std::vector<TrajectoryMeasurement>& measC, const Propagator* propagator);
0039 
0040   std::pair<double, int> lookAtSubRecHits(TrajectoryMeasurement* measurement, const Propagator* propagator);
0041 
0042   const MeasurementEstimator* estimator() const { return theEstimator; }
0043 
0044 protected:
0045 private:
0046   const MeasurementEstimator* theEstimator;
0047 };
0048 #endif