5 #include <fwk/RandomEngineRegistry.h>
7 #include <sdet/Station.h>
10 #include <utl/TabulatedFunction.h>
12 #include <CLHEP/Random/RandFlat.h>
15 #include <G4TrackingManager.hh>
16 #include <G4TrackStatus.hh>
17 #include <G4OpticalPhoton.hh>
21 using namespace G4TankSimulatorASCII;
22 using CLHEP::RandFlat;
25 G4TankStackingAction::G4TankStackingAction() :
26 fCurrentDetectorStation(0)
29 &RandomEngineRegistry::GetInstance().Get(RandomEngineRegistry::eDetector);
33 G4ClassificationOfNewTrack
37 if ( aTrack->GetParentID() ==1 && aTrack->GetCreatorProcess()->GetProcessName() ==
"Decay")
40 if (aTrack->GetDefinition()->GetParticleName()==
"e-" || aTrack->GetDefinition()->GetParticleName()==
"e+" )
54 if (aTrack->GetDefinition() != G4OpticalPhoton::OpticalPhoton())
59 const double energy = aTrack->GetKineticEnergy() *
static double MichelElectronKE
Detector description interface for Station-related data.
RandomEngineType & GetEngine()
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track *aTrack)
const sdet::Station * fCurrentDetectorStation
const PMT & GetPMT(const int id) const
Get specified PMT by id.
double GetCollectionEfficiency() const
Collection efficiency.
double fCollectionEfficiency
utl::RandomEngine * fRandomEngine
utl::TabulatedFunction fQuantumEff
static double MichelElectronTheta
double InterpolateY(const double x, const unsigned int polyDegree) const
Interpolate the Y value with a polyDegree polynomial.
const utl::TabulatedFunction & GetQuantumEfficiency() const
Quantum efficiency.
static double MichelElectronZ
void SetStation(const sdet::Station *const station)