![]() |
|
|
Generated: 8 Jan 2009 |
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()