Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

actcalPARAMS.h

Go to the documentation of this file.
00001 #ifndef actcalPARAMS_H
00002 #define actcalPARAMS_H
00003 /*******************************************************************************
00004 * E.S.O. - VLT project
00005 #
00006 # "@(#) $Id: actcalPARAMS.h,v 1.102 2003/08/12 14:55:12 vltsccm Exp $" 
00007 *
00008 * actcalCoeff.h
00009 *
00010 * who       when      what
00011 * --------  --------  ----------------------------------------------
00012 * kwirenst  04/11/02  Changed name vector.h --> vector
00013 * rabuter  09/12/98  Added temperature field to the M2_ZENITH_POS record
00014 * lnoethe  03/04/98  modify actcalFIELD_ASTIG   
00015 * rabuter  02/04/98  extend actcalFIELD_ASTIG with new data members
00016 * rabuter  06/03/98  added coeffLowerLimits and indexOfSupport 
00017 * lnoethe  06/02/98  In actcalFIELD_ASTIG: add factorRotatorAngle
00018 * lnoethe   01/02/98  Remove from struct actcalOPT_CONV_PAR : eccsERROR_CLASS
00019 *                         vltDOUBLE   convCoeffM2Def;
00020 *                         vltDOUBLE   convCoeffM2Coma;
00021 *                     Add in actcalM1_CORR_PAR :
00022 *                         vltDOUBLE    forcesNasCass[actcalMAX_NUM_MODES];
00023 *                     Add structures actcalM2_TEMP_CORR,
00024 *                                    actcalCOEFFS_M2_POS,
00025 *                                    actcalM2_ZENITH_POS
00026 * lnoethe   11.02.97  add constB0, constB1 and constB2 in actcalFIELD_ASTIG
00027 *                     add lateral decenter parameters alphaX and alphaY
00028 *                     remove radiusField and factorFieldAstig
00029 * lnoethe   08.04.97  add plateScale in actcalFIELD_ASTIG
00030 * lnoethe   13.05.97  add factorAltitudeAngle in actcalFIELD_ASTIG
00031 */
00032 
00033 /************************************************************************
00034 *
00035 *----------------------------------------------------------------------
00036 */
00037 #define _POSIX_SOURCE 1
00038 #include "vltPort.h"
00039 
00040 
00041 #include "ECCS.h"
00042 #include "eccsTestTools.h" 
00043 #include "eccsDB_ATTR.h" 
00044 #include "eccsDB_TABLE.h"
00045 
00046 #include <vector>
00047 
00048 #include "eccsDB_VECTOR.h"
00049 #include "actcalErrors.h"
00050 
00051 /* Let' defined the classes corresponding to the DB classes */
00052  
00053 struct actcalM1_SUPP_PAR : eccsERROR_CLASS
00054 {
00055     vltDOUBLE        weight;
00056     vltINT32         numRings;
00057     vltINT32         numSupports;
00058     vltINT32         numSupportsPerRing[actcalMAX_NUM_RINGS];
00059     vltINT32         ringOfSupport[actcalMAX_NUM_SUPPORTS];
00060     vltINT32         indexOfSupport[actcalMAX_NUM_SUPPORTS];
00061     vltDOUBLE        angleOfSupport[actcalMAX_NUM_SUPPORTS];
00062     vltDOUBLE        fractionWeightRing[actcalMAX_NUM_RINGS];
00063 
00064     actcalM1_SUPP_PAR(const dbSYMADDRESS dbPoint = NULL);
00065     ccsCOMPL_STAT Read(const dbSYMADDRESS dbPoint);
00066 };
00067 
00068 struct actcalCAL_FORCES_RECORD : public eccsDB_TABLE_RECORD
00069 {
00070       vltDOUBLE     forcesOnRings[actcalMAX_NUM_RINGS];
00071 
00072     ccsCOMPL_STAT Unpack( void *buffer ){
00073   memcpy( forcesOnRings, buffer, sizeof(vltDOUBLE)* actcalMAX_NUM_RINGS);
00074   return SUCCESS;
00075     }
00076 
00077     ccsCOMPL_STAT Pack( void *buffer ){
00078   memcpy( buffer, forcesOnRings, sizeof(vltDOUBLE)* actcalMAX_NUM_RINGS );
00079   return SUCCESS;
00080     }
00081 
00082 };
00083 
00084 
00085 struct actcalM1_CORR_PAR : eccsERROR_CLASS
00086 {
00087 
00088    vltINT32                  modeType[actcalMAX_NUM_MODES];
00089    vltINT32                  modeSymmetry[actcalMAX_NUM_MODES];
00090    vltINT32                  modeOrder[actcalMAX_NUM_MODES];
00091    actcalCAL_FORCES_RECORD   forcesOfMode[actcalMAX_NUM_MODES];
00092 
00093    vltDOUBLE                 coeffLowerLimits[actcalMAX_NUM_MODES];
00094 
00095    vltDOUBLE                 forcesNasCass[actcalMAX_NUM_SUPPORTS];
00096 
00097     actcalM1_CORR_PAR(const dbSYMADDRESS dbPoint = NULL);
00098     ccsCOMPL_STAT Read(const dbSYMADDRESS dbPoint);
00099 
00100 };
00101 
00102 struct actcalOPT_CONV_PAR : eccsERROR_CLASS
00103 {
00104    vltDOUBLE   scaleRmsTilt[actcalMAX_NUM_MODES];
00105    vltDOUBLE   scaleD80[actcalMAX_NUM_MODES];
00106    vltDOUBLE   scaleRmsWave[actcalMAX_NUM_MODES];
00107 
00108     actcalOPT_CONV_PAR(const dbSYMADDRESS dbPoint = NULL);
00109     ccsCOMPL_STAT Read(const dbSYMADDRESS dbPoint);
00110 };
00111 
00112 struct actcalM2_TEMP_CORR : eccsERROR_CLASS
00113 {
00114    vltDOUBLE   constantTerm;
00115    vltDOUBLE   linearTerm;
00116 
00117     actcalM2_TEMP_CORR(const dbSYMADDRESS dbPoint = NULL);
00118     ccsCOMPL_STAT Read(const dbSYMADDRESS dbPoint);
00119 };
00120 
00121 struct actcalCOEFFS_M2_POS  : public eccsDB_TABLE_RECORD
00122 {
00123     vltBYTES32   focus;
00124     vltDOUBLE    defocus;
00125     vltDOUBLE    coma;
00126 
00127     ccsCOMPL_STAT Unpack( void *buffer ){
00128   memcpy( focus, buffer, sizeof(vltBYTES32) );
00129   buffer = (char*)buffer+sizeof(vltBYTES32);
00130   memcpy( &defocus, buffer, sizeof(vltDOUBLE));
00131   buffer = (char*)buffer+sizeof(vltDOUBLE);
00132   memcpy( &coma, buffer, sizeof(vltDOUBLE));
00133   return SUCCESS;
00134     }
00135 
00136     ccsCOMPL_STAT Pack( void *buffer ){
00137   vltINT32 size;
00138   dbFillBuf( (char**)&buffer, (char*)focus,                &size, dbBYTES32);
00139   dbFillBuf( (char**)&buffer, (char*)&defocus,             &size, dbDOUBLE);
00140   dbFillBuf( (char**)&buffer, (char*)&coma,             &size, dbDOUBLE);
00141   return(SUCCESS);
00142     }
00143 
00144 };
00145 
00146 struct actcalM2_ZENITH_POS  : public eccsDB_TABLE_RECORD
00147 {
00148     vltBYTES32   focus;
00149     vltDOUBLE    posX;
00150     vltDOUBLE    posY;
00151     vltDOUBLE    posZ;
00152     vltDOUBLE    calibTemp;
00153 
00154     ccsCOMPL_STAT Unpack( void *buffer ){
00155   memcpy( focus, buffer, sizeof(vltBYTES32) );
00156   buffer = (char*)buffer+sizeof(vltBYTES32);
00157   memcpy( &posX, buffer, sizeof(vltDOUBLE));
00158   buffer = (char*)buffer+sizeof(vltDOUBLE);
00159   memcpy( &posY, buffer, sizeof(vltDOUBLE));
00160   buffer = (char*)buffer+sizeof(vltDOUBLE);
00161   memcpy( &posZ, buffer, sizeof(vltDOUBLE));
00162   buffer = (char*)buffer+sizeof(vltDOUBLE);
00163   memcpy( &calibTemp, buffer, sizeof(vltDOUBLE));
00164   return SUCCESS;
00165     }
00166 
00167     ccsCOMPL_STAT Pack( void *buffer ){
00168   vltINT32 size;
00169   dbFillBuf( (char**)&buffer, (char*)focus,                &size, dbBYTES32);
00170   dbFillBuf( (char**)&buffer, (char*)&posX,             &size, dbDOUBLE);
00171   dbFillBuf( (char**)&buffer, (char*)&posY,             &size, dbDOUBLE);
00172   dbFillBuf( (char**)&buffer, (char*)&posZ,             &size, dbDOUBLE);
00173   dbFillBuf( (char**)&buffer, (char*)&calibTemp,      &size, dbDOUBLE);
00174   return(SUCCESS);
00175     }
00176 
00177 };
00178 
00179 struct actcalFIELD_ASTIG  : public eccsDB_TABLE_RECORD
00180 {
00181     vltBYTES32   focus;
00182     vltDOUBLE    factorFieldComa;
00183     vltDOUBLE    constB0;
00184     vltDOUBLE    constB1;
00185     vltDOUBLE    constB2;
00186     vltDOUBLE    offsetAngleX;
00187     vltDOUBLE    offsetAngleY;
00188     vltDOUBLE    alphaX;
00189     vltDOUBLE    alphaY;
00190     vltDOUBLE    centerGpX;
00191     vltDOUBLE    centerGpY;
00192     vltDOUBLE    angleGpToAlphaDelta;
00193     vltDOUBLE    plateScale;
00194     vltDOUBLE    factorAngleAltitude;
00195     vltDOUBLE    factorAngleRotator;
00196     vltDOUBLE    factorAngleAdapter;
00197     vltDOUBLE    factorAngleGpArm;
00198     vltDOUBLE    factorAngleAdaToM1;
00199     vltDOUBLE    offsetAngleAdaToM1;
00200 
00201 
00202     ccsCOMPL_STAT Unpack( void *buffer ){
00203   memcpy( focus, buffer, sizeof(vltBYTES32) );
00204   buffer = (char*)buffer+sizeof(vltBYTES32);
00205   memcpy( &factorFieldComa, buffer, sizeof(vltDOUBLE));
00206   buffer = (char*)buffer+sizeof(vltDOUBLE);
00207   memcpy( &constB0, buffer, sizeof(vltDOUBLE));
00208   buffer = (char*)buffer+sizeof(vltDOUBLE);
00209   memcpy( &constB1, buffer, sizeof(vltDOUBLE));
00210   buffer = (char*)buffer+sizeof(vltDOUBLE);
00211   memcpy( &constB2, buffer, sizeof(vltDOUBLE));
00212   buffer = (char*)buffer+sizeof(vltDOUBLE);
00213   memcpy( &offsetAngleX, buffer, sizeof(vltDOUBLE));
00214   buffer = (char*)buffer+sizeof(vltDOUBLE);
00215   memcpy( &offsetAngleY, buffer, sizeof(vltDOUBLE));
00216   buffer = (char*)buffer+sizeof(vltDOUBLE);
00217   memcpy( &alphaX, buffer, sizeof(vltDOUBLE));
00218   buffer = (char*)buffer+sizeof(vltDOUBLE);
00219   memcpy( &alphaY, buffer, sizeof(vltDOUBLE));
00220   buffer = (char*)buffer+sizeof(vltDOUBLE);
00221   memcpy( &centerGpX, buffer, sizeof(vltDOUBLE));
00222   buffer = (char*)buffer+sizeof(vltDOUBLE);
00223   memcpy( &centerGpY, buffer, sizeof(vltDOUBLE));
00224   buffer = (char*)buffer+sizeof(vltDOUBLE);
00225   memcpy( &angleGpToAlphaDelta, buffer, sizeof(vltDOUBLE));
00226   buffer = (char*)buffer+sizeof(vltDOUBLE);
00227   memcpy( &plateScale, buffer, sizeof(vltDOUBLE));
00228   buffer = (char*)buffer+sizeof(vltDOUBLE);
00229   memcpy( &factorAngleAltitude, buffer, sizeof(vltDOUBLE));
00230   buffer = (char*)buffer+sizeof(vltDOUBLE);
00231   memcpy( &factorAngleRotator, buffer, sizeof(vltDOUBLE));
00232   buffer = (char*)buffer+sizeof(vltDOUBLE);
00233   memcpy( &factorAngleAdapter, buffer, sizeof(vltDOUBLE));
00234   buffer = (char*)buffer+sizeof(vltDOUBLE);
00235   memcpy( &factorAngleGpArm, buffer, sizeof(vltDOUBLE));
00236   buffer = (char*)buffer+sizeof(vltDOUBLE);
00237   memcpy( &factorAngleAdaToM1, buffer, sizeof(vltDOUBLE));
00238   buffer = (char*)buffer+sizeof(vltDOUBLE);
00239   memcpy( &offsetAngleAdaToM1, buffer, sizeof(vltDOUBLE));
00240 
00241 
00242 
00243   return SUCCESS;
00244     }
00245 
00246     ccsCOMPL_STAT Pack( void *buffer ){
00247   vltINT32 size;
00248   dbFillBuf( (char**)&buffer, (char*)focus,                &size, dbBYTES32);
00249   dbFillBuf( (char**)&buffer, (char*)&factorFieldComa,     &size, dbDOUBLE);
00250   dbFillBuf( (char**)&buffer, (char*)&constB0,             &size, dbDOUBLE);
00251   dbFillBuf( (char**)&buffer, (char*)&constB1,             &size, dbDOUBLE);
00252   dbFillBuf( (char**)&buffer, (char*)&constB2,             &size, dbDOUBLE);
00253   dbFillBuf( (char**)&buffer, (char*)&offsetAngleX,        &size, dbDOUBLE);
00254   dbFillBuf( (char**)&buffer, (char*)&offsetAngleY,        &size, dbDOUBLE);
00255   dbFillBuf( (char**)&buffer, (char*)&alphaX,              &size, dbDOUBLE);
00256   dbFillBuf( (char**)&buffer, (char*)&alphaY,              &size, dbDOUBLE);
00257   dbFillBuf( (char**)&buffer, (char*)&centerGpX,           &size, dbDOUBLE);
00258   dbFillBuf( (char**)&buffer, (char*)&centerGpY,           &size, dbDOUBLE);
00259   dbFillBuf( (char**)&buffer, (char*)&angleGpToAlphaDelta, &size, dbDOUBLE);
00260   dbFillBuf( (char**)&buffer, (char*)&plateScale,          &size, dbDOUBLE);
00261   dbFillBuf( (char**)&buffer, (char*)&factorAngleAltitude, &size, dbDOUBLE);
00262   dbFillBuf( (char**)&buffer, (char*)&factorAngleRotator,  &size, dbDOUBLE);
00263   dbFillBuf( (char**)&buffer, (char*)&factorAngleAdapter,  &size, dbDOUBLE);
00264   dbFillBuf( (char**)&buffer, (char*)&factorAngleGpArm,    &size, dbDOUBLE);
00265   dbFillBuf( (char**)&buffer, (char*)&factorAngleAdaToM1,  &size, dbDOUBLE);
00266   dbFillBuf( (char**)&buffer, (char*)&offsetAngleAdaToM1,  &size, dbDOUBLE);
00267   return(SUCCESS);
00268     }
00269 
00270 };
00271 
00272 struct actcalIA_FOCUS_OFFSET : public eccsDB_TABLE_RECORD
00273 {
00274     vltBYTES32   focus;
00275     vltDOUBLE    value;
00276 
00277     ccsCOMPL_STAT Unpack( void *buffer ){
00278   memcpy( focus, buffer, sizeof(vltBYTES32) );
00279   buffer = (char*)buffer+sizeof(vltBYTES32);
00280   memcpy( &value, buffer, sizeof(vltDOUBLE));
00281   return SUCCESS;
00282     }
00283 
00284     ccsCOMPL_STAT Pack( void *buffer ){
00285   vltINT32 size;
00286   dbFillBuf( (char**)&buffer, (char*)focus,  &size, dbBYTES32); 
00287   dbFillBuf( (char**)&buffer, (char*)&value, &size, dbDOUBLE);
00288   return SUCCESS;
00289     }
00290 
00291 }; 
00292 
00293 typedef eccsDB_TABLE<actcalIA_FOCUS_OFFSET> actcalIA_FOCUS_TABLE;
00294  
00295 class actcalIA_FOCUS: public actcalIA_FOCUS_TABLE
00296 {
00297 public:
00298   actcalIA_FOCUS(const dbSYMADDRESS pointName, const char *attrName = dbEMPTY);
00299 
00300   vltDOUBLE GetDefocus();
00301 
00302   actcalIA_FOCUS &SetDefocus(vltDOUBLE newDefocus);
00303 };
00304 
00305 struct actcalIA_CCD_ORIENT : public eccsDB_TABLE_RECORD
00306 {
00307     vltBYTES32   focus;
00308     vltDOUBLE    factor;
00309     vltDOUBLE    angleOffset;
00310 
00311     ccsCOMPL_STAT Unpack( void *buffer ){
00312   memcpy( focus, buffer, sizeof(vltBYTES32) );
00313   buffer = (char*)buffer+sizeof(vltBYTES32);
00314   memcpy( &factor, buffer, sizeof(vltDOUBLE));
00315   buffer = (char*)buffer+sizeof(vltDOUBLE);
00316   memcpy( &angleOffset, buffer, sizeof(vltDOUBLE));
00317 
00318   return SUCCESS;
00319     }
00320 
00321     ccsCOMPL_STAT Pack( void *buffer ){
00322   vltINT32 size;
00323   dbFillBuf( (char**)&buffer, (char*)focus,        &size, dbBYTES32);
00324   dbFillBuf( (char**)&buffer, (char*)&factor,      &size, dbDOUBLE);
00325   dbFillBuf( (char**)&buffer, (char*)&angleOffset, &size, dbDOUBLE);
00326 
00327   return SUCCESS;
00328     }
00329 }; 
00330 
00331 #endif

Generated on Wed Dec 3 14:52:05 2003 for ATCS API by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001