#include <G4ParameterisationTubs.hh>
Inheritance diagram for G4ParameterisationTubsRho:
Public Member Functions | |
G4ParameterisationTubsRho (EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *motherSolid, DivisionType divType) | |
~G4ParameterisationTubsRho () | |
G4double | GetMaxParameter () const |
void | ComputeTransformation (const G4int copyNo, G4VPhysicalVolume *physVol) const |
void | ComputeDimensions (G4Tubs &tubs, const G4int copyNo, const G4VPhysicalVolume *physVol) const |
Definition at line 74 of file G4ParameterisationTubs.hh.
G4ParameterisationTubsRho::G4ParameterisationTubsRho | ( | EAxis | axis, | |
G4int | nCopies, | |||
G4double | offset, | |||
G4double | step, | |||
G4VSolid * | motherSolid, | |||
DivisionType | divType | |||
) |
Definition at line 72 of file G4ParameterisationTubs.cc.
References G4VDivisionParameterisation::CalculateNDiv(), G4VDivisionParameterisation::CalculateWidth(), G4VDivisionParameterisation::CheckParametersValidity(), DivNDIV, DivWIDTH, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::fnDiv, G4VDivisionParameterisation::foffset, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4Tubs::GetInnerRadius(), G4Tubs::GetOuterRadius(), G4VDivisionParameterisation::SetType(), and G4VDivisionParameterisation::verbose.
00075 : G4VParameterisationTubs( axis, nDiv, width, offset, msolid, divType ) 00076 { 00077 CheckParametersValidity(); 00078 SetType( "DivisionTubsRho" ); 00079 00080 G4Tubs* msol = (G4Tubs*)(fmotherSolid); 00081 if( divType == DivWIDTH ) 00082 { 00083 fnDiv = CalculateNDiv( msol->GetOuterRadius() - msol->GetInnerRadius(), 00084 width, offset ); 00085 } 00086 else if( divType == DivNDIV ) 00087 { 00088 fwidth = CalculateWidth( msol->GetOuterRadius() - msol->GetInnerRadius(), 00089 nDiv, offset ); 00090 } 00091 00092 #ifdef G4DIVDEBUG 00093 if( verbose >= 1 ) 00094 { 00095 G4cout << " G4ParameterisationTubsRho - no divisions " << fnDiv << " = " 00096 << nDiv << G4endl 00097 << " Offset " << foffset << " = " << offset << G4endl 00098 << " Width " << fwidth << " = " << width << G4endl 00099 << " DivType " << divType << G4endl; 00100 } 00101 #endif 00102 }
G4ParameterisationTubsRho::~G4ParameterisationTubsRho | ( | ) |
void G4ParameterisationTubsRho::ComputeDimensions | ( | G4Tubs & | tubs, | |
const G4int | copyNo, | |||
const G4VPhysicalVolume * | physVol | |||
) | const [virtual] |
Reimplemented from G4VPVParameterisation.
Definition at line 153 of file G4ParameterisationTubs.cc.
References G4VSolid::DumpInfo(), G4VDivisionParameterisation::fhgap, G4VDivisionParameterisation::fmotherSolid, G4VDivisionParameterisation::foffset, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4Tubs::GetDeltaPhiAngle(), G4Tubs::GetInnerRadius(), G4Tubs::GetStartPhiAngle(), G4Tubs::GetZHalfLength(), G4Tubs::SetDeltaPhiAngle(), G4Tubs::SetInnerRadius(), G4Tubs::SetOuterRadius(), G4Tubs::SetStartPhiAngle(), G4Tubs::SetZHalfLength(), and G4VDivisionParameterisation::verbose.
00155 { 00156 G4Tubs* msol = (G4Tubs*)(fmotherSolid); 00157 00158 G4double pRMin = msol->GetInnerRadius() + foffset + fwidth * copyNo + fhgap; 00159 G4double pRMax = msol->GetInnerRadius() + foffset + fwidth * (copyNo+1) - fhgap; 00160 G4double pDz = msol->GetZHalfLength(); 00161 //- already rotated G4double pSR = foffset + copyNo*fwidth; 00162 G4double pSPhi = msol->GetStartPhiAngle(); 00163 G4double pDPhi = msol->GetDeltaPhiAngle();; 00164 00165 tubs.SetInnerRadius( pRMin ); 00166 tubs.SetOuterRadius( pRMax ); 00167 tubs.SetZHalfLength( pDz ); 00168 tubs.SetStartPhiAngle( pSPhi, false ); 00169 tubs.SetDeltaPhiAngle( pDPhi ); 00170 00171 #ifdef G4DIVDEBUG 00172 if( verbose >= 2 ) 00173 { 00174 G4cout << " G4ParameterisationTubsRho::ComputeDimensions()" << G4endl 00175 << " pRMin: " << pRMin << " - pRMax: " << pRMax << G4endl; 00176 tubs.DumpInfo(); 00177 } 00178 #endif 00179 }
void G4ParameterisationTubsRho::ComputeTransformation | ( | const G4int | copyNo, | |
G4VPhysicalVolume * | physVol | |||
) | const [virtual] |
Implements G4VDivisionParameterisation.
Definition at line 120 of file G4ParameterisationTubs.cc.
References G4VDivisionParameterisation::ChangeRotMatrix(), G4VDivisionParameterisation::faxis, G4VDivisionParameterisation::foffset, G4VDivisionParameterisation::fwidth, G4cout, G4endl, G4VPhysicalVolume::SetTranslation(), and G4VDivisionParameterisation::verbose.
00121 { 00122 //----- translation 00123 G4ThreeVector origin(0.,0.,0.); 00124 //----- set translation 00125 physVol->SetTranslation( origin ); 00126 00127 //----- calculate rotation matrix: unit 00128 00129 #ifdef G4DIVDEBUG 00130 if( verbose >= 2 ) 00131 { 00132 G4cout << " G4ParameterisationTubsRho " << G4endl 00133 << " Offset: " << foffset/deg 00134 << " - Width: " << fwidth/deg << G4endl; 00135 } 00136 #endif 00137 00138 ChangeRotMatrix( physVol ); 00139 00140 #ifdef G4DIVDEBUG 00141 if( verbose >= 2 ) 00142 { 00143 G4cout << std::setprecision(8) << " G4ParameterisationTubsRho " << G4endl 00144 << " Position: " << origin << " - Width: " << fwidth 00145 << " - Axis " << faxis << G4endl; 00146 } 00147 #endif 00148 }
G4double G4ParameterisationTubsRho::GetMaxParameter | ( | ) | const [virtual] |
Implements G4VDivisionParameterisation.
Definition at line 110 of file G4ParameterisationTubs.cc.
References G4VDivisionParameterisation::fmotherSolid, G4Tubs::GetInnerRadius(), and G4Tubs::GetOuterRadius().
00111 { 00112 G4Tubs* msol = (G4Tubs*)(fmotherSolid); 00113 return msol->GetOuterRadius() - msol->GetInnerRadius(); 00114 }