Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:26:13

0001 #ifndef RecoMuon_StandAloneTrackFinder_StandAloneMuonSmoother_H
0002 #define RecoMuon_StandAloneTrackFinder_StandAloneMuonSmoother_H
0003 
0004 /** \class StandAloneMuonSmoother
0005  *
0006  *  Smooth a trajectory using the standard Kalman Filter smoother.
0007  *  This class contains the KFTrajectorySmoother and takes care
0008  *  to update the it whenever the propagator change.
0009  *
0010  *  \author R. Bellan - INFN Torino <riccardo.bellan@cern.ch>
0011  */
0012 
0013 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0014 
0015 class MuonServiceProxy;
0016 class TrajectoryStateUpdator;
0017 class MeasurementEstimator;
0018 class Propagator;
0019 class TrajectorySmoother;
0020 
0021 #include <string>
0022 
0023 namespace edm {
0024   class ParameterSet;
0025   class Event;
0026 }  // namespace edm
0027 
0028 //class StandAloneMuonSmoother: public KFTrajectorySmoother {
0029 class StandAloneMuonSmoother {
0030   typedef std::pair<bool, Trajectory> SmoothingResult;
0031 
0032 public:
0033   /// Constructor
0034   StandAloneMuonSmoother(const edm::ParameterSet &par, const MuonServiceProxy *service);
0035 
0036   /// Destructor
0037   virtual ~StandAloneMuonSmoother();
0038 
0039   // Operations
0040 
0041   /// Smoothes the trajectories
0042   SmoothingResult smooth(const Trajectory &);
0043 
0044   /// return the KFUpdator
0045   TrajectoryStateUpdator *updator() const { return theUpdator; }
0046 
0047   /// access at the propagator
0048   const Propagator *propagator() const;
0049 
0050   /// access at the estimator
0051   MeasurementEstimator *estimator() const { return theEstimator; }
0052 
0053   /// access to the smoother
0054   TrajectorySmoother *smoother() const { return theSmoother; }
0055 
0056 protected:
0057 private:
0058   void renewTheSmoother();
0059 
0060   std::string thePropagatorName;
0061 
0062   /// The max allowed chi2 to accept a rechit in the fit
0063   double theMaxChi2;
0064 
0065   /// The errors of the trajectory state are multiplied by nSigma
0066   /// to define acceptance of BoundPlane and maximalLocalDisplacement
0067   double theNSigma;
0068 
0069   /// The estimator: makes the decision wheter a measure is good or not
0070   /// it isn't used by the updator which does the real fit. In fact, in principle,
0071   /// a looser request onto the measure set can be requested
0072   /// (w.r.t. the request on the accept/reject measure in the fit)
0073   MeasurementEstimator *theEstimator;
0074 
0075   double theErrorRescaling;
0076 
0077   TrajectoryStateUpdator *theUpdator;
0078 
0079   const MuonServiceProxy *theService;
0080 
0081   TrajectorySmoother *theSmoother;
0082 };
0083 #endif