3 // Root macro that opens a mini GUI for running aliroot with Geant4.
5 // To run aliroot with Geant4 using the g4menu.C:
7 // root [0] .x g4menu.C
8 // --> First select "Geometry" to build geometry.root file
9 // --> Then re-run aliroot and select "Run" button
11 // The Init button is kept for debugging purposes,
12 // it itializes MonteCarlo but it does not itialize
13 // completely ALICE framework. That's why to run simulation,
14 // you have to re-run aliroot and select Run button.
16 // The menu enables to start Geant4 interactive session:
17 // --> Select "Geant4UI" button and use Geant4 interactive commands;
18 // To go back to Root UI, type exit.
20 // By I. Hrivnacova, IPN Orsay
28 // Load Geant4 libraries
29 if (!gInterpreter->IsLoaded("$ALICE/geant4_vmc/examples/macro/g4libs.C"))
30 gROOT->LoadMacro("$ALICE/geant4_vmc/examples/macro/g4libs.C");
31 gInterpreter->ProcessLine("g4libs()");
34 TControlBar* menu = new TControlBar("vertical","Alice Geant4 menu");
36 menu->AddButton("Geometry", "MakeGeometry()", "Generate Root geometry file");
37 menu->AddButton("Run", "RunSimulation()", "Process Alice run");
38 menu->AddButton("Init", "Init()", "Initialize Alice for simulation");
39 menu->AddButton("Geant4UI", "StartGeant4UI()","Go to Geant4 Interactive session");
40 menu->AddButton("AGDD", "GenerateAGDD()","Generate XML (AGDD) file with geometry description");
41 //menu->AddButton("GDML", "GenerateGDML()","Generate XML (GDML) file with geometry description");
42 menu->AddButton("Quit", "Quit()", "Quit aliroot");
46 << "**************************************************************" << endl
47 << " To run simulation:" << endl
48 << " First select <Geometry> to build geometry.root file." << endl
49 << " Then re-run aliroot and select <Run> button" << endl
51 << " The <Init> button is kept for debugging purposes," << endl
52 << " it itializes MonteCarlo but it does not itialize" << endl
53 << " completely ALICE framework. That's why to run simulation," << endl
54 << " you have to re-run aliroot and select Run button." << endl
56 << " The menu enables to start Geant4 interactive session:" << endl
57 << " Select <Geant4UI> button and use Geant4 interactive commands" << endl
58 << " To go back to Root UI, type exit." << endl
59 << "**************************************************************" << endl
67 AliCDBManager* man = AliCDBManager::Instance();
68 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
71 // MC application initialization
72 TString configFileName = "$ALICE_ROOT/macros/g4ConfigGeometry.C";
73 gROOT->LoadMacro(configFileName.Data());
74 gInterpreter->ProcessLine(gAlice->GetConfigFunction());
75 gAlice->GetMCApp()->Init();
77 // Generate geometry file
79 gGeoManager->Export("geometry.root");
82 << "Geometry file geometry.root has been generated." << endl
83 << "You have to re-run aliroot and choose Run in g4menu." << endl;
91 AliCDBManager* man = AliCDBManager::Instance();
92 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
95 // MC application initialization
96 TString configFileName = "$ALICE_ROOT/macros/g4Config.C";
97 gROOT->LoadMacro(configFileName.Data());
98 gInterpreter->ProcessLine(gAlice->GetConfigFunction());
99 gAlice->GetMCApp()->Init();
102 << "Only MonteCarlo initialization has been performed. " << endl
103 << "To run simulation you have to re-run aliroot and choose Run in g4menu." << endl;
109 AliSimulation sim("$ALICE_ROOT/macros/g4Config.C");
110 sim.SetMakeDigits("");
111 sim.SetMakeSDigits("");
113 sim.SetNumberOfEvents(1);
124 // release Root terminal control
126 // go into non-raw term mode
127 Getlinem(kCleanUp, 0);
129 // add test if gMC is TGeant4
130 TGeant4* g4 = (TGeant4*)gMC;
135 Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt());
138 cout << "Monte Carlo has not been yet created." << endl;
145 // release Root terminal control
147 // go into non-raw term mode
148 //Getlinem(kCleanUp, 0);
150 // add test if gMC is TGeant4
151 TGeant4* g4 = (TGeant4*)gMC;
153 g4->ProcessGeantCommand("/vgm/generateAGDD");
156 //Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt());
159 cout << "Monte Carlo has not been yet created." << endl;
166 // release Root terminal control
168 // go into non-raw term mode
169 //Getlinem(kCleanUp, 0);
171 // add test if gMC is TGeant4
172 TGeant4* g4 = (TGeant4*)gMC;
174 g4->ProcessGeantCommand("/vgm/generateGDML");
177 //Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt());
180 cout << "Monte Carlo has not been yet created." << endl;
186 delete AliRunLoader::Instance();