예제 #1
0
 //Pure
 public static Tuple <Atom, Particle> ElectronCaputre(Atom Atom, FRandom Rand)
 {
     return(new Tuple <Atom, Particle>(AtomCreator(Atom.AtomicNumber - 1, Atom.MassNumber), VectorFunctions.SingularEjection(new ElectronNeutrino(1), Rand)));
 }
예제 #2
0
 //Pure
 public static Tuple <Photon, Photon> Annialation(Particles.Particle Particle, Particles.Particle AntiParticle, FRandom Rand) // Simple collision
 {
     return(VectorFunctions.OppositeEjections(CreateAnnialationPhoton(Particle, AntiParticle), CreateAnnialationPhoton(Particle, AntiParticle), Rand));
 }
예제 #3
0
 //Pure
 public static Tuple <Particle, Particle> PairProductionPhoton(Photon Photon, FRandom Rand)
 {
     //This is all one line, it has been split onto multiple lines for readability
     return(FrequencyToEnergy(Photon) >= MassToEnergy(new Proton(1).RestMass) ? VectorFunctions.OppositeEjections(CreatePairproductionOutputGreaterThanProtonRestMass(Photon), CreatePairproductionOutputGreaterThanProtonRestMass(Photon), Rand): VectorFunctions.OppositeEjections(CreatePairproductionOutputLessThanProtonRestMass(Photon), CreatePairproductionOutputLessThanProtonRestMass(Photon), Rand));
 }
예제 #4
0
        //Need to add proton decay

        public static Tuple <Particle, Particle> ElectrostaticRepulsion <T>(T P1, T P2, FRandom Rand, Vector3D StartingPositionParticle1, Vector3D StartingPositionParticle2) where T : Particle
        {
            return(new Tuple <Particle, Particle>((T)Activator.CreateInstance(P1.GetType(), VectorFunctions.AcelerationOfParticlesFromElectrostaticForce(P1, P2, StartingPositionParticle1, StartingPositionParticle2), VectorFunctions.CreateOpposite(VectorFunctions.VectorBetween(StartingPositionParticle1, StartingPositionParticle2)).Item2), (T)Activator.CreateInstance(P2.GetType(), VectorFunctions.AcelerationOfParticlesFromElectrostaticForce(P2, P1, StartingPositionParticle1, StartingPositionParticle2), VectorFunctions.VectorBetween(StartingPositionParticle1, StartingPositionParticle2))));
        }