# ========================================================================== # AIDA Detector description implementation # -------------------------------------------------------------------------- # Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) # All rights reserved. # # For the licensing terms see $DD4hepINSTALL/LICENSE. # For the list of contributors see $DD4hepINSTALL/doc/CREDITS. # # ========================================================================== from __future__ import absolute_import, unicode_literals import dd4hep as core import logging logger = logging.getLogger(__name__) def loadDDRec(): from ROOT import gSystem result = gSystem.Load("libDDRec") if result < 0: raise Exception('DDG4.py: Failed to load the DDG4 library libDDRec: ' + gSystem.GetErrorStr()) from ROOT import dd4hep as module core.rec = module.rec return module.rec # We are nearly there .... name_space = __import__(__name__) def import_namespace_item(ns, nam): scope = getattr(name_space, ns) attr = getattr(scope, nam) setattr(name_space, nam, attr) return attr # --------------------------------------------------------------------------- # try: rec = loadDDRec() except Exception as X: logger.error('+--%-100s--+', 100 * '-') logger.error('| %-100s |', 'Failed to load DDRec library:') logger.error('| %-100s |', str(X)) logger.error('+--%-100s--+', 100 * '-') exit(1) def import_rec(): import_namespace_item('rec', 'CellIDPositionConverter') import_namespace_item('rec', 'FixedPadSizeTPCStruct') import_namespace_item('rec', 'ZPlanarStruct') import_namespace_item('rec', 'ZPlanarStruct::LayerLayout') import_namespace_item('rec', 'ZDiskPetalsStruct') import_namespace_item('rec', 'ZDiskPetalsStruct::LayerLayout') import_namespace_item('rec', 'ConicalSupportStruct') import_namespace_item('rec', 'LayeredCalorimeterStruct') import_namespace_item('rec', 'LayeredCalorimeterStruct::Layer') import_namespace_item('rec', 'NeighbourSurfacesStruct') import_namespace_item('rec', 'DetectorSurfaces') import_namespace_item('rec', 'IMaterial') import_namespace_item('rec', 'ISurface') import_namespace_item('rec', 'ICylinder') import_namespace_item('rec', 'ICone') import_namespace_item('rec', 'SurfaceType') import_namespace_item('rec', 'MaterialData') import_namespace_item('rec', 'MaterialManager') import_namespace_item('rec', 'VolSurfaceBase') import_namespace_item('rec', 'VolSurface') import_namespace_item('rec', 'VolSurfaceList') import_namespace_item('rec', 'VolPlaneImpl') import_namespace_item('rec', 'VolCylinderImpl') import_namespace_item('rec', 'VolConeImpl') import_namespace_item('rec', 'Surface') import_namespace_item('rec', 'CylinderSurface') import_namespace_item('rec', 'ConeSurface') import_namespace_item('rec', 'SurfaceList') import_namespace_item('rec', 'Vector2D') import_namespace_item('rec', 'Vector3D') import_namespace_item('rec', 'SurfaceManager') import_namespace_item('rec', 'FixedPadSizeTPCData') import_namespace_item('rec', 'ZPlanarData') import_namespace_item('rec', 'ZDiskPetalsData') import_namespace_item('rec', 'ConicalSupportData') import_namespace_item('rec', 'LayeredCalorimeterData') import_namespace_item('rec', 'NeighbourSurfacesData') # Now instantiate the entire thing import_rec() std_list_ISurface = core.std_list('ISurface*') std_list_VolSurface = core.std_list('VolSurface')