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 G4VPVParameterisation * GetParameterisation () 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
 
G4RotationMatrix * GetObjectRotation () const
 
G4RotationMatrix GetObjectRotationValue () const
 
G4ThreeVector GetObjectTranslation () const
 
const G4RotationMatrix * GetFrameRotation () const
 
G4ThreeVector GetFrameTranslation () const
 
const G4ThreeVector & GetTranslation () const
 
const G4RotationMatrix * GetRotation () const
 
void SetTranslation (const G4ThreeVector &v)
 
G4RotationMatrix * GetRotation ()
 
void SetRotation (G4RotationMatrix *)
 
G4LogicalVolume * GetLogicalVolume () const
 
void SetLogicalVolume (G4LogicalVolume *pLogical)
 
G4LogicalVolume * GetMotherLogical () const
 
void SetMotherLogical (G4LogicalVolume *pMother)
 
const G4String & GetName () 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
 
G4VDivisionParameterisation * fparam
 
- 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 G4PVDivision & operator= (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 G4PVManager & GetSubInstanceManager ()
 
- 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: