/***************************************************************************
 *   Copyright (C) 2006 by pamelaprod                                      *
 *   pamelaprod@P1.pamela                                                  *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef FIRST_H
#define FIRST_H

#include <TObject.h>
#include <iostream>

#include "TROOT.h"

#include "YMcmd.h"
//#include "OrbitalInfoStruct.h"
/**
@author pamelaprod
*/
class Quaternions: public InclinationInfoItem {
public:
    
    Quaternions();    
    ~Quaternions();
    
    //Int_t CodeErrQua;    

};

class InclinationInfo: public TObject {
//private:
    //Double_t k1;
    //Double_t k2;
    //void coefplane(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2);
    //Double_t AngBetAxes(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2);
    //Double_t ValueT(Double_t x1,Double_t y1, Double_t z1, Double_t n1, Double_t n2);
    //Double_t AngBetPlan(Double_t x1,Double_t y1, Double_t z1, Double_t n1, Double_t n2);
    
public:

    InclinationInfo();
    ~InclinationInfo();
    
    // Nico's variables //
    //Int_t nicos1;
    //Int_t nicos2;
    //Int_t nicos3;
    //Int_t nicos4;
    // End nico's //
    
    // Our variables //
    float_t A11;
    float_t A12;
    float_t A13;
//    float_t A21;
//    float_t A22;
//    float_t A23;
// Angles RCS of OCS    
//    float_t AXrXo;
//    float_t AXrYo;
//    float_t AXrZo;
//    float_t AYrXo;
//    float_t AYrYo;
//    float_t AYrZo;
//    float_t AZrXo;
//    float_t AZrYo;
//    float_t AZrZo;
    
//    float_t AXrZXo;
//    float_t AXrXYo;
//    float_t AXrYZo;
//    float_t AYrZXo;
//    float_t AYrXYo;
//    float_t AYrYZo;
//    float_t AZrZXo;
//    float_t AZrXYo;
//    float_t AZrYZo;
    
//    float_t ApXrZXoZ;
//    float_t ApXrXYoZ;
//    float_t ApXrYZoZ;
//    float_t ApYrZXoZ;
//    float_t ApYrXYoZ;
//    float_t ApYrYZoZ;
//    float_t ApZrZXoZ;
//    float_t ApZrXYoZ;
//    float_t ApZrYZoZ;
    
//    float_t AXrZXo_2m;
//    float_t AXrXYo_2m;
//    float_t AXrYZo_2m;
//    float_t AYrZXo_2m;
//    float_t AYrXYo_2m;
//    float_t AYrYZo_2m;
//    float_t AZrZXo_2m;
//    float_t AZrXYo_2m;
//    float_t AZrYZo_2m;
    
//    float_t ApXrZXoZ_2m;
//    float_t ApXrXYoZ_2m;
//    float_t ApXrYZoZ_2m;
//    float_t ApYrZXoZ_2m;
//    float_t ApYrXYoZ_2m;
//    float_t ApYrYZoZ_2m;
//    float_t ApZrZXoZ_2m;
//    float_t ApZrXYoZ_2m;
//    float_t ApZrYZoZ_2m;
    
    Double_t XXRCS;
    Double_t YXRCS;
    Double_t ZXRCS;
    Double_t XYRCS;
    Double_t YYRCS;
    Double_t ZYRCS;
    Double_t XZRCS;
    Double_t YZRCS;
    Double_t ZZRCS;
    
    Double_t Tangazh;
    Double_t Ryskanie;
    Double_t Kren;
    
    bool mode;
    Float_t dircutoff;
    
    short int Sign_1(double_t a, short int b){
    if (a>0){b=1;};
    if (a<0){b=-1;}
    else {b=0;};
    return b;};
    void QuaternionstoAngle(Quaternions);
    void TransAngle(Double_t x,Double_t y,Double_t z,Double_t Vx0,Double_t Vy0, Double_t Vz0, Double_t gamar, Double_t ksir, Double_t tetar, Double_t q0, Double_t q1, Double_t q2, Double_t q3);
    
//    float_t procRegidity(double_t L, double_t B, double_t R);
    
//    UInt_t absTime;
//    UInt_t OBT;
//    UInt_t pkt_num; 
    
    void Clear();
};

#endif
