#include <G4ParameterisationPara.hh>
Inheritance diagram for G4ParameterisationParaZ:
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 ¶, const G4int copyNo, const G4VPhysicalVolume *pv) const |
Definition at line 163 of file G4ParameterisationPara.hh.
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 | ( | ) |
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 }