Skip to content
Snippets Groups Projects
Commit 18f35d45 authored by Jameson Graef Rollins's avatar Jameson Graef Rollins
Browse files

use logging fascility instead of print function for logging

parent abaa3bd3
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@ from matplotlib import pyplot as plt
from IPython.terminal.embed import InteractiveShellEmbed
import logging
logging.basicConfig(level=logging.INFO)
logging.basicConfig(level=logging.INFO, format='%(message)s')
from .ifo import available_ifos, load_ifo
from .precomp import precompIFO
......
from __future__ import division, print_function
from __future__ import division
import copy
import numpy as np
from numpy import log10, pi, sqrt
import copy
import logging
from .precomp import precompIFO
from . import noise
......@@ -62,7 +63,7 @@ def noise_calc(ifo, f):
# Displacement noises scale as N^2
# Thermo-optic noise scales as N (incoherent between spots)
if 'NFolded' in ifo.Infrastructure.__dict__:
print('FOLDED')
logging.info('FOLDED')
if ifo.Infrastructure.travellingWave:
N = ifo.Infrastructure.NFolded
sep_w = ifo.Infrastructure.DelayLineSpotSeparation
......@@ -125,6 +126,7 @@ def gwinc(freq, ifoin, source=None, fig=False):
ifo = precompIFO(ifo, PRfixed)
pbs = ifo.gwinc.pbs
parm = ifo.gwinc.parm
finesse = ifo.gwinc.finesse
prfactor = ifo.gwinc.prfactor
if ifo.Laser.Power * prfactor != pbs:
......@@ -149,34 +151,32 @@ def gwinc(freq, ifoin, source=None, fig=False):
finesseB = 2*pi/ifo.Optics.ITM.TransmittanceD2
pbsA = ifo.Laser.PBSD1
pbsB = ifo.Laser.PBSD2
print('Finesse for carrier A: %7.2f' % finesseA)
print('Finesse for carrier B: %7.2f' % finesseB)
print('Power Recycling Factor: %7.2f' % ifo.PRCgain)
print('Arm power for carrier A:%7.2f kW' % (finesseA*2/pi*pbsA/2/1000))
print('Arm power for carrier B:%7.2f kW' % (finesseB*2/pi*pbsB/2/1000))
print('Power on beam splitter for carrier A: %7.2f W' % pbsA)
print('Power on beam splitter for carrier B: %7.2f W' % pbsB)
print('Laser Power for Carrier A: %7.2f Watt' % ifo.LP1)
print('Laser Power for Carrier B: %7.2f Watt' % ifo.LP2)
print('SRM Detuning for Carrier A: %7.2f degree' % (ifo.Optics.SRM.TunephaseD1*180/pi))
print('SRM Detuning for Carrier B: %7.2f degree' % (ifo.Optics.SRM.TunephaseD2*180/pi))
print('SRM transmission for Carrier A:%9.4f' % ifo.Optics.SRM.TransmittanceD1)
print('SRM transmission for Carrier B:%9.4f' % ifo.Optics.SRM.TransmittanceD2)
print('ITM transmission for Carrier A:%9.4f' % ifo.Optics.ITM.TransmittanceD1)
print('ITM transmission for Carrier B:%9.4f' % ifo.Optics.ITM.TransmittanceD2)
print('PRM transmission for both: %9.4f' % ifo.Optics.PRM.Transmittance)
logging.info('Finesse for carrier A: %7.2f' % finesseA)
logging.info('Finesse for carrier B: %7.2f' % finesseB)
logging.info('Power Recycling Factor: %7.2f' % ifo.PRCgain)
logging.info('Arm power for carrier A:%7.2f kW' % (finesseA*2/pi*pbsA/2/1000))
logging.info('Arm power for carrier B:%7.2f kW' % (finesseB*2/pi*pbsB/2/1000))
logging.info('Power on beam splitter for carrier A: %7.2f W' % pbsA)
logging.info('Power on beam splitter for carrier B: %7.2f W' % pbsB)
logging.info('Laser Power for Carrier A: %7.2f Watt' % ifo.LP1)
logging.info('Laser Power for Carrier B: %7.2f Watt' % ifo.LP2)
logging.info('SRM Detuning for Carrier A: %7.2f degree' % (ifo.Optics.SRM.TunephaseD1*180/pi))
logging.info('SRM Detuning for Carrier B: %7.2f degree' % (ifo.Optics.SRM.TunephaseD2*180/pi))
logging.info('SRM transmission for Carrier A:%9.4f' % ifo.Optics.SRM.TransmittanceD1)
logging.info('SRM transmission for Carrier B:%9.4f' % ifo.Optics.SRM.TransmittanceD2)
logging.info('ITM transmission for Carrier A:%9.4f' % ifo.Optics.ITM.TransmittanceD1)
logging.info('ITM transmission for Carrier B:%9.4f' % ifo.Optics.ITM.TransmittanceD2)
logging.info('PRM transmission for both: %9.4f' % ifo.Optics.PRM.Transmittance)
else:
pbs = ifo.Laser.Power * prfactor
ifo.Laser.ArmPower = finesse*2/pi * pbs/2
print('Laser Power: %7.2f Watt' % ifo.Laser.Power)
print('SRM Detuning: %7.2f degree' % (ifo.Optics.SRM.Tunephase*180/pi))
print('SRM transmission: %9.4f' % ifo.Optics.SRM.Transmittance)
print('ITM transmission: %9.4f' % ifo.Optics.ITM.Transmittance)
print('PRM transmission: %9.4f' % ifo.Optics.PRM.Transmittance)
print('Finesse: %7.2f' % finesse)
print('Power Recycling Gain: %7.2f' % prfactor)
print('Arm Power: %7.2f kW' % (ifo.Laser.ArmPower/1000))
print('Power on BS: %7.2f W' % pbs)
logging.info('Laser Power: %7.2f Watt' % ifo.Laser.Power)
logging.info('SRM Detuning: %7.2f degree' % (ifo.Optics.SRM.Tunephase*180/pi))
logging.info('SRM transmission: %9.4f' % ifo.Optics.SRM.Transmittance)
logging.info('ITM transmission: %9.4f' % ifo.Optics.ITM.Transmittance)
logging.info('PRM transmission: %9.4f' % ifo.Optics.PRM.Transmittance)
logging.info('Finesse: %7.2f' % finesse)
logging.info('Power Recycling Gain: %7.2f' % prfactor)
logging.info('Arm Power: %7.2f kW' % (parm/1000))
logging.info('Power on BS: %7.2f W' % pbs)
# coating and substrate thermal load on the ITM
PowAbsITM = (pbs/2) * \
......@@ -188,18 +188,16 @@ def gwinc(freq, ifoin, source=None, fig=False):
S_uncorr = PowAbsITM.T*M*PowAbsITM
TCSeff = 1-sqrt(ifo.TCS.SRCloss/S_uncorr)
print('Thermal load on ITM: %8.3f W' % sum(PowAbsITM))
print('Thermal load on BS: %8.3f W' %
(ifo.Materials.MassThickness*ifo.Optics.SubstrateAbsorption*pbs))
#fprintf(['Required TCS efficiency: %8.3f' ...
# '(estimate, see IFOModel.m for definition)\n'], TCSeff);
logging.info('Thermal load on ITM: %8.3f W' % sum(PowAbsITM))
logging.info('Thermal load on BS: %8.3f W' %
(ifo.Materials.MassThickness*ifo.Optics.SubstrateAbsorption*pbs))
if (ifo.Laser.Power*prfactor != pbs):
print('Lensing limited input power: %7.2f W' % (pbs/prfactor))
logging.info('Lensing limited input power: %7.2f W' % (pbs/prfactor))
if source:
print('BNS Inspiral Range: ' + str(score.effr0ns) + ' Mpc/ z = ' + str(score.zHorizonNS))
print('BBH Inspiral Range: ' + str(score.effr0bh) + ' Mpc/ z = ' + str(score.zHorizonBH))
print('Stochastic Omega: %4.1g Universes' % score.Omega)
logging.info('BNS Inspiral Range: ' + str(score.effr0ns) + ' Mpc/ z = ' + str(score.zHorizonNS))
logging.info('BBH Inspiral Range: ' + str(score.effr0bh) + ' Mpc/ z = ' + str(score.zHorizonBH))
logging.info('Stochastic Omega: %4.1g Universes' % score.Omega)
plot.plot_noise(noises)
......
from __future__ import division, print_function
from __future__ import division
import scipy.constants
from numpy import pi, sqrt
import logging
def gravg(f, ifo):
"""Return estimate of newtonian noise contribribution to |h(f)|^2
......@@ -87,7 +89,7 @@ def ground(Seismic, f):
# modelization of seismic noise (velocity)
if 'Site' not in Seismic:
print('defaulting to Livingston site')
logging.info('defaulting to Livingston site')
Seismic.Site = 'LLO'
if Seismic.Site == 'LHO':
......
from __future__ import division, print_function
from __future__ import division
from numpy import pi, sqrt, arctan, sin, cos, exp, size, ones, zeros, log10, conj, sum
import numpy as np
import scipy.constants
import logging
def shotrad(f, ifo, verbose=False):
def shotrad(f, ifo):
"""Quantum noise model
corresponding author: mevans
......@@ -36,10 +38,10 @@ def shotrad(f, ifo, verbose=False):
Nfreq = len(f)
if any(np.array([Mifo.shape[0], Mifo.shape[1], Mn.shape[0]]) != Nfield) or \
any(np.array([Mifo.shape[2], Msig.shape[2], Mn.shape[2]]) != Nfreq):
print(Mifo.shape)
print(Msig.shape)
print(Mn.shape)
print(Nfield, Nfreq)
logging.info(Mifo.shape)
logging.info(Msig.shape)
logging.info(Mn.shape)
logging.info(Nfield, Nfreq)
raise Exception('Inconsistent matrix sizes returned by %s' % str(fname))
# deal with non-standard number of fields
......@@ -91,20 +93,16 @@ def shotrad(f, ifo, verbose=False):
# switch on squeezing type for other input squeezing modifications
if sqzType == 'None':
if verbose:
#display('You are not injecting squeezing..loozer!')
pass
pass
elif sqzType == 'Freq Independent':
if verbose:
print('You are injecting %g dB of frequency independent squeezing' % SQZ_DB)
logging.info('You are injecting %g dB of frequency independent squeezing' % SQZ_DB)
elif sqzType == 'Optimal':
# compute optimal squeezing angle
alpha = sqzOptimalSqueezeAngle(Mifo, eta)
if verbose:
print('You are injecting %g dB of squeezing with optimal frequency dependent squeezing angle' % SQZ_DB)
logging.info('You are injecting %g dB of squeezing with optimal frequency dependent squeezing angle' % SQZ_DB)
elif sqzType == 'OptimalOptimal':
# compute optimal squeezing angle, assuming optimal readout phase
......@@ -113,12 +111,10 @@ def shotrad(f, ifo, verbose=False):
MsigPD = Msig * sqrt(1 - lambda_PD)
alpha = sqzOptimalSqueezeAngle(Mifo, [], [R, lambda_in], MsigPD, MnPD)
if verbose:
print('You are injecting %g dB of squeezing with optimal FD squeezing angle, for optimal readout phase' % SQZ_DB)
logging.info('You are injecting %g dB of squeezing with optimal FD squeezing angle, for optimal readout phase' % SQZ_DB)
elif sqzType == 'Freq Dependent':
if verbose:
print('You are injecting %g dB of squeezing with frequency dependent squeezing angle' % SQZ_DB)
logging.info('You are injecting %g dB of squeezing with frequency dependent squeezing angle' % SQZ_DB)
else:
raise Exception('ifo.Squeezer.Type must be None, Freq Independent, Optimal, or Frequency Dependent, not "%s"' % sqzType)
......@@ -147,8 +143,7 @@ def shotrad(f, ifo, verbose=False):
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Inject squeezed field into the IFO via some filter cavities
if sqzType == 'Freq Dependent' and 'FilterCavity' in ifo.Squeezer:
if verbose:
print(' Applying %d input filter cavities' % np.atleast_1d(ifo.Squeezer.FilterCavity).size)
logging.info(' Applying %d input filter cavities' % np.atleast_1d(ifo.Squeezer.FilterCavity).size)
Mr, Msqz = sqzFilterCavityChain(f, np.atleast_1d(ifo.Squeezer.FilterCavity), Msqz)
#####################################################
......@@ -170,14 +165,14 @@ def shotrad(f, ifo, verbose=False):
pass
elif ifo.OutputFilter.Type == 'Chain':
if verbose:
print(' Applying %d output filter cavities' % np.atleast_1d(ifo.OutputFilter.FilterCavity).size)
logging.info(' Applying %d output filter cavities' % np.atleast_1d(ifo.OutputFilter.FilterCavity).size)
Mr, Mnoise = sqzFilterCavityChain(f, np.atleast_1d(ifo.OutputFilter.FilterCavity), Mnoise)
Msig = getProdTF(Mr, Msig)
# Mnoise = getProdTF(Mn, Mnoise);
elif ifo.OutputFilter.Type == 'Optimal':
print(' Optimal output filtering!')
logging.info(' Optimal output filtering!')
# compute optimal angle, including upcoming PD losses
MnPD = sqzInjectionLoss(Mnoise, lambda_PD)
......
from __future__ import division, print_function
from __future__ import division
import numpy as np
from numpy import log10
from scipy.interpolate import interp1d
......
......@@ -128,7 +128,7 @@ def precompPower(ifo, PRfixed=True):
#pbs = min([pbs, pbsl]);
if pbs > pbsl:
print('P_BS exceeds BS Thermal limit!')
logging.warning('P_BS exceeds BS Thermal limit!')
return pbs, parm, finesse, prfactor, Tpr
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment