Facebook
From flis, 6 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 274
  1. //
  2. // ********************************************************************
  3. // * License and Disclaimer                                           *
  4. // *                                                                  *
  5. // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6. // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7. // * conditions of the Geant4 Software License,  included in the file *
  8. // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9. // * include a list of copyright holders.                             *
  10. // *                                                                  *
  11. // * Neither the authors of this software system, nor their employing *
  12. // * institutes,nor the agencies providing financial support for this *
  13. // * work  make  any representation or  warranty, express or implied, *
  14. // * regarding  this  software system or assume any liability for its *
  15. // * use.  Please see the license in the file  LICENSE  and URL above *
  16. // * for the full disclaimer and the limitation of liability.         *
  17. // *                                                                  *
  18. // * This  code  implementation is the result of  the  scientific and *
  19. // * technical work of the GEANT4 collaboration.                      *
  20. // * By using,  copying,  modifying or  distributing the software (or *
  21. // * any work based  on the software)  you  agree  to acknowledge its *
  22. // * use  in  resulting  scientific  publications,  and indicate your *
  23. // * acceptance of all terms of the Geant4 Software license.          *
  24. // ********************************************************************
  25. //
  26. // $Id: exampleB1.cc 86065 2014-11-07 08:51:15Z gcosmo $
  27. //
  28. /// \file exampleB1.cc
  29. /// \brief Main program of the B1 example
  30.  
  31. #include "B1DetectorConstruction.hh"
  32. #include "B1ActionInitialization.hh"
  33.  
  34. #ifdef G4MULTITHREADED
  35. #include "G4MTRunManager.hh"
  36. #else
  37. #include "G4RunManager.hh"
  38. #endif
  39.  
  40. #include "G4UImanager.hh"
  41. #include "QBBC.hh"
  42.  
  43. #include "G4VisExecutive.hh"
  44. #include "G4UIExecutive.hh"
  45.  
  46. #include "Randomize.hh"
  47.  
  48. //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  49.  
  50. int main(int argc,char** argv)
  51. {
  52.   // Detect interactive mode (if no arguments) and define UI session
  53.   //
  54.   G4UIExecutive* ui = 0;
  55.   if ( argc == 1 ) {
  56.     ui = new G4UIExecutive(argc, argv);
  57.   }
  58.  
  59.   // Choose the Random engine
  60.   G4Random::setTheEngine(new CLHEP::RanecuEngine);
  61.  
  62.   // Construct the default run manager
  63.   //
  64. #ifdef G4MULTITHREADED
  65.   G4MTRunManager* runManager = new G4MTRunManager;
  66. #else
  67.   G4RunManager* runManager = new G4RunManager;
  68. #endif
  69.  
  70.   // Set mandatory initialization classes
  71.   //
  72.   // Detector construction
  73.   runManager->SetUserInitialization(new B1DetectorConstruction());
  74.  
  75.   // Physics list
  76.   G4VModularPhysicsList* physicsList = new QBBC;
  77.   physicsList->SetVerboseLevel(1);
  78.   runManager->SetUserInitialization(physicsList);
  79.    
  80.   // User action initialization
  81.   runManager->SetUserInitialization(new B1ActionInitialization());
  82.  
  83.   // Initialize visualization
  84.   //
  85.   G4VisManager* visManager = new G4VisExecutive;
  86.   // G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
  87.   // G4VisManager* visManager = new G4VisExecutive("Quiet");
  88.   visManager->Initialize();
  89.  
  90.   // Get the pointer to the User Interface manager
  91.   G4UImanager* UImanager = G4UImanager::GetUIpointer();
  92.  
  93.   // Process macro or start UI session
  94.   //
  95.   if ( ! ui ) {
  96.     // batch mode
  97.     G4String command = "/control/execute ";
  98.     G4String fileName = argv[1];
  99.     UImanager->ApplyCommand(command+fileName);
  100.   }
  101.   else {
  102.     // interactive mode
  103.     UImanager->ApplyCommand("/control/execute init_vis.mac");
  104.     ui->SessionStart();
  105.     delete ui;
  106.   }
  107.  
  108.   // Job termination
  109.   // Free the store: user actions, physics_list and detector_description are
  110.   // owned and deleted by the run manager, so they should not be deleted
  111.   // in the main() program !
  112.  
  113.   delete visManager;
  114.   delete runManager;
  115. }
  116.  
  117. //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
  118.