#ifndef HMDCWIREFIT_H
#define HMDCWIREFIT_H

#include "TObject.h"
#include "TMath.h"

class HMdcWireFit : public TObject {
protected:
  // Address:
  Char_t  sec;           // sector
  Char_t  mod;           // MDC module
  Char_t  layer;         // MDC layer
  Short_t cell;          // MDC wire
  Char_t  timeNum;       // =1 or 2 (time1 or time2 from HMdcCal1)
  
  // Fit results:
  Float_t tdcTimeCal1;   // drift time from HMdcCal1
  Float_t tdcTime;       // tdcTimeCal1 minus time of wire offset
  Float_t dev;           // fullTime-tdcTime
  Float_t weight;        // wire weight. =0 if wire was excluded from fit
  Float_t driftTime;     // calculated drift time
  Float_t fullTime;      // driftTime + time offset
  Float_t minDist;       // min.distance from track to wire with SIGN.
                         // >0 - track pass OVER wire (in mdc coor.sys.)
  Float_t alpha;         // impact angle in cell system
  Bool_t  isInCell;      // =kFALSE if track don't cross cell
  Float_t tdcTimeErr;    // error of drift time.
  Bool_t  isUsedInFit;   // kTRUE if wire was not used in fit (for alignment
                         // investigation)

public:
  HMdcWireFit()  {clear();}
  ~HMdcWireFit() {;}
  inline void clear();

  inline void setAddress(Char_t s,Char_t m,Char_t l,Short_t c);
  void    setSec(Char_t s)           {sec=s;}
  void    setMod(Char_t m)           {mod=m;}
  void    setLayer(Char_t l)         {layer=l;}
  void    setCell(Short_t c)         {cell=c;}
  void    setTimeNum(Char_t t)       {timeNum=t;}
  void    setDev(Float_t v)          {dev=v;}
  void    setWeight(Float_t v)       {weight=v;}
  void    setIsUsedFlag(Bool_t f)    {isUsedInFit=f;}
  void    setDriftTime(Float_t v)    {driftTime=v;}
  void    setFullTime(Float_t v)     {fullTime=v;}
  void    setCal1Time(Float_t v)     {tdcTimeCal1=v;}
  void    setTdcTime(Float_t v)      {tdcTime=v;}
  void    setMinDist(Float_t v)      {minDist=v;}
  void    setAlpha(Float_t v)        {alpha=v;}
  void    setIsInCell(Bool_t v)      {isInCell=v;}
  void    setTdcTimeErr(Float_t v)   {tdcTimeErr=v;}

  inline void getAddress(Int_t& s,Int_t& m,Int_t& l,Int_t& c) const;
  Char_t  getSec(void) const         {return sec;}
  Char_t  getMod(void) const         {return mod;}
  Char_t  getLayer(void) const       {return layer;}
  Short_t getCell(void) const        {return cell;}
  Char_t  getTimeNum(void) const     {return timeNum;}
  Float_t getDev(void) const         {return dev;}
  Float_t getWeight(void) const      {return weight;}
  Bool_t  isWrUsedInFit(void) const  {return isUsedInFit;}
  Float_t getDriftTime(void) const   {return driftTime;}
  Float_t getFullTime(void) const    {return fullTime;}
  Float_t getTimeOffset(void) const  {return fullTime-driftTime;}
  Float_t getTdcTime(void) const     {return tdcTime;}
  Float_t getCal1Time(void) const    {return tdcTimeCal1;}
  Float_t getMinDist(void) const     {return TMath::Abs(minDist);}
  Bool_t  isUnderWire(void) const    {return minDist < 0.  ? kTRUE:kFALSE;}
  Bool_t  isOverWire(void) const     {return minDist >= 0. ? kTRUE:kFALSE;;}
  Float_t getAlpha(void) const       {return alpha;}
  Bool_t  getIsInCell(void) const    {return isInCell;}
  Float_t getTdcTimeErr(void)        {return tdcTimeErr;}
  Float_t getChi2(void) const        {Float_t c=dev/tdcTimeErr; return c*c;}

  virtual Bool_t isGeant(void) const {return kFALSE;}
  virtual void   print(void);

  ClassDef(HMdcWireFit,3)  // track fit result for one wire
};

inline void HMdcWireFit::setAddress(Char_t s,Char_t m,Char_t l,Short_t c) {
  // Set wire address
  sec   = s;
  mod   = m;
  layer = l;
  cell  = c;
}

inline void HMdcWireFit::getAddress(Int_t& s,Int_t& m,Int_t& l,Int_t& c)
    const {
  // Get wire addres
  s = sec;
  m = mod;
  l = layer;
  c = cell;
}


inline void HMdcWireFit::clear() {
  // Default setting of the data members.
  sec = mod = layer = timeNum = -1;
  cell       = -1;
  tdcTimeErr = 1.;
}

#endif /* HMDCWIREFIT_H */

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

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.