Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // >> 26 // $Id: LXe.cc 77782 2013-11-28 08:12:12Z gcosmo $ 26 // 27 // 27 /// \file optical/LXe/LXe.cc 28 /// \file optical/LXe/LXe.cc 28 /// \brief Main program of the optical/LXe exa 29 /// \brief Main program of the optical/LXe example 29 // 30 // 30 //....oooOO0OOooo........oooOO0OOooo........oo 31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 31 32 32 #include "FTFP_BERT.hh" << 33 #ifdef G4MULTITHREADED 33 #include "LXeActionInitialization.hh" << 34 #include "G4MTRunManager.hh" 34 #include "LXeDetectorConstruction.hh" << 35 #else >> 36 #include "G4RunManager.hh" >> 37 #endif 35 38 36 #include "G4EmStandardPhysics_option4.hh" << 37 #include "G4OpticalParameters.hh" << 38 #include "G4OpticalPhysics.hh" << 39 #include "G4RunManagerFactory.hh" << 40 #include "G4String.hh" << 41 #include "G4Types.hh" << 42 #include "G4UIExecutive.hh" << 43 #include "G4UImanager.hh" 39 #include "G4UImanager.hh" 44 #include "G4VisExecutive.hh" << 40 #include "G4String.hh" 45 << 46 //....oooOO0OOooo........oooOO0OOooo........oo << 47 41 48 int main(int argc, char** argv) << 42 #include "LXePhysicsList.hh" 49 { << 43 #include "LXeDetectorConstruction.hh" 50 // detect interactive mode (if no arguments) << 51 G4UIExecutive* ui = nullptr; << 52 if (argc == 1) { << 53 ui = new G4UIExecutive(argc, argv); << 54 } << 55 44 56 auto runManager = G4RunManagerFactory::Creat << 45 #include "LXeActionInitialization.hh" 57 46 58 auto det = new LXeDetectorConstruction(); << 47 #include "LXeRecorderBase.hh" 59 runManager->SetUserInitialization(det); << 60 48 61 G4VModularPhysicsList* physicsList = new FTF << 49 #ifdef G4VIS_USE 62 physicsList->ReplacePhysics(new G4EmStandard << 50 #include "G4VisExecutive.hh" >> 51 #endif 63 52 64 auto opticalPhysics = new G4OpticalPhysics() << 53 #ifdef G4UI_USE 65 auto opticalParams = G4OpticalParameters::In << 54 #include "G4UIExecutive.hh" >> 55 #endif 66 56 67 opticalParams->SetWLSTimeProfile("delta"); << 57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 68 58 69 opticalParams->SetScintTrackSecondariesFirst << 59 int main(int argc, char** argv) >> 60 { >> 61 #ifdef G4MULTITHREADED >> 62 G4MTRunManager * runManager = new G4MTRunManager; >> 63 #else >> 64 G4RunManager * runManager = new G4RunManager; >> 65 #endif 70 66 71 opticalParams->SetCerenkovMaxPhotonsPerStep( << 67 runManager->SetUserInitialization(new LXeDetectorConstruction()); 72 opticalParams->SetCerenkovMaxBetaChange(10.0 << 68 runManager->SetUserInitialization(new LXePhysicsList()); 73 opticalParams->SetCerenkovTrackSecondariesFi << 74 69 75 physicsList->RegisterPhysics(opticalPhysics) << 70 LXeRecorderBase* recorder = NULL; //No recording is done in this example 76 runManager->SetUserInitialization(physicsLis << 77 71 78 runManager->SetUserInitialization(new LXeAct << 72 runManager->SetUserInitialization(new LXeActionInitialization(recorder)); 79 73 80 // initialize visualization << 74 #ifdef G4VIS_USE 81 G4VisManager* visManager = new G4VisExecutiv 75 G4VisManager* visManager = new G4VisExecutive; >> 76 // G4VisExecutive can take a verbosity argument - see /vis/verbose guidance. >> 77 // G4VisManager* visManager = new G4VisExecutive("Quiet"); 82 visManager->Initialize(); 78 visManager->Initialize(); >> 79 #endif 83 80 84 // get the pointer to the User Interface man << 81 // runManager->Initialize(); >> 82 >> 83 // get the pointer to the UI manager and set verbosities 85 G4UImanager* UImanager = G4UImanager::GetUIp 84 G4UImanager* UImanager = G4UImanager::GetUIpointer(); 86 85 87 if (ui) { << 86 if(argc==1){ 88 // interactive mode << 87 #ifdef G4UI_USE >> 88 G4UIExecutive* ui = new G4UIExecutive(argc, argv); >> 89 #ifdef G4VIS_USE 89 UImanager->ApplyCommand("/control/execute 90 UImanager->ApplyCommand("/control/execute vis.mac"); 90 if (ui->IsGUI()) { << 91 #endif 91 UImanager->ApplyCommand("/control/execut << 92 if (ui->IsGUI()) 92 } << 93 UImanager->ApplyCommand("/control/execute gui.mac"); 93 ui->SessionStart(); 94 ui->SessionStart(); 94 delete ui; 95 delete ui; >> 96 #endif 95 } 97 } 96 else { << 98 else{ 97 // batch mode << 98 G4String command = "/control/execute "; 99 G4String command = "/control/execute "; 99 G4String fileName = argv[1]; << 100 G4String filename = argv[1]; 100 UImanager->ApplyCommand(command + fileName << 101 UImanager->ApplyCommand(command+filename); 101 } 102 } 102 103 103 // job termination << 104 // if(recorder)delete recorder; >> 105 >> 106 #ifdef G4VIS_USE 104 delete visManager; 107 delete visManager; >> 108 #endif >> 109 >> 110 // job termination 105 delete runManager; 111 delete runManager; 106 return 0; 112 return 0; 107 } 113 } 108 114 109 //....oooOO0OOooo........oooOO0OOooo........oo 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 110 116