30#ifndef GarfieldPhysics_h
31#define GarfieldPhysics_h 1
48 double x_cm,
double y_cm,
double z_cm,
double dx,
double dy,
50 : fParticleName(particleName),
51 fEkin_MeV(ekin_eV / 1000000),
67 double getDX()
const {
return fdx; }
68 double getDY()
const {
return fdy; }
69 double getDZ()
const {
return fdz; }
72 std::string fParticleName;
73 double fEkin_MeV, fTime, fx_mm, fy_mm, fz_mm, fdx, fdy, fdz;
76class GarfieldPhysics {
83 void DoIt(std::string particleName,
double ekin_MeV,
double time,
double x_cm,
84 double y_cm,
double z_cm,
double dx,
double dy,
double dz);
86 void AddParticleName(
const std::string particleName,
double ekin_min_MeV,
87 double ekin_max_MeV, std::string program);
89 std::string program =
"garfield");
91 std::string program =
"garfield");
93 std::string program =
"garfield");
95 std::string program =
"garfield");
99 return fSecondaryParticles;
102 createSecondariesInGeant4 = flag;
105 return createSecondariesInGeant4;
121 std::string fIonizationModel =
"PAIPhot";
132 std::vector<GarfieldParticle> fSecondaryParticles;
134 bool createSecondariesInGeant4 =
false;
135 double fEnergyDeposit = 0.;
136 double fAvalancheSize = 0.;
std::pair< double, double > EnergyRange_MeV
std::map< const std::string, EnergyRange_MeV > MapParticlesEnergy
std::string getParticleName() const
double getEkin_MeV() const
GarfieldParticle(std::string particleName, double ekin_eV, double time, double x_cm, double y_cm, double z_cm, double dx, double dy, double dz)
double GetEnergyDeposit_MeV() const
double GetAvalancheSize() const
double GetMaxEnergyMeVParticle(std::string name, std::string program="garfield")
static GarfieldPhysics * GetInstance()
void SetIonizationModel(std::string model, bool useDefaults=true)
double GetMinEnergyMeVParticle(std::string name, std::string program="garfield")
void AddParticleName(const std::string particleName, double ekin_min_MeV, double ekin_max_MeV, std::string program)
std::string GetIonizationModel()
bool GetCreateSecondariesInGeant4() const
const std::vector< GarfieldParticle > & GetSecondaryParticles() const
void DoIt(std::string particleName, double ekin_MeV, double time, double x_cm, double y_cm, double z_cm, double dx, double dy, double dz)
bool FindParticleNameEnergy(std::string name, double ekin_MeV, std::string program="garfield")
void EnableCreateSecondariesInGeant4(bool flag)
bool FindParticleName(const std::string name, std::string program="garfield")
Generate tracks using Heed++.