def __init__(self, **traitsDict):
        super(GaussianAndParabola1DFit, self).__init__(**traitsDict)
        self.function = "AGauss*exp(-(x-x0)**2/(2.*sigmax**2)-(y-y0)**2/(2.*sigmay**2))+AParab*(1-((x-x0)/wParabX)**2-((y-y0)/wParabY)**2)**(1.5)+B"
        self.name = "2D Gaussian + Parabola 1D"
        
        self.x0 = Parameter(name="x0")
        self.y0 = Parameter(name="y0")
        self.AGauss = Parameter(name="AGauss")
        self.sigmax = Parameter(name="sigmax")
        self.sigmay = Parameter(name="sigmay")
        self.AParab = Parameter(name="AParab")
        self.wParabX = Parameter(name="wParabX")
        self.wParabY = Parameter(name="wParabY")
        self.B = Parameter(name="B")
        self.variablesList = [self.x0,self.y0,self.AGauss,self.sigmax,self.sigmay,self.AParab,self.wParabX,self.wParabY,self.B]
        

        self.NThermal = CalculatedParameter(name="N Thermal", desc="Atom number calculated from gaussian part of fit")
        self.NCondensate = CalculatedParameter(name="N Condensate", desc="Atom number calculated from parabola part of fit")
        self.N = CalculatedParameter(name="Total N", desc="N Thermal + N Condensate")
        self.condensateFraction = CalculatedParameter(name="Condensate Fraction", desc="NCondensate/NThermal")

        self.condensateFraction1D = CalculatedParameter(name="Condensate Fraction 1D", desc="derived from average along one axis")

        self.summedOD = CalculatedParameter(name="Summed OD", desc="Optical density summed in the calculated region. Clipped at 0. (i.e. does not count negatives)")
        self.summedODAtomNumber = CalculatedParameter(name="Summed OD Atom Number", desc="Using optical density summed in the calculated region we calculate an estimate of atom number. Clipped at 0. (i.e. does not count negatives)")
        
        self.Tx = CalculatedParameter(name="Temperature X", desc="Temperature from time of flight in x direction. Assumes initial size of zero")
        self.Ty = CalculatedParameter(name="Temperature Y", desc="Temperature from time of flight in y direction. Assumes initial size of zero")
        self.T = CalculatedParameter(name="Temperature", desc="average of temperature X and temperature Y")     
        
        self.ThomasFermiRadiusX = CalculatedParameter(name="Thomas Fermi Radius X", desc="edge of parabola in X direction")    
        self.ThomasFermiRadiusY = CalculatedParameter(name="Thomas Fermi Radius Y", desc="edge of parabola in Y direction")
        self.effectiveThomasFermiRadius = CalculatedParameter(name="Thomas Fermi Radius Bar", desc="SQRT(TFRadiusX * TFRadiusY)")
        
        self.aspectRatioThermal = CalculatedParameter(name="Aspect Ratio Thermal", desc="ratio of sigma x to sigma y")
        self.aspectRationCondensate = CalculatedParameter(name="Aspect Ratio Condensate", desc="ratio of wx to wy")
        
        self.chemicalPotentialX=CalculatedParameter(name="Chem Pot. X", desc="chemical potential from trapping Freq X direction and TF Radius X")         
        self.chemicalPotentialY=CalculatedParameter(name="Chem Pot. Y", desc="chemical potential from trapping Freq Y direction and TF Radius Y")  

        self.roiStartX=CalculatedParameter(name="roiStartX", desc="Region of interest start x")
        self.roiStartY=CalculatedParameter(name="roiStartY", desc="Region of interest start z")
        self.roiEndX=CalculatedParameter(name="roiEndX", desc="Region of interest end x")
        self.roiEndY=CalculatedParameter(name="roiEndY", desc="Region of interest end y")
        self.roiBool=CalculatedParameter(name="roiBool", desc="Fit over region of interest (1) or not (0)")
        
        self.calculatedParametersList = [self.NThermal,self.NCondensate,self.N,self.condensateFraction, self.condensateFraction1D , self.summedOD,self.summedODAtomNumber, self.Tx, self.Ty, self.T,
            self.ThomasFermiRadiusX, self.ThomasFermiRadiusY,self.effectiveThomasFermiRadius, self.aspectRatioThermal, self.aspectRationCondensate,self.chemicalPotentialX, self.chemicalPotentialY,
            self.roiStartX, self.roiStartY, self.roiEndX, self.roiEndY, self.roiBool
        ]
 def __init__(self, **traitsDict):
     super(RotatedGaussianFit, self).__init__(**traitsDict)
     self.function = "(A*exp( -(( (y-y0)*cos(theta)+(x-x0)*Sin(theta))**2/(2*sigmay**2)) - ( + (x-x0)*cos(theta) - (y-y0)*sin(theta))**2/(2*sigmax**2))+B)"
     self.name = "Rotated 2D Gaussian"
     
     self.A = Parameter(name="A")
     self.x0 = Parameter(name="x0")
     self.sigmax = Parameter(name="sigmax")
     self.y0 = Parameter(name="y0")
     self.sigmay = Parameter(name="sigmay")        
     self.theta = Parameter(name="theta")        
     self.B = Parameter(name="B")
     
     self.variablesList = [self.A,self.x0,self.sigmax,self.y0,self.sigmay,self.theta,self.B ]
     
     self.N = CalculatedParameter(name="N", desc="Atom number calculated from gaussian fit")
     self.stdevX = CalculatedParameter(name="stdev X (um)", desc="stdev X of TOF cloud from gaussian fit")
     self.stdevY = CalculatedParameter(name="stdev Y (um)", desc="stdev Y of TOF cloud from gaussian fit")
     self.xPrime = CalculatedParameter(name="xPrime (um)", desc="uses angle theta to rotate frame so that you get position along principal axes")
     self.yPrime = CalculatedParameter(name="yPrime (um)", desc="uses angle theta to rotate frame so that you get position along principal axes")
     self.Tx = CalculatedParameter(name="Tx (uK)", desc="Temperature from time of flight in x direction. Uses in trap size defined in physics")
     self.Ty = CalculatedParameter(name="Ty (uK)", desc="Temperature from time of flight in y direction. Uses in trap size defined in physics")
     self.T = CalculatedParameter(name="T (uK)", desc="Average of Tx and Ty")
     self.aspectRatio = CalculatedParameter(name="Aspect Ratio", desc="ratio of sigma x to sigma y")
     self.summedOD = CalculatedParameter(name="Summed OD", desc="Optical density summed in the calculated region. Clipped at 0. (i.e. does not count negatives)")
     self.summedODAtomNumber = CalculatedParameter(name="Summed OD Atom Number", desc="Using optical density summed in the calculated region we calculate an estimate of atom number. Clipped at 0. (i.e. does not count negatives)")
     self.criticalTemperature = CalculatedParameter(name="Critical Temperature (nK)", desc="Critical temperature from trapping frequency and atom number")  
     self.thermalDensity = CalculatedParameter(name="Thermal Cloud Density (cm^-3)", desc = "N/( 32 Pi (kb T / mu B')^3)")
     self.phaseSpaceDensity = CalculatedParameter(name="Phase Space Density (thermal)", desc="phase space density using thermal cloud density" )
     
     self.calculatedParametersList = [self.N,self.stdevX,self.stdevY,self.xPrime,self.yPrime, self.Tx,self.Ty , self.T, self.aspectRatio,self.summedOD,self.summedODAtomNumber, self.criticalTemperature,self.thermalDensity,self.phaseSpaceDensity]
Example #3
0
    def __init__(self, **traitsDict):
        super(FermiGasFit, self).__init__(**traitsDict)
        self.function = "A*Li_2(-exp(betaMu)*exp(-(x-x0)^2/2sigmax^2)*exp(-(y-y0)^2/2sigmay^2))/Li_2(-exp(betaMu))+B"
        self.name = "Fermi Gas"
        
        
        self.x0 = Parameter(name="x0")
        self.y0 = Parameter(name="y0")
        self.A = Parameter(name="A")
        self.sigmaX = Parameter(name="sigmaX")
        self.sigmaY = Parameter(name="sigmaY")
        self.betaMu = Parameter(name="betaMu")
        self.B = Parameter(name="B")
        self.variablesList = [self.x0,self.y0,self.A,self.sigmaX,self.sigmaY,self.betaMu,self.B]
        
        self.fugacity = CalculatedParameter(name="fugacity", desc="fugacity: exp(betaMu)")

        self.calculatedParametersList = [self.fugacity]
Example #4
0
    def __init__(self, **traitsDict):
        super(ParabolaFit, self).__init__(**traitsDict)
        self.function = "AParab*(1-((x-x0)/wParabX)**2-((y-y0)/wParabY)**2)**(1.5)+B"
        self.name = "2D Parabola"

        self.x0 = Parameter(name="x0")
        self.y0 = Parameter(name="y0")
        self.AParab = Parameter(name="AParab")
        self.wParabX = Parameter(name="wParabX")
        self.wParabY = Parameter(name="wParabY")
        self.B = Parameter(name="B")
        self.variablesList = [
            self.x0, self.y0, self.AParab, self.wParabX, self.wParabY, self.B
        ]

        self.NCondensate = CalculatedParameter(
            name="N Condensate",
            desc="Atom number calculated from parabola part of fit")

        self.ThomasFermiRadiusX = CalculatedParameter(
            name="Thomas Fermi Radius X",
            desc="edge of parabola in X direction")
        self.ThomasFermiRadiusY = CalculatedParameter(
            name="Thomas Fermi Radius Y",
            desc="edge of parabola in Y direction")

        self.effectiveThomasFermiRadius = CalculatedParameter(
            name="Thomas Fermi Radius Bar", desc="SQRT(TFRadiusX * TFRadiusY)")

        self.aspectRationCondensate = CalculatedParameter(
            name="Aspect Ratio Condensate", desc="ratio of wx to wy")

        self.chemicalPotentialX = CalculatedParameter(
            name="Chem Pot. X",
            desc=
            "chemical potential from trapping Freq X direction and TF Radius X"
        )
        self.chemicalPotentialY = CalculatedParameter(
            name="Chem Pot. Y",
            desc=
            "chemical potential from trapping Freq Y direction and TF Radius Y"
        )

        self.calculatedParametersList = [
            self.NCondensate, self.ThomasFermiRadiusX, self.ThomasFermiRadiusY,
            self.effectiveThomasFermiRadius, self.aspectRationCondensate,
            self.chemicalPotentialX, self.chemicalPotentialY
        ]
Example #5
0
 def __init__(self, **traitsDict):
     super(GaussianFit, self).__init__(**traitsDict)
     self.function = "(A*exp(-(x-x0)**2/(2.*sigmax**2)-(y-y0)**2/(2.*sigmay**2))+B)"
     self.name = "2D Gaussian"
     
     self.A = Parameter(name="A")
     self.x0 = Parameter(name="x0")
     self.sigmax = Parameter(name="sigmax")
     self.y0 = Parameter(name="y0")
     self.sigmay = Parameter(name="sigmay")
     self.B = Parameter(name="B")
     
     self.variablesList = [self.A,self.x0,self.sigmax,self.y0,self.sigmay,self.B ]
     
     self.N = CalculatedParameter(name="N", desc="Atom number calculated from gaussian fit")
     self.stdevX = CalculatedParameter(name="stdev X (um)", desc="stdev X of TOF cloud from gaussian fit")
     self.stdevY = CalculatedParameter(name="stdev Y (um)", desc="stdev Y of TOF cloud from gaussian fit")
     self.Tx = CalculatedParameter(name="Tx (uK)", desc="Temperature from time of flight in x direction. Uses in trap size defined in physics")
     self.Ty = CalculatedParameter(name="Ty (uK)", desc="Temperature from time of flight in x direction. Uses in trap size defined in physics")
     self.T = CalculatedParameter(name="T (uK)", desc="Average of Tx and Ty")
     self.TxHarmonic = CalculatedParameter(name="Tx harmonic (uK)", desc="Temperature from time of flight in x direction. Uses trap frequency defined in physics")
     self.TyHarmonic = CalculatedParameter(name="Ty harmonic (uK)", desc="Temperature from time of flight in y direction.  Uses trap frequency defined in physics")
     self.THarmonic = CalculatedParameter(name="T harmonic (uK)", desc="average of Tx harmonic and Ty Harmonic")
     self.aspectRatio = CalculatedParameter(name="Aspect Ratio", desc="ratio of sigma x to sigma y")
     self.inverseAspectRatio = CalculatedParameter(name="Aspect Ratio Inverse", desc="ratio of sigma y to sigma x")
     self.summedOD = CalculatedParameter(name="Summed OD", desc="Optical density summed in the calculated region. Clipped at 0. (i.e. does not count negatives)")
     self.summedODAtomNumber = CalculatedParameter(name="Summed OD Atom Number", desc="Using optical density summed in the calculated region we calculate an estimate of atom number. Clipped at 0. (i.e. does not count negatives)")
     self.criticalTemperature = CalculatedParameter(name="Critical Temperature (nK)", desc="Critical temperature from trapping frequency and atom number")  
     self.thermalDensity = CalculatedParameter(name="Thermal Cloud Density Linear Trap (cm^-3)", desc = "N/( 32 Pi (kb T / mu B')^3)")
     self.thermalDensityHarmonic = CalculatedParameter(name="Peak Thermal Density Harmonic Trap (cm^-3)", desc = "N omegax, omegay, omegaz (m/2 pi kb T)^(3/2)")
     self.phaseSpaceDensity = CalculatedParameter(name="Phase Space Density (thermal)", desc="phase space density using thermal cloud density" )
     self.phaseSpaceDensityHarmonic = CalculatedParameter(name="Phase Space Density Harmonic (thermal)", desc="phase space density using thermal cloud density for a harmonic trap" )
     self.vbarLinear = CalculatedParameter(name="average thermal velocity Linear Trap (m/s)", desc = "sqrt(8 kB T / pi m)")        
     self.collisionTimeLinear = CalculatedParameter(name="Collision Time Linear Trap (ms)", desc = "sqrt(20 n sigma vbar")
     self.signalToNoise = CalculatedParameter(name="Signal to Noise ratio", desc = "gaussian amplitude to background std.dev.")
     
     
     self.calculatedParametersList = [self.N,self.stdevX,self.stdevY, self.Tx,self.Ty , self.T,self.TxHarmonic,self.TyHarmonic,self.THarmonic, 
                                      self.aspectRatio,self.inverseAspectRatio, self.summedOD,self.summedODAtomNumber, self.criticalTemperature,self.thermalDensity,
                                      self.thermalDensityHarmonic,self.phaseSpaceDensity,self.phaseSpaceDensityHarmonic,self.vbarLinear,self.collisionTimeLinear,self.signalToNoise]
Example #6
0
    def __init__(self, **traitsDict):
        super(GaussianAndDoubleParabolaFit, self).__init__(**traitsDict)
        self.function = "AGauss*exp(-(x-x0)**2/(2.*sigmax**2)-(y-y0)**2/(2.*sigmay**2))+AParab_1*(1-((x-(x_0+dist/2.0))/wParabX_1)**2-((y-y0)/wParabY_1)**2)**(1.5)+AParab_2*(1-((x-(x_0-dist)/2.0)/wParabX_2)**2-((y-y0)/wParabY_2)**2)**(1.5) + B"
        self.name = "2D Gaussian + double Parabola"

        self.x0 = Parameter(name="x0")
        self.y0 = Parameter(name="y0")
        self.dist = Parameter(name="dist")
        self.AGauss = Parameter(name="AGauss")
        self.sigmax = Parameter(name="sigmax")
        self.sigmay = Parameter(name="sigmay")
        self.AParab_1 = Parameter(name="AParab_1")
        self.wParabX_1 = Parameter(name="wParabX_1")
        self.wParabY_1 = Parameter(name="wParabY_1")
        self.AParab_2 = Parameter(name="AParab_2")
        self.wParabX_2 = Parameter(name="wParabX_2")
        self.wParabY_2 = Parameter(name="wParabY_2")
        self.B = Parameter(name="B")

        self.variablesList = [
            self.x0, self.y0, self.dist, self.AGauss, self.sigmax, self.sigmay,
            self.AParab_1, self.wParabX_1, self.wParabY_1, self.AParab_2,
            self.wParabX_2, self.wParabY_2, self.B
        ]

        #        self.summedOD_1 = CalculatedParameter(name="Summed OD", desc="Optical density summed in the calculated region. Clipped at 0. (i.e. does not count negatives)")
        #        self.summedODAtomNumber_1 = CalculatedParameter(name="Summed OD Atom Number", desc="Using optical density summed in the calculated region we calculate an estimate of atom number. Clipped at 0. (i.e. does not count negatives)")
        #
        #        self.summedOD_2 = CalculatedParameter(name="Summed OD", desc="Optical density summed in the calculated region. Clipped at 0. (i.e. does not count negatives)")
        #        self.summedODAtomNumber_2 = CalculatedParameter(name="Summed OD Atom Number", desc="Using optical density summed in the calculated region we calculate an estimate of atom number. Clipped at 0. (i.e. does not count negatives)")

        self.summedOD_total = CalculatedParameter(
            name="Summed OD",
            desc=
            "Optical density summed in the calculated region. Clipped at 0. (i.e. does not count negatives)"
        )
        self.summedODAtomNumber_total = CalculatedParameter(
            name="Summed OD Atom Number",
            desc=
            "Using optical density summed in the calculated region we calculate an estimate of atom number. Clipped at 0. (i.e. does not count negatives)"
        )

        self.condensateFraction = CalculatedParameter(
            name="Condensate Fraction",
            desc=
            "Condensate fraction, where condensate is calculated from both parabolas"
        )
        self.parabolaRatio = CalculatedParameter(
            name="Parabola ratio", desc="Ratio of atom number in parabolas.")

        self.NThermal = CalculatedParameter(name="NThermal", desc="Generic")
        self.NCondensate_1 = CalculatedParameter(name="NCondensate_1",
                                                 desc="Generic")
        self.NCondensate_2 = CalculatedParameter(name="NCondensate_2",
                                                 desc="Generic")
        self.NCondensate = CalculatedParameter(name="NCondensate",
                                               desc="Generic")
        self.N = CalculatedParameter(name="N", desc="Generic")

        self.calculatedParametersList = [
            self.NThermal, self.NCondensate_1, self.NCondensate_2,
            self.NCondensate, self.N
        ]