diff --git a/pykat/detectors.py b/pykat/detectors.py index 4f94cc975f277390dd42ef2fbb6e5c3819bb184f..3bab9565068a8de0cf4589fd84d6da8702f4ce54 100644 --- a/pykat/detectors.py +++ b/pykat/detectors.py @@ -81,12 +81,13 @@ class Detector(object) : class pd(Detector): - def __init__(self, name, num_demods, node_name, senstype=None, alternate_beam=False, **kwargs): + def __init__(self, name, num_demods, node_name, senstype=None, alternate_beam=False, pdtype=None, **kwargs): Detector.__init__(self, name, node_name) self.__num_demods = num_demods self.__senstype = senstype self.__alternate_beam = alternate_beam + self.__pdtype = pdtype # create the parameters for all 5 demodulations regardless # of how many the user specifies. Later we add properties to # those which correspond to the number of demodulations @@ -121,6 +122,11 @@ class pd(Detector): self.__senstype = value @property + def pdtype(self): return self.__pdtype + @pdtype.setter + def pdtype(self, value): self.__pdtype = value + + @property def num_demods(self): return self.__num_demods @num_demods.setter def num_demods(self, value): @@ -226,7 +232,7 @@ class photodiode(Detector): return list.__getitem__(self,key) else: return float(list.__getitem__(self,key)) - + @property def f(self): return self.__f @@ -304,6 +310,9 @@ class photodiode(Detector): if self.scale != None and self.scale !='': rtn.append("scale {1} {0}".format(self.name, self.scale)) + + if self.pdtype != None: + rtn.append("pdtype {1} {0}".format(self.name, self.pdtype)) if self.noplot: rtn.append("noplot {0}".format(self.name)) diff --git a/pykat/finesse.py b/pykat/finesse.py index c6bec39be26dfbb0ca9bfe308f90664ea763b3f6..c8dbc298f6f8ed44d3902bf5144d6739ba930463 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -282,6 +282,8 @@ class kat(object): after_process.append(line) elif(first == "scale"): after_process.append(line) + elif(first == "pdtype"): + after_process.append(line) elif(first == "noxaxis"): self.noxaxis = True elif(first == "phase"): @@ -339,6 +341,16 @@ class kat(object): self.scale = SIfloat(v[1]) else: raise pkex.BasePyKatException("scale command `{0}` is incorrect.".format(text)) + elif (first == "pdtype"): + v = line.split(" ") + if len(v) == 3: + component_name = v[1] + if component_name in self.__detectors : + self.__detectors[component_name].type = v[2] + else: + raise pkex.BasePyKatException("pdtype command `{0}` refers to non-existing detector".format(text)) + else: + raise pkex.BasePyKatException("pdtype command `{0}` is incorrect.".format(text)) @@ -614,7 +626,7 @@ class kat(object): if fragment in obj: print " ** removing line '{0}'".format(obj) objs.remove(obj) - + def generateKatScript(self) : """ Generates the kat file which can then be run """