forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
geant3tasks.C
145 lines (140 loc) · 5.87 KB
/
geant3tasks.C
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// @(#)root/tutorials:$Id$
// Author: Rene Brun 02/09/2000
void geant3tasks()
{
// this script is a representation using TTasks of the Geant3 simulation program
// This example uses directly TTask objects.
// A real implementation would require one class per task derived from TTask.
TTask *geant3 = new TTask("geant3","Geant3 simulation main program");
gROOT->GetListOfTasks()->Add(geant3);
TTask *uginit = new TTask("uginit","Initialisation manager");
TTask *grun = new TTask("grun","Run manager");
TTask *uglast = new TTask("uglast","Termination manager");
geant3->Add(uginit);
geant3->Add(grun);
geant3->Add(uglast);
TTask *ginit = new TTask("ginit","Geant3 initialisation");
TTask *ugeom = new TTask("ugeom","Geometry initialisation manager");
TTask *gphysi = new TTask("gphysi","Initialise cross-sections and energy loss tables");
TTask *ggclos = new TTask("ggclos","Geometry analyzer and optimizer");
uginit->Add(ginit);
uginit->Add(ugeom);
uginit->Add(gphysi);
uginit->Add(ggclos);
TTask *gtrigi = new TTask("gtrigi","Event initialisation");
TTask *gtrig = new TTask("gtrig","Event manager");
TTask *gtrigc = new TTask("gtrigc","Event cleaner");
grun->Add(gtrigi);
grun->Add(gtrig);
grun->Add(gtrigc);
TTask *glast = new TTask("glast","Geant3 termination");
TTask *igend = new TTask("igend","Graphics package termination");
uglast->Add(glast);
uglast->Add(igend);
TTask *gukine = new TTask("gukine","Event generator manager");
TTask *gutrev = new TTask("gutrev","Event application manager");
TTask *gudigi = new TTask("gudigi","Event digitisation manager");
TTask *guout = new TTask("guout","Event termination manager");
gtrig->Add(gukine);
gtrig->Add(gutrev);
gtrig->Add(gudigi);
gtrig->Add(guout);
TTask *gtreve = new TTask("gtreve","Geant3 event manager");
gutrev->Add(gtreve);
TTask *gltrac = new TTask("gltrac","Initialize tracking parameters");
TTask *gftrac = new TTask("gftrac","select next track segment from stack JTRACK");
TTask *gutrak = new TTask("gutrak","Application track manager");
gtreve->Add(gltrac);
gtreve->Add(gftrac);
gtreve->Add(gutrak);
TTask *gtrack = new TTask("gtrack","Geant3 track manager");
gutrak->Add(gtrack);
TTask *gtgama = new TTask("gtgama","photon propagator");
TTask *gtelec = new TTask("gtelec","electron propagator");
TTask *gtneut = new TTask("gtneut","neutron propagator");
TTask *gthadr = new TTask("gthadr","hadron propagator");
TTask *gtmuon = new TTask("gtmuon","muon propagator");
TTask *gtnino = new TTask("gtnino","geantino propagator");
TTask *gtckov = new TTask("gtckov","Cherenkov light propagator");
TTask *gthion = new TTask("gthion","heavy ion propagator");
TTask *gustep = new TTask("gustep","Application step manager");
TTask *gtmedi = new TTask("gtmedi","Geometry volume finder");
gtrack->Add(gtgama);
gtrack->Add(gtelec);
gtrack->Add(gtneut);
gtrack->Add(gthadr);
gtrack->Add(gtmuon);
gtrack->Add(gtnino);
gtrack->Add(gtckov);
gtrack->Add(gthion);
gtrack->Add(gustep);
gtrack->Add(gtmedi);
TTask *gtnext = new TTask("gtnext","Geometry bounary manager");
TTask *gpairg = new TTask("gpairg","Generate pair production");
TTask *gcomp = new TTask("gcomp","Generate Compton scattering");
TTask *gphot = new TTask("gphot","Generate photo effect");
TTask *grayl = new TTask("grayl","Generate Rayleigh effect");
TTask *gpfis = new TTask("gpfis","Generate photo fission");
gtgama->Add(gtnext);
gtgama->Add(gpairg);
gtgama->Add(gcomp);
gtgama->Add(gphot);
gtgama->Add(grayl);
gtgama->Add(gpfis);
TTask *guswim = new TTask("guswim","magnetic field propagator");
TTask *ggckov = new TTask("ggckov","Generate Cherenkov photons");
TTask *gsync = new TTask("gsync","Generate synchrotron radiation");
TTask *gmults = new TTask("gmults","Apply multiple scattering");
TTask *gbreme = new TTask("gbreme","Generate Bremsstrahlung");
TTask *gdray = new TTask("gdray","Generate delta ray");
TTask *ganni = new TTask("ganni","Generate Positron annihilation");
TTask *gannir = new TTask("gannir","Stopped tracks and annihilation at rest");
gtelec->Add(gtnext);
gtelec->Add(guswim);
gtelec->Add(ggckov);
gtelec->Add(gsync);
gtelec->Add(gmults);
gtelec->Add(gbreme);
gtelec->Add(gdray);
gtelec->Add(ganni);
gtelec->Add(gannir);
TTask *guphad = new TTask("guphad","Hadronic cross-section manager");
TTask *guhadr = new TTask("guhadr","Hadronic cascade manager");
TTask *gdecay = new TTask("gdecay","Particle decay");
gtneut->Add(gtnext);
gtneut->Add(guphad);
gtneut->Add(guhadr);
gtneut->Add(gdecay);
gthadr->Add(gtnext);
gthadr->Add(guphad);
gthadr->Add(guswim);
gthadr->Add(ggckov);
gthadr->Add(gmults);
gthadr->Add(guhadr);
gthadr->Add(gdecay);
gthadr->Add(gdray);
TTask *gbremm = new TTask("gbremm","Generate Bremsstrahlung");
TTask *gpairm = new TTask("gpairm","Generate Pair production");
TTask *gmunu = new TTask("gmunu","Generate Nuclear interaction");
gtmuon->Add(gtnext);
gtmuon->Add(guswim);
gtmuon->Add(ggckov);
gtmuon->Add(gmults);
gtmuon->Add(gbremm);
gtmuon->Add(gpairm);
gtmuon->Add(gdecay);
gtmuon->Add(gdray);
gtmuon->Add(gmunu);
gtmuon->Add(gdecay);
gtnino->Add(gtnext);
TTask *glisur = new TTask("glisur","Photon is reflected");
gtckov->Add(gtnext);
gtckov->Add(glisur);
gthion->Add(gtnext);
gthion->Add(guswim);
gthion->Add(gmults);
gthion->Add(guhadr);
gthion->Add(gdray);
new TBrowser;
gDebug = 2;
}