G4VParameterisationPolycone Class Reference

#include <G4ParameterisationPolycone.hh>

Inheritance diagram for G4VParameterisationPolycone:

G4VDivisionParameterisation G4VPVParameterisation G4ParameterisationPolyconePhi G4ParameterisationPolyconeRho G4ParameterisationPolyconeZ

Public Member Functions

 G4VParameterisationPolycone (EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *msolid, DivisionType divType)
virtual ~G4VParameterisationPolycone ()

Detailed Description

Definition at line 64 of file G4ParameterisationPolycone.hh.


Constructor & Destructor Documentation

G4VParameterisationPolycone::G4VParameterisationPolycone ( EAxis  axis,
G4int  nCopies,
G4double  offset,
G4double  step,
G4VSolid msolid,
DivisionType  divType 
)

Definition at line 46 of file G4ParameterisationPolycone.cc.

References FatalException, G4VDivisionParameterisation::fDeleteSolid, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::fReflectedSolid, G4endl, G4Exception(), G4Polycone::GetEndPhi(), G4VSolid::GetEntityType(), G4VSolid::GetName(), G4Polycone::GetOriginalParameters(), G4Polycone::GetStartPhi(), G4Polycone::IsGeneric(), G4PolyconeHistorical::Num_z_planes, G4PolyconeHistorical::Rmax, G4PolyconeHistorical::Rmin, and G4PolyconeHistorical::Z_values.

00049   :  G4VDivisionParameterisation( axis, nDiv, width, offset, divType, msolid )
00050 {
00051   G4Polycone* msol = (G4Polycone*)(msolid);
00052   if ((msolid->GetEntityType() != "G4ReflectedSolid") && (msol->IsGeneric()))
00053   {
00054     std::ostringstream message;
00055     message << "Generic construct for G4Polycone NOT supported." << G4endl
00056             << "Sorry! Solid: " << msol->GetName() << ".";
00057     G4Exception("G4VParameterisationPolycone::G4VParameterisationPolycone()",
00058                 "GeomDiv0001", FatalException, message);
00059   }
00060   if (msolid->GetEntityType() == "G4ReflectedSolid")
00061   {
00062     // Get constituent solid  
00063     G4VSolid* mConstituentSolid 
00064        = ((G4ReflectedSolid*)msolid)->GetConstituentMovedSolid();
00065     msol = (G4Polycone*)(mConstituentSolid);
00066   
00067     // Get parameters
00068     G4int   nofZplanes = msol->GetOriginalParameters()->Num_z_planes;
00069     G4double* zValues  = msol->GetOriginalParameters()->Z_values;
00070     G4double* rminValues  = msol->GetOriginalParameters()->Rmin;
00071     G4double* rmaxValues  = msol->GetOriginalParameters()->Rmax;
00072 
00073     // Invert z values
00074     G4double* zValuesRefl = new double[nofZplanes];
00075     for (G4int i=0; i<nofZplanes; i++) zValuesRefl[i] = - zValues[i];
00076     
00077     G4Polycone* newSolid
00078       = new G4Polycone(msol->GetName(),
00079                        msol->GetStartPhi(), 
00080                        msol->GetEndPhi() - msol->GetStartPhi(),
00081                        nofZplanes, zValuesRefl, rminValues, rmaxValues);
00082 
00083     delete [] zValuesRefl;       
00084 
00085     msol = newSolid;
00086     fmotherSolid = newSolid;
00087     fReflectedSolid = true;
00088     fDeleteSolid = true;
00089   }    
00090 }

G4VParameterisationPolycone::~G4VParameterisationPolycone (  )  [virtual]

Definition at line 93 of file G4ParameterisationPolycone.cc.

00094 {
00095 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:52 2013 for Geant4 by  doxygen 1.4.7