Skip to content
Snippets Groups Projects
dumpDetectorData.py 2.69 KiB
Newer Older
#!/bin/python
#==========================================================================
#  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.
#
#==========================================================================

import sys, errno, optparse, logging


def dumpData( det ):
  try:
    dat = DDRec.FixedPadSizeTPCData(det)
    print dat.toString()
  except:
    pass
  try:
    dat = DDRec.ZPlanarData(det)
    print dat.toString()
  except:
    pass
  try:
    dat = DDRec.ZDiskPetalsData(det)
    print dat.toString()
  except:
    pass
  try:
    dat = DDRec.ConicalSupportData(det)
    print dat.toString()
  except:
    pass
  try:
    dat = DDRec.LayeredCalorimeterData(det)
    print dat.toString()
  except:
    pass
  try:
    dat = DDRec.NeighbourSurfacesStruct(det)
    print dat.toString()
  except:
    pass





logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
parser = optparse.OptionParser()
parser.formatter.width = 132
parser.description = "Dump detector data objects from DDRec"
parser.add_option("-c", "--compact", dest="compact", default=None,
                  help="Define LCCDD style compact xml input",
		  metavar="<FILE>")

(opts, args) = parser.parse_args()

if opts.compact is None:
  logging.info("    %s",parser.format_help())
  sys.exit(1)

try:
  import ROOT
  from ROOT import gROOT
  gROOT.SetBatch(1)
except ImportError,X:
  logging.error('PyROOT interface not accessible: %s',str(X))
  logging.error("%s",parser.format_help())
  sys.exit(errno.ENOENT)

try:
  import DD4hep
except ImportError,X:
  logging.error('dd4hep python interface not accessible: %s',str(X))
  logging.error("%s",parser.format_help())
  sys.exit(errno.ENOENT)
#
try:
  import DDRec
except ImportError,X:
  logging.error('ddrec python interface not accessible: %s',str(X))
  logging.error("%s",parser.format_help())
  sys.exit(errno.ENOENT)
#

DD4hep.setPrintLevel(DD4hep.OutputLevel.ERROR)
logging.info('+++%s\n+++ Loading compact geometry:%s\n+++%s',120*'=',opts.compact,120*'=')



description = DD4hep.Detector.getInstance()
description.fromXML(opts.compact)


## ------ loop over detectors and print their detector data objects

for n,d in description.detectors():

    print 
    print " ------------- detector :  " , d.name()
    print 

    det = description.detector( n ) 

    dumpData(det)

##-----------------------------------------------------------------


logging.info('+++ Execution finished...')
sys.exit(0)