GEMC  2.3
Geant4 Monte-Carlo Framework
SConstruct
Go to the documentation of this file.
1 from init_env import init_environment
2 
3 # adding ccdb as temporary dependency
4 # will be removed once the hit process routines are plugins
5 env = init_environment("qt5 geant4 clhep evio xercesc ccdb")
6 
7 # env.Replace(CXX = "/apps/gcc/4.7.2/bin/g++")
8 # env.Replace(CXX = "/usr/bin/clang++")
9 #env.Append(CXXFLAGS='-Wno-shorten-64-to-32')
10 #env.Append(CXXFLAGS='-Wno-sign-conversion')
11 
12 # added because clhep is still behind clang (5/2015)
13 if env['PLATFORM'] == 'darwin':
14  env.Append(CXXFLAGS='-Wno-absolute-value')
15 
16 # Materials
17 env.Append(CPPPATH = 'materials')
18 materials_sources = Split("""
19  materials/material_factory.cc
20  materials/cpp_materials.cc
21  materials/mysql_materials.cc
22  materials/text_materials.cc
23  materials/gdml_materials.cc""")
24 env.Library(source = materials_sources, target = "lib/materials")
25 
26 # Mirrors
27 env.Append(CPPPATH = 'mirrors')
28 mirrors_sources = Split("""
29  mirrors/mirrors_factory.cc
30  mirrors/mysql_mirrors.cc
31  mirrors/text_mirrors.cc""")
32 env.Library(source = mirrors_sources, target = "lib/mirrors")
33 
34 
35 # Parameters
36 env.Append(CPPPATH = 'parameters')
37 parameters_sources = Split("""
38  parameters/parameter_factory.cc
39  parameters/mysql_parameters.cc
40  parameters/text_parameters.cc""")
41 env.Library(source = parameters_sources, target = "lib/parameters")
42 
43 
44 # Utilities
45 env.Append(CPPPATH = 'utilities')
46 util_sources = Split("""
47  utilities/string_utilities.cc
48  utilities/utils.cc
49  utilities/lStdHep.cc
50  utilities/lXDR.cc
51  utilities/options.cc""")
52 env.Library(source = util_sources, target = "lib/utilities")
53 
54 
55 # Detector
56 env.Append(CPPPATH = 'detector')
57 det_sources = Split("""
58  detector/detector.cc
59  detector/detector_factory.cc
60  detector/mysql_det_factory.cc
61  detector/gdml_det_factory.cc
62  detector/clara_det_factory.cc
63  detector/gdml_solids.cc
64  detector/text_det_factory.cc""")
65 env.Library(source = det_sources, target = "lib/detector")
66 
67 
68 # Sensitivity
69 env.Append(CPPPATH = 'sensitivity')
70 sensi_sources = Split("""
71  sensitivity/sensitiveDetector.cc
72  sensitivity/identifier.cc
73  sensitivity/Hit.cc
74  sensitivity/HitProcess.cc
75  sensitivity/sensitiveID.cc""")
76 env.Library(source = sensi_sources, target = "lib/sensitivity")
77 
78 
79 # Physics
80 env.Append(CPPPATH = 'physics')
81 phys_sources = Split("""
82  physics/PhysicsList.cc
83  physics/PhysicsListMessenger.cc""")
84 env.Library(source = phys_sources, target = "lib/physics")
85 
86 # Fields
87 env.Append(CPPPATH = 'fields')
88 field_sources = Split("""
89  fields/field.cc
90  fields/fieldFactory.cc
91  fields/asciiField.cc
92  fields/mappedField.cc
93  fields/multipoleField.cc
94  fields/symmetries/dipole.cc
95  fields/symmetries/cylindrical.cc
96  fields/symmetries/phi-segmented.cc""")
97 env.Library(source = field_sources, target = "lib/fields")
98 
99 
100 # Hit Processes
101 env.Append(CPPPATH = ['hitprocess', 'hitprocess/clas12', 'hitprocess/clas12/svt', 'hitprocess/clas12/micromegas'])
102 env.Append(CPPPATH = ['hitprocess/Aprime', 'hitprocess/GlueX', 'hitprocess/solid'])
103 hitp_sources = Split("""
104  hitprocess/HitProcess_MapRegister.cc
105  hitprocess/flux_hitprocess.cc
106  hitprocess/clas12/micromegas/FMT_hitprocess.cc
107  hitprocess/clas12/micromegas/fmt_strip.cc
108  hitprocess/clas12/micromegas/BMT_hitprocess.cc
109  hitprocess/clas12/micromegas/bmt_strip.cc
110  hitprocess/clas12/micromegas/ftm_hitprocess.cc
111  hitprocess/clas12/micromegas/ftm_strip.cc
112  hitprocess/clas12/bonus_hitprocess.cc
113  hitprocess/clas12/svt/bst_hitprocess.cc
114  hitprocess/clas12/svt/bst_strip.cc
115  hitprocess/clas12/ctof_hitprocess.cc
116  hitprocess/clas12/cnd_hitprocess.cc
117  hitprocess/clas12/dc_hitprocess.cc
118  hitprocess/clas12/ec_hitprocess.cc
119  hitprocess/clas12/ecs_hitprocess.cc
120  hitprocess/clas12/ftof_hitprocess.cc
121  hitprocess/clas12/ft_cal_hitprocess.cc
122  hitprocess/clas12/ft_hodo_hitprocess.cc
123  hitprocess/clas12/htcc_hitprocess.cc
124  hitprocess/clas12/ltcc_hitprocess.cc
125  hitprocess/clas12/pcal_hitprocess.cc
126  hitprocess/clas12/rich_hitprocess.cc
127  hitprocess/bdx/cormo_hitprocess.cc
128  hitprocess/bdx/veto_hitprocess.cc
129  hitprocess/bdx/crs_hitprocess.cc
130  hitprocess/injector/bubble_hitprocess.cc
131  hitprocess/HPS/ECAL_hitprocess.cc
132  hitprocess/HPS/SVT_hitprocess.cc
133  hitprocess/HPS/muon_hodo_hitprocess.cc""")
134 env.Library(source = hitp_sources, target = "lib/hitprocess")
135 
136 
137 # Output
138 env.Append(CPPPATH = 'output')
139 output_sources = Split("""
140  output/outputFactory.cc
141  output/evio_output.cc
142  output/txt_output.cc
143  output/gbank.cc""")
144 env.Library(source = output_sources, target = "lib/output")
145 
146 # GUI
147 env.Append(CPPPATH = 'gui/src')
148 gui_sources = Split("""
149  gui/src/gemc_MainGui.cc
150  gui/src/detector_editor.cc
151  gui/src/runControl/run_control.cc
152  gui/src/runControl/primaryTab.cc
153  gui/src/runControl/momControls.cc
154  gui/src/runControl/vtxControls.cc
155  gui/src/camera_control.cc
156  gui/src/detector_tree.cc
157  gui/src/infos.cc
158  gui/src/g4dialog.cc
159  gui/src/gsignal.cc
160  gui/src/physicsListGui.cc
161  gui/src//gtrigger.cc
162  utilities/graph.cc""")
163 env.Library(source = gui_sources, target = "lib/gui")
164 
165 
166 # gemc
167 env.Append(CPPPATH = 'src')
168 gemc_sources = Split("""
169  gemc.cc
170  src/dmesg_init.cc
171  src/run_conditions.cc
172  src/gemc_options.cc
173  src/MDetectorConstruction.cc
174  src/MDetectorMessenger.cc
175  src/MEventAction.cc
176  src/MPrimaryGeneratorAction.cc
177  src/ActionInitialization.cc
178  src/MSteppingAction.cc""")
179 
180 env.Append(LIBPATH = ['lib'])
181 env.Prepend(LIBS = ['materials', 'mirrors', 'parameters', 'utilities', 'detector', 'sensitivity', 'physics', 'fields', 'hitprocess', 'output', 'gui'])
182 env.Program(source = gemc_sources, target = "gemc")
183 
184 
185 if env['LIBRARY'] == "static":
186  env.Library(source = gemc_sources, target = "gemc")
187 
188 
189 if env['LIBRARY'] == "shared":
190  env.SharedLibrary(source = gemc_sources, target = "gemc")
191 
192 
193 
194 
195 
196 
197