| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

SpadeSvc::SpadeAlgo::SpadeAlgo Class Reference

List of all members.

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

Detailed Description

Definition at line 5 of file SpadeAlgo.py.


Member Function Documentation

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


Member Data Documentation

int SpadeSvc::SpadeAlgo::SpadeAlgo::SITE_SAB = 32 [static]

Definition at line 7 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::fss

Definition at line 11 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::opened

Definition at line 12 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::tomark

Definition at line 13 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::marked

Definition at line 14 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::site

Definition at line 24 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::startTime

Definition at line 25 of file SpadeAlgo.py.

SpadeSvc::SpadeAlgo::SpadeAlgo::endTime

Definition at line 26 of file SpadeAlgo.py.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:12:48 2011 for SpadeSvc by doxygen 1.4.7