G4ParameterisationParaX Class Reference

#include <G4ParameterisationPara.hh>

Inheritance diagram for G4ParameterisationParaX:

G4VParameterisationPara G4VDivisionParameterisation G4VPVParameterisation

Public Member Functions

 G4ParameterisationParaX (EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *msolid, DivisionType divType)
 ~G4ParameterisationParaX ()
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 75 of file G4ParameterisationPara.hh.


Constructor & Destructor Documentation

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

Definition at line 88 of file G4ParameterisationPara.cc.

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

00091   :  G4VParameterisationPara( axis, nDiv, width, offset, msolid, divType )
00092 {
00093   CheckParametersValidity();
00094   SetType( "DivisionParaX" );
00095 
00096   G4Para* mpara = (G4Para*)(fmotherSolid);
00097   if( divType == DivWIDTH )
00098   {
00099     fnDiv = CalculateNDiv( 2*mpara->GetXHalfLength(), width, offset );
00100   }
00101   else if( divType == DivNDIV )
00102   {
00103     fwidth = CalculateWidth( 2*mpara->GetXHalfLength(), nDiv, offset );
00104   }
00105 
00106 #ifdef G4DIVDEBUG
00107   if( verbose >= 1 )
00108   {
00109     G4cout << " G4ParameterisationParaX - # divisions " << fnDiv
00110            << " = " << nDiv << G4endl
00111            << " Offset " << foffset << " = " << offset << G4endl
00112            << " Width " << fwidth << " = " << width << G4endl;
00113   }
00114 #endif
00115 }

G4ParameterisationParaX::~G4ParameterisationParaX (  ) 

Definition at line 125 of file G4ParameterisationPara.cc.

00126 {
00127 }


Member Function Documentation

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

Reimplemented from G4VPVParameterisation.

Definition at line 158 of file G4ParameterisationPara.cc.

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

00160 {
00161   //---- The division along X of a Para will result a Para
00162   G4Para* msol = (G4Para*)(fmotherSolid);
00163 
00164   //---- Get
00165   G4double pDx = fwidth/2. - fhgap;
00166   G4double pDy = msol->GetYHalfLength();
00167   G4double pDz = msol->GetZHalfLength();
00168   G4double pAlpha = std::atan(msol->GetTanAlpha());
00169   G4double pTheta = msol->GetSymAxis().theta();
00170   G4double pPhi = msol->GetSymAxis().phi();
00171  
00172   para.SetAllParameters ( pDx, pDy, pDz, pAlpha, pTheta, pPhi );
00173 
00174 #ifdef G4DIVDEBUG
00175   if( verbose >= 1 )
00176   {
00177     G4cout << " G4ParameterisationParaX::ComputeDimensions()"
00178            << " - Mother PARA " << G4endl;
00179     msol->DumpInfo();
00180     G4cout << " - Parameterised PARA: " << G4endl;
00181     para.DumpInfo();
00182   }
00183 #endif
00184 }

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

Implements G4VDivisionParameterisation.

Definition at line 132 of file G4ParameterisationPara.cc.

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

00133 {
00134   G4Para* msol = (G4Para*)(fmotherSolid );
00135   G4double mdx = msol->GetXHalfLength( );
00136 
00137   //----- translation 
00138   G4ThreeVector origin(0.,0.,0.); 
00139   G4double posi = -mdx + foffset+(copyNo+0.5)*fwidth;
00140   origin.setX( posi ); 
00141   
00142 #ifdef G4DIVDEBUG
00143   if( verbose >= 2 )
00144   {
00145     G4cout << std::setprecision(8) << " G4ParameterisationParaX "
00146            << copyNo << G4endl
00147            << " Position: " << origin << " - Axis: " << faxis << G4endl;
00148   }
00149 #endif
00150 
00151   //----- set translation 
00152   physVol->SetTranslation( origin );
00153 }

G4double G4ParameterisationParaX::GetMaxParameter (  )  const [virtual]

Implements G4VDivisionParameterisation.

Definition at line 118 of file G4ParameterisationPara.cc.

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

00119 {
00120   G4Para* msol = (G4Para*)(fmotherSolid);
00121   return 2*msol->GetXHalfLength();
00122 }


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