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