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
|
from lbne import build_lbne
from sno import build_sno as build_sno_detector
from chroma.camera import buildable
import inspect
# from LBNE document #3951
radius = 63.30/2
height = 76.60
nstrings = 230
pmts_per_string = 88
endcap_spacing = 0.86
@buildable('lbne_event_view')
def build_lbne_200kton_event_view():
return build_lbne(radius, height, nstrings, pmts_per_string, endcap_spacing, physical_model=False)
@buildable('lbne')
def build_lbne_200kton():
return build_lbne(radius, height, nstrings, pmts_per_string, endcap_spacing)
@buildable('minilbne')
def build_minilbne():
return build_lbne(radius/10, height/10, nstrings//10, pmts_per_string//10, endcap_spacing)
@buildable('microlbne')
def build_microlbne():
return build_lbne(radius/40, height/40, nstrings//40, pmts_per_string//40, endcap_spacing)
@buildable('sno')
def build_sno():
return build_sno_detector()
@buildable('real_sno')
def build_real_sno():
return build_sno_detector(real_av=True)
def find(detector_name):
members = globals()
buildable_lookup = {}
for member in members.values():
if inspect.isfunction(member) and \
hasattr(member, 'buildable') and member.buildable == True:
buildable_lookup[member.identifier] = member
if detector_name in buildable_lookup:
return buildable_lookup[detector_name]()
|