Public Member Functions | |
def | __init__ |
def | initialize |
def | execute |
def | finalize |
def | fileBase |
def | getCommandLine |
Public Attributes | |
fss | |
opened | |
tomark | |
marked | |
site | |
startTime | |
endTime | |
Static Public Attributes | |
int | SITE_SAB = 32 |
Private Member Functions | |
def | _make_sems |
def | _listify |
def | _update_output_files |
def | _make_one_sem |
Definition at line 5 of file SpadeAlgo.py.
def SpadeSvc::SpadeAlgo::SpadeAlgo::__init__ | ( | self, | ||
name = "SpadeAlg" | ||||
) |
Definition at line 9 of file SpadeAlgo.py.
00009 : 00010 DybPythonAlg.__init__(self, name) 00011 self.fss = None 00012 self.opened = [] 00013 self.tomark = [] 00014 self.marked = [] 00015 import DybPython.Control 00016 DybPython.Control.nuwa.spadeSvc = self 00017 return 00018 00019 def initialize(self):
def SpadeSvc::SpadeAlgo::SpadeAlgo::initialize | ( | self | ) |
Definition at line 20 of file SpadeAlgo.py.
00020 : 00021 status = DybPythonAlg.initialize(self) 00022 if status.isFailure(): return status 00023 00024 self.site = None 00025 self.startTime = None 00026 self.endTime = None 00027 self.fss = self.svc('IRootIOFileStateSvc','RootIOFileStateSvc') 00028 00029 self.debug('Initialized "%s"' % self.name()) 00030 return status 00031 00032 def execute(self):
def SpadeSvc::SpadeAlgo::SpadeAlgo::execute | ( | self | ) |
Definition at line 33 of file SpadeAlgo.py.
00033 : 00034 # Get this event's time from the TES 00035 #eventTime = self.get('/Event/...') 00036 header = self.get('/Event/Readout/ReadoutHeader') 00037 if None == header: 00038 self.debug("Got no ReadoutHeader") 00039 return SUCCESS 00040 from time import gmtime, strftime, timezone 00041 data = header.readout() 00042 if not data: 00043 data = header.daqCrate() 00044 if not data: 00045 self.warning("got no readout nor daqcrate from ReadoutHeader") 00046 return SUCCESS 00047 00048 eventTime = data.triggerTime().GetSeconds() 00049 00050 #self.debug('Site Value: %s'% header.context().GetSite()) 00051 #self.debug( "event time %s thish is %s" % \ 00052 # ( eventTime strftime('%Y-%m-%dT%H:%M:%S', gmtime(eventTime)))) 00053 if None == self.startTime: 00054 self.site = header.context().GetSite() 00055 self.startTime = eventTime 00056 self.endTime = eventTime 00057 00058 self._update_output_files() 00059 self._make_sems(self.tomark) 00060 return SUCCESS 00061 00062 def finalize(self):
def SpadeSvc::SpadeAlgo::SpadeAlgo::finalize | ( | self | ) |
Definition at line 63 of file SpadeAlgo.py.
00063 : 00064 # NB: this is not a race condition as we delay the .meta.xml 00065 # to .sem conversion until after the running stops. This is 00066 # done in DybPython.Control.nuwa 00067 self.debug("final cleanup") 00068 self._update_output_files() 00069 self._make_sems(self.tomark) 00070 self._make_sems(self.opened) 00071 return DybPythonAlg.finalize(self) 00072 00073 def _make_sems(self,filenames):
def SpadeSvc::SpadeAlgo::SpadeAlgo::_make_sems | ( | self, | ||
filenames | ||||
) | [private] |
Definition at line 74 of file SpadeAlgo.py.
00074 : 00075 'Make sem files corresponding to all given filenames' 00076 self.debug('marking: %s'%filenames) 00077 00078 # make copy so the .remove() later doesn't mess up what we are 00079 # iterating on 00080 filenames = list(filenames) 00081 00082 for fn in filenames: 00083 self._make_one_sem(fn) 00084 self.marked.append(fn) 00085 self.debug('marked= %s' % self.marked) 00086 self.debug('tomark= %s' % self.tomark) 00087 try: 00088 self.tomark.remove(fn) 00089 except ValueError: 00090 pass 00091 continue 00092 return 00093 00094 def _listify(self,vector):
def SpadeSvc::SpadeAlgo::SpadeAlgo::_listify | ( | self, | ||
vector | ||||
) | [private] |
Definition at line 95 of file SpadeAlgo.py.
00095 : 00096 'Turn an STL vector into a Python list' 00097 l = [] 00098 siz = vector.size() 00099 for ind in range(siz): 00100 l.append(vector[ind]) 00101 return l 00102 00103 def _update_output_files(self):
def SpadeSvc::SpadeAlgo::SpadeAlgo::_update_output_files | ( | self | ) | [private] |
Definition at line 104 of file SpadeAlgo.py.
00104 : 00105 'Update list of opened and tomark files' 00106 self.opened = self._listify(self.fss.openOutput()) 00107 00108 closed = self._listify(self.fss.closedOutput()) 00109 for fn in closed: 00110 if fn not in self.marked and fn not in self.tomark: 00111 self.debug('new file to mark: "%s"'%fn) 00112 self.tomark.append(fn) 00113 pass 00114 continue 00115 return 00116 def _make_one_sem(self,filename):
def SpadeSvc::SpadeAlgo::SpadeAlgo::_make_one_sem | ( | self, | ||
filename | ||||
) | [private] |
Definition at line 117 of file SpadeAlgo.py.
00117 : 00118 'Make a sem file based on given filename' 00119 00120 self.debug('making sem file for "%s"'%filename) 00121 00122 from Metadata import Metadata 00123 from os.path import basename 00124 00125 basePath = self.fileBase(filename) 00126 metadata = Metadata(basename(basePath)) 00127 00128 try: 00129 metadata.subcategory = self.subcategory 00130 except AttributeError: 00131 metadata.subcategory = 'unclassified' 00132 00133 # default to SAB for MDC code 00134 if None != self.site: 00135 metadata.sensor = metadata.SENSOR_SAB 00136 00137 from time import gmtime, strftime 00138 if None == self.startTime: 00139 start = gmtime() 00140 else: 00141 start = gmtime(int(self.startTime) - 1) 00142 pass 00143 metadata.startTime = start 00144 if None == self.endTime: 00145 end = gmtime() 00146 else: 00147 end = gmtime(int(self.endTime) + 1) 00148 pass 00149 metadata.endTime = end 00150 00151 metadata.commandLine = self.getCommandLine() 00152 outFile = open(basePath + '.meta.xml', 'w') 00153 outFile.write(metadata.createXML().toxml()) 00154 outFile.close() 00155 return SUCCESS 00156 def fileBase(self,
def SpadeSvc::SpadeAlgo::SpadeAlgo::fileBase | ( | self, | ||
filename | ||||
) |
Definition at line 157 of file SpadeAlgo.py.
00158 : 00159 cut = filename.rfind('.') 00160 if -1 == cut: 00161 return filename 00162 return filename[:cut] 00163 def getCommandLine(self):
def SpadeSvc::SpadeAlgo::SpadeAlgo::getCommandLine | ( | self | ) |
Definition at line 164 of file SpadeAlgo.py.
00164 : 00165 import sys 00166 result = '' 00167 for arg in sys.argv: 00168 if 0 != len(result): 00169 result += ' ' 00170 quote = '' 00171 if -1 != arg.find(' '): 00172 quote = '"' 00173 result += quote 00174 result += arg.replace('"', 00175 '\\"') + quote 00176 return result return result
int SpadeSvc::SpadeAlgo::SpadeAlgo::SITE_SAB = 32 [static] |
Definition at line 7 of file SpadeAlgo.py.
Definition at line 11 of file SpadeAlgo.py.
Definition at line 12 of file SpadeAlgo.py.
Definition at line 13 of file SpadeAlgo.py.
Definition at line 14 of file SpadeAlgo.py.
Definition at line 24 of file SpadeAlgo.py.
Definition at line 25 of file SpadeAlgo.py.
Definition at line 26 of file SpadeAlgo.py.