68 , fDirection(direction)
84 if(physParam !=
nullptr)
97 auto sphereSolid = (
G4Sphere*) (solid);
102 if(fDirection ==
fFlux_InOut || fDirection == dirFlag)
122 G4double localdirL2 = localdir.
x() * localdir.
x() +
123 localdir.
y() * localdir.
y() +
124 localdir.
z() * localdir.
z();
128 G4double localR2 = localpos1.
x() * localpos1.
x() +
129 localpos1.
y() * localpos1.
y() +
130 localpos1.
z() * localpos1.
z();
132 (localdir.
x() * localpos1.
x() + localdir.
y() * localpos1.
y() +
133 localdir.
z() * localpos1.
z()) /
134 std::sqrt(localdirL2) / std::sqrt(localR2);
135 if(anglefactor < 0.0)
138 G4double current = 1.0 / anglefactor;
143 G4double radi = sphereSolid->GetInnerRadius();
144 G4double dph = sphereSolid->GetDeltaPhiAngle() / radian;
145 G4double stth = sphereSolid->GetStartThetaAngle() / radian;
146 G4double enth = stth + sphereSolid->GetDeltaThetaAngle() / radian;
147 current /= radi * radi * dph * (-std::cos(enth) + std::cos(stth));
151 EvtMap->
add(index, current);
172 G4double localR2 = localpos1.
x() * localpos1.
x() +
173 localpos1.
y() * localpos1.
y() +
174 localpos1.
z() * localpos1.
z();
194 G4double localR2 = localpos2.
x() * localpos2.
x() +
195 localpos2.
y() * localpos2.
y() +
196 localpos2.
z() * localpos2.
z();
228 for(
const auto& [copy, flux] : *(EvtMap->
GetMap()))
230 G4cout <<
" copy no.: " << copy
251 G4String msg =
"Invalid unit [" + unit +
"] (Current unit is [" +
const G4double kCarTolerance
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GLOB_DLL std::ostream G4cout
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
void AddHitsCollection(G4int HCID, G4VHitsCollection *aHC)
G4VSolid * GetSolid() const
const G4AffineTransform & GetTopTransform() const
G4bool ProcessHits(G4Step *, G4TouchableHistory *) override
G4int IsSelectedSurface(G4Step *, G4Sphere *)
virtual void DefineUnitAndCategory()
void Initialize(G4HCofThisEvent *) override
G4PSSphereSurfaceFlux(G4String name, G4int direction, G4int depth=0)
virtual void SetUnit(const G4String &unit)
G4double GetInnerRadius() const
G4StepStatus GetStepStatus() const
const G4VTouchable * GetTouchable() const
const G4ThreeVector & GetPosition() const
const G4ThreeVector & GetMomentumDirection() const
const G4TouchableHandle & GetTouchableHandle() const
G4VPhysicalVolume * GetPhysicalVolume() const
G4double GetWeight() const
G4StepPoint * GetPreStepPoint() const
G4StepPoint * GetPostStepPoint() const
virtual G4VSolid * ComputeSolid(const G4int, G4VPhysicalVolume *)
G4LogicalVolume * GetLogicalVolume() const
virtual G4VPVParameterisation * GetParameterisation() const =0
virtual G4int GetIndex(G4Step *)
const G4String & GetUnit() const
G4MultiFunctionalDetector * detector
G4int GetCollectionID(G4int)
void CheckAndSetUnit(const G4String &unit, const G4String &category)
G4double GetUnitValue() const
virtual void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
size_t add(const G4int &key, U *&aHit) const
virtual const G4NavigationHistory * GetHistory() const