7 #ifndef G4muDarkBremsstrahlungModel_h 8 #define G4muDarkBremsstrahlungModel_h 11 #include "G4VEmModel.hh" 12 #include "G4Material.hh" 13 #include "G4Element.hh" 14 #include "G4DataVector.hh" 15 #include "G4ParticleChangeForLoss.hh" 18 #include "TLorentzVector.h" 34 class G4ParticleChangeForLoss;
39 const G4double biasFactor,
40 const G4ParticleDefinition*
p =
nullptr,
41 const G4String& nam =
"eDBrem");
45 void Initialise(
const G4ParticleDefinition*,
const G4DataVector&)
override;
47 G4double ComputeCrossSectionPerAtom(
48 const G4ParticleDefinition*, G4double tkin, G4double
Z, G4double, G4double
cut, G4double
maxE = DBL_MAX)
override;
50 G4DataVector* ComputePartialSumSigma(
const G4Material* material, G4double tkin, G4double cut);
52 void SampleSecondaries(std::vector<G4DynamicParticle*>*,
53 const G4MaterialCutsCouple*,
54 const G4DynamicParticle*,
60 void MakePlaceholders();
64 frame GetMadgraphData(
double E0);
69 const G4Element* SelectRandomAtom(
const G4MaterialCutsCouple* couple);
72 void SetParticle(
const G4ParticleDefinition*
p);
74 static G4double chi(
double t,
void*
pp);
76 static G4double DsigmaDx(
double x,
void* pp);
95 std::map<double, std::vector<frame> >
mgdata;
std::map< double, std::vector< frame > > mgdata
std::vector< std::pair< double, int > > energies
G4ParticleDefinition * theAPrime
G4ParticleChangeForLoss * fParticleChange
std::vector< G4DataVector * > partialSumSigma
const G4ParticleDefinition * particle