Geant4  10.02.p03
G4PVDivision Class Reference

#include <G4PVDivision.hh>

Inheritance diagram for G4PVDivision:
Collaboration diagram for G4PVDivision:

Public Member Functions

 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMother, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset)
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4int nReplicas, const G4double offset)
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4double width, const G4double offset)
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset)
 
virtual ~G4PVDivision ()
 
virtual G4bool IsMany () const
 
virtual G4int GetCopyNo () const
 
virtual void SetCopyNo (G4int CopyNo)
 
virtual G4bool IsReplicated () const
 
virtual G4VPVParameterisationGetParameterisation () const
 
virtual void GetReplicationData (EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const
 
EAxis GetDivisionAxis () const
 
G4bool IsParameterised () const
 
G4bool IsRegularStructure () const
 
G4int GetRegularStructureId () const
 
- Public Member Functions inherited from G4VPhysicalVolume
 G4VPhysicalVolume (G4RotationMatrix *pRot, const G4ThreeVector &tlate, const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother)
 
virtual ~G4VPhysicalVolume ()
 
G4bool operator== (const G4VPhysicalVolume &p) const
 
G4RotationMatrixGetObjectRotation () const
 
G4RotationMatrix GetObjectRotationValue () const
 
G4ThreeVector GetObjectTranslation () const
 
const G4RotationMatrixGetFrameRotation () const
 
G4ThreeVector GetFrameTranslation () const
 
const G4ThreeVectorGetTranslation () const
 
const G4RotationMatrixGetRotation () const
 
void SetTranslation (const G4ThreeVector &v)
 
G4RotationMatrixGetRotation ()
 
void SetRotation (G4RotationMatrix *)
 
G4LogicalVolumeGetLogicalVolume () const
 
void SetLogicalVolume (G4LogicalVolume *pLogical)
 
G4LogicalVolumeGetMotherLogical () const
 
void SetMotherLogical (G4LogicalVolume *pMother)
 
const G4StringGetName () const
 
void SetName (const G4String &pName)
 
EVolume VolumeType () const
 
virtual G4int GetMultiplicity () const
 
virtual G4bool CheckOverlaps (G4int res=1000, G4double tol=0., G4bool verbose=true, G4int errMax=1)
 
 G4VPhysicalVolume (__void__ &)
 
G4int GetInstanceID () const
 

Protected Attributes

EAxis faxis
 
EAxis fdivAxis
 
G4int fnReplicas
 
G4double fwidth
 
G4double foffset
 
G4int fcopyNo
 
G4VDivisionParameterisationfparam
 
- Protected Attributes inherited from G4VPhysicalVolume
G4int instanceID
 

Private Member Functions

void CheckAndSetParameters (const EAxis pAxis, const G4int nDivs, const G4double width, const G4double offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
 
 G4PVDivision (const G4PVDivision &)
 
const G4PVDivisionoperator= (const G4PVDivision &)
 
void SetParameterisation (G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset, DivisionType divType)
 
void ErrorInAxis (EAxis axis, G4VSolid *solid)
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicalVolume
static const G4PVManagerGetSubInstanceManager ()
 
- Protected Member Functions inherited from G4VPhysicalVolume
void InitialiseWorker (G4VPhysicalVolume *pMasterObject, G4RotationMatrix *pRot, const G4ThreeVector &tlate)
 
void TerminateWorker (G4VPhysicalVolume *pMasterObject)
 
- Static Protected Attributes inherited from G4VPhysicalVolume
static G4GEOM_DLL G4PVManager subInstanceManager
 

Detailed Description

Definition at line 79 of file G4PVDivision.hh.

Constructor & Destructor Documentation

◆ G4PVDivision() [1/5]

G4PVDivision::G4PVDivision ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMother,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  offset 
)

Definition at line 47 of file G4PVDivision.cc.

54  : G4VPhysicalVolume(0,G4ThreeVector(),pName,pLogical,0),
55  fcopyNo(-1)
56 {
57  if (!pMotherLogical)
58  {
59  std::ostringstream message;
60  message << "Invalid setup." << G4endl
61  << "NULL pointer specified as mother for volume: " << pName;
62  G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
63  FatalException, message);
64  return;
65  }
66  if (pLogical == pMotherLogical)
67  {
68  std::ostringstream message;
69  message << "Invalid setup." << G4endl
70  << "Cannot place a volume inside itself! Volume: " << pName;
71  G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
72  FatalException, message);
73  }
74  pMotherLogical->AddDaughter(this);
75  SetMotherLogical(pMotherLogical);
76  SetParameterisation(pMotherLogical, pAxis, nDivs,
77  width, offset, DivNDIVandWIDTH);
78  CheckAndSetParameters (pAxis, nDivs, width, offset,
79  DivNDIVandWIDTH, pMotherLogical);
80 }
G4VPhysicalVolume(G4RotationMatrix *pRot, const G4ThreeVector &tlate, const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother)
CLHEP::Hep3Vector G4ThreeVector
#define width
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void SetParameterisation(G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset, DivisionType divType)
#define G4endl
Definition: G4ios.hh:61
void SetMotherLogical(G4LogicalVolume *pMother)
void CheckAndSetParameters(const EAxis pAxis, const G4int nDivs, const G4double width, const G4double offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
Here is the call graph for this function:

◆ G4PVDivision() [2/5]

G4PVDivision::G4PVDivision ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMotherLogical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  offset 
)

Definition at line 83 of file G4PVDivision.cc.

89  : G4VPhysicalVolume(0,G4ThreeVector(),pName,pLogical,0),
90  fcopyNo(-1)
91 {
92  if (!pMotherLogical)
93  {
94  std::ostringstream message;
95  message << "Invalid setup." << G4endl
96  << "NULL pointer specified as mother! Volume: " << pName;
97  G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
98  FatalException, message);
99  return;
100  }
101  if (pLogical == pMotherLogical)
102  {
103  std::ostringstream message;
104  message << "Invalid setup." << G4endl
105  << "Cannot place a volume inside itself! Volume: " << pName;
106  G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
107  FatalException, message);
108  }
109  pMotherLogical->AddDaughter(this);
110  SetMotherLogical(pMotherLogical);
111  SetParameterisation(pMotherLogical, pAxis, nDivs, 0., offset, DivNDIV);
112  CheckAndSetParameters (pAxis, nDivs, 0., offset, DivNDIV, pMotherLogical);
113 }
G4VPhysicalVolume(G4RotationMatrix *pRot, const G4ThreeVector &tlate, const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother)
CLHEP::Hep3Vector G4ThreeVector
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void SetParameterisation(G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset, DivisionType divType)
#define G4endl
Definition: G4ios.hh:61
void SetMotherLogical(G4LogicalVolume *pMother)
void CheckAndSetParameters(const EAxis pAxis, const G4int nDivs, const G4double width, const G4double offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
void AddDaughter(G4VPhysicalVolume *p)
Here is the call graph for this function:

◆ G4PVDivision() [3/5]

G4PVDivision::G4PVDivision ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMotherLogical,
const EAxis  pAxis,
const G4double  width,
const G4double  offset 
)

Definition at line 116 of file G4PVDivision.cc.

122  : G4VPhysicalVolume(0,G4ThreeVector(),pName,pLogical,0),
123  fcopyNo(-1)
124 {
125  if (!pMotherLogical)
126  {
127  std::ostringstream message;
128  message << "Invalid setup." << G4endl
129  << "NULL pointer specified as mother! Volume: " + pName;
130  G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
131  FatalException, message);
132  return;
133  }
134  if (pLogical == pMotherLogical)
135  {
136  std::ostringstream message;
137  message << "Invalid setup." << G4endl
138  << "Cannot place a volume inside itself! Volume: "+ pName;
139  G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
140  FatalException, message);
141  }
142  pMotherLogical->AddDaughter(this);
143  SetMotherLogical(pMotherLogical);
144  SetParameterisation(pMotherLogical, pAxis, 0, width, offset, DivWIDTH);
145  CheckAndSetParameters (pAxis, 0, width, offset, DivWIDTH, pMotherLogical);
146 }
G4VPhysicalVolume(G4RotationMatrix *pRot, const G4ThreeVector &tlate, const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother)
CLHEP::Hep3Vector G4ThreeVector
#define width
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void SetParameterisation(G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset, DivisionType divType)
#define G4endl
Definition: G4ios.hh:61
void SetMotherLogical(G4LogicalVolume *pMother)
void CheckAndSetParameters(const EAxis pAxis, const G4int nDivs, const G4double width, const G4double offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
void AddDaughter(G4VPhysicalVolume *p)
Here is the call graph for this function:

◆ G4PVDivision() [4/5]

G4PVDivision::G4PVDivision ( const G4String pName,
G4LogicalVolume pLogical,
G4VPhysicalVolume pMother,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  offset 
)

◆ ~G4PVDivision()

G4PVDivision::~G4PVDivision ( )
virtual

Definition at line 241 of file G4PVDivision.cc.

242 {
243 }

◆ G4PVDivision() [5/5]

G4PVDivision::G4PVDivision ( const G4PVDivision )
private

Member Function Documentation

◆ CheckAndSetParameters()

void G4PVDivision::CheckAndSetParameters ( const EAxis  pAxis,
const G4int  nDivs,
const G4double  width,
const G4double  offset,
DivisionType  divType,
const G4LogicalVolume pMotherLogical 
)
private

!!!! axis has to be x/y/z in G4VoxelLimits::GetMinExtent

Definition at line 150 of file G4PVDivision.cc.

156 {
157  if( divType == DivWIDTH )
158  {
160  }
161  else
162  {
163  fnReplicas = nDivs;
164  }
165  if (fnReplicas < 1 )
166  {
167  G4Exception("G4PVDivision::CheckAndSetParameters()", "GeomDiv0002",
168  FatalException, "Illegal number of replicas!");
169  }
170 
171  if( divType != DivNDIV)
172  {
173  fwidth = fparam->GetWidth();
174  }
175  else
176  {
177  fwidth = width;
178  }
179  if( fwidth < 0 )
180  {
181  G4Exception("G4PVDivision::CheckAndSetParameters()", "GeomDiv0002",
182  FatalException, "Width must be positive!");
183  }
184 
185  foffset = offset;
186  fdivAxis = pAxis;
187 
189  //
190  if( pAxis == kRho || pAxis == kRadial3D || pAxis == kPhi )
191  {
192  faxis = kZAxis;
193  }
194  else
195  {
196  faxis = pAxis;
197  }
198 
199  // Create rotation matrix: for phi axis it will be changed
200  // in G4VPVParameterisation::ComputeTransformation, for others
201  // it will stay the unity
202  //
203  G4RotationMatrix *pRMat = new G4RotationMatrix();
204  SetRotation(pRMat);
205 
206  switch (faxis)
207  {
208  case kPhi:
209  break;
210  case kRho:
211  case kXAxis:
212  case kYAxis:
213  case kZAxis:
214  break;
215  default:
216  G4Exception("G4PVDivision::CheckAndSetParameters()", "GeomDiv0002",
217  FatalException, "Unknown axis of replication.");
218  break;
219  }
220 
221 
222  //----- Check that mother solid is of the same type than
223  // daughter solid (otherwise, the corresponding
224  // Parameterisation::ComputeDimension() will not be called)
225  //
226  G4String msolType = pMotherLogical->GetSolid()->GetEntityType();
227  G4String dsolType = GetLogicalVolume()->GetSolid()->GetEntityType();
228  if( msolType != dsolType && ( msolType != "G4Trd" || dsolType != "G4Trap" ) )
229  {
230  std::ostringstream message;
231  message << "Incorrect solid type for division of volume "
232  << GetName() << "." << G4endl
233  << "It is: " << msolType
234  << ", while it should be: " << dsolType << "!";
235  G4Exception("G4PVDivision::CheckAndSetParameters()",
236  "GeomDiv0002", FatalException, message );
237  }
238 }
Definition: geomdefs.hh:54
CLHEP::HepRotation G4RotationMatrix
G4double GetWidth() const
#define width
virtual G4GeometryType GetEntityType() const =0
void SetRotation(G4RotationMatrix *)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4VDivisionParameterisation * fparam
const G4String & GetName() const
G4double fwidth
#define G4endl
Definition: G4ios.hh:61
Definition: geomdefs.hh:54
G4LogicalVolume * GetLogicalVolume() const
G4VSolid * GetSolid() const
G4double foffset
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ErrorInAxis()

void G4PVDivision::ErrorInAxis ( EAxis  axis,
G4VSolid solid 
)
private

Definition at line 491 of file G4PVDivision.cc.

492 {
493  G4String error = "Trying to divide solid " + solid->GetName()
494  + " of type " + solid->GetEntityType() + " along axis ";
495  switch( axis )
496  {
497  case kXAxis:
498  error += "X.";
499  break;
500  case kYAxis:
501  error += "Y.";
502  break;
503  case kZAxis:
504  error += "Z.";
505  break;
506  case kRho:
507  error += "Rho.";
508  break;
509  case kRadial3D:
510  error += "Radial3D.";
511  break;
512  case kPhi:
513  error += "Phi.";
514  break;
515  default:
516  break;
517  }
518  G4Exception("G4PVDivision::ErrorInAxis()", "GeomDiv0002",
519  FatalException, error);
520 }
Definition: geomdefs.hh:54
virtual G4GeometryType GetEntityType() const =0
G4String GetName() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
static PROLOG_HANDLER error
Definition: xmlrole.cc:112
Definition: geomdefs.hh:54
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetCopyNo()

G4int G4PVDivision::GetCopyNo ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 264 of file G4PVDivision.cc.

265 {
266  return fcopyNo;
267 }

◆ GetDivisionAxis()

EAxis G4PVDivision::GetDivisionAxis ( ) const

Definition at line 246 of file G4PVDivision.cc.

247 {
248  return fdivAxis;
249 }
Here is the caller graph for this function:

◆ GetParameterisation()

G4VPVParameterisation * G4PVDivision::GetParameterisation ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 282 of file G4PVDivision.cc.

283 {
284  return fparam;
285 }
G4VDivisionParameterisation * fparam

◆ GetRegularStructureId()

G4int G4PVDivision::GetRegularStructureId ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 535 of file G4PVDivision.cc.

536 {
537  return 0;
538 }

◆ GetReplicationData()

void G4PVDivision::GetReplicationData ( EAxis axis,
G4int nReplicas,
G4double width,
G4double offset,
G4bool consuming 
) const
virtual

Implements G4VPhysicalVolume.

Definition at line 288 of file G4PVDivision.cc.

293 {
294  axis=faxis;
295  nDivs=fnReplicas;
296  width=fwidth;
297  offset=foffset;
298  consuming=false;
299 }
#define width
G4double fwidth
G4double foffset
Here is the caller graph for this function:

◆ IsMany()

G4bool G4PVDivision::IsMany ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 258 of file G4PVDivision.cc.

259 {
260  return false;
261 }

◆ IsParameterised()

G4bool G4PVDivision::IsParameterised ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 252 of file G4PVDivision.cc.

253 {
254  return true;
255 }

◆ IsRegularStructure()

G4bool G4PVDivision::IsRegularStructure ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 527 of file G4PVDivision.cc.

528 {
529  return false;
530 }

◆ IsReplicated()

G4bool G4PVDivision::IsReplicated ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 276 of file G4PVDivision.cc.

277 {
278  return true;
279 }

◆ operator=()

const G4PVDivision& G4PVDivision::operator= ( const G4PVDivision )
private

◆ SetCopyNo()

void G4PVDivision::SetCopyNo ( G4int  CopyNo)
virtual

Implements G4VPhysicalVolume.

Definition at line 270 of file G4PVDivision.cc.

271 {
272  fcopyNo= newCopyNo;
273 }

◆ SetParameterisation()

void G4PVDivision::SetParameterisation ( G4LogicalVolume motherLogical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  offset,
DivisionType  divType 
)
private

Definition at line 305 of file G4PVDivision.cc.

311 {
312  // Check that solid is compatible with mother solid and axis of division
313  // CheckSolid( solid, motherSolid );
314  // G4cout << " Axis " << axis << G4endl;
315 
316  G4VSolid* mSolid = motherLogical->GetSolid();
317  G4String mSolidType = mSolid->GetEntityType();
318 
319  // If the solid is a reflected one, update type to its
320  // real constituent solid.
321  //
322  if (mSolidType == "G4ReflectedSolid")
323  {
324  mSolidType = ((G4ReflectedSolid*)mSolid)->GetConstituentMovedSolid()
325  ->GetEntityType();
326  }
327 
328  // Parameterisation type depend of mother solid type and axis of division
329  //
330  if( mSolidType == "G4Box" )
331  {
332  switch( axis )
333  {
334  case kXAxis:
335  fparam = new G4ParameterisationBoxX( axis, nDivs, width,
336  offset, mSolid, divType );
337  break;
338  case kYAxis:
339  fparam = new G4ParameterisationBoxY( axis, nDivs, width,
340  offset, mSolid, divType );
341  break;
342  case kZAxis:
343  fparam = new G4ParameterisationBoxZ( axis, nDivs, width,
344  offset, mSolid, divType );
345  break;
346  default:
347  ErrorInAxis( axis, mSolid );
348  break;
349  }
350  }
351  else if( mSolidType == "G4Tubs" )
352  {
353  switch( axis )
354  {
355  case kRho:
356  fparam = new G4ParameterisationTubsRho( axis, nDivs, width,
357  offset, mSolid, divType );
358  break;
359  case kPhi:
360  fparam = new G4ParameterisationTubsPhi( axis, nDivs, width,
361  offset, mSolid, divType );
362  break;
363  case kZAxis:
364  fparam = new G4ParameterisationTubsZ( axis, nDivs, width,
365  offset, mSolid, divType );
366  break;
367  default:
368  ErrorInAxis( axis, mSolid );
369  break;
370  }
371  }
372  else if( mSolidType == "G4Cons" )
373  {
374  switch( axis )
375  {
376  case kRho:
377  fparam = new G4ParameterisationConsRho( axis, nDivs, width,
378  offset, mSolid, divType );
379  break;
380  case kPhi:
381  fparam = new G4ParameterisationConsPhi( axis, nDivs, width,
382  offset, mSolid, divType );
383  break;
384  case kZAxis:
385  fparam = new G4ParameterisationConsZ( axis, nDivs, width,
386  offset, mSolid, divType );
387  break;
388  default:
389  ErrorInAxis( axis, mSolid );
390  break;
391  }
392  }
393  else if( mSolidType == "G4Trd" )
394  {
395  switch( axis )
396  {
397  case kXAxis:
398  fparam = new G4ParameterisationTrdX( axis, nDivs, width,
399  offset, mSolid, divType );
400  break;
401  case kYAxis:
402  fparam = new G4ParameterisationTrdY( axis, nDivs, width,
403  offset, mSolid, divType );
404  break;
405  case kZAxis:
406  fparam = new G4ParameterisationTrdZ( axis, nDivs, width,
407  offset, mSolid, divType );
408  break;
409  default:
410  ErrorInAxis( axis, mSolid );
411  break;
412  }
413  }
414  else if( mSolidType == "G4Para" )
415  {
416  switch( axis )
417  {
418  case kXAxis:
419  fparam = new G4ParameterisationParaX( axis, nDivs, width,
420  offset, mSolid, divType );
421  break;
422  case kYAxis:
423  fparam = new G4ParameterisationParaY( axis, nDivs, width,
424  offset, mSolid, divType );
425  break;
426  case kZAxis:
427  fparam = new G4ParameterisationParaZ( axis, nDivs, width,
428  offset, mSolid, divType );
429  break;
430  default:
431  ErrorInAxis( axis, mSolid );
432  break;
433  }
434  }
435 // else if( mSolidType == "G4Trap" )
436 // {
437 // }
438  else if( mSolidType == "G4Polycone" )
439  {
440  switch( axis )
441  {
442  case kRho:
443  fparam = new G4ParameterisationPolyconeRho( axis, nDivs, width,
444  offset, mSolid, divType );
445  break;
446  case kPhi:
447  fparam = new G4ParameterisationPolyconePhi( axis, nDivs, width,
448  offset, mSolid, divType );
449  break;
450  case kZAxis:
451  fparam = new G4ParameterisationPolyconeZ( axis, nDivs, width,
452  offset, mSolid, divType );
453  break;
454  default:
455  ErrorInAxis( axis, mSolid );
456  break;
457  }
458  }
459  else if( mSolidType == "G4Polyhedra" )
460  {
461  switch( axis )
462  {
463  case kRho:
464  fparam = new G4ParameterisationPolyhedraRho( axis, nDivs, width,
465  offset, mSolid, divType );
466  break;
467  case kPhi:
468  fparam = new G4ParameterisationPolyhedraPhi( axis, nDivs, width,
469  offset, mSolid, divType );
470  break;
471  case kZAxis:
472  fparam = new G4ParameterisationPolyhedraZ( axis, nDivs, width,
473  offset, mSolid, divType );
474  break;
475  default:
476  ErrorInAxis( axis, mSolid );
477  break;
478  }
479  }
480  else
481  {
482  std::ostringstream message;
483  message << "Solid type " << mSolidType << " not supported!" << G4endl
484  << "Divisions for " << mSolidType << " are not implemented.";
485  G4Exception("G4PVDivision::SetParameterisation()", "GeomDiv0001",
486  FatalException, message);
487  }
488 }
Definition: geomdefs.hh:54
#define width
virtual G4GeometryType GetEntityType() const =0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4VDivisionParameterisation * fparam
void ErrorInAxis(EAxis axis, G4VSolid *solid)
#define G4endl
Definition: G4ios.hh:61
Definition: geomdefs.hh:54
G4VSolid * GetSolid() const
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ faxis

EAxis G4PVDivision::faxis
protected

Definition at line 165 of file G4PVDivision.hh.

◆ fcopyNo

G4int G4PVDivision::fcopyNo
protected

Definition at line 169 of file G4PVDivision.hh.

◆ fdivAxis

EAxis G4PVDivision::fdivAxis
protected

Definition at line 166 of file G4PVDivision.hh.

◆ fnReplicas

G4int G4PVDivision::fnReplicas
protected

Definition at line 167 of file G4PVDivision.hh.

◆ foffset

G4double G4PVDivision::foffset
protected

Definition at line 168 of file G4PVDivision.hh.

◆ fparam

G4VDivisionParameterisation* G4PVDivision::fparam
protected

Definition at line 170 of file G4PVDivision.hh.

◆ fwidth

G4double G4PVDivision::fwidth
protected

Definition at line 168 of file G4PVDivision.hh.


The documentation for this class was generated from the following files: