DD4hep  01.18
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
dumpDetectorData.py
Go to the documentation of this file.
1 #!/bin/python
2 # ==========================================================================
3 # AIDA Detector description implementation
4 # --------------------------------------------------------------------------
5 # Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
6 # All rights reserved.
7 #
8 # For the licensing terms see $DD4hepINSTALL/LICENSE.
9 # For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
10 #
11 # ==========================================================================
12 
13 from __future__ import absolute_import, unicode_literals
14 import sys
15 import errno
16 import optparse
17 import logging
18 
19 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
20 logger = logging.getLogger(__name__)
21 
22 
23 def dumpData(det):
24  try:
25  dat = DDRec.FixedPadSizeTPCData(det)
26  logger.info(dat.toString())
27  except Exception:
28  pass
29  try:
30  dat = DDRec.ZPlanarData(det)
31  logger.info(dat.toString())
32  except Exception:
33  pass
34  try:
35  dat = DDRec.ZDiskPetalsData(det)
36  logger.info(dat.toString())
37  except Exception:
38  pass
39  try:
40  dat = DDRec.ConicalSupportData(det)
41  logger.info(dat.toString())
42  except Exception:
43  pass
44  try:
45  dat = DDRec.LayeredCalorimeterData(det)
46  logger.info(dat.toString())
47  except Exception:
48  pass
49  try:
50  dat = DDRec.NeighbourSurfacesStruct(det)
51  logger.info(dat.toString())
52  except Exception:
53  pass
54 
55 
56 parser = optparse.OptionParser()
57 parser.formatter.width = 132
58 parser.description = "Dump detector data objects from DDRec"
59 parser.add_option("-c", "--compact", dest="compact", default=None,
60  help="Define LCCDD style compact xml input",
61  metavar="<FILE>")
62 
63 (opts, args) = parser.parse_args()
64 
65 if opts.compact is None:
66  logger.info(" %s", parser.format_help())
67  sys.exit(1)
68 
69 try:
70  from ROOT import gROOT
71  gROOT.SetBatch(1)
72 except ImportError as X:
73  logger.error('PyROOT interface not accessible: %s', str(X))
74  logger.error("%s", parser.format_help())
75  sys.exit(errno.ENOENT)
76 
77 try:
78  import dd4hep
79 except ImportError as X:
80  logger.error('dd4hep python interface not accessible: %s', str(X))
81  logger.error("%s", parser.format_help())
82  sys.exit(errno.ENOENT)
83 #
84 try:
85  import DDRec
86 except ImportError as X:
87  logger.error('ddrec python interface not accessible: %s', str(X))
88  logger.error("%s", parser.format_help())
89  sys.exit(errno.ENOENT)
90 #
91 
92 dd4hep.setPrintLevel(dd4hep.OutputLevel.ERROR)
93 logger.info('+++%s\n+++ Loading compact geometry:%s\n+++%s', 120 * '=', opts.compact, 120 * '=')
94 
95 
96 description = dd4hep.Detector.getInstance()
97 description.fromXML(opts.compact)
98 
99 
100 # ------ loop over detectors and print their detector data objects
101 
102 for n, d in description.detectors():
103 
104  logger.info("")
105  logger.info(" ------------- detector : %s", d.name())
106  logger.info("")
107 
108  det = description.detector(n)
109 
110  dumpData(det)
111 
112 # -----------------------------------------------------------------
113 
114 
115 logger.info('+++ Execution finished...')
116 sys.exit(0)