#ifndef HALIGNMENTGNOMAG_H
#define HALIGNMENTGNOMAG_H
#include "TObject.h"
#include "hsymmat.h"
#include "fstream"
#include "iostream"
#include "TString.h"
#include "halignmentgparticle.h"
#include "hgeomtransform.h"
#include "halignmentgbase.h"
class TClonesArray;
class HAlignmentGGeom;
class HAlignmentGRotations;
class TH2F;
class TH1F;
class TMinuit;
class TFile;
class HAlignmentGNoMag:public HAlignmentGBase
{
 
public:
  HAlignmentGNoMag();
  virtual ~HAlignmentGNoMag();  
  void    SetIname(TString _inName) {inName=_inName;}
  TString GetIname() {return inName;}
  void    Init(TString, TString, Int_t, Bool_t);
  virtual void    CollectTracks();
  virtual void    ResetCounts();
  virtual Bool_t  AddToClones();
  virtual HGeomTransform Align(const Int_t &, const Int_t &);    
  void  CheckAlignment();
  
  virtual void  FillHistograms();
  virtual void SetNtBranches() {;}
  void AddData(Float_t , Float_t , Float_t, Float_t, Int_t);
  Bool_t Selected(HAlignmentGParticle &);  
  TH1F* GetTargetHisto() { return histoVertex;}
  
  
  HGeomTransform AlignMod();
  void Raster(TH2F*, TH2F*);
  void JustPlot(Int_t , Int_t );
  Int_t GetFitVersion() {return fitVersion;}
  void  SetFitVersion(Int_t _fitVersion) {fitVersion = _fitVersion;}
  void setDefault(Float_t& , Float_t& , Float_t& , Float_t& );
 
 void setMdcSetup(Int_t a[6][4]);
 Bool_t isMdc(Int_t , Int_t );
 
 void ResetRaster();
 
private:
  Bool_t isThirdChamber;
  Bool_t isFouthChamber;
  Float_t AcceptRadius;
  Float_t AcceptRadiusFour;
  Float_t AcceptRadiusTarg;
  Float_t AcceptDir;
  Float_t AcceptDirFour;
  Int_t fitVersion;
  Int_t numberOfTracks;
  Bool_t isAligned;
  ifstream in;
  TString inName;
  TString outName;
  Int_t nEvent;
  Int_t mod;
  Int_t sector;
  Float_t X,Y;
  Float_t Xdir, Ydir;
  Int_t FirstEvent;
  Int_t FirstMod;
  Float_t FirstX;
  Float_t FirstXdir;
  Float_t FirstY;
  Float_t FirstYdir;
  Int_t nCount[4];
  HAlignmentGParticle *testP;
  HAlignmentGParticle fAlignParticle;
  Float_t XValue   [4][50];
  Float_t XdirValue[4][50];
  Float_t YValue   [4][50];
  Float_t YdirValue[4][50];
  TH1F *histoVertex; 
  TH1F *histoDiffYBeforeMod3;
  TH1F *histoDiffYAfterMod3;
  TH2F *histoDiffYBeforeVsPhiMod3;
  TH2F *histoDiffYAfterVsPhiMod3;
  TH2F *histoDiffYBeforeVsThetaMod3;
  TH2F *histoDiffYAfterVsThetaMod3;
  TH1F *histoDiffYBeforeMod4;
  TH1F *histoDiffYAfterMod4;
  TH2F *histoDiffYBeforeVsPhiMod4;
  TH2F *histoDiffYAfterVsPhiMod4;
  TH2F *histoDiffYBeforeVsThetaMod4;
  TH2F *histoDiffYAfterVsThetaMod4;
  TH1F *histoTheta;
  TH2F *RasterPlotBefore3;
  TH2F *RasterPlotAfter3;
  TH2F *RasterPlotBefore4;
  TH2F *RasterPlotAfter4;
  
  
  HGeomTransform transBefore[4];
  HGeomTransform transAfter[4];
  HGeomTransform transStarting[4];
  
  Int_t mdcSetup[6][4];
  
ClassDef(HAlignmentGNoMag,0)
};   
#endif