Import Geant4 11.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2024-12-06 11:11:40 +01:00
parent e58e650b32
commit 32390e802b
1984 changed files with 98713 additions and 83996 deletions
+14
View File
@@ -6,6 +6,20 @@ It must **not** be used as a substitute for writing good git commit messages!
-------------------------------------------------------------------------------
## 2024-10-01 Evgueni Tcherniaev (geom-specific-V11-02-08)
- G4GenericTrap: Fixed minor defect reported by Coverity
## 2024-07-18 Alvaro Tolosa-Delgado (geom-specific-V11-02-07)
- Remove internal state of G4TwistedTubs and G4VTwistedFaceted.
## 2024-07-10 Evgueni Tcherniaev (geom-specific-V11-02-06)
- G4ExtrudedSolid: Fixed defects reported by Coverity
## 2024-07-08 Gabriele Cosmo (geom-specific-V11-02-05)
- Fixed reported Coverity defect; in G4Voxelizer, use std::move instead of
plain vector copy in methods BuildReduceVoxels(..), BuildReduceVoxels2(..),
BuildBoundaries() and CreateMiniVoxels(..).
## 2024-05-29 Evgueni Tcherniaev (geom-specific-V11-02-04)
- Added new methods GetNumOfConstituents() and IsFaceted().
@@ -226,109 +226,6 @@ class G4TwistedTubs : public G4VSolid
mutable G4bool fRebuildPolyhedron = false;
mutable G4Polyhedron* fpPolyhedron = nullptr; // polyhedron for vis
class LastState // last Inside result
{
public:
LastState()
{
p.set(kInfinity,kInfinity,kInfinity);
inside = kOutside;
}
~LastState()= default;
LastState(const LastState& r) = default;
LastState& operator=(const LastState& r)
{
if (this == &r) { return *this; }
p = r.p; inside = r.inside;
return *this;
}
public:
G4ThreeVector p;
EInside inside;
};
class LastVector // last SurfaceNormal result
{
public:
LastVector()
{
p.set(kInfinity,kInfinity,kInfinity);
vec.set(kInfinity,kInfinity,kInfinity);
surface = new G4VTwistSurface*[1];
}
~LastVector()
{
delete [] surface;
}
LastVector(const LastVector& r) : p(r.p), vec(r.vec)
{
surface = new G4VTwistSurface*[1];
surface[0] = r.surface[0];
}
LastVector& operator=(const LastVector& r)
{
if (&r == this) { return *this; }
p = r.p; vec = r.vec;
delete [] surface; surface = new G4VTwistSurface*[1];
surface[0] = r.surface[0];
return *this;
}
public:
G4ThreeVector p;
G4ThreeVector vec;
G4VTwistSurface **surface;
};
class LastValue // last G4double value
{
public:
LastValue()
{
p.set(kInfinity,kInfinity,kInfinity);
value = DBL_MAX;
}
~LastValue()= default;
LastValue(const LastValue& r) = default;
LastValue& operator=(const LastValue& r)
{
if (this == &r) { return *this; }
p = r.p; value = r.value;
return *this;
}
public:
G4ThreeVector p;
G4double value;
};
class LastValueWithDoubleVector // last G4double value
{
public:
LastValueWithDoubleVector()
{
p.set(kInfinity,kInfinity,kInfinity);
vec.set(kInfinity,kInfinity,kInfinity);
value = DBL_MAX;
}
~LastValueWithDoubleVector()= default;
LastValueWithDoubleVector(const LastValueWithDoubleVector& r) = default;
LastValueWithDoubleVector& operator=(const LastValueWithDoubleVector& r)
{
if (this == &r) { return *this; }
p = r.p; vec = r.vec; value = r.value;
return *this;
}
public:
G4ThreeVector p;
G4ThreeVector vec;
G4double value;
};
LastState fLastInside;
LastVector fLastNormal;
LastValue fLastDistanceToIn;
LastValue fLastDistanceToOut;
LastValueWithDoubleVector fLastDistanceToInWithV;
LastValueWithDoubleVector fLastDistanceToOutWithV;
};
//=====================================================================
@@ -190,110 +190,6 @@ class G4VTwistedFaceted: public G4VSolid
G4VTwistSurface* fSide180 ; // Twisted Side at phi = 180 deg
G4VTwistSurface* fSide270 ; // Twisted Side at phi = 270 deg
private:
class LastState // last Inside result
{
public:
LastState()
{
p.set(kInfinity,kInfinity,kInfinity); inside = kOutside;
}
~LastState()= default;
LastState(const LastState& r) = default;
LastState& operator=(const LastState& r)
{
if (this == &r) { return *this; }
p = r.p; inside = r.inside;
return *this;
}
public:
G4ThreeVector p;
EInside inside;
};
class LastVector // last SurfaceNormal result
{
public:
LastVector()
{
p.set(kInfinity,kInfinity,kInfinity);
vec.set(kInfinity,kInfinity,kInfinity);
surface = new G4VTwistSurface*[1];
}
~LastVector()
{
delete [] surface;
}
LastVector(const LastVector& r) : p(r.p), vec(r.vec)
{
surface = new G4VTwistSurface*[1];
surface[0] = r.surface[0];
}
LastVector& operator=(const LastVector& r)
{
if (&r == this) { return *this; }
p = r.p; vec = r.vec;
delete [] surface; surface = new G4VTwistSurface*[1];
surface[0] = r.surface[0];
return *this;
}
public:
G4ThreeVector p;
G4ThreeVector vec;
G4VTwistSurface **surface;
};
class LastValue // last G4double value
{
public:
LastValue()
{
p.set(kInfinity,kInfinity,kInfinity);
value = DBL_MAX;
}
~LastValue()= default;
LastValue(const LastValue& r) = default;
LastValue& operator=(const LastValue& r)
{
if (this == &r) { return *this; }
p = r.p; value = r.value;
return *this;
}
public:
G4ThreeVector p;
G4double value;
};
class LastValueWithDoubleVector // last G4double value
{
public:
LastValueWithDoubleVector()
{
p.set(kInfinity,kInfinity,kInfinity);
vec.set(kInfinity,kInfinity,kInfinity);
value = DBL_MAX;
}
~LastValueWithDoubleVector()= default;
LastValueWithDoubleVector(const LastValueWithDoubleVector& r) = default;
LastValueWithDoubleVector& operator=(const LastValueWithDoubleVector& r)
{
if (this == &r) { return *this; }
p = r.p; vec = r.vec; value = r.value;
return *this;
}
public:
G4ThreeVector p;
G4ThreeVector vec;
G4double value;
};
LastState fLastInside;
LastVector fLastNormal;
LastValue fLastDistanceToIn;
LastValue fLastDistanceToOut;
LastValueWithDoubleVector fLastDistanceToInWithV;
LastValueWithDoubleVector fLastDistanceToOutWithV;
};
//=====================================================================
@@ -733,7 +733,7 @@ G4bool G4ExtrudedSolid::AddGeneralPolygonFacets()
triangle[0] = c1->second;
triangle[1] = c2->second;
triangle[2] = c3->second;
fTriangles.push_back(triangle);
fTriangles.push_back(std::move(triangle));
// remove the ear point from verticesToBeDone
//
@@ -772,7 +772,7 @@ G4bool G4ExtrudedSolid::MakeFacets()
triangle[0] = 0;
triangle[1] = 1;
triangle[2] = 2;
fTriangles.push_back(triangle);
fTriangles.push_back(std::move(triangle));
}
else if ( fNv == 4 )
@@ -793,13 +793,13 @@ G4bool G4ExtrudedSolid::MakeFacets()
triangle1[0] = 0;
triangle1[1] = 1;
triangle1[2] = 2;
fTriangles.push_back(triangle1);
fTriangles.push_back(std::move(triangle1));
std::vector<G4int> triangle2(3);
triangle2[0] = 0;
triangle2[1] = 2;
triangle2[2] = 3;
fTriangles.push_back(triangle2);
fTriangles.push_back(std::move(triangle2));
}
else
{
@@ -798,7 +798,7 @@ G4double G4GenericTrap::DistanceToOut(const G4ThreeVector& p,
if (iface < 0)
{
*validNorm = true;
n->set(0., 0., G4double(iface + 3)); // little trick: (-4+3)=-1, (-2+3)=+1
n->set(0, 0, iface + 3); // little trick: (-4+3)=-1, (-2+3)=+1
}
else
{
@@ -56,6 +56,7 @@ namespace
G4Mutex polyhedronMutex = G4MUTEX_INITIALIZER;
}
//=====================================================================
//* constructors ------------------------------------------------------
@@ -223,12 +224,7 @@ G4TwistedTubs::G4TwistedTubs(const G4TwistedTubs& rhs)
fTanOuterStereo2(rhs.fTanOuterStereo2),
fLowerEndcap(nullptr), fUpperEndcap(nullptr), fLatterTwisted(nullptr), fFormerTwisted(nullptr),
fInnerHype(nullptr), fOuterHype(nullptr),
fCubicVolume(rhs.fCubicVolume), fSurfaceArea(rhs.fSurfaceArea),
fLastInside(rhs.fLastInside), fLastNormal(rhs.fLastNormal),
fLastDistanceToIn(rhs.fLastDistanceToIn),
fLastDistanceToOut(rhs.fLastDistanceToOut),
fLastDistanceToInWithV(rhs.fLastDistanceToInWithV),
fLastDistanceToOutWithV(rhs.fLastDistanceToOutWithV)
fCubicVolume(rhs.fCubicVolume), fSurfaceArea(rhs.fSurfaceArea)
{
for (auto i=0; i<2; ++i)
{
@@ -268,11 +264,6 @@ G4TwistedTubs& G4TwistedTubs::operator = (const G4TwistedTubs& rhs)
fLowerEndcap= fUpperEndcap= fLatterTwisted= fFormerTwisted= nullptr;
fInnerHype= fOuterHype= nullptr;
fCubicVolume= rhs.fCubicVolume; fSurfaceArea= rhs.fSurfaceArea;
fLastInside= rhs.fLastInside; fLastNormal= rhs.fLastNormal;
fLastDistanceToIn= rhs.fLastDistanceToIn;
fLastDistanceToOut= rhs.fLastDistanceToOut;
fLastDistanceToInWithV= rhs.fLastDistanceToInWithV;
fLastDistanceToOutWithV= rhs.fLastDistanceToOutWithV;
for (auto i=0; i<2; ++i)
{
@@ -381,44 +372,32 @@ EInside G4TwistedTubs::Inside(const G4ThreeVector& p) const
// G4Timer timer(timerid, "G4TwistedTubs", "Inside");
// timer.Start();
G4ThreeVector *tmpp;
EInside *tmpinside;
if (fLastInside.p == p)
{
return fLastInside.inside;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastInside.p));
tmpinside = const_cast<EInside*>(&(fLastInside.inside));
tmpp->set(p.x(), p.y(), p.z());
}
EInside outerhypearea = ((G4TwistTubsHypeSide *)fOuterHype)->Inside(p);
G4double innerhyperho = ((G4TwistTubsHypeSide *)fInnerHype)->GetRhoAtPZ(p);
G4double distanceToOut = p.getRho() - innerhyperho; // +ve: inside
EInside tmpinside;
if ((outerhypearea == kOutside) || (distanceToOut < -halftol))
{
*tmpinside = kOutside;
tmpinside = kOutside;
}
else if (outerhypearea == kSurface)
{
*tmpinside = kSurface;
tmpinside = kSurface;
}
else
{
if (distanceToOut <= halftol)
{
*tmpinside = kSurface;
tmpinside = kSurface;
}
else
{
*tmpinside = kInside;
tmpinside = kInside;
}
}
return fLastInside.inside;
return tmpinside;
}
//=====================================================================
@@ -433,14 +412,6 @@ G4ThreeVector G4TwistedTubs::SurfaceNormal(const G4ThreeVector& p) const
// Which of the three or four surfaces are we closest to?
//
if (fLastNormal.p == p)
{
return fLastNormal.vec;
}
auto tmpp = const_cast<G4ThreeVector*>(&(fLastNormal.p));
auto tmpnormal = const_cast<G4ThreeVector*>(&(fLastNormal.vec));
auto tmpsurface = const_cast<G4VTwistSurface**>(fLastNormal.surface);
tmpp->set(p.x(), p.y(), p.z());
G4double distance = kInfinity;
@@ -466,10 +437,7 @@ G4ThreeVector G4TwistedTubs::SurfaceNormal(const G4ThreeVector& p) const
}
}
tmpsurface[0] = surfaces[besti];
*tmpnormal = tmpsurface[0]->GetNormal(bestxx, true);
return fLastNormal.vec;
return surfaces[besti]->GetNormal(bestxx, true);
}
//=====================================================================
@@ -485,26 +453,6 @@ G4double G4TwistedTubs::DistanceToIn (const G4ThreeVector& p,
// The function returns kInfinity if no intersection or
// just grazing within tolerance.
//
// checking last value
//
G4ThreeVector* tmpp;
G4ThreeVector* tmpv;
G4double* tmpdist;
if ((fLastDistanceToInWithV.p == p) && (fLastDistanceToInWithV.vec == v))
{
return fLastDistanceToIn.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToInWithV.p));
tmpv = const_cast<G4ThreeVector*>(&(fLastDistanceToInWithV.vec));
tmpdist = const_cast<G4double*>(&(fLastDistanceToInWithV.value));
tmpp->set(p.x(), p.y(), p.z());
tmpv->set(v.x(), v.y(), v.z());
}
//
// Calculate DistanceToIn(p,v)
//
@@ -524,8 +472,7 @@ G4double G4TwistedTubs::DistanceToIn (const G4ThreeVector& p,
G4ThreeVector normal = SurfaceNormal(p);
if (normal*v < 0)
{
*tmpdist = 0.;
return fLastDistanceToInWithV.value;
return 0;
}
}
}
@@ -557,9 +504,7 @@ G4double G4TwistedTubs::DistanceToIn (const G4ThreeVector& p,
bestxx = xx;
}
}
*tmpdist = distance;
return fLastDistanceToInWithV.value;
return distance;
}
//=====================================================================
@@ -570,23 +515,6 @@ G4double G4TwistedTubs::DistanceToIn (const G4ThreeVector& p) const
// DistanceToIn(p):
// Calculate distance to surface of shape from `outside',
// allowing for tolerance
//
// checking last value
//
G4ThreeVector* tmpp;
G4double* tmpdist;
if (fLastDistanceToIn.p == p)
{
return fLastDistanceToIn.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToIn.p));
tmpdist = const_cast<G4double*>(&(fLastDistanceToIn.value));
tmpp->set(p.x(), p.y(), p.z());
}
//
// Calculate DistanceToIn(p)
@@ -600,8 +528,7 @@ G4double G4TwistedTubs::DistanceToIn (const G4ThreeVector& p) const
{}
case (kSurface) :
{
*tmpdist = 0.;
return fLastDistanceToIn.value;
return 0;
}
case (kOutside) :
{
@@ -628,8 +555,7 @@ G4double G4TwistedTubs::DistanceToIn (const G4ThreeVector& p) const
bestxx = xx;
}
}
*tmpdist = distance;
return fLastDistanceToIn.value;
return distance;
}
default :
{
@@ -656,32 +582,11 @@ G4double G4TwistedTubs::DistanceToOut( const G4ThreeVector& p,
// The function returns kInfinity if no intersection or
// just grazing within tolerance.
//
// checking last value
//
G4ThreeVector* tmpp;
G4ThreeVector* tmpv;
G4double* tmpdist;
if ((fLastDistanceToOutWithV.p == p) && (fLastDistanceToOutWithV.vec == v) )
{
return fLastDistanceToOutWithV.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToOutWithV.p));
tmpv = const_cast<G4ThreeVector*>(&(fLastDistanceToOutWithV.vec));
tmpdist = const_cast<G4double*>(&(fLastDistanceToOutWithV.value));
tmpp->set(p.x(), p.y(), p.z());
tmpv->set(v.x(), v.y(), v.z());
}
//
// Calculate DistanceToOut(p,v)
//
EInside currentside = Inside(p);
if (currentside == kOutside)
{
}
@@ -693,16 +598,14 @@ G4double G4TwistedTubs::DistanceToOut( const G4ThreeVector& p,
// If the particle is exiting from the volume, return 0.
//
G4ThreeVector normal = SurfaceNormal(p);
G4VTwistSurface *blockedsurface = fLastNormal.surface[0];
if (normal*v > 0)
{
if (calcNorm)
{
*norm = (blockedsurface->GetNormal(p, true));
*validNorm = blockedsurface->IsValidNorm();
*norm = normal;
*validNorm = true;
}
*tmpdist = 0.;
return fLastDistanceToOutWithV.value;
return 0;
}
}
}
@@ -746,9 +649,7 @@ G4double G4TwistedTubs::DistanceToOut( const G4ThreeVector& p,
}
}
*tmpdist = distance;
return fLastDistanceToOutWithV.value;
return distance;
}
@@ -761,23 +662,6 @@ G4double G4TwistedTubs::DistanceToOut( const G4ThreeVector& p ) const
// Calculate distance to surface of shape from `inside',
// allowing for tolerance
//
// checking last value
//
G4ThreeVector* tmpp;
G4double* tmpdist;
if (fLastDistanceToOut.p == p)
{
return fLastDistanceToOut.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToOut.p));
tmpdist = const_cast<G4double*>(&(fLastDistanceToOut.value));
tmpp->set(p.x(), p.y(), p.z());
}
//
// Calculate DistanceToOut(p)
//
@@ -791,8 +675,7 @@ G4double G4TwistedTubs::DistanceToOut( const G4ThreeVector& p ) const
}
case (kSurface) :
{
*tmpdist = 0.;
return fLastDistanceToOut.value;
return 0;
}
case (kInside) :
{
@@ -819,9 +702,7 @@ G4double G4TwistedTubs::DistanceToOut( const G4ThreeVector& p ) const
bestxx = xx;
}
}
*tmpdist = distance;
return fLastDistanceToOut.value;
return distance;
}
default :
{
@@ -54,6 +54,7 @@ namespace
G4Mutex polyhedronMutex = G4MUTEX_INITIALIZER;
}
//=====================================================================
//* constructors ------------------------------------------------------
@@ -222,12 +223,7 @@ G4VTwistedFaceted::G4VTwistedFaceted(const G4VTwistedFaceted& rhs)
fDx3(rhs.fDx3), fDx4(rhs.fDx4), fDz(rhs.fDz), fDx(rhs.fDx), fDy(rhs.fDy),
fAlph(rhs.fAlph), fTAlph(rhs.fTAlph), fdeltaX(rhs.fdeltaX),
fdeltaY(rhs.fdeltaY), fPhiTwist(rhs.fPhiTwist), fLowerEndcap(nullptr),
fUpperEndcap(nullptr), fSide0(nullptr), fSide90(nullptr), fSide180(nullptr), fSide270(nullptr),
fLastInside(rhs.fLastInside), fLastNormal(rhs.fLastNormal),
fLastDistanceToIn(rhs.fLastDistanceToIn),
fLastDistanceToOut(rhs.fLastDistanceToOut),
fLastDistanceToInWithV(rhs.fLastDistanceToInWithV),
fLastDistanceToOutWithV(rhs.fLastDistanceToOutWithV)
fUpperEndcap(nullptr), fSide0(nullptr), fSide90(nullptr), fSide180(nullptr), fSide270(nullptr)
{
CreateSurfaces();
}
@@ -257,11 +253,6 @@ G4VTwistedFaceted& G4VTwistedFaceted::operator = (const G4VTwistedFaceted& rhs)
fCubicVolume= rhs.fCubicVolume; fSurfaceArea= rhs.fSurfaceArea;
fRebuildPolyhedron = false;
delete fpPolyhedron; fpPolyhedron = nullptr;
fLastInside= rhs.fLastInside; fLastNormal= rhs.fLastNormal;
fLastDistanceToIn= rhs.fLastDistanceToIn;
fLastDistanceToOut= rhs.fLastDistanceToOut;
fLastDistanceToInWithV= rhs.fLastDistanceToInWithV;
fLastDistanceToOutWithV= rhs.fLastDistanceToOutWithV;
CreateSurfaces();
@@ -347,20 +338,7 @@ G4VTwistedFaceted::CalculateExtent( const EAxis pAxis,
EInside G4VTwistedFaceted::Inside(const G4ThreeVector& p) const
{
G4ThreeVector *tmpp;
EInside *tmpin;
if (fLastInside.p == p)
{
return fLastInside.inside;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastInside.p));
tmpin = const_cast<EInside*>(&(fLastInside.inside));
tmpp->set(p.x(), p.y(), p.z());
}
*tmpin = kOutside ;
EInside tmpin = kOutside ;
G4double phi = p.z()/(2*fDz) * fPhiTwist ; // rotate the point to z=0
G4double cphi = std::cos(-phi) ;
@@ -414,13 +392,13 @@ EInside G4VTwistedFaceted::Inside(const G4ThreeVector& p) const
if ( posy <= yMax - kCarTolerance*0.5
&& posy >= yMin + kCarTolerance*0.5 )
{
if (std::fabs(posz) <= fDz - kCarTolerance*0.5 ) *tmpin = kInside ;
else if (std::fabs(posz) <= fDz + kCarTolerance*0.5 ) *tmpin = kSurface ;
if (std::fabs(posz) <= fDz - kCarTolerance*0.5 ) tmpin = kInside ;
else if (std::fabs(posz) <= fDz + kCarTolerance*0.5 ) tmpin = kSurface ;
}
else if ( posy <= yMax + kCarTolerance*0.5
&& posy >= yMin - kCarTolerance*0.5 )
{
if (std::fabs(posz) <= fDz + kCarTolerance*0.5 ) *tmpin = kSurface ;
if (std::fabs(posz) <= fDz + kCarTolerance*0.5 ) tmpin = kSurface ;
}
}
else if ( posx <= xMax + kCarTolerance*0.5
@@ -429,15 +407,15 @@ EInside G4VTwistedFaceted::Inside(const G4ThreeVector& p) const
if ( posy <= yMax + kCarTolerance*0.5
&& posy >= yMin - kCarTolerance*0.5 )
{
if (std::fabs(posz) <= fDz + kCarTolerance*0.5) *tmpin = kSurface ;
if (std::fabs(posz) <= fDz + kCarTolerance*0.5) tmpin = kSurface ;
}
}
#ifdef G4TWISTDEBUG
G4cout << "inside = " << fLastInside.inside << G4endl ;
G4cout << "inside = " << tmpin << G4endl ;
#endif
return fLastInside.inside;
return tmpin;
}
@@ -454,15 +432,6 @@ G4ThreeVector G4VTwistedFaceted::SurfaceNormal(const G4ThreeVector& p) const
// Which of the three or four surfaces are we closest to?
//
if (fLastNormal.p == p)
{
return fLastNormal.vec;
}
auto tmpp = const_cast<G4ThreeVector*>(&(fLastNormal.p));
auto tmpnormal = const_cast<G4ThreeVector*>(&(fLastNormal.vec));
auto tmpsurface = const_cast<G4VTwistSurface**>(fLastNormal.surface);
tmpp->set(p.x(), p.y(), p.z());
G4double distance = kInfinity;
@@ -490,10 +459,7 @@ G4ThreeVector G4VTwistedFaceted::SurfaceNormal(const G4ThreeVector& p) const
}
}
tmpsurface[0] = surfaces[besti];
*tmpnormal = tmpsurface[0]->GetNormal(bestxx, true);
return fLastNormal.vec;
return surfaces[besti]->GetNormal(bestxx, true);
}
@@ -510,26 +476,6 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p,
// The function returns kInfinity if no intersection or
// just grazing within tolerance.
//
// checking last value
//
G4ThreeVector* tmpp;
G4ThreeVector* tmpv;
G4double* tmpdist;
if (fLastDistanceToInWithV.p == p && fLastDistanceToInWithV.vec == v)
{
return fLastDistanceToIn.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToInWithV.p));
tmpv = const_cast<G4ThreeVector*>(&(fLastDistanceToInWithV.vec));
tmpdist = const_cast<G4double*>(&(fLastDistanceToInWithV.value));
tmpp->set(p.x(), p.y(), p.z());
tmpv->set(v.x(), v.y(), v.z());
}
//
// Calculate DistanceToIn(p,v)
//
@@ -547,8 +493,7 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p,
G4ThreeVector normal = SurfaceNormal(p);
if (normal*v < 0)
{
*tmpdist = 0.;
return fLastDistanceToInWithV.value;
return 0;
}
}
@@ -574,7 +519,7 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p,
for (const auto & surface : surfaces)
{
#ifdef G4TWISTDEBUG
G4cout << G4endl << "surface " << i << ": " << G4endl << G4endl ;
G4cout << G4endl << "surface " << &surface - &*surfaces << ": " << G4endl << G4endl ;
#endif
G4double tmpdistance = surface->DistanceToIn(p, v, xx);
#ifdef G4TWISTDEBUG
@@ -592,9 +537,8 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p,
G4cout << "best distance = " << distance << G4endl ;
#endif
*tmpdist = distance;
// timer.Stop();
return fLastDistanceToInWithV.value;
return distance;
}
@@ -608,23 +552,6 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p) const
// allowing for tolerance
//
//
// checking last value
//
G4ThreeVector* tmpp;
G4double* tmpdist;
if (fLastDistanceToIn.p == p)
{
return fLastDistanceToIn.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToIn.p));
tmpdist = const_cast<G4double*>(&(fLastDistanceToIn.value));
tmpp->set(p.x(), p.y(), p.z());
}
//
// Calculate DistanceToIn(p)
//
@@ -639,8 +566,7 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p) const
case (kSurface) :
{
*tmpdist = 0.;
return fLastDistanceToIn.value;
return 0;
}
case (kOutside) :
@@ -671,8 +597,7 @@ G4double G4VTwistedFaceted::DistanceToIn (const G4ThreeVector& p) const
bestxx = xx;
}
}
*tmpdist = distance;
return fLastDistanceToIn.value;
return distance;
}
default:
@@ -702,26 +627,6 @@ G4VTwistedFaceted::DistanceToOut( const G4ThreeVector& p,
// The function returns kInfinity if no intersection or
// just grazing within tolerance.
//
// checking last value
//
G4ThreeVector* tmpp;
G4ThreeVector* tmpv;
G4double* tmpdist;
if (fLastDistanceToOutWithV.p == p && fLastDistanceToOutWithV.vec == v )
{
return fLastDistanceToOutWithV.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToOutWithV.p));
tmpv = const_cast<G4ThreeVector*>(&(fLastDistanceToOutWithV.vec));
tmpdist = const_cast<G4double*>(&(fLastDistanceToOutWithV.value));
tmpp->set(p.x(), p.y(), p.z());
tmpv->set(v.x(), v.y(), v.z());
}
//
// Calculate DistanceToOut(p,v)
//
@@ -737,17 +642,15 @@ G4VTwistedFaceted::DistanceToOut( const G4ThreeVector& p,
// if the particle is exiting from the volume, return 0
//
G4ThreeVector normal = SurfaceNormal(p);
G4VTwistSurface *blockedsurface = fLastNormal.surface[0];
if (normal*v > 0)
{
if (calcNorm)
{
*norm = (blockedsurface->GetNormal(p, true));
*validNorm = blockedsurface->IsValidNorm();
*norm = normal;
*validNorm = true;
}
*tmpdist = 0.;
// timer.Stop();
return fLastDistanceToOutWithV.value;
return 0;
}
}
@@ -789,8 +692,7 @@ G4VTwistedFaceted::DistanceToOut( const G4ThreeVector& p,
}
}
*tmpdist = distance;
return fLastDistanceToOutWithV.value;
return distance;
}
@@ -802,24 +704,6 @@ G4double G4VTwistedFaceted::DistanceToOut( const G4ThreeVector& p ) const
// DistanceToOut(p):
// Calculate distance to surface of shape from `inside',
// allowing for tolerance
//
// checking last value
//
G4ThreeVector* tmpp;
G4double* tmpdist;
if (fLastDistanceToOut.p == p)
{
return fLastDistanceToOut.value;
}
else
{
tmpp = const_cast<G4ThreeVector*>(&(fLastDistanceToOut.p));
tmpdist = const_cast<G4double*>(&(fLastDistanceToOut.value));
tmpp->set(p.x(), p.y(), p.z());
}
//
// Calculate DistanceToOut(p)
@@ -848,8 +732,7 @@ G4double G4VTwistedFaceted::DistanceToOut( const G4ThreeVector& p ) const
}
case (kSurface) :
{
*tmpdist = 0.;
retval = fLastDistanceToOut.value;
retval = 0;
break;
}
@@ -881,9 +764,7 @@ G4double G4VTwistedFaceted::DistanceToOut( const G4ThreeVector& p ) const
bestxx = xx;
}
}
*tmpdist = distance;
retval = fLastDistanceToOut.value;
retval = distance;
break;
}
@@ -306,7 +306,7 @@ void G4Voxelizer::BuildBoundaries()
reduced.push_back(boundary[i]);
}
}
boundary = reduced;
boundary = std::move(reduced);
}
}
}
@@ -591,7 +591,7 @@ void G4Voxelizer::BuildReduceVoxels(std::vector<G4double> boundaries[],
skip = mergings[i];
}
}
boundaries[k] = reducedBoundary;
boundaries[k] = std::move(reducedBoundary);
}
/*
G4int count = 0;
@@ -695,7 +695,7 @@ void G4Voxelizer::BuildReduceVoxels2(std::vector<G4double> boundaries[],
}
}
reducedBoundary[destination-1] = boundary[max];
boundaries[k] = reducedBoundary;
boundaries[k] = std::move(reducedBoundary);
}
}
@@ -746,7 +746,7 @@ void G4Voxelizer::CreateMiniVoxels(std::vector<G4double> boundaries[],
}
fVoxelBoxes.push_back(box);
std::vector<G4int>(candidates).swap(candidates);
fVoxelBoxesCandidates.push_back(candidates);
fVoxelBoxesCandidates.push_back(std::move(candidates));
}
}
}