50 auto msol = (
G4Cons*)(msolid);
54 G4VSolid* mConstituentSolid
55 = ((G4ReflectedSolid*)msolid)->GetConstituentMovedSolid();
56 msol = (G4Cons*)(mConstituentSolid);
60 = new G4Cons(msol->GetName(),
61 msol->GetInnerRadiusPlusZ(), msol->GetOuterRadiusPlusZ(),
62 msol->GetInnerRadiusMinusZ(), msol->GetOuterRadiusMinusZ(),
63 msol->GetZHalfLength(),
64 msol->GetStartPhiAngle(), msol->GetDeltaPhiAngle());
66 fmotherSolid = newSolid;
67 fReflectedSolid = true;
86 if( msol->GetInnerRadiusPlusZ() == 0. )
88 std::ostringstream message;
89 message <<
"OuterRadiusMinusZ = 0" <<
G4endl
90 <<
"Width is calculated as that of OuterRadiusMinusZ !";
91 G4Exception(
"G4ParameterisationConsRho::G4ParameterisationConsRho()",
98 - msol->GetInnerRadiusMinusZ(), width, offset );
102 auto mconsol = (
G4Cons*)(msolid);
104 - mconsol->GetInnerRadiusMinusZ(), nDiv, offset );
110 G4cout <<
" G4ParameterisationConsRho - no divisions " <<
fnDiv <<
" = "
112 <<
" Offset " <<
foffset <<
" = " << offset
125 return msol->GetOuterRadiusMinusZ() - msol->GetInnerRadiusMinusZ();
154 G4cout << std::setprecision(8) <<
" G4ParameterisationConsRho" <<
G4endl
155 <<
" Position: " << origin <<
" - Width: " <<
fwidth
178 G4double pRMin2 = msol->GetInnerRadiusPlusZ()
179 +
foffset + fwidthPlus * copyNo;
180 G4double pRMax2 = msol->GetInnerRadiusPlusZ()
181 +
foffset + fwidthPlus * (copyNo+1);
182 G4double pDz = msol->GetZHalfLength();
186 G4double pSPhi = msol->GetStartPhiAngle();
187 G4double pDPhi = msol->GetDeltaPhiAngle();;
200 G4cout <<
" G4ParameterisationConsRho::ComputeDimensions()" <<
G4endl
201 <<
" pRMin: " << pRMin1 <<
" - pRMax: " << pRMax1 <<
G4endl;
230 G4cout <<
" G4ParameterisationConsPhi no divisions " <<
fnDiv <<
" = "
245 return msol->GetDeltaPhiAngle();
264 G4cout <<
" G4ParameterisationConsPhi - position: " << posi/CLHEP::deg <<
G4endl
265 <<
" Origin: " << origin <<
" copyNo: " << copyNo
266 <<
" - foffset: " <<
foffset/CLHEP::deg
283 G4double pRMin1 = msol->GetInnerRadiusMinusZ();
284 G4double pRMax1 = msol->GetOuterRadiusMinusZ();
285 G4double pRMin2 = msol->GetInnerRadiusPlusZ();
286 G4double pRMax2 = msol->GetOuterRadiusPlusZ();
287 G4double pDz = msol->GetZHalfLength();
304 G4cout <<
" G4ParameterisationConsPhi::ComputeDimensions" <<
G4endl
305 <<
" pSPhi: " << pSPhi <<
" - pDPhi: " << pDPhi <<
G4endl;
334 G4cout <<
" G4ParameterisationConsZ: # divisions " <<
fnDiv <<
" = "
350 return 2*msol->GetZHalfLength();
370 G4cout <<
" G4ParameterisationConsZ::ComputeTransformation()" <<
G4endl
371 <<
" Origin: " << origin <<
" - copyNo: " << copyNo <<
G4endl
390 G4double aRInner = (msol->GetInnerRadiusPlusZ()
391 - msol->GetInnerRadiusMinusZ()) / (2*mHalfLength);
392 G4double bRInner = (msol->GetInnerRadiusPlusZ()
393 + msol->GetInnerRadiusMinusZ()) / 2;
394 G4double aROuter = (msol->GetOuterRadiusPlusZ()
395 - msol->GetOuterRadiusMinusZ()) / (2*mHalfLength);
396 G4double bROuter = (msol->GetOuterRadiusPlusZ()
397 + msol->GetOuterRadiusMinusZ()) / 2;
406 G4double pSPhi = msol->GetStartPhiAngle();
407 G4double pDPhi = msol->GetDeltaPhiAngle();
416 G4cout <<
" G4ParameterisationConsZ::ComputeDimensions()" <<
G4endl
417 <<
" pDz: " << pDz <<
G4endl;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GLOB_DLL std::ostream G4cout
void SetInnerRadiusPlusZ(G4double Rmin2)
void SetZHalfLength(G4double newDz)
void SetStartPhiAngle(G4double newSPhi, G4bool trig=true)
void SetOuterRadiusMinusZ(G4double Rmax1)
void SetOuterRadiusPlusZ(G4double Rmax2)
void SetDeltaPhiAngle(G4double newDPhi)
void SetInnerRadiusMinusZ(G4double Rmin1)
void ComputeDimensions(G4Cons &tubs, const G4int copyNo, const G4VPhysicalVolume *physVol) const override
G4double GetMaxParameter() const override
~G4ParameterisationConsPhi() override
G4ParameterisationConsPhi(EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *motherSolid, DivisionType divType)
void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol) const override
G4ParameterisationConsRho(EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *motherSolid, DivisionType divType)
void ComputeDimensions(G4Cons &tubs, const G4int copyNo, const G4VPhysicalVolume *physVol) const override
void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol) const override
~G4ParameterisationConsRho() override
G4double GetMaxParameter() const override
void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol) const override
G4double GetMaxParameter() const override
G4ParameterisationConsZ(EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *motherSolid, DivisionType divType)
~G4ParameterisationConsZ() override
void ComputeDimensions(G4Cons &tubs, const G4int copyNo, const G4VPhysicalVolume *physVol) const override
virtual void CheckParametersValidity()
void SetType(const G4String &type)
G4double CalculateWidth(G4double motherDim, G4int nDiv, G4double offset) const
G4VSolid * GetMotherSolid() const
G4int CalculateNDiv(G4double motherDim, G4double width, G4double offset) const
static const G4int verbose
void ChangeRotMatrix(G4VPhysicalVolume *physVol, G4double rotZ=0.0) const
~G4VParameterisationCons() override
G4VParameterisationCons(EAxis axis, G4int nCopies, G4double offset, G4double step, G4VSolid *msolid, DivisionType divType)
void SetTranslation(const G4ThreeVector &v)
virtual G4GeometryType GetEntityType() const =0