//
// LCDBeam.h
//
// Aug 22 2000 M. Iwasaki V0.0  Create LCDBeam. Copied from SLD's PHBM. 
//

#ifndef LCDBEAM_H
#define LCDBEAM_H

#include "TObject.h"
#include "TVector3.h"

class LCDBeam: public TObject {

public: 

  LCDBeam();
  ~LCDBeam();

  //---  Getters
  Double_t  GetEcm(){return m_Ecm;};        //Get Ecm
  TVector3  GetPos(){return m_Pos;};        //Get I.P. Position
  TVector3* GetPosPtr(){return &m_Pos;};        //Get I.P. Position
  Double_t* GetdPos(){return m_dPos;};      //Get Error matrix for I.P.
  Double_t  GetPol(){return m_Pol;};        //Get Polarization
  //
  //  Variables from primary vertex finder for this event  
  TVector3  GetxyzPri(){return m_xyzPri;};  //Get I.P. from VTX finder
  TVector3* GetxyzPriPtr(){return &m_xyzPri;};  //Get I.P. from VTX finder
  Double_t* GetdxyzPri(){return m_dxyzPri;};//Get I.P. error from VTX finder
  Double_t  GetrmsPri(){return m_rmsPri;};  //Get RMS OF PRIMARY VTX FIT
  Int_t     GetRtrnPri(){return m_RtrnPri;};//Get RTN CODE FROM VTX FINDER

  //---  Setters 
  void      SetEcm(Double_t Ecm);           
  void      SetEcm(Double_t Ecm, Double_t dEcm);
  void      SetPos(const TVector3& pos)           {m_Pos = pos;}
  void      SetdPos(Double_t* dpos);
  void      SetPol(Double_t pol);          
  void      SetPol(Double_t pol, Double_t dpol);
  //
  void      SetxyzPri(const TVector3& xyzPri)     {m_xyzPri = xyzPri;}
  void      SetdxyzPri(Double_t* dxyzPri);  
  void      SetrmsPri(Double_t rmsPri)     {m_rmsPri = rmsPri;}
  void      SetRtrnPri(Int_t RtrnPri)      {m_RtrnPri = RtrnPri;}

private:

  Float_t  m_Ecm;      //Center of mass energy
  Float_t  m_dEcm;     //Error on CM energy

  TVector3 m_Pos;      //I.P. Position (measured)
  Double_t m_dPos[6];  //Error matrix of I.P. Position
 
  Float_t  m_Pol;      //Signed Polarization (-1. to 1.):  RIGHT>0  LEFT<0
  Float_t  m_dPol;     //Statistical error on polarization of e- beam
  Float_t  m_pdTime;   //Time dif between pol measurement and event(Seconds)
 
  // Variables from primary vertex finder for this event  
  TVector3 m_xyzPri;     //I.P. from single event
  Double_t m_dxyzPri[6]; //Error on I.P. from single event
  Double_t m_rmsPri;     //RMS OF PRIMARY VERTEX FIT   
  Int_t    m_RtrnPri;    //RTN CODE FROM PRIMRY VTX FINDER
                         //RTRNPRI  =   1   CONVERGED FIT
                         //             2   UNCONVERGED
                         //            12   FAILURE ON ENTRY
                         //            -1   Not Decided

  const static Int_t CONV;
  const static Int_t UNCONV;
  const static Int_t FAIL;
  const static Int_t NOTYET;

public:
  ClassDef(LCDBeam,0)   // Beam parameter information

}; 

#endif





