00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TPARA.h"
00013 #include "TNode.h"
00014 #include "TMath.h"
00015
00016 ClassImp(TPARA)
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 TPARA::TPARA()
00039 {
00040
00041
00042 fAlpha = 0.;
00043 fTheta = 0.;
00044 fPhi = 0.;
00045 }
00046
00047
00048
00049 TPARA::TPARA(const char *name, const char *title, const char *material, Float_t dx, Float_t dy, Float_t dz,
00050 Float_t alpha, Float_t theta, Float_t phi) : TBRIK(name, title,material, dx, dy, dz)
00051 {
00052
00053
00054 fAlpha = alpha;
00055 fTheta = theta;
00056 fPhi = phi;
00057 }
00058
00059
00060
00061 TPARA::~TPARA()
00062 {
00063
00064 }
00065
00066
00067
00068 void TPARA::SetPoints(Double_t *points) const
00069 {
00070
00071
00072 if (!points) return;
00073 Float_t dx, dy, dz, theta, phi, alpha;
00074 const Float_t pi = Float_t (TMath::Pi());
00075
00076 alpha = fAlpha * pi/180.0;
00077 theta = fTheta * pi/180.0;
00078 phi = fPhi * pi/180.0;
00079
00080 dx = TBRIK::fDx;
00081 dy = TBRIK::fDy;
00082 dz = TBRIK::fDz;
00083
00084
00085 Double_t txy = TMath::Tan(alpha);
00086 Double_t tth = TMath::Tan(theta);
00087 Double_t txz = tth*TMath::Cos(phi);
00088 Double_t tyz = tth*TMath::Sin(phi);
00089
00090 *points++ = -dz*txz-txy*dy-dx ; *points++ = -dy-dz*tyz ; *points++ = -dz;
00091 *points++ = -dz*txz+txy*dy-dx ; *points++ = +dy-dz*tyz ; *points++ = -dz;
00092 *points++ = -dz*txz+txy*dy+dx ; *points++ = +dy-dz*tyz ; *points++ = -dz;
00093 *points++ = -dz*txz-txy*dy+dx ; *points++ = -dy-dz*tyz ; *points++ = -dz;
00094 *points++ = +dz*txz-txy*dy-dx ; *points++ = -dy+dz*tyz ; *points++ = +dz;
00095 *points++ = +dz*txz+txy*dy-dx ; *points++ = +dy+dz*tyz ; *points++ = +dz;
00096 *points++ = +dz*txz+txy*dy+dx ; *points++ = +dy+dz*tyz ; *points++ = +dz;
00097 *points++ = +dz*txz-txy*dy+dx ; *points++ = -dy+dz*tyz ; *points++ = +dz;
00098 }