18#ifndef BDSPHYSICSUTILITIES_H
19#define BDSPHYSICSUTILITIES_H
22#include "G4Version.hh"
24#include "parser/fastlist.h"
25#include "parser/physicsbiasing.h"
32class G4DynamicParticle;
33class G4GenericBiasingPhysics;
34class G4ParticleDefinition;
35class G4VModularPhysicsList;
37#if G4VERSION_NUMBER > 1049
40class G4CoupledTransportation;
41class G4Transportation;
52 G4bool
IsIon(
const G4ParticleDefinition* particle);
55 G4bool
IsIon(
const G4DynamicParticle* particle);
59 G4VModularPhysicsList*
BuildPhysics(
const G4String& physicsList, G4int verbosity = 1);
63 const std::set<std::string>& keys);
67 const std::set<std::string>& keys,
69 G4bool warnZeroParamsSet =
true,
70 const G4String& unitString =
"");
81 G4bool& beamDifferentFromDesignParticle);
88 G4double totalEnergyIn,
89 G4double kineticEnergyIn,
124#if G4VERSION_NUMBER > 1039
127 G4bool regular =
false,
129 G4bool emss =
false);
135 void SetRangeCuts(G4VModularPhysicsList* physicsList, G4int verbosity = 1);
141#if G4VERSION_NUMBER > 1049
153 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 ExtendPionDecayChannels(G4VModularPhysicsList *physicsList)
Extend the default pi+- decay channels in Geant4.
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 TurnOffMuonDecay()
Set mu+- as stable so they won't decay.
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.