CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoLocalMuon/DTRecHit/plugins/DTTime2DriftParametrization.h

Go to the documentation of this file.
00001 #ifndef DTTime2DriftParametrization_H
00002 #define DTTime2DriftParametrization_H
00003 
00016 #define N_alpha     11
00017 #define N_By         5
00018 #define N_Bz         5
00019 #define N_Par_x     15
00020 #define N_Sigma_t    7
00021 
00022 
00023 class DTTime2DriftParametrization {
00024 public:
00026   DTTime2DriftParametrization();
00027 
00029   virtual ~DTTime2DriftParametrization();
00030 
00032   typedef struct {
00033     double v_drift, x_drift, delta_x, x_width_m, x_width_p ;
00034   } drift_distance; //FIXME: Why this typedef?
00035   
00036   
00044   bool computeDriftDistance_mode(double time,
00045                                  double alpha,
00046                                  double by,
00047                                  double bz,
00048                                  short interpolate,
00049                                  drift_distance* dx) const;
00050 
00058   bool computeDriftDistance_mean(double time,
00059                                  double alpha,
00060                                  double by,
00061                                  double bz,
00062                                  short interpolate,
00063                                  drift_distance* dx) const;
00064 
00065 
00066 private:
00068   unsigned short MB_DT_drift_distance (double time,
00069                                        double alpha,
00070                                        double by,
00071                                        double bz,
00072                                        drift_distance *DX,
00073                                        short interpolate) const;
00074 
00075 
00076   double MB_DT_dist      (double , double *) const;
00077   double MB_DT_delta_x   (double , double *) const;
00078   double MB_DT_sigma_t_m (double , double *) const;
00079   double MB_DT_sigma_t_p (double , double *) const;
00080 
00081   unsigned short MB_DT_Check_boundaries (double distime,
00082                                          double alpha,
00083                                          double by,
00084                                          double bz,
00085                                          short ifl) const;
00086 
00087   void MB_DT_Get_grid_values (double Var,
00088                               unsigned short *pi,
00089                               unsigned short *pj,
00090                               short Initial,
00091                               unsigned short N,
00092                               const double *Values) const;
00093   
00094   void MB_DT_Get_grid_points (double alpha, 
00095                               double by,
00096                               double bz,
00097                               unsigned short *p_alpha,
00098                               unsigned short *p_By,
00099                               unsigned short *p_Bz,
00100                               unsigned short *q_alpha,
00101                               unsigned short *q_By,
00102                               unsigned short *q_Bz) const;
00103   
00104   double MB_DT_MLInterpolation (double *al,
00105                                 double *by,
00106                                 double *bz,
00107                                 double *f) const;
00108   
00109   /*** Points of the grid ***/
00110   static const double alpha_value[N_alpha];
00111   static const double    By_value[N_By];
00112   static const double    Bz_value[N_Bz];
00113 
00114   /*** Parameter values ***/
00115   static const double fun_x[N_alpha][N_By][N_Bz][N_Par_x];  
00116   static const double fun_sigma_t[N_alpha][N_By][N_Bz][N_Sigma_t];
00117 
00118   /*** skew factor ***/
00119   static const double velocitySkew;
00120 
00121 };
00122 #endif