23 #ifndef _G4XTankSimulatorAG_G4XTankFastCerenkov_h_
24 #define _G4XTankSimulatorAG_G4XTankFastCerenkov_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 G4XTankSimulatorAG {
83 G4VParticleChange*
AlongStepDoIt(
const G4Track &,
const G4Step &);
92 const G4MaterialPropertyVector *)
const;
107 const G4double,
const G4double)
const;
void LobeScatterVertical(const G4ThreeVector &)
G4ThreeVector fPhotonPolarization
G4bool fTrackSecondariesFirst
static double fPMTRadiuszSq
static double fPMTRadiusz
static double fPMTRadiusSq
G4bool TransitionToDome(G4int)
G4double GetEllipsoidIntersect(const G4ThreeVector &, const G4double, const G4double) const
static double fTankRadius
Detector description interface for PMT-related data.
static double fDomeRadiusSq
static utl::TabulatedFunction fLinerBackscatter
Class to hold collection (x,y) points and provide interpolation between them.
static double fTankHeight
static double fInterfaceRadiuszSq
void SetTrackSecondariesFirst(const G4bool)
G4double GetAverageNumberOfPhotons(const G4DynamicParticle *, const G4Material *, const G4MaterialPropertyVector *) const
static double fInterfaceRadius
G4ThreeVector fPhotonMomentum
static double fInterfaceRadiusSq
static double fTankHalfHeight
G4double GetContinuousStepLimit(const G4Track &, G4double, G4double, G4double &)
G4PhysicsTable * fThePhysicsTable
G4XTankFastCerenkov(const G4String &processName="Cerenkov")
static utl::TabulatedFunction fDomeAbsLength
void PropogateInTank(G4int)
static utl::TabulatedFunction fLinerReflectivity
static utl::TabulatedFunction fInterfaceRIndex
static double fDomeRadius
static double fTankRadiusSq
static void GetDataFromConstruction()
static utl::TabulatedFunction fLinerSpecularSpike
void LobeScatterHorizontal(const G4ThreeVector &)
static G4ThreeVector fPMTPos[4]
G4double GetSphereIntersect(const G4ThreeVector &, const G4double) const
static utl::TabulatedFunction fWaterAbsLength
static double fInterfaceRadiusz
G4PhysicsTable * GetPhysicsTable() const
void SetMaxNumPhotonsPerStep(const G4int)
static utl::TabulatedFunction fLinerSpecularLobe
G4bool PropogateInDome(G4int &)
static double fDomeRadiusz
G4bool TransitionToInterface(G4int &)
static utl::TabulatedFunction fDomeRIndex
static utl::TabulatedFunction fQE
G4bool IsApplicable(const G4ParticleDefinition &)
void BuildThePhysicsTable()
G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
static G4double fRoofPos[4]
void SpikeScatter(const G4ThreeVector &)
G4bool PropogateInInterface(G4int &)
static double fDomeRadiuszSq
G4double fSampledMomentum
void DiffuseScatterVertical(const G4ThreeVector &)
void DiffuseScatterHorizontal(const G4ThreeVector &)
static double fTankThickness
G4ThreeVector fPhotonPosition
void DumpPhysicsTable() const
static double fSigmaAlpha
static utl::TabulatedFunction fInterfaceAbsLength