diff --git a/pykat/detectors.py b/pykat/detectors.py index 08e4466ec9a4e9872348229b1acaa0a55c73787d..d33d7e27accebfa1b760955b747343f24b121815 100644 --- a/pykat/detectors.py +++ b/pykat/detectors.py @@ -51,53 +51,48 @@ class Detector(object) : class photodiode(Detector): - class F: + class __F(list): def __init__(self, values=None): - if values is None: - self.values = [] - else: - self.values = values - - def __len__(self): - return len(self.values) - - def __getitem__(self, key): - # if key is of invalid type or value, the list values will raise the error - return self.values[key] - + if values==None: + values = [] + list.__init__(self,[SIfloat(value) for value in values]) + def __setitem__(self, key, value): - print "setting" - self.values[key] = SIfloat(value) + list.__setitem__(self,key, SIfloat(value)) - - class Phi(): - def __init__(self, values=None): - print values - if values is None: - self.values = [] + ### todo add append with SIfloat + + class __Phi(list): + def __convertValue(self, value): + if value=="max": + return value else: - self.values = values + return SIfloat(value) + + def __init__(self, values=None): + if values==None: + values = [] + list.__init__(self,[self.__convertValue(value) for value in values]) def __getitem__(self, key): # probably not needed - print "boom" - if self.values[key]=="max": - return self.values[key] + if list.__getitem__(self,key)=="max": + return list.__getitem__(self,key) else: - return float(self.values[key]) + return float(list.__getitem__(self,key)) def __setitem__(self,key,value): - if value=="max": - self.values[key] = value - else: - self.values[key] = SIfloat(value) - def append(self, value): - self.values.append(value) + list.__setitem__(self,key, self.__convertValue(value)) + ### todo add append with convertValue + + @property - def f(self): return self.F('f', self.__f) - @f.setter - def f(self, key, value): self.__f[key]=value + def f(self): return self.__f + @property + def phi(self): return self.__phi + + def __init__(self, name, node, senstype=None, num_demods=0, demods=[]): Detector.__init__(self, name, node) if num_demods>2: @@ -106,15 +101,12 @@ class photodiode(Detector): self.senstype = senstype # every second element into f (starting at 1) - self.__f = self.F(demods[::2]) + self.__f = self.__F(demods[::2]) # Every second element into phi (starting at 2) - self.__phi = self.Phi() + self.__phi = self.__Phi() for i in demods[1::2]: - self.__phi.append(i) - print self.__phi - print self.__phi[0] - + self.__phi.append(i) @staticmethod def parseFinesseText(text):