Jeff K, Joe B, Lilli S,
We have fixed a few problems in sensing.py for the pro-spring fitting.
1) Jeff has fixed the pro-spring TF calculation yesterday (see 48057). There's still one imaginary "j" missing in the line below:
Line 740: est_opt_response_tf = mu[0] / (1.0 + 1j*xdata/mu[1]) * (xdata**2/(xdata**2 - mu[2]**2 + 1j*xdata*mu[2]*mu[3])) * np.exp( -2.0*np.pi*1j * mu[4]*1.0e-6 * xdata )
2) The signs were wrong when calculating the detune TF.
Line 65: detuneFunction = signal.TransferFunction([1,0,0],[1,-2.0*np.pi*abs(detuneSpringFreq)/detuneSpringQ,(2.0*np.pi*abs(detuneSpringFreq))**2])
After these two fixes, the pro-spring fitting is much better than before (good enough above 20Hz). See the "before fix" and "after fix" attachments.
3) The priors of fcc, fs, Q are not close to the true values. As a result, the MCMC will draw samples far away from the MAP values. The corner plots include a lot small "islands", although the MAP values returned are valid (see the attached "beforeChangePriors" plot). This would impact the samples used for calculating uncertainty budget in the future. We have adjusted the priors to be closer to the true values. A better fix remains to be done to read in the priors instead of hard coding them.
4) We have calculated and output the "Inverse Sensing FOTON values" and "Inverse Sensing without cavity pole FOTON values for CFTD path" for the pro-spring case. --> Take s^2/(s^2 - s0^2 + i*s*s0/Q) and solve denominator for zeros, i.e., the two zeros are the two conjugate complex roots.
cf. for anti-spring --> Take s^2/(s^2 + s0^2 - i*s*s0/Q) and solve denominator for zeros, and the two zeros are real.
We are taking more measurements including low frequencies to verify the fitting. A new model needs to be created and installed.