#ifndef MARS_MPointing #define MARS_MPointing #ifndef ROOT_TArrayD #include #endif #ifndef ROOT_TVector2 #include #endif #ifndef ROOT_TVector3 #include #endif #ifndef MARS_MParContainer #include "MParContainer.h" #endif // --------------------------------------------------- // FIXME: Replace coord.h completely with this! //#ifndef __MARS__ //#include "coord.h" //#else class AltAz : public TVector2 { public: AltAz(Double_t alt, Double_t az) : TVector2(alt, az) { } AltAz(const AltAz &aa) : TVector2(aa) { } Double_t Alt() const { return fX; } Double_t Az() const { return fY; } ClassDef(AltAz, 1) }; class ZdAz : public TVector2 { public: ZdAz(Double_t zd, Double_t az) : TVector2(zd, az) { } ZdAz(const ZdAz &aa) : TVector2(aa) { } Double_t Zd() const { return fX; } Double_t Az() const { return fY; } ClassDef(ZdAz, 1) }; //#endif // --------------------------------------------------- class TMinuit; class MPointing : public MParContainer { private: enum { kIA, // [rad] Index Error in Elevation kIE, // [rad] Index Error in Azimuth kFLOP, // [rad] Vertical Sag kAN, // [rad] Az-El Nonperpendicularity kAW, // [rad] Left-Right Collimation Error kNPAE, // [rad] Azimuth Axis Misalignment (N-S) kCA, // [rad] Azimuth Axis Misalignment (E-W) kTF, // [rad] Tube fluxture (sin) kTX, // [rad] Tube fluxture (tan) kECES, // [rad] Nasmyth rotator displacement, horizontal kACES, // [rad] Nasmyth rotator displacement, vertical kECEC, // [rad] Alt/Az Coude Displacement (N-S) kACEC, // [rad] Alt/Az Coude Displacement (E-W) kNRX, // [rad] Elevation Centering Error (sin) kNRY, // [rad] Azimuth Centering Error (sin) kCRX, // [rad] Elevation Centering Error (cos) kCRY, // [rad] Azimuth Centering Error (cos) kMAGIC1, // [rad] Magic Term (what is it?) kMAGIC2, // [rad] Magic Term (what is it?) kPX, // [rad] Starguider calibration fixed offset x kPY, // [rad] Starguider calibration fixed offset y kDX, // [rad] Starguider calibration additional offset dx kDY, // [rad] Starguider calibration additional offset dy kNumPar // Number of elements }; Double_t fIe ; // [rad] Index Error in Elevation Double_t fIa ; // [rad] Index Error in Azimuth Double_t fFlop ; // [rad] Vertical Sag Double_t fNpae ; // [rad] Az-El Nonperpendicularity Double_t fCa ; // [rad] Left-Right Collimation Error Double_t fAn ; // [rad] Azimuth Axis Misalignment (N-S) Double_t fAw ; // [rad] Azimuth Axis Misalignment (E-W) Double_t fTf ; // [rad] Tube fluxture (sin) Double_t fTx ; // [rad] Tube fluxture (tan) Double_t fNrx ; // [rad] Nasmyth rotator displacement, horizontal Double_t fNry ; // [rad] Nasmyth rotator displacement, vertical Double_t fCrx ; // [rad] Alt/Az Coude Displacement (N-S) Double_t fCry ; // [rad] Alt/Az Coude Displacement (E-W) Double_t fEces ; // [rad] Elevation Centering Error (sin) Double_t fAces ; // [rad] Azimuth Centering Error (sin) Double_t fEcec ; // [rad] Elevation Centering Error (cos) Double_t fAcec ; // [rad] Azimuth Centering Error (cos) Double_t fMagic1; // [rad] Magic Term (what is it?) Double_t fMagic2; // [rad] Magic Term (what is it?) Double_t fPx; // [rad] Starguider calibration fixed offset x Double_t fPy; // [rad] Starguider calibration fixed offset y Double_t fDx; // [rad] Starguider calibration additional offset dx Double_t fDy; // [rad] Starguider calibration additional offset dy Double_t **fCoeff; //! TString *fNames; //! TString *fDescr; //! TArrayD fError; void Init(const char *name=0, const char *title=0); void Clear(Option_t *o="") { for (int i=0; i0; } Bool_t IsPyValid() const { return fError[kPY]>0; } static const Int_t GetNumPar() { return kNumPar; } ClassDef(MPointing, 2) // Pointing Model for MAGIC }; #endif