This repository has been archived by the owner on Dec 20, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
dirc.cc
116 lines (97 loc) · 3.17 KB
/
dirc.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "EicDircStandalonePhysicsList.hh"
#include "EicDircStandalonePrimaryGeneratorAction.hh"
#include "EicDircStandaloneDetectorConstruction.hh"
#include "EicDircStandaloneRunAction.hh"
#include "EicDircStandaloneEventAction.hh"
#include "EicDircStandaloneStackingAction.hh"
#include "EicDircStandaloneSteppingVerbose.hh"
#include "EicDircStandaloneSteppingAction.hh"
#ifdef G4VIS_USE
#include "G4VisExecutive.hh"
#endif
#ifdef G4UI_USE
#include "G4UIExecutive.hh"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
using namespace std;
int main(int argc,char** argv)
{
// Seed the random number generator manually
//
G4long myseed = 345354;
CLHEP::HepRandom::setTheSeed(myseed);
// User Verbose output class
//
G4VSteppingVerbose* verbosity = new EicDircStandaloneSteppingVerbose;
G4VSteppingVerbose::SetInstance(verbosity);
// Run manager
//
G4RunManager* runManager = new G4RunManager;
// UserInitialization classes - mandatory
//
G4VUserPhysicsList* physics = new EicDircStandalonePhysicsList;
runManager-> SetUserInitialization(physics);
//
//G4VUserDetectorConstruction* detector = new EicDircStandaloneDetectorConstruction;
G4VUserDetectorConstruction* detector = new EicDircStandaloneDetectorConstruction;
runManager-> SetUserInitialization(detector);
//
G4VUserPrimaryGeneratorAction* gen_action = new EicDircStandalonePrimaryGeneratorAction;
runManager->SetUserAction(gen_action);
//
runManager->SetUserAction(new EicDircStandaloneSteppingAction());
// configure run manager
// runManager->SetNumberOfEventsToBeStored(1);
#ifdef G4VIS_USE
// visualization manager
//
G4VisManager* visManager = new G4VisExecutive;
visManager->Initialize();
#endif
// UserAction classes
//
G4UserRunAction* run_action = new EicDircStandaloneRunAction;
runManager->SetUserAction(run_action);
//
G4UserEventAction* event_action = new EicDircStandaloneEventAction;
runManager->SetUserAction(event_action);
//
G4UserStackingAction* stacking_action = new EicDircStandaloneStackingAction;
runManager->SetUserAction(stacking_action);
// Initialize G4 kernel
//
runManager->Initialize();
// Get the pointer to the User Interface manager
//
G4UImanager* UImanager = G4UImanager::GetUIpointer();
if (argc==1) // Define UI session for interactive mode
{
#ifdef G4UI_USE
G4UIExecutive * ui = new G4UIExecutive(argc,argv);
#ifdef G4VIS_USE
UImanager->ApplyCommand("/control/execute vis.mac");
#endif
ui->SessionStart();
delete ui;
#endif
}
else // Batch mode
{
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
// Job termination
// Free the store: user actions, physics_list and detector_description are
// owned and deleted by the run manager, so they should not
// be deleted in the main() program !
#ifdef G4VIS_USE
delete visManager;
#endif
delete runManager;
delete verbosity;
return 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......