File indexing completed on 2025-02-22 09:41:02
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #include "G4Types.hh"
0035 #include "G4RunManagerFactory.hh"
0036 #include "G4UImanager.hh"
0037 #include "G4UIExecutive.hh"
0038 #include "G4VisExecutive.hh"
0039 #include "ActionInitialization.hh"
0040 #include "DetectorConstruction.hh"
0041 #include "G4GenericPhysicsList.hh"
0042 #include "G4EmStandardPhysics.hh"
0043 #include "MicroElecSiPhysics.hh"
0044 #include "MicroElecPhysics.hh"
0045
0046
0047
0048 int main(int argc,char** argv)
0049 {
0050 G4UIExecutive* session = nullptr;
0051 if (argc==1)
0052 {
0053 session = new G4UIExecutive(argc, argv);
0054 }
0055
0056
0057
0058 auto* runManager = G4RunManagerFactory::CreateRunManager();
0059 G4int nThreads = 1;
0060 runManager->SetNumberOfThreads(nThreads);
0061
0062
0063 DetectorConstruction* detector = new DetectorConstruction;
0064 runManager->SetUserInitialization(detector);
0065
0066
0067
0068 G4String fileName;
0069 fileName = "microelectronics.mac";
0070 G4bool microElecSiPhysics;
0071 microElecSiPhysics=false;
0072 if(argc>1)
0073 {
0074 if (G4String(argv[1])== "-onlySi") {microElecSiPhysics=true;}
0075 else {fileName=argv[1]; }
0076 if( argc>2)
0077 {
0078 if (G4String(argv[2])== "-onlySi"){ microElecSiPhysics=true;}
0079 else{ fileName=argv[2];}
0080 }
0081 }
0082
0083 if (microElecSiPhysics)
0084 { G4cout << "Physic list : MicroElecSiPhysics (only Silicium)" << G4endl;
0085 runManager->SetUserInitialization(new MicroElecSiPhysics());
0086 }
0087 else
0088 { G4cout << "Physic list : MicroElecPhysics" << G4endl;
0089 runManager->SetUserInitialization(new MicroElecPhysics());
0090 }
0091
0092
0093 runManager->SetUserInitialization(new ActionInitialization(detector));
0094
0095
0096 runManager->Initialize();
0097
0098 G4VisManager* visManager = new G4VisExecutive;
0099 visManager->Initialize();
0100
0101
0102 G4UImanager* UImanager = G4UImanager::GetUIpointer();
0103
0104 if (argc==1)
0105 {
0106 UImanager->ApplyCommand("/control/execute microelectronics.mac");
0107 session->SessionStart();
0108 delete session;
0109 }
0110 else
0111 {
0112 G4String command = "/control/execute ";
0113 UImanager->ApplyCommand(command+fileName);
0114 }
0115
0116 delete visManager;
0117
0118 delete runManager;
0119
0120 return 0;
0121 }
0122