00001
00002
00003
00004
00005 #ifndef _DEFINE_LAYER_Mdc_H_
00006 #define _DEFINE_LAYER_Mdc_H_
00007
00008 #include <math.h>
00009 #include <iostream>
00010 #include "KalFitAlg/KalFitSuper_Mdc.h"
00011
00012
00013 class KalFitLayer_Mdc{
00014 public:
00016 KalFitLayer_Mdc(const KalFitSuper_Mdc & super,
00017 const double radius, const double stereoAngle,
00018 const double zf, const double zb, const double offset,
00019 const int layerID, const int localLayerID);
00020
00022 ~KalFitLayer_Mdc(){};
00023
00024 public:
00026 const int localLayerId(void) const;
00027
00029 const int layerId(void) const;
00030
00032 const double tanSlant(void) const;
00033
00035 const double r(void) const;
00036
00038 const double zf(void) const;
00039
00041 const double zb(void) const;
00042
00044 const int offset(void) const;
00045
00047 const KalFitSuper_Mdc & superLayer(void) const;
00048
00050 const double limit(void) const;
00051
00053 double z(const double d) const;
00054
00056 double csize(void) const;
00057
00058 private:
00059 const double _radius;
00060 const double _tanSlant;
00061 const double _zf;
00062 const double _zb;
00063 const int _layerId;
00064 const int _localLayerId;
00065 const int _offset;
00066 const KalFitSuper_Mdc & _superLayer;
00067 };
00068
00069
00070 #ifdef KalFitLayer_Mdc_NO_INLINE
00071 #define inline
00072 #else
00073 #undef inline
00074 #define KalFitLayer_Mdc_INLINE_DEFINE_HERE
00075 #endif
00076
00077 #ifdef KalFitLayer_Mdc_INLINE_DEFINE_HERE
00078
00079 inline
00080 KalFitLayer_Mdc::KalFitLayer_Mdc(const KalFitSuper_Mdc & super,
00081 const double radius, const double stereoAngle,
00082 const double zf, const double zb, const double offset,
00083 const int layerID, const int localLayerID) : _radius(radius),
00084 _tanSlant(1./tan(stereoAngle)),
00085 _zf(zf),
00086 _zb(zb),
00087 _layerId(layerID),
00088 _localLayerId(localLayerID),
00089 _offset((int)(2.0*offset)),
00090 _superLayer(super)
00091 {
00092 }
00093
00094 inline
00095 const int KalFitLayer_Mdc::layerId(void) const { return _layerId;}
00096 inline
00097 const int KalFitLayer_Mdc::localLayerId(void) const { return _localLayerId;}
00098 inline
00099 const double KalFitLayer_Mdc::tanSlant(void) const { return _tanSlant;}
00100
00101 inline
00102 const double KalFitLayer_Mdc::r(void) const { return _radius;}
00103
00104 inline
00105 const double KalFitLayer_Mdc::zf(void) const { return _zf;}
00106
00107 inline
00108 const double KalFitLayer_Mdc::zb(void) const { return _zb;}
00109
00110 inline
00111 const double KalFitLayer_Mdc::limit(void) const { return (double)(_zf-_zb)/_tanSlant;}
00112
00113 inline
00114 double
00115 KalFitLayer_Mdc::z(const double d) const
00116 {
00117 return (double)_zb+d*_tanSlant;
00118 }
00119
00120 inline
00121 const int
00122 KalFitLayer_Mdc::offset(void) const
00123 {
00124 return _offset;
00125 }
00126
00127 inline
00128 const KalFitSuper_Mdc &
00129 KalFitLayer_Mdc::superLayer(void) const
00130 {
00131 return _superLayer;
00132 }
00133
00134 inline
00135 double
00136 KalFitLayer_Mdc::csize(void) const
00137 {
00138 return 2*M_PI*_radius/_superLayer.nWire();
00139 }
00140
00141 #endif
00142
00143 #undef inline
00144
00145 #endif
00146