Changeset 13356 for fact/tools/pyscripts/pyfact/pyfact.py
- Timestamp:
- 04/17/12 09:16:41 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fact/tools/pyscripts/pyfact/pyfact.py
r13329 r13356 1 1 #!/usr/bin/python -tt 2 2 # 3 # Werner Lustermann 4 # ETH Zurich 3 # Werner Lustermann, Dominik Neise 4 # ETH Zurich, TU Dortmund 5 5 # 6 6 from ctypes import * … … 10 10 # get the ROOT stuff + my shared libs 11 11 from ROOT import gSystem 12 # fitslib.so is made from fits.h and is used to access the data 13 gSystem.Load('fits_h.so') 12 # pyfits_h.so is made from pyfits.h and is used to access the data 13 # make sure the location of pyfits_h.so is in LD_LIBRARY_PATH. 14 # having it in PYTHONPATH is *not* sufficient 15 gSystem.Load('pyfits_h.so') 14 16 from ROOT import * 17 18 class RawDataFeeder( object ): 19 """ Wrapper class for RawData class 20 capable of iterating over multiple RawData Files 21 """ 22 23 def __init__(self, filelist): 24 """ *filelist* list of files to iterate over 25 the list should contain tuples, or sublists of two filenames 26 the first should be a data file (\*.fits.gz) 27 the second should be an amplitude calibration file(\*.drs.fits.gz) 28 """ 29 # sanity check for input 30 if type(filelist) != type(list()): 31 raise TypeError('filelist should be a list') 32 for entry in filelist: 33 if len(entry) != 2: 34 raise TypeError('the entries of filelist should have length == 2') 35 for path in entry: 36 if type(path) != type(str()): 37 raise TypeError('the entries of filelist should be path, i.e. of type str()') 38 #todo check if 'path' is a valid path 39 # else: throw an Exception, or Warning? 40 41 self.filelist = filelist 42 self._current_RawData = RawData(filelist[0][0], filelist[0][1], return_dict=True) 43 del filelist[0] 44 45 def __iter__(self): 46 return self 47 48 def next(): 49 """ Method being called by the iterator. 50 Since the RawData Objects are simply looped over, the event_id from the 51 RawData object will not be unique. 52 Each RawData obejct will start with event_id = 1 as usual. 53 """ 54 try: 55 return self._current_RawData.next() 56 except StopIteration: 57 # current_RawData was completely processed 58 # delete it (I hope this calls the destructor of the fits file and/or closes it) 59 del self._current_RawData 60 # and remake it, if possible 61 if len(self.filelist) > 0: 62 self._current_RawData = RawData(filelist[0][0], filelist[0][1], return_dict=True) 63 del filelist[0] 64 else: 65 raise 66 15 67 16 68 … … 336 388 if run.event_id.value == nevents: 337 389 break 338 339 390 340 391 if __name__ == '__main__':
Note:
See TracChangeset
for help on using the changeset viewer.