G4ParameterisationTubsRho Class Reference

#include <G4ParameterisationTubs.hh>

Inheritance diagram for G4ParameterisationTubsRho:

G4VParameterisationTubs G4VDivisionParameterisation G4VPVParameterisation

Public Member Functions

 G4ParameterisationTubsRho (EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *motherSolid, DivisionType divType)
 ~G4ParameterisationTubsRho ()
G4double GetMaxParameter () const
void ComputeTransformation (const G4int copyNo, G4VPhysicalVolume *physVol) const
void ComputeDimensions (G4Tubs &tubs, const G4int copyNo, const G4VPhysicalVolume *physVol) const

Detailed Description

Definition at line 74 of file G4ParameterisationTubs.hh.


Constructor & Destructor Documentation

G4ParameterisationTubsRho::G4ParameterisationTubsRho ( EAxis  axis,
G4int  nCopies,
G4double  offset,
G4double  step,
G4VSolid motherSolid,
DivisionType  divType 
)

Definition at line 72 of file G4ParameterisationTubs.cc.

References G4VDivisionParameterisation::CalculateNDiv(), G4VDivisionParameterisation::CalculateWidth(), G4VDivisionParameterisation::CheckParametersValidity(), DivNDIV, DivWIDTH, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::fnDiv, G4VDivisionParameterisation::foffset, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4Tubs::GetInnerRadius(), G4Tubs::GetOuterRadius(), G4VDivisionParameterisation::SetType(), and G4VDivisionParameterisation::verbose.

00075   :  G4VParameterisationTubs( axis, nDiv, width, offset, msolid, divType )
00076 {
00077   CheckParametersValidity();
00078   SetType( "DivisionTubsRho" );
00079 
00080   G4Tubs* msol = (G4Tubs*)(fmotherSolid);
00081   if( divType == DivWIDTH )
00082   {
00083     fnDiv = CalculateNDiv( msol->GetOuterRadius() - msol->GetInnerRadius(),
00084                            width, offset );
00085   }
00086   else if( divType == DivNDIV )
00087   {
00088     fwidth = CalculateWidth( msol->GetOuterRadius() - msol->GetInnerRadius(),
00089                              nDiv, offset );
00090   }
00091 
00092 #ifdef G4DIVDEBUG
00093   if( verbose >= 1 )
00094   {
00095     G4cout << " G4ParameterisationTubsRho - no divisions " << fnDiv << " = "
00096            << nDiv << G4endl
00097            << " Offset " << foffset << " = " << offset << G4endl
00098            << " Width " << fwidth << " = " << width << G4endl
00099            << " DivType " << divType << G4endl;
00100   }
00101 #endif
00102 }

G4ParameterisationTubsRho::~G4ParameterisationTubsRho (  ) 

Definition at line 105 of file G4ParameterisationTubs.cc.

00106 {
00107 }


Member Function Documentation

void G4ParameterisationTubsRho::ComputeDimensions ( G4Tubs tubs,
const G4int  copyNo,
const G4VPhysicalVolume physVol 
) const [virtual]

Reimplemented from G4VPVParameterisation.

Definition at line 153 of file G4ParameterisationTubs.cc.

References G4VSolid::DumpInfo(), G4VDivisionParameterisation::fhgap, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::foffset, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4Tubs::GetDeltaPhiAngle(), G4Tubs::GetInnerRadius(), G4Tubs::GetStartPhiAngle(), G4Tubs::GetZHalfLength(), G4Tubs::SetDeltaPhiAngle(), G4Tubs::SetInnerRadius(), G4Tubs::SetOuterRadius(), G4Tubs::SetStartPhiAngle(), G4Tubs::SetZHalfLength(), and G4VDivisionParameterisation::verbose.

00155 {
00156   G4Tubs* msol = (G4Tubs*)(fmotherSolid);
00157 
00158   G4double pRMin = msol->GetInnerRadius() + foffset + fwidth * copyNo + fhgap;
00159   G4double pRMax = msol->GetInnerRadius() + foffset + fwidth * (copyNo+1) - fhgap;
00160   G4double pDz = msol->GetZHalfLength();
00161   //- already rotated  G4double pSR = foffset + copyNo*fwidth;
00162   G4double pSPhi = msol->GetStartPhiAngle();
00163   G4double pDPhi = msol->GetDeltaPhiAngle();;
00164 
00165   tubs.SetInnerRadius( pRMin );
00166   tubs.SetOuterRadius( pRMax );
00167   tubs.SetZHalfLength( pDz );
00168   tubs.SetStartPhiAngle( pSPhi, false );
00169   tubs.SetDeltaPhiAngle( pDPhi );
00170 
00171 #ifdef G4DIVDEBUG
00172   if( verbose >= 2 )
00173   {
00174     G4cout << " G4ParameterisationTubsRho::ComputeDimensions()" << G4endl
00175            << " pRMin: " << pRMin << " - pRMax: " << pRMax << G4endl;
00176     tubs.DumpInfo();
00177   }
00178 #endif
00179 }

void G4ParameterisationTubsRho::ComputeTransformation ( const G4int  copyNo,
G4VPhysicalVolume physVol 
) const [virtual]

Implements G4VDivisionParameterisation.

Definition at line 120 of file G4ParameterisationTubs.cc.

References G4VDivisionParameterisation::ChangeRotMatrix(), G4VDivisionParameterisation::faxis, G4VDivisionParameterisation::foffset, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4VPhysicalVolume::SetTranslation(), and G4VDivisionParameterisation::verbose.

00121 {
00122   //----- translation 
00123   G4ThreeVector origin(0.,0.,0.); 
00124   //----- set translation 
00125   physVol->SetTranslation( origin );
00126 
00127   //----- calculate rotation matrix: unit
00128 
00129 #ifdef G4DIVDEBUG
00130   if( verbose >= 2 )
00131   {
00132     G4cout << " G4ParameterisationTubsRho " << G4endl
00133            << " Offset: " << foffset/deg
00134            << " - Width: " << fwidth/deg << G4endl;
00135   }
00136 #endif
00137 
00138   ChangeRotMatrix( physVol );
00139 
00140 #ifdef G4DIVDEBUG
00141   if( verbose >= 2 )
00142   {
00143     G4cout << std::setprecision(8) << " G4ParameterisationTubsRho " << G4endl
00144            << " Position: " << origin << " - Width: " << fwidth
00145            << " - Axis " << faxis  << G4endl;
00146   }
00147 #endif
00148 }

G4double G4ParameterisationTubsRho::GetMaxParameter (  )  const [virtual]

Implements G4VDivisionParameterisation.

Definition at line 110 of file G4ParameterisationTubs.cc.

References G4VDivisionParameterisation::fmotherSolid, G4Tubs::GetInnerRadius(), and G4Tubs::GetOuterRadius().

00111 {
00112   G4Tubs* msol = (G4Tubs*)(fmotherSolid);
00113   return msol->GetOuterRadius() - msol->GetInnerRadius();
00114 }


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