53 pDy1, pDx1, pDx1, pDy2, pDx2, pDx2,0.)
82 if (
this == &rhs) {
return *
this; }
100 os <<
"-----------------------------------------------------------\n"
101 <<
" *** Dump for solid - " <<
GetName() <<
" ***\n"
102 <<
" ===================================================\n"
103 <<
" Solid type: G4TwistedTrd\n"
111 <<
"-----------------------------------------------------------\n";
121 return {
"G4TwistedTrd"};
145 fCubicVolume = h*((x1 + x2)*(y1 + y2) + (x2 - x1)*(y2 - y1)/3.);
170 G4double hx = std::sqrt(delY*delY + hh);
171 G4double hy = std::sqrt(delX*delX + hh);
173 2.*(x1 + x2)*hx + 2.*(y1 + y2)*hy + 4.*(x1*y1 + x2*y2);
185 areaX = (U1*std::sqrt(hh + U1*U1) + hh*std::asinh(U1/h) -
186 V1*std::sqrt(hh +
V1*
V1) - hh*std::asinh(
V1/h))/ang;
191 areaX += ((hh + U2*U2)*std::sqrt(hh + U2*U2) -
192 (hh + U1*U1)*std::sqrt(hh + U1*U1))/3.
193 + hh*(U2*std::asinh(U2/h) - U1*std::asinh(U1/h))
194 - hh*(std::sqrt(hh + U2*U2) - std::sqrt(hh + U1*U1));
196 areaX += ((hh +
V2*
V2)*std::sqrt(hh +
V2*
V2) -
197 (hh +
V1*
V1)*std::sqrt(hh +
V1*
V1))/3.
198 + hh*(
V2*std::asinh(
V2/h) -
V1*std::asinh(
V1/h))
199 - hh*(std::sqrt(hh +
V2*
V2) - std::sqrt(hh +
V1*
V1));
200 areaX /= delX*ang*ang;
211 areaY = (U1*std::sqrt(hh + U1*U1) + hh*std::asinh(U1/h) -
212 V1*std::sqrt(hh +
V1*
V1) - hh*std::asinh(
V1/h))/ang;
217 areaY += ((hh + U2*U2)*std::sqrt(hh + U2*U2) -
218 (hh + U1*U1)*std::sqrt(hh + U1*U1))/3.
219 + hh*(U2*std::asinh(U2/h) - U1*std::asinh(U1/h))
220 - hh*(std::sqrt(hh + U2*U2) - std::sqrt(hh + U1*U1));
222 areaY += ((hh +
V2*
V2)*std::sqrt(hh +
V2*
V2) -
223 (hh +
V1*
V1)*std::sqrt(hh +
V1*
V1))/3.
224 + hh*(
V2*std::asinh(
V2/h) -
V1*std::asinh(
V1/h))
225 - hh*(std::sqrt(hh +
V2*
V2) - std::sqrt(hh +
V1*
V1));
226 areaY /= delY*ang*ang;
G4TemplateAutoLock< G4Mutex > G4AutoLock
#define G4MUTEX_INITIALIZER
G4TwistedTrd & operator=(const G4TwistedTrd &rhs)
G4TwistedTrd(const G4String &pName, G4double pDx1, G4double pDx2, G4double pDy1, G4double pDy2, G4double pDz, G4double pPhiTwist)
G4double GetX2HalfLength() const
G4double GetY2HalfLength() const
G4double GetCubicVolume() override
G4double GetSurfaceArea() override
G4double GetY1HalfLength() const
G4double GetZHalfLength() const
G4VSolid * Clone() const override
G4GeometryType GetEntityType() const override
G4double GetPhiTwist() const
std::ostream & StreamInfo(std::ostream &os) const override
G4double GetX1HalfLength() const
G4VSolid(const G4String &name)
G4Polyhedron * GetPolyhedron() const override
G4VTwistedFaceted & operator=(const G4VTwistedFaceted &rhs)
G4Polyhedron * fpPolyhedron
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)