177 const G4Step* pStep = &aStep;
181 if (hStep) pStep = hStep;
184 (pStep->GetPostStepPoint()->GetStepStatus() == fGeomBoundary);
196 pStep->GetPreStepPoint() ->GetPhysicalVolume();
198 pStep->GetPostStepPoint()->GetPhysicalVolume();
223 G4ThreeVector theGlobalPoint = pStep->GetPostStepPoint()->GetPosition();
232 std::vector<G4Navigator*>::iterator iNav =
234 GetActiveNavigatorsIterator();
236 (iNav[hNavId])->GetGlobalExitNormal(theGlobalPoint,&valid);
244 ed <<
" G4OpBoundaryProcess/PostStepDoIt(): " 245 <<
" The Navigator reports that it returned an invalid normal" 247 G4Exception(
"G4OpBoundaryProcess::PostStepDoIt",
"OpBoun01",
249 "Invalid Surface Normal - Geometry must return valid surface normal");
253 #ifdef G4OPTICAL_DEBUG 255 ed <<
" G4OpBoundaryProcess/PostStepDoIt(): " 256 <<
" theGlobalNormal points in a wrong direction. " 258 ed <<
" The momentum of the photon arriving at interface (oldMomentum)" 259 <<
" must exit the volume cross in the step. " <<
G4endl;
260 ed <<
" So it MUST have dot < 0 with the normal that Exits the new volume (globalNormal)." <<
G4endl;
265 G4Exception(
"G4OpBoundaryProcess::PostStepDoIt",
"OpBoun02",
268 "Invalid Surface Normal - Geometry must return valid surface normal pointing in the right direction");
278 if (aMaterialPropertiesTable) {
279 Rindex = aMaterialPropertiesTable->
GetProperty(
"RINDEX");
318 if (Surface == NULL){
347 GetMaterialPropertiesTable();
349 if (aMaterialPropertiesTable) {
353 Rindex = aMaterialPropertiesTable->
GetProperty(
"RINDEX");
367 aMaterialPropertiesTable->
GetProperty(
"REFLECTIVITY");
369 aMaterialPropertiesTable->
GetProperty(
"REALRINDEX");
371 aMaterialPropertiesTable->
GetProperty(
"IMAGINARYRINDEX");
388 aMaterialPropertiesTable->
GetProperty(
"EFFICIENCY");
395 aMaterialPropertiesTable->
GetProperty(
"TRANSMITTANCE");
401 if (aMaterialPropertiesTable->
402 ConstPropertyExists(
"SURFACEROUGHNESS"))
404 GetConstProperty(
"SURFACEROUGHNESS");
408 aMaterialPropertiesTable->
GetProperty(
"SPECULARLOBECONSTANT");
417 aMaterialPropertiesTable->
GetProperty(
"SPECULARSPIKECONSTANT");
426 aMaterialPropertiesTable->
GetProperty(
"BACKSCATTERCONSTANT");
451 aMaterialPropertiesTable =
453 if (aMaterialPropertiesTable)
454 Rindex = aMaterialPropertiesTable->
GetProperty(
"RINDEX");
516 G4cerr <<
" Error: G4BoundaryProcess: illegal boundary type " <<
G4endl;
void DielectricDielectric()
G4double theSurfaceRoughness
const G4SurfaceType & GetType() const
G4MaterialPropertyVector * GetProperty(const char *key)
std::ostringstream G4ExceptionDescription
void BoundaryProcessVerbose(void) const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
G4OpticalSurface * OpticalSurface
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
G4double GetTotalMomentum() const
G4OpticalSurfaceModel GetModel() const
G4MaterialPropertyVector * PropertyPointer1
G4OpticalSurfaceFinish theFinish
static G4LogicalBorderSurface * GetSurface(const G4VPhysicalVolume *vol1, const G4VPhysicalVolume *vol2)
G4ThreeVector NewPolarization
static G4int GetHypNavigatorID()
G4OpBoundaryProcessStatus theStatus
G4ThreeVector OldMomentum
G4GLOB_DLL std::ostream G4cout
G4ThreeVector OldPolarization
G4double thePhotonMomentum
G4double theTransmittance
G4double Value(G4double theEnergy, size_t &lastidx) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4TransportationManager * GetTransportationManager()
G4OpticalSurfaceModel theModel
G4bool InvokeSD(const G4Step *step)
const G4String & GetName() const
G4ThreeVector NewMomentum
G4MaterialPropertyVector * PropertyPointer
void DielectricDichroic()
const G4ThreeVector & GetMomentumDirection() const
G4OpticalSurfaceFinish GetFinish() const
const G4ThreeVector & GetPolarization() const
G4LogicalVolume * GetMotherLogical() const
G4ParticleChange aParticleChange
G4SurfaceProperty * GetSurfaceProperty() const
G4MaterialPropertyVector * PropertyPointer2
G4ThreeVector theGlobalNormal
G4LogicalVolume * GetLogicalVolume() const
void CalculateReflectivity(void)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
static const G4Step * GetHyperStep()
G4GLOB_DLL std::ostream G4cerr
static G4LogicalSkinSurface * GetSurface(const G4LogicalVolume *vol)