aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/material/Particle.java
blob: 6cc0f878d6642b254b4c716f68fd91235d6c2bf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package gtPlusPlus.core.material;

import gtPlusPlus.api.objects.data.AutoMap;

public class Particle {

	public static final Particle GRAVITON;
	
	public static final Particle UP;
	public static final Particle DOWN;
	public static final Particle CHARM;
	public static final Particle STRANGE;
	public static final Particle TOP;
	public static final Particle BOTTOM;

	public static final Particle ELECTRON;
	public static final Particle ELECTRON_NEUTRINO;
	public static final Particle MUON;
	public static final Particle MUON_NEUTRINO;
	public static final Particle TAU;
	public static final Particle TAU_NEUTRINO;

	public static final Particle GLUON;
	public static final Particle PHOTON;
	public static final Particle Z_BOSON;
	public static final Particle W_BOSON;
	public static final Particle HIGGS_BOSON;

	public static final Particle PROTON;
	public static final Particle NEUTRON;
	public static final Particle LAMBDA;
	public static final Particle OMEGA;
	
	public static final Particle PION;
	public static final Particle ETA_MESON;
	
	public static final AutoMap<Particle> aMap = new AutoMap<Particle>();
	
	static {
		
		/*
		 * Standard Model of Physics
		 */
		
		//I exist, because I must.
		GRAVITON = new Particle(ElementaryGroup.BOSON, "Graviton");		
		
		//Quarks
		UP = new Particle(ElementaryGroup.QUARK, "Up");
		DOWN = new Particle(ElementaryGroup.QUARK, "Down");
		CHARM = new Particle(ElementaryGroup.QUARK, "Charm");
		STRANGE = new Particle(ElementaryGroup.QUARK, "Strange");
		TOP = new Particle(ElementaryGroup.QUARK, "Top");
		BOTTOM = new Particle(ElementaryGroup.QUARK, "Bottom");

		//Leptons
		ELECTRON = new Particle(ElementaryGroup.LEPTON, "Electron");
		MUON = new Particle(ElementaryGroup.LEPTON, "Muon");
		TAU = new Particle(ElementaryGroup.LEPTON, "Tau");
		ELECTRON_NEUTRINO = new Particle(ElementaryGroup.LEPTON, "Electron Neutrino");
		MUON_NEUTRINO = new Particle(ElementaryGroup.LEPTON, "Muon Neutrino");
		TAU_NEUTRINO = new Particle(ElementaryGroup.LEPTON, "Tau Neutrino");

		//Bosons
		GLUON = new Particle(ElementaryGroup.BOSON, "Gluon");
		PHOTON = new Particle(ElementaryGroup.BOSON, "Photon");
		Z_BOSON = new Particle(ElementaryGroup.BOSON, "Z Boson");
		W_BOSON = new Particle(ElementaryGroup.BOSON, "W Boson");
		HIGGS_BOSON = new Particle(ElementaryGroup.BOSON, "Higgs Boson");
		
		/*
		 * Composite Particles
		 */
		
		//Baryons
		PROTON = new Particle(ElementaryGroup.BARYON, "Proton", new Particle[] {UP, UP, DOWN});
		NEUTRON = new Particle(ElementaryGroup.BARYON, "Neutron", new Particle[] {UP, DOWN, DOWN});
		LAMBDA = new Particle(ElementaryGroup.BARYON, "Lambda", new Particle[] {UP, DOWN, STRANGE});
		OMEGA = new Particle(ElementaryGroup.BARYON, "Omega", new Particle[] {STRANGE, STRANGE, STRANGE});
		
		//Mesons
		PION = new Particle(ElementaryGroup.MESON, "Pion", new Particle[] {MUON, MUON_NEUTRINO});
		ETA_MESON = new Particle(ElementaryGroup.MESON, "ETA Meson", new Particle[] {PION, PION, PION});		
		
	}	
	
	public static enum ElementaryGroup {
		QUARK,
		LEPTON,
		BOSON,
		BARYON,		
		MESON;
	}	
	
	public final ElementaryGroup mParticleType;
	public final String mParticleName;
	public final Particle[] mComposition;
	
	public Particle(ElementaryGroup aParticleType, String aParticleName) {
		this(aParticleType, aParticleName, null);		
	}	

	public Particle(ElementaryGroup aParticleType, String aParticleName, Particle[] aComposition) {
		mParticleType = aParticleType;
		mParticleName = aParticleName;
		mComposition = aComposition == null ? new Particle[] {this} : aComposition;	
		aMap.put(this);
	}
	
}