Import Geant4 10.7.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2020-06-26 10:23:25 +02:00
parent c02c370437
commit 67ba86d073
1871 changed files with 174422 additions and 131884 deletions
+1 -15
View File
@@ -1,23 +1,9 @@
#------------------------------------------------------------------------------
# CMakeLists.txt
# Module : G4graphics_reps
# Package: Geant4.src.G4graphics_reps
#
# CMakeLists.txt for single level library that may be build global or granular
#
# Generated on : 24/9/2010
#
#
#------------------------------------------------------------------------------
include(Geant4MacroLibraryTargets)
# Add allocation export symbol for the graphics_reps category
add_definitions(-DG4GREPS_ALLOC_EXPORT)
if(GEANT4_BUILD_GRANULAR_LIBS)
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
else()
GEANT4_GLOBAL_LIBRARY_TARGET(COMPONENTS sources.cmake)
endif()
geant4_global_library_target(COMPONENTS sources.cmake)
+22
View File
@@ -19,6 +19,28 @@ committal in the CVS repository !
History file for graphics_reps category
---------------------------------------
04 March 2020. John Allison (greps-V10-06-03)
- operator<<(...const std::map<G4String,G4AttDef>*):
o Improve deprecation message.
22 February 2020 Evgueni Tcherniaev (greps-V10-06-02)
- HepPolyhedron: Added HepPolyhedronTet and HepPolyhedronHyberbolicMirror
- G4Polyhedron: Added G4PolyhedronTet and G4PolyhedronHyberbolicMirror
13 February 2020 John Allison (greps-V10-06-01)
- G4VisAttributes:
o Clarify that if number of cloud points (for cloud style drawing)
is <= 0, this is to be interpreted as under control of the viewer,
i.e., to be decided by the viewer. Otherwise this number is to be
drawn.
o Make 0 the default value.
o It may be changed with SetForceNumberOfCloudPoints.
o You may also force cloud drawing with SetForceCloud.
09 December 2019 Ben Morgan (greps-V10-06-00)
- Cleanup CMake build, removing obsolete granular library option and
explicit include_directories.
07 November 2019 Evgueni Tcherniaev (greps-V10-05-06)
- HepPolyhedron: Added move constructor and move assignment
- BooleanProcessor::createPolyhedron(): Use return std::move()
+25 -1
View File
@@ -66,8 +66,17 @@
// phi,dphi,the,dthe) - create G4Polyhedron for Sphere;
// G4PolyhedronTorus(rmin,rmax,rtor,
// phi,dphi) - create G4Polyhedron for Torus;
// G4PolyhedronTet(p0[3],p1[3],p2[3],p3[3]) - create polyhedron for Tet;
//
// G4PolyhedronEllipsoid(dx,dy,dz,
// zcut1,zcut2) - create G4Polyhedron for Ellipsoid;
// zcut1,zcut2) - create G4Polyhedron for Ellipsoid;
// G4PolyhedronEllipticalCone(dx,dy,z,
// zcut1) - create polyhedron for Elliptical cone;
// G4PolyhedronParaboloid(r1,r2,dz,
// phi,dphi) - create polyhedron for Paraboloid;
// G4PolyhedronHype(r1,r2,
// tan1,tan2,halfz) - create polyhedron for Hype;
// G4PolyhedronHyperbolicMirror(a,h,r) - create polyhedron for Hyperbolic mirror;
//
// Public functions inherited from HepPolyhedron (this list might be
// incomplete):
@@ -180,6 +189,15 @@ public:
virtual ~G4PolyhedronSphere ();
};
class G4PolyhedronTet: public G4Polyhedron {
public:
G4PolyhedronTet (const G4double p0[3],
const G4double p1[3],
const G4double p2[3],
const G4double p3[3]);
virtual ~G4PolyhedronTet ();
};
class G4PolyhedronTorus: public G4Polyhedron {
public:
G4PolyhedronTorus (G4double rmin, G4double rmax, G4double rtor,
@@ -252,6 +270,12 @@ class G4PolyhedronEllipticalCone : public G4Polyhedron {
virtual ~G4PolyhedronEllipticalCone ();
};
class G4PolyhedronHyperbolicMirror : public G4Polyhedron {
public:
G4PolyhedronHyperbolicMirror(G4double a, G4double h, G4double r);
virtual ~G4PolyhedronHyperbolicMirror ();
};
std::ostream& operator<<(std::ostream& os, const G4Polyhedron&);
#endif /* G4POLYHEDRON_HH */
@@ -111,6 +111,7 @@ public: // With description
void SetForceSolid (G4bool = true);
void SetForceCloud (G4bool = true);
void SetForceNumberOfCloudPoints (G4int nPoints);
// nPoints <= 0 means under control of viewer
void SetForceAuxEdgeVisible (G4bool = true);
void SetForceLineSegmentsPerCircle (G4int nSegments);
// Allows choice of circle approximation. A circle of 360 degrees
@@ -62,8 +62,18 @@
// - create polyhedron for Sphere;
// HepPolyhedronTorus (rmin,rmax,rtor,phi,dphi)
// - create polyhedron for Torus;
// HepPolyhedronTet (p0[3],p1[3],p2[3],p3[3])
// - create polyhedron for Tet;
// HepPolyhedronEllipsoid (dx,dy,dz,zcut1,zcut2)
// - create polyhedron for Ellipsoid;
// HepPolyhedronEllipticalCone(dx,dy,z,zcut1)
// - create polyhedron for Elliptical cone;
// HepPolyhedronParaboloid (r1,r2,dz,phi,dphi)
// - create polyhedron for Paraboloid;
// HepPolyhedronHype (r1,r2,tan1,tan2,halfz)
// - create polyhedron for Hype;
// HepPolyhedronHyperbolicMirror (a,h,r)
// - create polyhedron for Hyperbolic mirror;
// Public functions:
//
// GetNoVertices () - returns number of vertices;
@@ -505,6 +515,16 @@ class HepPolyhedronTorus : public HepPolyhedron
virtual ~HepPolyhedronTorus();
};
class HepPolyhedronTet : public HepPolyhedron
{
public:
HepPolyhedronTet(const G4double p0[3],
const G4double p1[3],
const G4double p2[3],
const G4double p3[3]);
virtual ~HepPolyhedronTet();
};
class HepPolyhedronEllipsoid : public HepPolyhedron
{
public:
@@ -521,4 +541,11 @@ class HepPolyhedronEllipticalCone : public HepPolyhedron
virtual ~HepPolyhedronEllipticalCone();
};
class HepPolyhedronHyperbolicMirror : public HepPolyhedron
{
public:
HepPolyhedronHyperbolicMirror(G4double a, G4double h, G4double r);
virtual ~HepPolyhedronHyperbolicMirror();
};
#endif /* HEP_POLYHEDRON_HH */
+81 -102
View File
@@ -1,113 +1,92 @@
#------------------------------------------------------------------------------
# sources.cmake
# Module : G4graphics_reps
# Package: Geant4.src.G4graphics_reps
#
# Sources description for a library.
# Lists the sources and headers of the code explicitely.
# Lists include paths needed.
# Lists the internal granular and global dependencies of the library.
# Source specific properties should be added at the end.
#
# Generated on : 24/9/2010
#
#
#------------------------------------------------------------------------------
# List external includes needed.
include_directories(${CLHEP_INCLUDE_DIRS})
# List internal includes needed.
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
#
# Define the Geant4 Module.
#
include(Geant4MacroDefineModule)
GEANT4_DEFINE_MODULE(NAME G4graphics_reps
HEADERS
G4AttCheck.hh
G4AttDef.hh
G4AttDefStore.hh
G4AttDefT.hh
G4AttHolder.hh
G4AttUtils.hh
G4AttValue.hh
G4Circle.hh
G4Color.hh
G4Colour.hh
G4ConversionFatalError.hh
G4ConversionUtils.hh
G4CreatorFactoryT.hh
G4DimensionedDouble.hh
G4DimensionedThreeVector.hh
G4DimensionedType.hh
G4PlacedPolyhedron.hh
G4Point3DList.hh
G4Polyhedron.hh
G4PolyhedronArbitrary.hh
G4Polyline.hh
G4Polymarker.hh
G4Polymarker.icc
G4Scale.hh
G4Scale.icc
G4SmartFilter.hh
G4Square.hh
G4Square.icc
G4Text.hh
G4Text.icc
G4TypeKey.hh
G4TypeKeyT.hh
G4VFilter.hh
G4VGraphicsScene.hh
G4VMarker.hh
G4VMarker.icc
G4VVisManager.hh
G4VisAttributes.hh
G4VisAttributes.icc
G4VisExtent.hh
G4Visible.hh
G4Visible.icc
HepPolyhedron.h
HepPolyhedronProcessor.h
graphics_reps_defs.hh
SOURCES
BooleanProcessor.src
G4AttCheck.cc
G4AttDef.cc
G4AttDefStore.cc
G4AttHolder.cc
G4AttUtils.cc
G4Circle.cc
G4Colour.cc
G4DimensionedTypeUtils.cc
G4PlacedPolyhedron.cc
G4Point3DList.cc
G4Polyhedron.cc
G4PolyhedronArbitrary.cc
G4Polyline.cc
G4Polymarker.cc
G4Scale.cc
G4Square.cc
G4Text.cc
G4VGraphicsScene.cc
G4VMarker.cc
G4VVisManager.cc
G4VisAttributes.cc
G4VisExtent.cc
G4Visible.cc
HepPolyhedron.cc
HepPolyhedronProcessor.src
GRANULAR_DEPENDENCIES
G4globman
G4intercoms
GLOBAL_DEPENDENCIES
G4global
G4intercoms
LINK_LIBRARIES
geant4_define_module(NAME G4graphics_reps
HEADERS
G4AttCheck.hh
G4AttDef.hh
G4AttDefStore.hh
G4AttDefT.hh
G4AttHolder.hh
G4AttUtils.hh
G4AttValue.hh
G4Circle.hh
G4Color.hh
G4Colour.hh
G4ConversionFatalError.hh
G4ConversionUtils.hh
G4CreatorFactoryT.hh
G4DimensionedDouble.hh
G4DimensionedThreeVector.hh
G4DimensionedType.hh
G4PlacedPolyhedron.hh
G4Point3DList.hh
G4Polyhedron.hh
G4PolyhedronArbitrary.hh
G4Polyline.hh
G4Polymarker.hh
G4Polymarker.icc
G4Scale.hh
G4Scale.icc
G4SmartFilter.hh
G4Square.hh
G4Square.icc
G4Text.hh
G4Text.icc
G4TypeKey.hh
G4TypeKeyT.hh
G4VFilter.hh
G4VGraphicsScene.hh
G4VMarker.hh
G4VMarker.icc
G4VVisManager.hh
G4VisAttributes.hh
G4VisAttributes.icc
G4VisExtent.hh
G4Visible.hh
G4Visible.icc
HepPolyhedron.h
HepPolyhedronProcessor.h
graphics_reps_defs.hh
SOURCES
BooleanProcessor.src
G4AttCheck.cc
G4AttDef.cc
G4AttDefStore.cc
G4AttHolder.cc
G4AttUtils.cc
G4Circle.cc
G4Colour.cc
G4DimensionedTypeUtils.cc
G4PlacedPolyhedron.cc
G4Point3DList.cc
G4Polyhedron.cc
G4PolyhedronArbitrary.cc
G4Polyline.cc
G4Polymarker.cc
G4Scale.cc
G4Square.cc
G4Text.cc
G4VGraphicsScene.cc
G4VMarker.cc
G4VVisManager.cc
G4VisAttributes.cc
G4VisExtent.cc
G4Visible.cc
HepPolyhedron.cc
HepPolyhedronProcessor.src
GRANULAR_DEPENDENCIES
G4globman
G4intercoms
GLOBAL_DEPENDENCIES
G4global
G4intercoms
LINK_LIBRARIES
)
# List any source specific properties here
+1 -1
View File
@@ -35,7 +35,7 @@ using namespace std;
std::ostream& operator<<
(std::ostream& os, const std::map<G4String,G4AttDef>* definitions)
{
os << "Deprecated output function. Use const reference equivalent." << endl;
os << "G4AttDef: Deprecated output function. Use const reference instead." << endl;
if (definitions) {
os << *definitions;
} else {
+15
View File
@@ -89,6 +89,14 @@ G4PolyhedronSphere::G4PolyhedronSphere (G4double rmin, G4double rmax,
G4PolyhedronSphere::~G4PolyhedronSphere () {}
G4PolyhedronTet::G4PolyhedronTet (const G4double p0[3],
const G4double p1[3],
const G4double p2[3],
const G4double p3[3]):
G4Polyhedron (HepPolyhedronTet (p0, p1, p2, p3)) {}
G4PolyhedronTet::~G4PolyhedronTet () {}
G4PolyhedronTorus::G4PolyhedronTorus (G4double rmin, G4double rmax,
G4double rtor,
G4double phi, G4double dphi):
@@ -157,6 +165,13 @@ G4PolyhedronEllipticalCone::G4PolyhedronEllipticalCone (G4double ax,
G4PolyhedronEllipticalCone::~G4PolyhedronEllipticalCone () {}
G4PolyhedronHyperbolicMirror::G4PolyhedronHyperbolicMirror (G4double a,
G4double h,
G4double r):
G4Polyhedron (HepPolyhedronHyperbolicMirror(a, h, r)) {}
G4PolyhedronHyperbolicMirror::~G4PolyhedronHyperbolicMirror () {}
std::ostream& operator<<(std::ostream& os, const G4Polyhedron& polyhedron)
{
os << "G4Polyhedron: "
+4 -4
View File
@@ -41,7 +41,7 @@ fLineStyle (unbroken),
fLineWidth (1.),
fForceDrawingStyle (false),
fForcedStyle (wireframe),
fForcedNumberOfCloudPoints (10000),
fForcedNumberOfCloudPoints (0), // <= 0 means under control of viewer
fForceAuxEdgeVisible (false),
fForcedAuxEdgeVisible(false),
fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
@@ -59,7 +59,7 @@ fLineStyle (unbroken),
fLineWidth (1.),
fForceDrawingStyle (false),
fForcedStyle (wireframe),
fForcedNumberOfCloudPoints (10000),
fForcedNumberOfCloudPoints (0), // <= 0 means under control of viewer
fForceAuxEdgeVisible (false),
fForcedAuxEdgeVisible(false),
fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
@@ -77,7 +77,7 @@ fLineStyle (unbroken),
fLineWidth (1.),
fForceDrawingStyle (false),
fForcedStyle (wireframe),
fForcedNumberOfCloudPoints (10000),
fForcedNumberOfCloudPoints (0), // <= 0 means under control of viewer
fForceAuxEdgeVisible (false),
fForcedAuxEdgeVisible(false),
fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
@@ -96,7 +96,7 @@ fLineStyle (unbroken),
fLineWidth (1.),
fForceDrawingStyle (false),
fForcedStyle (wireframe),
fForcedNumberOfCloudPoints (10000),
fForcedNumberOfCloudPoints (0), // <= 0 means under control of viewer
fForceAuxEdgeVisible (false),
fForcedAuxEdgeVisible(false),
fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
+102
View File
@@ -2116,6 +2116,46 @@ HepPolyhedronTorus::HepPolyhedronTorus(G4double rmin,
HepPolyhedronTorus::~HepPolyhedronTorus() {}
HepPolyhedronTet::HepPolyhedronTet(const G4double p0[3],
const G4double p1[3],
const G4double p2[3],
const G4double p3[3])
/***********************************************************************
* *
* Name: HepPolyhedronTet Date: 21.02.2020 *
* Author: E.Tcherniaev Revised: *
* *
* Function: Constructor of polyhedron for TETrahedron *
* *
* Input: p0,p1,p2,p3 - vertices *
* *
***********************************************************************/
{
AllocateMemory(4,4);
pV[1].set(p0[0], p0[1], p0[2]);
pV[2].set(p1[0], p1[1], p1[2]);
pV[3].set(p2[0], p2[1], p2[2]);
pV[4].set(p3[0], p3[1], p3[2]);
G4Vector3D v1(pV[2] - pV[1]);
G4Vector3D v2(pV[3] - pV[1]);
G4Vector3D v3(pV[4] - pV[1]);
if (v1.cross(v2).dot(v3) < 0.)
{
pV[3].set(p3[0], p3[1], p3[2]);
pV[4].set(p2[0], p2[1], p2[2]);
}
pF[1] = G4Facet(1,2, 3,4, 2,3);
pF[2] = G4Facet(1,3, 4,4, 3,1);
pF[3] = G4Facet(1,1, 2,4, 4,2);
pF[4] = G4Facet(2,1, 3,2, 4,3);
}
HepPolyhedronTet::~HepPolyhedronTet() {}
HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(G4double ax, G4double by,
G4double cz, G4double zCut1,
G4double zCut2)
@@ -2307,6 +2347,68 @@ HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(G4double ax,
HepPolyhedronEllipticalCone::~HepPolyhedronEllipticalCone() {}
HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(G4double a,
G4double h,
G4double r)
/***********************************************************************
* *
* Name: HepPolyhedronHyperbolicMirror Date: 22.02.2020 *
* Author: E.Tcherniaev Revised: *
* *
* Function: Create polyhedron for Hyperbolic mirror *
* *
* Input: a - half-separation *
* h - height *
* r - radius *
* *
***********************************************************************/
{
G4double H = std::abs(h);
G4double R = std::abs(r);
G4double A = std::abs(a);
G4double B = A*R/std::sqrt(2*A*H + H*H);
// P R E P A R E T W O P O L Y L I N E S
G4int np1 = (A == 0.) ? 2 : std::max(3, GetNumberOfRotationSteps()/4) + 1;
G4int np2 = 2;
G4double maxAng = (A == 0.) ? 0. : std::acosh(1. + H/A);
G4double delAng = maxAng/(np1 - 1);
G4double *zz = new G4double[np1 + np2];
G4double *rr = new G4double[np1 + np2];
// 1st polyline
zz[0] = H;
rr[0] = R;
for (G4int iz = 1; iz < np1 - 1; ++iz)
{
G4double ang = maxAng - iz*delAng;
zz[iz] = A*std::cosh(ang) - A;
rr[iz] = B*std::sinh(ang);
}
zz[np1 - 1] = 0.;
rr[np1 - 1] = 0.;
// 2nd polyline
zz[np1] = H;
rr[np1] = 0.;
zz[np1 + 1] = 0.;
rr[np1 + 1] = 0.;
// R O T A T E P O L Y L I N E S
G4double phi = 0.;
G4double dphi = CLHEP::twopi;
RotateAroundZ(0, phi, dphi, np1, np2, zz, rr, -1, -1);
SetReferences();
delete [] zz;
delete [] rr;
}
HepPolyhedronHyperbolicMirror::~HepPolyhedronHyperbolicMirror() {}
G4ThreadLocal G4int HepPolyhedron::fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS;
/***********************************************************************
* *