23 #ifndef _G4TankSimulatorOG_G4TankFastCerenkov_h_
24 #define _G4TankSimulatorOG_G4TankFastCerenkov_h_
28 #include <utl/Point.h>
30 #include <sevt/Station.h>
33 #include <templates.hh>
34 #include <Randomize.hh>
35 #include <G4ThreeVector.hh>
36 #include <G4ParticleMomentum.hh>
38 #include <G4VContinuousProcess.hh>
39 #include <G4OpticalPhoton.hh>
40 #include <G4DynamicParticle.hh>
41 #include <G4Material.hh>
42 #include <G4PhysicsTable.hh>
43 #include <G4MaterialPropertiesTable.hh>
44 #include <G4PhysicsOrderedFreeVector.hh>
46 #include <G4Poisson.hh>
51 #define DOWN_IN_TANK 1
55 #define IN_INTERFACE_1 21
56 #define IN_INTERFACE_2 22
57 #define IN_INTERFACE_3 23
64 #define TARGET_FLOOR 4
68 namespace G4TankSimulatorOG {
70 class G4TankSimulator;
85 G4VParticleChange*
AlongStepDoIt(
const G4Track &,
const G4Step &);
94 const G4MaterialPropertyVector *)
const;
109 const G4double,
const G4double)
const;
static double fInterfaceRadius
static utl::TabulatedFunction fLinerSpecularSpike
G4double GetAverageNumberOfPhotons(const G4DynamicParticle *, const G4Material *, const G4MaterialPropertyVector *) const
G4bool PropagateInInterface(G4int &)
static double fTankHeight
static utl::TabulatedFunction fDomeRIndex
static double fPMTRadiuszSq
static void GetDataFromConstruction()
Detector description interface for PMT-related data.
void PropagateInTank(G4int)
G4bool TransitionToDome(G4int)
G4TankFastCerenkov(const G4String &processName="Cerenkov")
static utl::TabulatedFunction fLinerReflectivity
Class to hold collection (x,y) points and provide interpolation between them.
static G4ThreeVector fPMTPos[4]
void DiffuseScatterHorizontal(const G4ThreeVector &)
void LobeScatterVertical(const G4ThreeVector &)
void SetMaxNumPhotonsPerStep(const G4int)
G4double GetSphereIntersect(const G4ThreeVector &, const G4double) const
G4bool TransitionToInterface(G4int &)
G4double fSampledMomentum
static G4double fRoofPos[4]
static double fPMTRadiusz
G4bool IsApplicable(const G4ParticleDefinition &)
static double fDomeRadius
static double fTankRadius
static double fDomeRadiusSq
void LobeScatterHorizontal(const G4ThreeVector &)
G4ThreeVector fPhotonMomentum
G4double GetContinuousStepLimit(const G4Track &, G4double, G4double, G4double &)
G4PhysicsTable * fThePhysicsTable
static utl::TabulatedFunction fLinerBackscatter
G4bool fTrackSecondariesFirst
static double fInterfaceRadiusz
static utl::TabulatedFunction fInterfaceAbsLength
static utl::TabulatedFunction fLinerSpecularLobe
G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
static double fInterfaceRadiuszSq
class that handles Geant4 SD simulation
static double fTankRadiusSq
static utl::TabulatedFunction fDomeAbsLength
static double fSigmaAlpha
void DiffuseScatterVertical(const G4ThreeVector &)
G4double GetEllipsoidIntersect(const G4ThreeVector &, const G4double, const G4double) const
static double fInterfaceRadiusSq
G4PhysicsTable * GetPhysicsTable() const
static double fDomeRadiusz
G4ThreeVector fPhotonPolarization
void BuildThePhysicsTable()
static utl::TabulatedFunction fQE
static double fTankHalfHeight
void DumpPhysicsTable() const
static double fDomeRadiuszSq
static utl::TabulatedFunction fInterfaceRIndex
void SetTrackSecondariesFirst(const G4bool)
static double fTankThickness
G4bool PropagateInDome(G4int &)
G4ThreeVector fPhotonPosition
void SpikeScatter(const G4ThreeVector &)
static double fPMTRadiusSq
G4TankSimulator * fG4TankSimulator
static utl::TabulatedFunction fWaterAbsLength