ROOT logo
#ifndef HMDCDITIZER_H
#define HMDCDITIZER_H
using namespace std;
#include "hreconstructor.h"
#include "hcategory.h"
#include "TRandom.h"
#include "TNtuple.h"
#include "TVector2.h"
#include <vector>
#include <map>
#include <iostream> 
#include <iomanip>
#include <stdlib.h>
#include <cmath>

#include "hlocation.h"
#include "hmdccal1sim.h"

class HIterator;
class HMdcLayerGeomPar;
class HMdcDigitPar;
class HMdcCal2ParSim;
class HMdcCal1Sim;
class HMdcCellEff;
class HMdcWireStat;
class HMdcDeDx2;
class HMdcTimeCut;
class HMdcGeomStruct;
class HMdcSizesCells;
class HMdcGeantCell;
class HGeantKine;
class TFile;
class TGraph;


#define  NMAXHITS 15

class HMdcDigiLayEff {
public:
    Int_t trackNum;
    Float_t eff[6][4][6];
    Int_t   ct [6][4][6];
    // vars for leyer eff calculation dpendending on impact angle
    Int_t   cmin[6][4][6];       // cell of min track length
    Int_t   cmax[6][4][6];       // cell of max track length
    Float_t Lmin[6][4][6];       // min track length
    Float_t Lmax[6][4][6];       // max track length

    HMdcDigiLayEff(Int_t tr=-1){
	trackNum = tr;
	fill();
	memset(&ct [0][0][0],0,6*4*6*sizeof(Int_t));
    }


    void clear(){
        trackNum = -1;
        memset(&eff[0][0][0],0,6*4*6*sizeof(Float_t));
        memset(&ct [0][0][0],0,6*4*6*sizeof(Int_t));
    }

    void fill(){
	for(Int_t s=0;s<6;s++){
	    for(Int_t m=0;m<4;m++){
		for(Int_t l=0;l<6;l++){
		    eff[s][m][l] = gRandom->Rndm();
		}
	    }
	}

    }
};



class HMdcDigitizer : public HReconstructor {
private:
  HCategory*        fGeantMdcCat;  //! MDC HGeant input data
  HCategory*        fGeantKineCat; //! HGeantKine input data
  HLocation         loc;           //! Location for new object
  HLocation         locnoise;      //! Location for new object

  HCategory*        fGeantCellCat; //! Pointer to sim data category
  HCategory*        fCalCat;       //! Pointer to cal data category
  HMdcGeantCell*    hit;           //! Pointer to HMdcGeantCell hit
  HMdcGeantCell*    hitReal;       //! Pointer to HMdcGeantCell hit
  HMdcLayerGeomPar* fDigitGeomPar; //! Digitisation "geom" parameters
  HMdcDigitPar*     fDigitPar;     //! Digitisation "phys" parameters
  HMdcCal2ParSim*   fCal2ParSim;   //! pointer to cal2 parameter container
  HMdcCellEff*      fCellEff;      //! pointer to cell efficiency parameter container
  HMdcWireStat*     fWireStat;     //! pointer to wire status parameter container
  HMdcTimeCut*      fTimeCut;      //! pointer to time cut parameter container
  HMdcSizesCells*   fsizescells;   //! pointer to hmdcsizescells parameter container
  HMdcDeDx2*        fdEdX;         //! pointer to MdcDeDx2 parameter container
  HMdcGeomStruct*   geomstruct;    //! pointer to hmdcgeomstruct parameter container
  HMdcCal1Sim*      fCal;          //! pointer to data
  HMdcCal1Sim*      fCalnoise;     //! pointer to noise data
  HMdcGeantCell*    fCell;         //! pointer to Container for HMdcGeantCell
  HIterator*        iterin;        //! Iterator over input category
  HIterator*        itercell;      //! Iterator over cell category
  HIterator*        itercal1;      //! Iterator over cal1 category
  Int_t             fEventId;      //! Number of current event
  Float_t           yDist;         //! Distance to the sence wire
  Float_t           pi;            //! Il y quatre pis a une vache

  Int_t    modetdc;                //! 2 leading edges or leading and trailing edge of the signal
  Int_t    setup[6][4];            //! setup of Mdc (sec,mod)

  Float_t  time1;                  //! drift time1 calculated by HMdcCal2ParSim
  Float_t  time1Error;             //! drift time1 error calculated by HMdcCal2ParSim
  Float_t  time2;                  //! drift time2 calculated by HMdcCal2ParSim
  Float_t  time2Error;             //! drift time2 error calculated by HMdcCal2ParSim
  Float_t  myalpha;                //! impact angle of the track in coordinate system of HMdcCal2ParSim
  Bool_t   useError;               //! flag for use/don't use error in time1/time2 in output
  Bool_t   useWireOffset;          //! flag for use/don't use error in time1/time2 in output
  Bool_t   useDeDx2;               //! flag for use/don't use MdcDeDx2 container for t2-t1 simulation
  Bool_t   useTimeCut;             //! flag for use/don't use MdcTimeCut container

  TFile*   myoutput;               //! file pointer for NTuple
  TNtuple* distance_time;          //! nTuple for internal information of the digitizer
  Bool_t   fntuple;                //!  switch for use/not use NTuple

  Bool_t   useTof;                 //! switch for use/not use of tof in output
  Float_t  offsets[4];             //! offsets are used to substract min tof
  Bool_t   useOffsets;             //! switch for use/not use offset substraction in output

  TGraph*  fbetadEdx;              //! dedx as function of beta for scaling
  Float_t  fBetaLow;               //! lower beta range for scaling
  Bool_t   useDeDxScaling;         //! switch on/off efficiency scaling with energyloss
  Bool_t   useDeDxTimeScaling;     //! switch on/off time error scaling with energyloss
  Float_t  effLevel[4];            //! level of requiered maximum charge to create a signal (for example 20 (=20%))
  Bool_t   useCellEff;             //! switch for use/not use cell efficiency cut
  Bool_t   useWireStat;            //! switch for use/not use wire stat container
  Bool_t   useWireStatEff;         //! switch for use/not use eff from wire stat container (default = kTRUE)
  Bool_t   useWireStatOffset;      //! switch for use/not use offset from wire stat container (default = kTRUE)
  Bool_t   useLayerThickness;      //! switch for use/not use layer thisckness eff loss
  Bool_t   useDeltaElectrons;      //! switch for use/not use delta electron time smearing
  Bool_t   useDeltaMomSelection;   //! switch for use/not use momentum below momMaxDeltaElecCut for primary electrons to identify delta electrons
  Int_t    ionID;                  //! beam ion (au ==109)
  Float_t  fProbDeltaAccepted;     //! 0 - 1 probability to accept a delta electron (yield adjustment)
  Float_t  t1minDeltaElec;         //! delta electron smearing lower time range for t1 [ns]
  Float_t  t1maxDeltaElec;         //! delta electron smearing upper time range for t1 [ns]
  Float_t  momMaxDeltaElecCut;     //! delta electron smearing : primary electrons below this mom are considdered to be delta electrons  [MeV/c]
  Float_t  momMinDeltaCut[6];      //! min mom cut per sector (account for different mirror materials) [MeV/c]

  map<HGeantKine*,Float_t> mDeltaTrackT0;    //! map delta electron candidates to t1 offsets
  map<HGeantKine*,Float_t>::iterator itDelta;//! map delta electron candidates to t1 offsets

  Bool_t   hasPrinted;             //! flag is set , if printStatus() is called
  Float_t  noiseLevel[4];          //! level of randon noise for each module type
  Bool_t   useNoise;               //! switch for use/not use of noise generator
  Int_t    arrayNoise[5];          //! temp array for status of noise
  Int_t    noiseRangeLo[4];        //! lower range of noise for each mdc type
  Int_t    noiseRangeHi[4];        //! upper range of noise for each mdc type
  Float_t  time1noise;             //! time1 generated by the noise generator
  Float_t  time2noise;             //! time2 generated by the noise generator
  Int_t    noisemode;              //! switch for different noise modes
  Int_t    firstHit;               //! number of first valid hit
  Int_t    secondHit;              //! number of second valid hit
  Float_t  firstTime2;             //! time2 of first valid hit
  Int_t    endList1;               //! end of the list of hits belonging to the first valid hit
  Int_t    firstsec;
  Int_t    firstmod;
  Int_t    firstlay;
  Int_t    firstcell;
  Float_t  noisebandwidth;                 //! width of t2-t1 band in noise
  Float_t  noisewhitewidth;                //! width of t2-t1 large region in noise
  Float_t  noisewhiteratio;                //! ration between large region and band in noise
  static  Float_t dTime              [NMAXHITS]; //! drift time1 + tof
  static  Float_t dTime2             [NMAXHITS]; //! drift time2 + tof
  static  Float_t dTimeErr           [NMAXHITS]; //! error of drift time1
  static  Float_t dTime2Err          [NMAXHITS]; //! error of drift time2
  static  Float_t minimumdist        [NMAXHITS]; //! minimum distance to wire
  static  Int_t track                [NMAXHITS]; //! track numbers
  static  Float_t timeOfFlight       [NMAXHITS]; //! tof
  static  Float_t angle              [NMAXHITS]; //! impact angle in coordinate system of the cell
  static  Int_t statusflag           [NMAXHITS]; //! flag for efficiency
  static  Float_t fractionOfmaxCharge[NMAXHITS]; //! value for fraction of maximum charge
  static  Bool_t cutEdge             [NMAXHITS]; //! flag for minimum distance point out of cell
  static  Float_t wireOffset         [NMAXHITS]; //! time for signal propagation on the wire
  static  Float_t efficiency         [NMAXHITS]; //! efficiency  of track in layer
  static  Float_t theta              [NMAXHITS]; //! theta impact

  Float_t time1Real;                 //! drift time1 from real data
  Float_t time2Real;                 //! drift time2 from real data
  Int_t   nHitsReal;                 //! number of hists from real data
  Int_t   embeddingmode;             //  switch for keeping geant hits / realistic embedding
  Float_t signalSpeed;               //  speed of signal on the wire
  Float_t scaleError[4];             //! scaler for error of time per module type
  Float_t scaleErrorMIPS[4];         //! scaler for error of time per module type

  Float_t rndmoffsets[6][4][6][220]; //! random offsets to simulate calibrated offsets
  Float_t sigmaoffsets;              //! sigma of the gausian random offset distribution
  Bool_t  createoffsets;             //! switch kTRUE: create offsets,kFALSE: read from file
  Bool_t  offsetsCreated;            //! remember if offsets were created or read from ascii file
  Float_t scaletime;                 //! simple scaler for manipulating drift times (as done by tdc slopes)
  vector< HMdcDigiLayEff > vLayEff;  //! layer eff random numbers per track
  HMdcDigiLayEff           layEff;   //! layer eff object for calulation of eff depending on impact angle


  Float_t effLayerThickness(Float_t xcoor,Float_t ycoor,Float_t th,Float_t ph,Int_t s,Int_t m,Int_t l) ;
  Int_t findTrack(Int_t trk);


public:
  HMdcDigitizer(void);
  HMdcDigitizer(const Text_t* name,const Text_t* title);
  HMdcDigitizer(const Text_t* name,const Text_t* title,Int_t,Bool_t);
  ~HMdcDigitizer(void);
  void    setOffsets            (Float_t off0,Float_t off1,Float_t off2,Float_t off3,Int_t on_off = 1);
  void    setEffLevel           (Float_t eff0,Float_t eff1,Float_t eff2,Float_t eff3,Int_t on_off = 1);
  void    setEffScaling         (Float_t betalow,Bool_t usescaling) {fBetaLow = betalow, useDeDxScaling = usescaling;}
  void    setTimeErrScaling     (Bool_t usescaling) { useDeDxTimeScaling = usescaling;}
  //---------------------noise simulation-------------------------------------------
  void    setNoiseLevel         (Float_t noise0,Float_t noise1,Float_t noise2,Float_t noise3,Int_t on_off = 1);
  void    setNoiseRange         (Int_t rangeLo0,Int_t rangeLo1,Int_t rangeLo2,Int_t rangeLo3,
				 Int_t rangeHi0,Int_t rangeHi1,Int_t rangeHi2,Int_t rangeHi3);
  void    setNoiseBandWidth     (Float_t w)              {noisebandwidth    = w;     }
  void    setNoiseWhiteWidth    (Float_t w)              {noisewhitewidth   = w;     }
  void    setNoiseWhiteRatio    (Float_t w)              {noisewhiteratio   = w;     }
  Float_t getNoiseBandWidth     ()                       {return noisebandwidth;     }
  Float_t getNoiseWhiteWidth    ()                       {return noisewhitewidth;    }
  Float_t getNoiseWhiteRatio    ()                       {return noisewhiteratio;    }
  //---------------------switches for cal1sim output--------------------------------
  void    setErrorUse           (Bool_t use)             {useError          = use;   }
  void    setTofUse             (Bool_t use)             {useTof            = use;   }
  void    setWireOffsetUse      (Bool_t use)             {useWireOffset     = use;   }
  void    setOffsetsUse         (Bool_t use)             {useOffsets        = use;   }
  void    setCellEffUse         (Bool_t use)             {useCellEff        = use;   }
  void    setWireStatUse        (Bool_t use)             {useWireStat       = use;   }
  void    setNoiseUse           (Bool_t use)             {useNoise          = use;   }
  void    setDeDxUse            (Bool_t use)             {useDeDx2          = use;   }
  void    setTimeCutUse         (Bool_t use)             {useTimeCut        = use;   }
  Bool_t  getErrorUse           ()                       {return useError;           }
  Bool_t  getTofUse             ()                       {return useTof;             }
  Bool_t  getWireOffsetUse      ()                       {return useWireOffset;      }
  Bool_t  getOffsetsUse         ()                       {return useOffsets;         }
  Bool_t  getCellEffUse         ()                       {return useCellEff;         }
  Bool_t  getWireStatUse        ()                       {return useWireStat;        }
  Bool_t  getNoiseUse           ()                       {return useNoise;           }
  Bool_t  getDeDxUse            ()                       {return useDeDx2;           }
  Bool_t  getTimeCutUse         ()                       {return useTimeCut;         }
  //---------------------privat ntuple out------------------------------------------
  void    setNTuple             (Bool_t ntuple)          {fntuple           = ntuple;}
  void    setTdcMode            (Int_t mode)             {modetdc           = mode;  }
  void    setNoiseMode          (Int_t mode)             {noisemode         = mode;  }
  void    setEmbeddingMode      (Int_t mode)             {embeddingmode     = mode;  }
  Bool_t  getNTuple             ()                       {return fntuple;            }
  Int_t   getTdcMode            ()                       {return modetdc;            }
  Int_t   getNoiseMode          ()                       {return noisemode;          }
  Int_t   getEmbeddingMode      ()                       {return embeddingmode;      }
  //---------------------signal speed for wireoffsets-------------------------------
  void    setSignalSpeed        (Float_t speed)          {signalSpeed       = speed; }
  Float_t getSignalSpeed        ()                       {return signalSpeed;        }

  //-----------manipulate drift times (tdc slope...)--------------------------------
  void    setScaleTime          (Float_t scale)          {scaletime         = scale; }
  Float_t getScaleTime          ()                       {return scaletime;}
  void    setScalerTime1Err     (Float_t m0 = 0,Float_t m1 = 0,Float_t m2 = 0,Float_t m3 = 0);
  //-----------creating offsets to simulate calibrated offsets----------------------
  void    setWireStatOffsetUse  (Bool_t use)             {useWireStatOffset = use;   }
  Bool_t  getWireStatOffsetUse  ()                       {return useWireStatOffset;  }
  void    initOffsets           (TString filename = "");
  void    setSigmaOffsets       (Float_t sig)            {sigmaoffsets      = sig;   }
  void    setCreateOffsets      (Bool_t create = kTRUE)  {createoffsets     = create;}
  Float_t getSigmaOffsets       ()                       {return sigmaoffsets;}
  Bool_t  getCreateOffsets      ()                       {return createoffsets;}

  //----------- using efficiency ----------------------
  void    setWireStatEffUse     (Bool_t use)             {useWireStatEff    = use;   }
  Bool_t  getWireStatEffUse     ()                       {return useWireStatEff;     }
  void    setLayerThicknessEffUse(Bool_t use)            {useLayerThickness = use;   }
  Bool_t  getLayerThicknessEffUse()                      {return useLayerThickness;  }


  //----------- using delta electrons -----------------
  void   setDeltaElectronUse(Bool_t use, Bool_t useDeltaMomSel=kFALSE, Int_t ionId=109,Float_t t1min=-950.,Float_t t1max=400.,Float_t momCut=20.,Float_t probDelta=2.){  useDeltaElectrons = use;useDeltaMomSelection = useDeltaMomSel; ionID=ionId; t1minDeltaElec = t1min;  t1maxDeltaElec = t1max; momMaxDeltaElecCut = momCut; fProbDeltaAccepted = probDelta;}
  Bool_t getDeltaElectronUse() { return useDeltaElectrons;}
  void   setDeltaElectronMinMomCut(Float_t s0=2.,Float_t s1=2.,Float_t s2=4.5,Float_t s3=2.,Float_t s4=2.,Float_t s5=4.5) { momMinDeltaCut[0]=s0; momMinDeltaCut[1]=s1; momMinDeltaCut[2]=s2;  momMinDeltaCut[3]=s3;  momMinDeltaCut[4]=s4; momMinDeltaCut[5]=s5; }
  void   printStatus           ();

  void setTimeCutFlags(HMdcCal1Sim* cal1);


   //----------- standard task functions --------------
  Bool_t  init                  (void);
  Bool_t  reinit                (void);
  Int_t   execute               (void);
  Bool_t  finalize              ();

protected:
  void    setParContainers      ();
  void    initVariables         ();
  Bool_t  transform             (Float_t,Float_t,Float_t,Float_t,Float_t,Int_t);
  void    storeCell             (Float_t,Float_t,Float_t,Int_t,Bool_t,Float_t,Float_t,Float_t);
  void    select                (Int_t);
  //---------------------noise simulation-------------------------------------------
  void    fillNoise             (Int_t, Int_t, Int_t, Int_t,Int_t, Int_t, Int_t, Int_t);
  void    handleOverFlow        (Int_t, Int_t, Int_t, Int_t);
  void    setLoopVariables      (Int_t,Int_t,Int_t,Int_t,Bool_t check = kFALSE);
  Float_t fillTime1Noise        (Int_t);
  Float_t fillTime2Noise        (Int_t);
  void    fillNoiseLists        (HMdcCal1Sim* cal1,Int_t,Int_t);
  void    fillNoiseToGeantCells (Int_t,HMdcCal1Sim* p);
  //---------------------privat ntuple out------------------------------------------
  void    fillNTuple            (Int_t ,Int_t ,Int_t ,Int_t , Int_t, HMdcGeantCell* ,TNtuple*);
  void    fillNTuple            (Int_t, Int_t, Int_t, Int_t, Float_t, Float_t, Int_t);
  void    setNTuples            (void);
  Bool_t  evalWireStat          (Int_t, Int_t, Int_t, Int_t);
  //---------------------handling data arrays--------------------------------------
  void    initArrays            ();
  void    fillArrays            (Int_t,Int_t,Int_t,HMdcGeantCell*);
  void    fillArraysReal        (Int_t i);

  void    resetListVariables    ();
  void    resetCal1Real         ();

  void    setTime1Real          (Float_t t1)             {time1Real = t1;  }
  void    setTime2Real          (Float_t t2)             {time2Real = t2;  }
  void    setNHitsReal          (Int_t i)                {nHitsReal = i;   }
  Float_t getTime1Real          ()                       {return time1Real;}
  Float_t getTime2Real          ()                       {return time2Real;}
  Int_t   getNHitsReal          ()                       {return nHitsReal;}
  void    getCal1Real           ();
  void    setEfficiencyFlags    (Int_t,Int_t,Int_t,Int_t);
  void    setTimeCutFlags       (Int_t,Int_t,Int_t,Int_t);
  void    fillTrackList         (HMdcCal1Sim*);
  void    findFirstValidHit     ();
  void    findSecondValidHit    ();
  Int_t   findNonValidHit       ();
  void    getMdcSetup           ();
  Bool_t  testMdcSetup          (Int_t s, Int_t m);
  void    setTime1Noise         (Float_t time)           {time1noise = time; }
  void    setTime2Noise         (Float_t time)           {time2noise = time; }
  Float_t getTime1Noise         ()                       {return time1noise; }
  Float_t getTime2Noise         ()                       {return time2noise; }
  void    setFirstHit           (Int_t hit1)             {firstHit   = hit1; }
  void    setSecondHit          (Int_t hit2)             {secondHit  = hit2; }
  void    setFirstTime2         (Float_t time2)          {firstTime2 = time2;}
  void    setEndList1           (Int_t end)              {endList1   = end;  }
  Int_t   getFirstHit           ()                       {return firstHit;   }
  Int_t   getSecondHit          ()                       {return secondHit;  }
  Float_t getFirstTime2         ()                       {return firstTime2; }
  Int_t   getEndList1           ()                       {return endList1;   }
  //----------------------handling drift cell informations--------------------------
  void    setDTime1             (Int_t i,Float_t time)   {dTime              [i] = time;   }
  void    setDTime2             (Int_t i,Float_t time)   {dTime2             [i] = time;   }
  void    setDTime1Err          (Int_t i,Float_t timeErr){dTimeErr           [i] = timeErr;}
  void    setDTime2Err          (Int_t i,Float_t timeErr){dTime2Err          [i] = timeErr;}
  void    setMinimumDist        (Int_t i,Float_t dist)   {minimumdist        [i] = dist;   }
  void    setTrackN             (Int_t i,Int_t number)   {track              [i] = number; }
  void    setTof                (Int_t i,Float_t tof)    {timeOfFlight       [i] = tof;    }
  void    setAngle              (Int_t i,Float_t a)      {angle              [i] = a;      }
  void    setStatus             (Int_t i,Int_t stat)     {statusflag         [i] = stat;   }
  void    setFractionOfmaxCharge(Int_t i,Float_t f)      {fractionOfmaxCharge[i] = f;      }
  void    setCutEdge            (Int_t i,Bool_t cut)     {cutEdge            [i] = cut;    }
  void    setWireOffset         (Int_t i,Float_t off)    {wireOffset         [i] = off;    }
  void    setEfficiency         (Int_t i,Float_t eff)    {efficiency         [i] = eff;    }
  void    setTheta              (Int_t i,Float_t th)     {theta              [i] = th;    }
  Float_t getDTime1             (Int_t i)                {return dTime              [i];   }
  Float_t getDTime2             (Int_t i)                {return dTime2             [i];   }
  Float_t getDTime1Err          (Int_t i)                {return dTimeErr           [i];   }
  Float_t getDTime2Err          (Int_t i)                {return dTime2Err          [i];   }
  Float_t getMinimumDist        (Int_t i)                {return minimumdist        [i];   }
  Int_t   getTrackN             (Int_t i)                {return track              [i];   }
  Float_t getTof                (Int_t i)                {return timeOfFlight       [i];   }
  Float_t getAngle              (Int_t i)                {return angle              [i];   }
  Int_t   getStatus             (Int_t i)                {return statusflag         [i];   }
  Float_t getFractionOfmaxCharge(Int_t i)                {return fractionOfmaxCharge[i];   }
  Bool_t  getCutEdge            (Int_t i)                {return cutEdge            [i];   }
  Float_t getWireOffset         (Int_t i)                {return wireOffset         [i];   }
  Float_t getEfficiency         (Int_t i)                {return efficiency         [i];   }
  Float_t getTheta              (Int_t i)                {return theta              [i];   }
  Float_t getCellEffLevel       (Int_t i)                {return effLevel           [i];   }
  Float_t getNoiseLevel         (Int_t i)                {return noiseLevel         [i];   }
  Float_t getOffset             (Int_t i)                {return offsets            [i];   }
  Int_t   getNoiseRangeHi       (Int_t i)                {return noiseRangeHi       [i];   }
  Int_t   getNoiseRangeLo       (Int_t i)                {return noiseRangeLo       [i];   }

  ClassDef(HMdcDigitizer,0) // Digitizer of MDC data
};

#endif









 hmdcdigitizer.h:1
 hmdcdigitizer.h:2
 hmdcdigitizer.h:3
 hmdcdigitizer.h:4
 hmdcdigitizer.h:5
 hmdcdigitizer.h:6
 hmdcdigitizer.h:7
 hmdcdigitizer.h:8
 hmdcdigitizer.h:9
 hmdcdigitizer.h:10
 hmdcdigitizer.h:11
 hmdcdigitizer.h:12
 hmdcdigitizer.h:13
 hmdcdigitizer.h:14
 hmdcdigitizer.h:15
 hmdcdigitizer.h:16
 hmdcdigitizer.h:17
 hmdcdigitizer.h:18
 hmdcdigitizer.h:19
 hmdcdigitizer.h:20
 hmdcdigitizer.h:21
 hmdcdigitizer.h:22
 hmdcdigitizer.h:23
 hmdcdigitizer.h:24
 hmdcdigitizer.h:25
 hmdcdigitizer.h:26
 hmdcdigitizer.h:27
 hmdcdigitizer.h:28
 hmdcdigitizer.h:29
 hmdcdigitizer.h:30
 hmdcdigitizer.h:31
 hmdcdigitizer.h:32
 hmdcdigitizer.h:33
 hmdcdigitizer.h:34
 hmdcdigitizer.h:35
 hmdcdigitizer.h:36
 hmdcdigitizer.h:37
 hmdcdigitizer.h:38
 hmdcdigitizer.h:39
 hmdcdigitizer.h:40
 hmdcdigitizer.h:41
 hmdcdigitizer.h:42
 hmdcdigitizer.h:43
 hmdcdigitizer.h:44
 hmdcdigitizer.h:45
 hmdcdigitizer.h:46
 hmdcdigitizer.h:47
 hmdcdigitizer.h:48
 hmdcdigitizer.h:49
 hmdcdigitizer.h:50
 hmdcdigitizer.h:51
 hmdcdigitizer.h:52
 hmdcdigitizer.h:53
 hmdcdigitizer.h:54
 hmdcdigitizer.h:55
 hmdcdigitizer.h:56
 hmdcdigitizer.h:57
 hmdcdigitizer.h:58
 hmdcdigitizer.h:59
 hmdcdigitizer.h:60
 hmdcdigitizer.h:61
 hmdcdigitizer.h:62
 hmdcdigitizer.h:63
 hmdcdigitizer.h:64
 hmdcdigitizer.h:65
 hmdcdigitizer.h:66
 hmdcdigitizer.h:67
 hmdcdigitizer.h:68
 hmdcdigitizer.h:69
 hmdcdigitizer.h:70
 hmdcdigitizer.h:71
 hmdcdigitizer.h:72
 hmdcdigitizer.h:73
 hmdcdigitizer.h:74
 hmdcdigitizer.h:75
 hmdcdigitizer.h:76
 hmdcdigitizer.h:77
 hmdcdigitizer.h:78
 hmdcdigitizer.h:79
 hmdcdigitizer.h:80
 hmdcdigitizer.h:81
 hmdcdigitizer.h:82
 hmdcdigitizer.h:83
 hmdcdigitizer.h:84
 hmdcdigitizer.h:85
 hmdcdigitizer.h:86
 hmdcdigitizer.h:87
 hmdcdigitizer.h:88
 hmdcdigitizer.h:89
 hmdcdigitizer.h:90
 hmdcdigitizer.h:91
 hmdcdigitizer.h:92
 hmdcdigitizer.h:93
 hmdcdigitizer.h:94
 hmdcdigitizer.h:95
 hmdcdigitizer.h:96
 hmdcdigitizer.h:97
 hmdcdigitizer.h:98
 hmdcdigitizer.h:99
 hmdcdigitizer.h:100
 hmdcdigitizer.h:101
 hmdcdigitizer.h:102
 hmdcdigitizer.h:103
 hmdcdigitizer.h:104
 hmdcdigitizer.h:105
 hmdcdigitizer.h:106
 hmdcdigitizer.h:107
 hmdcdigitizer.h:108
 hmdcdigitizer.h:109
 hmdcdigitizer.h:110
 hmdcdigitizer.h:111
 hmdcdigitizer.h:112
 hmdcdigitizer.h:113
 hmdcdigitizer.h:114
 hmdcdigitizer.h:115
 hmdcdigitizer.h:116
 hmdcdigitizer.h:117
 hmdcdigitizer.h:118
 hmdcdigitizer.h:119
 hmdcdigitizer.h:120
 hmdcdigitizer.h:121
 hmdcdigitizer.h:122
 hmdcdigitizer.h:123
 hmdcdigitizer.h:124
 hmdcdigitizer.h:125
 hmdcdigitizer.h:126
 hmdcdigitizer.h:127
 hmdcdigitizer.h:128
 hmdcdigitizer.h:129
 hmdcdigitizer.h:130
 hmdcdigitizer.h:131
 hmdcdigitizer.h:132
 hmdcdigitizer.h:133
 hmdcdigitizer.h:134
 hmdcdigitizer.h:135
 hmdcdigitizer.h:136
 hmdcdigitizer.h:137
 hmdcdigitizer.h:138
 hmdcdigitizer.h:139
 hmdcdigitizer.h:140
 hmdcdigitizer.h:141
 hmdcdigitizer.h:142
 hmdcdigitizer.h:143
 hmdcdigitizer.h:144
 hmdcdigitizer.h:145
 hmdcdigitizer.h:146
 hmdcdigitizer.h:147
 hmdcdigitizer.h:148
 hmdcdigitizer.h:149
 hmdcdigitizer.h:150
 hmdcdigitizer.h:151
 hmdcdigitizer.h:152
 hmdcdigitizer.h:153
 hmdcdigitizer.h:154
 hmdcdigitizer.h:155
 hmdcdigitizer.h:156
 hmdcdigitizer.h:157
 hmdcdigitizer.h:158
 hmdcdigitizer.h:159
 hmdcdigitizer.h:160
 hmdcdigitizer.h:161
 hmdcdigitizer.h:162
 hmdcdigitizer.h:163
 hmdcdigitizer.h:164
 hmdcdigitizer.h:165
 hmdcdigitizer.h:166
 hmdcdigitizer.h:167
 hmdcdigitizer.h:168
 hmdcdigitizer.h:169
 hmdcdigitizer.h:170
 hmdcdigitizer.h:171
 hmdcdigitizer.h:172
 hmdcdigitizer.h:173
 hmdcdigitizer.h:174
 hmdcdigitizer.h:175
 hmdcdigitizer.h:176
 hmdcdigitizer.h:177
 hmdcdigitizer.h:178
 hmdcdigitizer.h:179
 hmdcdigitizer.h:180
 hmdcdigitizer.h:181
 hmdcdigitizer.h:182
 hmdcdigitizer.h:183
 hmdcdigitizer.h:184
 hmdcdigitizer.h:185
 hmdcdigitizer.h:186
 hmdcdigitizer.h:187
 hmdcdigitizer.h:188
 hmdcdigitizer.h:189
 hmdcdigitizer.h:190
 hmdcdigitizer.h:191
 hmdcdigitizer.h:192
 hmdcdigitizer.h:193
 hmdcdigitizer.h:194
 hmdcdigitizer.h:195
 hmdcdigitizer.h:196
 hmdcdigitizer.h:197
 hmdcdigitizer.h:198
 hmdcdigitizer.h:199
 hmdcdigitizer.h:200
 hmdcdigitizer.h:201
 hmdcdigitizer.h:202
 hmdcdigitizer.h:203
 hmdcdigitizer.h:204
 hmdcdigitizer.h:205
 hmdcdigitizer.h:206
 hmdcdigitizer.h:207
 hmdcdigitizer.h:208
 hmdcdigitizer.h:209
 hmdcdigitizer.h:210
 hmdcdigitizer.h:211
 hmdcdigitizer.h:212
 hmdcdigitizer.h:213
 hmdcdigitizer.h:214
 hmdcdigitizer.h:215
 hmdcdigitizer.h:216
 hmdcdigitizer.h:217
 hmdcdigitizer.h:218
 hmdcdigitizer.h:219
 hmdcdigitizer.h:220
 hmdcdigitizer.h:221
 hmdcdigitizer.h:222
 hmdcdigitizer.h:223
 hmdcdigitizer.h:224
 hmdcdigitizer.h:225
 hmdcdigitizer.h:226
 hmdcdigitizer.h:227
 hmdcdigitizer.h:228
 hmdcdigitizer.h:229
 hmdcdigitizer.h:230
 hmdcdigitizer.h:231
 hmdcdigitizer.h:232
 hmdcdigitizer.h:233
 hmdcdigitizer.h:234
 hmdcdigitizer.h:235
 hmdcdigitizer.h:236
 hmdcdigitizer.h:237
 hmdcdigitizer.h:238
 hmdcdigitizer.h:239
 hmdcdigitizer.h:240
 hmdcdigitizer.h:241
 hmdcdigitizer.h:242
 hmdcdigitizer.h:243
 hmdcdigitizer.h:244
 hmdcdigitizer.h:245
 hmdcdigitizer.h:246
 hmdcdigitizer.h:247
 hmdcdigitizer.h:248
 hmdcdigitizer.h:249
 hmdcdigitizer.h:250
 hmdcdigitizer.h:251
 hmdcdigitizer.h:252
 hmdcdigitizer.h:253
 hmdcdigitizer.h:254
 hmdcdigitizer.h:255
 hmdcdigitizer.h:256
 hmdcdigitizer.h:257
 hmdcdigitizer.h:258
 hmdcdigitizer.h:259
 hmdcdigitizer.h:260
 hmdcdigitizer.h:261
 hmdcdigitizer.h:262
 hmdcdigitizer.h:263
 hmdcdigitizer.h:264
 hmdcdigitizer.h:265
 hmdcdigitizer.h:266
 hmdcdigitizer.h:267
 hmdcdigitizer.h:268
 hmdcdigitizer.h:269
 hmdcdigitizer.h:270
 hmdcdigitizer.h:271
 hmdcdigitizer.h:272
 hmdcdigitizer.h:273
 hmdcdigitizer.h:274
 hmdcdigitizer.h:275
 hmdcdigitizer.h:276
 hmdcdigitizer.h:277
 hmdcdigitizer.h:278
 hmdcdigitizer.h:279
 hmdcdigitizer.h:280
 hmdcdigitizer.h:281
 hmdcdigitizer.h:282
 hmdcdigitizer.h:283
 hmdcdigitizer.h:284
 hmdcdigitizer.h:285
 hmdcdigitizer.h:286
 hmdcdigitizer.h:287
 hmdcdigitizer.h:288
 hmdcdigitizer.h:289
 hmdcdigitizer.h:290
 hmdcdigitizer.h:291
 hmdcdigitizer.h:292
 hmdcdigitizer.h:293
 hmdcdigitizer.h:294
 hmdcdigitizer.h:295
 hmdcdigitizer.h:296
 hmdcdigitizer.h:297
 hmdcdigitizer.h:298
 hmdcdigitizer.h:299
 hmdcdigitizer.h:300
 hmdcdigitizer.h:301
 hmdcdigitizer.h:302
 hmdcdigitizer.h:303
 hmdcdigitizer.h:304
 hmdcdigitizer.h:305
 hmdcdigitizer.h:306
 hmdcdigitizer.h:307
 hmdcdigitizer.h:308
 hmdcdigitizer.h:309
 hmdcdigitizer.h:310
 hmdcdigitizer.h:311
 hmdcdigitizer.h:312
 hmdcdigitizer.h:313
 hmdcdigitizer.h:314
 hmdcdigitizer.h:315
 hmdcdigitizer.h:316
 hmdcdigitizer.h:317
 hmdcdigitizer.h:318
 hmdcdigitizer.h:319
 hmdcdigitizer.h:320
 hmdcdigitizer.h:321
 hmdcdigitizer.h:322
 hmdcdigitizer.h:323
 hmdcdigitizer.h:324
 hmdcdigitizer.h:325
 hmdcdigitizer.h:326
 hmdcdigitizer.h:327
 hmdcdigitizer.h:328
 hmdcdigitizer.h:329
 hmdcdigitizer.h:330
 hmdcdigitizer.h:331
 hmdcdigitizer.h:332
 hmdcdigitizer.h:333
 hmdcdigitizer.h:334
 hmdcdigitizer.h:335
 hmdcdigitizer.h:336
 hmdcdigitizer.h:337
 hmdcdigitizer.h:338
 hmdcdigitizer.h:339
 hmdcdigitizer.h:340
 hmdcdigitizer.h:341
 hmdcdigitizer.h:342
 hmdcdigitizer.h:343
 hmdcdigitizer.h:344
 hmdcdigitizer.h:345
 hmdcdigitizer.h:346
 hmdcdigitizer.h:347
 hmdcdigitizer.h:348
 hmdcdigitizer.h:349
 hmdcdigitizer.h:350
 hmdcdigitizer.h:351
 hmdcdigitizer.h:352
 hmdcdigitizer.h:353
 hmdcdigitizer.h:354
 hmdcdigitizer.h:355
 hmdcdigitizer.h:356
 hmdcdigitizer.h:357
 hmdcdigitizer.h:358
 hmdcdigitizer.h:359
 hmdcdigitizer.h:360
 hmdcdigitizer.h:361
 hmdcdigitizer.h:362
 hmdcdigitizer.h:363
 hmdcdigitizer.h:364
 hmdcdigitizer.h:365
 hmdcdigitizer.h:366
 hmdcdigitizer.h:367
 hmdcdigitizer.h:368
 hmdcdigitizer.h:369
 hmdcdigitizer.h:370
 hmdcdigitizer.h:371
 hmdcdigitizer.h:372
 hmdcdigitizer.h:373
 hmdcdigitizer.h:374
 hmdcdigitizer.h:375
 hmdcdigitizer.h:376
 hmdcdigitizer.h:377
 hmdcdigitizer.h:378
 hmdcdigitizer.h:379
 hmdcdigitizer.h:380
 hmdcdigitizer.h:381
 hmdcdigitizer.h:382
 hmdcdigitizer.h:383
 hmdcdigitizer.h:384
 hmdcdigitizer.h:385
 hmdcdigitizer.h:386
 hmdcdigitizer.h:387
 hmdcdigitizer.h:388
 hmdcdigitizer.h:389
 hmdcdigitizer.h:390
 hmdcdigitizer.h:391
 hmdcdigitizer.h:392