#ifndef HKICKDETDIGI_H
#define HKICKDETDIGI_H

#include "hreconstructor.h"
#include "tofdef.h"
#include "hsymmat.h"
#include "TIterator.h"
#include "TF1.h"

class HCategory;
class HMdcGeomPar;
class HIterator;
class HGeantMdc;
class HGeomVector;
class HSpecGeomPar;

class HKickDetDigi : public HReconstructor {
protected:
  TF1 *probDistrX[4]; //!
  TF1 *probDistrY[4]; //!
  Float_t fMdcResolX[4];
  Float_t fMdcResolY[4];
  Float_t fMdcTailX[4];
  Float_t fMdcTailY[4];
  HSymMat4 fMdcSegCov; //!
  HLocation fMdcSectorLoc,fMdcSecModLoc;
  HCategory *fMdcInput;
  HCategory *fTofInput;
  HCategory *fMdcOut;
  HCategory *fMdcHitOut;
  HCategory *fCatKine;
  HMdcGeomPar *fGeometry; //Geometry transformation
  HSpecGeomPar *fSpecGeometry; //Spectrometer geometry
  HCategory *fTofOut;
  HIterator *fMdcIter;
  TIterator *fTofIter;
  Bool_t fFillTof; 
  Bool_t fIsTofPerfect;
  Bool_t fIsMdcPerfect;
  Bool_t fIsMdcAngErrConst; //Symmetric error in slope
  Bool_t fSimulateTails;
  Bool_t fFillMdc;
  Bool_t fFillMdcHits;
  Bool_t fFillSegments[2];  // iner, outer
  Bool_t fFillOuterSegments;
  Int_t fMomPos; //Where is momentum obtained from?

  Int_t digiMdc2(void);
  Int_t digiTof(void);
  void calcPosDir(HGeantMdc *data, HGeantMdc *data2,
	       Float_t x, Float_t y, Float_t x2, Float_t y2,
	       HGeomVector &r,HGeomVector &dir);
  HGeantMdc *findPartner(HGeantMdc *geMdc, Int_t sector,
			 Int_t mod, Int_t layer);
  void fillData(HGeomVector &r,HGeomVector &alpha,Double_t p,Int_t track);
  void fillHit(HGeantMdc *geMdc, Float_t x, Float_t y,Float_t p);
 public:
  HKickDetDigi(const Text_t name[]="kick.digi",const Text_t title[]="kick.digi");
  ~HKickDetDigi(void);
  Int_t execute(void);
  Bool_t init(void);
  Bool_t finalize(void);
  void setTofFilling(Bool_t f) { fFillTof=f; }
  void setMdcFilling(Bool_t f=kTRUE) { fFillMdc = f; }
  Bool_t isFillingTof(void) { return fFillTof; }
  Bool_t isTofPerfect(void) { return fIsTofPerfect; }
  Bool_t isMdcPerfect(void) { return fIsMdcPerfect; }
  Bool_t isMdcAngErrConst(void) { return fIsMdcAngErrConst; }
  void setMdcAngErrConst(Bool_t f=kTRUE) { fIsMdcAngErrConst = f; }
  void setPerfectMdc(void) { fIsMdcPerfect = kTRUE; }
  void setPerfectTof(void) { fIsTofPerfect = kTRUE; }
  inline void setFillingSegments(Bool_t inner,Bool_t outer);
  void setFillingHits(Bool_t f) { fFillMdcHits = f; }
  void setMomPos(Int_t i) { fMomPos = i; }
  void setTails(Bool_t t) { fSimulateTails = t; }
  void setMdcResolution(Float_t x1,Float_t y1,Float_t x2,Float_t y2,
      Float_t x3,Float_t y3,Float_t x4,Float_t y4);
  void setMdcTails(Float_t x1,Float_t y1,Float_t x2,Float_t y2,
      Float_t x3,Float_t y3,Float_t x4,Float_t y4);
  ClassDef(HKickDetDigi,0)
};

inline void HKickDetDigi::setFillingSegments(Bool_t inner,Bool_t outer) {
  fFillSegments[0] = inner;
  fFillSegments[1] = outer;
}

#endif

Last change: Sat May 22 12:58:17 2010
Last generated: 2010-05-22 12:58

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.