Skip to content
Snippets Groups Projects
DDRec.py 3.48 KiB
Newer Older
#==========================================================================
Marko Petric's avatar
Marko Petric committed
#  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 logging

logging.basicConfig(format='%(levelname)s: %(message)s')
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

import dd4hep as core
Marko Petric's avatar
Marko Petric committed

def loadDDRec():
  from ROOT import gSystem
  result = gSystem.Load("libDDRec")
  if result < 0:
Marko Petric's avatar
Marko Petric committed
    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
Marko Petric's avatar
Marko Petric committed

# We are nearly there ....
name_space = __import__(__name__)
Marko Petric's avatar
Marko Petric committed


def import_namespace_item(ns, nam):
  scope = getattr(name_space, ns)
  attr = getattr(scope, nam)
  setattr(name_space, nam, attr)
Marko Petric's avatar
Marko Petric committed

#---------------------------------------------------------------------------
#
try:
  rec = loadDDRec()
except Exception as X:
Marko Petric's avatar
Marko Petric committed
  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():
Marko Petric's avatar
Marko Petric committed
  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()
Marko Petric's avatar
Marko Petric committed
std_list_ISurface = core.std_list('ISurface*')
std_list_VolSurface = core.std_list('VolSurface')