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 }