summaryrefslogtreecommitdiff
path: root/detectors/__init__.py
blob: 8550751d89a3dcd4c166c2673981e27835eb696f (plain)
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
from lbne import build_lbne
from sno import build_sno as build_sno_detector

import os
import sys
import inspect

dir = os.path.split(os.path.realpath(__file__))[0]
sys.path.append(dir + '/..')

from view import buildable

# 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]()