00001
00002
00003 #ifndef MDC_GEO_LAYER_H
00004 #define MDC_GEO_LAYER_H
00005
00006 #include <CLHEP/Geometry/Point3D.h>
00007 #include <iostream>
00008 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00009 typedef HepGeom::Point3D<double> HepPoint3D;
00010 #endif
00011
00012 using namespace CLHEP;
00013
00014 class MdcGeoSuper;
00015
00016 class MdcGeoLayer {
00017
00018 public:
00019
00020 MdcGeoLayer():fId(0),fSLayer(0),fWirst(0),fSlant(0.),fnomSlant(0.),fRadius(0.),fLength(0.),fRCSiz1(0.),fRCSiz2(0.),
00021 fPCSiz(0.),fNCell(0),fOffset(0.),fShift(0.),fnomOffset(0.),fnomShift(0.),fTwistF(0.),fTwistB(0.){
00022 HepPoint3D O(0,0,0);
00023 fOffF=O;
00024 fOffB=O;
00025 fSup=0;
00026 fGenLayer=0;
00027 };
00028
00029 MdcGeoLayer(const MdcGeoLayer& e){
00030 fId=e.Id();
00031 fSLayer=e.SLayer();
00032 fWirst=e.Wirst();
00033 fSlant=e.Slant();
00034 fnomSlant=e.nomSlant();
00035 fRadius=e.Radius();
00036 fLength=e.Length();
00037 fRCSiz1=e.RCSiz1();
00038 fRCSiz2=e.RCSiz2();
00039 fPCSiz=e.PCSiz();
00040 fNCell=e.NCell();
00041 fOffset=e.Offset();
00042 fShift=e.Shift();
00043 fnomOffset=e.nomOffset();
00044 fnomShift=e.nomShift();
00045 fTwistF=e.TwistF();
00046 fTwistB=e.TwistB();
00047 fOffF=e.OffF();
00048 fOffB=e.OffB();
00049 fSup=e.Sup();
00050 fGenLayer=e.Gen();
00051 };
00052 MdcGeoLayer& operator=(const MdcGeoLayer& e) {
00053 if(this!=&e)
00054 {
00055 fId=e.Id();
00056 fSLayer=e.SLayer();
00057 fWirst=e.Wirst();
00058 fSlant=e.Slant();
00059 fnomSlant=e.nomSlant();
00060 fRadius=e.Radius();
00061 fLength=e.Length();
00062 fRCSiz1=e.RCSiz1();
00063 fRCSiz2=e.RCSiz2();
00064 fPCSiz=e.PCSiz();
00065 fNCell=e.NCell();
00066 fOffset=e.Offset();
00067 fShift=e.Shift();
00068 fnomOffset=e.nomOffset();
00069 fnomShift=e.nomShift();
00070 fTwistF=e.TwistF();
00071 fTwistB=e.TwistB();
00072 fOffF=e.OffF();
00073 fOffB=e.OffB();
00074 fSup=e.Sup();
00075 fGenLayer=e.Gen();
00076 }
00077 return *this;
00078 }
00079
00080
00081 ~MdcGeoLayer(){};
00082
00083 public:
00084 int Id(void) const;
00085 int SLayer(void) const;
00086 int Wirst(void) const;
00087 double Slant(void) const;
00088 double nomSlant(void) const;
00089 double Radius(void) const;
00090 double Length(void) const;
00091 double RCSiz1(void) const;
00092 double RCSiz2(void) const;
00093 double PCSiz(void) const;
00094 int NCell(void) const;
00095 double Offset(void) const;
00096 double Shift(void) const;
00097 double nomOffset(void) const;
00098 double nomShift(void) const;
00099 double TwistF(void) const;
00100 double TwistB(void) const;
00101 HepPoint3D OffF(void) const;
00102 HepPoint3D OffB(void) const;
00103 MdcGeoSuper * Sup(void) const;
00104 int Gen(void) const;
00105
00106 public:
00107 int Id(int);
00108 int SLayer(int);
00109 int Wirst(int);
00110 double Slant(double);
00111 double nomSlant(double);
00112 double Radius(double);
00113 double Length(double);
00114 double RCSiz1(double);
00115 double RCSiz2(double);
00116 double PCSiz(double);
00117 int NCell(int);
00118 double Offset(double);
00119 double Shift(double);
00120 double nomOffset(double);
00121 double nomShift(double);
00122 double TwistF(double);
00123 double TwistB(double);
00124 HepPoint3D OffF(HepPoint3D);
00125 HepPoint3D OffB(HepPoint3D);
00126 MdcGeoSuper * Sup( MdcGeoSuper * );
00127 int Gen(int);
00128
00129 private:
00130 int fId;
00131 int fSLayer;
00132 int fWirst;
00133 double fSlant;
00134 double fnomSlant;
00135 double fRadius;
00136 double fLength;
00137 double fRCSiz1;
00138 double fRCSiz2;
00139 double fPCSiz;
00140 int fNCell;
00141 double fOffset;
00142 double fShift;
00143 double fnomOffset;
00144 double fnomShift;
00145 double fTwistF;
00146 double fTwistB;
00147 HepPoint3D fOffF;
00148 HepPoint3D fOffB;
00149 MdcGeoSuper * fSup;
00150 int fGenLayer;
00151 };
00152
00153
00154
00155 inline int MdcGeoLayer::Id(void) const { return fId; }
00156 inline int MdcGeoLayer::SLayer(void) const { return fSLayer; }
00157 inline int MdcGeoLayer::Wirst(void) const { return fWirst;}
00158 inline double MdcGeoLayer::Slant(void) const { return fSlant; }
00159 inline double MdcGeoLayer::nomSlant(void) const { return fnomSlant; }
00160 inline double MdcGeoLayer::Radius(void) const { return fRadius; }
00161 inline double MdcGeoLayer::Length(void) const { return fLength; }
00162 inline double MdcGeoLayer::RCSiz1(void) const { return fRCSiz1; }
00163 inline double MdcGeoLayer::RCSiz2(void) const { return fRCSiz2; }
00164 inline double MdcGeoLayer::PCSiz(void) const { return fPCSiz; }
00165 inline int MdcGeoLayer::NCell(void) const { return fNCell; }
00166 inline double MdcGeoLayer::Offset(void) const { return fOffset; }
00167 inline double MdcGeoLayer::Shift(void) const { return fShift; }
00168 inline double MdcGeoLayer::nomOffset(void) const { return fnomOffset; }
00169 inline double MdcGeoLayer::nomShift(void) const { return fnomShift; }
00170 inline double MdcGeoLayer::TwistF(void) const { return fTwistF; }
00171 inline double MdcGeoLayer::TwistB(void) const { return fTwistB; }
00172 inline HepPoint3D MdcGeoLayer::OffF(void) const { return fOffF;}
00173 inline HepPoint3D MdcGeoLayer::OffB(void) const { return fOffB;}
00174 inline MdcGeoSuper* MdcGeoLayer::Sup(void) const { return fSup; }
00175 inline int MdcGeoLayer::Gen(void) const {return fGenLayer;}
00176
00177
00178 inline int MdcGeoLayer::Id(int i) { return fId=i; }
00179 inline int MdcGeoLayer::SLayer(int i) { return fSLayer=i; }
00180 inline int MdcGeoLayer::Wirst(int i) { return fWirst=i; }
00181 inline double MdcGeoLayer::Slant(double i) { return fSlant=i; }
00182 inline double MdcGeoLayer::nomSlant(double i) { return fnomSlant=i; }
00183 inline double MdcGeoLayer::Radius(double i) { return fRadius=i; }
00184 inline double MdcGeoLayer::Length(double i) { return fLength=i; }
00185 inline double MdcGeoLayer::RCSiz1(double i) { return fRCSiz1=i; }
00186 inline double MdcGeoLayer::RCSiz2(double i) { return fRCSiz2=i; }
00187 inline double MdcGeoLayer::PCSiz(double i) { return fPCSiz=i; }
00188 inline int MdcGeoLayer::NCell(int i) { return fNCell=i; }
00189 inline double MdcGeoLayer::Offset(double i) { return fOffset=i; }
00190 inline double MdcGeoLayer::Shift(double i) { return fShift=i; }
00191 inline double MdcGeoLayer::nomOffset(double i) { return fnomOffset=i; }
00192 inline double MdcGeoLayer::nomShift(double i) { return fnomShift=i; }
00193 inline double MdcGeoLayer::TwistF(double i) { return fTwistF=i; }
00194 inline double MdcGeoLayer::TwistB(double i) { return fTwistB=i; }
00195 inline HepPoint3D MdcGeoLayer::OffF(HepPoint3D i) { return fOffF=i;}
00196 inline HepPoint3D MdcGeoLayer::OffB(HepPoint3D i) { return fOffB=i;}
00197 inline MdcGeoSuper* MdcGeoLayer::Sup(MdcGeoSuper* i) { return fSup=i; }
00198 inline int MdcGeoLayer::Gen(int i) {return fGenLayer=i;}
00199
00200
00201 #endif
00202