G4ParameterisationParaZ Class Reference

#include <G4ParameterisationPara.hh>

Inheritance diagram for G4ParameterisationParaZ:

G4VParameterisationPara G4VDivisionParameterisation G4VPVParameterisation

Public Member Functions

 G4ParameterisationParaZ (EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *msolid, DivisionType divType)
 ~G4ParameterisationParaZ ()
G4double GetMaxParameter () const
void ComputeTransformation (const G4int copyNo, G4VPhysicalVolume *physVol) const
void ComputeDimensions (G4Para &para, const G4int copyNo, const G4VPhysicalVolume *pv) const

Detailed Description

Definition at line 163 of file G4ParameterisationPara.hh.


Constructor & Destructor Documentation

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

Definition at line 290 of file G4ParameterisationPara.cc.

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

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

G4ParameterisationParaZ::~G4ParameterisationParaZ (  ) 

Definition at line 320 of file G4ParameterisationPara.cc.

00321 {
00322 }


Member Function Documentation

void G4ParameterisationParaZ::ComputeDimensions ( G4Para para,
const G4int  copyNo,
const G4VPhysicalVolume pv 
) const [virtual]

Reimplemented from G4VPVParameterisation.

Definition at line 360 of file G4ParameterisationPara.cc.

References G4VSolid::DumpInfo(), G4VDivisionParameterisation::fhgap, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4Para::GetSymAxis(), G4Para::GetTanAlpha(), G4Para::GetXHalfLength(), G4Para::GetYHalfLength(), G4Para::SetAllParameters(), and G4VDivisionParameterisation::verbose.

00362 {
00363   //---- The division along Z of a Para will result a Para
00364   G4Para* msol = (G4Para*)(fmotherSolid);
00365 
00366   //---- Get
00367   G4double pDx = msol->GetXHalfLength();
00368   G4double pDy = msol->GetYHalfLength();
00369   G4double pDz = fwidth/2. - fhgap;
00370   G4double pAlpha = std::atan(msol->GetTanAlpha());
00371   G4double pTheta = msol->GetSymAxis().theta();
00372   G4double pPhi = msol->GetSymAxis().phi();
00373  
00374   para.SetAllParameters ( pDx, pDy, pDz, pAlpha, pTheta, pPhi );
00375 
00376 #ifdef G4DIVDEBUG
00377   if( verbose >= -1 )
00378   {
00379     G4cout << " G4ParameterisationParaZ::ComputeDimensions()"
00380            << " - Mother PARA " << G4endl;
00381     msol->DumpInfo();
00382     G4cout << " - Parameterised PARA: " << G4endl;
00383     para.DumpInfo();
00384   }
00385 #endif
00386 }

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

Implements G4VDivisionParameterisation.

Definition at line 334 of file G4ParameterisationPara.cc.

References G4VDivisionParameterisation::faxis, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4Para::GetSymAxis(), G4Para::GetZHalfLength(), G4VDivisionParameterisation::OffsetZ(), G4VPhysicalVolume::SetTranslation(), and G4VDivisionParameterisation::verbose.

00335 {
00336   G4Para* msol = (G4Para*)(fmotherSolid );
00337   G4double mdz = msol->GetZHalfLength( );
00338 
00339   //----- translation 
00340   G4double posi = -mdz + OffsetZ() + (copyNo+0.5)*fwidth;
00341   G4ThreeVector symAxis = msol->GetSymAxis();
00342   G4ThreeVector origin( symAxis * posi / symAxis.z() ); 
00343   
00344 #ifdef G4DIVDEBUG
00345   if( verbose >= 2 )
00346   {
00347     G4cout << std::setprecision(8) << " G4ParameterisationParaZ "
00348            << copyNo << G4endl
00349            << " Position: " << origin << " - Axis: " << faxis << G4endl;
00350   }
00351 #endif
00352 
00353   //----- set translation 
00354   physVol->SetTranslation( origin );
00355 }

G4double G4ParameterisationParaZ::GetMaxParameter (  )  const [virtual]

Implements G4VDivisionParameterisation.

Definition at line 325 of file G4ParameterisationPara.cc.

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

00326 {
00327   G4Para* msol = (G4Para*)(fmotherSolid);
00328   return 2*msol->GetZHalfLength();
00329 }


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