23 #ifndef _G4StationSimulatorOG_G4TankFastCerenkov_h_
24 #define _G4StationSimulatorOG_G4TankFastCerenkov_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 fTankHalfHeight
static utl::TabulatedFunction fInterfaceRIndex
void DiffuseScatterHorizontal(const G4ThreeVector &normal)
G4bool PropagateInInterface(G4int &flag)
static utl::TabulatedFunction fLinerReflectivity
G4ThreeVector fPhotonPosition
static double fDomeRadius
void PropagateInTank(G4int flag)
static double fTankHeight
Class to hold collection (x,y) points and provide interpolation between them.
static utl::TabulatedFunction fLinerBackscatter
static utl::TabulatedFunction fLinerSpecularSpike
static double fDomeRadiusz
static double fPMTRadiuszSq
G4double GetSphereIntersect(const G4ThreeVector &, const G4double) const
void SetMaxNumPhotonsPerStep(const G4int numPhotons)
static double fPMTRadiusz
void SpikeScatter(const G4ThreeVector &normal)
static double fTankRadius
void LobeScatterHorizontal(const G4ThreeVector &normal)
static utl::TabulatedFunction fWaterAbsLength
static double fInterfaceRadiusSq
static G4ThreeVector fPMTPos[4]
static void GetDataFromConstruction()
void DumpPhysicsTable() const
G4bool TransitionToDome(G4int flag)
static double fSigmaAlpha
G4double fSampledMomentum
static double fDomeRadiuszSq
static double fTankThickness
G4bool TransitionToInterface(G4int &flag)
static utl::TabulatedFunction fDomeRIndex
void BuildThePhysicsTable()
G4PhysicsTable * fPhysicsTable
static utl::TabulatedFunction fDomeAbsLength
static double fInterfaceRadius
static utl::TabulatedFunction fLinerSpecularLobe
static double fTankRadiusSq
static utl::TabulatedFunction fInterfaceAbsLength
G4bool IsApplicable(const G4ParticleDefinition &particle) override
class that handles Geant4 SD Station simulation adopted from G4TankSimulator
G4TankFastCerenkov(const G4String &processName="Cerenkov")
G4double GetAverageNumberOfPhotons(const G4DynamicParticle *, const G4Material *, G4MaterialPropertyVector *) const
struct particle_info particle[80]
static G4double fRoofPos[4]
G4bool PropagateInDome(G4int &flag)
G4bool fTrackSecondariesFirst
static utl::TabulatedFunction fQE
void SetTrackSecondariesFirst(const G4bool state)
void LobeScatterVertical(const G4ThreeVector &normal)
G4ThreeVector fPhotonPolarization
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step) override
static double fInterfaceRadiusz
G4ThreeVector fPhotonMomentum
static double fInterfaceRadiuszSq
static double fPMTRadiusSq
G4double GetContinuousStepLimit(const G4Track &, G4double, G4double, G4double &) override
virtual ~G4TankFastCerenkov()
void DiffuseScatterVertical(const G4ThreeVector &normal)
G4StationSimulator & fG4StationSimulator
G4double GetEllipsoidIntersect(const G4ThreeVector &, const G4double, const G4double) const
static double fDomeRadiusSq