#ifndef HMDCCLUSINF_H
#define HMDCCLUSINF_H

#include "TObject.h"

class HMdcClusInf : public TObject {
protected:
  Char_t fitStatus;       // 0 - HMdcHit filled by cluster, 1 - by fit
  Char_t levelClFinding;  // level of cl.finding (minimal num. of layers)

  Char_t nModsClus;       // number of modules in cluster
  Char_t nModsFit;        // number of modules in fit

  Short_t clusSize;       // number of bins in cluster
  Short_t nMergClus;      // number of merged clusters
  Short_t nLayers;        // number of layers in cluster
  Short_t nLayersFitted;  // number of layers which contributed to fit
  Short_t nDrTimes;       // number of drift times in cluster
  Short_t nDrTimesFitted; // number of drift times which contributed to fit
  Short_t indClus;        // index of HMdcClus container
  Short_t indClusFit;     // index of HMdcClusFit container
  Float_t sigma1;         // sigma1,sigma2,alpha - cluster shape
  Float_t sigma2;         // sigma1 - long axis, sigma2 - short axis
  Float_t alpha;          // alpha - angle between long axis of cluster and X
  
  Float_t xHit;           // x-coord.of hit in MDC coor.sys. (== x in HMdcHit)
  Float_t yHit;           // y-coord.of hit in MDC coor.sys. (== y in HMdcHit)
  Float_t xClus;          // x-coord.of comb. cluster on the proj.plane
  Float_t yClus;          // y-coord.of comb. cluster on the proj.plane

  Float_t dedx;           // mean value of t2-t1 for segment
  Float_t dedxSigma;      // sigma of t2-t1 distribution in segment
  UChar_t dedxNWire;      // number of wires in segment before truncated mean procedure
  UChar_t dedxNWireCut;   // number of wires in segment cutted by truncated mean procedure

public:
    HMdcClusInf(void) : clusSize(0), nMergClus(0), nLayers(0), nLayersFitted(0),
        nDrTimes(0), nDrTimesFitted(0), indClus(-1), indClusFit(-1), dedx(0),
        dedxSigma(0), dedxNWire(0), dedxNWireCut(0) {;}
    ~HMdcClusInf(void) {;}
    void clear(void) {
	clusSize=nMergClus=nDrTimes=0;
	indClus=indClusFit=-1;
	dedx=dedxSigma=dedxNWire=dedxNWireCut=nLayers=nLayersFitted=0;
        xHit=yHit=xClus=yClus=0.;
    }
  void setIsFitted(void) {fitStatus=1;}
  void setIsNotFitted(void) {fitStatus=0;}
  void setFitStat(const Char_t st) {fitStatus=st;}
  void setLevelClFinding(const Char_t lv) {levelClFinding=lv;}
  void setNModInCl(const Char_t nm) {nModsClus=nm;}
  void setNModInFit(const Char_t nm) {nModsFit=nm;}
  void setClusSize(const Short_t sz) {clusSize=sz;}
  void setNMergClust(const Short_t nmc) {nMergClus=nmc;}
  void setNLayers(const Short_t nl) {nLayers=nl;}
  void setNLayersFitted(const Short_t nlf) {nLayersFitted=nlf;}
  void setNDrTimes(const Short_t ndt) {nDrTimes=ndt;}
  void setNDrTimesFitted(const Short_t nwf) {nDrTimesFitted=nwf;}
  void setClusIndex(const Short_t ind) {indClus=ind;}
  void setClusFitIndex(const Short_t ind) {indClusFit=ind;}
  void setSigma1(const Float_t par){sigma1=par;}
  void setSigma2(const Float_t par){sigma2=par;}
  void setAlpha(const Float_t al) {alpha=al;}
  void setShape(const Float_t s1,const Float_t s2,const Float_t al)
    {sigma1=s1; sigma2=s2;alpha=al;}

  void setdedx(Float_t dedxval){dedx=dedxval;}
  void setSigmadedx(Float_t sig){dedxSigma=sig;}
  void setNWirededx(UChar_t nw){dedxNWire=nw;}
  void setNWireCutdedx(UChar_t nw){dedxNWireCut=nw;}
  
  void setXYHit(Float_t x,Float_t y)  {xHit=x; yHit=y;} 
  void setXYClus(Float_t x,Float_t y) {xClus=x; yClus=y;}

  Float_t getdedx(){return dedx;}
  Float_t getSigmadedx(){return dedxSigma;}
  UChar_t getNWirededx(){return dedxNWire;}
  UChar_t getNWireCutdedx(){return dedxNWireCut;}
  Char_t  getFitStat(void) {return fitStatus;}
  Char_t  getLevelClFinding(void) {return levelClFinding;}
  Char_t  getNModInCl(void) {return nModsClus;}
  Char_t  getNModInFit(void) {return nModsFit;}
  Int_t   getClusSize(void) {return clusSize;}
  Short_t getNMergClust(void) {return nMergClus;}
  Short_t getNLayers() {return nLayers;}
  Short_t getNLayersFitted() {return nLayersFitted;}
  Short_t getNDrTimes(void) {return nDrTimes;}
  Short_t getNDrTimesFitted(void) {return nDrTimesFitted;}
  Short_t getClusIndex(void) {return indClus;}
  Short_t getClusFitIndex(void) {return indClusFit;}
  Float_t getSigma1(void) {return sigma1;}
  Float_t getSigma2(void) {return sigma2;}
  Float_t getAlpha(void) {return alpha;}
  void getShape(Float_t& s1,Float_t& s2,Float_t& al)
    {s1=sigma1; s2=sigma2; al=alpha;}
  Float_t getRatio(void) {return (sigma1>0.) ? sigma2/sigma1 : 0.;}
  Bool_t isClParEqual(HMdcClusInf *cf) {
    if(clusSize!=cf->clusSize || nDrTimes!=cf->nDrTimes || 
        nMergClus != cf->nMergClus || alpha!=cf->alpha) return kFALSE;
    return kTRUE;
  }
  
  Float_t getXHit(void)  {return xHit;}
  Float_t getYHit(void)  {return yHit;}
  Float_t getXClus(void) {return xClus;}
  Float_t getYClus(void) {return yClus;}

  virtual void print(void) const;

  ClassDef(HMdcClusInf,4) // information about clusters in MDC
};

#endif  /* HMDCCLUSINF_H */

Last change: Sat May 22 13:01:04 2010
Last generated: 2010-05-22 13:01

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.