52 fEminusIonisation(0),fPIonisation(0),
53 fUse_forced_interaction(true),
54 fUse_eionisation(true),fUse_pionisation(true),
55 fUse_brem(true),fUse_compton(true),fUse_ms(true),
56 fUse_egain_fluctuation(true),fUse_peeffect(true),
57 fEmin_adj_models(1.*
keV), fEmax_adj_models(1.*
MeV),
58 fCS_biasing_factor_compton(1.),fCS_biasing_factor_brem(1.),
59 fCS_biasing_factor_ionisation(1.),fCS_biasing_factor_PEeffect(1.)
233 if (fUse_brem || fUse_peeffect ||fUse_compton)
237 if (fUse_eionisation) {
242 if (fUse_pionisation) {
250 if (fUse_brem && fUse_eionisation)
281 if (fUse_eionisation) {
288 fCS_biasing_factor_ionisation);
289 theeInverseIonisationProjToProjCase =
291 theeInverseIonisationModel);
292 theeInverseIonisationProdToProjCase =
294 theeInverseIonisationModel);
304 if (fUse_brem && fUse_eionisation) {
309 fCS_biasing_factor_brem);
311 true,
"Inv_eBrem",theeInverseBremsstrahlungModel);
313 false,
"Inv_eBrem1",theeInverseBremsstrahlungModel);
317 if (!fUse_forced_interaction) theeInverseBremsstrahlungProdToProjCase
319 theeInverseBremsstrahlungModel);
322 if (fUse_forced_interaction){
323 theForcedInteractionForGamma =
326 theeInverseBremsstrahlungModel);
346 if (!fUse_forced_interaction) theeInverseComptonProjToProjCase =
349 theeInverseComptonModel);
350 if (fUse_forced_interaction){
351 if (!theForcedInteractionForGamma ) theForcedInteractionForGamma =
353 theForcedInteractionForGamma->
354 RegisterAdjointComptonModel(theeInverseComptonModel);
370 fCS_biasing_factor_PEeffect);
372 theInversePhotoElectricModel);
383 if (fUse_pionisation) {
390 "Inv_pIon",thepInverseIonisationModel);
392 "Inv_pIon1",thepInverseIonisationModel);
410 if (particleName ==
"e-") {
411 if (fUse_ms && fUse_eionisation) pmanager->
AddProcess(theeminusMS);
412 if (fUse_eionisation){
417 if (fUse_brem && fUse_eionisation) {
418 pmanager->
AddProcess(theeminusBremsstrahlung);
420 RegisterEnergyLossProcess(theeminusBremsstrahlung,particle);
423 if (fUse_ms && fUse_eionisation) {
427 if (fUse_eionisation) {
431 if (fUse_brem && fUse_eionisation) {
437 if (fUse_ms && fUse_eionisation) {
441 if (fUse_eionisation) {
445 if (fUse_brem && fUse_eionisation) {
452 if (particleName ==
"adj_e-") {
454 if (fUse_eionisation ) {
457 fUse_egain_fluctuation);
461 pmanager->
AddProcess(theContinuousGainOfEnergy);
477 pmanager->
AddProcess(theAlongStepWeightCorrection);
482 if (fUse_eionisation) {
483 pmanager->
AddProcess(theeInverseIonisationProjToProjCase);
484 pmanager->
AddProcess(theeInverseIonisationProdToProjCase);
492 if (fUse_brem && fUse_eionisation) {
493 pmanager->
AddProcess(theeInverseBremsstrahlungProjToProjCase);
496 theeInverseBremsstrahlungProjToProjCase,
501 pmanager->
AddProcess(theeInverseComptonProdToProjCase);
512 if (fUse_pionisation) {
513 pmanager->
AddProcess(thepInverseIonisationProdToProjCase);
518 if (fUse_ms && fUse_eionisation) {
526 if(particleName ==
"adj_gamma") {
528 if (!fUse_forced_interaction){
531 pmanager->
AddProcess(theAlongStepWeightCorrection);
535 if (fUse_brem && fUse_eionisation) {
536 pmanager->
AddProcess(theeInverseBremsstrahlungProdToProjCase);
539 theeInverseBremsstrahlungProdToProjCase,
550 if (theForcedInteractionForGamma) {
551 pmanager->
AddProcess(theForcedInteractionForGamma);
561 if (particleName ==
"gamma") {
565 RegisterEmProcess(theComptonScattering,particle);
570 RegisterEmProcess(thePEEffect,particle);
572 if (fUse_gamma_conversion) {
577 if (particleName ==
"e+" && fUse_gamma_conversion) {
584 pmanager->
AddProcess(theeplusMultipleScattering);
605 if (particleName ==
"proton" && fUse_pionisation) {
606 if (fUse_ms && fUse_pionisation) pmanager->
AddProcess(thepMS);
608 if (fUse_pionisation){
615 if (fUse_ms && fUse_pionisation) {
620 if (fUse_pionisation) {
626 if (fUse_ms && fUse_pionisation) {
631 if (fUse_pionisation) {
638 if (particleName ==
"adj_proton" && fUse_pionisation) {
640 if (fUse_pionisation ) {
643 fUse_egain_fluctuation);
646 pmanager->
AddProcess(theContinuousGainOfEnergy);
663 pmanager->
AddProcess(theAlongStepWeightCorrection);
668 if (fUse_pionisation) {
669 pmanager->
AddProcess(thepInverseIonisationProjToProjCase);
672 thepInverseIonisationProjToProjCase,
676 if (fUse_ms && fUse_pionisation) {
710 G4cout <<
"G4AdjointPhysicsList::SetCuts:";
static G4Geantino * GeantinoDefinition()
static G4AdjointSimManager * GetInstance()
static G4AdjointGamma * AdjointGamma()
static G4Electron * ElectronDefinition()
static G4KaonPlus * KaonPlusDefinition()
static G4AdjointGamma * AdjointGammaDefinition()
static G4MuonPlus * MuonPlusDefinition()
static constexpr double mm
void SetProcessManager(G4ProcessManager *aProcessManager)
void ConstructAdjointParticles()
void SetCutValue(G4double aCut, const G4String &pname)
void SetProcessOrderingToFirst(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
virtual G4bool IsApplicable(const G4ParticleDefinition &)
virtual void ConstructParticle()
static G4KaonMinus * KaonMinusDefinition()
void SetNewDisplacementFlag(G4bool)
static G4Proton * ProtonDefinition()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4KaonZero * KaonZeroDefinition()
static G4AntiKaonZero * AntiKaonZeroDefinition()
static G4AdjointElectron * AdjointElectron()
static G4KaonZeroShort * KaonZeroShortDefinition()
void SetNewDisplacementFlag(G4bool)
virtual void ConstructProcess()
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
static G4AntiProton * AntiProtonDefinition()
void SetLowEnergyLimit(G4double aVal)
static G4AntiNeutron * AntiNeutronDefinition()
static G4PionZero * PionZeroDefinition()
const G4String & GetParticleName() const
static G4AdjointProton * AdjointProtonDefinition()
virtual ~G4AdjointPhysicsList()
void SetHighEnergyLimit(G4double aVal)
void RegisterAdjointParticle(G4ParticleDefinition *aPartDef)
void SetLossFluctuationFlag(bool aBool)
void SetDirectEnergyLossProcess(G4VEnergyLossProcess *aProcess)
void DumpCutValuesTable(G4int flag=1)
G4GLOB_DLL std::ostream G4cout
static G4PionMinus * PionMinusDefinition()
void SetLossFluctuations(G4bool val)
static G4KaonZeroLong * KaonZeroLongDefinition()
void SetVerboseLevel(G4int value)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
static G4NeutrinoE * NeutrinoEDefinition()
void SetDirectParticle(G4ParticleDefinition *p)
static G4AntiNeutrinoMu * AntiNeutrinoMuDefinition()
static G4PionPlus * PionPlusDefinition()
static G4Proton * Proton()
void SetUseMatrix(G4bool aBool)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
void SetDirectProcess(G4VEmProcess *aProcess)
static G4Positron * PositronDefinition()
static G4EtaPrime * EtaPrimeDefinition()
void SetLossFluctuations(G4bool val)
static G4AdjointProton * AdjointProton()
G4ProcessManager * GetProcessManager() const
Definition of the G4AdjointPhysicsList class.
static G4AdjointElectron * AdjointElectronDefinition()
void ConsiderParticleAsPrimary(const G4String &particle_name)
void RegisterAdjointBremModel(G4VEmAdjointModel *aAdjointBremModel)
virtual void SetCSBiasingFactor(G4double aVal)
static G4MuonMinus * MuonMinusDefinition()
void AddEmModel(G4int order, G4VEmModel *, const G4Region *region=nullptr)
G4eIonisation * fEminusIonisation
std::vector< G4InuclElementaryParticle >::iterator particleIterator
static G4ChargedGeantino * ChargedGeantinoDefinition()
static G4Electron * Electron()
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
static constexpr double MeV
static G4AntiNeutrinoE * AntiNeutrinoEDefinition()
static G4OpticalPhoton * OpticalPhotonDefinition()
static G4NeutrinoMu * NeutrinoMuDefinition()
static constexpr double keV
static G4Neutron * NeutronDefinition()
static G4AdjointCSManager * GetAdjointCSManager()
Definition of the G4AdjointPhysicsMessenger class.
G4hIonisation * fPIonisation
static G4Eta * EtaDefinition()
static G4Gamma * GammaDefinition()