34#ifndef G4TWISTTRAPPARALLELSIDE_HH
35#define G4TWISTTRAPPARALLELSIDE_HH
63 G4bool isGlobal =
false)
override ;
76 G4int areacode[])
override;
86 G4bool withTol =
true)
override;
87 void SetCorners()
override;
88 void SetBoundaries()
override;
95 G4bool isGlobal =
false)
override;
98 inline G4double GetSurfaceArea()
override;
150 return ( fDy2plus1 + fDy2minus1 * ( 2 * phi ) / fPhiTwist ) ;
156 return GetValueB(phi)/2. ;
160G4TwistTrapParallelSide::
165 G4ThreeVector SurfPoint ( u*std::cos(phi) - Xcoef(phi)*std::sin(phi)
166 + fdeltaX*phi/fPhiTwist,
167 u*std::sin(phi) + Xcoef(phi)*std::cos(phi)
168 + fdeltaY*phi/fPhiTwist,
169 2*fDz*phi/fPhiTwist );
170 if (isGlobal) {
return (
fRot * SurfPoint +
fTrans); }
178 return -(fPhiTwist*(fDx2 + fDx4 - fDy2plus1*fTAlph)
179 + 2*fDx4minus2*phi - 2*fDy2minus1*fTAlph*phi)/(2.*fPhiTwist) ;
185 return (fDx2 + fDx4 + fDy2plus1*fTAlph)/ 2.
186 + ((fDx4minus2 + fDy2minus1*fTAlph)*phi)/fPhiTwist ;
190G4double G4TwistTrapParallelSide::GetSurfaceArea()
192 return 2*fDx4plus2*fDz ;
202 2*fDz*std::cos(phi) ,
203 -(fDy2minus1 + fPhiTwist*u + fdeltaY*std::cos(phi)
204 -fdeltaX*std::sin(phi))) ;
G4int DistanceToSurface(const G4ThreeVector &gp, const G4ThreeVector &gv, G4ThreeVector gxx[], G4double distance[], G4int areacode[], G4bool isvalid[], EValidate validate=kValidateWithTol) override
G4TwistTrapParallelSide(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)
~G4TwistTrapParallelSide() override
G4ThreeVector GetNormal(const G4ThreeVector &xx, G4bool isGlobal=false) override