19#ifndef BDSPHYSICSUTILITIES_H
20#define BDSPHYSICSUTILITIES_H
23#include "G4Version.hh"
25#include "parser/fastlist.h"
26#include "parser/physicsbiasing.h"
33class G4DynamicParticle;
34class G4GenericBiasingPhysics;
35class G4ParticleDefinition;
36class G4VModularPhysicsList;
38#if G4VERSION_NUMBER > 1049
41class G4CoupledTransportation;
42class G4Transportation;
53 G4bool
IsIon(
const G4ParticleDefinition* particle);
56 G4bool
IsIon(
const G4DynamicParticle* paritlce);
60 G4VModularPhysicsList*
BuildPhysics(
const G4String& physicsList, G4int verbosity = 1);
64 const std::set<std::string>& keys);
68 const std::set<std::string>& keys,
70 G4bool warnZeroParamsSet =
true,
71 const G4String& unitString =
"");
82 G4bool& beamDifferentFromDesignParticle);
89 G4double totalEnergyIn,
90 G4double kineticEnergyIn,
119#if G4VERSION_NUMBER > 1039
122 G4bool regular =
false,
124 G4bool emss =
false);
130 void SetRangeCuts(G4VModularPhysicsList* physicsList, G4int verbosity = 1);
136#if G4VERSION_NUMBER > 1049
148 std::pair<G4Transportation*, G4CoupledTransportation*>
FindTransportation(
const G4ParticleDefinition* particleDef);
Wrapper for particle definition.
List with Efficient Lookup.
Return either G4Tubs or G4CutTubs depending on flat face.
void SetRangeCuts(G4VModularPhysicsList *physicsList, G4int verbosity=1)
void ConstructBeamParticleG4(const G4String &name)
void PrintDefinedParticles()
std::pair< G4Transportation *, G4CoupledTransportation * > FindTransportation(const G4ParticleDefinition *particleDef)
Taken from Geant4 field01 example. Get the two possible transportation processes.
BDSParticleDefinition * ConstructParticleDefinition(const G4String &particleNameIn, G4double totalEnergyIn, G4double kineticEnergyIn, G4double momentumIn, G4double ffact=1)
void ConflictingParametersSet(const GMAD::Beam &beamDefinition, const std::set< std::string > &keys, G4int nSet, G4bool warnZeroParamsSet=true, const G4String &unitString="")
Throw an exception if too few or too many parameters are set for the supplied keys.
void PrintPrimaryParticleProcesses(const G4String &primaryParticleName)
void BuildMuonBiasing(G4VModularPhysicsList *physicsList)
Build muon splitting biasing and wrap the various processes in the physics list.
void CheckAndSetEnergyValidityRange()
void FixGeant105ThreshholdsForBeamParticle(const BDSParticleDefinition *particleDefinition)
Apply FixGeant105ThreshholdsForParticle to the beam particle definition.
void FixGeant105ThreshholdsForParticle(const G4ParticleDefinition *particleDefinition)
void ChangeLooperParameters(const G4ParticleDefinition *particleDef)
Taken from Geant4 field01 example. Set low values.
void ConstructExtendedParticleSet()
void ConstructDesignAndBeamParticle(const GMAD::Beam &beamDefinition, G4double ffact, BDSParticleDefinition *&designParticle, BDSParticleDefinition *&beamParticle, G4bool &beamDifferentFromDesignParticle)
G4int NBeamParametersSet(const GMAD::Beam &beamDefinition, const std::set< std::string > &keys)
Count how many out of the set of keys in a beam instance are set.
G4VModularPhysicsList * BuildPhysics(const G4String &physicsList, G4int verbosity=1)
G4bool IsIon(const G4ParticleDefinition *particle)
Whether a particle is an ion. A proton is counted NOT as an ion.
void ConstructMinimumParticleSet()
G4VModularPhysicsList * ChannellingPhysicsComplete(G4bool useEMD=false, G4bool regular=false, G4bool em4=false, G4bool emss=false)
Build the physics required for channelling to work correctly.
Parser namespace for GMAD language. Combination of Geant4 and MAD.