44 #ifndef CEXMC_CHARGE_EXCHANGE_PRODUCTION_MODEL_HH 45 #define CEXMC_CHARGE_EXCHANGE_PRODUCTION_MODEL_HH 59 template <
typename OutputParticle >
79 template <
typename OutputParticle >
112 #ifdef CEXMC_USE_GENBOD 122 template <
typename OutputParticle >
130 template <
typename OutputParticle >
141 const_cast< const G4LorentzRotation & >(
142 theProjectile.GetTrafoToLab() ) );
155 std::sqrt( targetNucleusMomentum.mag2() +
158 targetNucleusMomentum, targetNucleusEnergy );
187 for ( CexmcAngularRangeList::iterator k(
angularRanges.begin() );
190 if ( cosTheta <= k->top && cosTheta > k->bottom )
192 k->top, k->bottom, k->index ) );
const G4String CexmcChargeExchangeInteractionName("Cexmc"+CexmcChargeExchangeProductionModelName)
G4LorentzVector nucleusOutputParticleLAB
std::vector< const G4LorentzVector *> CexmcPhaseSpaceInVector
const G4ParticleDefinition * nucleusParticle
G4ParticleDefinition * nucleusOutputParticle
std::vector< CexmcPhaseSpaceOutVectorElement > CexmcPhaseSpaceOutVector
const G4LorentzVector & Get4Momentum() const
const G4ParticleDefinition * incidentParticle
CexmcProductionModelData productionModelData
G4LorentzVector incidentParticleSCM
G4LorentzVector incidentParticleLAB
G4HadFinalState * ApplyYourself(const G4HadProjectile &projectile, G4Nucleus &targetNucleus)
G4LorentzVector outputParticleLAB
G4LorentzVector outputParticleSCM
const G4ParticleDefinition * outputParticle
G4LorentzVector nucleusParticleLAB
void SetStatusChange(G4HadFinalStateStatus aS)
static G4Proton * Definition()
G4LorentzVector nucleusOutputParticleSCM
~CexmcChargeExchangeProductionModel()
HepLorentzVector & boost(double, double, double)
G4ParticleDefinition * nucleusParticle
const G4ParticleDefinition * GetDefinition() const
void SetEnergyChange(G4double anEnergy)
G4ThreeVector GetFermiMomentum()
G4double GetKineticEnergy() const
G4ParticleDefinition * incidentParticle
G4double GetPDGMass() const
Hep3Vector boostVector() const
static G4PionMinus * Definition()
CexmcAngularRangeList angularRanges
static G4Neutron * Definition()
CexmcAngularRangeList triggeredAngularRanges
CexmcChargeExchangeProductionModel()
G4HadFinalState theParticleChange
HepLorentzVector & transform(const HepRotation &)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
virtual G4bool CheckKinematics(void)
const G4ParticleDefinition * nucleusOutputParticle
void SetParticles(const CexmcPhaseSpaceInVector &inVec_, const CexmcPhaseSpaceOutVector &outVec_)
G4double nucleusParticleMass
CexmcPhaseSpaceGenerator * phaseSpaceGenerator
void SetMomentumChange(const G4ThreeVector &aV)
const G4String CexmcChargeExchangeProductionModelName("ChargeExchange")
virtual G4double Generate(void)=0
G4LorentzVector nucleusParticleSCM
G4ParticleDefinition * outputParticle
CLHEP::HepLorentzVector G4LorentzVector