Possibility to use Geant4 (Ivana)
[u/mrichter/AliRoot.git] / macros / g4menu.C
index fe7f07a..cc29ecf 100644 (file)
@@ -5,13 +5,19 @@
 //  To run aliroot with Geant4 using the g4menu.C:
 //  aliroot
 //  root [0] .x g4menu.C
-//  --> Select "Init" and then "Run" button
+//  --> First select "Geometry" to build geometry.root file
+//  --> Then re-run aliroot and select "Run" button
 //         
-// The the bar enables to start Geant4 interactive session:
+// The Init button is kept for debugging purposes,
+// it itializes MonteCarlo but it does not itialize
+// completely ALICE framework. That's why to run simulation,
+// you have to re-run aliroot and select Run button.
+//
+// The menu enables to start Geant4 interactive session:
 //  --> Select "Geant4UI" button and use Geant4 interactive commands;
-//      In case TGeant4 has not yet been created you need first
-//      select "Geant4" button before selecting  "Geant4UI".       
 // To go back to Root UI, type exit.
+//
+// By I. Hrivnacova, IPN Orsay
 
 
 #include <iostream>
@@ -27,33 +33,79 @@ void g4menu()
   // Menu
   TControlBar* menu = new TControlBar("vertical","Alice Geant4 menu");
   
-  menu->AddButton("Init",     "gAlice->Init(\"g4Config.C\")", "Initialize \" AliRun \"");
-  menu->AddButton("Run",      "gAlice->Run()",  "Process Alice run");
-  menu->AddButton("Geant4",   "CreateGeant4()", "Create Geant4 only (without initializing AliRun)");
+  menu->AddButton("Geometry", "MakeGeometry()",  "Generate Root geometry file");
+  menu->AddButton("Run",      "RunSimulation()",  "Process Alice run");
+  menu->AddButton("Init",     "Init()",  "Initialize Alice for simulation");
   menu->AddButton("Geant4UI", "StartGeant4UI()","Go to Geant4 Interactive session");
-  menu->AddButton("XML",      "GenerateXML()","Generate XML (AGDD) file with geometry description");
+  menu->AddButton("AGDD",     "GenerateAGDD()","Generate XML (AGDD) file with geometry description");
+  //menu->AddButton("GDML",     "GenerateGDML()","Generate XML (GDML) file with geometry description");
   menu->AddButton("Quit",     "Quit()", "Quit aliroot");
   gROOT->SaveContext();
+  
+  cout << endl
+       << "**************************************************************" << endl
+       << "  To run simulation:"                                           << endl
+       << "  First select <Geometry> to build geometry.root file."         << endl
+       << "  Then re-run aliroot and select <Run> button"                  << endl
+       << endl
+       << "  The <Init> button is kept for debugging purposes,"            << endl
+       << "  it itializes MonteCarlo but it does not itialize"             << endl
+       << "  completely ALICE framework. That's why to run simulation,"    << endl
+       << "  you have to re-run aliroot and select Run button."            << endl
+       << endl
+       << "  The menu enables to start Geant4 interactive session:"        << endl
+       << "  Select <Geant4UI> button and use Geant4 interactive commands" << endl
+       << "  To go back to Root UI, type exit."                            << endl
+       << "**************************************************************" << endl
+       << endl;
+  
   menu->Show();
 }
 
-void CreateGeant4()
+void MakeGeometry()
 {  
-  if (!gMC) {
+  AliCDBManager* man = AliCDBManager::Instance();
+  man->SetDefaultStorage("local://$ALICE_ROOT");
+  man->SetRun(1);
+  gAlice->Init("$ALICE_ROOT/macros/g4ConfigGeometry.C");
   
-     // TG4RunConfiguration for Geant4
-     TG4RunConfiguration* runConfiguration 
-      = new TG4RunConfiguration(true);
+  // Generate geometry file
+  //
+  gGeoManager->Export("geometry.root");
   
-    // TGeant4
-    TGeant4* geant4
-      = new TGeant4("TGeant4", "The Geant4 Monte Carlo", runConfiguration);
-
-    cout << "Geant4 has been created." << endl;
-   }      
-  else {
-    cout << "Monte Carlo has been already created." << endl;
-  }       
+  cout << endl
+       << "Geometry file geometry.root has been generated." << endl
+       << "You have to re-run aliroot and choose Run in g4menu." << endl;
+       
+  exit(0);     
+}    
+
+
+void Init()
+{  
+  AliCDBManager* man = AliCDBManager::Instance();
+  man->SetDefaultStorage("local://$ALICE_ROOT");
+  man->SetRun(0);
+  gAlice->Init("$ALICE_ROOT/macros/g4Config.C");
+
+  cout << endl
+       << "Only MonteCarlo initialization has been performed. " << endl
+       << "To run simulation you have to re-run aliroot and choose Run in g4menu." << endl;
+}    
+
+
+void RunSimulation()
+{  
+  AliSimulation sim("$ALICE_ROOT/macros/g4Config.C");
+  sim.SetMakeDigits("");
+  sim.SetMakeSDigits("");
+  sim.SetRunHLT("");
+  sim.SetNumberOfEvents(1);
+  TStopwatch timer;
+  timer.Start();
+  sim.Run(1);
+  timer.Stop();
+  timer.Print();
 }    
 
 void StartGeant4UI()
@@ -77,7 +129,7 @@ void StartGeant4UI()
   }       
 } 
 
-void GenerateXML()
+void GenerateAGDD()
 {
   if (gMC) {
     // release Root terminal control
@@ -88,7 +140,7 @@ void GenerateXML()
     // add test if gMC is TGeant4
     TGeant4* g4 = (TGeant4*)gMC;
     
-    g4->ProcessGeantCommand("/xml/generateAGDD");
+    g4->ProcessGeantCommand("/vgm/generateAGDD");
 
     // new Root prompt
     //Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt());  
@@ -97,7 +149,28 @@ void GenerateXML()
     cout << "Monte Carlo has not been yet created." << endl;
   } 
 }        
+/*
+void GenerateGDML()
+{
+  if (gMC) {
+    // release Root terminal control
+
+    // go into non-raw term mode
+    //Getlinem(kCleanUp, 0);
+    
+    // add test if gMC is TGeant4
+    TGeant4* g4 = (TGeant4*)gMC;
+    
+    g4->ProcessGeantCommand("/vgm/generateGDML");
 
+    // new Root prompt
+    //Getlinem(kInit, ((TRint*)gROOT->GetApplication())->GetPrompt());  
+  }
+  else {  
+    cout << "Monte Carlo has not been yet created." << endl;
+  } 
+}        
+*/
 void Quit()
 {
   delete gAlice->GetRunLoader();