78 if( aParticleDef == aPionPlus ||
79 aParticleDef == aPionMinus ||
80 aParticleDef == aKaonPlus ||
81 aParticleDef == aKaonMinus ||
82 aParticleDef == aKaon0Long ) {
94 if (numberOfSecondaries > 0) {
95 for (
G4int index=0; index < numberOfSecondaries; index++){
99 if (aSecondaryDef == aMuonPlus ||
100 aSecondaryDef == aMuonMinus ) {
105 }
else if (aSecondaryDef == aNeutrinoMu ||
106 aSecondaryDef == aAntiNeutrinoMu ) {
116 if (aMuon ==
nullptr)
return;
117 if (eneutrino==0||emu==0)
return;
126 if (numberOfSecondaries == 2 ) {
127 G4double scale = - (eneutrino - ( p_muon * p_neutrino )/(emu+emmu));
129 p_muon = scale * p_muon;
130 p_neutrino = emmu * p_neutrino;
131 spin = p_muon + p_neutrino;
133 scale = 2./(amass*amass-emmu*emmu);
136 if (aParticle->
GetCharge() < 0.0) spin = -spin;
153 <<
": Decay of mesons that can decay into a muon \n"
154 <<
" i.e. pi+, pi-, K+, K- and K0_long \n"
155 <<
" kinematics of daughters are dertermined by DecayChannels \n"
156 <<
" polarization of daughter particles are take into account. \n";
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
void SetPolarization(G4double polX, G4double polY, G4double polZ)
const G4DynamicParticle * GetParentParticle() const
static G4ParticleTable * GetParticleTable()
G4ThreeVector G4RandomDirection()
G4double GetPDGMass() const
G4ParticleDefinition * GetDefinition() const
virtual void DaughterPolarization(const G4Track &aTrack, G4DecayProducts *products) override
G4double GetCharge() const
const G4String & GetProcessName() const
G4PionDecayMakeSpin(const G4String &processName="Decay")
virtual void ProcessDescription(std::ostream &outFile) const override
G4ThreeVector GetMomentum() const
void SetProcessSubType(G4int)
G4double GetTotalEnergy() const
virtual ~G4PionDecayMakeSpin()
const G4DynamicParticle * GetDynamicParticle() const