Import Geant4 5.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:57:27 +02:00
parent 330b82b769
commit 37fff30d2e
5733 changed files with 263867 additions and 74574 deletions
+53 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.37 2002/06/24 07:15:27 gcosmo Exp $
$Id: History,v 1.45 2002/11/19 17:15:37 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,58 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
November 19, 2002 G. Cosmo geommng-V04-01-05
- G4GeometryManager[.cc]
o Fixed bug in initialisation of fine-grained timer
(courtesy of Helmut Burkhardt).
November 09, 2002 G. Cosmo geommng-V04-01-04
- G4LogicalVolume.cc:
o Correction to propagation of the Field Manager to Daughter volumes:
it should be propagated to all daughters that do not have one -- not to all the
ones that have one already. Fixes bug report for field by logical volume.
(J.Apostolakis)
October 28, 2002 G. Cosmo geommng-V04-01-03
- G4VSolid[.hh.icc.cc]:
o Added pure virtual method StreamInfo() to stream contents of a solid
to a generic output stream.
o Added method DumpInfo() using StreamInfo() to dump contents to the
standard output.
October 23, 2002 G. Cosmo geommng-V04-01-02
- G4PVReplica.cc:
o Corrected order for check on illegal constructions, in constructor taking
a pointer to logical volume as mother volume.
o Improved output diagnostics.
- G4PVParameterised.cc:
o Improved output diagnostics for check on illegal constructions.
October 16, 2002 G. Cosmo geommng-V04-01-01
- G4PVReplica.cc, G4PVParameterised.cc:
Added checks for illegal geometry contructions; contructors now verify unicity
of daughter volumes for replicas and parameterised volumes, as well as checks
for attempt to replicate/parameterise the world volume.
October 4, 2002 G. Cosmo
- G4PVParameterised[.hh.cc], G4PVPlacement[.hh.cc]:
Added new method IsParameterised() to enquire for existing parameterisation
for a placed volume.
- G4PVReplica[.hh.cc], G4VPhysicalVolume[.hh.cc]:
Added methods IsParameterised() and GetMultiplicity() to enquire for existing
parameterisation of placed volume, and number of replicated volumes.
September 11, 2002 G. Cosmo geommng-V04-01-00
- G4AssemblyVolume[.hh.icc.cc]:
o Fixed bug #409 concerning missing imprint counter method.
o Fixed bug #410 concerning the internal counting mechanism.
The fix involved the addition of a new data member fAssemblyID,
holding the instance ID of the given object derived from
class-wide counter. Corresponding accessor methods has been
added as well.
- Updated unit test TestAssemblyVolume, to add call to G4RunManager
for resetting nagivator state in TstVADetectorConstruction.cc.
June 24, 2002 G. Cosmo geommng-V04-00-08
- G4AssemblyVolume[.hh.cc]:
o Moved accessors to assembly counters to public.
@@ -22,7 +22,7 @@
//
//
// $Id: G4AffineTransform.hh,v 1.4 2001/07/11 09:59:15 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4AffineTransform
@@ -22,7 +22,7 @@
//
//
// $Id: G4AffineTransform.icc,v 1.6 2002/01/08 12:38:05 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// G4AffineTransformation Inline implementation
@@ -22,7 +22,7 @@
//
//
// $Id: G4AssemblyTriplet.hh,v 1.5 2001/07/11 09:59:16 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// Class G4AssemblyTriplet
@@ -22,7 +22,7 @@
//
//
// $Id: G4AssemblyTriplet.icc,v 1.5 2001/07/11 09:59:16 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// Class G4AssemblyTriplet - inline implementation
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4AssemblyVolume.hh,v 1.7 2002/06/22 00:39:23 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4AssemblyVolume.hh,v 1.8 2002/09/10 16:59:44 radoone Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// Class G4AssemblyVolume
@@ -173,16 +173,24 @@ class G4AssemblyVolume
public:
unsigned int GetInstanceCount() const;
// Return the number of existing instance of G4AssemblyVolume class
unsigned int GetAssemblyID() const;
// Return instance number of this concrete object
protected:
void SetInstanceCount( unsigned int value );
void SetAssemblyID( unsigned int value );
void InstanceCountPlus();
void InstanceCountMinus();
private:
static unsigned int fsInstanceCounter;
// Class instance counter
unsigned int fAssemblyID;
// Assembly object ID derived from instance counter at construction time
};
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4AssemblyVolume.icc,v 1.3 2001/07/11 09:59:16 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4AssemblyVolume.icc,v 1.4 2002/09/10 16:59:46 radoone Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// Class G4AssemblyVolume - inline implementation
@@ -53,3 +53,16 @@ void G4AssemblyVolume::ImprintsCountMinus()
{
fImprintsCounter--;
}
inline
unsigned int G4AssemblyVolume::GetAssemblyID() const
{
return fAssemblyID;
}
inline
void G4AssemblyVolume::SetAssemblyID( unsigned int value )
{
fAssemblyID = value;
}
@@ -22,7 +22,7 @@
//
//
// $Id: G4DrawVoxels.hh,v 1.11 2002/04/19 08:20:16 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4DrawVoxels
@@ -22,7 +22,7 @@
//
//
// $Id: G4GeometryManager.hh,v 1.6 2002/04/26 16:23:34 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4GeometryManager
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4LogicalSurface.hh,v 1.6 2001/07/11 09:59:16 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
////////////////////////////////////////////////////////////////////////
// Class G4LogicalSurface
@@ -22,7 +22,7 @@
//
//
// $Id: G4LogicalSurface.icc,v 1.5 2001/07/11 09:59:16 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
////////////////////////////////////////////////////////////////////////
// Surface Class Inline Methods
@@ -22,7 +22,7 @@
//
//
// $Id: G4LogicalVolume.hh,v 1.9 2002/05/17 17:59:47 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4LogicalVolume
@@ -22,7 +22,7 @@
//
//
// $Id: G4LogicalVolume.icc,v 1.8 2002/05/17 17:59:47 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4LogicalVolume Inline Implementation file
@@ -22,7 +22,7 @@
//
//
// $Id: G4LogicalVolumeStore.hh,v 1.7 2002/04/19 08:20:18 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4LogicalVolumeStore
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PVParameterised.hh,v 1.5 2001/07/11 09:59:17 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4PVParameterised.hh,v 1.6 2002/10/14 07:42:25 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4PVParameterised
@@ -68,6 +68,9 @@ class G4PVParameterised : public G4PVReplica
virtual ~G4PVParameterised();
// Virtual empty destructor.
virtual G4bool IsParameterised() const;
// Returns true to identify it is a parameterised physical volume.
virtual G4VPVParameterisation* GetParameterisation() const;
// Returns the current pointer to the parameterisation.
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PVPlacement.hh,v 1.6 2001/07/11 09:59:17 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4PVPlacement.hh,v 1.7 2002/10/14 07:42:25 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4PVPlacement
@@ -123,6 +123,7 @@ class G4PVPlacement : public G4VPhysicalVolume
virtual G4bool IsMany() const;
virtual G4bool IsReplicated() const;
virtual G4bool IsParameterised() const;
virtual G4VPVParameterisation* GetParameterisation() const;
virtual void GetReplicationData(EAxis& axis,
G4int& nReplicas,
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PVReplica.hh,v 1.5 2001/07/11 09:59:17 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4PVReplica.hh,v 1.6 2002/10/14 07:42:25 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4PVReplica
@@ -107,7 +107,9 @@ class G4PVReplica : public G4VPhysicalVolume
virtual G4int GetCopyNo() const;
virtual void SetCopyNo(G4int CopyNo);
virtual G4bool IsReplicated() const;
virtual G4bool IsParameterised() const;
virtual G4VPVParameterisation* GetParameterisation() const;
virtual G4int GetMultiplicity() const;
virtual void GetReplicationData(EAxis& axis,
G4int& nReplicas,
G4double& width,
@@ -136,7 +138,3 @@ class G4PVReplica : public G4VPhysicalVolume
};
#endif
@@ -22,7 +22,7 @@
//
//
// $Id: G4PhysicalVolumeStore.hh,v 1.8 2002/04/19 08:20:18 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4PhysicalVolume
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelHeader.hh,v 1.7 2002/05/15 10:06:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4SmartVoxelHeader
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelHeader.icc,v 1.4 2002/05/15 10:06:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// G4SmartVoxelHeader Inline implementation
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelNode.hh,v 1.7 2002/04/19 08:20:18 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4SmartVoxelNode
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelNode.icc,v 1.3 2001/07/11 09:59:18 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// G4SmartVoxelNode Inline implementation
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelProxy.hh,v 1.6 2002/04/19 08:20:18 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4SmartVoxelProxy
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelProxy.icc,v 1.2 2001/07/11 09:59:18 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// G4SmartVoxelProxy Inline implementation
@@ -21,7 +21,7 @@
// ********************************************************************
//
// $Id: G4SmartVoxelStat.hh,v 1.1 2001/10/22 16:08:05 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// --------------------------------------------------------------------
// GEANT 4 class header file
@@ -22,7 +22,7 @@
//
//
// $Id: G4SolidStore.hh,v 1.7 2002/04/19 08:20:18 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4SolidStore
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4TouchableHandle.hh,v 1.5 2001/11/06 17:06:47 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// Class G4TouchableHandle
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VPVParameterisation.hh,v 1.4 2001/07/11 09:59:18 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4VPVParamterisation
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4VPhysicalVolume.hh,v 1.6 2001/07/11 09:59:18 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4VPhysicalVolume.hh,v 1.7 2002/10/14 07:42:25 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4VPhysicalVolume
@@ -126,6 +126,10 @@ class G4VPhysicalVolume
inline void SetName(const G4String& pName);
// Set the volume's name.
virtual G4int GetMultiplicity() const;
// Returns number of object entities (1 for normal placements,
// n for replicas or parameterised).
// Functions required of subclasses
virtual G4bool IsMany() const = 0;
@@ -137,6 +141,9 @@ class G4VPhysicalVolume
virtual G4bool IsReplicated() const = 0;
// Return true if replicated (single object instance represents
// many real volumes), else false.
virtual G4bool IsParameterised() const = 0;
// Return true if parameterised (single object instance represents
// many real parameterised volumes), else false.
virtual G4VPVParameterisation* GetParameterisation() const = 0;
// Return replicas parameterisation object (able to compute dimensions
// and transformations of replicas), or NULL if not applicable.
@@ -22,7 +22,7 @@
//
//
// $Id: G4VPhysicalVolume.icc,v 1.5 2001/07/11 09:59:18 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4VPhysicalVolume Inline Implementation
+14 -7
View File
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4VSolid.hh,v 1.10 2002/04/16 08:21:07 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4VSolid.hh,v 1.11 2002/10/28 11:25:37 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4VSolid
@@ -92,14 +92,16 @@ class G4VSolid
virtual ~G4VSolid();
// Default destructor.
inline G4bool operator==( const G4VSolid& s) const;
inline G4bool operator==( const G4VSolid& s ) const;
// Return true only if addresses are the same.
G4String GetName() const;
// Returns the current shape's name.
void SetName(const G4String& name);
// Sets the current shape's name.
friend G4std::ostream& operator<< ( G4std::ostream& os, const G4VSolid& e );
// Streaming operator, using DumpInfo().
inline G4String GetName() const;
// Returns the current shape's name.
inline void SetName(const G4String& name);
// Sets the current shape's name.
virtual G4bool CalculateExtent(const EAxis pAxis,
const G4VoxelLimits& pVoxelLimit,
@@ -166,6 +168,11 @@ class G4VSolid
// Provide identification of the class of an object.
// (required for persistency and STEP interface)
virtual G4std::ostream& StreamInfo(G4std::ostream& os) const = 0;
// Dumps contents of the solid to a stream.
inline void DumpInfo() const;
// Dumps contents of the solid to the standard output.
// Visualization functions
virtual void DescribeYourselfTo (G4VGraphicsScene& scene) const = 0;
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4VSolid.icc,v 1.5 2001/07/11 09:59:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4VSolid.icc,v 1.6 2002/10/28 11:25:37 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// G4VSolid Inline implementation
@@ -33,3 +33,21 @@ G4bool G4VSolid::operator==( const G4VSolid& s) const
{
return (this==&s) ? true : false;
}
inline
void G4VSolid::DumpInfo () const
{
StreamInfo(G4cout);
}
inline
G4String G4VSolid::GetName() const
{
return fshapeName;
}
inline
void G4VSolid::SetName(const G4String& name)
{
fshapeName=name;
}
@@ -22,7 +22,7 @@
//
//
// $Id: G4VTouchable.hh,v 1.5 2001/07/11 09:59:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4VTouchable
@@ -22,7 +22,7 @@
//
//
// $Id: G4VTouchable.icc,v 1.5 2001/07/11 09:59:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4VTouchable Inline implementation
@@ -22,7 +22,7 @@
//
//
// $Id: G4VoxelLimits.hh,v 1.6 2002/04/19 08:20:18 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4VoxelLimits
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VoxelLimits.icc,v 1.2 2001/07/11 09:59:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// G4VoxelLimits Inline implementation
@@ -22,7 +22,7 @@
//
//
// $Id: meshdefs.hh,v 1.4 2001/07/11 09:59:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// Tube/Cone Meshing constants for extent calculations
@@ -22,7 +22,7 @@
//
//
// $Id: voxeldefs.hh,v 1.5 2001/07/11 09:59:19 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4AssemblyVolume.cc,v 1.10 2002/06/24 07:15:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4AssemblyVolume.cc,v 1.13 2002/09/10 17:07:15 radoone Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// Class G4AssemblyVolume - implementation
@@ -42,8 +42,10 @@ unsigned int G4AssemblyVolume::fsInstanceCounter = 0;
// Default constructor
//
G4AssemblyVolume::G4AssemblyVolume()
: fAssemblyID( 0 )
{
InstanceCountPlus();
SetAssemblyID( GetInstanceCount() );
SetImprintsCount( 0 );
}
@@ -192,7 +194,7 @@ void G4AssemblyVolume::MakeImprint( G4LogicalVolume* pMotherLV,
// ZZZ - the log. volume index inside the assembly volume
G4std::strstream pvName;
pvName << "av_"
<< GetInstanceCount()
<< GetAssemblyID()
<< "_impr_"
<< GetImprintsCount()
<< "_"
@@ -253,6 +255,8 @@ void G4AssemblyVolume::MakeImprint( G4LogicalVolume* pMotherLV,
// We start from the first available index
numberOfDaughters++;
ImprintsCountPlus();
for( unsigned int i = 0; i < fTriplets.size(); i++ )
{
// Generate the unique name for the next PV instance
@@ -266,7 +270,7 @@ void G4AssemblyVolume::MakeImprint( G4LogicalVolume* pMotherLV,
// ZZZ - the log. volume index inside the assembly volume
G4std::strstream pvName;
pvName << "av_"
<< GetInstanceCount()
<< GetAssemblyID()
<< "_impr_"
<< GetImprintsCount()
<< "_"
@@ -22,7 +22,7 @@
//
//
// $Id: G4DrawVoxels.cc,v 1.15 2002/04/19 08:20:22 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4DrawVoxels
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4GeometryManager.cc,v 1.11 2002/05/17 17:59:47 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4GeometryManager.cc,v 1.12 2002/11/19 17:15:20 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4GeometryManager
//
@@ -125,6 +125,7 @@ void G4GeometryManager::BuildOptimisations(G4bool allOpts, G4bool verbose)
for (n=0; n<nVolumes; n++)
{
if (verbose) timer.Start();
volume=(*Store)[n];
// For safety, check if there are any existing voxels and
// delete before replacement
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4LogicalVolume.cc,v 1.10 2002/05/17 17:59:47 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4LogicalVolume.cc,v 1.11 2002/11/08 22:45:25 japost Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4LogicalVolume Implementation
@@ -168,7 +168,7 @@ G4LogicalVolume::SetFieldManager(G4FieldManager* pNewFieldMgr,
{
G4LogicalVolume* DaughterLogVol;
DaughterLogVol = GetDaughter(NoDaughters)->GetLogicalVolume();
if ( forceAllDaughters || (DaughterLogVol->GetFieldManager() != 0) )
if ( forceAllDaughters || (DaughterLogVol->GetFieldManager() == 0) )
{
DaughterLogVol->SetFieldManager(pNewFieldMgr, forceAllDaughters);
}
@@ -22,7 +22,7 @@
//
//
// $Id: G4LogicalVolumeStore.cc,v 1.8 2002/04/26 16:24:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// G4LogicalVolumeStore
//
@@ -21,35 +21,50 @@
// ********************************************************************
//
//
// $Id: G4PVParameterised.cc,v 1.4 2001/07/11 09:59:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4PVParameterised.cc,v 1.7 2002/10/23 16:11:11 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4PVParameterised
//
// Implementation
//
// ********************************************************************
#include "G4PVParameterised.hh"
G4PVParameterised::G4PVParameterised(const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMother,
const EAxis pAxis,
const G4int nReplicas,
G4VPVParameterisation *pParam) :
G4PVReplica(pName,pLogical,pMother,pAxis,nReplicas,0,0),
fparam(pParam)
G4PVParameterised::G4PVParameterised( const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMother,
const EAxis pAxis,
const G4int nReplicas,
G4VPVParameterisation *pParam)
: G4PVReplica(pName, pLogical, pMother, pAxis, nReplicas, 0, 0),
fparam(pParam)
{
#ifdef G4VERBOSE
if ((pMother) && (pMother->IsParameterised()))
{
G4cout << "WARNING - A parameterised volume is being placed" << G4endl
<< " inside another parameterised volume !" << G4endl
<< " To make sure that no overlaps are generated," << G4endl
<< " you should verify the mother replicated shapes" << G4endl
<< " are of the same type and dimensions." << G4endl
<< " Mother physical volume: " << pMother->GetName() << G4endl
<< " Parameterised volume: " << pName << G4endl
<< " (To switch this warning off, compile with G4_NO_VERBOSE)" << G4endl;
}
#endif
}
G4PVParameterised::G4PVParameterised(const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4int nReplicas,
G4VPVParameterisation *pParam) :
G4PVReplica(pName,pLogical,pMotherLogical,pAxis,nReplicas,0,0),
fparam(pParam)
G4PVParameterised::G4PVParameterised( const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4int nReplicas,
G4VPVParameterisation *pParam)
: G4PVReplica(pName, pLogical, pMotherLogical, pAxis, nReplicas, 0, 0),
fparam(pParam)
{
}
@@ -59,19 +74,23 @@ G4PVParameterised::~G4PVParameterised()
G4VPVParameterisation* G4PVParameterised::GetParameterisation() const
{
return fparam;
return fparam;
}
void G4PVParameterised::GetReplicationData(EAxis& axis,
G4int& nReplicas,
G4double& width,
G4double& offset,
G4bool& consuming) const
G4bool G4PVParameterised::IsParameterised() const
{
axis=faxis;
nReplicas=fnReplicas;
width=fwidth;
offset=foffset;
consuming=false;
return true;
}
void G4PVParameterised::GetReplicationData( EAxis& axis,
G4int& nReplicas,
G4double& width,
G4double& offset,
G4bool& consuming) const
{
axis = faxis;
nReplicas = fnReplicas;
width = fwidth;
offset = foffset;
consuming = false;
}
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PVPlacement.cc,v 1.4 2001/07/11 09:59:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4PVPlacement.cc,v 1.5 2002/10/14 07:42:26 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4PVPlacement Implementation
@@ -124,6 +124,11 @@ G4bool G4PVPlacement::IsReplicated() const
return false;
}
G4bool G4PVPlacement::IsParameterised() const
{
return false;
}
G4VPVParameterisation* G4PVPlacement::GetParameterisation() const
{
return 0;
+122 -84
View File
@@ -21,135 +21,173 @@
// ********************************************************************
//
//
// $Id: G4PVReplica.cc,v 1.4 2002/05/15 10:07:20 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4PVReplica.cc,v 1.9 2002/10/23 16:26:49 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4PVReplica Implementation
//
// ********************************************************************
#include "G4PVReplica.hh"
#include "G4LogicalVolume.hh"
G4PVReplica::G4PVReplica(const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMother,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double offset) : G4VPhysicalVolume(0,G4ThreeVector(),pName,pLogical,pMother), fcopyNo(-1)
G4PVReplica::G4PVReplica( const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMother,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double offset )
: G4VPhysicalVolume(0, G4ThreeVector(), pName, pLogical, pMother),
fcopyNo(-1)
{
if ((!pMother) || (!pMother->GetLogicalVolume()))
{
G4cout << "ERROR - NULL pointer specified as mother volume." << G4endl
<< " The world volume cannot be sliced or parameterised !"
<< G4endl;
G4Exception("G4PVReplica::G4PVReplica() - Not a valid geometry setup !");
}
if (pMother->GetLogicalVolume()->GetNoDaughters() != 1)
{
G4cout << "ERROR - A replica or parameterised volume must be" << G4endl
<< " the only daughter of a given mother volume !" << G4endl
<< " Mother physical volume: " << pMother->GetName() << G4endl
<< " Replicated volume: " << pName << G4endl;
G4Exception("G4PVReplica::G4PVReplica() - Not a valid geometry setup !");
}
CheckAndSetParameters (pAxis, nReplicas, width, offset);
}
G4PVReplica::G4PVReplica(const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double offset) : G4VPhysicalVolume(0,G4ThreeVector(),pName,pLogical,0), fcopyNo(-1)
G4PVReplica::G4PVReplica( const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double offset )
: G4VPhysicalVolume(0,G4ThreeVector(),pName,pLogical,0),
fcopyNo(-1)
{
if (pMotherLogical) pMotherLogical->AddDaughter(this);
if (!pMotherLogical)
{
G4cout << "ERROR - NULL pointer specified as mother volume for "
<< pName << "." << G4endl;
G4Exception("G4PVReplica::G4PVReplica() - Not a valid geometry setup !");
}
pMotherLogical->AddDaughter(this);
if (pMotherLogical->GetNoDaughters() != 1)
{
G4cout << "ERROR - A replica or parameterised volume must be" << G4endl
<< " the only daughter of a given mother volume !" << G4endl
<< " Mother logical volume: " << pMotherLogical->GetName() << G4endl
<< " Replicated volume: " << pName << G4endl;
G4Exception("G4PVReplica::G4PVReplica() - Not a valid geometry setup");
}
CheckAndSetParameters (pAxis, nReplicas, width, offset);
}
void G4PVReplica::CheckAndSetParameters (const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double offset) {
if (nReplicas<1)
{
G4Exception("G4PVReplica::G4PVReplica illegal no of replicas");
}
fnReplicas=nReplicas;
if (width<0)
{
G4Exception("G4PVReplica::G4PVReplica Width must be positive");
}
fwidth=width;
foffset=offset;
faxis=pAxis;
// Create rotation matrix for phi axis case & check axis is valid
G4RotationMatrix *pRMat;
switch (faxis)
{
case kPhi:
pRMat=new G4RotationMatrix();
if (!pRMat)
{
G4Exception("G4PVReplica::G4PVReplica rotation matrix alloc failed");
}
SetRotation(pRMat);
break;
case kRho:
case kXAxis:
case kYAxis:
case kZAxis:
case kUndefined:
break;
default:
G4Exception("G4PVReplica::G4PVReplica Unknown axis");
break;
}
void G4PVReplica::CheckAndSetParameters( const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double offset)
{
if (nReplicas<1)
{
G4Exception("G4PVReplica::CheckAndSetParameters() - Illegal number of replicas");
}
fnReplicas=nReplicas;
if (width<0)
{
G4Exception("G4PVReplica::CheckAndSetParameters() - Width must be positive");
}
fwidth = width;
foffset = offset;
faxis = pAxis;
// Create rotation matrix for phi axis case & check axis is valid
//
G4RotationMatrix* pRMat=0;
switch (faxis)
{
case kPhi:
pRMat=new G4RotationMatrix();
if (!pRMat)
{
G4Exception("G4PVReplica::CheckAndSetParameters() - Rotation matrix alloc failed");
}
SetRotation(pRMat);
break;
case kRho:
case kXAxis:
case kYAxis:
case kZAxis:
case kUndefined:
break;
default:
G4Exception("G4PVReplica::CheckAndSetParameters() - Unknown axis");
break;
}
}
G4PVReplica::~G4PVReplica()
{
if (faxis==kPhi)
{
delete GetRotation();
}
if ( faxis==kPhi )
{
delete GetRotation();
}
}
G4bool G4PVReplica::IsMany() const
{
return false;
return false;
}
G4int G4PVReplica::GetCopyNo() const
{
// return 0;
return fcopyNo;
return fcopyNo;
}
void G4PVReplica::SetCopyNo(G4int newCopyNo)
{
fcopyNo= newCopyNo;
fcopyNo = newCopyNo;
}
G4bool G4PVReplica::IsReplicated() const
{
return true;
return true;
}
G4bool G4PVReplica::IsParameterised() const
{
return false;
}
G4VPVParameterisation* G4PVReplica::GetParameterisation() const
{
return 0;
return 0;
}
void G4PVReplica::GetReplicationData(EAxis& axis,
G4int& nReplicas,
G4double& width,
G4double& offset,
G4bool& consuming) const
G4int G4PVReplica::GetMultiplicity() const
{
axis=faxis;
nReplicas=fnReplicas;
width=fwidth;
offset=foffset;
consuming=true;
return fnReplicas;
}
void G4PVReplica::GetReplicationData( EAxis& axis,
G4int& nReplicas,
G4double& width,
G4double& offset,
G4bool& consuming ) const
{
axis = faxis;
nReplicas = fnReplicas;
width = fwidth;
offset = foffset;
consuming = true;
}
void G4PVReplica::Setup(G4VPhysicalVolume *pMother)
{
SetMother(pMother);
SetMother(pMother);
}
@@ -22,7 +22,7 @@
//
//
// $Id: G4PhysicalVolumeStore.cc,v 1.9 2002/04/26 16:24:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// G4PhysicalVolumeStore
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelHeader.cc,v 1.20 2002/05/17 17:59:47 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4SmartVoxelHeader
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelNode.cc,v 1.4 2002/04/19 08:20:22 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// Class G4SmartVoxelNode
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelProxy.cc,v 1.1 2002/04/19 08:20:22 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// Class G4SmartVoxelProxy
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SmartVoxelStat.cc,v 1.1 2001/10/22 16:08:05 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// --------------------------------------------------------------------
// GEANT 4 class source file
@@ -22,7 +22,7 @@
//
//
// $Id: G4SolidStore.cc,v 1.9 2002/04/26 16:24:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// G4SolidStore
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VPVParameterisation.cc,v 1.3 2001/07/11 09:59:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// Default implementations for Parameterisations that do not
// parameterise solid and/or material
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4VPhysicalVolume.cc,v 1.4 2001/07/11 09:59:21 gunter Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4VPhysicalVolume.cc,v 1.5 2002/10/14 07:42:26 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class G4VPhysicalVolume Implementation
@@ -57,6 +57,11 @@ G4VPhysicalVolume::~G4VPhysicalVolume()
G4PhysicalVolumeStore::DeRegister(this);
}
G4int G4VPhysicalVolume::GetMultiplicity() const
{
return 1;
}
G4RotationMatrix* G4VPhysicalVolume::GetObjectRotation() const
{
static G4RotationMatrix aRotM;
+8 -16
View File
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4VSolid.cc,v 1.13 2002/05/11 14:16:10 grichine Exp $
// GEANT4 tag $Name: geant4-04-01 $
// $Id: G4VSolid.cc,v 1.14 2002/10/28 11:25:37 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4VSolid
//
@@ -67,21 +67,13 @@ G4VSolid::~G4VSolid()
G4SolidStore::GetInstance()->DeRegister(this);
}
////////////////////////////////////////////////////////////////////////
//
// Returns name by value
G4String G4VSolid::GetName() const
//////////////////////////////////////////////////////////////////////////
//
// Streaming operator dumping solid contents
G4std::ostream& operator<< ( G4std::ostream& os, const G4VSolid& e )
{
return fshapeName;
}
/////////////////////////////////////////////////////////////////////////
void G4VSolid::SetName(const G4String& name)
{
fshapeName=name;
}
return e.StreamInfo(os);
}
//////////////////////////////////////////////////////////////////////////
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VoxelLimits.cc,v 1.7 2002/04/19 08:20:23 gcosmo Exp $
// GEANT4 tag $Name: geant4-04-01 $
// GEANT4 tag $Name: geant4-05-00 $
//
// class G4VoxelLimits
//