File: INCLUDE\WORKFLOW\TAreaScanCmd.h

    1 #ifndef _TAREASCANCMD_H
    2 #define _TAREASCANCMD_H
    3 
    4 #include "workflow\TCmd.h"
    5 #include "difrkmty\s_extern.h" // für TScanWindow
    6 #include "difrkmty\a_extern.h" // für TAreaScanWindow
    7 
    8 /** @file TAreaScanCmd.h
    9  *  Ablaufsteuerung eines AreaScan's.
   10  *  Ablaufsteuerung für AreaScan (mit einem 0-dim-Detektor).
   11  */
   12 
   13 /** Beschreibt die Durchführung eines 0-dimensionalen AreaScans.
   14  *
   15  *  @author David Damm
   16  *  @date 04.07.2004
   17  *  @version 0.1
   18  *  Doxygen-Kommentare hinzugefügt und teilweise toten Code entfernt.
   19  */   
   20 class TAreaScanCmd : public TCmd
   21 {
   22 
   23 // Konstruktor und Destruktor
   24 public:
   25 
   26     /** Konstruktor.
   27      *  Initialisierung und Anfahren der Startposition, damit der AreaScan
   28      *  durchgeführt werden kann.
   29      *  @param ct Das eingelesene Kommando mit Parametern.
   30      */
   31         TAreaScanCmd ( TCmdTag );
   32         
   33         // Warum gibt es keinen Destruktor?
   34 
   35 // Fortschritt- und Kommandoinformtionen
   36 public:
   37         
   38         //* @copydoc TCmd::GetShowData()
   39         virtual bool GetShowData ( LPSTR );
   40         
   41         //* @copydoc TCmd::GetName()
   42         virtual void GetName ( LPSTR aName );
   43 
   44 // Schritte der Kommandoverarbeitung
   45 public:
   46         
   47         //* @copydoc TCmd::FirstStep()
   48         ECmdCode FirstStep ( void );
   49 
   50         //* @copydoc TCmd::ControlStep()
   51         ECmdCode ControlStep ( void );
   52 
   53         //* @copydoc TCmd::ReadyStep()
   54         ECmdCode ReadyStep ( void );
   55 
   56 // Attribute
   57 private:
   58 
   59         //* Pointer auf zugehöriges Areascanfenster.
   60         TAreaScanWindow *AreaScanW;
   61 
   62         //* Nummer des Omegamotors.
   63         int nOmega;
   64         
   65         //* Nummer des Thetamotors.     
   66         int nTheta;
   67 
   68         //* Thetagesamtbereich.
   69         double dThetaWindow; 
   70         
   71         //* Thetaschrittweite.
   72         double dThetaWidth;
   73 
   74         //* Omegastartposition.
   75         double dOmegaMin;
   76 
   77     //* Omegaendposition.
   78     double dOmegaMax;
   79     
   80     //* Omegaschrittweite.
   81     double dOmegaWidth;
   82     
   83         //* Omegaposition vor dem Scanstart.
   84         double dStartPointOmega;
   85         
   86         //* Thetaposition vor dem Scanstart.
   87         double dStartPointTheta;
   88 
   89         /** Gibt Verhältnis an, um das der Thetamotor bewegt werden soll, wenn sich
   90          *  der Omegamotor um einen Schritt bewegt.
   91          *  @warning Wird nur bei Omega2Theta verwendet.
   92          */
   93         double dMoveRelation;
   94 
   95         //* Omegaposition der nächsten Messung.
   96         double dOmega;
   97         
   98         //* Thetaposition der nächsten Messung.
   99         double dTheta;
  100         
  101         //* Letzer Schritt für Theta.
  102         int nMaxThetaPoint;
  103         
  104         //* Aktueller Schritt für Theta.
  105         int nThetaPoint;
  106         
  107         //* Letzer Schritt für Omega.
  108         int nMaxOmegaPoint;
  109         
  110         //* Aktueller Schritt für Omega.
  111         int nOmegaPoint;
  112 
  113         //* Enthält Wert für 2Theta-Startposition des aktuellen Spektrums.
  114         double d2ThetaStart;
  115 };
  116 
  117 #endif
  118