ROOT logo
#ifndef HALIGNMENTGBASE_H
#define HALIGNMENTGBASE_H
#include "TObject.h"
#include "hsymmat.h"
#include "fstream"
#include "iostream"
#include "TString.h"
#include "halignmentgparticle.h"
#include "hgeomtransform.h"
#include "TNtuple.h"
class TClonesArray;
class HAlignmentGGeom;
class HAlignmentGRotations;
class TH2F;
class TH1F;
class TMinuit;
class TFile;


class HAlignmentGBase:public TObject
{
 public:
  
  HAlignmentGBase();
  virtual  ~HAlignmentGBase();  
  ////////////////////////////////////////////////////////////////
  virtual void    CollectTracks()                            = 0;
  virtual void    ResetCounts()                              = 0;
  virtual Bool_t  AddToClones()                              = 0;
  virtual void    FillHistograms()                           = 0;
  virtual HGeomTransform Align(const Int_t &, const Int_t &) = 0;
  //virtual void CheckAlignment(HGeomTransform trans[6][4], Int_t s)= 0;
  
  virtual void SetNtBranches()                                    = 0;
  /////////////////////////////////////////////////////////////////  
  HAlignmentGGeom*       GetAlignGeom() const     {return  fAlignGeom; }
  HAlignmentGRotations*  GetAlignRot () const     {return  fAlignRot ; }
  Int_t GetCloneSize () const {return cloneSize;}
  Int_t GetHistoNumbers () const {return histoNumbers;}
  
  TClonesArray* GetAlignTracks() const {return alignTracks;}
  TClonesArray* GetHistoClones() const {return histoClones;}
  
  Int_t GetUsedMod() const {return UsedMod;}
  Int_t GetUsedSec() const {return UsedSec;}
  void  SetNtuple(TNtuple *_nt) {nt=_nt; ntEntries = nt-> GetEntries();}
  TNtuple* GetNtuple() const {return nt;}
  
  void GetPoints(void (*pFunc)(Float_t &, Float_t &, Float_t &, Float_t &, HGeomVector &, HGeomVector &),Float_t &, Float_t &, Float_t &, Float_t &, HGeomVector &, HGeomVector &);
  
  
  ///////////////////////////////////////////////////////////////// 
  
 protected:
  
  TClonesArray* alignTracks;
  TClonesArray* histoClones;
  Int_t histoNumbers;
  
  TFile *ff;
  TNtuple *nt;
  TMinuit *fMinuit;
  Int_t UsedMod;
  Int_t UsedSec;
  HAlignmentGGeom *fAlignGeom;
  HAlignmentGRotations *fAlignRot;
  HGeomTransform transBefore, transAfter;
  Int_t cloneSize;
  Int_t ntEntries;
  ClassDef(HAlignmentGBase,0)
    };   
#endif
    
    
 halignmentgbase.h:1
 halignmentgbase.h:2
 halignmentgbase.h:3
 halignmentgbase.h:4
 halignmentgbase.h:5
 halignmentgbase.h:6
 halignmentgbase.h:7
 halignmentgbase.h:8
 halignmentgbase.h:9
 halignmentgbase.h:10
 halignmentgbase.h:11
 halignmentgbase.h:12
 halignmentgbase.h:13
 halignmentgbase.h:14
 halignmentgbase.h:15
 halignmentgbase.h:16
 halignmentgbase.h:17
 halignmentgbase.h:18
 halignmentgbase.h:19
 halignmentgbase.h:20
 halignmentgbase.h:21
 halignmentgbase.h:22
 halignmentgbase.h:23
 halignmentgbase.h:24
 halignmentgbase.h:25
 halignmentgbase.h:26
 halignmentgbase.h:27
 halignmentgbase.h:28
 halignmentgbase.h:29
 halignmentgbase.h:30
 halignmentgbase.h:31
 halignmentgbase.h:32
 halignmentgbase.h:33
 halignmentgbase.h:34
 halignmentgbase.h:35
 halignmentgbase.h:36
 halignmentgbase.h:37
 halignmentgbase.h:38
 halignmentgbase.h:39
 halignmentgbase.h:40
 halignmentgbase.h:41
 halignmentgbase.h:42
 halignmentgbase.h:43
 halignmentgbase.h:44
 halignmentgbase.h:45
 halignmentgbase.h:46
 halignmentgbase.h:47
 halignmentgbase.h:48
 halignmentgbase.h:49
 halignmentgbase.h:50
 halignmentgbase.h:51
 halignmentgbase.h:52
 halignmentgbase.h:53
 halignmentgbase.h:54
 halignmentgbase.h:55
 halignmentgbase.h:56
 halignmentgbase.h:57
 halignmentgbase.h:58
 halignmentgbase.h:59
 halignmentgbase.h:60
 halignmentgbase.h:61
 halignmentgbase.h:62
 halignmentgbase.h:63
 halignmentgbase.h:64
 halignmentgbase.h:65
 halignmentgbase.h:66
 halignmentgbase.h:67
 halignmentgbase.h:68
 halignmentgbase.h:69
 halignmentgbase.h:70
 halignmentgbase.h:71
 halignmentgbase.h:72
 halignmentgbase.h:73
 halignmentgbase.h:74