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