CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch1/src/RecoLocalMuon/DTRecHit/plugins/DTParametrizedDriftAlgo.h

Go to the documentation of this file.
00001 #ifndef RecoLocalMuon_DTParametrizedDriftAlgo_H
00002 #define RecoLocalMuon_DTParametrizedDriftAlgo_H
00003 
00014 #include "RecoLocalMuon/DTRecHit/interface/DTRecHitBaseAlgo.h"
00015 
00016 class MagneticField;
00017 
00018 class DTParametrizedDriftAlgo : public DTRecHitBaseAlgo {
00019  public:
00021   DTParametrizedDriftAlgo(const edm::ParameterSet& config);
00022 
00024   virtual ~DTParametrizedDriftAlgo();
00025 
00026   // Operations
00027 
00029   virtual void setES(const edm::EventSetup& setup);
00030 
00031     
00037   virtual bool compute(const DTLayer* layer,
00038                        const DTDigi& digi,
00039                        LocalPoint& leftPoint,
00040                        LocalPoint& rightPoint,
00041                        LocalError& error) const;
00042 
00043 
00051   virtual bool compute(const DTLayer* layer,
00052                        const DTRecHit1D& recHit1D,
00053                        const float& angle,
00054                        DTRecHit1D& newHit1D) const;
00055 
00056 
00064   virtual bool compute(const DTLayer* layer,
00065                        const DTRecHit1D& recHit1D,
00066                        const float& angle,
00067                        const GlobalPoint& globPos, 
00068                        DTRecHit1D& newHit1D) const;
00069 
00070 
00071  private:
00072   // Interpolate parametrization function
00073   static bool interpolate;
00074 
00075   // Times below MinTime (ns) are considered as coming from previous BXs.
00076   static float minTime;
00077   
00078   // Times above MaxTime (ns) are considered as coming from following BXs
00079   static float maxTime;
00080   
00081   // Do the actual work.
00082   virtual bool compute(const DTLayer* layer,
00083                        const DTWireId& wireId,
00084                        const float digiTime,
00085                        const float& angle,
00086                        const GlobalPoint& globPos, 
00087                        LocalPoint& leftPoint,
00088                        LocalPoint& rightPoint,
00089                        LocalError& error,
00090                        int step) const;
00091 
00092   // Interface to the method which does the actual work suited for 2nd and 3rd steps 
00093   virtual bool compute(const DTLayer* layer,
00094                        const DTWireId& wireId,
00095                        const float digiTime,
00096                        const float& angle,
00097                        const GlobalPoint& globPos, 
00098                        DTRecHit1D& newHit1D,
00099                        int step) const;
00100 
00101   // Switch on/off the verbosity
00102   static bool debug;
00103 
00104 
00105   // Pointer to the magnetic field (read from ES once per event)
00106   const MagneticField * magField;
00107 
00108 
00109 };
00110 #endif
00111 
00112