from Ganga.GPIDev.Schema import * from Ganga.GPIDev.Base import GangaObject from Ganga.GPIDev.Schema import * from Ganga.GPIDev.Adapters.IPostProcessor import IPostProcessor import os class TbEosUpload(IPostProcessor): _schema = IPostProcessor._schema.inherit_copy() _schema.datadict['files'] = SimpleItem(defvalue=[], doc='Files to upload') _schema.datadict['prefix'] = SimpleItem(defvalue="",doc='Prefix to uploaded file') _category = 'postprocessor' _name = 'TbEosUpload' _exportmethods = ['execute'] def execute(self,job,newstatus): eos_cp="/afs/cern.ch/project/eos/installation/0.3.15/bin/eos.select cp" counter=0 for run in job.splitter.Files.keys(): j=job.subjobs(counter) if j.status == 'completed': rootpath = "/eos/lhcb/testbeam/velo/timepix3/%s/RootFiles/Run%d/" %( job.splitter.Month, run ) if 'Alignment' in self.files: source="%sAlignment_out.dat" %( j.outputdir ) if os.path.isfile( source ): sink="%sConditions/%sAlignment%dmille.dat" %(rootpath, self.prefix, run ) os.system(eos_cp+" "+source+" "+sink+" "+">/dev/null") else : print source + " does not exist" if 'Tuple' in self.files: source="%sKepler-tuple.root" %( j.outputdir ) sink="%sOutput/%sKepler-tuple-%d.root" %(rootpath, self.prefix, run ) os.system(eos_cp+" "+source+" "+sink+" "+">/dev/null") if 'Histograms' in self.files: source="%sKepler-histos.root" %( j.outputdir ) sink="%sOutput/%sKepler-histos-%d.root" %(rootpath,self.prefix, run ) os.system(eos_cp+" "+source+" "+sink+" "+">/dev/null") if 'TimingConfig' in self.files: source="%sTimingConfig.dat" %( j.outputdir ) sink = "%sConditions/%sTimingConfig.dat" %(rootpath,self.prefix) os.system(eos_cp+" "+source+" "+sink+" "+">/dev/null") counter = counter + 1 return True