Exemplo n.º 1
0
def selfcalSource( ) :
  sourceName = SAC.queryString("Control.Subarray1.Source")
  try :
    for n in range (1,33) :
      if ( sourceName == SAC.queryString("Control.SpectralLineCorrelator.Obsblock.ObsObject"+str(n)+".name") ) :
       return SAC.queryBool("Control.SpectralLineCorrelator.Obsblock.ObsObject"+str(n)+".selfCalibratable") 
    return False
  except :
    return False
Exemplo n.º 2
0
def waitForNewData( ) :
  elapsed = 0.
  # wait until we are integrating on a valid selfcal source (not Noise, not Pointing)
  while not ( selfcalSource( ) and SAC.queryBool("SlPipeline.IntegratorStageContainer.IntegratorStage.integrating") )  : 
    if (elapsed > 20. ) :
      print ".. waiting for integration to begin on a valid selfcal source"
      elapsed = 0. 	# so message is refreshed every 20 sec
    SAC.sleep(1.)
    elapsed = elapsed + 1.
  print " .. waiting for integration to complete"
  elapsed = 0.
  # fresh selfcal data should be available when the integration number changes
  LastIntNumber = SAC.queryInt("SlPipeline.IntegratorStageContainer.IntegratorStage.IntegrationNumber")
  IntNumber = LastIntNumber
  while (IntNumber == LastIntNumber) :
    if (elapsed > 20. ) :
      print " .. waiting for integration to complete"
      elapsed = 0.	# so message is refreshed every 20 sec
    SAC.sleep(0.5)
    elapsed = elapsed + 0.5 
    IntNumber = SAC.queryInt("SlPipeline.IntegratorStageContainer.IntegratorStage.IntegrationNumber")
  SAC.sleep(0.1)	# to be safe, allow extra 0.1 sec to make sure selfcal results are updated
  print " .. fresh selfcal data available"