44 #ifndef __G4TWISTBOXSIDE__
45 #define __G4TWISTBOXSIDE__
99 virtual void SetCorners();
100 virtual void SetBoundaries();
162 return ( fDx4plus2 + fDx4minus2 * ( 2 * phi ) / fPhiTwist ) ;
169 return ( fDy2plus1 + fDy2minus1 * ( 2 * phi ) / fPhiTwist ) ;
176 return GetValueA(phi)/2. + u*fTAlph ;
186 - u * std::sin(phi) + fdeltaX*phi/fPhiTwist,
187 Xcoef(u,phi) * std::sin(phi)
188 + u * std::cos(phi) + fdeltaY*phi/fPhiTwist,
189 2*fDz*phi/fPhiTwist );
191 if (isGlobal) {
return (
fRot * SurfPoint +
fTrans); }
198 return -0.5*GetValueB(phi) ;
204 return 0.5*GetValueB(phi) ;
208 G4double G4TwistBoxSide::GetSurfaceArea()
210 return (fDz*(std::sqrt(16*fDy1*fDy1
211 + (fa1md1 + 4*fDy1*fTAlph)*(fa1md1 + 4*fDy1*fTAlph))
212 + std::sqrt(16*fDy1*fDy1 + (fa2md2 + 4*fDy1*fTAlph)
213 * (fa2md2 + 4*fDy1*fTAlph))))/2. ;
222 G4ThreeVector nvec( 4*fDz*(std::cos(phi) + fTAlph*std::sin(phi)) ,
223 4*fDz*(-(fTAlph*std::cos(phi)) + std::sin(phi)),
224 (fDx2 + fDx4)*fPhiTwist*fTAlph
225 + 2*fDx4minus2*(-1 + fTAlph*phi)
226 + 2*fPhiTwist*(1 + fTAlph*fTAlph)*u
227 - 2*(fdeltaX - fdeltaY*fTAlph)*std::cos(phi)
228 - 2*(fdeltaY + fdeltaX*fTAlph)*std::sin(phi) );
G4TwistBoxSide(const G4String &name, G4double PhiTwist, G4double pDz, G4double pTheta, G4double pPhi, G4double pDy1, G4double pDx1, G4double pDx2, G4double pDy2, G4double pDx3, G4double pDx4, G4double pAlph, G4double AngleSide)
virtual G4int DistanceToSurface(const G4ThreeVector &gp, const G4ThreeVector &gv, G4ThreeVector gxx[], G4double distance[], G4int areacode[], G4bool isvalid[], EValidate validate=kValidateWithTol)
virtual G4ThreeVector GetNormal(const G4ThreeVector &xx, G4bool isGlobal=false)
virtual ~G4TwistBoxSide()