46 #ifndef __G4VTWISTEDFACETED__
47 #define __G4VTWISTEDFACETED__
97 const G4bool calcnorm =
false,
117 virtual std::ostream &
StreamInfo(std::ostream& os)
const;
162 void CreateSurfaces();
209 LastState(
const LastState& r) : p(r.p), inside(r.inside){}
212 if (
this == &r) {
return *
this; }
213 p = r.p; inside = r.inside;
234 LastVector(
const LastVector& r) : p(r.p), vec(r.vec)
237 surface[0] = r.surface[0];
239 LastVector&
operator=(
const LastVector& r)
241 if (&r ==
this) {
return *
this; }
242 p = r.p; vec = r.vec;
244 surface[0] = r.surface[0];
262 LastValue(
const LastValue& r) : p(r.p),
value(r.
value){}
265 if (
this == &r) {
return *
this; }
266 p = r.p;
value = r.value;
274 class LastValueWithDoubleVector
277 LastValueWithDoubleVector()
283 ~LastValueWithDoubleVector(){}
284 LastValueWithDoubleVector(
const LastValueWithDoubleVector& r)
286 LastValueWithDoubleVector&
operator=(
const LastValueWithDoubleVector& r)
288 if (
this == &r) {
return *
this; }
289 p = r.p; vec = r.vec;
value = r.value;
298 LastState fLastInside;
299 LastVector fLastNormal;
300 LastValue fLastDistanceToIn;
301 LastValue fLastDistanceToOut;
302 LastValueWithDoubleVector fLastDistanceToInWithV;
303 LastValueWithDoubleVector fLastDistanceToOutWithV;
312 if(fCubicVolume != 0.) ;
313 else fCubicVolume = 2 * fDz
314 * ( ( fDx1 + fDx2 ) * fDy1 + ( fDx3 + fDx4 ) * fDy2 );
321 if(fSurfaceArea != 0.) ;
329 return ( fDx4 + fDx2 + ( fDx4 - fDx2 ) * ( 2 * phi ) / fPhiTwist ) ;
335 return ( fDx3 + fDx1 + ( fDx3 - fDx1 ) * ( 2 * phi ) / fPhiTwist ) ;
341 return ( fDy2 + fDy1 + ( fDy2 - fDy1 ) * ( 2 * phi ) / fPhiTwist ) ;
void set(double x, double y, double z)
virtual void ComputeDimensions(G4VPVParameterisation *, const G4int, const G4VPhysicalVolume *)
virtual G4double GetSurfaceArea()
virtual G4double GetCubicVolume()
static const G4double kInfinity
G4VTwistedFaceted(const G4String &pname, G4double PhiTwist, G4double pDz, G4double pTheta, G4double pPhi, G4double pDy1, G4double pDx1, G4double pDx2, G4double pDy2, G4double pDx3, G4double pDx4, G4double pAlph)
G4bool fRebuildPolyhedron
virtual G4GeometryType GetEntityType() const
G4ThreeVector GetPointOnSurface() const
G4ThreeVector GetPointInSolid(G4double z) const
virtual G4Polyhedron * CreatePolyhedron() const
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
virtual void Extent(G4ThreeVector &pMin, G4ThreeVector &pMax) const
G4VTwistedFaceted & operator=(const G4VTwistedFaceted &rhs)
G4double GetTwistAngle() const
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4double Xcoef(G4double u, G4double phi, G4double ftg) const
G4double GetValueD(G4double phi) const
G4double GetTheta() const
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
const XML_Char int const XML_Char * value
virtual ~G4VTwistedFaceted()
G4double GetValueB(G4double phi) const
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcnorm=false, G4bool *validnorm=0, G4ThreeVector *n=0) const
virtual G4Polyhedron * GetPolyhedron() const
virtual G4VisExtent GetExtent() const
virtual EInside Inside(const G4ThreeVector &p) const
virtual void DescribeYourselfTo(G4VGraphicsScene &scene) const
G4double GetAlpha() const
virtual std::ostream & StreamInfo(std::ostream &os) const
virtual G4double GetSurfaceArea()
G4Polyhedron * fpPolyhedron
G4double GetValueA(G4double phi) const