1 #ifndef CARMA_CONTROL_SUBARRAY_CONTROL_IMPL_H
2 #define CARMA_CONTROL_SUBARRAY_CONTROL_IMPL_H
25 #include "carma/corba/corba.h"
26 #include "carma/alarm/AlarmControl.h"
27 #include "carma/antenna/common/IVCurve.h"
28 #include "carma/antenna/common/DriveControl.h"
29 #include "carma/antenna/common/OpticalTelControl.h"
30 #include "carma/antenna/common/PolarizationControl.h"
31 #include "carma/antenna/common/RxControl.h"
32 #include "carma/antenna/common/SwitchState.h"
34 #include "carma/control/AzWrapMode.h"
35 #include "carma/control/CorrelatorInfo.h"
37 #include "carma/control/IntentInfo.h"
39 #include "carma/control/MjdTriplet.h"
40 #include "carma/control/NearestInfo.h"
41 #include "carma/control/NearestInfo_skel.h"
42 #include "carma/control/PadOffsets.h"
44 #include "carma/control/SubarrayControl.h"
45 #include "carma/control/SwitchyardHandles.h"
47 #include "carma/util/corrUtils.h"
48 #include "carma/correlator/obsRecord2/CorDataBase.h"
50 #include "carma/downconverter/common/DownconverterControl.h"
52 #include "carma/fault/FaultControl.h"
55 #include "carma/loberotator/LoberotatorControl.h"
56 #include "carma/observertools/ItemValue.h"
57 #include "carma/observertools/ProjectDatabaseManager.h"
58 #include "carma/monitor/ControlBandCommon.h"
59 #include "carma/monitor/CorrDesignation.h"
61 #include "carma/monitor/SignalPathSubsystem.h"
72 #include "carma/util/Logger.h"
74 #include "carma/util/PthreadMutex.h"
75 #include "carma/util/PthreadRWLock.h"
76 #include "carma/util/QuadraticInterpolatorNormal.h"
77 #include "carma/util/ScopedExclusiveLock.h"
78 #include "carma/util/ScopedSharedLock.h"
80 #include <boost/thread.hpp>
81 #include <boost/shared_ptr.hpp>
88 class CarmaMonitorSystem;
89 class RawMonitorSystem;
102 class CalibratorHandle;
104 class CorrelatorHandle;
105 class CorrDataRemapperHandle;
107 class DownconverterHandle;
111 class HalfSecUpdater;
113 class LineLengthHandle;
115 class LoberotatorHandle;
116 class OpticalTelHandle;
117 class ProjectDatabaseManagerHandle;
118 class PipelineHandle;
119 class SignalPathMapperHandle;
120 class RxSelectorHandle;
127 class SubarrayControlImpl :
131 SubarrayControlImpl(
int subarrayNo,
133 std::string scriptStateDir);
135 ~SubarrayControlImpl();
147 static const log4cpp::Priority::PriorityLevel CMD_LOG_PRIORITY =
148 log4cpp::Priority::INFO;
150 static log4cpp::CategoryStream cmdlog();
152 static log4cpp::CategoryStream loginfo();
154 static void logSentCommand(std::string command, std::string destination);
156 struct ObsblockGroup {
158 std::string obsblock;
159 std::string subObsblock;
161 ControlCorrelatorDesignation corrType;
167 virtual char* query(
const char* monitorComponent);
169 char* queryString(
const char* monitorPointName);
171 double queryDouble(
const char* monitorPointName);
173 CORBA::Long queryInt(
const char* monitorPointName);
175 SeqFloat* queryComplex(
const char* monitorPointName);
177 bool queryBool(
const char* monitorPointName);
179 SeqMonitorPointValue* queryMonitorPoint(
const SeqString& monitorPoint);
181 void setMonitorPointReal(
const char* monitorPointName,
double value);
183 void setMonitorPointInvalid(
const char* monitorPointName);
185 FluxMeasurement* queryFlux(
const char* source,
float freq,
186 float deltaFreq,
float deltaTime);
188 float queryMag(
const char* starName);
192 void projectOscriptAdd(
const char * project,
const char * obsblock,
193 const char * subobsblock,
194 const char * scriptFile,
195 const char * catalogFile );
197 bool projectEdit(
const char * project,
198 const char * obsblock,
199 const char * subobsblock,
204 CORBA::Short projectRun(
const char* projectID,
const char* obsblock,
205 const char* subObsblock,
const bool isCommissioning,
206 const bool isDualCorr,
const char* arrayConfig1,
207 const char* arrayConfig2,
208 const char* scriptFile,
const char* catalogFile);
210 CORBA::Long getSubarrayNo();
212 char* getSubarrayName();
214 void track(
const char * source,
216 bool affectPhaseCenter,
221 void snowTrack(
const SeqShort & carmaAntNoSeq );
223 void windTrack(
const SeqShort & carmaAntNoSeq );
225 void mountOffset(
double az,
double el, CORBA::Short carmaAntNo);
230 void stop(
const SeqShort & carmaAntNoSeq);
232 void pad(
short padNo, CORBA::Short carmaAntNo);
234 void padOffset(
float east,
float north,
float up, CORBA::Short carmaAntNo);
236 void antennaOffset(
float east,
float north,
float up,
237 CORBA::Short carmaAntNo);
240 CORBA::Short carmaAntNo);
242 void axisNonintersection(
float offset, CORBA::Short carmaAntNo);
244 void noiseSource(
bool state,
bool isReference=
false);
248 void noiseAtten(CORBA::UShort atten);
250 void quadmodAtten(CORBA::UShort atten);
252 void delay(
float offset,
const CORBA::Short carmaAntNo);
254 void adjustableDelay(
float offset,
257 void delayDifference(
float diff,
const CORBA::Short carmaAntNo,
262 double doppler(
const char* source);
266 void antennaIFpower(
const CORBA::Double power,
269 void antennaIFatten(
const CORBA::Double atten,
272 const bool invalidateTsys );
274 void antennaIFpresetPower(
const SeqShort& carmaAntNoSeq);
276 void storeAntennaIFattenAmbient(
const SeqShort& carmaAntNoSeq);
278 void psysPreset(
const SeqShort& carmaAntNoSeq,
const short astroBandNo);
280 void psysLevel(
double level);
288 void ifoutLevel(
double level);
290 void rfPower(
bool state);
292 void offset(
double azArcmin,
double elArcmin,
295 void offsetAz(
double azArcmin,
const SeqShort & carmaAntNoSeq);
297 void offsetEl(
double elArcmin,
const SeqShort & carmaAntNoSeq );
299 void move(
double azDegrees,
double elDegrees,
302 void moveAz(
double azDegrees,
const SeqShort & carmaAntNoSeq);
304 void moveEl(
double elDegrees,
const SeqShort & carmaAntNoSeq);
306 void recordPoint(CORBA::Short carmaAntNo);
308 void trackThreshold(
float threshold,
const SeqShort & carmaAntNoSeq);
310 void setAntPosFilename(
const char * filename );
312 void setInitializationFlag(
bool state);
314 bool getInitializationFlag();
316 void antennaInitialized(CORBA::Boolean state,
const SeqShort & carmaAntNoSeq);
318 void setSafeRange(CORBA::Float azLow, CORBA::Float azHigh,
319 CORBA::Float elLow, CORBA::Float elHigh,
326 addAntenna(
const SeqShort & carmaAntNoSeq,
327 bool skipAntsOwnedByOthers );
329 RemoveAntennaResult *
330 removeAntenna(
const SeqShort & carmaAntNoSeq,
331 bool skipAntsNotOwnedByMe );
335 ControlCorrelatorDesignation type,
337 unsigned short input1,
338 unsigned short input2);
340 ControlCorrelatorDesignation type,
342 unsigned short input1,
343 unsigned short input2);
344 void clearBirdies(ControlCorrelatorDesignation type);
348 void addCorrelator(ControlCorrelatorDesignation type);
349 void removeCorrelator(ControlCorrelatorDesignation type);
350 bool subarrayOwnsCorrelator(CORBA::Long subarrayNo, ControlCorrelatorDesignation type);
351 bool subarrayOwnsSingleCorrelator(CORBA::Long subarrayNo);
352 bool subarrayOwnsNoCorrelator(CORBA::Long subarrayNo);
353 char* astrobandCorrelator(CORBA::Long astrobandNo);
354 char* ownedCorrelator(CORBA::Long subarrayNo);
356 SeqShort* getAstroBandsForConfiguration(
const char* confName);
358 void tilt(
const SeqShort & carmaAntNoSeq);
360 void assignLO(CORBA::Long loRefNo);
363 const char* doppler,
const char* transition);
366 const char* doppler,
const char* transition);
368 void freqCore(
double frest,
SidebandType sb,
double fif,
369 const std::string& doppler,
370 const std::string& transition,
371 const bool endWithAbsorberInBeam,
372 const bool optimizeReceiver,
373 const bool setPowerLevels);
377 void refreq(
const SeqShort& carmaAntNoSeq,
const bool retune);
379 void refAtten(
unsigned short atten, CORBA::Short carmaAntNo);
383 void setConfigName(
const char* number);
385 void setObsblock(
const char* project,
const char* obsblock,
386 const char* subObsblock, CORBA::Long trial);
388 void setAllObsblocks(
const char* project1,
const char* obsblock1,
389 const char* subObsblock1, CORBA::Long trial1,
390 const char* project2,
const char* obsblock2,
391 const char* subObsblock2, CORBA::Long trial2);
393 void project(
const char* project);
395 void obsblock(
const char* obsblock);
397 void subObsblock(
const char* subObsblock);
399 void trial(CORBA::Long number);
401 void setIntent(
const char* sourcename,
407 void resetProjectAndObsblock(
void );
411 const CORBA::Short minAnts,
412 const float calMaxTime,
413 const float calMaxRms,
415 const float maxRmsPathLength,
417 const float maxDecor,
418 const float requiredRms
421 void setDefaultConstraints(
void );
423 bool isCommissioning(
const char * project );
428 void elevLimit(
float limit);
430 char* info(
const char* sourceName);
432 RaDecSeq* getRaDec(
const char* sourceName);
434 AzElSeq* azel(
const char* sourceName,
double minutes);
436 bool isUp(
const char* sourceName);
438 float whenUp(
const char* sourceName);
440 float whenDown(
const char* sourceName);
442 float whenTransit(
const char* sourceName);
446 char* whazUpOptical();
448 void integrate(
double intTime, CORBA::Long numInts,
449 double gap, CORBA::Boolean science);
453 void fringeTracking(
bool on);
455 void phaseSwitching(
bool on,
short chanNo);
457 void lrPhaseOffsetMode(
bool on);
459 void lrPhase(
float phaseOffset, CORBA::Short carmaAntNo);
461 void lrRate(
float phaseRate, CORBA::Short carmaAntNo);
466 void tiltZeros(
float aftForward,
float leftRight, CORBA::Short carmaAntNo);
468 void aperturePointingConstants(
Aperture ap,
469 float az,
float el,
float sag, CORBA::Short carmaAntNo);
471 void setOvroMountPointingConstants(
double m1,
476 CORBA::Short carmaAntNo );
478 void setBimaMountPointingConstants(
const SeqDouble & dazCoefs,
480 CORBA::Short carmaAntNo );
486 void setSzaMountPointingConstants(CORBA::ULong azEncoderCountsPerTurn, CORBA::ULong elEncoderCountsPerTurn,
487 CORBA::ULong azMinEncoderCount, CORBA::ULong azMaxEncoderCount,
488 CORBA::ULong elMinEncoderCount, CORBA::ULong elMaxEncoderCount,
489 CORBA::Double azEncoderZeroDegrees, CORBA::Double elEncoderZeroDegrees,
490 CORBA::Double haTiltDegrees, CORBA::Double latTiltDegrees, CORBA::Double elTiltDegrees,
491 CORBA::Double opticalXCollimationDegrees, CORBA::Double opticalYCollimationDegrees,
492 CORBA::Double opticalFlexureSinDegrees, CORBA::Double opticalFlexureCosDegrees,
493 CORBA::Double radioXCollimationDegrees, CORBA::Double radioYCollimationDegrees,
494 CORBA::Double radioFlexureSinDegrees, CORBA::Double radioFlexureCosDegrees,
495 CORBA::Short carmaAntNo );
497 void setSzaEncoderLimits(CORBA::ULong azMinCount, CORBA::ULong azMaxCount,
498 CORBA::ULong elMinCount, CORBA::ULong elMaxCount,
499 CORBA::Short carmaAntNo);
501 void setSzaEncoderZeros(CORBA::Double azEncZeroDeg, CORBA::Double elEncZeroDeg,
502 CORBA::Short carmaAntNo);
504 void setSzaTilts(CORBA::Double haTilt, CORBA::Double latTilt, CORBA::Double elTilt,
505 CORBA::Short carmaAntNo);
511 void azPointingConstant(
double m1, CORBA::Short carmaAntNo);
513 void phaseOffset(
float phase,
short bandNo,
514 short antenna1No,
short antenna2No);
516 void applyTsys(
bool on);
518 void applyFlux(
bool on);
520 void applyFocus(
bool on);
522 void setDecimationMode(
enum DecimationMode decimationMode,
523 CORBA::UShort bandNo);
526 carma::antenna::common::RxControl::Pol_Type pol,
527 CORBA::Float startVjInMv,
528 CORBA::Float stopVjInMv,
529 CORBA::Float stepVjInMv,
530 CORBA::UShort deltaInMs,
531 CORBA::Boolean doTotalPower,
535 getIVcurve(CORBA::Short carmaAntNo);
540 CORBA::Short count = 0);
542 void focusZ(
float position, CORBA::Short carmaAntNo);
544 void focusX(
float position, CORBA::Short carmaAntNo);
546 void focusY(
float position, CORBA::Short carmaAntNo);
548 void equatOffset(
double dra,
551 bool affectPhaseCenter,
552 bool whileIntegrating);
554 void phaseCenterOffset(
double ra,
double dec);
556 void passiveLO(
double freq);
562 AntennaReady* tsys();
564 void optimizeThresholds(
const SeqShort & bandNoSeq );
566 void flattenPhases(
const SeqShort & bandNoSeq );
569 void calibrateSpectra(
const SeqShort & bandNoSeq,
570 const bool noiseEnabled,
576 bool checkConfig(
const bool quiet);
579 const bool includeOfflineBands );
581 ObsblockGroup getObsblock(
const ControlCorrelatorDesignation ctype);
592 class ConfigAstroBand {
595 ConfigAstroBand(SubarrayControlImpl* parent,
596 unsigned astroBandNo,
597 const std::string & astroBandConf,
604 const std::string & transition,
605 const std::string & imageTransition,
612 std::set<CorrelatorHandle *> getCorrelatorGroup();
615 std::set<CorrelatorHandle *>
616 getCorrelatorGroup(SubarrayControlImpl* parent, carma::util::AstroBand& astroBand);
619 std::set<CorrelatorHandle *>
620 getCorrelatorGroup(SubarrayControlImpl* parent,
621 unsigned short corrBandNo,
622 ControlCorrelatorDesignation corrType=carma::util::CORR_NONE);
625 std::set<VlbiHandle *> getVlbiGroup();
628 std::set<VlbiHandle *>
629 getVlbiGroup(SubarrayControlImpl* parent,
unsigned short corrBandNo);
631 void setupCorrelatorBandwidth();
633 void updateCorrelator(
bool updateFpgaMode =
true);
635 void updateBlockDownconverter();
637 void updateLo2Frequency();
639 void checkConfigurationSuccess();
641 void finishSetupAfterInputsValidated();
643 void checkInputArguments();
649 carma::util::AstroBand astroBand_;
650 std::string astroBandConf_;
654 std::ostringstream corrmodeStream_;
655 carma::monitor::ControlBandPoints::CorrBitsMonitorPointEnum::CORRBITS cbits_;
668 carma::monitor::ControlBandPoints::Lo2SidebandMonitorPointEnum::LO2SIDEBAND lo2sb_;
674 std::string bwstring_;
676 std::string transition_;
677 std::string imageTransition_;
681 void assertAstroBandConfiguration();
682 std::string bwString();
684 void checkSubarrayMembership();
686 void setIFSwitchPositions();
687 void setDCLOSwitchPositions();
688 void setLOSwitchPositions();
689 void setLLSwitchPositions();
690 void parseBandwidth();
694 void setupCorrMps(
unsigned bandNo,
const ControlCorrelatorDesignation cType);
697 void updateCorrDataRemapper();
698 void updateBlockDownconverter(
const ControlCorrelatorDesignation type,
const short corrBandNo);
699 void updateLo2Frequency(
const ControlCorrelatorDesignation type,
const short corrBandNo);
700 SubarrayControlImpl* parent_;
706 typedef boost::shared_ptr<ConfigAstroBand> configab_ptr;
707 typedef std::pair<unsigned,configab_ptr> ConfigAstroBandPair;
708 typedef std::map<unsigned, configab_ptr> ConfigAstroBandMap;
713 ::pthread_mutex_t gCabMapGuard_ ;
716 void assertCorrelatorConfiguration();
718 void enableCorrelation(
const SeqShort & astroBandNoSeq,
719 const CORBA::Boolean correlationsEnabled);
721 void astroBandOnline(::CORBA::Short astroBandNo, CORBA::Boolean online);
734 void clearAstroBand(::CORBA::Short astroBandNo);
736 void configAstroBand(
737 ::CORBA::Short astroBandNo,
738 const char* astroBandConf,
740 ::CORBA::Double fcenter,
742 ::CORBA::Double frest,
743 ::CORBA::Double imagefrest,
744 ::CORBA::Boolean online,
745 const char* transition,
746 const char* imageTransition,
760 void initializeCableMap(
const char * fileName);
762 void loadConfiguration(
const char * fileName,
763 const char * confName,
764 const char * astroBandConfName);
766 char * queryConfiguration();
768 void checkConfigurationSuccess(CORBA::Short astroBandNo);
770 void checkConfigurationValidity(CORBA::Short astroBandNo,
771 const char * confName);
779 double mjd(
double seconds);
785 void useAdjustableDelay(
bool useIt,
const SeqShort & carmaAntNoSeq );
787 void useIonosphericDelay(
bool useIt,
const SeqShort & carmaAntNoSeq );
789 void useGeometricDelay(
bool useIt,
const SeqShort & carmaAntNoSeq );
791 void useHeightDelay(
bool useIt,
const SeqShort & carmaAntNoSeq );
793 void useTroposphericDelay(
bool useIt,
const SeqShort & carmaAntNoSeq );
795 void useThermalDelay(
bool useIt,
const SeqShort & carmaAntNoSeq );
797 void ucat(
const char* catalog);
799 void apEff(
const float efficiency,
const CORBA::Short carmaAntNo);
801 void jyperk(
const float gain,
const CORBA::Short carmaAntNo);
803 void sbratio(
const float ratio,
806 void radioAperture(
bool useRadio,
const SeqShort& carmaAntNoSeq);
808 AntennaReady* bogus(
float numSeconds);
810 void testAntHandles( CORBA::Double aSeconds,
811 CORBA::Double bSeconds,
812 CORBA::Long whichTest,
813 CORBA::Double lateAfterSeconds,
816 void setTraceLevel( CORBA::Short traceLevel );
818 double lineFreq(
const char* line);
820 double transitionFreq(
const char* molecule,
const char* transition);
822 void alarm(
bool state,
const char* alarmName);
824 void alarmEnable(
bool state);
826 void alarm1mm(
bool state);
828 void comment(
const char* obsComment);
830 void log(
const char* entry);
832 void logError(
const char* entry);
834 bool getScriptBool(CORBA::Short index);
836 void setScriptBool(CORBA::Short index,
const bool value);
839 CORBA::Double getScriptDouble(CORBA::Short index);
841 void setScriptDouble(CORBA::Short index,
const CORBA::Double value);
843 CORBA::Long getScriptInt(CORBA::Short index);
845 void setScriptInt(CORBA::Short index, CORBA::Long value);
847 char* getScriptString(CORBA::Short index);
849 void setScriptString(CORBA::Short index,
const char* value);
851 void appendScriptString(CORBA::Short index,
const char* value);
853 void addScriptHistory(
const char* value);
854 char* getScriptHistory();
855 bool getScriptHistoryFull();
857 void clearScriptAll();
859 void setScriptName(
const char* name);
861 char * getScriptName();
867 void setFaultSystemDriveErrorPreference(
enum carma::fault::EffectPreference inPref );
869 void disableFaultSystemAlarms(
const SeqString & inMonitorPointNames );
871 void restoreFaultSystemAlarms(
const SeqString & inMonitorPointNames );
873 void setFaultSystemAlarmEnableState(
bool inStateIsOn );
875 void resetTimeSinceLastIntegration();
880 void setFrameDimensions( CORBA::Short x,
886 void setFrameBrightness( CORBA::Float brightness,
889 void setFrameContrast( CORBA::Float contrast,
895 void setRotationAndFieldsOfView( CORBA::Float rotationInDegrees,
896 CORBA::Float azFOVInArcminutes,
897 CORBA::Float elFOVInArcminutes,
898 CORBA::Short carmaAntNo );
900 void takeBackgroundImage( CORBA::UShort numFrames,
903 void findCentroid( CORBA::UShort numFramesPerImage,
904 CORBA::UShort minValidCentroids,
905 CORBA::UShort maxCentroidAttempts,
906 CORBA::UShort numEdgePixels,
907 CORBA::UShort apertureRadiusPixels,
908 CORBA::Float pixelThresholdSigma,
909 CORBA::Boolean subBackground,
910 CORBA::Boolean normalizeMedian,
913 CentroidResults * getCentroidResults( CORBA::Short carmaAntNo );
916 getImage( CORBA::UShort numFrames,
917 CORBA::Boolean subBackground,
918 CORBA::Boolean normalizeMedian,
919 CORBA::Boolean normalizeImage,
920 CORBA::Short carmaAntNo );
928 void reconnect(
bool force );
931 void vj(carma::antenna::common::RxControl::Pol_Type pol,
932 CORBA::Float vj, CORBA::Short carmaAntNo);
935 void ij(carma::antenna::common::RxControl::Pol_Type pol,
936 CORBA::Float ij, CORBA::Short carmaAntNo);
938 void saveControlSubsystemState(
const char * filename );
940 void restoreControlSubsystemFromFile(
const char * filename );
942 void restorationInProgress(
bool restoring );
944 void signalControlSubsystemRestored( );
951 NearestInfoSeq * getNearest(
const char * source,
956 CORBA::Short numReturn,
957 CORBA::Boolean ignoreNorthSouth,
958 const char * coordSys,
959 CORBA::Boolean optical,
960 CORBA::Float fluxLimit,
961 CORBA::Float frequency );
965 void setInvalidationForMosaics( CORBA::Boolean invalidate );
968 void setRepTaskName( CORBA::Long taskIndex,
const char* taskName);
969 void setRepTaskInterval( CORBA::Long taskIndex, CORBA::Double interval);
970 void setRepTaskRemind( CORBA::Long taskIndex, CORBA::Double remind);
971 void setRepTaskAuto( CORBA::Long taskIndex, CORBA::Double taskauto);
972 void setRepTaskCompleted(CORBA::Long taskIndex, CORBA::Double mjd);
975 char* testMessageSize(CORBA::ULong size);
983 bool antIsOffline(
unsigned antNo);
984 bool antIsInSubarray(
unsigned antNo);
985 bool antIsInAnotherSubarray(
unsigned antNo);
991 carma::monitor::ControlBandPoints::FpgaModeMonitorPointEnum::FPGAMODE
1005 MonitorCorrelatorDesignation msCorrType();
1010 MonitorCorrelatorDesignation msCorrType(
const ControlCorrelatorDesignation ctype);
1016 ControlCorrelatorDesignation csCorrType();
1023 bool isBandCompletelyInsideBlock(
double bandCenter,
1032 double getMonitorValue(const ::std::string& componentName) ;
1042 static ::std::string getSubarrayName(
int subarrayNo );
1044 static ::std::string getAlphanumericSubarrayName(
int subarrayNo );
1046 ::std::string getName()
const;
1048 ::std::string getAlphanumericName()
const;
1063 static bool isActionCompleteHelper(
1064 const monitor::MonitorPointInt& seqNoMP,
1065 const int consecutiveErrorLimit,
1066 int& consecutiveErrorCount,
1067 const int nextSequenceNo,
1068 const int carmaAntNo,
1069 const std::string& name,
1070 const bool debug =
true) ;
1076 void updateHalfSecMonitorPoints();
1087 ::std::string sourceName( )
const;
1094 ::pthread_mutex_t gCorrNextSeqNoGuard_;
1095 CORBA::Long gCorrNextSeqNo_;
1097 static ::std::string
1098 getStringForCarmaAntNoSeq(
const SeqShort & carmaAntNoSeq );
1100 static ::std::string
1101 getStringForCarmaAntNo( CORBA::Short carmaAntNo );
1109 static unsigned getMaxNumBands(ControlCorrelatorDesignation cType);
1117 bool getBlockDownconverterEnabled(
const ControlCorrelatorDesignation cType,
const unsigned corrBandNo )
const;
1125 void setBlockDownconverterEnabled(
const ControlCorrelatorDesignation cType,
const unsigned corrBandNo,
const bool enabled);
1131 void updateBlockDownconverters();
1137 bool isShadowedNow(
const short carmaAntNo,
ShadowingType type,
double diameterFraction);
1138 bool isShadowedHaDec(
const short carmaAntNo,
double hourAngleHours,
double decDegrees,
ShadowingType type,
double diameterFraction);
1139 bool isShadowedSource(
const short carmaAntNo, std::string sourceName,
double lstHours,
ShadowingType type,
double diameterFraction);
1142 bool isInitialized()
const {
return initializationFlag_; }
1146 SubarrayControlImpl(
const SubarrayControlImpl & rhs );
1147 SubarrayControlImpl & operator=(
const SubarrayControlImpl & rhs );
1151 class TrackerThread;
1152 class TrackerThreadSync;
1156 typedef ::std::vector< CorrelatorHandle * > CorrelatorHandleVector;
1157 typedef ::std::vector< VlbiHandle * > VlbiHandleVector;
1159 typedef ::std::vector< short > CarmaComponentNoVec;
1160 typedef CarmaComponentNoVec CarmaAntNoVec;
1161 typedef CarmaComponentNoVec CarmaBandNoVec;
1163 typedef ::std::set< short > CarmaComponentNoSet;
1164 typedef CarmaComponentNoSet CarmaAntNoSet;
1165 typedef CarmaComponentNoSet CarmaBandNoSet;
1167 typedef SeqShort CarmaComponentNoSeq;
1168 typedef CarmaComponentNoSeq CarmaAntNoSeq;
1169 typedef CarmaComponentNoSeq CarmaBandNoSeq;
1171 typedef ::std::set< AntennaControls * > AntControlsGroup;
1172 typedef ::std::set< monitor::ControlSubsystemBase::Antenna* > AntMonPtGroup;
1173 typedef ::std::set< AntennaHandle * > AntennaGroup;
1174 typedef ::std::set< CalibratorHandle * > CalibratorGroup;
1175 typedef ::std::set< CryoHandle * > CryoGroup;
1176 typedef ::std::set< DownconverterHandle * > DownconverterGroup;
1177 typedef ::std::set< DriveHandle * > DriveGroup;
1178 typedef ::std::set< FocusHandle * > FocusGroup;
1179 typedef ::std::set< OpticalTelHandle * > OpticalTelGroup;
1180 typedef ::std::set< RxSelectorHandle * > RxSelectorGroup;
1181 typedef ::std::set< CorrelatorHandle * > CorrelatorGroup;
1182 typedef ::std::set< LoberotatorHandle * > LoberotatorGroup;
1183 typedef ::std::set< FaultHandle * > FaultSysGroup;
1184 typedef ::std::set< PipelineHandle * > PipelineGroup;
1185 typedef ::std::set< ProjectDatabaseManagerHandle * > ProjectDatabaseGroup;
1186 typedef ::std::set< VlbiHandle * > VlbiGroup;
1187 typedef ::std::map< unsigned short, bool > CompletionStatusType;
1188 typedef signalpath::SignalPathMapperControl::WalshColumnAssignment WalshColType;
1190 typedef ::std::vector<WalshColType> WalshColVec;
1192 struct AntTypeCounts {
1200 interferometry::DelayEngine* getDelayEngine( )
const;
1203 short getWalshCol(WalshColVec assignments,
short carmaAntNo );
1205 void broadcastDelayData(
1206 const interferometry::DelayFrameVec & delayFrameVec );
1209 void updateLoberotator(
1210 const interferometry::DelayFrameVec & delayFrameVec );
1216 loberotator::LoberotatorControl::DelayFreqPacket
1217 convertDelayFrameVecToDelayFreqPacket(
1218 const interferometry::DelayFrameVec& delayFrameVec);
1231 void updateCorrelator(
1232 const interferometry::DelayFrameVec& delayFrameVec);
1237 void updateWalshColumns();
1238 void updateWalshColumns(ControlCorrelatorDesignation corr);
1239 void updateWalshColumns(
const CorrelatorGroup & group,
unsigned astroBandNo);
1241 void phaseCenterOffsetInternal(
double ra,
double dec);
1257 void updateLo1DopplerFrequency(
const double mjd);
1258 void updateLo2DopplerFrequency();
1259 void resetDopplerInterpolator(
const MjdTriplet & mjdTriplet );
1269 double computeDopplerFrequencyWithInterpReset(
1270 const ::std::string & dopplerSource,
1273 double computeDopplerFrequency(
double mjd,
double restFreq );
1280 monitor::MonitorComponent*
1281 findMonitorComponent(const ::std::string& componentName)
const;
1293 void setArrayReference (
const services::Location & arrayRef);
1295 void setupCorrelatorVec();
1296 void setupVlbiVec();
1305 void checkBandNo(
short bandNo,
bool allowZero );
1315 bool checkConfig(
const bool quiet,
const ControlCorrelatorDesignation cType);
1317 bool checkConfigWB(
const bool quiet);
1318 bool checkConfigC3G(
const bool quiet,
const ControlCorrelatorDesignation cTYpe);
1320 static unsigned long getDefaultLateAfterMillis( );
1322 static void waitForAllNormal( util::WorkResultSet & wrs,
1323 unsigned long lateAfterMillis,
1326 static void waitForAllNormal( util::WorkResultSet & wrs,
1327 unsigned long lateAfterMillis );
1329 static void waitForAllNormal( util::WorkResultSet & wrs,
1332 static void waitForAllNormal( util::WorkResultSet & wrs );
1334 std::string makeObsBlockId(ObsblockGroup& obGroup);
1343 bool subarrayIsIntegrating();
1345 bool anyScienceSubarrayIsIntegrating();
1347 AntControlsGroup getAntControlsGroup( );
1350 getAntControlsGroupForCarmaAntNo( const ::std::string & commandName,
1351 CORBA::Short carmaAntNo );
1358 getAntControlsGroupForCarmaAntNoSeq(
1359 const ::std::string & commandName,
1360 const CarmaAntNoSeq & carmaAntNoSeq,
1363 bool skipAntsNotOwnedByMe );
1366 getAntControlsGroupForCarmaAntNoVec(
1367 const ::std::string & commandName,
1368 const CarmaAntNoVec & carmaAntNoVec,
1371 bool skipAntsNotOwnedByMe );
1373 monitor::ControlSubsystemBase::Antenna&
1374 getAntMonPtForCarmaAntNo(
const unsigned short carmaAntNo );
1376 monitor::ControlSubsystemBase::Ovro&
1377 getOvroMonPtForCarmaAntNo(
const unsigned short carmaAntNo );
1379 monitor::ControlSubsystemBase::Bima&
1380 getBimaMonPtForCarmaAntNo(
const unsigned short carmaAntNo );
1382 monitor::ControlSubsystemBase::Sza&
1383 getSzaMonPtForCarmaAntNo(
const unsigned short carmaAntNo );
1385 monitor::ControlSubsystemBase::Antenna&
1386 getAntMonPtForAntControls(
const AntennaControls & antControls );
1389 bool containsComponent(
const CarmaAntNoVec & v,
1390 unsigned short componentNo );
1403 AntMonPtGroup getAntMonPtGroupForAntControlsGroup(
1404 const ::std::string & commandName,
1405 const AntControlsGroup & aGroup );
1418 AntMonPtGroup getAntMonPtGroupForCarmaAntNoSeq(
1419 const ::std::string & commandName,
1420 const CarmaAntNoSeq & carmaAntNoSeq,
1421 bool allowZero =
true,
1422 bool ignoreDupes =
true,
1423 bool skipAntsNotOwnedByMe =
true );
1426 getCalibratorGroupForCarmaAntNoSeq( const ::std::string & commandName,
1427 const CarmaAntNoSeq & carmaAntNoSeq,
1432 getCalibratorGroupForCarmaAntNo(const ::std::string & commandName,
1433 CORBA::Short carmaAntNo);
1436 getCryoGroupForCarmaAntNoSeq( const ::std::string & commandName,
1437 const CarmaAntNoSeq & carmaAntNoSeq,
1442 getDownconverterGroup( const ::std::string & commandName );
1444 DownconverterHandle *
1445 getDownconverterHandleForCorrType( ControlCorrelatorDesignation type );
1448 getDriveGroupForAntControlsGroup( const ::std::string & commandName,
1449 const AntControlsGroup & antControls );
1452 getDriveGroup( const ::std::string & commandName );
1455 getDriveGroupForCarmaAntNo( const ::std::string & commandName,
1456 CORBA::Short carmaAntNo );
1459 getDriveGroupForCarmaAntNoSeq( const ::std::string & commandName,
1460 const CarmaAntNoSeq & carmaAntNoSeq,
1463 bool skipAntsNotOwnedByMe );
1466 getAntennaGroupForAntControlsGroup( const ::std::string & commandName,
1467 const AntControlsGroup & antControls );
1470 getAntennaGroupForCarmaAntNoSeq( const ::std::string & commandName,
1471 const CarmaAntNoSeq & carmaAntNoSeq,
1474 bool skipAntsNotOwnedByMe
1478 getAntennaGroupForCarmaAntNo( const ::std::string & commandName,
1479 CORBA::Short carmaAntNo );
1482 getFocusGroupForAntControlsGroup( const ::std::string & commandName,
1483 const AntControlsGroup & antControls );
1486 getFocusGroupForCarmaAntNoSeq( const ::std::string & commandName,
1487 const CarmaAntNoSeq & carmaAntNoSeq,
1492 getFocusGroupForCarmaAntNo( const ::std::string & commandName,
1493 CORBA::Short carmaAntNo );
1496 getOpticalTelGroupForAntControlsGroup( const ::std::string & commandName,
1497 const AntControlsGroup & antControls );
1500 getOpticalTelGroup( const ::std::string & commandName );
1503 getOpticalTelGroupForCarmaAntNoSeq(const ::std::string & commandName,
1504 const CarmaAntNoSeq& carmaAntNoSeq,
1507 bool skipUnownedAnts=
false);
1510 getOpticalTelGroupForCarmaAntNo( const ::std::string & commandName,
1511 CORBA::Short carmaAntNo );
1514 getRxSelectorGroupForAntControlsGroup(
const std::string& commandName,
1515 const AntControlsGroup& antControls );
1518 getRxSelectorGroup( const ::std::string & commandName );
1521 getRxSelectorGroup(
const std::string& commandName,
1522 const CarmaAntNoSeq& carmaAntNoSeq);
1525 getRxSelectorGroupForCarmaAntNo(
const std::string & commandName,
1526 CORBA::Short carmaAntNo );
1529 CorrelatorGroup getCorrelatorGroup(const ::std::string & commandName,
1530 ControlCorrelatorDesignation passedCorrType = carma::util::CORR_NONE);
1534 getCorrelatorGroup(const ::std::string & commandName,
1536 ControlCorrelatorDesignation corrType,
1539 CorrelatorGroup getCorrelatorGroup(const ::std::string & commandName,
1540 const CarmaBandNoSeq& bandNoSeq,
1541 ControlCorrelatorDesignation corrType,
1544 CorrelatorGroup getCorrelatorGroup(const ::std::string & commandName,
1545 const CarmaBandNoVec & carmaBandNoVec,
1546 ControlCorrelatorDesignation corrType,
1550 getCorrelatorGroup(const ::std::string & commandName,
1551 const std::vector<carma::signalpath::SignalPathMapperControl::CorrelatorBand>& bandNoVec);
1554 CorrelatorGroup addCorrelatorHandle(CorrelatorGroup& result,
1556 ControlCorrelatorDesignation passedCorrType);
1558 void checkCorrelatorGroupReturn(
bool outputIsEmpty,
bool inputIsEmpty);
1560 VlbiGroup getVlbiGroup( const ::std::string & commandName );
1563 getVlbiGroupForBandNoParam( const ::std::string & commandName,
1567 getVlbiGroupForBandNoSeq( const ::std::string & commandName,
1568 const CarmaBandNoSeq& bandNoSeq,
1572 getVlbiGroupForBandNoVec( const ::std::string & commandName,
1573 const CarmaBandNoVec & carmaBandNoVec,
1578 LoberotatorGroup getLoberotatorGroup( );
1580 FaultSysGroup getFaultSysGroup( );
1582 PipelineGroup getPipelineGroup( );
1584 ProjectDatabaseGroup getProjectDatabaseGroup( );
1586 std::string getProject(
const ControlCorrelatorDesignation ctype);
1588 ControlCorrelatorDesignation getCorrelatorDesignation();
1591 carma::monitor::Obsblock& getObsblockMp(
const ControlCorrelatorDesignation ctype);
1595 void updateCorrelatorMonitorPoints(
const ControlCorrelatorDesignation ctype);
1599 void checkStringValidity(std::string& str, std::string prefix,
bool checkWhitespace=
true);
1601 bool setObsblockIdItem(ObsblockGroup& obSave,
1602 bool overwriteProject,
bool overWriteObsblock,
bool overWriteSubobsblock,
bool overwriteTrial);
1604 bool setObsblockIdProject(ObsblockGroup& ob);
1605 bool setObsblockIdObsblock(ObsblockGroup& ob);
1606 bool setObsblockIdSubobsblock(ObsblockGroup& ob);
1607 bool setObsblockIdTrial(ObsblockGroup& ob);
1609 static AntTypeCounts
1610 getAntTypeCounts(
const CarmaAntNoVec & carmaAntNoVec );
1612 static AntTypeCounts
1613 getAntTypeCounts(
const CarmaAntNoSeq & carmaAntNoSeq );
1615 static AntTypeCounts
1616 getAntTypeCounts(
const AntControlsGroup & antControls );
1618 static AntTypeCounts
1619 getAntTypeCounts(
const DriveGroup & driveGroup );
1620 static AntTypeCounts
1621 getAntTypeCounts(
const RxSelectorGroup& rxGroup);
1624 static unsigned long
1625 getDriveCommandLateAfterMillis(
const DriveGroup & driveGroup );
1628 static unsigned long
1629 getDriveCommandLateAfterMillis(
const DriveGroup & driveGroup,
1630 size_t maxVaxOpsPerOvroAnt );
1632 static unsigned long
1633 getRxCommandLateAfterMillis(
const RxSelectorGroup& rxGroup);
1635 void padOffset(
float east,
1638 AntennaControls & antControls,
1639 const bool broadcastDelays =
true );
1643 void updateLocation( AntennaControls & antControls,
1644 const bool broadcastDelays =
true );
1646 void focus(
float position,
1647 const FocusGroup & focusGroup );
1649 void trackDriveGroup( const ::std::string & source,
1650 const DriveGroup & driveGroup,
1651 bool changeArrayInfo,
1656 bool failIfIntegrating
1661 bool waitIntegration(
const monitor::MonitorSystem& mon,
1662 int passCount,
int invalidDataLimit );
1663 bool waitTracking(
const monitor::MonitorSystem& mon,
1664 const int passCount,
const int invalidDataLimit,
1665 CompletionStatusType& completionStatus,
WaitCondition condition,
1667 bool waitCalibrator(
const monitor::MonitorSystem& mon,
1668 const int passCount,
const int invalidDataLimit,
1669 CompletionStatusType& completionStatus,
WaitCondition condition);
1670 bool waitOptics(
const monitor::MonitorSystem& mon,
1671 const int passCount,
const int invalidDataLimit,
1672 CompletionStatusType& completionStatus,
WaitCondition condition);
1673 bool waitCentroid(
const monitor::MonitorSystem& mon,
1674 const int passCount,
const int invalidDataLimit,
1675 CompletionStatusType& completionStatus,
WaitCondition condition,
1677 bool waitTuned(
const monitor::MonitorSystem& mon,
1678 const int passCount,
const int invalidDataLimit,
1679 CompletionStatusType& completionStatus,
WaitCondition condition);
1680 bool waitCorrelator(
const monitor::MonitorSystem & mon,
1681 const int passCount,
const int invalidDataLimit,
1682 CompletionStatusType & completionStatus,
WaitCondition condition );
1683 void waitDebugger(
const CompletionStatusType& completionStatus,
1684 const std::string& name,
1685 const int passCount,
const int numDone,
const int numNotDone);
1688 CarmaAntNoVec getCarmaAntNoVecForAllAntennas( )
const;
1690 CarmaAntNoVec getCarmaAntNoVecForAllReachableAntennas( )
const;
1692 CarmaAntNoVec getCarmaAntNoVec(
const CarmaAntNoSeq& seq)
const;
1694 CarmaBandNoVec getCarmaBandNoVecForAllBands( );
1695 CarmaBandNoVec getCarmaBandNoVecForAllOnlineAndReachableBands( );
1696 CarmaBandNoVec getCarmaBandNoVec(
const CarmaBandNoSeq & seq )
const;
1697 CarmaBandNoSet getCarmaBandNoSetForCarmaBandNoVec(
1698 const ::std::string & commandName,
1699 const CarmaBandNoVec & vec );
1701 void incrementTuneSeqNo(
const RxSelectorGroup& rxSelectorGroup);
1711 void extendDopplerInterpolator(
double mjd );
1718 MjdTriplet getAlignedAntUpdateTimes(
double now =
util::Time::MJD() );
1726 MjdTriplet getAlignedInterfUpdateTimes(
double now =
util::Time::MJD() );
1735 double computeTruncatedInterfUpdateTime(
1743 double computeTruncatedAntUpdateTime(
1746 static double computeTruncatedMjd(
double mjd,
double interval );
1776 void renewDelays(
const DriveGroup & driveGroup ,
1783 void updateFrequencyMPs( );
1792 void updateFrequencyMPs(
const ControlCorrelatorDesignation cType );
1799 void updateFrequency(
double loSkyFreqGHz);
1807 double apEff(
unsigned short carmaAntNo,
double loFreqGHz)
const;
1812 double diameter(
unsigned short carmaAntNo)
const;
1818 double computeJyPerK(
unsigned short carmaAntNo,
double loFreqGHz)
const;
1827 void updateJyperk(
double loSkyFreqGHz);
1835 void updateSbrs(
double loSkyFreqGHz);
1842 void selectAperture(
bool opticalAperture,
1843 const CarmaAntNoSeq& carmaAntNoSeq);
1846 void checkModeForEquatOffset(
const DriveGroup & driveGroup );
1852 void retrack(
const DriveGroup & driveGroup );
1858 void startAutoWriters();
1863 void internalInitialization();
1868 void instantiateHandles();
1873 void initializeObsblock(
void );
1878 void invalidateIntent(
void );
1880 void invalidateSpecificIntent( carma::monitor::Obsblock& ob);
1885 void invalidateConstraints(
void );
1894 bool obsblockContains (
const std::string & source );
1899 bool isDefaultProjectOrObsblock(
void );
1906 bool isThrowawayObsblock(
void );
1912 bool currentSourceHasIntent(
void );
1921 unsigned short getObsblockIndexOf (
const std::string & source );
1928 unsigned short getNextAvailableObsblockIndex (
void );
1930 bool isValidPurpose (
const std::string & purpose );
1938 void setObsblockCurrentObsObject(
void ) ;
1947 void setEqOffsetMonitorPoints(
const double dra,
const double ddec,
1954 void setPhsOffsetMonitorPoints(
const double dra,
const double ddec);
1962 bool hasDefaultIntent ( const ::std::string & project );
1968 const IntentInfo & getDefaultIntent ( const ::std::string & project );
1974 void setSourceName( const ::std::string & sourceName );
1983 void lastCommand( const ::std::string & command );
1988 void resetTsys(
const SeqShort & carmaAntNoSeq );
1992 class CachedCarmaMonSys {
1996 explicit CachedCarmaMonSys( );
1998 virtual ~CachedCarmaMonSys( );
2002 CachedCarmaMonSys(
const CachedCarmaMonSys & rhs );
2003 CachedCarmaMonSys & operator=(
const CachedCarmaMonSys & rhs );
2005 util::PthreadMutex guard_;
2006 ::std::string lastCachedInUseBy_;
2007 ::std::auto_ptr< monitor::CarmaMonitorSystem > cachedInstance_;
2018 ::std::vector< ::std::string > slcmodeVec_;
2019 ::std::vector< ::std::string > wbcmodeVec_;
2020 ::std::vector< ::std::string > c3gMax8modeVec_;
2021 ::std::vector< ::std::string > c3gMax23modeVec_;
2026 ConfigAstroBandMap cabmap_;
2031 ::std::auto_ptr< Prewriter > prewriter_;
2033 const int subarrayNo_;
2035 monitor::ControlSubsystem controlSubsystem_;
2036 monitor::ControlSubsystemBase::Subarray & subarrayContainer_;
2037 monitor::CarmaMonitorSystem carmaMonitor_;
2038 monitor::RawCarmaMonitorSystem rawCarmaMonitor_;
2039 monitor::SignalPathSubsystem signalPath_;
2041 CachedCarmaMonSys cachedWaitCarmaMonSys_;
2043 int nextCalibratorSeqNo_;
2044 int nextDriveSeqNo_;
2046 int nextCentroidSeqNo_;
2047 int nextOpticsSeqNo_;
2048 int nextIntegSeqNo_;
2050 unsigned short numAstroBands_;
2060 bool lo2DopplerTrackingEnabled_;
2063 ::std::auto_ptr< interferometry::DelayEngine > delayEngine_;
2064 monitor::DelayEngineSubsystem delaySubsystem_;
2067 ::std::auto_ptr< DCLOSwitchyardHandle > dcLoSwitchyard_;
2068 ::std::auto_ptr< DownconverterHandle > slDownconverter_;
2069 ::std::auto_ptr< DownconverterHandle > wbDownconverter_;
2070 ::std::auto_ptr< AlarmHandle > alarm_;
2071 ::std::auto_ptr< CorrDataRemapperHandle > corrDataRemapper_;
2073 ::std::auto_ptr< IFSwitchyardHandle > ifSwitchyard_;
2074 ::std::auto_ptr< LineLengthHandle > lineLength_;
2075 ::std::auto_ptr< LLSwitchyardHandle > llSwitchyard_;
2076 ::std::auto_ptr< LoberotatorHandle > loberotator_;
2077 ::std::auto_ptr< LOrefHandle > loRef_;
2078 ::std::auto_ptr< LOSwitchyardHandle > loSwitchyard_;
2079 ::std::auto_ptr< ClockHandle > masterClock_;
2080 ::std::auto_ptr< FaultHandle > faultSys_;
2081 ::std::auto_ptr< PipelineHandle > slPipeline_;
2082 ::std::auto_ptr< PipelineHandle > wbPipeline_;
2083 ::std::auto_ptr< PipelineHandle > c3gMax8Pipeline_;
2084 ::std::auto_ptr< PipelineHandle > c3gMax23Pipeline_;
2085 ::std::auto_ptr< ProjectDatabaseManagerHandle > projectDatabaseManager_;
2086 ::std::auto_ptr< SignalPathMapperHandle > signalPathMapper_;
2088 ::std::auto_ptr< AntManager > antManager_;
2089 ::std::auto_ptr< CorrelatorHandleVector > slCorrelatorVec_;
2090 ::std::auto_ptr< CorrelatorHandleVector > wbCorrelatorVec_;
2091 ::std::auto_ptr< CorrelatorHandle> c3gMax8Correlator_;
2092 ::std::auto_ptr< CorrelatorHandle> c3gMax23Correlator_;
2093 ::std::auto_ptr< VlbiHandleVector > vlbiVec_;
2095 ::std::auto_ptr< TrackerThread > trackerThread_;
2096 ::boost::thread trackerThreadThread_;
2097 ::boost::recursive_mutex trackerThreadSyncMutex_;
2099 ::std::auto_ptr< HalfSecUpdater> halfSecUpdater_;
2100 ::boost::thread halfSecUpdaterThread_;
2102 const ::std::auto_ptr< WorkerPool > workerPool_;
2105 ::std::auto_ptr< services::Observatory> obs_;
2108 services::SourceCatalog sourceCatalog_;
2119 ::std::auto_ptr< services::Ephemeris > arrayRefEphem_;
2126 ::std::auto_ptr< services::Ephemeris > dopplerEphem_;
2129 bool initializationFlag_;
2130 const bool verbose_;
2136 util::QuadraticInterpolatorNormal dopplerInterp_;
2141 bool isDopplerTracking_;
2146 mutable util::PthreadRWLock sourceNameGuard_;
2152 ::std::string sourceName_;
2163 ::std::string dopplerSource_;
2173 ::std::string userCatalog_;
2181 ::std::map< ::std::string, IntentInfo > projectDefaultIntentMap_;
2187 const IntentInfo invalidIntent_;
2188 void setIntent( const ::std::string & sourceName,
2189 const IntentInfo & intent);
2190 void setDefaultIntent(
const IntentInfo & intent);
2191 bool setDefaultObsObject(
void );
2192 void initializeDefaultProjectMap();
2195 bool scriptHistoryIsFull_;
2196 std::string scriptStateDir_;
2197 const int nScriptStrings_;
2203 ::std::vector<double> antDelay_;
2204 ::std::vector<double> opticsDelayMM_;
2205 ::std::vector<double> opticsDelayCM_;
2206 ::std::vector<double> extraLOcableDelayMM_;
2207 ::std::vector<double> extraLOcableDelayCM_;
2209 ::std::map< int, double > padDelay_;
2219 double globalDelay_;
2222 void loadDelayTables(
void );
2225 bool restorationInProgress_;
2228 void markStateChange( );
2230 bool controlSubsystemRestored_;
2235 ::std::vector<bool> slBdcEnabled_;
2236 ::std::vector<bool> wbBdcEnabled_;
2239 double lastStartTrackMJD_;
2240 services::AstroTime astroTime_;
2246 bool isAntennaInitialized(
const short carmaAntNo );
2252 AntennaControls::PersistentInfo retrieveAntPersistentInfo(
2253 const short carmaAntNo,
2254 const monitor::MonitorSystem & monSys,
2255 services::Observatory & obs);
2266 void copyAntDelayData( monitor::DelayEngineSubsystem::DelayData & lhs,
2267 const monitor::DelayEngineSubsystem::DelayData & rhs,
2279 ::std::vector<double> rotateUVtoJ2000(
double U,
double V,
double theta);
2281 std::string scriptStringFilename(
int i);
2287 bool prewriterIsInvalidating_;
2289 carma::pipeline::ShadowingCalculator shadowingCalculator_;
2292 bool checkAntControls( AntControlsGroup & antControlsGroup,
2293 const unsigned carmaAntNo,
2294 const ::std::string & methodName );
2303 #endif // End of conditional include guard
sequence< double > RaDecSeq
Sequence of ra & dec in degrees.
SidebandType
Downconverter sideband choice.
carma::util::SeqShort SeqShort
Sequence of CORBA::Short.
3 mm - Polarization 1 only
AzWrapMode
Possible Azimuth Wrap modes.
sequence< AntennaAssignment > AntennaAssignmentSeq
Sequence of antenna assignments for a subarray.
Tagged: Fri Oct 7 13:14:58 PDT 2011.
PointStatusType
ON or OFF source indicator (Singledish observations)
ScriptStateType
Current state of the script.
CorrelatorFpgaModeType
FPGA configuration modes.
The monitor system base class.
FilterType
Valid output bandwidth filter types.
The monitor system for the Control subsystem.
std::vector< Length * > convertBaseline(Pad pad, Length X, Length Y, Length Z)
Take an X, Y, Z topographic position and convert it to ENU offsets, given a Pad location.
String value monitor point (up to 80 characters in length).
Source is derived from CatalogEntry and is used to hold information for a particular entry from a sou...
WaitCondition
Valid conditions to satisfy a wait.
State
Enumerate valid polarization states.
CorrelatorBitType
Correlator number of bits.
enum carma::util::hardwareTypeEnum hardwareType
The type of board hardware in a given band.
Class to receive phase switching tables which then triggers more processing.
Rich description of a frame grabbed image.
Tagged: Wed Jan 5 09:42:06 PST 2011.
Aperture
Enumerate apertures to use for selecting pointing models.
carma::util::SeqFloat SeqFloat
Sequence of CORBA::Float.
BlockDCPolarizationType
Block Downconverter polarization input selector choice.
Type
Enumerate valid Receiver types.
Position
A calibrator position enumerator.
Data returned by an IV curve method Be careful not to assume that the totPower contains the same numb...
Astronomical Time routines.
carma::util::SeqDouble SeqDouble
Sequence of CORBA::Double.
carma::util::SeqString SeqString
Sequence of CORBA::String.
Resolution
Resolutions supported by our framegrabber.
ImagingType
Imaging type describing how the track is being observed.
NearestActionType
Use or exclude the input source list when searching for nearest neighbors.
Block
Block band selector.
SwitchState
Generic switch state enumerator.
CorrelatorBandWidthType
Supported spectral correlator bandwidths.
sequence< float > AzElSeq
Sequence of azimuth and elevation in degrees.
ShadowingType
Query internal or swept-volume shadowing.
Declaration of carma::services::Ephemeris.
CorrelatorSet encapsulates a set of correlators to facilitate management of addition and removal of c...
Tagged: Thu Feb 24 15:07:14 PST 2011.
static double MJD()
Get current MJD.
Position
Enumerate valid fixed positions for Stow.
Phaseswitching corba server DO implementation.
WaitItem
Valid items on which to wait.
Handles all parameters and calculations for the LO chain.
Carma control interface to the SignalPathMapper DO.