]>
Commit | Line | Data |
---|---|---|
1fccbbe0 | 1 | // $Id$ |
2 | // | |
3 | // Root macro that opens a mini GUI for running aliroot with Geant4. | |
4 | // | |
5 | // To run aliroot with Geant4 using the g4menu.C: | |
6 | // aliroot | |
7 | // root [0] .x g4menu.C | |
8 | // --> Select "Init" and then "Run" button | |
9 | // | |
10 | // The the bar enables to start Geant4 interactive session: | |
11 | // --> Select "Geant4UI" button and use Geant4 interactive commands; | |
12 | // In case TGeant4 has not yet been created you need first | |
13 | // select "Geant4" button before selecting "Geant4UI". | |
14 | // To go back to Root UI, type exit. | |
15 | ||
16 | ||
17 | #include <iostream> | |
18 | ||
19 | void g4menu() | |
20 | { | |
21 | ||
22 | // Load Geant4 libraries | |
23 | if (!gInterpreter->IsLoaded("$ALICE/geant4_vmc/examples/macro/g4libs.C")) | |
24 | gROOT->LoadMacro("$ALICE/geant4_vmc/examples/macro/g4libs.C"); | |
25 | gInterpreter->ProcessLine("g4libs()"); | |
26 | ||
27 | // Menu | |
28 | TControlBar* menu = new TControlBar("vertical","Alice Geant4 menu"); | |
29 | ||
30 | menu->AddButton("Init", "gAlice->Init(\"g4Config.C\")", "Initialize \" AliRun \""); | |
31 | menu->AddButton("Run", "gAlice->Run()", "Process Alice run"); | |
32 | menu->AddButton("Geant4", "CreateGeant4()", "Create Geant4 only (without initializing AliRun)"); | |
33 | menu->AddButton("Geant4UI", "StartGeant4UI()","Go to Geant4 Interactive session"); | |
67d736ee | 34 | menu->AddButton("XML", "GenerateXML()","Generate XML (AGDD) file with geometry description"); |
35 | menu->AddButton("Quit", "Quit()", "Quit aliroot"); | |
1fccbbe0 | 36 | gROOT->SaveContext(); |
37 | menu->Show(); | |
38 | } | |
39 | ||
40 | void CreateGeant4() | |
41 | { | |
42 | if (!gMC) { | |
43 | ||
44 | // TG4RunConfiguration for Geant4 | |
45 | TG4RunConfiguration* runConfiguration | |
46 | = new TG4RunConfiguration(true); | |
47 | ||
48 | // TGeant4 | |
49 | TGeant4* geant4 | |
50 | = new TGeant4("TGeant4", "The Geant4 Monte Carlo", runConfiguration); | |
51 | ||
52 | cout << "Geant4 has been created." << endl; | |
53 | } | |
54 | else { | |
55 | cout << "Monte Carlo has been already created." << endl; | |
56 | } | |
57 | } | |
58 | ||
59 | void StartGeant4UI() | |
60 | { | |
61 | if (gMC) { | |
62 | // release Root terminal control | |
63 | ||
64 | // go into non-raw term mode | |
65 | Getlinem(kCleanUp, 0); | |
66 | ||
67 | // add test if gMC is TGeant4 | |
68 | TGeant4* g4 = (TGeant4*)gMC; | |
69 | ||
70 | g4->StartGeantUI(); | |
71 | ||
72 | // new Root prompt | |
73 | Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt()); | |
74 | } | |
75 | else { | |
76 | cout << "Monte Carlo has not been yet created." << endl; | |
77 | } | |
67d736ee | 78 | } |
79 | ||
80 | void GenerateXML() | |
81 | { | |
82 | if (gMC) { | |
83 | // release Root terminal control | |
84 | ||
85 | // go into non-raw term mode | |
86 | //Getlinem(kCleanUp, 0); | |
87 | ||
88 | // add test if gMC is TGeant4 | |
89 | TGeant4* g4 = (TGeant4*)gMC; | |
90 | ||
91 | g4->ProcessGeantCommand("/xml/generateAGDD"); | |
92 | ||
93 | // new Root prompt | |
94 | //Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt()); | |
95 | } | |
96 | else { | |
97 | cout << "Monte Carlo has not been yet created." << endl; | |
98 | } | |
99 | } | |
100 | ||
101 | void Quit() | |
102 | { | |
103 | delete gAlice->GetRunLoader(); | |
104 | delete gAlice; | |
105 | ||
106 | exit(0); | |
1fccbbe0 | 107 | } |