HGCal Test Beam  03a93d6239a951948e06fb3ef8dae4cbdebfad30
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
simulateTB.cc
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // read geometry from a config file 04-28-2016 HBP
3 // ----------------------------------------------------------------------------
4 #include "G4RunManager.hh"
5 #include "G4UImanager.hh"
6 #include "G4VisExecutive.hh"
7 #include "G4UIExecutive.hh"
8 
9 #include "HGCal/TBStandaloneSimulator/interface/DetectorConstruction.hh"
10 #include "HGCal/TBStandaloneSimulator/interface/PhysicsList.hh"
11 #include "HGCal/TBStandaloneSimulator/interface/PrimaryGeneratorAction.hh"
12 #include "HGCal/TBStandaloneSimulator/interface/RunAction.hh"
13 #include "HGCal/TBStandaloneSimulator/interface/EventAction.hh"
14 #include "HGCal/TBStandaloneSimulator/interface/SteppingAction.hh"
15 #include "HGCal/TBStandaloneSimulator/interface/SteppingVerbose.hh"
16 #include "HGCal/TBStandaloneSimulator/interface/TBGeometry.h"
17 
18 #include "TSystem.h"
19 #include "TString.h"
20 
21 int main(int argc, char** argv)
22 {
23  // A hack to avoid compiler warning
24  int hack = CLHEP::HepRandomGenActive;
25  hack = argc;
26  argc = hack;
27 
28  if ( argc < 3 ) {
29  std::cout << "Usage: " << std::endl
30  << " simulateTB \x1b[1;31;48m<geometry file>\x1b[0m"
31  << " \x1b[1;32;48m<macro file>\x1b[0m"
32  << std::endl;
33  exit(0);
34  }
35 
36  G4String geomFile = gSystem->ExpandPathName(argv[1]);
37  G4String macroFile = gSystem->ExpandPathName(argv[2]);
38  TBConfig config;
39  config.macro = macroFile;
40  config.geometry = geomFile;
41  if ( argc > 3 )
42  config.savetracks = atoi(argv[3]);
43  else
44  config.savetracks = 0;
45  G4cout << config << G4endl;
46 
47  TBGeometry geometry(geomFile);
48 
49  // Choose the Random engine
50  CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
51 
52  // User Verbose output class
53  G4VSteppingVerbose::SetInstance(new SteppingVerbose);
54 
55  // Construct the default run manager
56  G4RunManager * runManager = new G4RunManager;
57 
58  // Set mandatory initialization classes
59 
60  runManager->SetUserInitialization(new DetectorConstruction(geometry,
61  config));
62  runManager->SetUserInitialization(new PhysicsList);
63 
64  // Set user action classes
65  int model = geometry.model();
66  double eta = 0;
67  runManager->SetUserAction(new PrimaryGeneratorAction(model, eta));
68  runManager->SetUserAction(new RunAction);
69  runManager->SetUserAction(new EventAction);
70  runManager->SetUserAction(new SteppingAction);
71 
72  // Initialize G4 kernel
73  runManager->Initialize();
74 
75  // Initialize visualization
76  G4VisManager* visManager = new G4VisExecutive;
77  visManager->Initialize();
78 
79  // Start User Interface manager
80  G4UImanager* UImanager = G4UImanager::GetUIpointer();
81  G4String command = "/control/execute " + macroFile;
82  UImanager->ApplyCommand(command);
83 
84  delete visManager;
85  delete runManager;
86  return 0;
87 }
88 
std::string macro
Definition: TBConfig.h:12
int model()
Definition: TBGeometry.h:25
bool savetracks
Definition: TBConfig.h:14
std::string geometry
Definition: TBConfig.h:13
int main(int argc, char *argv[])