LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Discrete process for reflection and diffusion at optical interfaces. More...
#include "OpBoundaryProcessSimple.hh"
Public Member Functions | |
OpBoundaryProcessSimple (const G4String &processName="OpBoundary", G4ProcessType type=fOptical) | |
G4bool | IsApplicable (const G4ParticleDefinition &aParticleType) |
G4double | GetMeanFreePath (const G4Track &, G4double, G4ForceCondition *condition) |
G4VParticleChange * | PostStepDoIt (const G4Track &aTrack, const G4Step &aStep) |
OpBoundaryProcessSimpleStatus | GetStatus () const |
Private Member Functions | |
G4bool | G4BooleanRand (const G4double prob) const |
Private Attributes | |
OpBoundaryProcessSimpleStatus | fTheStatus |
G4double | fCarTolerance |
int | fVerbosity |
Discrete process for reflection and diffusion at optical interfaces.
G4VDiscreteProcess
This class invokes a simplified model of optical reflections at boundaries between different materials. The relevant reflectivities are ultimately read from detinfo::LArProperties
via larg4::MaterialPropertiesLoader
.
The required parameters are total reflectance (detinfo::LArProperties::SurfaceReflectances()
) and ratio of diffuse to specular reflectance (detinfo::LArProperties::SurfaceReflectanceDiffuseFractions()
). Each photon crossing a boundary with a defined reflectance is randomly either reflected or absorbed and killed according to the supplied probability.
Every reflected photon with a defined diffuse reflection fraction is then randomly either diffusely or specularly reflected according to the supplied probability. All materials with no defined reflectance are assumed to be black and absorb all incident photons.
This physics process is loaded in larg4::OpticalPhysics
physics constructor.
This class is based on the G4OpBoundaryProcess
class in Geant4 and was adapted for LArSoft by Ben Jones, MIT, March 2010.
Definition at line 102 of file OpBoundaryProcessSimple.hh.
larg4::OpBoundaryProcessSimple::OpBoundaryProcessSimple | ( | const G4String & | processName = "OpBoundary" , |
G4ProcessType | type = fOptical |
||
) |
Definition at line 67 of file OpBoundaryProcessSimple.cxx.
References fCarTolerance, fTheStatus, and larg4::Undefined.
|
inlineprivate |
Definition at line 132 of file OpBoundaryProcessSimple.hh.
Referenced by PostStepDoIt().
G4double larg4::OpBoundaryProcessSimple::GetMeanFreePath | ( | const G4Track & | , |
G4double | , | ||
G4ForceCondition * | condition | ||
) |
Definition at line 234 of file OpBoundaryProcessSimple.cxx.
|
inline |
Definition at line 143 of file OpBoundaryProcessSimple.hh.
References fTheStatus.
|
inline |
Definition at line 138 of file OpBoundaryProcessSimple.hh.
G4VParticleChange * larg4::OpBoundaryProcessSimple::PostStepDoIt | ( | const G4Track & | aTrack, |
const G4Step & | aStep | ||
) |
Definition at line 82 of file OpBoundaryProcessSimple.cxx.
References fCarTolerance, fTheStatus, fVerbosity, G4BooleanRand(), larg4::NotAtBoundary, sim::LArG4Parameters::OpVerbosity(), larg4::SimpleAbsorbed, larg4::SimpleAbsorbedNoRefl, larg4::SimpleDiffuse, larg4::SimpleSpecular, larg4::StepTooSmall, and larg4::Undefined.
|
private |
Definition at line 127 of file OpBoundaryProcessSimple.hh.
Referenced by OpBoundaryProcessSimple(), and PostStepDoIt().
|
private |
Definition at line 126 of file OpBoundaryProcessSimple.hh.
Referenced by GetStatus(), OpBoundaryProcessSimple(), and PostStepDoIt().
|
private |
Definition at line 129 of file OpBoundaryProcessSimple.hh.
Referenced by PostStepDoIt().