ROOT logo
#ifndef HMDCGEANTTRACK_H
#define HMDCGEANTTRACK_H

#include "TObject.h"
#include "TObjArray.h"
#include "hlocation.h"
#include "hmdclistgroupcells.h"
#include "hgeomvector.h"

class HCategory;
class HIterator;
class HGeantKine;
class HGeantMdc;
class HMdcEvntListCells;
class HMdcClusSim;
class HMdcSegSim;
class HMdcHitSim;
class HMdcWiresArr;

class HMdcGeantSeg : public HMdcList12GroupCells {
protected:
  Char_t       sec;             // address of each mdc segment
  Char_t       ioseg;           // ...
  Char_t       mod;             // mod = -2 for two mdc segment
  Int_t        trackNumber;     // GEANT track number
  HGeantMdc*   geantLay[2][7];  // [mod%2][lay] lay=6 - mid-plane mdc
  Short_t      segNumber;       // segment sequential number in track
  Char_t       nHitsMdc[2];     // num. of geant hits in each mdc (layers only!)
  Char_t       direction;       // segment direction (+1 - good one)
  Bool_t       areWiresColl;    // =kTRUE if wires are collected
  UChar_t      segmentStatus;   // bits array (see hmdcgeanttrack.cc)

  HMdcClusSim* pClusBest;       // the best cluster for this geant seg.
  UChar_t      trIndBest;       // index of track in HMdcClusSim
  Float_t      dX;              // Xgeant-Xcluster
  Float_t      dY;              // Ygeant-Ycluster
  Short_t      nLayers;         // number of track layers in cluster
  UChar_t      nWires;          // number of track wires in cluster
  HMdcClusSim* pClusBestCh[2];  // For chamber clusters
  UChar_t      trIndBestCh[2];  // index of track in HMdcClusSim
  Float_t      dXCh[2];         // Xgeant-Xcluster
  Float_t      dYCh[2];         // Ygeant-Ycluster
  Short_t      nLayersCh[2];    // number of track layers in cluster
  UChar_t      nWiresCh[2];     // number of track wires in cluster

  HMdcSegSim*  pSegBest;        // the best MdcSeg for this geant seg.
  UChar_t      sTrIndBest;      // index of track in HMdcSegSim
  Float_t      chi2;            // chi2
  Short_t      sNLayers;        // number of track layers in segment
  UChar_t      sNWires;         // number of track wires in segment
  Int_t        nRestWires;      // Num.WiresInSegment - sNWires

  Int_t        userFlag;        // User's flag
  
public:
  HMdcGeantSeg(Short_t ns=-1);
  ~HMdcGeantSeg(void) {}
  void    clear(Short_t ns);
  void    setAddress(Char_t sc,Char_t ios) {sec=sc; ioseg=ios;}
  void    setDirection(Char_t hitDir)      {direction=hitDir;}
  void    setWiresAreColl(void)            {areWiresColl=kTRUE;}
  void    setWiresAreNotColl(void)         {areWiresColl=kFALSE;}
  void    setMod(Char_t m)                 {mod=m;}
  void    analyseClust(HMdcClusSim* pClus,Int_t trInd,Int_t modICl);
  void    analyseSeg(HMdcSegSim* pSeg,Int_t trInd,HMdcList12GroupCells& wrList,Float_t ch2,Int_t nR);

  Char_t  getSec(void) const               {return sec;}
  Char_t  getIOSeg(void) const             {return ioseg;}
  Char_t  getMod(void) const               {return mod;}
  Int_t   getTrack(void) const             {return trackNumber;}
  Char_t  getDirection(void) const         {return direction;}
  Char_t  getNGMdcHits(void) const         {return nHitsMdc[0]+nHitsMdc[1];}
  Int_t   getNGMdcs(void) const;
  Char_t  getNGMdcHits(Char_t m) const     {return nMdcOk(m) ? nHitsMdc[m%2]:0;}
  UChar_t getStatus(void) const            {return segmentStatus;}
  Bool_t  areWiresCollected(void) const    {return areWiresColl;}
  Int_t   getFirstLayer12(void) const;
  Int_t   getLastLayer12(void) const;
  Int_t   getFirstGeantMdcLayer(Int_t m) const;
  Int_t   getLastGeantMdcLayer(Int_t m) const;
  Bool_t  getFirstAndLastGMdcLayers(Int_t m,Int_t& lFisrt,Int_t& lLast) const;
  Int_t   getModIOfGeantTrack(void) const;
  HGeantMdc* getMdcMidPlaneHit(Int_t m) {return nMdcOk(m) ? geantLay[m%2][6]:0;}
  HGeantMdc* getMdcLayerHit(Int_t m,Int_t l);
  void print(void);
  static Char_t dirHit(HGeantMdc* pGeantMdc);
  Bool_t  getMdcHitPos(Int_t m, HGeomVector& hit);
  Bool_t  getMdcHitPosSec(Int_t m, HGeomVector& hit);
  Bool_t  getMdcHitPosLab(Int_t m, HGeomVector& hit);
  Bool_t  getLayerHitPos(Int_t m,Int_t l,HGeomVector& hit,Bool_t extrFlag=kTRUE);
  Bool_t  getLayerHitPosSec(Int_t m,Int_t l,HGeomVector& hit,Bool_t extrFlag=kTRUE);
  Bool_t  getLayerHitPosLab(Int_t m,Int_t l, HGeomVector& hit,Bool_t extrFlag=kTRUE);
  Bool_t  isGntTrackOk(void) const      {return testBit(255);}
  Bool_t  isGEANTBug(void) const        {return !testBit(128);}
  Bool_t  isNoMeta(void) const          {return !testBit(64);}
  Bool_t  isTrackNotRec(void) const     {return !testBit(32);}
  Bool_t  isSegNotRec(void) const       {return !testBit(16);}
  Bool_t  is1or2HitsNotRec(void) const  {return !testBit(8);}
  void    clearClus(void)               {pClusBest      = NULL;
                                         pClusBestCh[0] = NULL;
                                         pClusBestCh[1] = NULL;}
  void    clearSeg(void)                {pSegBest       = NULL;}
  void    setUserFlag(Int_t fl)         {userFlag=fl;}
  Int_t   getUserFlag(void) const       {return userFlag;}
  static Char_t dirTheta(Float_t th)    {return (th<=90.) ? +1 : -1;}
  
  // Next functions are NOT for user:
  void    setAnotherHit(HGeantMdc* pGeantMdc);
  Bool_t  addHit(HGeantMdc* pGeantMdc);
  void    addFirstHit(HGeantMdc* pGeantMdc,Bool_t* mdcSecSetup,Short_t ns);
  void    setStatusFlags(UChar_t& trackStatus);
  void    setTrackNumber(Int_t trk)      {trackNumber = trk;}
  
protected:
  Bool_t  nMdcOk(Int_t m) const         {return m>=0 && m<4 && ioseg==m/2;}
  Int_t   mdcInd(Int_t m) const         {return (m%2)*7+6;}
  void    calcMdcHitPos(Int_t modI, Int_t lay1, Int_t lay2, HGeomVector& hit,
                        Int_t lay=6);
  Bool_t  testBit(UChar_t bit) const    {return (segmentStatus&bit)==bit;}
  Bool_t  isSegClusBetter(HMdcClusSim* pClus,Int_t trInd);
  Bool_t  isModClusBetter(HMdcClusSim* pClus,Int_t trInd,Int_t mInd);
  Int_t   setModClustPos(HMdcClusSim* pMdcClusSim,Int_t indtr,Int_t mInd);
  Int_t   setSegClustPos(HMdcClusSim* pMdcClusSim,Int_t indtr);
  Bool_t  isSegBetter(HMdcSegSim* pSeg,Int_t trInd,Int_t nLayersN,Float_t chi2N,Int_t nR);

  ClassDef(HMdcGeantSeg,0) // Mdc GEANT segments
};

class HMdcGeantTrack : public TObject {
protected:
  HCategory*      pMdcCal1Cat;    // category MdcCal1
  HIterator*      iterMdcCal1;    // iterator for MdcCal1 category
  HLocation       locMdcCal1;     // location of HMdcCal1Sim object
  static Bool_t   mdcSetup[6][4]; // [sec][mod]=kFALSE - skip this MDC

  HGeantKine*     pGeantKine;     // pointer to HGeantKine object
  Int_t           trackNumber;    // GEANT track number
  Float_t         mom;            // momentum (in MeV/c)
  Bool_t          isInMdcFlag;    // =kTRUE if GEANT track has hits in MDC's
  Bool_t          isInRichFlag;   // =kTRUE if GEANT track has hits in RICH
  Bool_t          isInMetaFlag;   // =kTRUE if GEANT track reach META

  TObjArray*      segments;       // array of HMdcGeantSeg objects
  Int_t           arrSizeLoc;     // size of segments array
  Int_t*          arrSize;        // size of segments array
  Int_t           arrOffset;      // offset of this track first segment in array
  Int_t*          arrGlobOffset;  // global offset in array for this track
  Short_t         nGeantMdcHits;  // number HGeantMdc hits in track
  Short_t         nSegments;      // number of segments
  Int_t           nWires;         // number of wires in track (=-1 no MdcCal1Cat)
  Short_t         nWSegments;     // number of segments with wires from track
  Char_t          mdcSector;      // if <0 - num.of crossed sectors
  Char_t          mdcWSector;     // the same as mdcSector but num.of wires>0
  Char_t          nIOSeg;         // =1,2,3 - inner seg.only, outer only, both
  Char_t          nWIOSeg;        // the same as nIOSeg but num.of wires>0
  Bool_t          directionFlag;  // =kTRUE if all segments have dir.=+1
  Bool_t          geantBugFlag;   // =kTRUE if geant bug was found
  UChar_t         trackStatus;    // bits array (see hmdcgeanttrack.cc)

  Bool_t          debugPrintFlag;
  HGeantMdc*      pGeantMdc;      // current GeantMdc hit
  HGeantMdc*      pGeantMdcPrev;  // previous GeantMdc hit
  HMdcGeantSeg*   segment;        // pointer to current segment

  Int_t           userFlag;       // User's flag
  
public:
  HMdcGeantTrack(void);
  HMdcGeantTrack(TObjArray* arr,Int_t* size,Int_t* offst);
  ~HMdcGeantTrack(void);
  void clear(void);
  void setDefault(void);

//  void   setMdcEvntListCells(HMdcEvntListCells* pt=0);
  Bool_t        setMdcCal1Cat(void);
  static void   unsetMdc(Int_t s, Int_t m);
  static Bool_t isMdcActive(Int_t s, Int_t m) {return mdcSetup[s][m];}
  static void   testMdcSetup(void);
  void          setDebugPrintFlag(Bool_t fg=kTRUE) {debugPrintFlag=fg;}

  Short_t       testGeantTrack(HGeantKine* pGK);
  Short_t       testGeantTrack(Int_t trNum);

  HGeantMdc*    getMdcMidPlaneHit(Int_t nseg,Int_t mod);
  HGeantMdc*    getMdcLayerHit(Int_t nseg,Int_t mod,Int_t lay);
  HMdcGeantSeg* getSegment(Int_t ns)            {return nSegOk(ns) ?
                                   (HMdcGeantSeg*)segments->At(ns+arrOffset):0;}
  Int_t         getTrack(void) const            {return trackNumber;}
  Float_t       getMomentum(void) const         {return mom;}
  Bool_t        isInMdc(void) const             {return isInMdcFlag;}
  Bool_t        isInRich(void) const            {return isInRichFlag;}
  Bool_t        isInMeta(void) const            {return isInMetaFlag;}
  Short_t       getNSegments(void) const        {return nSegments;}
  Short_t       getNDigiSegments(void) const    {return nWSegments;}
  Short_t       getNGeantMdcHits(void) const    {return nGeantMdcHits;}
  Int_t         getNWires(void) const           {return nWires;}
  Char_t        getGeantMdcSector(void) const   {return mdcSector;}
  Char_t        getDigiMdcSector(void) const    {return mdcWSector;}
  Char_t        getNGeantMdcSectors(void) const {return (mdcSector<0) ? -mdcSector-1:1;}
  Char_t        getNDigiMdcSectors(void) const  {return (mdcWSector<0) ? 1-mdcWSector-1:1;}
  Bool_t        isDirectionGood(void) const     {return directionFlag;}
  Bool_t        isGeantBug(void) const          {return geantBugFlag;}
  Int_t         getNSegsInMdc(Int_t m,Int_t sec=-1);
  Int_t         getNSegments(Int_t seg,Int_t sec=-1);
  Char_t        getSegDirection(Int_t ns);
  Char_t        getSector(Int_t ns);
  Char_t        getIOSeg(Int_t ns);
  Char_t        getFirstLayer12(Int_t ns);
  Char_t        getLastLayer12(Int_t ns);
  Char_t        getNGMdcHits(Int_t ns);

  Bool_t        getMdcHitPos(Int_t ns, Int_t m, HGeomVector& hit);
  Bool_t        getMdcHitPosSec(Int_t ns, Int_t m, HGeomVector& hit);
  Bool_t        getMdcHitPosLab(Int_t ns, Int_t m, HGeomVector& hit);
  Bool_t        getLayerHitPos(Int_t ns, Int_t m, Int_t l, HGeomVector& hit,Bool_t extrFlag=kTRUE);
  Bool_t        getLayerHitPosSec(Int_t ns,Int_t m,Int_t l, HGeomVector& hit,Bool_t extrFlag=kTRUE);
  Bool_t        getLayerHitPosLab(Int_t ns,Int_t m,Int_t l, HGeomVector& hit,Bool_t extrFlag=kTRUE);
  HGeantKine*   getGeantKine(void)              {return pGeantKine;}
  Bool_t        isGntTrackOk(void)              {return testBit(255);}
  Bool_t        isGEANTBug(void)                {return !testBit(128);}
  Bool_t        isNoMeta(void)                  {return !testBit(64);}
  Bool_t        isTrackNotRec(void)             {return !testBit(32);}

  void          setUserFlag(Int_t fl)           {userFlag=fl;}
  Int_t         getUserFlag(void) const         {return userFlag;}
  void          print(void);

  static void   printDebug(HGeantMdc* pGeantMdc,Int_t i,const Char_t* st=0);

private:
  Bool_t        nSegOk(Short_t ns)              {return ns>=0 && ns<nSegments;}
  Bool_t        nSecOk(Int_t ns)                {return ns>=0 && ns<6;}
  Bool_t        nMdcOk(Int_t nm)                {return nm>=0 && nm<4;}
  void          testHitsInDetectors(void);
  Short_t       testMdcHits(void);
  Bool_t        addSegAtAndExpand(Short_t segNum);
  Bool_t        addSegment(void);
  Int_t         collectWires(Char_t sec, Char_t mod, Char_t lay, Float_t atof);
  Bool_t        isGeantBug1(Float_t momLay);
  Bool_t        isGeantBug2(Char_t sec,Char_t dMod,Char_t dLay,Char_t hitDir,Float_t dTof);
  Bool_t        isGeantBug3(void);
  Bool_t        mayBeGeantBug(Float_t dMom);
  void          printDebug(Float_t dMom,const Char_t dMod);
  Char_t        dirDLayer(Char_t dir)           {return dir == 0 ? 0 : (dir<0) ? -1:+1;}
  void          calcNSectors(void);
  void          setStatusFlags(void);
  static Int_t  calcLay14(Int_t m, Int_t l);
  Bool_t        testBit(UChar_t bit) const      {return (trackStatus&bit)==bit;}

  ClassDef(HMdcGeantTrack,0) // Mdc GEANT segments collection for one track
};

class HMdcTrackInfSim : public TObject {
protected:
  UChar_t               sector;              //
  UChar_t               segment;             //
  Int_t                 modInd;              // 0,1 or <0(for two mdc segment)
  Int_t                 nWiresTot;           // number of wires in current cluster or segment

  Bool_t                isWrCollected;       //
  Int_t                 numTracks;           // for tracks list calculation
  enum {aSize=20};                           //
  Short_t               numWires[aSize+1];   // -/-
  HMdcList12GroupCells  wiresList[aSize+1];  // -/-
  HMdcGeantTrack*       gntTrackList[aSize]; // -/-
  HMdcGeantSeg*         gntSegList[aSize];   // -/-
  Int_t                 segIngGTrack[aSize]; // index of segment in HMdcGeantTrack
  Int_t                 tracksNum[aSize];    // -/-
  Int_t                 sortedInd[aSize];    // -/-
  Int_t                 embedInd;
  Int_t                 noiseInd;
  HMdcList12GroupCells  listTmp;
  HMdcWiresArr         *pWiresArr;           //

  Bool_t                isGntBugEvent;       //
  Int_t                 isGntBugSeg;         //
public:
  HMdcTrackInfSim(void)  {}
  ~HMdcTrackInfSim(void) {}

  void    fillClusTrackInf(HMdcClusSim* pClusSim);
  void    addClusModTrackInf(HMdcClusSim* pClusSim);
  void    fillClusModTrackInf(HMdcClusSim* pClusSim,HMdcList12GroupCells* wrLst,Int_t modi);
  void    fillSegTrackInf(HMdcSegSim* pSegSim,HMdcList24GroupCells* wrLst,HMdcSegSim* pSegPar);
  void    fillHitTrackInf(HMdcHitSim* pHitSim,HMdcList24GroupCells* wrLst);
  Bool_t  collectTracksInf(UChar_t sec,UChar_t seg,HMdcList12GroupCells* wrLst);
  void    testIOMatching(Int_t ind,HMdcClusSim* pClusSim,Int_t bin,HMdcClusSim* pClusSimPar);
  void    testIOMatching(Int_t ind,HMdcSegSim* pSegSim,Int_t bin,HMdcSegSim* pSegPar);


  Int_t   getNumTracks(void) const       {return numTracks;}
  Int_t   getTrack(Int_t trInd) const;
  Short_t getNumWires(Int_t trInd) const;
  Bool_t  isGeantBugEvent(void)          {return isGntBugEvent;}
  Bool_t  isGeantBugSeg(void)            {return isGntBugSeg;}
  void    setWiresArr(HMdcWiresArr* wl)  {pWiresArr = wl;}

  UChar_t getNumLayers(Int_t trInd, Int_t modi=-2) const;
  HMdcList12GroupCells* getListCells(Int_t trInd);
  HMdcGeantSeg*         getMdcGeantSeg(Int_t trInd);
  HMdcGeantTrack*       getMdcGeantTrack(Int_t trInd);

private:
  Bool_t isTrIndOk(Int_t ind) {return ind>=0 && ind<numTracks;}
  Bool_t  collectTracksInf(void);

  ClassDef(HMdcTrackInfSim,0)  // Mdc GEANT segments collection for one event
};

class HMdcGeantEvent : public TObjArray {
protected:
  static HMdcGeantEvent* pGlobalGEvent;  // pointer to the global object
  Int_t                  size;           // size of TObjArray
  Float_t                xVertex;        // x of event vertex  (in mm)
  Float_t                yVertex;        // y (from first primary track)
  Float_t                zVertex;        // z
  Int_t                  targNum;        // target numer (0,1,...) of vertex
  HCategory*             pGeantKineCat;  // category GeantKine
  HCategory*             pGeantMdcCat;   // category GeantMdc
  Bool_t                 geantBugFlag;   // =kTRUE if geant bug was found
  Bool_t                 debugPrintFlag;
  TObjArray              geantSegments;  // array of HMdcGeantSeg objects
  Int_t                  nGSegments;     // num.of HMdcGeantSeg objects in event
  Int_t                  sizeGSegArr;    // size of geantSegments array

  Int_t                  nTracks;        // number of tracks in array
  HMdcEvntListCells*     pMdcListCells;  // object keep list of fired wires
  Bool_t                 isMdcLCellsOwn; // =kTRUE if MdcListCells is own

  HMdcTrackInfSim        mdcTrackInfSim;
public:
  HMdcGeantEvent(void);
  ~HMdcGeantEvent(void);
  static HMdcGeantEvent*  getExObject(void)  {return pGlobalGEvent;}
  static HMdcGeantEvent*  getObject(Bool_t& isCreated);
  static void             deleteCont(void);
  static HMdcTrackInfSim* getMdcTrackInfSim(void) {return pGlobalGEvent ?
                                      &(pGlobalGEvent->mdcTrackInfSim) : 0;}

  Bool_t  setGeantKineCat(void);
  void    unsetMdc(Int_t s, Int_t m)          {HMdcGeantTrack::unsetMdc(s,m);}
  Bool_t  isMdcActive(Int_t s, Int_t m) const {return HMdcGeantTrack::isMdcActive(s,m);}
  void    setDebugPrintFlag(Bool_t fg=kTRUE)  {debugPrintFlag=fg;}

  Bool_t  collectTracks(void);
  Int_t   getNTracks(void) const              {return nTracks;}
  HMdcGeantTrack* next(Int_t& i);
  HMdcGeantTrack* getGeantTrack(Int_t trackNum);

  Bool_t  isGeantBug(void) const              {return geantBugFlag;}
  void    print(void);
  void    clearOSegClus(void);
  void    clearOClus(void);
  void    clearOSeg(void);
  void    getEventVertex(Float_t &ax, Float_t &ay, Float_t &az) const;
  Float_t getXvertex(void) const              {return xVertex;}
  Float_t getYvertex(void) const              {return yVertex;}
  Float_t getZvertex(void) const              {return zVertex;}
  Int_t   getTargetNum(void) const            {return targNum;}

private:
  ClassDef(HMdcGeantEvent,0)  // Mdc GEANT segments collection for one event
};

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