Gaudi Framework, version v20r4

Generated: 8 Jan 2009

CollectionMerge.py

Go to the documentation of this file.
00001 import os, sys, gaudimodule
00002 
00003 class CollectionMerge:
00004   def __init__(self):
00005     self.merger_input  = []
00006     self.merger_output = []
00007     self.input         = []
00008     self.output        = []
00009     self.appMgr = gaudimodule.AppMgr()
00010     self.appMgr.EvtMax = 1
00011     self.appMgr.EvtSel = 'NONE'
00012     self.appMgr.Dlls   += ['GaudiPoolDb']
00013     self.appMgr.ExtSvc += ['PoolDbCacheSvc','TagCollectionSvc']
00014     self.appMgr.service('PoolRootEvtCnvSvc').DbType     = 'POOL_ROOT'
00015     self.appMgr.service('PoolRootKeyEvtCnvSvc').DbType  = 'POOL_ROOTKEY'
00016     self.appMgr.service('PoolRootTreeEvtCnvSvc').DbType = 'POOL_ROOTTREE'
00017     self.appMgr.service('PoolDbCacheSvc').Dlls          = ['lcg_RootStorageSvc','lcg_XMLCatalog','SealSTLDict']
00018     self.appMgr.service('PoolDbCacheSvc').OutputLevel   = 4
00019     self.appMgr.topAlg += ['CollectionCloneAlg']
00020     self.collSvc = self.appMgr.service('TagCollectionSvc')
00021     self.merger=self.appMgr.algorithm('CollectionCloneAlg')
00022     self.merger.EvtTupleSvc = 'TagCollectionSvc'
00023 
00024   def finalize(self):
00025     self.appMgr.finalize()
00026     self.appMgr.exit()
00027 
00028   def defineInput(self,tuple,file,typ='POOL_ROOTTREE'):
00029     num_input = len(self.input)
00030     log_name = 'INPUT_'+str(num_input)
00031     tup_name = log_name+'/'+tuple
00032     self.merger_input.append(tup_name)
00033     self.input.append(log_name + " DATAFILE='"+file+"' OPT='READ' TYP='"+typ+"'")
00034 
00035   def defineOutput(self,tuple,file,selector=None,criteria=None,opt='RECREATE',typ='POOL_ROOTTREE'):
00036     self.output = ['OUTPUT' + " DATAFILE='"+file+"' OPT='"+opt+"' TYP='"+typ+"'"]
00037     self.merger_output = "DATA='OUTPUT/"+tuple+"'"
00038     if ( criteria is not None ):
00039       self.merger_output  = self.merger_output  + " SEL='"+criteria+"'"
00040     if ( selector is not None ):
00041       self.merger_output  = self.merger_output  + " FUN='"+selector+"'"
00042     print self.merger_output
00043 
00044   def execute(self, do_finalize=1):
00045     self.collSvc.Input = self.input
00046     self.collSvc.Output = self.output
00047     self.merger.Input = self.merger_input
00048     self.merger.Output = self.merger_output
00049     self.appMgr.initialize()
00050     self.appMgr.algorithm('CollectionCloneAlg').execute()
00051     if ( do_finalize ):
00052       self.finalize()
00053     
00054 if __name__ == '__main__':
00055   o = CollectionMerge()
00056   o.defineInput('Dir1/Dir2/Dir3/Collection','PFN:MyEvtCollection0.root')
00057   o.defineInput('Dir1/Dir2/Dir3/Collection','PFN:MyEvtCollection1.root')
00058   o.defineInput('Dir1/Dir2/Dir3/Collection','PFN:MyEvtCollection2.root')
00059   o.defineInput('Dir1/Dir2/Dir3/Collection','PFN:MyEvtCollection3.root')
00060   o.defineOutput(tuple='Merged',criteria='Ntrack>80',file='PFN:NewCollection.root',opt='RECREATE')
00061   o.execute()
00062   sys.exit()

Generated at Thu Jan 8 17:44:22 2009 for Gaudi Framework, version v20r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004