00001
00002
00003
00004
00005
00006
00007 import os
00008 import gaudimodule as gaudi
00009 from Gaudi.Configuration import *
00010
00011 def init() :
00012
00013 importOptions( "$DDDBROOT/options/DDDB.py" )
00014 importOptions( "$DDDBROOT/options/DC06.py" )
00015
00016 g=gaudi.AppMgr()
00017
00018
00019 def run( volume , event = 1 ) :
00020 g = gaudi.AppMgr()
00021 g.TopAlg = ["VolumeCheckAlg/Check"]
00022
00023 alg = g.algorithm('Check')
00024 alg.Shots3D = 10000
00025 alg.ShotsXY = 10000
00026 alg.ShotsYZ = 10000
00027 alg.ShotsZX = 10000
00028 alg.Volume = volume
00029 g.run( event )
00030
00031 def _dir_ ( self , node = None , level = -1 ) :
00032 """
00033 The simple tool to perform the inspection fo Data Store
00034
00035 Usage:
00036
00037 evtSvc = gaudi.evtSvc()
00038 evtSvc.dir('MC')
00039 data = evtSvc['Rec/Calo']
00040 evtSvc.dir( data)
00041
00042 """
00043 if 0 == level : return gaudi.SUCCESS ;
00044 if str is type(node) : node = self.retrieveObject( node )
00045 elif not node : return self.dir('', level )
00046 if not node : return gaudi.FAILURE
00047 if hasattr ( node , 'registry' ) : node = node.registry()
00048 if hasattr ( node , 'identifier' ) :
00049 obj = node.object ()
00050 if not obj :
00051 obj = self.retrieveObject( node.identifier() )
00052 print node.identifier()
00053 else :
00054 if hasattr( obj , 'size' ) :
00055 size = obj.size()
00056 if 0 == size : print "%s (empty) %s" % ( node.identifier() , type( obj ) )
00057 elif hasattr ( obj , 'containedObjects' ) :
00058 c = obj.containedObjects()[0]
00059 print "%s container of %d %s objects " % ( node.identifier() , obj.size() , type(c))
00060 else :
00061 print "%s %s " % ( node.identifier() , type( node.object()) )
00062 else :
00063 print "%s %s " % ( node.identifier() , type( node.object()) )
00064 else : print "The node has no 'identifier'"
00065
00066 for l in self.leaves( node ) :
00067 if l : self.dir( l , level - 1 )
00068 return gaudi.SUCCESS
00069
00070 def _get_( self , node = None , cut = lambda x : True ) :
00071 if str is type(node) : node = self.retrieveObject( node )
00072 elif not node : return _get_( self , '' , cut )
00073 if not node : return []
00074 if hasattr ( node , 'registry' ) : node = node.registry()
00075 result = []
00076 if hasattr ( node , 'identifier' ) :
00077 obj = node.object()
00078 if cut( obj ) : result += [ obj ]
00079 for l in self.leaves ( node ) :
00080 if l : result += _get_( self , l , cut )
00081 return result
00082
00083 gaudi.iDataSvc.dir = _dir_
00084 gaudi.iDataSvc.DIR = _get_
00085
00086
00087 if "__main__" == __name__ :
00088 init()
00089 run ("/dd/Geometry/MagnetRegion/Magnet/Magnet")
00090
00091