76 : verbose(verb), nbins(bins), emin(e1),
emax(e2)
85 for(
G4int i=0; i<nmat; i++) {
delete couples[i];}
105 delete rangeElectron;
106 delete rangePositron;
109 delete invRangeElectron;
110 delete invRangePositron;
111 delete invRangeProton;
126 table = dedxElectron;
129 table = dedxPositron;
138 table = rangeElectron;
141 table = rangePositron;
150 table = invRangeElectron;
153 table = invRangePositron;
156 table = invRangeProton;
159 table = invRangeMuon;
169 void G4TablesForExtrapolator::Initialisation()
172 G4cout <<
"### G4TablesForExtrapolator::Initialisation" <<
G4endl;
174 currentParticle =
nullptr;
182 mass = charge2 = 0.0;
188 couples.resize(nmat,0);
191 for(
G4int i=0; i<nmat; ++i) {
197 dedxElectron = PrepareTable();
198 dedxPositron = PrepareTable();
199 dedxMuon = PrepareTable();
200 dedxProton = PrepareTable();
201 rangeElectron = PrepareTable();
202 rangePositron = PrepareTable();
203 rangeMuon = PrepareTable();
204 rangeProton = PrepareTable();
205 invRangeElectron = PrepareTable();
206 invRangePositron = PrepareTable();
207 invRangeMuon = PrepareTable();
208 invRangeProton = PrepareTable();
209 mscElectron = PrepareTable();
214 G4cout <<
"### G4TablesForExtrapolator Builds electron tables"
217 ComputeElectronDEDX(electron, dedxElectron);
222 G4cout <<
"### G4TablesForExtrapolator Builds positron tables"
225 ComputeElectronDEDX(positron, dedxPositron);
230 G4cout <<
"### G4TablesForExtrapolator Builds muon tables" <<
G4endl;
232 ComputeMuonDEDX(muonPlus, dedxMuon);
244 G4cout <<
"### G4TablesForExtrapolator Builds proton tables"
247 ComputeProtonDEDX(proton, dedxProton);
251 ComputeTrasportXS(electron, mscElectron);
260 for(
G4int i=0; i<nmat; ++i) {
271 void G4TablesForExtrapolator::ComputeElectronDEDX(
282 currentParticle = part;
286 G4cout <<
"G4TablesForExtrapolator::ComputeElectronDEDX for "
290 for(
G4int i=0; i<nmat; ++i) {
299 for(
G4int j=0; j<=nbins; ++j) {
306 <<
" e(MeV)= " << e/
MeV
307 <<
" dedx(Mev/cm)= " << dedx*
cm/
MeV
308 <<
" dedx(Mev.cm2/g)= "
335 currentParticle = part;
340 G4cout <<
"G4TablesForExtrapolator::ComputeMuonDEDX for "
345 for(
G4int i=0; i<nmat; ++i) {
353 for(
G4int j=0; j<=nbins; j++) {
362 <<
" e(MeV)= " << e/
MeV
363 <<
" dedx(Mev/cm)= " << dedx*
cm/
MeV
364 <<
" dedx(Mev/(g/cm2)= "
385 currentParticle = part;
390 G4cout <<
"G4TablesForExtrapolator::ComputeProtonDEDX for "
395 for(
G4int i=0; i<nmat; ++i) {
402 for(
G4int j=0; j<=nbins; j++) {
409 <<
" e(MeV)= " << e/
MeV
410 <<
" dedx(Mev/cm)= " << dedx*
cm/
MeV
432 currentParticle = part;
437 G4cout <<
"G4TablesForExtrapolator::ComputeProtonDEDX for "
442 for(
G4int i=0; i<nmat; ++i) {
449 for(
G4int j=0; j<=nbins; j++) {
455 G4cout <<
"j= " << j <<
" e(MeV)= " << e/
MeV
456 <<
" xs(1/mm)= " << xs*
mm <<
G4endl;
void BuildRangeTable(const G4PhysicsTable *dedxTable, G4PhysicsTable *rangeTable, G4bool isIonisation=false)
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
static G4MuonPlus * MuonPlus()
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
static constexpr double mm
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
static constexpr double cm2
const G4String & GetName() const
void push_back(G4PhysicsVector *)
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
G4double GetDensity() const
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
void FillSecondDerivatives()
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
static constexpr double cm
void PutValue(size_t index, G4double theValue)
static G4Proton * Proton()
void BuildInverseRangeTable(const G4PhysicsTable *rangeTable, G4PhysicsTable *invRangeTable, G4bool isIonisation=false)
G4double Energy(size_t index) const
static size_t GetNumberOfMaterials()
static const G4double emax
static G4Positron * Positron()
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
virtual G4double ComputeDEDX(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
G4double GetPDGMass() const
void SetCurrentCouple(const G4MaterialCutsCouple *)
static G4EmParameters * Instance()
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
static G4MuonMinus * MuonMinus()
static G4Electron * Electron()
static constexpr double MeV
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
static constexpr double pi
void SetPolarAngleLimit(G4double)