Import Geant4 9.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 16:25:56 +02:00
parent 74cad5e589
commit 89a9605df1
4440 changed files with 379508 additions and 189225 deletions
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationBox.hh,v 1.6 2006/06/29 18:18:11 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4ParameterisationBox.hh,v 1.7 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationBoxX,
// G4ParameterisationBoxY,
@@ -50,6 +50,7 @@ class G4VSolid;
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Cons;
class G4Trd;
class G4Sphere;
@@ -79,13 +80,12 @@ class G4ParameterisationBoxX : public G4VParameterisationBox
G4ParameterisationBoxX( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* msolid, DivisionType divType );
virtual ~G4ParameterisationBoxX();
~G4ParameterisationBoxX();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions(G4Box& box, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -122,12 +122,12 @@ class G4ParameterisationBoxY : public G4VParameterisationBox
G4ParameterisationBoxY( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* msolid, DivisionType divType );
virtual ~G4ParameterisationBoxY();
~G4ParameterisationBoxY();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions(G4Box& box, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -165,12 +165,12 @@ class G4ParameterisationBoxZ : public G4VParameterisationBox
G4ParameterisationBoxZ( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* msolid, DivisionType divType );
virtual ~G4ParameterisationBoxZ();
~G4ParameterisationBoxZ();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions(G4Box& box, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationCons.hh,v 1.6 2006/06/29 18:18:13 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4ParameterisationCons.hh,v 1.7 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationConsRho,
// G4ParameterisationConsPhi,
@@ -50,6 +50,7 @@ class G4VSolid;
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Trd;
class G4Trap;
class G4Box;
@@ -80,12 +81,12 @@ class G4ParameterisationConsRho : public G4VParameterisationCons
G4ParameterisationConsRho( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationConsRho();
~G4ParameterisationConsRho();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Cons& tubs, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -122,12 +123,12 @@ class G4ParameterisationConsPhi : public G4VParameterisationCons
G4ParameterisationConsPhi( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationConsPhi();
~G4ParameterisationConsPhi();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Cons& tubs, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
@@ -164,12 +165,12 @@ class G4ParameterisationConsZ : public G4VParameterisationCons
G4ParameterisationConsZ( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationConsZ();
~G4ParameterisationConsZ();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Cons& tubs, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationPara.hh,v 1.7 2006/06/29 18:18:15 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4ParameterisationPara.hh,v 1.8 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationParaX,
// G4ParameterisationParaY,
@@ -48,7 +48,9 @@
class G4VSolid;
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Cons;
class G4Cons;
class G4Sphere;
@@ -78,12 +80,12 @@ class G4ParameterisationParaX : public G4VParameterisationPara
G4ParameterisationParaX( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* msolid, DivisionType divType );
virtual ~G4ParameterisationParaX();
~G4ParameterisationParaX();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions(G4Para& para, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
@@ -122,12 +124,12 @@ class G4ParameterisationParaY : public G4VParameterisationPara
G4ParameterisationParaY( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* msolid, DivisionType divType );
virtual ~G4ParameterisationParaY();
~G4ParameterisationParaY();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions(G4Para& para, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
@@ -166,12 +168,12 @@ class G4ParameterisationParaZ : public G4VParameterisationPara
G4ParameterisationParaZ( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* msolid, DivisionType divType );
virtual ~G4ParameterisationParaZ();
~G4ParameterisationParaZ();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions(G4Para& para, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationPolycone.hh,v 1.8 2009/05/14 14:19:32 ivana Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4ParameterisationPolycone.hh,v 1.9 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationPolyconeRho,
// G4ParameterisationPolyconePhi,
@@ -50,6 +50,7 @@
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Trd;
class G4Trap;
class G4Cons;
@@ -84,14 +85,14 @@ class G4ParameterisationPolyconeRho : public G4VParameterisationPolycone
G4double offset, G4double step,
G4VSolid* motherSolid,
DivisionType divType );
virtual ~G4ParameterisationPolyconeRho();
~G4ParameterisationPolyconeRho();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Polycone& pcone, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
@@ -133,12 +134,12 @@ class G4ParameterisationPolyconePhi : public G4VParameterisationPolycone
G4double offset, G4double step,
G4VSolid* motherSolid,
DivisionType divType );
virtual ~G4ParameterisationPolyconePhi();
~G4ParameterisationPolyconePhi();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Polycone& pcone, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
@@ -180,25 +181,24 @@ class G4ParameterisationPolyconeZ : public G4VParameterisationPolycone
G4double offset, G4double step,
G4VSolid* motherSolid,
DivisionType divType );
virtual ~G4ParameterisationPolyconeZ();
~G4ParameterisationPolyconeZ();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Polycone& pcone, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
private:
G4double GetR(G4double z, G4double z1, G4double r1, G4double z2, G4double r2) const;
private:
G4double GetR(G4double z, G4double z1, G4double r1,
G4double z2, G4double r2) const;
G4double GetRmin(G4double z, G4int nsegment) const;
G4double GetRmax(G4double z, G4int nsegment) const;
G4int fNSegment;
G4PolyconeHistorical* fOrigParamMother;
// Dummy declarations to get rid of warnings ...
void ComputeDimensions (G4Trd&,const G4int,
@@ -223,6 +223,10 @@ class G4ParameterisationPolyconeZ : public G4VParameterisationPolycone
const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Polyhedra&,const G4int,
const G4VPhysicalVolume*) const {}
private:
G4int fNSegment;
G4PolyconeHistorical* fOrigParamMother;
};
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationPolyhedra.hh,v 1.9 2009/05/14 14:19:32 ivana Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4ParameterisationPolyhedra.hh,v 1.10 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationPolyhedraRho,
// G4ParameterisationPolyhedraPhi,
@@ -50,6 +50,7 @@
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Trd;
class G4Trap;
class G4Cons;
@@ -90,14 +91,14 @@ class G4ParameterisationPolyhedraRho : public G4VParameterisationPolyhedra
G4double offset, G4double step,
G4VSolid* motherSolid,
DivisionType divType );
virtual ~G4ParameterisationPolyhedraRho();
~G4ParameterisationPolyhedraRho();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Polyhedra& phedra, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
@@ -139,14 +140,14 @@ class G4ParameterisationPolyhedraPhi : public G4VParameterisationPolyhedra
G4double offset, G4double step,
G4VSolid* motherSolid,
DivisionType divType );
virtual ~G4ParameterisationPolyhedraPhi();
~G4ParameterisationPolyhedraPhi();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Polyhedra& phedra, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
@@ -188,25 +189,24 @@ class G4ParameterisationPolyhedraZ : public G4VParameterisationPolyhedra
G4double offset, G4double step,
G4VSolid* motherSolid,
DivisionType divType );
virtual ~G4ParameterisationPolyhedraZ();
~G4ParameterisationPolyhedraZ();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeTransformation( const G4int copyNo,
G4VPhysicalVolume* physVol ) const;
void ComputeDimensions( G4Polyhedra& phedra, const G4int copyNo,
const G4VPhysicalVolume* physVol ) const;
private:
G4double GetR(G4double z, G4double z1, G4double r1, G4double z2, G4double r2) const;
private:
G4double GetR(G4double z, G4double z1, G4double r1,
G4double z2, G4double r2) const;
G4double GetRmin(G4double z, G4int nsegment) const;
G4double GetRmax(G4double z, G4int nsegment) const;
G4int fNSegment;
G4PolyhedraHistorical* fOrigParamMother;
// Dummy declarations to get rid of warnings ...
void ComputeDimensions (G4Trd&,const G4int,
const G4VPhysicalVolume*) const {}
@@ -230,6 +230,10 @@ class G4ParameterisationPolyhedraZ : public G4VParameterisationPolyhedra
const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Polycone&,const G4int,
const G4VPhysicalVolume*) const {}
private:
G4int fNSegment;
G4PolyhedraHistorical* fOrigParamMother;
};
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationTrd.hh,v 1.8 2008/12/03 16:48:48 arce Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4ParameterisationTrd.hh,v 1.9 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationTrdX
// G4ParameterisationTrdY
@@ -44,12 +44,15 @@
#ifndef G4ParameterisationTrd_H
#define G4ParameterisationTrd_H 1
#include <vector>
#include "G4VDivisionParameterisation.hh"
#include "G4VSolid.hh"
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Cons;
class G4Box;
class G4Sphere;
@@ -60,7 +63,6 @@ class G4Hype;
class G4Tubs;
class G4Polycone;
class G4Polyhedra;
#include <vector>
class G4VParameterisationTrd : public G4VDivisionParameterisation
{
@@ -72,9 +74,9 @@ class G4VParameterisationTrd : public G4VDivisionParameterisation
virtual ~G4VParameterisationTrd();
protected:
protected:
G4bool bDivInTrap;
G4bool bDivInTrap;
};
class G4ParameterisationTrdX : public G4VParameterisationTrd
@@ -84,22 +86,22 @@ class G4ParameterisationTrdX : public G4VParameterisationTrd
G4ParameterisationTrdX( EAxis axis, G4int nCopies,
G4double width, G4double offset,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationTrdX();
~G4ParameterisationTrdX();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
virtual void ComputeDimensions(G4Trd& trd, const G4int copyNo,
void ComputeDimensions(G4Trd& trd, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
virtual void ComputeDimensions(G4Trap& trd, const G4int copyNo,
void ComputeDimensions(G4Trap& trd, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
virtual G4VSolid* ComputeSolid(const G4int, G4VPhysicalVolume *);
G4VSolid* ComputeSolid(const G4int, G4VPhysicalVolume *);
private: // Dummy declarations to get rid of warnings ...
@@ -125,8 +127,7 @@ class G4ParameterisationTrdX : public G4VParameterisationTrd
void ComputeDimensions (G4Polyhedra&,const G4int,
const G4VPhysicalVolume*) const {}
void ComputeTrapParams();
G4Trap* theTrap;
void ComputeTrapParams();
};
@@ -137,14 +138,14 @@ class G4ParameterisationTrdY : public G4VParameterisationTrd
G4ParameterisationTrdY( EAxis axis, G4int nCopies,
G4double width, G4double offset,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationTrdY();
~G4ParameterisationTrdY();
virtual void CheckParametersValidity();
void CheckParametersValidity();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeDimensions(G4Trd& trd, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
@@ -183,12 +184,12 @@ class G4ParameterisationTrdZ : public G4VParameterisationTrd
G4ParameterisationTrdZ( EAxis axis, G4int nCopies,
G4double width, G4double offset,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationTrdZ();
~G4ParameterisationTrdZ();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeDimensions(G4Trd& trd, const G4int copyNo,
const G4VPhysicalVolume* pv) const;
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ParameterisationTubs.hh,v 1.6 2006/06/29 18:18:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4ParameterisationTubs.hh,v 1.7 2010/07/02 10:46:27 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// classes G4ParameterisationTubsRho
// G4ParameterisationTubsPhi
@@ -49,6 +49,7 @@
class G4VPhysicalVolume;
// Dummy declarations to get rid of warnings ...
//
class G4Trd;
class G4Trap;
class G4Cons;
@@ -78,12 +79,12 @@ class G4ParameterisationTubsRho : public G4VParameterisationTubs
G4ParameterisationTubsRho( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationTubsRho();
~G4ParameterisationTubsRho();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeDimensions(G4Tubs& tubs, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -121,12 +122,12 @@ class G4ParameterisationTubsPhi : public G4VParameterisationTubs
G4ParameterisationTubsPhi( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationTubsPhi();
~G4ParameterisationTubsPhi();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeDimensions(G4Tubs& tubs, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -164,12 +165,12 @@ class G4ParameterisationTubsZ : public G4VParameterisationTubs
G4ParameterisationTubsZ( EAxis axis, G4int nCopies,
G4double offset, G4double step,
G4VSolid* motherSolid, DivisionType divType );
virtual ~G4ParameterisationTubsZ();
~G4ParameterisationTubsZ();
virtual G4double GetMaxParameter() const;
G4double GetMaxParameter() const;
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
void ComputeDimensions(G4Tubs& tubs, const G4int copyNo,
const G4VPhysicalVolume* physVol) const;
@@ -0,0 +1,195 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4ReplicatedSlice.hh,v 1.2 2010/11/10 09:15:40 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// class G4ReplicatedSlice
//
// Class description:
//
// G4ReplicatedSlice represents many touchable detector elements differing
// only in their positioning. The elements' positions are calculated by means
// of a simple linear formula.
//
// Division may occur along:
//
// o Cartesian axes (kXAxis,kYAxis,kZAxis)
//
// The divisions, of specified width have coordinates of
// form (-width*(nReplicas-1)*0.5+n*width,0,0) where n=0.. nReplicas-1
// for the case of kXAxis, and are unrotated.
//
// o Radial axis (cylindrical polar) (kRho)
//
// The divisions are cons/tubs sections, centred on the origin
// and are unrotated.
// They have radii of width*n+offset to width*(n+1)+offset
// where n=0..nReplicas-1
//
// o Phi axis (cylindrical polar) (kPhi)
// The divisions are `phi sections' or wedges, and of cons/tubs form
// They have phi of offset+n*width to offset+(n+1)*width where
// n=0..nReplicas-1
// History:
// -------
// Apr/20/2010 - Initial version extended from G4PVDivision
// ----------------------------------------------------------------------
#ifndef G4ReplicatedSlice_HH
#define G4ReplicatedSlice_HH 1
#include "geomdefs.hh"
#include "G4VPhysicalVolume.hh"
#include "G4VDivisionParameterisation.hh"
class G4LogicalVolume;
class G4VSolid;
class G4ReplicatedSlice : public G4VPhysicalVolume
{
public: // with description
G4ReplicatedSlice(const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double half_gap,
const G4double offset );
// Constructor with number of divisions and width
G4ReplicatedSlice(const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4int nReplicas,
const G4double half_gap,
const G4double offset );
// Constructor with number of divisions
G4ReplicatedSlice(const G4String& pName,
G4LogicalVolume* pLogical,
G4LogicalVolume* pMotherLogical,
const EAxis pAxis,
const G4double width,
const G4double half_gap,
const G4double offset );
// Constructor with width
public: // without description
G4ReplicatedSlice(const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMotherPhysical,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double half_gap,
const G4double offset);
// Constructor in mother physical volume
G4ReplicatedSlice(const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMotherPhysical,
const EAxis pAxis,
const G4int nReplicas,
const G4double half_gap,
const G4double offset );
// Constructor with number of divisions
G4ReplicatedSlice(const G4String& pName,
G4LogicalVolume* pLogical,
G4VPhysicalVolume* pMotherPhysical,
const EAxis pAxis,
const G4double width,
const G4double half_gap,
const G4double offset );
// Constructor with width
public: // with description
virtual ~G4ReplicatedSlice();
virtual G4bool IsMany() const;
virtual G4int GetCopyNo() const;
virtual void SetCopyNo(G4int CopyNo);
virtual G4bool IsReplicated() const;
virtual G4VPVParameterisation* GetParameterisation() const;
virtual void GetReplicationData( EAxis& axis,
G4int& nReplicas,
G4double& width,
G4double& offset,
G4bool& consuming ) const;
EAxis GetDivisionAxis() const;
G4bool IsParameterised() const;
public: // without description
G4bool IsRegularStructure() const;
G4int GetRegularStructureId() const;
// Methods to identify volume that can apply 'regular' navigation.
// Currently divisions do not qualify for this.
private:
void CheckAndSetParameters( const EAxis pAxis,
const G4int nDivs,
const G4double width,
const G4double half_gap,
const G4double offset,
DivisionType divType,
G4LogicalVolume* pMotherLogical,
const G4LogicalVolume* pLogical );
void SetParameterisation( G4LogicalVolume* motherLogical,
const EAxis pAxis,
const G4int nReplicas,
const G4double width,
const G4double half_gap,
const G4double offset,
DivisionType divType );
void ErrorInAxis( EAxis axis, G4VSolid* solid );
private:
G4ReplicatedSlice(const G4ReplicatedSlice&);
const G4ReplicatedSlice& operator=(const G4ReplicatedSlice&);
// Private copy constructor and assignment operator.
protected:
EAxis faxis; // axis of optimisation
EAxis fdivAxis; // axis of division
G4int fnReplicas;
G4double fwidth,foffset;
G4int fcopyNo;
G4VDivisionParameterisation *fparam;
};
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VDivisionParameterisation.hh,v 1.11 2007/05/11 13:26:26 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VDivisionParameterisation.hh,v 1.13 2010/11/10 09:15:48 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// class G4VDivisionParameterisation
//
@@ -38,6 +38,7 @@
// -------
// 09.05.01 - P.Arce, Initial version
// 08.04.04 - I.Hrivnacova, Implemented reflection
// 21.04.10 - M.Asai, Added gaps
//---------------------------------------------------------------------
#ifndef G4VDivisionParameterisation_H
#define G4VDivisionParameterisation_H 1
@@ -73,7 +74,9 @@ class G4VDivisionParameterisation : public G4VPVParameterisation
inline G4VSolid* GetMotherSolid() const;
inline void SetType(const G4String& type);
inline G4int VolumeFirstCopyNo() const;
inline void SetHalfGap(G4double hg);
inline G4double GetHalfGap() const;
protected: // with description
void ChangeRotMatrix( G4VPhysicalVolume* physVol,
@@ -106,6 +109,8 @@ class G4VDivisionParameterisation : public G4VPVParameterisation
G4int theVoluFirstCopyNo;
G4double kCarTolerance;
G4double fhgap;
};
#include "G4VDivisionParameterisation.icc"
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VDivisionParameterisation.icc,v 1.4 2006/06/29 18:18:29 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VDivisionParameterisation.icc,v 1.5 2010/11/10 09:15:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
// class G4VDivisionParameterisation Inline Implementation file
//
@@ -78,3 +78,15 @@ G4int G4VDivisionParameterisation::VolumeFirstCopyNo() const
{
return theVoluFirstCopyNo;
}
inline
void G4VDivisionParameterisation::SetHalfGap(G4double hg)
{
fhgap = hg;
}
inline
G4double G4VDivisionParameterisation::GetHalfGap() const
{
return fhgap;
}