From 328f1b8862a9f7c91de7be95d5024a2e26656740 Mon Sep 17 00:00:00 2001
From: Andreas Freise <adf@star.bham.ac.uk>
Date: Thu, 5 Dec 2013 00:32:52 +0000
Subject: [PATCH] pd object still not working, just backing up.

---
 pykat/detectors.py | 96 +++++++++++++++++++++++++++++-----------------
 pykat/finesse.py   |  1 +
 2 files changed, 62 insertions(+), 35 deletions(-)

diff --git a/pykat/detectors.py b/pykat/detectors.py
index 95ce2d9..2b2d876 100644
--- a/pykat/detectors.py
+++ b/pykat/detectors.py
@@ -48,56 +48,82 @@ class Detector(object) :
     name = property(__getname)
 
 class photodiode(Detector):
+
+    class f(list):
+        def __init__(self, values=None):
+            print "tadaaaaaaaaaaaaaaa"
+            if values is None:
+                self.values = []
+            else:
+                self.values = values
+
+        def __getitem__(self,key):
+            return self.values[key]
+
+        def __setitem__(self,key,value):
+            self.values[key] = SIfloat(value)
+
+    class phi(list):
+        def __init__(self, values=None):
+            print values
+            if values is None:
+                self.values = []
+            else:
+                self.values = values
+
+        def __getitem__(self, key): # probably not needed
+            print "boom"
+            if self.values[key]=="max":
+                return self.values[key]
+            else:
+                return float(self.values[key])
             
-    def __init__(self, name, node, type, num_demods, demods):
-        
+        def __setitem__(self,key,value):
+            if value=="max":
+                self.values[key] = value
+            else:
+                self.values[key] = SIfloat(value)
+                
+    
+    def __init__(self, name, node, senstype, num_demods, demods):        
         Detector.__init__(self, name, node)
         if num_demods>2:
             raise NotImplementedError("pd with more than two demodulations not implemented yet")   
         self.num_demods = num_demods
-        self.type = type
-        self
-
-    @property
-    def num_demods(self): return Param('num_demods', self.__num_demods)
-    @num_demods.setter
-    def num_demods(self,value): self.__num_demods = int(value)
-    @property
-    def type(self): return Param('type', self.__type)
-    @type.setter
-    def type(self,value): self.__type = value
-    @property
-    def f1(self): return Param('f1', self.__f1)
-    @f1.setter
-    def f1(self,value): self.__f1 = SIfloat(value)
-    @property
-    def phi1(self): return Param('phi1', self.__phi1)
-    @phi1.setter
-    def phi1(self,value): self.__phi1 = SIfloat(value)    
-
+        self.senstype = senstype
+        # every second element into f (starting at 1)
+        self.f(demods[::2])
+        print self.f[1]
+        # every second element into phi (starting at 2)
+        self.phi([1,2])
+        print self.phi[1]
+        for i in demods[1::2]:
+            self.phi.append(i)
+        
     @staticmethod
     def parseFinesseText(text): 
         values = text.split(" ")
 
         if values[0][0:2] != "pd":
             raise exceptions.FinesseParse("'{0}' not a valid photodiode command".format(text))
-        if len(value[0])==2:
+        if len(values[0])==2:
             __num_demods=0
-            __type=""
-        elif len(value[0])==3 or len(value[0])==4:
-            if value[0][3]=="S":
-                __type="S"
-            elif value[0][3]=="N":
-                __type="N"
+            __senstype=""
+        elif len(values[0])==3 or len(values[0])==4:
+            print len(values[0])
+            if values[0][2]=="S":
+                __senstype="S"
+            elif values[0][2]=="N":
+                __senstype="N"
             else:
                 try:
-                    __num_demods=int(values[0][3])
-                    __type=""
+                    __num_demods=int(values[0][2])
+                    __senstype=""
                 except ValueError:
                     raise exceptions.FinesseParse("'{0}' not a valid photodiode command".format(text))
-            if len(value[0])==4:
+            if len(values[0])==4:
                 try:
-                    __num_demods=int(values[0][4])
+                    __num_demods=int(values[0][3])
                 except ValueError:
                     raise exceptions.FinesseParse("'{0}' not a valid photodiode command".format(text))                
         else:
@@ -107,9 +133,9 @@ class photodiode(Detector):
             raise exceptions.FinesseParse("'{0}' number of demodulations must be >0 and <5".format(text))
 
         values.pop(0) # remove initial value
-        
+
         if len(values) == 2 * __num_demods + 1 or len(values) == 2 * __num_demods + 2:
-            return photodiode(value[0], values[-1], __type, __num_demods, values[1:len(values-1)])
+            return photodiode(values[0], values[-1], __senstype, __num_demods, values[1:len(values)-1])
         else:
             raise exceptions.FinesseParse("Photodiode code format incorrect '{0}'".format(text))
 
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 42386b0..588d4e4 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -315,6 +315,7 @@ class kat(object):
             
         
     def add(self, obj) :
+        print type(obj)
         try:
             obj.tag = self.__currentTag
             if isinstance(obj, Component):
-- 
GitLab