36#ifndef G4TWISTTUBSHYPESIDE_HH
37#define G4TWISTTUBSHYPESIDE_HH
71 const G4int handedness,
145 G4int areacode[])
override;
155 G4bool isGlobal =
false)
override ;
166 G4bool isglobal =
false)
const ;
181 G4bool isGlobal =
false)
override ;
196 G4bool withTol =
true)
override;
203 void SetCorners()
override;
204 void SetCorners(
G4double EndInnerRadius[2],
209 void SetBoundaries()
override;
240 if (isglobal) { tmpp =
fRot.inverse()*p -
fTrans; }
243 return std::sqrt(fR02 + tmpp.
z() * tmpp.
z() * fTan2Stereo);
250 G4double rho = std::sqrt(fR02 + z * z * fTan2Stereo) ;
252 G4ThreeVector SurfPoint (rho*std::cos(phi), rho*std::sin(phi), z) ;
254 if (isGlobal) {
return (
fRot * SurfPoint +
fTrans); }
264 return std::atan2( lowerlimit.
y(), lowerlimit.
x() ) ;
273 return std::atan2( upperlimit.
y(), upperlimit.
x() ) ;
CLHEP::HepRotation G4RotationMatrix
CLHEP::Hep3Vector G4ThreeVector
~G4TwistTubsHypeSide() override=default
G4ThreeVector GetNormal(const G4ThreeVector &p, G4bool isGlobal=false) override
G4int DistanceToSurface(const G4ThreeVector &gp, const G4ThreeVector &gv, G4ThreeVector gxx[], G4double distance[], G4int areacode[], G4bool isvalid[], EValidate validate=kValidateWithTol) override
EInside Inside(const G4ThreeVector &gp)
G4TwistTubsHypeSide(const G4String &name, const G4RotationMatrix &rot, const G4ThreeVector &tlate, const G4int handedness, const G4double kappa, const G4double tanstereo, const G4double r0, const EAxis axis0=kPhi, const EAxis axis1=kZAxis, G4double axis0min=-kInfinity, G4double axis1min=-kInfinity, G4double axis0max=kInfinity, G4double axis1max=kInfinity)
G4double GetRhoAtPZ(const G4ThreeVector &p, G4bool isglobal=false) const
G4VTwistSurface(const G4String &name)
static const G4int sAxisMax
static const G4int sAxis0
static const G4int sAxisMin
virtual G4ThreeVector GetBoundaryAtPZ(G4int areacode, const G4ThreeVector &p) const
virtual G4double GetSurfaceArea()=0