23 #ifndef _G4StationSimulatorOG_G4StationFastCerenkov_h_
24 #define _G4StationSimulatorOG_G4StationFastCerenkov_h_
27 #include <utl/Point.h>
28 #include <sevt/Station.h>
31 #include <templates.hh>
32 #include <Randomize.hh>
33 #include <G4ThreeVector.hh>
34 #include <G4ParticleMomentum.hh>
36 #include <G4VContinuousProcess.hh>
37 #include <G4OpticalPhoton.hh>
38 #include <G4DynamicParticle.hh>
39 #include <G4Material.hh>
40 #include <G4PhysicsTable.hh>
41 #include <G4MaterialPropertiesTable.hh>
42 #include <G4PhysicsOrderedFreeVector.hh>
44 #include <G4Poisson.hh>
47 namespace G4StationSimulatorOG {
49 class G4StationSimulator;
61 {
return particle.GetPDGCharge(); }
71 G4VParticleChange*
AlongStepDoIt(
const G4Track& track,
const G4Step& step)
override;
79 G4MaterialPropertyVector*)
const;
98 const G4double,
const G4double)
const;
static double fDomeRadius
void SpikeScatter(const G4ThreeVector &normal)
static double fPMTRadiuszSq
void DumpPhysicsTable() const
static double fInterfaceThick_SPMT
G4bool PropagateInInterface(G4int &flag)
static double fDomeRadius_SPMT
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step) override
void DiffuseScatterVertical(const G4ThreeVector &normal)
static utl::TabulatedFunction fInterfaceAbsLength
static double fDomeThick_SPMT
Class to hold collection (x,y) points and provide interpolation between them.
G4bool TransitionToInterface(G4int &flag)
static double fInterfaceRadiusSq
static double fPMTActiveRadius_SPMT_Sq
static G4ThreeVector fPMTPos[5]
static double fInterfaceRadius_SPMT_Sq
static double fPMTActiveRadius_SPMT
static utl::TabulatedFunction fLinerBackscatter
static double fInterfaceRadiuszSq
static double fPMTThick_SPMT
static utl::TabulatedFunction fLinerReflectivity
static double fPMTRadius_SPMT
G4bool fTrackSecondariesFirst
void LobeScatterVertical(const G4ThreeVector &normal)
static double fTankHeight
virtual ~G4StationFastCerenkov()
static utl::TabulatedFunction fWaterAbsLength
G4ThreeVector fPhotonMomentum
static double fInterfaceRadius_SPMT
void SetTrackSecondariesFirst(const G4bool state)
static double fSigmaAlpha
G4StationFastCerenkov(const G4String &processName="Cerenkov")
G4double GetAverageNumberOfPhotons(const G4DynamicParticle *, const G4Material *, G4MaterialPropertyVector *) const
static double fInterfaceRadius
G4double GetContinuousStepLimit(const G4Track &, G4double, G4double, G4double &) override
static utl::TabulatedFunction fQE_SPMT
static double fPMTRadiusz
void DiffuseScatterHorizontal(const G4ThreeVector &normal)
G4StationSimulator & fG4StationSimulator
G4bool TransitionToDome(G4int flag)
static double fTankRadius
void PropagateInTank(G4int flag)
static G4double fRoofPos[5]
G4double GetSphereIntersect(const G4ThreeVector &, const G4double) const
G4bool IsApplicable(const G4ParticleDefinition &particle) override
static void GetDataFromConstruction()
G4double GetEllipsoidIntersect(const G4ThreeVector &, const G4double, const G4double) const
static double fPMTRadiusSq
static utl::TabulatedFunction fDomeRIndex
G4ThreeVector fPhotonPosition
G4ThreeVector fPhotonPolarization
G4double fSampledMomentum
void BuildThePhysicsTable()
static double fDomeRadiusz
static utl::TabulatedFunction fQE
static utl::TabulatedFunction fInterfaceRIndex
class that handles Geant4 SD Station simulation adopted from G4TankSimulator
G4PhysicsTable * fPhysicsTable
struct particle_info particle[80]
static utl::TabulatedFunction fLinerSpecularSpike
void LobeScatterHorizontal(const G4ThreeVector &normal)
static double fDomeRadiusSq
static double fTankHalfHeight
static double fTankThickness
static double fPMTRadius_SPMT_Sq
static utl::TabulatedFunction fLinerSpecularLobe
void SetMaxNumPhotonsPerStep(const G4int numPhotons)
static utl::TabulatedFunction fDomeAbsLength
static double fDomeRadiuszSq
G4bool PropagateInDome(G4int &flag)
static double fInterfaceRadiusz
static double fTankRadiusSq
static double fDomeRadius_SPMT_Sq