G4ParameterisationTubsZ Class Reference

#include <G4ParameterisationTubs.hh>

Inheritance diagram for G4ParameterisationTubsZ:

G4VParameterisationTubs G4VDivisionParameterisation G4VPVParameterisation

Public Member Functions

 G4ParameterisationTubsZ (EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *motherSolid, DivisionType divType)
 ~G4ParameterisationTubsZ ()
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 160 of file G4ParameterisationTubs.hh.


Constructor & Destructor Documentation

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

Definition at line 292 of file G4ParameterisationTubs.cc.

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

00295   : G4VParameterisationTubs( axis, nDiv, width, offset, msolid, divType )
00296 { 
00297   CheckParametersValidity();
00298   SetType( "DivisionTubsZ" );
00299 
00300   G4Tubs* msol = (G4Tubs*)(fmotherSolid);
00301   if( divType == DivWIDTH )
00302   {
00303     fnDiv = CalculateNDiv( 2*msol->GetZHalfLength(), width, offset );
00304   }
00305   else if( divType == DivNDIV )
00306   {
00307     fwidth = CalculateWidth( 2*msol->GetZHalfLength(), nDiv, offset );
00308   }
00309 
00310 #ifdef G4DIVDEBUG
00311   if( verbose >= 1 )
00312   {
00313     G4cout << " G4ParameterisationTubsZ: # divisions " << fnDiv << " = "
00314            << nDiv << G4endl
00315            << " Offset " << foffset << " = " << offset << G4endl
00316            << " Width " << fwidth << " = " << width << G4endl;
00317   }
00318 #endif
00319 }

G4ParameterisationTubsZ::~G4ParameterisationTubsZ (  ) 

Definition at line 322 of file G4ParameterisationTubs.cc.

00323 {
00324 }


Member Function Documentation

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

Reimplemented from G4VPVParameterisation.

Definition at line 373 of file G4ParameterisationTubs.cc.

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

00375 {
00376   G4Tubs* msol = (G4Tubs*)(fmotherSolid);
00377 
00378   G4double pRMin = msol->GetInnerRadius();
00379   G4double pRMax = msol->GetOuterRadius();
00380   //  G4double pDz = msol->GetZHalfLength() / GetNoDiv();
00381   G4double pDz = fwidth/2. - fhgap;
00382   G4double pSPhi = msol->GetStartPhiAngle();
00383   G4double pDPhi = msol->GetDeltaPhiAngle();
00384 
00385   tubs.SetInnerRadius( pRMin );
00386   tubs.SetOuterRadius( pRMax );
00387   tubs.SetZHalfLength( pDz );
00388   tubs.SetStartPhiAngle( pSPhi, false );
00389   tubs.SetDeltaPhiAngle( pDPhi );
00390 
00391 #ifdef G4DIVDEBUG
00392   if( verbose >= 2 )
00393   {
00394     G4cout << " G4ParameterisationTubsZ::ComputeDimensions()" << G4endl
00395            << " pDz: " << pDz << G4endl;
00396     tubs.DumpInfo();
00397   }
00398 #endif
00399 }

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

Implements G4VDivisionParameterisation.

Definition at line 336 of file G4ParameterisationTubs.cc.

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

00337 {
00338   //----- set translation: along Z axis
00339   G4Tubs* motherTubs = (G4Tubs*)(fmotherSolid);
00340   G4double posi = - motherTubs->GetZHalfLength() + OffsetZ() 
00341                   + fwidth/2 + copyNo*fwidth;
00342   G4ThreeVector origin(0.,0.,posi); 
00343   physVol->SetTranslation( origin );
00344 
00345   //----- calculate rotation matrix: unit
00346 
00347 #ifdef G4DIVDEBUG
00348   if( verbose >= 2 )
00349   {
00350     G4cout << " G4ParameterisationTubsZ::ComputeTransformation()" << G4endl
00351            << " Position: " << posi << " - copyNo: " << copyNo << G4endl
00352            << " foffset " << foffset/deg << " - fwidth " << fwidth/deg
00353            << G4endl;
00354   }
00355 #endif
00356 
00357   ChangeRotMatrix( physVol );
00358 
00359 #ifdef G4DIVDEBUG
00360   if( verbose >= 2 )
00361   {
00362     G4cout << std::setprecision(8) << " G4ParameterisationTubsZ " << copyNo
00363            << G4endl
00364            << " Position: " << origin << " - Width: " << fwidth
00365            << " - Axis: " << faxis  << G4endl; 
00366   }
00367 #endif
00368 }

G4double G4ParameterisationTubsZ::GetMaxParameter (  )  const [virtual]

Implements G4VDivisionParameterisation.

Definition at line 327 of file G4ParameterisationTubs.cc.

References G4VDivisionParameterisation::fmotherSolid, and G4Tubs::GetZHalfLength().

00328 {
00329   G4Tubs* msol = (G4Tubs*)(fmotherSolid);
00330   return 2*msol->GetZHalfLength();
00331 }


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