LArSoft
v06_85_00
Liquid Argon Software toolkit - http://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) | |
~OpBoundaryProcessSimple () | |
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 108 of file OpBoundaryProcessSimple.hh.
larg4::OpBoundaryProcessSimple::OpBoundaryProcessSimple | ( | const G4String & | processName = "OpBoundary" , |
G4ProcessType | type = fOptical |
||
) |
Definition at line 73 of file OpBoundaryProcessSimple.cxx.
References fCarTolerance, fTheStatus, and larg4::Undefined.
larg4::OpBoundaryProcessSimple::~OpBoundaryProcessSimple | ( | ) |
Definition at line 98 of file OpBoundaryProcessSimple.cxx.
|
inlineprivate |
Definition at line 163 of file OpBoundaryProcessSimple.hh.
Referenced by PostStepDoIt().
G4double larg4::OpBoundaryProcessSimple::GetMeanFreePath | ( | const G4Track & | , |
G4double | , | ||
G4ForceCondition * | condition | ||
) |
Definition at line 297 of file OpBoundaryProcessSimple.cxx.
|
inline |
Definition at line 177 of file OpBoundaryProcessSimple.hh.
References fTheStatus.
|
inline |
Definition at line 170 of file OpBoundaryProcessSimple.hh.
G4VParticleChange * larg4::OpBoundaryProcessSimple::PostStepDoIt | ( | const G4Track & | aTrack, |
const G4Step & | aStep | ||
) |
Definition at line 109 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 153 of file OpBoundaryProcessSimple.hh.
Referenced by OpBoundaryProcessSimple(), and PostStepDoIt().
|
private |
Definition at line 152 of file OpBoundaryProcessSimple.hh.
Referenced by GetStatus(), OpBoundaryProcessSimple(), and PostStepDoIt().
|
private |
Definition at line 155 of file OpBoundaryProcessSimple.hh.
Referenced by PostStepDoIt().