ROOT logo
using namespace std;
#include "hmdclookuptb.h"
#include "hspectrometer.h"
#include "hevent.h"
#include "heventheader.h"
#include "hmdcdetector.h"
#include "hpario.h"
#include "hmdcgetcontainers.h"
#include <iostream>
#include <iomanip>
#include "hmdcgeomstruct.h"
#include "hspecgeompar.h"
#include "hmdcgeompar.h"
#include "hgeomvolume.h"
#include "hgeomcompositevolume.h"
#include "hmdclayergeompar.h"
#include "TObjArray.h"
#include "TH2.h"
#include "hmdcclfnstack.h"
#include "hmdccluster.h"
#include "hmdcclussim.h"
#include "hmdctrackdset.h"
#include "hmdclistgroupcells.h"
#include "hmdclistcells.h"
#include "hmdcdrifttimepar.h"
#include "hruntimedb.h"
#include "hstart2geompar.h"


//*-- AUTHOR : Pechenov Vladimir
//*-- Modified : 18/06/2012 by O. Pechenova
//*-- Modified : 29/04/2010 by O. Pechenova
//*-- Modified : 21/02/2008 by V. Pechenov
//*-- Modified : 17/07/2003 by V. Pechenov
//*-- Modified : 05/02/2003 by V. Pechenov
//*-- Modified : 04/06/2002 by V.Pechenov
//*-- Modified : 09/05/2001 by V.Pechenov
//*-- Modified : 12/07/2000 by V.Pechenov
//*-- Modified : 23/05/2000 by V.Pechenov
//*-- Modified : 07/03/2000 by R. Holzmann
//*-- Modified : 02/12/99 by V.Pechenov
//*-- Modified : 26/10/99 by V.Pechenov
//*-- Modified : 20/05/99

//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////
// HMdcLookUpTb
//
// Trackfinder for MDC1&2 and MDC3&4 if magnet off
//
////////////////////////////////////////////////////////////////

ClassImp(HMdcLookUpTbCell)
ClassImp(HMdcLookUpTbLayer)
ClassImp(HMdcLookUpTbMod)
ClassImp(HMdcLookUpTbSec)
ClassImp(HMdcLookUpTb)

HMdcLookUpTbCell::HMdcLookUpTbCell(void) {
  nLines    = 0;
  xBinMin   = 0;
  xBinMax   = 0;
  distCutFT = -1.;
  distCut1T = -1.;
  alphaMean = 80.;
}

void HMdcLookUpTbCell::init(Int_t yBinMinT, Int_t yBinMaxT) {
  Int_t newNLines = yBinMaxT-yBinMinT+1;
  if(newNLines>nLines) {
    if(xBinMin) delete [] xBinMin;
    if(xBinMax) delete [] xBinMax;
    nLines  = newNLines;
    xBinMin = new UShort_t [nLines];
    xBinMax = new UShort_t [nLines];
  }
  yBinMin = yBinMinT;
  yBinMax = yBinMaxT;
  line    = 0;
}

HMdcLookUpTbCell::~HMdcLookUpTbCell(void) {
  if(xBinMin) delete [] xBinMin;
  if(xBinMax) delete [] xBinMax;
}

Bool_t HMdcLookUpTbCell::addLine(UShort_t nc1, UShort_t nc2){
  if(nc1<=nc2 && line<nLines) {
    xBinMin[line]=nc1;
    xBinMax[line]=nc2;
    line++;
    return kTRUE;
  }
  Error("addLine","line number=%i > max.=%i  OR  nBin1=%i > nBin2=%i",
      line,nLines,nc1,nc2);
  return kFALSE;
}

//----------Layer-----------------------------

HMdcLookUpTbLayer::HMdcLookUpTbLayer(Int_t sec, Int_t mod, Int_t layer) {
  // Geting of pointers to par. cont.
  layPart2 = NULL;
  HMdcGetContainers* parCont = HMdcGetContainers::getObject();
  if( !parCont ) return;
  HMdcGeomStruct* fMdcGeomStruct = parCont->getMdcGeomStruct();
  if( !fMdcGeomStruct ) return;
  nCells = ((*fMdcGeomStruct)[sec][mod])[layer];
  pLTCellArr = new HMdcLookUpTbCell [nCells];
  HMdcSizesCells *pSizesCells = HMdcSizesCells::getExObject();
  pSCellLay  = &((*pSizesCells)[sec][mod][layer]);
}

HMdcLookUpTbLayer::~HMdcLookUpTbLayer(void) {
  if(pLTCellArr) delete [] pLTCellArr;
  pLTCellArr = NULL;
  if(layPart2 != NULL) delete layPart2;
  layPart2 = NULL;
}

Int_t HMdcLookUpTbLayer::getSize(void) {
  // return the size of pLTCellArr
  return pLTCellArr != 0  ? nCells : 0;
}

void HMdcLookUpTbLayer::setMinDistLUTb(Int_t lPart,HGeomVector& t,Double_t* carr) {
  // lPart=0 - first part of layer
  // lPart=1 - second part of layer (it can be in MDCIII and MDCIV only)
  DistCalcLuTb*  layPart = &layPart1;
  if(lPart==1) {
    if(layPart2 != NULL) delete layPart2;
    layPart2 = new DistCalcLuTb;
    layPart  = layPart2;
  }
  layPart->yt  = t(1);
  layPart->zt  = t(2);
  layPart->C1x = carr[0];
  layPart->C1y = carr[1];
  layPart->C1  = carr[2]; 
  layPart->C2x = carr[3];
  layPart->C2y = carr[4];
  layPart->C2  = carr[5];
}

//------------Module----------------------------
HMdcLookUpTbMod::HMdcLookUpTbMod(Int_t sec, Int_t mod) {
  // constructor creates an array of pointers of type HMdcLookUpTbMod
  array = new TObjArray(6);
  for (Int_t layer = 0; layer < 6; layer++) (*array)[layer] = new HMdcLookUpTbLayer(sec, mod, layer);
  nLayers=6;
}

HMdcLookUpTbMod::~HMdcLookUpTbMod(void) {
  // destructor
  if(array) {
    array->Delete();
    delete array;
  }
}

Int_t HMdcLookUpTbMod::getSize(void) {
  // returns the size of the pointer array
  if(array) return array->GetEntries();
  else return -1;
}

//----------Sector------------------------------------
Int_t              HMdcLookUpTbSec::hPlModsSize  = 0;
UChar_t*           HMdcLookUpTbSec::hPlMod[4]    = {0,0,0,0};
Int_t              HMdcLookUpTbSec::sizeBArSt    = 0;
UChar_t*           HMdcLookUpTbSec::plotBArSc    = 0;
UChar_t*           HMdcLookUpTbSec::plotBArM[4]  = {0,0,0,0};
Short_t*           HMdcLookUpTbSec::clusIndM1    = 0;
Int_t              HMdcLookUpTbSec::clIndArrSzM1 = 0;
Short_t*           HMdcLookUpTbSec::clusIndM2    = 0;
Int_t              HMdcLookUpTbSec::clIndArrSzM2 = 0;

HMdcLookUpTbSec::HMdcLookUpTbSec(Int_t sec, Int_t nSegs,Int_t inBinX, Int_t inBinY) {
  // constructor creates an array of pointers of type HMdcLookUpTbMod
  sector       = sec;
  nSegments    = nSegs;
  nModules     = 0;
  nMods        = 0;
  maxNModules  = nSegments*2;
  segment      = nSegments==1 ? 0 : -1;
  hist         = 0;
  nBinX        = (inBinX%2 == 0) ? inBinX:inBinX+1;
  nBinY        = (inBinY%2 == 0) ? inBinY:inBinY+1;
  xBinsPos     = new Double_t [nBinX];
  yBinsPos     = new Double_t [nBinY];
  size         = nBinX*nBinY;
  size         = (size/32 + ((size%32 > 0) ? 1:0))*32;
  constUncert  = 0.4;
  dDistCut     = 1.5;    // 1.0;
  dDistCutVF   = -1.0;   // 0.5;
  yDDistCorr   = new Double_t [nBinY];
  levelVertF   = 11;
  levelVertFPP = 12;
  lTargPnt     = 0;
  fakeSuppFlag = 1;
  Double_t dDistYCorr = 1.;
  useDriftTime = HMdcTrackDSet::useDriftTimeSeg1();
  HMdcTrackDSet::getDrTimeProjParSeg1(constUncert,dDistCut,dDistYCorr,dDCutCorr[0]);
  setDrTimeCutYCorr(dDistYCorr);
  fakeSuppFlag = HMdcTrackDSet::getGhostRemovingFlagSeg1();
  doVertexFn   = HMdcTrackDSet::getVertexFinderPar(dDistCutVF,levelVertF,levelVertFPP);

  Bool_t resize = size > hPlModsSize;
  if(resize) hPlModsSize=size;
  array = new TObjArray(4);
  for (Int_t mod = 0; mod < nSegs*2; mod++) {
    if( HMdcGetContainers::getObject()->isModActive(sec,mod) ) {
      HMdcLookUpTbMod* pMod = new HMdcLookUpTbMod(sec,mod);
      (*array)[mod] = pMod;
      pMod->setNLayers(HMdcTrackDSet::getNLayersInMod(sec,mod));
      nModules++;
    }
    if(hPlMod[mod] && !resize) continue;
    if(hPlMod[mod])  delete [] hPlMod[mod];
    hPlMod[mod] = new UChar_t [hPlModsSize];
    memset(hPlMod[mod],0,hPlModsSize);
  }

  if(plotBArSc==0 || sizeBArSt<size/8) {
    if(plotBArSc) delete [] plotBArSc;
    for(Int_t mod=0;mod<4;mod++) if(plotBArM[mod]) {
      delete [] plotBArM[mod];
      plotBArM[mod] = 0;
    }
    sizeBArSt=size/8;
    plotBArSc=new UChar_t [sizeBArSt];
    memset(plotBArSc,0,sizeBArSt);
    for(Int_t mod=0;mod<nSegs*2;mod++) {
      plotBArM[mod]=new UChar_t [sizeBArSt];
      memset(plotBArM[mod],0,sizeBArSt);
    }
  } else if(nSegs==2) {
    if(plotBArM[2]==0) plotBArM[2] = new UChar_t [sizeBArSt];
    if(plotBArM[3]==0) plotBArM[3] = new UChar_t [sizeBArSt];
  }
  sizeBAr       = size/8;
  typeClFinder  = 0;
  neighbBins[0] = -1;
  neighbBins[1] = +1;
  neighbBins[2] = +nBinX-1;
  neighbBins[3] = +nBinX;
  neighbBins[4] = +nBinX+1;
  neighbBins[5] = -nBinX-1;
  neighbBins[6] = -nBinX;
  neighbBins[7] = -nBinX+1;
  
  isGeant = HMdcGetContainers::isGeant();
  trackListFlag = isGeant;
  locClus.set(2,sec,0);
  pClustersArrs = HMdcClustersArrs::getObject();
  clusArrSize   = pClustersArrs->createAllArrays(10000);
  clusArr       = pClustersArrs->getArray1();
  clusArrM1     = pClustersArrs->getArray2();
  clusArrM2     = pClustersArrs->getArray3();
  layerOrder[0] = 2;
  layerOrder[1] = 3;
  layerOrder[2] = 1;
  layerOrder[3] = 4;
  layerOrder[4] = 0;
  layerOrder[5] = 5;
  if(size>clIndArrSzM1) {
    if(clusIndM1) delete [] clusIndM1;
    clusIndM1    = new Short_t [size];
    clIndArrSzM1 = size;
  }
  if(size>clIndArrSzM2) {
    if(clusIndM2) delete [] clusIndM2;
    clusIndM2    = new Short_t [size];
    clIndArrSzM2 = size;
  }
  for(Int_t mod=0;mod<4;mod++) {
    xMin[mod] = new UInt_t [nBinY];
    xMax[mod] = new UInt_t [nBinY];
    for(Int_t y=0;y<nBinY;y++) {
      xMin[mod][y] = size;
      xMax[mod][y] = 0;
    }
  }
  xMaxCl = new UShort_t [nBinY];
  xMinCl = new UShort_t [nBinY];
  
  HMdcEvntListCells* pEvLCells = HMdcEvntListCells::getExObject();
  pListCells = &((*pEvLCells)[sector]);
  
  pDriftTimeParSec = HMdcDriftTimePar::getObject()->at(sector);
  HMdcSizesCells *pSizesCells = HMdcSizesCells::getExObject();
  pSCellSec = &((*pSizesCells)[sector]);
}

HMdcLookUpTbSec::~HMdcLookUpTbSec(void) {
  // destructor
  if(array) {
    array->Delete();
    delete array;
  }
  for(Int_t mod=0; mod<4; mod++) {
    if(hPlMod[mod]) delete [] hPlMod[mod];
    hPlMod[mod]=0;
  }
  hPlModsSize=0;
  if(hist && hist->IsOnHeap()) delete hist;
  hist=0;
  if(plotBArSc) {
    delete [] plotBArSc;
    plotBArSc=0;
    sizeBArSt=0;
  }
  for(Int_t mod=0;mod<4;mod++) {
    if(plotBArM[mod]) {
      delete [] plotBArM[mod];
      plotBArM[mod]=0;
    }
  }
  delete [] xBinsPos;
  delete [] yBinsPos;
  delete [] yDDistCorr;
  for(Int_t mod=0;mod<4;mod++) {
    delete [] xMin[mod];
    delete [] xMax[mod];
  }

  HMdcClustersArrs::deleteCont();

  if(clusIndM1) {
    delete [] clusIndM1;
    clusIndM1=0;
    clIndArrSzM1=0;
  }
  if(clusIndM2) {
    delete [] clusIndM2;
    clusIndM2=0;
    clIndArrSzM2=0;
  }
  delete [] xMaxCl;
  delete [] xMinCl;
}

Bool_t HMdcLookUpTbSec::calcXYBounds(Double_t& xL,Double_t& xU,
                                     Double_t& yL,Double_t& yU) {
  HGeomVector senVol;
  HGeomVector cross;
  xL = yL =  1.0e+30;
  xU = yU = -1.0e+30;
  
  HMdcSizesCells *fSizesCells = HMdcSizesCells::getExObject();
  if(fSizesCells == 0) return kFALSE;
  for(Int_t mod=0; mod<4; mod++) if( (*array)[mod] ) {
    for(Int_t layer=0; layer<6; layer++ /*layer+=5*/) {
      // Take size of first and last MDC layer only
      HMdcSizesCellsLayer* fSizesCellsLay = &((*fSizesCells)[sector][mod][layer]);
      if( !fSizesCells ) return kFALSE;
      HGeomVolume* fGeomVolLay = fSizesCellsLay->getGeomVolume();
      if(!fGeomVolLay || fGeomVolLay->getNumPoints()!=8) return kFALSE;
      HMdcLayerGeomParLay* pLayGmParLay = fSizesCellsLay->getLayerGeomParLay();
      if(pLayGmParLay == 0) return kFALSE;
      Double_t dstCathPl = pLayGmParLay->getCatDist()*0.5;
      for(Int_t point=0; point<8; point++) {
        senVol = *(fGeomVolLay->getPoint(point)); // mm!
        if(point<4) senVol.setZ(-dstCathPl);
        else        senVol.setZ( dstCathPl);
        senVol = fSizesCellsLay->getSecTrans()->transFrom(senVol);
        for(Int_t targ=0; targ<2; targ++) {
          prPlane.calcIntersection(targVc[targ],senVol-targVc[targ],cross);
          if(cross(0)<xL)      xL = cross(0);
          else if(cross(0)>xU) xU = cross(0);
          if(cross(1)<yL)      yL = cross(1);
          else if(cross(1)>yU) yU = cross(1);
        }
      }
    }
  }
  return kTRUE;
}

void HMdcLookUpTbSec::setPrPlotSize(Double_t xL,Double_t xU,
                                    Double_t yL,Double_t yU) {
  xLow  = xL;
  xUp   = xU;
  yLow  = yL;
  yUp   = yU;
  xStep = (xUp-xLow)/(Double_t)nBinX;
  yStep = (yUp-yLow)/(Double_t)nBinY;
  Double_t xHStep = xStep/2;
  Double_t yHStep = yStep/2;
  xFirstBin = xLow+xHStep;
  yFirstBin = yLow+yHStep;
  for(Int_t n=0; n<nBinX; n++) xBinsPos[n] = ((Double_t)n)*xStep+xLow+xHStep;
  for(Int_t n=0; n<nBinY; n++) yBinsPos[n] = ((Double_t)n)*yStep+yLow+yHStep;
}

void HMdcLookUpTbSec::clearPrArrs(void) {
  if(hPlMod[0]) memset(hPlMod[0],0,size);
  if(hPlMod[1]) memset(hPlMod[1],0,size);
  if(hPlMod[2]) memset(hPlMod[2],0,size);
  if(hPlMod[3]) memset(hPlMod[3],0,size);
}

void HMdcLookUpTbSec::clearPrMod(Int_t mod) {
  UChar_t* hPlModM=hPlMod[mod];
  if(!hPlModM) return;
  UInt_t* xMaxM = xMax[mod];
  UInt_t* xMinM = xMin[mod];
  for(Int_t y=0;y<nBinY;y++) {
    if(xMaxM[y]<xMinM[y]) continue;
    memset(hPlModM+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    xMinM[y] = size;
    xMaxM[y] = 0;
  }
}

void HMdcLookUpTbSec::clearPrMod(void) {
  // Cleaning of hPlMod[0] and hPlMod[1] by xMax[0]-xMinM[0]
  // This finction is used in findClusInSeg1TAmpCut only.
  UChar_t* hPlMod1 = hPlMod[0];
  UChar_t* hPlMod2 = hPlMod[1];
  UInt_t*  xMaxM   = xMax[0];
  UInt_t*  xMinM   = xMin[0];
  for(Int_t y=0;y<nBinY;y++) {
    if(xMaxM[y]<xMinM[y]) continue;
    memset(hPlMod1+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    memset(hPlMod2+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    xMinM[y] = size;
    xMaxM[y] = 0;
  }
}

void HMdcLookUpTbSec::clearPrModInSec(void) {
  // Cleaning of hPlMod[0] and hPlMod[1] by xMax[0]-xMinM[0]
  // This finction is used in findClusInSeg1TAmpCut only.
  UChar_t* hPlMod1 = hPlMod[0];
  UChar_t* hPlMod2 = hPlMod[1];
  UChar_t* hPlMod3 = hPlMod[2];
  UChar_t* hPlMod4 = hPlMod[3];
  UInt_t*  xMaxM   = xMax[0];
  UInt_t*  xMinM   = xMin[0];
  for(Int_t y=0;y<nBinY;y++) {
    if(xMaxM[y]<xMinM[y]) continue;
    memset(hPlMod1+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    memset(hPlMod2+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    memset(hPlMod3+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    memset(hPlMod4+xMinM[y],0,xMaxM[y]-xMinM[y]+1);
    xMinM[y] = size;
    xMaxM[y] = 0;
  }
}

Int_t HMdcLookUpTbSec::getSize(void) {
  // return the size of the pointer array
  if(array) return array->GetEntries();
  else return -1;
}

void HMdcLookUpTbSec::clearwk(void) {
  noFiredCells = kFALSE;
  isSlotAv[0]  = kTRUE;
  isSlotAv[1]  = kTRUE;
}

Int_t HMdcLookUpTbSec::xBinNumInBounds(Double_t x) {
  Int_t bin=xBinNum(x);
  if(bin < 1)            bin = 1;
  else if(bin > nBinX-2) bin = nBinX-2;
  return bin;
}

Int_t HMdcLookUpTbSec::yBinNumInBounds(Double_t y) {
  Int_t bin=yBinNum(y);
  if(bin < 1)            bin = 1;
  else if(bin > nBinY-2) bin = nBinY-2;
  return bin;
}

Bool_t HMdcLookUpTbSec::setLayerVar(void) {
  pLayLCells = &((*pListCells)[module][layer]);
  if(pLayLCells->getFirstCell() < 0) return kFALSE;
  pLUTLayer  = &((*cFMod)[layer]);
  add        = 1<<layer;
  cell       = -1;
  return kTRUE;
}

Bool_t HMdcLookUpTbSec::setNextCell(void) {
  if( !pLayLCells->nextCell(cell) ) return kFALSE;
  pLUTCell   = &((*pLUTLayer)[cell]);  
  pLUTLayer->setCurrentCell(cell);
  return kTRUE;
}

void HMdcLookUpTbSec::makeSPlot(void) {
  // Making proj.plot in sector(magnetoff) or segment(magneton).
  // Number of MDCs in sector or segment must be >1 !!!
  maxBinBAr4Sc = 0;
  minBinBAr4Sc = size;

  Int_t                lmod = -1;
  if     (minAmp[3]>0) lmod = 3;
  else if(minAmp[2]>0) lmod = 2;
  else if(minAmp[1]>0) lmod = 1;
  else if(minAmp[0]>0) lmod = 0;
  if(lmod<0) return;
  Int_t                fmod = 3;
  if     (minAmp[0]>0) fmod = 0;
  else if(minAmp[1]>0) fmod = 1;
  else if(minAmp[2]>0) fmod = 2;
  if(fmod==lmod) return;

  UChar_t minAm0 = minAmp[0];
  UChar_t minAm1 = minAmp[1];
  UChar_t minAm2 = minAmp[2];
  UChar_t minAmL = minAmp[lmod];
  for(module=fmod; module<=lmod; module++) {
    cFMod = &((*this)[module]);
    if( !cFMod ) continue;
    if(minAmp[module]==0) continue;
    cHPlModM = hPlMod[module];
    if(cHPlModM == NULL) continue;
    cXMinM = xMin[module];
    cXMaxM = xMax[module];

    Int_t nFiredLay=0;
    for(Int_t indLine=0; indLine<6; indLine++) {
      layer = layerOrder[indLine];
      if( !setLayerVar() ) continue;
      nFiredLay++;
      if(maxAmp[module]-nFiredLay+1>=minAmp[module]) {
        if(module==fmod)                                 makeLayProjV1();
        else if(module<lmod || nFiredLay<minAmp[module]) makeLayProjV1b();
        else while( setNextCell() ) {
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
            if(nbL>pXMaxM[y]) nbL = pXMaxM[y];
            if(nbF<pXMinM[y]) nbF = pXMinM[y];
            if(nbF>nbL) continue;
            if(nbF<cXMinM[y]) cXMinM[y] = nbF;
            if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
            Double_t yDDCorr = yDDistCorr[y];
            Double_t yb      = yBinsPos[y];
            UChar_t *bt      = cHPlModM+nbF;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++) {
              if(useDriftTime && !pLUTLayer->drTmTest2(xBinsPos[nb%nBinX],yb,yDDCorr)) continue;
              *bt |= add;
              if( HMdcBArray::getNSet(bt) < minAmL ) continue;
              if(fmod==0&&HMdcBArray::getNSet(hPlMod[0][nb])<minAm0) continue;
              if(module>1) {
                if(HMdcBArray::getNSet(hPlMod[1][nb])<minAm1) continue;
                if(module>2&&HMdcBArray::getNSet(hPlMod[2][nb])<minAm2) continue;
              }
              HMdcBArray::set(plotBArSc,nb);
              if(nb<minBinBAr4Sc) minBinBAr4Sc=nb;
              if(nb>maxBinBAr4Sc) maxBinBAr4Sc=nb;
            }
          }
        }
      } else {
        if(module<lmod || nFiredLay<minAmp[module]) makeLayProjV2();
        else  while(  setNextCell()  ) {
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
            if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
            if(nbF<cXMinM[y]) nbF = cXMinM[y];
            if(nbF > nbL) continue;
            Double_t yDDCorr = yDDistCorr[y];
            Double_t yb      = yBinsPos[y];
            UChar_t *bt      = cHPlModM+nbF;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++) {
              if(useDriftTime && !pLUTLayer->drTmTest2(xBinsPos[nb%nBinX],yb,yDDCorr)) continue;
              *bt |= add;
              if( HMdcBArray::getNSet(bt) < minAmL ) continue;
              if(fmod==0&&HMdcBArray::getNSet(hPlMod[0][nb])<minAm0) continue;
              if(module>1) {
                if(HMdcBArray::getNSet(hPlMod[1][nb])<minAm1) continue;
                if(module>2&&HMdcBArray::getNSet(hPlMod[2][nb])<minAm2) continue;
              }
              HMdcBArray::set(plotBArSc,nb);
              if(nb<minBinBAr4Sc) minBinBAr4Sc=nb;
              if(nb>maxBinBAr4Sc) maxBinBAr4Sc=nb;
            }
          }
        }
      }
    }
    pXMinM = cXMinM;
    pXMaxM = cXMaxM;
  }
  maxBinBAr4Sc /= 32;
  minBinBAr4Sc /= 32;
}

void HMdcLookUpTbSec::makeS1PlotAmpCut(void) {
  // Making proj.plot in segment with cut on the total amplitude in 2 MDC's
  // Number of MDCs in sector or segment must be >1 !!!
  // Level of clusterfinder must be >=7 !!!!
//printf("sector=%i ==================== makeplot::::::::::::::::::::\n",sector);
  if(minAmp[0]<=0 || minAmp[1]<=0) return;
  Int_t seg1MinAmpCut = minAmp[0]+minAmp[1];
  if(typeClFinder==2) {
    seg1MinAmpCut = TMath::Min(minAmp[0],minAmp[1]) + 2;
    if(seg1MinAmpCut < 5) seg1MinAmpCut = 5;
  }
  maxBinBAr4Sc    = 0;
  minBinBAr4Sc    = size;

  Int_t nFiredLay = 0;
  Int_t maxAmpSeg = maxAmp[0]+maxAmp[1];
  if(seg1MinAmpCut > maxAmpSeg) return;

  cXMinM = xMin[0];
  cXMaxM = xMax[0];
  for(Int_t indLine=0; indLine<6; indLine++) {
    layer = layerOrder[indLine];
    for(module=0; module<2; module++) {
      cFMod = &((*this)[module]);
      if( !cFMod ) continue;
      if(minAmp[module]==0) continue;
      cHPlModM=hPlMod[module];
      if(!cHPlModM) continue;
//      cXMinM=xMin[module];
//      cXMaxM=xMax[module];
    
      if( !setLayerVar() ) continue;
      nFiredLay++;
      if(maxAmpSeg-nFiredLay+1 >= seg1MinAmpCut) {
        if(nFiredLay<seg1MinAmpCut) makeLayProjV1();
        else while(  setNextCell()  ) {
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;

            UChar_t* bt  = cHPlModM+nbF;
            UChar_t* bt0 = module==0 ? hPlMod[1]+nbF:hPlMod[0]+nbF;
            if(useDriftTime) {
              Double_t  yDDCorr = yDDistCorr[y];
              Double_t  yb      = yBinsPos[y];
              Double_t *xb      = xBinsPos + nbF - shift;
              for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,bt0++,xb++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) {
                if(nb<cXMinM[y]) cXMinM[y] = nb;
                if(nb>cXMaxM[y]) cXMaxM[y] = nb;
                *bt |= add;
                UChar_t wt = HMdcBArray::getNSet(bt) + HMdcBArray::getNSet(bt0);
                if( wt >= seg1MinAmpCut ) {
                  HMdcBArray::set(plotBArSc,nb);
                  if(nb<minBinBAr4Sc) minBinBAr4Sc = nb;
                  if(nb>maxBinBAr4Sc) maxBinBAr4Sc = nb;
                }
              }
            } else {
              if(nbF<cXMinM[y]) cXMinM[y] = nbF;
              if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
              if(nbF > nbL) continue;
              for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,bt0++) {
                *bt |= add;
                UChar_t wt = HMdcBArray::getNSet(bt) + HMdcBArray::getNSet(bt0);
                if( wt >= seg1MinAmpCut ) {
                  HMdcBArray::set(plotBArSc,nb);
                  if(nb<minBinBAr4Sc) minBinBAr4Sc = nb;
                  if(nb>maxBinBAr4Sc) maxBinBAr4Sc = nb;
                }
              }
            }
          }
        }
      } else {
        if(nFiredLay<seg1MinAmpCut)           makeLayProjV2();
        else while(  setNextCell()  ) {
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
            if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
            if(nbF<cXMinM[y]) nbF = cXMinM[y];
            if(nbF > nbL) continue;
            UChar_t* bt  = cHPlModM+nbF;
            UChar_t* bt0 = module==0 ? hPlMod[1]+nbF:hPlMod[0]+nbF;
            if(useDriftTime) {
              Double_t  yDDCorr = yDDistCorr[y];
              Double_t  yb      = yBinsPos[y];
              Double_t *xb      = xBinsPos + nbF - shift;
              for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,bt0++,xb++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) {
                *bt |= add;
                UChar_t wt = HMdcBArray::getNSet(bt) + HMdcBArray::getNSet(bt0);
                if( wt >= seg1MinAmpCut ) {
                  HMdcBArray::set(plotBArSc,nb);
                  if(nb<minBinBAr4Sc) minBinBAr4Sc = nb;
                  if(nb>maxBinBAr4Sc) maxBinBAr4Sc = nb;
                }
              }
            } else {
              for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,bt0++) {
                *bt |= add;
                UChar_t wt = HMdcBArray::getNSet(bt) + HMdcBArray::getNSet(bt0);
                if( wt >= seg1MinAmpCut ) {
                  HMdcBArray::set(plotBArSc,nb);
                  if(nb<minBinBAr4Sc) minBinBAr4Sc = nb;
                  if(nb>maxBinBAr4Sc) maxBinBAr4Sc = nb;
                }
              }
            }
          }
        }
      } 
    }
  }
  maxBinBAr4Sc /= 32;
  minBinBAr4Sc /= 32;
}

void HMdcLookUpTbSec::makeModPlot(Int_t mod) {
  module = mod;
  UChar_t minAm = minAmp[module];
  if(minAm<2) return;
  cFMod = &((*this)[module]);
  if( !cFMod ) return;
  cHPlModM = hPlMod[module];
  cXMinM   = xMin[module];
  cXMaxM   = xMax[module];
  UChar_t* cPlotBAr = plotBArM[module];
  UInt_t&  minBin   = minBinBAr4M[module];
  UInt_t&  maxBin   = maxBinBAr4M[module];
  maxBin = 0;
  minBin = size;
  Int_t nFiredLay = 0;
  for(Int_t indLine=0; indLine<6; indLine++) {
    layer = layerOrder[indLine];
    if( !setLayerVar() ) continue;
    nFiredLay++;
    if(maxAmp[module]-nFiredLay+1>=minAm) {  // determination min(max)Bin[y]
      if(nFiredLay<minAm) makeLayProjV1();  // filling pr.plot
      else while( setNextCell() ) {  // ...+ amp.checking
        // filling, min, max and bits seting  
        UInt_t y    = pLUTCell->getYBinMin();
        UInt_t nLns = pLUTCell->getNLines();
        for(UInt_t ln=0; ln<nLns; ln++,y++) {
          UInt_t shift = y * nBinX;
          UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
          UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
          if(nbF<cXMinM[y]) cXMinM[y] = nbF;
          if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
          UChar_t* bt = cHPlModM+nbF;
          if(useDriftTime) {
            Double_t  yDDCorr = yDDistCorr[y];
            Double_t  yb      = yBinsPos[y];
            Double_t *xb      = xBinsPos + nbF - shift;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,xb++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) {
              *bt |= add;
              if(HMdcBArray::getNSet(bt) >= minAm) {
                HMdcBArray::set(cPlotBAr,nb);
                if(nb<minBin) minBin = nb;
                if(nb>maxBin) maxBin = nb;
              }
            }
          } else {
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++) {
              *bt |= add;
              if(HMdcBArray::getNSet(bt) >= minAm) {
                HMdcBArray::set(cPlotBAr,nb);
                if(nb<minBin) minBin = nb;
                if(nb>maxBin) maxBin = nb;
              }
            }
          }
        }
      }
    } else {                         // filling in minBin[y]-maxBin[y] only
      if(nFiredLay<minAm) makeLayProjV2();  // filling pr.plot
      else  while( setNextCell() ) {     // ...+ amp.checking
        UInt_t y    = pLUTCell->getYBinMin();
        UInt_t nLns = pLUTCell->getNLines();
        for(UInt_t ln=0; ln<nLns; ln++,y++) {
          UInt_t shift = y * nBinX;
          UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
          UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
          if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
          if(nbF<cXMinM[y]) nbF = cXMinM[y];
          if(nbF > nbL) continue;
          UChar_t* bt = cHPlModM+nbF;
          if(useDriftTime) {
            Double_t  yDDCorr = yDDistCorr[y];
            Double_t  yb      = yBinsPos[y];
            Double_t *xb      = xBinsPos + nbF - shift;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,xb++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) {
              *bt |= add;
              if(HMdcBArray::getNSet(bt) >= minAm) {
                HMdcBArray::set(cPlotBAr,nb);
                if(nb<minBin) minBin = nb;
                if(nb>maxBin) maxBin = nb;
              }
            }
          } else {
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++) {
              *bt |= add;
              if(HMdcBArray::getNSet(bt) >= minAm) {
                HMdcBArray::set(cPlotBAr,nb);
                if(nb<minBin) minBin = nb;
                if(nb>maxBin) maxBin = nb;
              }
            }
          }
        }
      }
    }
  }
  maxBin /= 32;
  minBin /= 32;
}

void HMdcLookUpTbSec::makeLayProjV1(void) {
  // plot filling and filled region determination
  while( setNextCell() ) {
    UInt_t y     = pLUTCell->getYBinMin();
    UInt_t shift = y * nBinX;
    UInt_t nLns  = pLUTCell->getNLines();
    for(UInt_t ln=0; ln<nLns; ln++,y++,shift+=nBinX) {
      UInt_t nbL = pLUTCell->getXBinMax(ln)+shift;
      UInt_t nbF = pLUTCell->getXBinMin(ln)+shift;
      
      UChar_t* bt = cHPlModM+nbF;
      if(useDriftTime) {
        Double_t  yDDCorr = yDDistCorr[y];
        Double_t  yb      = yBinsPos[y];
        Double_t *xb      = xBinsPos + nbF - shift;
        for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,xb++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) {
          *bt |= add;
          if(nb<cXMinM[y]) cXMinM[y] = nb;
          if(nb>cXMaxM[y]) cXMaxM[y] = nb;
        }
      } else {
        if(nbF<cXMinM[y]) cXMinM[y] = nbF;
        if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
        UChar_t* hPlModE = cHPlModM+nbL;
        for(; bt<=hPlModE; bt++) *bt |= add;
      }
    }
  }
}

void HMdcLookUpTbSec::makeLayProjV0(void) {
  // plot filling only (for TH2C)
  while( setNextCell() ) {
    UInt_t y     = pLUTCell->getYBinMin();
    UInt_t shift = y * nBinX;
    UInt_t nLns  = pLUTCell->getNLines();
    for(UInt_t ln=0; ln<nLns; ln++,y++,shift+=nBinX) {
      UInt_t nbL = pLUTCell->getXBinMax(ln)+shift;
      UInt_t nbF = pLUTCell->getXBinMin(ln)+shift;
      
      UChar_t* bt = cHPlModM+nbF;
      if(useDriftTime) {
        Double_t  yDDCorr = yDDistCorr[y];
        Double_t  yb      = yBinsPos[y];
        Double_t *xb      = xBinsPos + nbF - shift;
        for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,xb++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) {
          *bt |= add;
        }
      } else {
        UChar_t* hPlModE = cHPlModM+nbL;
        for(; bt<=hPlModE; bt++) *bt |= add;
      }
    }
  }
}

void HMdcLookUpTbSec::makeLayProjV1b(void) {
  // plot filling and filled region determination in region determined
  // in previous mdc
  while( setNextCell() ) {
    UInt_t y    = pLUTCell->getYBinMin();
    UInt_t nLns = pLUTCell->getNLines();
    for(UInt_t ln=0; ln<nLns; ln++,y++) {
      UInt_t shift = y * nBinX;
      UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
      UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
      if(nbL>pXMaxM[y]) nbL = pXMaxM[y];
      if(nbF<pXMinM[y]) nbF = pXMinM[y];
      if(nbF>nbL) continue;
      if(nbF<cXMinM[y]) cXMinM[y] = nbF;
      if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
      UChar_t* bt = cHPlModM+nbF;
      if(useDriftTime) {
        Double_t  yDDCorr = yDDistCorr[y];
        Double_t  yb      = yBinsPos[y];
        Double_t *xb      = xBinsPos + nbF - shift;
        Double_t *xl      = xBinsPos + nbL - shift;
        for(; xb<=xl; xb++,bt++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) *bt |= add;
      } else {
        UChar_t* hPlModE = cHPlModM+nbL;
        for(; bt<=hPlModE; bt++) *bt |= add;
      }
    }
  }
}

void HMdcLookUpTbSec::makeLayProjV2(void) {
  // plot filling in filled regions only
  while( setNextCell() ) {
    UInt_t y    = pLUTCell->getYBinMin();
    UInt_t nLns = pLUTCell->getNLines();
    for(UInt_t ln=0; ln<nLns; ln++,y++) {
      UInt_t shift = y * nBinX;
      UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
      UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
      if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
      if(nbF<cXMinM[y]) nbF = cXMinM[y];
      if(nbF > nbL) continue;
      UChar_t* bt = cHPlModM+nbF;
      if(useDriftTime) {
        Double_t  yDDCorr = yDDistCorr[y];
        Double_t  yb      = yBinsPos[y];
        Double_t *xb      = xBinsPos + nbF - shift;
        Double_t *xl      = xBinsPos + nbL - shift;
        for(; xb<=xl; xb++,bt++) if(pLUTLayer->drTmTest2(*xb,yb,yDDCorr)) *bt |= add;
      } else {
        UChar_t* hPlModE = cHPlModM+nbL;
        for(; bt<=hPlModE; bt++) *bt |= add;
      }
    }
  }
}

Int_t HMdcLookUpTbSec::findClusters(Int_t *imax) {
  if(nModules == 0) return 0;
  nClusters    = 0;
  //isCoilOff - !!!??? ---------------------------------------
  nMods        = 0;
  noFiredCells = kTRUE;
  for(Int_t mod=0; mod<4; mod++) {
    if(mod < maxNModules) {
      maxAmp[mod] = (*pListCells)[mod].getNLayers();
      minAmp[mod] = imax[mod];
      if(minAmp[mod]>0) nMods++;
      if(maxAmp[mod]>0) noFiredCells = kFALSE;
    } else {
      maxAmp[mod] = 0;
      minAmp[mod] = 0;
    }
  }
  if( noFiredCells ) return 0;
  if(typeClFinder==1) {
    // chamber clust. finding
    for(Int_t m=0; m<4; m++) if(minAmp[m]>0) findClusInMod(m);
  } else {
    // combined clust. finding
    nModSeg[0]=nModSeg[1]=0;
    for(Int_t m=0;m<4;m++) if(minAmp[m]>0) nModSeg[m/2] |= m%2+1;
    if(nModSeg[0]>0 && nModSeg[1]>0) findClusInSec();
    else {
      if(nModSeg[0]==3) {
        if(isCoilOff)                              findClusInSeg(0);
        else if(HMdcTrackDSet::useSegAmpCutSeg1()) findClusInSeg(0);
        else                                       findClusInSeg1();
      } else if(nModSeg[0]>0)                      findClusInMod(nModSeg[0]-1);
      if(nModSeg[1]==3)                            findClusInSeg(1);
      else if(nModSeg[1]>0)                        findClusInMod(nModSeg[1]+1);
    }
  }
  return nClusters;
}

void HMdcLookUpTbSec::initCluster(Int_t nBin) {
  clus = &cClusArr[*cNClusArr];
  clus->init(sector,segment,xFirstBin,yFirstBin,xStep,yStep);
          // segment=0-inner segment, segment=-1-sector track
  Int_t ny      = nBin/nBinX;
  nLMinCl       = nLMaxCl    = ny;
  xMinCl[ny]    = xMaxCl[ny] = nBin%nBinX;
  isClstrInited = kTRUE;
}

void HMdcLookUpTbSec::reinitCluster(Int_t nBin) {
  // Use it if list of wires empty yet!
  clus->clearBinStat();
  Int_t ny   = nBin/nBinX;
  nLMinCl    = nLMaxCl    = ny;
  xMinCl[ny] = xMaxCl[ny] = nBin%nBinX;
}

void HMdcLookUpTbSec::initCluster(Int_t nBin,UChar_t amp) {
  clus = &cClusArr[*cNClusArr];
  clus->init(sector,segment,xFirstBin,yFirstBin,xStep,yStep);
          // segment=0-inner segment, segment=-1-sector track
  Int_t ny   = nBin/nBinX;
  nLMinCl    = nLMaxCl    = ny;
  xMinCl[ny] = xMaxCl[ny] = nBin%nBinX;
  isClstrInited = kTRUE;
  addBinInCluster(nBin,amp);
}

void HMdcLookUpTbSec::reinitCluster(Int_t nBin,UChar_t amp) {
  // Use it if list of wires empty yet!
  clus->clearBinStat();
  Int_t ny   = nBin/nBinX;
  nLMinCl    = nLMaxCl    = ny;
  xMinCl[ny] = xMaxCl[ny] = nBin%nBinX;
  addBinInCluster(nBin,amp);
}

void HMdcLookUpTbSec::addBinInCluster(Int_t nBin,UChar_t wt) {
  Int_t nx = nBin%nBinX;
  Int_t ny = nBin/nBinX;
  clus->addBin(nx,ny,wt);
  // ny-nLMaxCl and nLMinCl-ny can't be >1 !
  if(ny<nLMinCl) {
    nLMinCl = ny;
    xMinCl[ny] = xMaxCl[ny] = nx;
  } else if(ny>nLMaxCl) {
    nLMaxCl = ny;
    xMinCl[ny] = xMaxCl[ny] = nx;
  }
  else if(nx<xMinCl[ny]) xMinCl[ny]=nx;
  else if(nx>xMaxCl[ny]) xMaxCl[ny]=nx;
}

void HMdcLookUpTbSec::initClusterT2(Int_t nBin,UChar_t amp) {
  initCluster(nBin);
  addBinInClusterT2(nBin,amp);
}

void HMdcLookUpTbSec::reinitClusterT2(Int_t nBin,UChar_t amp) {
  reinitCluster(nBin);
  addBinInClusterT2(nBin,amp);
}

void HMdcLookUpTbSec::addBinInClusterT2(Int_t nBin,UChar_t wt) {
  // The same as "addBinInCluster" plus clusters chamber clusters setting
  Int_t nx = nBin%nBinX;
  Int_t ny = nBin/nBinX;
  clus->addBin(nx,ny,wt);
  // ny-nLMaxCl and nLMinCl-ny can't be >1 !
  if(ny<nLMinCl) {
    nLMinCl = ny;
    xMinCl[ny] = xMaxCl[ny] = nx;
  } else if(ny>nLMaxCl) {
    nLMaxCl = ny;
    xMinCl[ny] = xMaxCl[ny] = nx;
  }
  else if(nx<xMinCl[ny]) xMinCl[ny]=nx;
  else if(nx>xMaxCl[ny]) xMaxCl[ny]=nx;
  
  if(clus->getMod1Clus()==0 && clusIndM1[nBin]>=0)
      clus->setMod1ClusSkipMerg(&clusArrM1[clusIndM1[nBin]]);
  if(clus->getMod2Clus()==0 && clusIndM2[nBin]>=0)
      clus->setMod2ClusSkipMerg(&clusArrM2[clusIndM2[nBin]]);
}

Int_t HMdcLookUpTbSec::getClusterSlot(Int_t seg, HMdcList12GroupCells& list) {
  locClus[1]=seg;
  Int_t index;
  fClus = (HMdcClus*)fClusCat->getNewSlot(locClus,&index);
  if(!fClus) {
    Warning("getClusterSlot","Sec.%i Segment %i No slot HMdcClus available",sector+1,seg+1);
    isSlotAv[seg] = kFALSE;
    return -1;
  }
  if(isGeant) fClus = (HMdcClus*)(new(fClus) HMdcClusSim(list));
  else        fClus = new(fClus) HMdcClus(list);
  fClus->setSecSegInd(sector,seg,index);
  return index;
}

Bool_t HMdcLookUpTbSec::fillSecCluster(void) {
  clus->calcXY();
  if(minAmp[0]>0) fillModWiresList(0,clus->getLCells1());
  if(minAmp[1]>0) fillModWiresList(1,clus->getLCells1());
  if(minAmp[2]>0) fillModWiresList(2,clus->getLCells2());
  if(minAmp[3]>0) fillModWiresList(3,clus->getLCells2());
  return increaseClusterNum();
}

Bool_t HMdcLookUpTbSec::fillSegCluster(void) {
  clus->calcXY();
  fillModWiresList(cSeg*2,  clus->getLCells1());
  fillModWiresList(cSeg*2+1,clus->getLCells1());
  return increaseClusterNum();
}

Bool_t HMdcLookUpTbSec::fillModCluster(Int_t mod) {
  clus->calcXY();
  fillModWiresList(mod,clus->getLCells1());
  return increaseClusterNum();
}

void HMdcLookUpTbSec::fillModWiresList(Int_t mod, HMdcList12GroupCells& list) {
  module = mod;
  cFMod = &((*this)[module]);
  if( cFMod == 0 ) return;
  Int_t layAdd = (module%2)*6;
  for(layer=0; layer<6; layer++) {
    if( !setLayerVar() ) continue;
    Int_t clLay = layAdd+layer;
    while( setNextCell() ) {
//?W      if(hitsDel[iLayer][i]<0) continue;
      Short_t yBinMax = pLUTCell->getYBinMax();
      if( nLMinCl > yBinMax ) continue;
      Short_t yBinMin=pLUTCell->getYBinMin();
      if( nLMaxCl < yBinMin ) break;    //        Hits are sorted !!!
      Short_t lMax = (yBinMax < nLMaxCl) ? yBinMax : nLMaxCl;
      Short_t lMin = (yBinMin > nLMinCl) ? yBinMin : nLMinCl;
      Bool_t   nextCell   = kFALSE;
      for (Short_t nl=lMin; nl<=lMax; nl++) {
        if( pLUTCell->getXBinMin(nl-yBinMin) > xMaxCl[nl] ||
            pLUTCell->getXBinMax(nl-yBinMin) < xMinCl[nl] ) continue;

        Double_t yb  = yBinsPos[nl];
        Int_t    xMi = TMath::Max(pLUTCell->getXBinMin(nl-yBinMin), xMinCl[nl]);
        Int_t    xMa = TMath::Min(pLUTCell->getXBinMax(nl-yBinMin), xMaxCl[nl]);
        if(useDriftTime) {
          Double_t yDDCorr = yDDistCorr[nl];
          for(Int_t x=xMi;x<=xMa;x++) if(pLUTLayer->drTmTest2(xBinsPos[x],yb,yDDCorr)) {
            list.setTime(clLay,cell,pLayLCells->getTime(cell));
            nextCell = kTRUE;
            break;
          }
        } else {
          for(Int_t x=xMi;x<=xMa;x++) {
            list.setTime(clLay,cell,pLayLCells->getTime(cell));
            nextCell = kTRUE;
            break;
          }
        }
        if(nextCell) break;
      }
    }
  }
}

void HMdcLookUpTbSec::findClusInSeg(Int_t seg){
  cMod1      = seg*2;
  cMod2      = cMod1+1;
  cSeg       = seg;
  if(maxAmp[cMod1]<minAmp[cMod1] || maxAmp[cMod2]<minAmp[cMod2]) return;
  if(minAmp[cMod1]+minAmp[cMod2] < 3) return;
  
  if(seg==0 && HMdcTrackDSet::useSegAmpCutSeg1()) makeS1PlotAmpCut();
  else                                            makeSPlot();
  setCurrentArraySec();
  nClsArr  = 0;
  cPlModF  = hPlMod[cMod1];
  cPlModS  = hPlMod[cMod2];
  cPlotBAr = plotBArSc;
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg1();
  
  UInt_t* plotBAr4b = (UInt_t*)cPlotBAr;
  //---Cluster finding-------------------------------------
  for(UInt_t n4=maxBinBAr4Sc; n4>=minBinBAr4Sc; n4--) {
    if(plotBAr4b[n4]==0) continue;
    UChar_t *b1    = cPlotBAr+n4*4;
    UChar_t *b2    = b1+3;
    Int_t    nBin4 = n4*32;
    Int_t    nLBin = 33;
    if(useFloatLevel) while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                            calcClusterInSegFloatLevel(nBin4+nLBin));
    else              while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                            calcClusterInSegFixedLevel(nBin4+nLBin));
    if(*cNClusArr >= clusArrSize) break;
  }

  if(nClsArr>0) {
    if(nClsArr>1) mergeClusInSeg();
    calcClParam();
    fillClusCat(-2,seg,0);
  }
  if(seg==0 && HMdcTrackDSet::useSegAmpCutSeg1()) clearPrMod();
  else for(Int_t mod=seg*2;mod<(seg+1)*2;mod++) if(minAmp[mod]>0) clearPrMod(mod);
}

Bool_t HMdcLookUpTbSec::calcClusterInSegFixedLevel(Int_t nBin) {
  initCluster(nBin,HMdcBArray::getNSet(cPlModF[nBin])+ HMdcBArray::getNSet(cPlModS[nBin]));
  stack->init();
  do {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if(HMdcBArray::testAndUnset(cPlotBAr,nb)) {
        stack->push(nb);
        addBinInCluster(nb,HMdcBArray::getNSet(cPlModF[nb])+
                           HMdcBArray::getNSet(cPlModS[nb]));
      }
    }
  } while ((nBin=stack->pop()) >= 0);
  if( fillSegCluster() ) return kTRUE; // Filling of cluster
  return kFALSE;
}

Bool_t HMdcLookUpTbSec::calcClusterInSegFloatLevel(Int_t nBin) {
  UChar_t amp = HMdcBArray::getNSet(cPlModF[nBin])+HMdcBArray::getNSet(cPlModS[nBin]);
  initCluster(nBin,amp);
  stacksArr->init(12);
  while (kTRUE) {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if( !HMdcBArray::testAndUnset(cPlotBAr,nb) ) continue;
      UChar_t ampN = HMdcBArray::getNSet(cPlModF[nb])+HMdcBArray::getNSet(cPlModS[nb]);
      stacksArr->push(nb,ampN);
      if(ampN  > amp) {
        // Increasing amplitude:
        if(nTs<7) stacksArr->push(nBin,amp);
        amp = ampN;
        if(isClstrInited) reinitCluster(nb,amp);
        else              initCluster(nb,amp);
        break;
      } else if(ampN==amp && isClstrInited) addBinInCluster(nb,amp);
    }
    UChar_t ampP = stacksArr->pop(nBin);
    if(ampP == amp) continue;
    //-End of cluster region. Filling of cluster:-------------------------
    if(isClstrInited && !fillSegCluster()) return kFALSE;
    if(nBin<0) break; // No more bins in stack!
    amp = ampP;
  }
  return kTRUE;
}
    
void HMdcLookUpTbSec::findClusInSeg1(void){
  if(typeClFinder==0) {
    if(maxAmp[0]<minAmp[0] || maxAmp[1]<minAmp[1]) return;
  } else if(maxAmp[0]<minAmp[0] && maxAmp[1]<minAmp[1]) return;
  if(minAmp[0]+minAmp[1]<3) return;
  makeModPlot(0);
  makeModPlot(1);

  minBinBAr4Sc=(minBinBAr4M[0]>=minBinBAr4M[1])?minBinBAr4M[0]:minBinBAr4M[1];
  maxBinBAr4Sc=(maxBinBAr4M[0]<=maxBinBAr4M[1])?maxBinBAr4M[0]:maxBinBAr4M[1];
  UInt_t* plotBAr4bM1=(UInt_t *)(plotBArM[0]);
  UInt_t* plotBAr4bM2=(UInt_t *)(plotBArM[1]);
  UInt_t* plotBArSc4b=(UInt_t *)plotBArSc;
  for(UInt_t n4=minBinBAr4Sc; n4<=maxBinBAr4Sc; n4++)
      plotBArSc4b[n4] = plotBAr4bM1[n4] & plotBAr4bM2[n4];

  setCurrentArrayMod1();
  scanPlotInMod(0);
  if(nClsArrM1>1) mergeClusInMod(0);
  calcClParam();

  setCurrentArrayMod2();
  scanPlotInMod(1);
  if(nClsArrM2>1) mergeClusInMod(1);
  calcClParam();

  setCurrentArraySec();
  scanPlotInSeg1(0,plotBArSc);

  if(nClsArr>1) mergeClusInSeg();
  testClusMod12toSeg();
  if(nClsArrM1>0 && nClsArrM2>0) mergeClusMod1to2();
  if(nClsArr>0) {
    calcClParam();
    fillClusCat(-2,0,0);
  }
  
  if(typeClFinder==2) {
    setCurrentArrayMod1();
    fillClusCat(0,0,2);
    setCurrentArrayMod2();
    fillClusCat(1,0,2);
  }
  
  clearPrMod(0);
  clearPrMod(1);
}

void HMdcLookUpTbSec::scanPlotInMod(Int_t mod) {
  // Scan proj.plot in one module but determination of wires list in segment(!)
  cMod              = mod;
  (*cNClusArr)      = 0;
  cSeg              = mod/2;
  cPlMod            = hPlMod[mod];
  cPlotBAr          = plotBArM[mod];
  UInt_t* plotBAr4b = (UInt_t*) cPlotBAr;
  UInt_t minBin     = minBinBAr4M[mod];
  clusInd           = mod==0 ? clusIndM1:clusIndM2;
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg1();
  for(UInt_t n4=maxBinBAr4M[mod]; n4>=minBin; n4--) {
    if(plotBAr4b[n4]==0) continue;
    UChar_t *b1=cPlotBAr+n4*4;
    UChar_t *b2=b1+3;
    Int_t nBin4=n4*32;
    Int_t nLBin=33;
    if(useFloatLevel) while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                            calcMixedClusterFloatLevel(nBin4+nLBin));
    else              while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                            calcMixedClusterFixedLevel(nBin4+nLBin));
    if((*cNClusArr) >= clusArrSize) break;
  }
}

Bool_t HMdcLookUpTbSec::calcMixedClusterFixedLevel(Int_t nBin) {
  initCluster(nBin,HMdcBArray::getNSet(cPlMod[nBin]));
  clusInd[nBin]=*cNClusArr;
  stack->init();
  do {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if(HMdcBArray::testAndUnset(cPlotBAr,nb)) {
        stack->push(nb);
        addBinInCluster(nb,HMdcBArray::getNSet(cPlMod[nb]));
        clusInd[nb]=*cNClusArr;
      }
    }
  } while ((nBin=stack->pop()) >= 0);
  if(fillSegCluster()) return kTRUE; // Filling of cluster
  return kFALSE;
}

Bool_t HMdcLookUpTbSec::calcMixedClusterFloatLevel(Int_t nBin) {
  UChar_t amp = HMdcBArray::getNSet(cPlMod[nBin]);
  initCluster(nBin,amp);
  clusInd[nBin]=*cNClusArr;
  stacksArr->init(12);
  stack->init();
  if(HMdcBArray::get(plotBArSc,nBin)) stack->push(nBin);
  while (kTRUE) {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if( !HMdcBArray::testAndUnset(cPlotBAr,nb) ) continue;
      UChar_t ampN = HMdcBArray::getNSet(cPlMod[nb]);
      stacksArr->push(nb,ampN);
      if(ampN  > amp) {
        // Increasing amplitude:
        clusInd[nBin] = -1;
        if(nTs<7) stacksArr->push(nBin,amp);
        amp = ampN;
        Int_t bind;
        while((bind=stack->pop()) >= 0) clusInd[bind] = -1;
        if(isClstrInited) reinitCluster(nb,amp);
        else              initCluster(nb,amp);
        clusInd[nb]=*cNClusArr;
        if(HMdcBArray::get(plotBArSc,nb)) stack->push(nb);
        break;
      } else if(ampN==amp && isClstrInited) {
        addBinInCluster(nb,amp);
        clusInd[nb]=*cNClusArr;
        if(HMdcBArray::get(plotBArSc,nb)) stack->push(nb);
      } else clusInd[nb] = -1;
    }
    UChar_t ampP = stacksArr->pop(nBin);
    if(ampP == amp) continue;
    //-End of cluster region. Filling of cluster:-------------------------
    if(isClstrInited && !fillSegCluster()) return kFALSE;
    if(nBin<0) break; // No more bins in stack!
    amp = ampP;
    stack->init();
  }
  return kTRUE;
}
    
void HMdcLookUpTbSec::scanPlotInSeg1(Int_t seg, UChar_t* plotBAr) {
  cMod1      = seg*2;
  cMod2      = cMod1+1;
  cSeg       = seg;
  cPlModF    = hPlMod[cMod1];
  cPlModS    = hPlMod[cMod2];
  cPlotBAr   = plotBAr;
  *cNClusArr = 0;        // number of clusters
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg1();
  
  UInt_t* plotBAr4b = (UInt_t*)cPlotBAr;
  for(UInt_t n4=maxBinBAr4Sc; n4>=minBinBAr4Sc; n4--) {
    if(plotBAr4b[n4]==0) continue;
    UChar_t *b1    = cPlotBAr+n4*4;
    UChar_t *b2    = b1+3;
    Int_t    nBin4 = n4*32;
    Int_t    nLBin = 33;
    if(useFloatLevel) while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                             calcClusterInSeg1FloatLevel(nBin4+nLBin));
    else              while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                             calcClusterInSeg1FixedLevel(nBin4+nLBin));
    if(*cNClusArr >= clusArrSize) break;
  }
  if(useFloatLevel) testSeg1ModClMatching();
}

void HMdcLookUpTbSec::testSeg1ModClMatching() {
  HMdcList12GroupCells listIdent;
  for(Int_t segCl=0; segCl<*cNClusArr; segCl++) {
    HMdcCluster& clus = clusArr[segCl];
    for(Int_t imod=0;imod<2;imod++) {
      if(clus.getModCluster(imod) != 0) continue;  // already setted
      Int_t        nClsArrM = imod == 0 ? nClsArrM1 : nClsArrM2;
      HMdcCluster* clusArrM = imod == 0 ? clusArrM1 : clusArrM2;
      Int_t nLayers         = 0;
      Int_t nWires          = 0;
      Int_t nLayersOp       = 0;
      Int_t nWiresOp        = 0;
      HMdcCluster* modClust = 0;
      for(Int_t cl=0;cl<nClsArrM;cl++) {
        HMdcCluster& pCls=clusArrM[cl];
        if(pCls.getClusMerg() != 0) continue;
        clus.getLCells1().compare(&(pCls.getLCells1()),0,11,&listIdent);
        Int_t nLayersNext   = listIdent.getNLayersMod(imod);
        Int_t nLayersNextOp = listIdent.getNLayersMod(imod^1);
        Int_t nWiresNext    = listIdent.getNDrTimesMod(imod);
        Int_t nWiresNextOp  = listIdent.getNDrTimesMod(imod^1);
        if(nLayersNext==0 || nLayersNext < nLayers) continue;
        if(nLayersNext==nLayers) {
          if(nWiresNext < nWires) continue;
          if(nWiresNext == nWires) {
            if(nLayersNextOp < nLayersOp) continue;
            if(nLayersNextOp == nLayersOp && nWiresNextOp <= nWiresOp) continue;
          }
        }
        modClust  = &pCls;
        nLayers   = nLayersNext;
        nWires    = nWiresNext;
        nLayersOp = nLayersNextOp;
        nWiresOp  = nWiresNextOp;
      }
      if(modClust) clus.setModCluster(imod,modClust);
    }
  }
}

Bool_t HMdcLookUpTbSec::calcClusterInSeg1FixedLevel(Int_t nBin) {
  initClusterT2(nBin,HMdcBArray::getNSet(cPlModF[nBin])+
                     HMdcBArray::getNSet(cPlModS[nBin]));
  stack->init();            // init stack only
  do {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if(HMdcBArray::testAndUnset(cPlotBAr,nb)) {
        stack->push(nb);
        addBinInCluster(nb,HMdcBArray::getNSet(cPlModF[nb])+
                           HMdcBArray::getNSet(cPlModS[nb]));
      }
    }
  } while ((nBin=stack->pop()) >= 0);
  if( fillSegCluster() ) return kTRUE;
  return kFALSE;
}

Bool_t HMdcLookUpTbSec::calcClusterInSeg1FloatLevel(Int_t nBin) {
  UChar_t amp = HMdcBArray::getNSet(cPlModF[nBin])+HMdcBArray::getNSet(cPlModS[nBin]);
  initClusterT2(nBin,amp);
  stacksArr->init(12);
  while (kTRUE) {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if( !HMdcBArray::testAndUnset(cPlotBAr,nb) ) continue;
      UChar_t ampN = HMdcBArray::getNSet(cPlModF[nb])+HMdcBArray::getNSet(cPlModS[nb]);
      stacksArr->push(nb,ampN);
      if(ampN  > amp) {
        // Increasing amplitude:
        if(nTs<7) stacksArr->push(nBin,amp);
        amp = ampN;
        if(isClstrInited) reinitClusterT2(nb,amp);
        else              initClusterT2(nb,amp);
        break;
      } else if(ampN==amp && isClstrInited) addBinInClusterT2(nb,amp);
    }
    UChar_t ampP = stacksArr->pop(nBin);
    if(ampP == amp) continue;
    //-End of cluster region. Filling of cluster:-------------------------
    if(isClstrInited && !fillSegCluster()) return kFALSE;
    if(nBin<0) break; // No more bins in stack!
    amp = ampP;
  }
  return kTRUE;
}
    
Bool_t HMdcLookUpTbSec::increaseClusterNum(void) {
  if(*cNClusArr > 0) pClustersArrs->testCluster(clusArrInd,*cNClusArr);
  (*cNClusArr)++;
  isClstrInited = kFALSE;
  if(*cNClusArr < clusArrSize) return kTRUE;
  *cNClusArr = clusArrSize;
  Warning("increaseClusterNum"," Num.of clusters in sector %i > max\n",sector);
  memset(cPlotBAr,0,sizeBAr);
  return kFALSE;
}

void HMdcLookUpTbSec::findClusInSec(void){
//!  for(Int_t m=0;m<4;m++) if(minAmp[m]>0 && maxAmp[m]<minAmp[m]) return;
  if(minAmp[0]+minAmp[1]+minAmp[2]+minAmp[3] < 3) return;
  makeSPlot();
  setCurrentArraySec();
  nClsArr  = 0;
  cPlotBAr = plotBArSc;
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg1();
  
  UInt_t* plotBAr4b = (UInt_t*) cPlotBAr;
  //---Cluster finding-------------------------------------
  for(UInt_t n4=maxBinBAr4Sc; n4>=minBinBAr4Sc; n4--) {
    if(plotBAr4b[n4]==0) continue;
    UChar_t *b1    = cPlotBAr+n4*4;
    UChar_t *b2    = b1+3;
    Int_t    nBin4 = n4*32;
    Int_t    nLBin = 33;
    if(useFloatLevel) while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                            calcClusterInSecFloatLevel(nBin4+nLBin));
    else              while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                            calcClusterInSecFixedLevel(nBin4+nLBin));
    if(nClsArr >= clusArrSize) break;
  }
  if(nClsArr>0) {
    if(nClsArr>1) mergeClusInSec();
    calcClParam();
    fillClusCat(-nMods,-1,0);
  }
  for(Int_t mod=0;mod<4;mod++) if(minAmp[mod]>0) clearPrMod(mod);
}

Bool_t HMdcLookUpTbSec::calcClusterInSecFixedLevel(Int_t nBin) {
  initCluster(nBin,HMdcBArray::getNSet(hPlMod[0][nBin])+
                   HMdcBArray::getNSet(hPlMod[1][nBin])+
                   HMdcBArray::getNSet(hPlMod[2][nBin])+
                   HMdcBArray::getNSet(hPlMod[3][nBin]));
  stack->init();
  do {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if(HMdcBArray::testAndUnset(cPlotBAr,nb)) {
        stack->push(nb);
        addBinInCluster(nb,HMdcBArray::getNSet(hPlMod[0][nb])+
                           HMdcBArray::getNSet(hPlMod[1][nb])+
                           HMdcBArray::getNSet(hPlMod[2][nb])+
                           HMdcBArray::getNSet(hPlMod[3][nb]));
      }
    }
  } while ((nBin=stack->pop()) >= 0);
  if( fillSecCluster() ) return kTRUE; // Filling of cluster
  return kFALSE;
}

Bool_t HMdcLookUpTbSec::calcClusterInSecFloatLevel(Int_t nBin) {
  UChar_t amp = HMdcBArray::getNSet(hPlMod[0][nBin])+
                HMdcBArray::getNSet(hPlMod[1][nBin])+
                HMdcBArray::getNSet(hPlMod[2][nBin])+
                HMdcBArray::getNSet(hPlMod[3][nBin]);
  initCluster(nBin,amp);
  stacksArr->init(24);
  while (kTRUE) {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if( !HMdcBArray::testAndUnset(cPlotBAr,nb) ) continue;
      UChar_t ampN = HMdcBArray::getNSet(hPlMod[0][nb])+
                     HMdcBArray::getNSet(hPlMod[1][nb])+
                     HMdcBArray::getNSet(hPlMod[2][nb])+
                     HMdcBArray::getNSet(hPlMod[3][nb]);
      stacksArr->push(nb,ampN);
      if(ampN  > amp) {
        // Increasing amplitude:
        if(nTs<7) stacksArr->push(nBin,amp);
        amp = ampN;
        if(isClstrInited) reinitCluster(nb,amp);
        else              initCluster(nb,amp);
        break;
      } else if(ampN==amp && isClstrInited) addBinInCluster(nb,amp);
    }
    UChar_t ampP = stacksArr->pop(nBin);
    if(ampP == amp) continue;
    //-End of cluster region. Filling of cluster:-------------------------
    if(isClstrInited && !fillSecCluster()) return kFALSE;
    if(nBin<0) break; // No more bins in stack!
    amp = ampP;
  }
  return kTRUE;
}


void HMdcLookUpTbSec::mergeClusInMod(Int_t mod) {
  if(fakeSuppFlag>=0) return;
  Int_t nClus = *cNClusArr;
  Int_t fLay  = mod==0 || mod==2 ? 0:6;
  Int_t lLay  = fLay+5;
  while(nClus>1) {
    Bool_t nomerg = kTRUE;
    for(Int_t cl1=0; cl1<(*cNClusArr)-1; cl1++) {
      HMdcCluster& cls1 = cClusArr[cl1];
      if(!cls1.getStatus()) continue;
      HMdcList12GroupCells& listCells1 = cls1.getLCells1();
      for(Int_t cl2=cl1+1; cl2<(*cNClusArr); cl2++) {
        HMdcCluster& cls2 = cClusArr[cl2];
        if(!cls2.getStatus()) continue;
        HMdcList12GroupCells& listCells2 = cls2.getLCells1();
        Float_t dY = cls1.getY()-cls2.getY();
// ???optimizaciya???        if(dY>100.) break;  //????????? biylo zakomentirovano ???
        if(TMath::Abs(dY) > 30.f) continue;                         // 10. mm !???
        if(TMath::Abs(cls1.getX()-cls2.getX()) > 100.f) continue;   // 40. mm !???
        if(listCells1.compare(&listCells2,fLay,lLay)<4) continue;
        cls1.addClus(cls2);
        nomerg = kFALSE;
        nClus--;
      }
    }
    if(nomerg || nClus==1) break;
  }
}

void HMdcLookUpTbSec::mergeClusMod1to2(void) {
  if(fakeSuppFlag>=0) return;
  for(Int_t cl1=0; cl1<nClsArrM1; cl1++) {
    HMdcCluster& cls1=clusArrM1[cl1];
    if(!cls1.getStatus() || cls1.getFlag()>0) continue;
    HMdcList12GroupCells& listCells1 = cls1.getLCells1();
    for(Int_t cl2=0; cl2<nClsArrM2; cl2++) {
      HMdcCluster& cls2=clusArrM2[cl2];
      if(!cls2.getStatus() || cls2.getFlag()>0) continue;
      HMdcList12GroupCells& listCells2=cls2.getLCells1();
      Float_t dY = cls1.getY()-cls2.getY();
// ???optimizaciya???      if(dY>100.) break;  // ????????? biylo zakomentirovano ???
      if(TMath::Abs(dY) > 30.f) continue;                         // 10. mm !???
      if(TMath::Abs(cls1.getX()-cls2.getX()) > 100.f) continue;   // 40. mm !???
      if(listCells1.compare(&listCells2)<4) continue;
//      if(listCells1.compare(&listCells2,0, 5)<4) continue;
//      if(listCells1.compare(&listCells2,6,11)<4) continue;
      if(nClsArr >= clusArrSize) break;
      HMdcCluster& cls = clusArr[nClsArr++];
      cls.init(sector,segment,xFirstBin,yFirstBin,xStep,yStep);
      cls.sumClus(cls1,cls2);
    }
  }
}

void HMdcLookUpTbSec::testClusMod12toSeg(void) {
  // excluding clusters in MOD with <4 non identical wires to segment clusters
  for(Int_t cl=0; cl<nClsArr; cl++) {
    HMdcCluster& cls=clusArr[cl];
    if(!cls.getStatus() || cls.getFlag()>0) continue;
    HMdcList12GroupCells& lCells=cls.getLCells1();
    for(Int_t cl1=0; cl1<nClsArrM1; cl1++) {
      HMdcCluster& cls1=clusArrM1[cl1];
      if(!cls1.getStatus() || cls1.getFlag()>0) continue;
      HMdcList12GroupCells& lM1Cells1=cls1.getLCells1();
      if(TMath::Abs(cls.getY()-cls1.getY()) > 30.f) continue;         // 10. mm !???
      if(TMath::Abs(cls.getX()-cls1.getX()) > 100.f) continue;        // 40. mm !???
      if(lM1Cells1.getNCells()-lCells.nIdentDrTimes(&lM1Cells1) >= 4) continue;
      cls1.setFlag(1);
    }
    for(Int_t cl2=0; cl2<nClsArrM2; cl2++) {
      HMdcCluster& cls2=clusArrM2[cl2];
      if(!cls2.getStatus() || cls2.getFlag()>0) continue;
      HMdcList12GroupCells& lM1Cells2=cls2.getLCells1();
      if(TMath::Abs(cls.getY()-cls2.getY()) > 30.f) continue;         // 10. mm !???
      if(TMath::Abs(cls.getX()-cls2.getX()) > 100.f) continue;        // 40. mm !???
      if(lM1Cells2.getNCells()-lCells.nIdentDrTimes(&lM1Cells2) >= 4) continue;
      cls2.setFlag(1);
    }
  }
}

void HMdcLookUpTbSec::mergeClusInSeg(void) {
  if(fakeSuppFlag>=0) return;
  Int_t nClus=nClsArr;
  while(nClus>1) {
    Bool_t nomerg = kTRUE;
    for(Int_t cl1=0; cl1<nClsArr-1; cl1++) {
      HMdcCluster& cls1=clusArr[cl1];
      if(!cls1.getStatus()) continue;
      HMdcList12GroupCells& listCells1 = cls1.getLCells1();
      for(Int_t cl2=cl1+1; cl2<nClsArr; cl2++) {
        HMdcCluster& cls2=clusArr[cl2];
        if(!cls2.getStatus()) continue;

        if( cls1.isModClusNotTheSame(cls2) ) continue;

        HMdcList12GroupCells& listCells2=cls2.getLCells1();
        Float_t dY = cls1.getY()-cls2.getY();
// ???optimizaciya???        if(dY>100.) break;
        if(TMath::Abs(dY) > 30.f) continue;                         // 10. mm !???
        if(TMath::Abs(cls1.getX()-cls2.getX()) > 100.f) continue;   // 40. mm !???
        Int_t n1=listCells1.compare(&listCells2,0, 5);
        if(n1<3) continue;
        Int_t n2=listCells1.compare(&listCells2,6,11);
        if(n2<3 || n1+n2<7) continue;
//        if(listCells1.compare(&listCells2,0, 5)<4) continue;
//        if(listCells1.compare(&listCells2,6,11)<4) continue;
  if(cls1.getMod1Clus()==0) cls1.setMod1Clus(cls2.getMod1Clus());
  if(cls1.getMod2Clus()==0) cls1.setMod2Clus(cls2.getMod2Clus());  
        cls1.addClus(cls2);
        nomerg=kFALSE;
        nClus--;
      }
    }
    if(nomerg || nClus==1) break;
  }
}

void HMdcLookUpTbSec::mergeClusInSec(void) {
  if(fakeSuppFlag>=0) return;
  Int_t nClus = nClsArr;
  Int_t m1    = minAmp[0];
  Int_t m2    = minAmp[1];
  Int_t m3    = minAmp[2];
  Int_t m4    = minAmp[3];
  while(nClus>1) {
    Bool_t nomerg=kTRUE;
    for(Int_t cl1=0; cl1<nClsArr-1; cl1++) {
      HMdcCluster& cls1=clusArr[cl1];
      if(!cls1.getStatus()) continue;
      HMdcList12GroupCells& listCells1 = cls1.getLCells1();
      HMdcList12GroupCells& listCells2 = cls1.getLCells2();
      for(Int_t cl2=cl1+1; cl2<nClsArr; cl2++) {
        HMdcCluster& cls2=clusArr[cl2];
        if(!cls2.getStatus()) continue;
        Float_t dY = cls1.getY()-cls2.getY();
// ???optimizaciya???        if(dY>100.) break;
        if(TMath::Abs(dY) > 30.f) continue;                          // 10. mm !???
        if(TMath::Abs(cls1.getX()-cls2.getX()) > 100.f) continue;    // 40. mm !???
        HMdcList12GroupCells* listCells1s = &(cls2.getLCells1());
        HMdcList12GroupCells* listCells2s = &(cls2.getLCells2());
        if(m1>0 && listCells1.compare(listCells1s,0, 5)<4) continue;
        if(m2>0 && listCells1.compare(listCells1s,6,11)<4) continue;
        if(m3>0 && listCells2.compare(listCells2s,0, 5)<4) continue;
        if(m4>0 && listCells2.compare(listCells2s,6,11)<4) continue;
        cls1.addClus(cls2);
        nomerg=kFALSE;
        nClus--;
      }
    }
    if(nomerg || nClus==1) break;
  }
}

void HMdcLookUpTbSec::calcClParam(void) {
  for(Int_t nCl=0; nCl<(*cNClusArr); nCl++)
    if(cClusArr[nCl].getStatus()) cClusArr[nCl].calcClusParam();
}

void HMdcLookUpTbSec::fillClusCat(Int_t mod, Int_t segp, Int_t tpClFndr) {
  
  if(mod<0 && segp==0   && fakeSuppFlag>0) removeGhosts(); // ????????????????
  
  Int_t seg = segp>=0 ? segp : 0;
  Int_t m1  = minAmp[seg*2];
  Int_t m2  = minAmp[seg*2+1];
  Int_t m3  = 0;
  Int_t m4  = 0;
  if(mod>=0) {
    if(mod==seg*2) m2=0;
    else if(mod==seg*2+1) m1=0;
  } else if(segp<0) {
    m3 = minAmp[2];
    m4 = minAmp[3];
  }
  if( HMdcTrackDSet::useFloatLevelSeg1() ) tpClFndr |= 128;
  if( HMdcTrackDSet::useSegAmpCutSeg1() )  tpClFndr |= 256;
  // Filling containers:
  Float_t tarX,tarY,tarZ, tarErrX,tarErrY,tarErrZ;
  if(vertexPoint>=0) {
    tarX    = targetPnts[vertexPoint].getX();
    tarY    = targetPnts[vertexPoint].getY();
    tarZ    = targetPnts[vertexPoint].getZ();
    tarErrX = 0.;
    tarErrY = 0.;
    tarErrZ = vertZErr;
  } else {
    tarX    = target[0];
    tarY    = target[1];
    tarZ    = target[2];
    tarErrX = eTarg[0];
    tarErrY = eTarg[1];
    tarErrZ = eTarg[2];
  }
  for(Int_t cl=0; cl<(*cNClusArr); cl++) {
    HMdcCluster& cls = cClusArr[cl];
    if(!cls.getStatus() || cls.getFlag()>0) continue;
    if(fakeSuppFlag==1 && cls.getFakeFlag()>0) continue;
    Int_t index1 = getClusterSlot(seg,cls.getLCells1());
    if(!fClus) return;
    nClusters++;
    fClus->setMod(mod);
    fClus->setTypeClFinder(tpClFndr); // !!!
    fClus->setMinCl(m1,m2);
    fClus->setPrPlane(prPlane.A(),prPlane.B(),prPlane.D());
    fClus->setTarget(tarX,tarErrX,tarY,tarErrY,tarZ,tarErrZ);
    cls.fillClus(fClus,0,trackListFlag);
    if(segp<0) {
      HMdcClus* fClus0 = fClus;
      Int_t index2 = getClusterSlot(1,cls.getLCells2());
      if(!fClus) return;
      fClus->setMod(mod);
      fClus->setTypeClFinder(tpClFndr);
      fClus->setMinCl(m3,m4);
      fClus->setPrPlane(prPlane.A(),prPlane.B(),prPlane.D());
      fClus->setTarget(tarX,tarErrX,tarY,tarErrY,tarZ,tarErrZ);
      cls.fillClus(fClus,1,trackListFlag);
      fClus->setIndexParent(index1);
      fClus0->setIndexChilds(index2,index2);
    }
  }
}

void HMdcLookUpTbSec::findClusInMod(Int_t mod){
  if(maxAmp[mod]<minAmp[mod]) return;
  if(minAmp[mod]<3) return;
  makeModPlot(mod);
  setCurrentArraySec();
  cMod              = mod;
  nClsArr           = 0;
  cPlMod            = hPlMod[mod];
  cPlotBAr          = plotBArM[mod];
  UInt_t* plotBAr4b = (UInt_t*) cPlotBAr;
  UInt_t minBin     = minBinBAr4M[mod];
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg1();
  
  for(UInt_t n4=maxBinBAr4M[mod]; n4>=minBin; n4--) {
    if(plotBAr4b[n4]==0) continue;
    UChar_t *b1    = cPlotBAr+n4*4;
    UChar_t *b2    = b1+3;
    Int_t    nBin4 = n4*32;
    Int_t    nLBin = 33;
    if(useFloatLevel) while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                             calcClusterInModFloatLevel(nBin4+nLBin)); 
    else              while((nLBin=HMdcBArray::prevAndUnset(b1,b2,nLBin))>=0 &&
                             calcClusterInModFixedLevel(nBin4+nLBin));
    if(nClsArr >= clusArrSize) break;
  }
  if(nClsArr>0) {
    if(nClsArr>1) mergeClusInMod(mod);
    calcClParam();
    fillClusCat(mod,mod/2,(typeClFinder==1) ? 1:0);
  }
  clearPrMod(mod);
}

Bool_t   HMdcLookUpTbSec::calcClusterInModFixedLevel(Int_t nBin) {
  initCluster(nBin,HMdcBArray::getNSet(cPlMod[nBin]));
  stack->init();
  do {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if(HMdcBArray::testAndUnset(cPlotBAr,nb)) {
        stack->push(nb);
        addBinInCluster(nb,HMdcBArray::getNSet(cPlMod[nb]));
      }
    }
  } while ((nBin=stack->pop()) >= 0);
  if( fillModCluster(cMod) ) return kTRUE; // Filling of cluster
  return kFALSE;
}

Bool_t   HMdcLookUpTbSec::calcClusterInModFloatLevel(Int_t nBin) {
  UChar_t amp = HMdcBArray::getNSet(cPlMod[nBin]);
  initCluster(nBin,amp);
  stacksArr->init(6);
  while (kTRUE) {
    for(Int_t nTs=0; nTs<8; nTs++) {
      Int_t nb = nBin+neighbBins[nTs];
      if( !HMdcBArray::testAndUnset(cPlotBAr,nb) ) continue;
      UChar_t ampN = HMdcBArray::getNSet(cPlMod[nb]);
      stacksArr->push(nb,ampN);
      if(ampN  > amp) {
        // Increasing amplitude:
        if(nTs<7) stacksArr->push(nBin,amp);
        amp = ampN;
        if(isClstrInited) reinitCluster(nb,amp);
        else              initCluster(nb,amp);
        break;
      } else if(ampN==amp && isClstrInited) addBinInCluster(nb,amp);
    }
    UChar_t ampP = stacksArr->pop(nBin);
    if(ampP == amp) continue;
    //-End of cluster region. Filling of cluster:-------------------------
    if(isClstrInited && !fillModCluster(cMod)) return kFALSE;
    if(nBin<0) break; // No more bins in stack!
    amp = ampP;
  }
  return kTRUE;
}

Int_t HMdcLookUpTbSec::getMaxClus(Int_t m) const {
  return (m>=0&&m<4) ? minAmp[m] : minAmp[0]+minAmp[1]+minAmp[2]+minAmp[3];
}

Bool_t HMdcLookUpTbSec::calcLookUpTb(Bool_t quiet) {
  HMdcSizesCells *fSizesCells = HMdcSizesCells::getExObject();
  if(fSizesCells == 0) return kFALSE;
  Int_t nTargets = fSizesCells->getNumOfTargets();
  HMdcSizesCellsSec& fSCSec = (*fSizesCells)[sector];
  HMdcTrap cellSize,cellSPr;
  HMdcTrapPlane cellPr,cellCont[2];
  for(Int_t mod=0;mod<4;mod++) if((*array)[mod]) for(Int_t lay=0;lay<6;lay++) {
    HMdcSizesCellsLayer& fSCLayer = fSCSec[mod][lay];
    Int_t nCells=fSCLayer.getNCells();
    if(nCells<1) continue;
    HMdcLookUpTbLayer& fLUpTbLayer=(*this)[mod][lay];
    Double_t dDist    = 0.;  // It is better when dDist increase with cell num.
    Double_t dDist1T  = 0.;  // It is better when dDist increase with cell num.
    Double_t dDistF   = -1.; // For print only
    Double_t dDist1TF = -1.; // For print only
    for(Int_t cell=0; cell<nCells; cell++) {
      HMdcLookUpTbCell& fLUpTbCell=fLUpTbLayer[cell];
      if( !&fLUpTbCell ) return kFALSE;
      fLUpTbCell.clear();
      HMdcSizesCellsCell& fSizesCellsCell = fSCLayer[cell];
      if( !&fSizesCellsCell || !fSizesCellsCell.getStatus()) continue;
      if(!fSizesCells->getCellVol(sector,mod,lay,cell,cellSize)) return kFALSE;      
      for(Int_t t=0; t<2; t++) {
        HGeomVector& targ = targVc[t];
        for(Int_t p=0; p<8; p++)
            prPlane.calcIntersection(targ,cellSize[p]-targ,cellSPr[p]);
        cellSPr.setDbPointNum(cellSize.getDbPointNum());
        if(cellSPr.getXYContour(cellCont[t]) < 3) return kFALSE;
      }
      if(cellPr.twoContoursSum(cellCont[0],cellCont[1]) < 3) return kFALSE;
      fillLookUpTb(mod,lay,cellPr,fLUpTbCell);
      
      if(useDriftTime || doVertexFn) {
        HGeomVector cr0;
        Double_t alphaMean = 0.;
        for(Int_t ip=0;ip<2;ip++) {  // Ends of wire
          const HGeomVector& wr = *(fSizesCellsCell.getWirePoint(ip));
          prPlane.calcIntersection(targVc[2],wr-targVc[2],cr0); //
          for(Int_t t=0; t<2; t++) { // First and last target points
            Double_t dist,alpha;
            fSCLayer.getImpact(targVc[t],cr0,cell, alpha,dist);
            alphaMean += alpha;
            if(dist>dDist) dDist = dist;
          }
          // For vertex finder:
          for(Int_t t=0; t<nTargets ; t += nTargets==1 ? 1:nTargets-1) {
            HGeomVector tar = *(fSCSec.getTarget(t));
            prPlane.calcIntersection(tar,wr-tar,cr0); // Cross with proj.plane
            for(Int_t sign=-1;sign<=1;sign+=2) {
              HGeomVector tarP(tar.getX(),tar.getY(),tar.getZ()+sign*vertZErr);
              for(Int_t ib=0;ib<4;ib++) {
                Double_t signX = ib==0 || ib==1 ? -1. : +1.;
                Double_t signY = ib==0 || ib==3 ? -1. : +1.;
                Double_t x = cr0.getX()+signX*xStep/2.;
                Double_t y = cr0.getY()+signY*yStep/2.;
                Double_t z = prPlane.getZOnPlane(x,y);
                HGeomVector binP(x,y,z);
                Double_t dist = fSCLayer.getDist(tarP,binP,cell);
                if(dist>dDist1T) dDist1T = dist;
              }
            }
          }
        }
        alphaMean /= 4.;
        
        fLUpTbCell.setAlphaMean(alphaMean);
        fLUpTbCell.setDistCutFT(  (dDist   + constUncert)*dDistCut*dDCutCorr[mod][lay]);
        fLUpTbCell.setDistCut1T(  (dDist1T + constUncert)*dDistCut*dDCutCorr[mod][lay]);
        fLUpTbCell.setDistCut1TVF((dDist1T + constUncert)*dDistCutVF); // *dDCutCorr[mod][lay] ???

        if(dDistF<0.)   dDistF   = dDist;
        if(dDist1TF<0.) dDist1TF = dDist1T;
      }
    }
    if(useDriftTime && !quiet) {
      printf(" S.%i M.%i L.%i : Proj.Uncer.= %.2f - %.2f  Cut = %.2f |",
             sector+1,mod+1,lay+1,dDistF+constUncert,dDist+constUncert,dDistCut*dDCutCorr[mod][lay]);
      printf(" 1Tar.Uncer.= %.3f - %.3f [mm]\n",dDist1TF+constUncert,dDist1T+constUncert);
    }
  }
  return kTRUE;
}

Bool_t HMdcLookUpTbSec::fillLookUpTb(Int_t m, Int_t l,HMdcTrapPlane& cellPr,
                                       HMdcLookUpTbCell& fCell) {
  // MDC cell lookup table (fCell) filling.
  // m - module; l - layer;
  Int_t yBinMin = yBinNumInBounds(cellPr.getYMin());
  Int_t yBinMax = yBinNumInBounds(cellPr.getYMax());
  fCell.init(yBinMin,yBinMax);
  for(Int_t ny=yBinMin; ny<=yBinMax; ny++) {
    Double_t x1,x2;
    Double_t y1 = ny*yStep + yLow;
    if(!cellPr.getXminXmax(y1,y1+yStep,x1,x2)) return kFALSE;
    if(!fCell.addLine(xBinNumInBounds(x1),xBinNumInBounds(x2))) return kFALSE;
  }
  return kTRUE;
}

void HMdcLookUpTbSec::calcTarget(Double_t* targLenInc) {
  targVc[0]  = pSCellSec->getTargetFirstPoint();
  targVc[1]  = pSCellSec->getTargetLastPoint();
  targVc[0].setZ(targVc[0].getZ() - targLenInc[0]);
  targVc[1].setZ(targVc[1].getZ() + targLenInc[1]);
  targVc[2]  = targVc[0]+targVc[1];
  targVc[2] *= 0.5;
  for(Int_t i=0;i<3;i++) {
    target[i] = targVc[2](i);
    eTarg[i]  = TMath::Abs(targVc[0](i)-targVc[1](i))*0.5;
  }
  
  HGeomVector targRotLay;
  Double_t cnstMinDist[6];
  for(Int_t m=0;m<4;m++) if((*array)[m]) for(Int_t l=0;l<6;l++) {
    HMdcSizesCellsLayer& fSCellLay = (*pSCellSec)[m][l];
    
    Int_t nLayParts = fSCellLay.getLayerNParts();
    for(Int_t ip=0;ip<nLayParts;ip++) {
      targRotLay = fSCellLay.getRotLayP1SysRSec()->transTo(targVc[2]);
      const Double_t* trns = fSCellLay.getRLP1SysRSec();
      if(ip==1) {
        targRotLay = fSCellLay.getRotLayP2SysRSec()->transTo(targVc[2]);
        trns       = fSCellLay.getRLP2SysRSec();
      } 
      Double_t c1 = prPlane.D()-trns[11];
      cnstMinDist[0] = trns[1] - prPlane.A()*trns[7];                    // C1x
      cnstMinDist[1] = trns[4] - prPlane.B()*trns[7];                    // C1y
      cnstMinDist[2] = trns[7]*c1-trns[1]*trns[9]-trns[4]*trns[10];      // C1
      //!!! y0 = C1x*x2 + C1y*y2 + C1;
      cnstMinDist[3] = trns[2] - prPlane.A()*trns[8];                    // C2x
      cnstMinDist[4] = trns[5] - prPlane.B()*trns[8];                    // C2y
      cnstMinDist[5] = trns[8]*c1-trns[2]*trns[9]-trns[5]*trns[10];      // C2
      //!!! z0 = C2x*x2 + C2y*y2 + C2;

      (*this)[m][l].setMinDistLUTb(ip,targRotLay,cnstMinDist);
    }
  }
}

Bool_t HMdcLookUpTb::calcVertexFnTarg(void) {
  // For vertex finder:
  Int_t nTargets = fSizesCells->getNumOfTargets();
  if(nTargets>240) {
    Error("calcTarget","Number of targets =%i (>240) !!!",nTargets);
    nTargets = 0;
    return kFALSE;
  }
  vertZErr = fSizesCells->getMaxTargHThick();
  if(nTargets==1) { // Nado uchect' mishenyami
    const HGeomVector& targetFPoint = fSizesCells->getTargetFirstPoint(); 
    const HGeomVector& targetLPoint = fSizesCells->getTargetLastPoint();
    const HGeomVector& targetMPoint = fSizesCells->getTargetMiddlePoint();
    Double_t length = targetLPoint.getZ() - targetFPoint.getZ();
    if(length<3.) {
      numVFPoins   = 1;
      use3PointMax = kFALSE;
    } else {
      if(length<5.5)     numVFPoins = 2;
      else               numVFPoins = Int_t(length/3.+0.5);
      if(numVFPoins>240) numVFPoins = 240; // Array size limitation.
      use3PointMax = kTRUE;
      Double_t pntZStep = length/numVFPoins;
      numVFPoins += 2;
      Double_t z0 = targetFPoint.getZ() - pntZStep/2.;
      for(Int_t tp=0;tp<numVFPoins;tp++) {
        targetPnts[tp] = targetMPoint;
        targetPnts[tp].setZ(z0 + pntZStep*tp);
      }
      vertZErr = pntZStep;
    }
  } else {
    HGeomVector* targets   = fSizesCells->getTargets();
// ???Double_t maxTargHThick = fSizesCells->getMaxTargHThick();
    Double_t length        = targets[nTargets-1].getZ() - targets[0].getZ();
    Double_t pntZStep      = length/nTargets;
    if(pntZStep>10.) { // No additional points for vertex finder:
      numVFPoins   = nTargets;
      use3PointMax = kFALSE;
      for(Int_t t=0;t<nTargets;t++) targetPnts[t] = targets[t];
    } else {          // Add 2 points:
      numVFPoins   = nTargets+2;
      use3PointMax = kTRUE;
      for(Int_t t=0;t<nTargets;t++) targetPnts[t+1] = targets[t];
      targetPnts[0]            = targets[0];
      targetPnts[numVFPoins-1] = targets[nTargets-1];
      targetPnts[0].setZ           (targets[0].getZ()          - pntZStep);
      targetPnts[numVFPoins-1].setZ(targets[nTargets-1].getZ() + pntZStep);      
    }
  }

  Double_t zStart = HMdcTrackDSet::getZStartDetector();
  if( fStartGeomPar != NULL ) zStart = fStartGeomPar->getLabPos(0)->getZ();
  
  numStartDPoints = 0;
  if((HMdcGetContainers::isGeant() && gHades->getEmbeddingMode()==0 && !HMdcTrackDSet::useStartPositionInSim())
      || zStart==0 || zStart >= targetPnts[0].getZ()) return kTRUE;
  if(use3PointMax) {
    Double_t dz = targetPnts[1].getZ() - targetPnts[0].getZ();
    for(Int_t i=0;i<3;i++) targetPnts[numVFPoins+1] = targetPnts[0]; // Copy x and y
    targetPnts[numVFPoins].setZ(zStart-dz);
    targetPnts[numVFPoins+1].setZ(zStart);
    targetPnts[numVFPoins+2].setZ(zStart+dz);
    numStartDPoints = 3;
  } else {
    targetPnts[numVFPoins] = targetPnts[0];
    targetPnts[numVFPoins].setZ(zStart);
    numStartDPoints = 1;
  }
  return kTRUE;
}

void HMdcLookUpTbSec::calcVertexFnTarg(Int_t nTrPnts,HGeomVector* trPnts) {
  // For vertex finder:

  lTargPnt = nTrPnts;
  const HGeomTransform* labSecTrans = pSCellSec->getLabTrans();
  
  for(Int_t n=0;n<nTrPnts;n++) targetPnts[n] = labSecTrans->transTo(trPnts[n]);
  
  HGeomVector tmp;
  for(Int_t m=0;m<4;m++) if((*array)[m]) for(Int_t l=0;l<6;l++) {
    const HGeomTransform* transRLaySec   = (*pSCellSec)[m][l].getRotLayP1SysRSec();
    const HGeomTransform* transRLayP2Sec = (*pSCellSec)[m][l].getRotLayP2SysRSec();
    HMdcLookUpTbLayer& rLUTLay = (*this)[m][l];
    Double_t* yTArr   = rLUTLay.getYTargetArr();
    Double_t* zTArr   = rLUTLay.getZTargetArr();
    Double_t* yTArrP2 = rLUTLay.getYTargetArrP2();
    Double_t* zTArrP2 = rLUTLay.getZTargetArrP2();
    indFirstTPnt = 0;
    indLastTPnt  = 0;
    for(Int_t n=0;n<nTrPnts;n++) {
      if(targetPnts[n].getZ() < targetPnts[indFirstTPnt].getZ()) indFirstTPnt = n;
      if(targetPnts[n].getZ() > targetPnts[indLastTPnt ].getZ()) indLastTPnt  = n;
      tmp = transRLaySec->transTo(targetPnts[n]);
      yTArr[n] = tmp.getY();
      zTArr[n] = tmp.getZ();
      if(yTArrP2!=NULL && zTArrP2!=NULL) {
        tmp = transRLayP2Sec->transTo(targetPnts[n]);
        yTArrP2[n] = tmp.getY();
        zTArrP2[n] = tmp.getZ();
      }
    }
    rLUTLay.setNTargPnts(nTrPnts);
  }
}

void HMdcLookUpTbSec::removeGhosts(void) {
   //===Suppression==
  pListCells->clearClustCounter(0);
  
  Int_t sizeLv12p0 = 2; Int_t realUnVsBn_Lv12p0[2] ={5,4};        // element [i+1] must be <= [i]
  Int_t sizeLv12p1 = 1; Int_t fakeUnVsBn_Lv12p1[1] ={1};          //
  Int_t sizeLv12p2 = 3; Int_t fakeUnVsRl_Lv12p2[3] ={6,7,9};      //
  Int_t sizeLv12p3 = 4; Int_t realUnVsBn_Lv12p3[4] ={5,4,4,3};    // element [i+1] must be <= [i]
  Int_t sizeLv12p4 = 3; Int_t fakeUnVsRl_Lv12p4[3] ={6,7,9};      //
  Int_t sizeLv11p1 = 1; Int_t realUnVsBn_Lv11p1[1] ={7};          // element [i+1] must be <= [i]
  Int_t sizeLv11p2 = 3; Int_t fakeUnVsRl_Lv11p2[3] ={4,6,7};      //
  Int_t sizeLv11p3 = 1; Int_t realUnVsBn_Lv11p3[1] ={7};          // element [i+1] must be <= [i]
  Int_t sizeLv11p4 = 4; Int_t fakeUnVsRl_Lv11p4[4] ={4,5,6,7};    //
  Int_t sizeLv10p1 = 1; Int_t realUnVsBn_Lv10p1[1] ={9};          // element [i+1] must be <= [i]
  Int_t sizeLv10p2 = 4; Int_t fakeUnVsRl_Lv10p2[4] ={3,4,5,6};    //
  Int_t sizeLv10p3 = 1; Int_t realUnVsBn_Lv10p3[1] ={9};          // element [i+1] must be <= [i]
  Int_t sizeLv10p4 = 5; Int_t fakeUnVsRl_Lv10p4[5] ={1,3,3,4,5};  //
  Int_t sizeLv10p5 = 1; Int_t realUnVsBn_Lv10p5[1] ={9};          // element [i+1] must be <= [i]
  Int_t sizeLv10p6 = 5; Int_t fakeUnVsRl_Lv10p6[5] ={1,2,3,4,5};  //
  Int_t sizeLv09p1 = 1; Int_t realUnVsBn_Lv09p1[1] ={6};          // element [i+1] must be <= [i]
  Int_t sizeLv09p2 = 4; Int_t fakeUnVsRl_Lv09p2[4] ={3,4,5,6};    //
  Int_t sizeLv09p3 = 1; Int_t realUnVsBn_Lv09p3[1] ={6};          // element [i+1] must be <= [i]
  Int_t sizeLv09p4 = 4; Int_t fakeUnVsRl_Lv09p4[5] ={2,3,5,6};    //
  Int_t sizeLv09p5 = 1; Int_t realUnVsBn_Lv09p5[1] ={6};          // element [i+1] must be <= [i]
  Int_t sizeLv09p6 = 5; Int_t fakeUnVsRl_Lv09p6[5] ={3,3,5,5,13}; //
// Lev8 ver1 (Lev9 is previous)
//  Int_t sizeLv08p1 = 1; Int_t realUnVsBn_Lv08p1[1] ={3};          // element [i+1] must be <= [i]
//  Int_t sizeLv08p2 = 4; Int_t fakeUnVsRl_Lv08p2[4] ={2,4,4,6};    //
//  Int_t sizeLv08p3 = 1; Int_t realUnVsBn_Lv08p3[1] ={3};          // element [i+1] must be <= [i]
//  Int_t sizeLv08p4 = 4; Int_t fakeUnVsRl_Lv08p4[4] ={1,2,4,5};    //
//  Int_t sizeLv08p5 = 1; Int_t realUnVsBn_Lv08p5[1] ={4};          // element [i+1] must be <= [i]
//  Int_t sizeLv08p6 = 6; Int_t fakeUnVsRl_Lv08p6[6] ={0,0,0,1,2,5}; //
  
  // Level 12:  ------------------------------------------------------------------------
  addToClusCounter(12); 
  markReals(12,sizeLv12p0,realUnVsBn_Lv12p0);
  markFakesNBins(12,sizeLv12p1,fakeUnVsBn_Lv12p1);
  markFakes(12,sizeLv12p2,fakeUnVsRl_Lv12p2);
  markReals(12,sizeLv12p3,realUnVsBn_Lv12p3);
  markFakes(12,sizeLv12p4,fakeUnVsRl_Lv12p4);
  
  // Level 11: ------------------------------------------------------------------------
  addToClusCounter(11);
  markReals(11,sizeLv11p1,realUnVsBn_Lv11p1);
  markFakes(11,sizeLv11p2,fakeUnVsRl_Lv11p2);
  markReals(11,sizeLv11p3,realUnVsBn_Lv11p3);
  markFakes(11,sizeLv11p4,fakeUnVsRl_Lv11p4);

  // Level 10: ------------------------------------------------------------------------
  addToClusCounter(10);
  markReals(10,sizeLv10p1,realUnVsBn_Lv10p1);
  markFakes(10,sizeLv10p2,fakeUnVsRl_Lv10p2);
  markReals(10,sizeLv10p3,realUnVsBn_Lv10p3);
  markFakes(10,sizeLv10p4,fakeUnVsRl_Lv10p4);
  markReals(10,sizeLv10p5,realUnVsBn_Lv10p5);
  markFakes(10,sizeLv10p6,fakeUnVsRl_Lv10p6);

  // Level 09: ------------------------------------------------------------------------
  addToClusCounter(9);
  markReals(9,sizeLv09p1,realUnVsBn_Lv09p1);
  markFakes(9,sizeLv09p2,fakeUnVsRl_Lv09p2);
  markReals(9,sizeLv09p3,realUnVsBn_Lv09p3);
  markFakes(9,sizeLv09p4,fakeUnVsRl_Lv09p4);
  markReals(9,sizeLv09p5,realUnVsBn_Lv09p5);
  markFakes(9,sizeLv09p6,fakeUnVsRl_Lv09p6);

  // Level 08: ------------------------------------------------------------------------
//  addToClusCounter(8);
//  markReals(8,sizeLv08p1,realUnVsBn_Lv08p1);
//  markFakes(8,sizeLv08p2,fakeUnVsRl_Lv08p2);
//  markReals(8,sizeLv08p3,realUnVsBn_Lv08p3);
//  markFakes(8,sizeLv08p4,fakeUnVsRl_Lv08p4);
//  markReals(8,sizeLv08p5,realUnVsBn_Lv08p5);
//  markFakes(8,sizeLv08p6,fakeUnVsRl_Lv08p6);
}

void HMdcLookUpTbSec::addToClusCounter(Int_t clusAmp) {
  for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(clusAmp)) {
    pListCells->addToClusCounters(0,cClusArr[cl].getLCells1());
  }
}

void HMdcLookUpTbSec::markFakesNBins(Int_t clusAmp,Int_t arrSize,Int_t *nUnWiresCut) {
  // Mark clusters as "fake" by number of "unique" wires  vs. number of bins in this cluster
  // "unique" wires (nUnWr) - num.of wires wich participate in this cluster only
  for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(clusAmp)) { // 1.Mark "ghost"&"real":
    Int_t  ind   = cClusArr[cl].getNBins()-1;
    Int_t  nUnWr = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
    Bool_t fake  = ind<arrSize && nUnWr<nUnWiresCut[ind]; //nUnWr == 0 && nBins == 1;
    cClusArr[cl].resetFakeFlagSeg1(fake,pListCells);
  }
}

void HMdcLookUpTbSec::markFakes(Int_t clusAmp,Int_t arrSize,Int_t *nRlWiresCut) {
  // Mark clusters as "fake" by number of "unique" wires  vs. number of "real" wires in this cluster
  // "unique" wires (nUnWr) - num.of wires wich participate in this cluster only
  // "real" wires (nRlWr)   - num.of wires which participate in the clusters market as "real"
  for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(clusAmp)) {
    if(clusAmp==12 && cClusArr[cl].getFakeFlag() > 0) continue;
    Int_t  nRlWr;
    Int_t  nUnWr = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
    Bool_t fake  = nUnWr<arrSize && nRlWr>nRlWiresCut[nUnWr];
    cClusArr[cl].resetFakeFlagSeg1(fake,pListCells);
  }
}

void HMdcLookUpTbSec::markReals(Int_t clusAmp,Int_t arrSize,const Int_t *nUnWiresCut) {
  // Mark clusters as "real" by number of "unique" wires  vs. number of bins in this cluster
  // "unique" wires (nUnWr) - num.of wires wich participate in this cluster only
  for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(clusAmp)) {
    Int_t  nUnWr = cClusArr[cl].getNUniqueWiresSeg1(pListCells); 
    Int_t  ind   = cClusArr[cl].getNBins();
    if(ind > arrSize) ind = arrSize;
    Bool_t real  = nUnWr > nUnWiresCut[--ind];
    cClusArr[cl].resetRealFlagSeg1(real,pListCells);
  }
}

// void HMdcLookUpTbSec::removeGhosts(void) {
//    //===Suppression==
//  
//   pListCells->clearClustCounter(0);
//   
//   // Level 12:  ------------------------------------------------------------------------
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(12)) {
//     pListCells->addToClusCounters(0,cClusArr[cl].getLCells1());
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(12)) { // 1.Mark "ghost"&"real":
//     Int_t  nBins  = cClusArr[cl].getNBins();
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
//     Bool_t realOk = (nUnWr > 5  && nBins > 0) || 
//                     (nUnWr > 4  && nBins > 1);    // RealID!
//     Bool_t fakeOk =  nUnWr == 0 && nBins == 1;    // FakeID!
//     if(fakeOk)      cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//     else if(realOk) cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(12)) { // 2.Mark "ghost":
//     if(cClusArr[cl].getFakeFlag() > 0) continue;
//     Int_t   nRlWr;
//     Int_t   nUnWr  = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t  fakeOk = (nUnWr == 0 && nRlWr > 6) || 
//                      (nUnWr == 1 && nRlWr > 7) || 
//                      (nUnWr == 2 && nRlWr > 9);  //  FakeID!
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(12)) { // 2.Mark "real":
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
//     Int_t  nBins  = cClusArr[cl].getNBins();
//     Bool_t realOk = (nUnWr  > 5 && nBins > 0) ||
//                     (nUnWr  > 4 && nBins > 1) || 
//                     (nUnWr  > 3 && nBins > 3);   // RealID!
//     cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(12)) { // 3.Mark "ghost":
//     if(cClusArr[cl].getFakeFlag() > 0) continue; // Pochti ne vliyaet ????
//     Int_t  nRlWr;
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t fakeOk = (nUnWr==0 && nRlWr>6) ||
//                     (nUnWr==1 && nRlWr>7) ||
//                     (nUnWr==2 && nRlWr>9);  //  FakeID!
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
// 
//   // Level 11: ------------------------------------------------------------------------
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(11)) {
//     pListCells->addToClusCounters(0,cClusArr[cl].getLCells1());
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(11)) { // 1.Mark "real":
//     Int_t  nUnWr = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
//     Bool_t realOk = nUnWr > 7;                   // RealID!
//     cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(11)) { // 1.Mark "ghost":
//     Int_t  nRlWr;
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t fakeOk = (nUnWr == 0 && nRlWr > 4) || 
//                     (nUnWr == 1 && nRlWr > 6) || 
//                     (nUnWr == 2 && nRlWr > 7);   //   FakeID!
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(11)) { // 2.Mark "real":
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
//     Bool_t realOk = nUnWr > 7;   // RealID!
//     cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(11)) {// 2.Mark "ghost":
//     Int_t  nRlWr;
//     Int_t  nUnWr = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t fakeOk = (nUnWr==0 && nRlWr>4) || 
//                     (nUnWr==1 && nRlWr>5) ||
//                     (nUnWr==2 && nRlWr>6) ||
//                     (nUnWr==3 && nRlWr>7); //   FakeID!
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
// 
//   // Level 10: ------------------------------------------------------------------------
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) {
//     pListCells->addToClusCounters(0,cClusArr[cl].getLCells1());
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) { // 1.Mark "real":
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
//     Bool_t realOk = nUnWr > 9;                // RealID!
//     cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) { // 1.Mark "ghost":
//     Int_t  nRlWr;
//     Int_t  nUnWr  = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t fakeOk = (nUnWr == 0 && nRlWr > 3) || 
//                     (nUnWr == 1 && nRlWr > 4) || 
//                     (nUnWr == 2 && nRlWr > 5) || 
//                     (nUnWr == 3 && nRlWr > 6); // Fake 
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) { // 2.Mark "real":
//     Int_t   nUnWr = cClusArr[cl].getNUniqueWiresSeg1(pListCells);   
//     Bool_t realOk = nUnWr > 9;               // RealID!
//     cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) { // 2.Mark "ghost":
//     Int_t  nRlWr;
//     Int_t  nUnWr = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t fakeOk = (nUnWr == 0 && nRlWr > 1) ||
//                     (nUnWr == 1 && nRlWr > 3) ||
//                     (nUnWr == 2 && nRlWr > 3) ||
//                     (nUnWr == 3 && nRlWr > 4) ||
//                     (nUnWr == 4 && nRlWr > 5); // Fake 80.68%/0.82%/0.40%
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) { // 3.Mark "real":
//     Int_t   nUnWr = cClusArr[cl].getNUniqueWiresSeg1(pListCells);
//     Bool_t realOk = nUnWr > 9;   // RealID!
//     cClusArr[cl].resetRealFlagSeg1(realOk,pListCells);
//   }
//   for(Int_t cl=0; cl<(*cNClusArr); cl++) if(cClusArr[cl].isClusterAmpEq(10)) { // 3.Mark "ghost":
//     Int_t  nRlWr;
//     Int_t  nUnWr = cClusArr[cl].getNUniqueAndRWiresSeg1(pListCells,nRlWr);
//     Bool_t fakeOk = (nUnWr == 0 && nRlWr > 1) ||
//                     (nUnWr == 1 && nRlWr > 2) || 
//                     (nUnWr == 2 && nRlWr > 3) ||
//                     (nUnWr == 3 && nRlWr > 4) || 
//                     (nUnWr == 4 && nRlWr > 5); // Fake 80.68%/0.82%/0.40%
//     cClusArr[cl].resetFakeFlagSeg1(fakeOk,pListCells);
//   }
// }

//---------------------------------------------------------
HMdcLookUpTb* HMdcLookUpTb::fMdcLookUpTb  = NULL;

HMdcLookUpTb::HMdcLookUpTb(const Char_t* name,const Char_t* title,const Char_t* context)
            : HParSet(name,title,context) {
  // constructor creates an array of pointers of type HMdcLookUpTbSec
  fMdcLookUpTb = this;
  strcpy(detName,"Mdc");
  fGetCont=HMdcGetContainers::getObject();
  if( fGetCont==0 || gHades==0) return;
  array         = new TObjArray(6);
  fMdcGeomPar   = fGetCont->getMdcGeomPar();
  fSpecGeomPar  = fGetCont->getSpecGeomPar();
  fLayerGeomPar = fGetCont->getMdcLayerGeomPar();
  fSizesCells   = HMdcSizesCells::getObject();
  fMdcClusCat   = fGetCont->getCatMdcClus(kTRUE);
  targLenInc[0] = 0;
  targLenInc[1] = 0.;
  quietMode     = kFALSE;
  stack         = NULL;
  stacksArr     = NULL;
  isCoilOff     = kFALSE;
  numVFPoins    = 0;
  
  for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) dDCutCorr[m][l] = 1.;
  memset(vertexStat,0,sizeof(vertexStat));
  
  if(HMdcTrackDSet::findClustVertex() && HMdcTrackDSet::getZStartDetector() == 0.) {
    fStartGeomPar = (HStart2GeomPar*)gHades->getRuntimeDb()->getContainer("Start2GeomPar");
  } else fStartGeomPar = NULL;
  
  HMdcDriftTimePar::getObject();
}

Bool_t HMdcLookUpTb::initContainer(void) {
  // It is called from "reinit" of reconstractor!
  if( !HMdcEvntListCells::getExObject() ) return kFALSE;
  if( !HMdcGetContainers::isInited(fMdcGeomPar)   || !HMdcGetContainers::isInited(fSpecGeomPar) ||
      !HMdcGetContainers::isInited(fLayerGeomPar) || !fSizesCells->initContainer()) return kFALSE;
  if( !HMdcDriftTimePar::getObject()->initContainer() ) return kFALSE;

  if( !status && (fSizesCells->hasChanged() || fSpecGeomPar->hasChanged() ||
                  fMdcGeomPar->hasChanged() || fLayerGeomPar->hasChanged()) ) {
    changed = kTRUE;
    if(!fMdcClusCat) return kFALSE;
    if(!calcVertexFnTarg()) return kFALSE;
    Int_t nBinX,nBinY;
    HMdcTrackDSet::getProjectPlotSizeSeg1(nBinX,nBinY);
    if(!quietMode) printf("Project plot size of inner segment: %i x %i bins\n",nBinX,nBinY);
    
    for (Int_t sec = 0; sec < 6; sec++) if( fGetCont->isSecActive(sec) ) {
      if( !(*array)[sec] ) {
        Int_t nSegs = fGetCont->isSegActive(sec,0) ? 1 : 0;
        if(isCoilOff && fGetCont->isSegActive(sec,1)) nSegs = 2;
//          nSegs = ( fGetCont->isSegActive(sec,1) ) ? 2:1;
        if(nSegs==0) continue;
        
        HMdcLookUpTbSec* secF = new HMdcLookUpTbSec(sec,nSegs,nBinX,nBinY);
        (*array)[sec] = secF;
        secF->setTypeClFinder(typeClFinder);
        secF->setClusCat(fMdcClusCat);
        if(stacksArr == NULL) {
          stacksArr = new HMdcClFnStacksArr();
          stack     = stacksArr->getOneStack();
        }
        secF->setStack(stack);
        secF->setStacksArr(stacksArr);
        secF->setVertexStat(vertexStat);
        secF->setVertexZErr(vertZErr);
      }
      (*this)[sec].setCoilFlag(isCoilOff);
      // initialization of container ---
      if(!calcPrPlane(sec))  return kFALSE;
      if(!calcTarget(sec))   return kFALSE;
      if(!calcPlotSize(sec)) return kFALSE;
      if(!(*this)[sec].calcLookUpTb(quietMode)) return kFALSE;
      (*this)[sec].calcVertexFnTarg(numVFPoins+numStartDPoints,targetPnts); // Add If ver... !!!
      // --------------------------------
    }
    
    if(versions[1]<0 || versions[2]<0) versions[1]=versions[2]=0;
    else versions[2]++;
  } else changed=kFALSE;
  return kTRUE;
}

HMdcLookUpTb* HMdcLookUpTb::getObject(void) {
  if(fMdcLookUpTb == NULL) fMdcLookUpTb = new HMdcLookUpTb();
  return fMdcLookUpTb;
}

void HMdcLookUpTb::deleteCont(void) {
  if(fMdcLookUpTb == NULL) return;
  delete fMdcLookUpTb;
  fMdcLookUpTb = NULL;
}

HMdcLookUpTb::~HMdcLookUpTb(void) {
  // destructor
  HMdcGetContainers::deleteCont();
  HMdcSizesCells::deleteCont();
  if(array) {
    array->Delete();
    delete array;
  }
  if(stacksArr) delete stacksArr;
  stacksArr = NULL;
  stack     = NULL;
  HMdcDriftTimePar::deleteCont();
}

Int_t HMdcLookUpTb::getSize(void) {
  // return the size of the pointer array
  return array->GetEntries();
}

void HMdcLookUpTb::clear(void) {
  for(Int_t s=0;s<6;s++) if((*array)[s]) (*this)[s].clearwk();
}

TH2C* HMdcLookUpTbSec::fillTH2C(const Char_t* name,const Char_t* title,Int_t type,Int_t bining) {
  // Proj.plot filling without cluster finding.
  for(module=0; module<4; module++) {
    cFMod = &((*this)[module]);
    if(cFMod == NULL) continue;
    cHPlModM = hPlMod[module];
    if(cHPlModM == NULL) continue;
    cXMinM = xMin[module];
    cXMaxM = xMax[module];
    for(layer=0;layer<6;layer++) {
//if(module!=0 || (layer!=0 && layer!=2)) continue;
      if( !setLayerVar() ) continue;
      makeLayProjV0();
    }
  }

  if(!hist) {
    plBining = bining<=0 ? 1 : bining;
    if(nBinX<100) plBining=1;
    hist = new TH2C(name,title,nBinX/plBining,xLow,xUp,nBinY/plBining,yLow,yUp);
  } else {
    hist->Reset();
    hist->SetName(name);
    hist->SetTitle(title);
  }
  hist->SetMinimum(0.);
  hist->Fill(0.,0.,0);
  Float_t          maximum = 6.;
  if(type==2)      maximum = 4.5;
  else if(type==0) maximum = (hPlMod[2]) ? 24.:12.;
  else if(type==1) maximum = (hPlMod[2]) ? 60.:18.;
  hist->SetMaximum(maximum);
  if(noFiredCells) return hist;
  for (Int_t nx=0; nx<nBinX; nx+=plBining) {
    for (Int_t ny=0; ny<nBinY; ny+=plBining) {
      Int_t nBin  = ny*nBinX+nx;
      Int_t nBin2 = nBin+nBinX;
      UChar_t binM1=hPlMod[0][nBin];
      UChar_t binM2=hPlMod[1][nBin];
      if(plBining==2) {
        binM1 |= hPlMod[0][nBin+1] | hPlMod[0][nBin2] | hPlMod[0][nBin2+1];
        binM2 |= hPlMod[1][nBin+1] | hPlMod[1][nBin2] | hPlMod[1][nBin2+1];
      }
      UChar_t binM3=0;
      UChar_t binM4=0;
      if(hPlMod[2]) {
        binM3=hPlMod[2][nBin];
        binM4=hPlMod[3][nBin];
        if(plBining==2) {
          binM3|=hPlMod[2][nBin+1] | hPlMod[2][nBin2] | hPlMod[2][nBin2+1];
          binM4|=hPlMod[3][nBin+1] | hPlMod[3][nBin2] | hPlMod[3][nBin2+1];
        }
      }
      if( binM1==0 && binM2==0 && binM3==0 && binM4==0) continue;
      Int_t color=0;
      if(type==1) {
        if(binM4)      color  = HMdcBArray::getNSet(binM4)+18;
        else if(binM3) color += HMdcBArray::getNSet(binM3)+12;
        else if(binM2) color += HMdcBArray::getNSet(binM2)+6;
        else if(binM1) color += HMdcBArray::getNSet(binM1);

// Int_t m1=HMdcBArray::getNSet(binM1);
// Int_t m2=HMdcBArray::getNSet(binM2);
// color=(m1>m2) ? m2:m1; //m1:m2;
	
      } else if(type==2) {
        if(binM4)      color = 4;
        else if(binM3) color = 3;
        else if(binM2) color = 2;
        else if(binM1) color = 1;
      } else {
        color = HMdcBArray::getNSet(binM1)+HMdcBArray::getNSet(binM2)+
                HMdcBArray::getNSet(binM3)+HMdcBArray::getNSet(binM4);
      }
      hist->Fill(xBinsPos[nx],yBinsPos[ny], color);
    }
  }
  clearPrArrs();
  return hist;
}

Bool_t HMdcLookUpTb::calcPrPlane(Int_t sec) {
  //  Calc. of projection plane:
  //  It's a plane between first and last MDC in sector
  //  (without magnetic field) or in inner segment (with magnetic fild). 
  //  par=0.0 -> plane=layer 6 of first MDC
  //  par=1.0 -> plane=layer 1 of last MDC
  //  If there is one MDC only - middle plane of MDC will used.
  Int_t firstMod = -1;
  Int_t lastMod  = 0;
  Int_t nMaxMods = isCoilOff ? 4 : 2;
  Int_t nmod     = 0;
  for(Int_t m=0; m<nMaxMods; m++) if( fGetCont->isModActive(sec,m) ) {
    nmod++;
    if(firstMod<0) firstMod=m;
    lastMod=m;
  }
  if(nmod==0) return kFALSE;
  if(nmod>1) {
    //  Double_t par = 0.0;   // <<<===================== use MDC1
    //  Double_t par = 1.0;   // <<<===================== use MDC2
    Double_t par = 0.553; //0.551232;
    HMdcPlane m1((*fSizesCells)[sec][firstMod][5]);
    HMdcPlane m2((*fSizesCells)[sec][ lastMod][0]);
    Double_t dNew=m1.D()*(1.-par)+m2.D()*par;
    Double_t bNew=dNew/(m1.D()*(1.-par)/m1.B()+m2.D()*par/m2.B());
    ((*this)[sec]).getPrPlane().setPlanePar( 0., bNew, 1., dNew);
    if(!quietMode) printf(
       "\n===> Sec.%i: Using plane between MDC%i and MDC%i (p=%f) as projection plane\n",
        sec+1,firstMod+1,lastMod+1,par);
  } else {
    ((*this)[sec]).getPrPlane().setPlanePar((*fSizesCells)[sec][firstMod]);
    if(!quietMode) printf(
        "\n===> Sec.%i: Using middle plane of MDC%i as projection plane\n",
        sec+1,firstMod+1);
  }
  return kTRUE;
}

Bool_t HMdcLookUpTb::calcTarget(Int_t sec){
  // Calculation of target parameters
  HMdcSizesCellsSec& fSCSec = (*fSizesCells)[sec];
  HMdcLookUpTbSec& fsec=(*this)[sec];
  if(&fSCSec==0 || &fsec==0) return kFALSE;
  fsec.calcTarget(targLenInc);
  return kTRUE;
}

Bool_t HMdcLookUpTb::calcPlotSize(Int_t sec) {
  HMdcLookUpTbSec& fsec=(*this)[sec];
  Double_t xLow,xUp,yLow,yUp;
  if(!fsec.calcXYBounds(xLow,xUp,yLow,yUp)) return kFALSE;

  Double_t del = (xUp-xLow)*0.02;
  xLow -= del;
  xUp  += del;
  del   = (yUp-yLow)*0.01;
  yLow -= del;
  yUp  += del;
  Double_t xStep = (xUp-xLow)/(Double_t)(fsec.getNBinX()-3);
  Double_t yStep = (yUp-yLow)/(Double_t)(fsec.getNBinY()-3);
  yLow -= yStep*1.5;            //must be bin=0 at limits of plot
  yUp  += yStep*1.5;
  xLow -= xStep*1.5;
  xUp  += xStep*1.5;
  
  fsec.setPrPlotSize(xLow,xUp,yLow,yUp);
  return kTRUE;
}

void HMdcLookUpTb::fillTrackList(Bool_t fl) {
  for(Int_t s=0;s<6;s++) if((*array)[s]) (*this)[s].fillTrackList(fl);
}

void HMdcLookUpTb::setTargLenInc(Double_t lf,Double_t rt) {
  targLenInc[0] = lf;
  targLenInc[1] = rt;
}

void HMdcLookUpTbSec::setDrTimeCutYCorr(Double_t corr) {
  if(corr<=0.) for(Int_t yb=0;yb<nBinY;yb++) yDDistCorr[yb] = 0.;
  else         for(Int_t yb=0;yb<nBinY;yb++) {
    Double_t yf = Double_t(yb)/Double_t(nBinY-1);
    yDDistCorr[yb] = corr*yf*yf;
  }
}

void HMdcLookUpTb::calcTdcDrDist(void) {
  for(Int_t sec=0;sec<6;sec++) if((*array)[sec]) (*this)[sec].calcTdcDrDist();
}

void HMdcLookUpTbSec::calcTdcDrDist(void) {
  if(!useDriftTime && !doVertexFn) return;
  for(Int_t mod=0;mod<4;mod++) if((*array)[mod]) {
    HMdcModListCells &rModLCells = (*pListCells)[mod];
    HMdcLookUpTbMod  &rLUTMod    = (*this)[mod];
    for(Int_t lay=0;lay<6;lay++) {
      HMdcLayListCells  &rLayLCells = rModLCells[lay];
      HMdcLookUpTbLayer &rLUTLayer  = rLUTMod[lay];
      Int_t cell = -1;
      while( rLayLCells.nextCell(cell) ) {
        HMdcLookUpTbCell& rLUTCell   = rLUTLayer[cell];
        Double_t alpha   = rLUTCell.getAlphaMean();
        Double_t tdcTime = rLayLCells.getTimeValue(cell);
        Float_t  tdcTDist;
        if(tdcTime>0.) tdcTDist = pDriftTimeParSec->calcDistance(mod,alpha,tdcTime);
        else           tdcTDist = 0.;
        if(doVertexFn) rLUTCell.setTdcTDistAndCuts1T(tdcTDist);
        else           rLUTCell.setTdcTDistAndCutsFT(tdcTDist);
      }
    }
  }
}

void HMdcLookUpTbCell::setTdcTDistAndCuts1T(Double_t d) {
  dDistMinCut    = d>distCut1T ? d-distCut1T : 0.;
  dDistMaxCut    =               d+distCut1T;
  dDistMinCut2VF = d>distCutVF ? (d-distCutVF)*(d-distCutVF) : 0.;
  dDistMaxCut2VF =               (d+distCutVF)*(d+distCutVF);
}

void HMdcLookUpTbCell::setTdcTDistAndCutsFT(Double_t d) {
  dDistMinCut   = d>distCutFT ? d-distCutFT : 0.;
  dDistMaxCut   =               d+distCutFT;
}

Int_t HMdcLookUpTb::findVertex(void) {
  Int_t    vertTar    = -10;
  Int_t    vertPnt    = -10;
  Int_t    maxNumBins = 0;
  
  Int_t    vertTarS   = -10;
  Double_t numBinsS   = 0;
  Int_t    pileupType = 0;

  if(HMdcTrackDSet::findClustVertex()) {
    for(Int_t nt=0;nt<numVFPoins+numStartDPoints;nt++) vertexStat[nt] = 0;
    for(Int_t sec=0;sec<6;sec++) if(array->At(sec) != NULL) (*this)[sec].findVertex();

    if(use3PointMax) {    //  3 target points for the maximum
      for(Int_t nt=0;nt<numVFPoins-2;nt++) {
        Int_t maxSum3n = vertexStat[nt]+vertexStat[nt+1]+vertexStat[nt+2];
        if(maxSum3n > maxNumBins) {
          maxNumBins = maxSum3n;
          vertTar    = nt;
        }
      }
      vertPnt = vertTar+1;
      if(numStartDPoints>0) {
        Int_t maxSum3n = vertexStat[numVFPoins]+vertexStat[numVFPoins+1]+vertexStat[numVFPoins+2];
        if(maxSum3n > maxNumBins) {
          maxNumBins = maxSum3n;
          vertTar    = -1;               // Start detector
          vertPnt    = numVFPoins+1;
        }
      }
      // -------------------- Pile-up:
      if(maxNumBins > 0) {
        Int_t nVPSum3[numVFPoins];
        nVPSum3[0] = vertexStat[numVFPoins]+vertexStat[numVFPoins+1]+vertexStat[numVFPoins+2];
        for(Int_t n=0;n<=numVFPoins-3;n++) nVPSum3[n+1]=vertexStat[n]+vertexStat[n+1]+vertexStat[n+2];
        Int_t binMax = -1;
        Int_t lastBin = numVFPoins-2;
        for(Int_t n=0;n<=lastBin;n++) if(TMath::Abs(vertTar-(n-1))>1) {  // >2 ???!!!
          if(binMax>=0 && nVPSum3[n] < nVPSum3[binMax]) continue;
          if(n < 2) {   
            if(nVPSum3[n+1]<nVPSum3[n]) binMax = n;
          } else if(n==lastBin) {
            if(nVPSum3[lastBin-1]<nVPSum3[lastBin])   binMax = lastBin; 
          } else if(nVPSum3[n]>nVPSum3[n-1] && nVPSum3[n]>=nVPSum3[n+1]) binMax = n;
        }
        // PL Type I: Second maximum searching ----------------------------------------
        Double_t cut = 5;
        if(binMax>=0) {
          Int_t n1 = -100;
          Int_t n2 = -100;
          if(vertTar+1 < binMax) {
            for(n1=binMax-1;n1>vertTar+1;n1--) if(nVPSum3[n1] < nVPSum3[n1-1]) break;
            n2 = binMax+(binMax-n1);
          } else {
            for(n2=binMax+1;n2<vertTar+1;n2++) if(nVPSum3[n2] < nVPSum3[n2+1]) break;
            n1 = binMax-(n2-binMax);
          }
          numBinsS = nVPSum3[binMax];
          if     (n1 < 0)       numBinsS -=  nVPSum3[n2];
          else if(n1 < 1)       numBinsS -=  nVPSum3[n2];
          else if(n2 > lastBin) numBinsS -=  nVPSum3[n1];
          else                  numBinsS -= (nVPSum3[n1]+nVPSum3[n2])*0.5;
          vertTarS = binMax-1;
          pileupType = 1;
        }
        if(numBinsS < cut) {
          // PL Type II: Shoulder searching ---------------------------------------
          vertTarS = -10;
          numBinsS = 0;
          for(Int_t n=2;n<numVFPoins-2;n++) if(TMath::Abs(vertPnt-n)>2) {
            Double_t nb = vertexStat[n] - (vertexStat[n-2] + vertexStat[n+2])*0.5; // Va
            if(nb>numBinsS && nb>=cut) {
              vertTarS = n-1;
              numBinsS = nb;
            }
          }
          if(numBinsS < cut) {
            numBinsS   = 0;
            vertTarS   = -10;
            pileupType = 0; 
          } else pileupType = 2;      
        }
      }
      //------------------------------------------------------------------
    } else {    // One target point for the maximum
      for(Int_t nt=0;nt<numVFPoins+numStartDPoints;nt++) if(maxNumBins < vertexStat[nt]) {
        vertPnt    = nt;
        maxNumBins = vertexStat[nt];
      }
      vertTar = vertPnt < numVFPoins ? vertPnt : -1;
    }
  }
  
  HEventHeader *evHeader   = gHades->getCurrentEvent()->getHeader();
  HVertex      &vertexClus = evHeader->getVertexCluster();
  vertexClus.setIterations(vertTar);                // Target segment
  vertexClus.setSumOfWeights(Float_t(maxNumBins));
  vertexClus.ResetBit(BIT(14));
  vertexClus.ResetBit(BIT(15));
  vertexClus.ResetBit(BIT(16));
  if(vertPnt >= 0) {
    vertexClus.setPos(targetPnts[vertPnt]);
    vertexClus.setChi2(0.f);
    // Pile-up: ---------------------------------
    if(vertTarS >= -1) {
      if     (pileupType == 1) {
        vertexClus.SetBit(BIT(14));
        if(numBinsS >= HMdcTrackDSet::getPileupType1cut()) vertexClus.SetBit(BIT(16));
      } else if(pileupType == 2) {
        vertexClus.SetBit(BIT(15));
        if(numBinsS >= HMdcTrackDSet::getPileupType2cut()) vertexClus.SetBit(BIT(16));
      }
      vertexClus.setChi2(numBinsS+(vertTarS+1)/100.);
    }
    // ------------------------------------------
  } else {
    HGeomVector midPoint(fSizesCells->getTargetMiddlePoint());
    vertexClus.setPos(midPoint);
    vertexClus.setChi2(-1.f);
  }
  for(Int_t sec=0;sec<6;sec++) if((*array)[sec] != NULL) (*this)[sec].setVertexPoint(vertPnt);

  return vertTar;
}

void HMdcLookUpTbSec::findVertex(void) {
  
  if(nModules  == 0) return;
  if(nSegments == 2) return findSecVertex();
  if(nModules  != 2) return; //??????????????????????????
  Int_t minAmpCut = levelVertFPP;
  Int_t maxAmpSeg = (*pListCells)[0].getNLayers() + (*pListCells)[1].getNLayers();
  if(maxAmpSeg < minAmpCut) return;
  Int_t nFiredLay = 0;

  cXMinM = xMin[0];
  cXMaxM = xMax[0];
  for(Int_t indLine=0; indLine<6; indLine++) {
    layer = layerOrder[indLine];
    for(module=0; module<2; module++) {
      cFMod = &((*this)[module]);
      if( !cFMod ) continue;
      cHPlModM = hPlMod[module];
      if(!cHPlModM) continue;
//      cXMinM=xMin[module];
//      cXMaxM=xMax[module];
    
      if( !setLayerVar() ) continue;
      nFiredLay++;
      if(maxAmpSeg-nFiredLay+1 >= minAmpCut) {
        if(nFiredLay<minAmpCut) {
          // makeLayProjV1():
          while( setNextCell() ) {
            UInt_t y     = pLUTCell->getYBinMin();
            UInt_t shift = y * nBinX;
            UInt_t nLns  = pLUTCell->getNLines();
            for(UInt_t ln=0; ln<nLns; ln++,y++,shift+=nBinX) {
              UInt_t nbL = pLUTCell->getXBinMax(ln)+shift;
              UInt_t nbF = pLUTCell->getXBinMin(ln)+shift;   
              if(nbF<cXMinM[y]) cXMinM[y] = nbF;
              if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
              UChar_t* hPlModE = cHPlModM+nbL;
              for(UChar_t* bt = cHPlModM+nbF; bt<=hPlModE; bt++) *bt |= add;
            }
          }
        } else while(  setNextCell()  ) {
          // It should never happends...?
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;

            UChar_t* bt  = cHPlModM+nbF;
            UChar_t* bt0 = module==0 ? hPlMod[1]+nbF:hPlMod[0]+nbF;

            if(nbF<cXMinM[y]) cXMinM[y] = nbF;
            if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,bt0++) {
              *bt |= add;
              UChar_t wt = HMdcBArray::getNSet(bt) + HMdcBArray::getNSet(bt0);
              if( wt >= minAmpCut ) {
                testBinForVertexF(nb%nBinX,y);
                *bt  = 0; // Test this bin once only
                *bt0 = 0;
              }
            }
          }
        }
      } else {
        if(nFiredLay<minAmpCut) {
          // makeLayProjV2() :
          while( setNextCell() ) {
            UInt_t y    = pLUTCell->getYBinMin();
            UInt_t nLns = pLUTCell->getNLines();
            for(UInt_t ln=0; ln<nLns; ln++,y++) {
              UInt_t shift = y * nBinX;
              UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
              UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
              if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
              if(nbF<cXMinM[y]) nbF = cXMinM[y];
              if(nbF > nbL) continue;
              UChar_t* hPlModE = cHPlModM+nbL;
              for(UChar_t* bt = cHPlModM+nbF; bt<=hPlModE; bt++) *bt |= add;
            }
          }  
        } else while(  setNextCell()  ) {
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
            if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
            if(nbF<cXMinM[y]) nbF = cXMinM[y];
            if(nbF > nbL) continue;
            UChar_t* bt  = cHPlModM+nbF;
            UChar_t* bt0 = module==0 ? hPlMod[1]+nbF:hPlMod[0]+nbF;

            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++,bt0++) {
              *bt |= add;
              UChar_t wt = HMdcBArray::getNSet(bt) + HMdcBArray::getNSet(bt0);
              if( wt >= minAmpCut ) {
                testBinForVertexF(nb%nBinX,y);
                *bt  = 0; // Test this bin once only
                *bt0 = 0;
              }
            }
          }
        }
      } 
    }
  }
  clearPrMod();
}

void HMdcLookUpTbSec::findSecVertex(void) {
  
  if(nModules<3) return;
  Int_t minAmpCut = 6*nModules - (12-levelVertFPP);
  Int_t maxAmpSeg = (*pListCells)[0].getNLayers() + (*pListCells)[1].getNLayers() +
                    (*pListCells)[2].getNLayers() + (*pListCells)[3].getNLayers();
  if(maxAmpSeg < minAmpCut) return;

  Int_t nFiredLay = 0;

  cXMinM = xMin[0];
  cXMaxM = xMax[0];
  for(Int_t indLine=0; indLine<6; indLine++) {
    layer = layerOrder[indLine];
    for(module=0; module<4; module++) if((*array)[module]) {
      cFMod = &((*this)[module]);
      if( !cFMod ) continue;
      cHPlModM = hPlMod[module];
      if(!cHPlModM) continue;
//      cXMinM=xMin[module];
//      cXMaxM=xMax[module];
    
      if( !setLayerVar() ) continue;
      nFiredLay++;
      if(maxAmpSeg-nFiredLay+1 >= minAmpCut) {
        if(nFiredLay<minAmpCut) {
          // makeLayProjV1():
          while( setNextCell() ) {
            UInt_t y     = pLUTCell->getYBinMin();
            UInt_t shift = y * nBinX;
            UInt_t nLns  = pLUTCell->getNLines();
            for(UInt_t ln=0; ln<nLns; ln++,y++,shift+=nBinX) {
              UInt_t nbL = pLUTCell->getXBinMax(ln)+shift;
              UInt_t nbF = pLUTCell->getXBinMin(ln)+shift;   
              if(nbF<cXMinM[y]) cXMinM[y] = nbF;
              if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;
              UChar_t* hPlModE = cHPlModM+nbL;
              for(UChar_t* bt = cHPlModM+nbF; bt<=hPlModE; bt++) *bt |= add;
            }
          }
        } else while(  setNextCell()  ) {
          // It should never happends...?
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
            if(nbF<cXMinM[y]) cXMinM[y] = nbF;
            if(nbL>cXMaxM[y]) cXMaxM[y] = nbL;

            UChar_t* bt  = cHPlModM+nbF;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++) {
              *bt |= add;
              UChar_t wt = HMdcBArray::getNSet(hPlMod[0][nb]) + HMdcBArray::getNSet(hPlMod[1][nb]) +
                           HMdcBArray::getNSet(hPlMod[2][nb]) + HMdcBArray::getNSet(hPlMod[3][nb]);
              if( wt >= minAmpCut ) {
                testBinForVertex(nb%nBinX,y);
                for(Int_t i=0;i<4;i++) hPlMod[i][nb] = 0; // Test this bin once only
              }
            }
          }
        }
      } else {
        if(nFiredLay<minAmpCut) {
          // makeLayProjV2() :
          while( setNextCell() ) {
            UInt_t y    = pLUTCell->getYBinMin();
            UInt_t nLns = pLUTCell->getNLines();
            for(UInt_t ln=0; ln<nLns; ln++,y++) {
              UInt_t shift = y * nBinX;
              UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
              UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
              if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
              if(nbF<cXMinM[y]) nbF = cXMinM[y];
              if(nbF > nbL) continue;
              UChar_t* hPlModE = cHPlModM+nbL;
              for(UChar_t* bt = cHPlModM+nbF; bt<=hPlModE; bt++) *bt |= add;
            }
          }  
        } else while(  setNextCell()  ) {
          UInt_t y    = pLUTCell->getYBinMin();
          UInt_t nLns = pLUTCell->getNLines();
          for(UInt_t ln=0; ln<nLns; ln++,y++) {
            UInt_t shift = y * nBinX;
            UInt_t nbL   = pLUTCell->getXBinMax(ln)+shift;
            UInt_t nbF   = pLUTCell->getXBinMin(ln)+shift;
            if(nbL>cXMaxM[y]) nbL = cXMaxM[y];
            if(nbF<cXMinM[y]) nbF = cXMinM[y];
            if(nbF > nbL) continue;
            
            UChar_t* bt  = cHPlModM+nbF;
            for(UInt_t nb=nbF; nb<=nbL; nb++,bt++) {
              *bt |= add;
              UChar_t wt = HMdcBArray::getNSet(hPlMod[0][nb]) + HMdcBArray::getNSet(hPlMod[1][nb]) +
                           HMdcBArray::getNSet(hPlMod[2][nb]) + HMdcBArray::getNSet(hPlMod[3][nb]);
              if( wt >= minAmpCut ) {
                testBinForVertex(nb%nBinX,y);
                for(Int_t i=0;i<4;i++) hPlMod[i][nb] = 0; // Test this bin once only
              }
            }
          }
        }
      } 
    }
  }
  clearPrModInSec();
}

void HMdcLookUpTbSec::testBinForVertexF(Int_t bx, Int_t by) {
  // Test inner MDC only
  if(lTargPnt == 0) return;
 
  Int_t maxAmpV = nMods*6;
  Int_t ampCut1 = 12 - levelVertF;
  Int_t ampCut2 = ampCut1+2;       // For shape of spike

  Double_t xb = xBinsPos[bx];
  Double_t yb = yBinsPos[by];

  Double_t yOffArr[10];
  Double_t dDmin2[10];
  Double_t dDmax2[10];

  Int_t nFrLayers[lTargPnt];    // Number of fired layers for each target
  for(Int_t nt=0;nt<lTargPnt;nt++) nFrLayers[nt] = 0;
         
  Int_t iLay    = 0;
  Int_t maxNFrLayers = 0;
  for(Int_t mod=0;mod<2;mod++) if((*array)[mod]) {
    HMdcSizesCellsMod &rSCMod     = (*pSCellSec)[mod];
    HMdcModListCells  &rModLCells = (*pListCells)[mod];
    HMdcLookUpTbMod   &rLUTMod    = (*this)[mod];
    for(Int_t lay=0;lay<6;lay++,iLay++) {
      Int_t layCut = iLay-ampCut2;
      HMdcSizesCellsLayer &rSCLay     = rSCMod[lay];
      HMdcLayListCells    &rLayLCells = rModLCells[lay];
      HMdcLookUpTbLayer   &rLUTLayer  = rLUTMod[lay];
      
      Double_t* yTr   = rLUTLayer.getYTargetArr();
      Double_t* zTr   = rLUTLayer.getZTargetArr();
    
      Double_t  y,z;
      rLUTLayer.transToRotLay(xb,yb,y,z);
      
      Double_t  yw1   = (y*zTr[indFirstTPnt] - yTr[indFirstTPnt]*z)/(zTr[indFirstTPnt] - z);
      Double_t  yw2   = (y*zTr[indLastTPnt ] - yTr[indLastTPnt ]*z)/(zTr[indLastTPnt ] - z);
      Int_t     cell1 = rSCLay.calcInnerSegCell(yw1);
      Int_t     cell2 = rSCLay.calcInnerSegCell(yw2);
      if(cell1 > cell2) {
        Int_t c = cell2;
        cell2   = cell1;
        cell1   = c;
      }
      cell1--; //cell1 -= 2; ????
      cell2++; //cell2 += 2; ????

      Int_t nCells = 0;
      for(Int_t cell=cell1;cell<=cell2;cell++) if(rLayLCells.getTime(cell) != 0) {
        HMdcLookUpTbCell& rLUTCell = rLUTLayer[cell];
        dDmin2[nCells]  = rLUTCell.getDDistMinCut2VF();
        dDmax2[nCells]  = rLUTCell.getDDistMaxCut2VF();
        yOffArr[nCells] = rSCLay[cell].getWirePos();
        nCells++;
        if(nCells==10) break;
      }

      // Scan: ========================================
      for(Int_t nt=0;nt<lTargPnt;nt++) if(layCut <= nFrLayers[nt]) { //== if(iLay-nFrLayers[nt]<=ampCut2)
        Int_t c = 0;
          Double_t dyDdz = (y - yTr[nt])/(z - zTr[nt]);
          Double_t c1    = y-dyDdz*z;
          Double_t c2    = 1.+dyDdz*dyDdz;
          for(;c<nCells;c++) {
            Double_t dDist2 = c1-yOffArr[c];
            dDist2 *= dDist2;
            if(dDist2 > dDmin2[c]*c2 && dDist2 < dDmax2[c]*c2) {
              nFrLayers[nt]++;
              if(maxNFrLayers < nFrLayers[nt]) maxNFrLayers = nFrLayers[nt];
              break;
            }
          }
      }
      if(iLay-maxNFrLayers >= ampCut1) return;  // Not enough amplitude!
    }
  }
 
  Int_t cut = maxAmpV - ampCut2 -1;
  for(Int_t nt=0;nt<lTargPnt;nt++) if(nFrLayers[nt]>cut) vertexStat[nt] += nFrLayers[nt]-cut;
}

void HMdcLookUpTbSec::testBinForVertex(Int_t bx, Int_t by) {
  // For field off data
  if(lTargPnt == 0) return;

  Int_t maxAmpV = nMods*6;
  Int_t ampCut1 = 12 - levelVertF;
  Int_t ampCut2 = ampCut1+2;       // For shape of spike

  Double_t xb = xBinsPos[bx];
  Double_t yb = yBinsPos[by];

  Double_t yOffArr[20];
  Double_t dDmin2[20];
  Double_t dDmax2[20];

  Int_t nFrLayers[lTargPnt];    // Number of fired layers for each target
  for(Int_t nt=0;nt<lTargPnt;nt++) nFrLayers[nt] = 0;
         
  Int_t iLay    = 0;
  Int_t maxNFrLayers = 0;
  for(Int_t mod=0;mod<4;mod++) if((*array)[mod]) {
    HMdcSizesCellsMod &rSCMod     = (*pSCellSec)[mod];
    HMdcModListCells  &rModLCells = (*pListCells)[mod];
    HMdcLookUpTbMod   &rLUTMod    = (*this)[mod];
    for(Int_t lay=0;lay<6;lay++,iLay++) {
      Int_t layCut = iLay-ampCut2;
      HMdcSizesCellsLayer &rSCLay     = rSCMod[lay];
      HMdcLayListCells    &rLayLCells = rModLCells[lay];
      HMdcLookUpTbLayer   &rLUTLayer  = rLUTMod[lay];
      
      Double_t* yTr   = rLUTLayer.getYTargetArr();
      Double_t* zTr   = rLUTLayer.getZTargetArr();
      Double_t* yTrP2 = rLUTLayer.getYTargetArrP2();
      Double_t* zTrP2 = rLUTLayer.getZTargetArrP2();
    
      Double_t  y,z;
      rLUTLayer.transToRotLay(xb,yb,y,z);
      
      Double_t  yw1   = (y*zTr[indFirstTPnt] - yTr[indFirstTPnt]*z)/(zTr[indFirstTPnt] - z);
      Double_t  yw2   = (y*zTr[indLastTPnt ] - yTr[indLastTPnt ]*z)/(zTr[indLastTPnt ] - z);
      Int_t     cell1 = rSCLay.calcInnerSegCell(yw1);
      Int_t     cell2 = rSCLay.calcInnerSegCell(yw2);
      if(cell1 > cell2) {
        Int_t c = cell2;
        cell2   = cell1;
        cell1   = c;
      }
      cell1--; //cell1 -= 2; ????
      cell2++; //cell2 += 2; ????

      Int_t nCells = 0;
      Int_t endP1  = 0;
      for(Int_t cell=cell1;cell<=cell2;cell++) if(rLayLCells.getTime(cell) != 0) {
        HMdcLookUpTbCell& rLUTCell = rLUTLayer[cell];
        dDmin2[nCells]  = rLUTCell.getDDistMinCut2VF();
        dDmax2[nCells]  = rLUTCell.getDDistMaxCut2VF();
        yOffArr[nCells] = rSCLay[cell].getWirePos();
        if(mod < 2 || rSCLay.getLayerPart(cell)==0) endP1++;
        nCells++;
        if(nCells==20) break;
      }

      // Scan: ========================================
      for(Int_t nt=0;nt<lTargPnt;nt++) if(layCut <= nFrLayers[nt]) { //== if(iLay-nFrLayers[nt]<=ampCut2)
        Int_t c = 0;
        if(endP1>0) {
          Double_t dyDdz = (y - yTr[nt])/(z - zTr[nt]);
          Double_t c1    = y-dyDdz*z;
          Double_t c2    = 1.+dyDdz*dyDdz;
          for(;c<endP1;c++) {
            Double_t dDist2 = c1-yOffArr[c];
            dDist2 *= dDist2;
            if(dDist2 > dDmin2[c]*c2 && dDist2 < dDmax2[c]*c2) {
              nFrLayers[nt]++;
              if(maxNFrLayers < nFrLayers[nt]) maxNFrLayers = nFrLayers[nt];
              break;
            }
          }
        }
        if(endP1<nCells && c==endP1) { //Layer second part:
          Double_t dyDdz = (y - yTrP2[nt])/(z - zTrP2[nt]);
          Double_t c1    = y-dyDdz*z;
          Double_t c2    = 1.+dyDdz*dyDdz;
          for(;c<nCells;c++) {
            Double_t dDist2 = c1-yOffArr[c];
            dDist2 *= dDist2;
            if(dDist2 > dDmin2[c]*c2 && dDist2 < dDmax2[c]*c2) {
              nFrLayers[nt]++;
              if(maxNFrLayers < nFrLayers[nt]) maxNFrLayers = nFrLayers[nt];
              break;
            }
          }
        }
      }
      if(iLay-maxNFrLayers >= ampCut1) return;  // Not enough amplitude!
    }
  }
 
  Int_t cut = maxAmpV - ampCut2 -1;
  for(Int_t nt=0;nt<lTargPnt;nt++) if(nFrLayers[nt]>cut) vertexStat[nt] += nFrLayers[nt]-cut;
}

void HMdcLookUpTbSec::setVertexPoint(Int_t vp) {
  vertexPoint = vp;
  for(Int_t mod=0; mod<4; mod++) if( (*array)[mod] ) {
    HMdcLookUpTbMod& pLUTbMod = (*this)[mod];
    for(Int_t lay=0; lay<6; lay++) pLUTbMod[lay].setVertexPoint(vp);
  }
}

void HMdcLookUpTbLayer::setVertexPoint(Int_t vp) {
  if(vp>=0) {
    layPart1.yVertex = layPart1.yTp[vp];
    layPart1.zVertex = layPart1.zTp[vp];
  } else {
    layPart1.yVertex = layPart1.yt;
    layPart1.zVertex = layPart1.zt;
  }
  if(layPart2==NULL) return;
  if(vp>=0) {
    layPart2->yVertex = layPart2->yTp[vp];
    layPart2->zVertex = layPart2->zTp[vp];
  } else {
    layPart2->yVertex = layPart2->yt;
    layPart2->zVertex = layPart2->zt;
  }
}

void HMdcLookUpTbLayer::setCurrentCell(Int_t cell) {
  Int_t layPart = pSCellLay->getLayerPart(cell);
  if(layPart == 1) currLayPart =  layPart2;
  else             currLayPart = &layPart1;
  yWirePos = (*pSCellLay)[cell].getWirePos();
  dDmin    = pLTCellArr[cell].getDDistMinCut();
  dDmax    = pLTCellArr[cell].getDDistMaxCut();
}
 hmdclookuptb.cc:1
 hmdclookuptb.cc:2
 hmdclookuptb.cc:3
 hmdclookuptb.cc:4
 hmdclookuptb.cc:5
 hmdclookuptb.cc:6
 hmdclookuptb.cc:7
 hmdclookuptb.cc:8
 hmdclookuptb.cc:9
 hmdclookuptb.cc:10
 hmdclookuptb.cc:11
 hmdclookuptb.cc:12
 hmdclookuptb.cc:13
 hmdclookuptb.cc:14
 hmdclookuptb.cc:15
 hmdclookuptb.cc:16
 hmdclookuptb.cc:17
 hmdclookuptb.cc:18
 hmdclookuptb.cc:19
 hmdclookuptb.cc:20
 hmdclookuptb.cc:21
 hmdclookuptb.cc:22
 hmdclookuptb.cc:23
 hmdclookuptb.cc:24
 hmdclookuptb.cc:25
 hmdclookuptb.cc:26
 hmdclookuptb.cc:27
 hmdclookuptb.cc:28
 hmdclookuptb.cc:29
 hmdclookuptb.cc:30
 hmdclookuptb.cc:31
 hmdclookuptb.cc:32
 hmdclookuptb.cc:33
 hmdclookuptb.cc:34
 hmdclookuptb.cc:35
 hmdclookuptb.cc:36
 hmdclookuptb.cc:37
 hmdclookuptb.cc:38
 hmdclookuptb.cc:39
 hmdclookuptb.cc:40
 hmdclookuptb.cc:41
 hmdclookuptb.cc:42
 hmdclookuptb.cc:43
 hmdclookuptb.cc:44
 hmdclookuptb.cc:45
 hmdclookuptb.cc:46
 hmdclookuptb.cc:47
 hmdclookuptb.cc:48
 hmdclookuptb.cc:49
 hmdclookuptb.cc:50
 hmdclookuptb.cc:51
 hmdclookuptb.cc:52
 hmdclookuptb.cc:53
 hmdclookuptb.cc:54
 hmdclookuptb.cc:55
 hmdclookuptb.cc:56
 hmdclookuptb.cc:57
 hmdclookuptb.cc:58
 hmdclookuptb.cc:59
 hmdclookuptb.cc:60
 hmdclookuptb.cc:61
 hmdclookuptb.cc:62
 hmdclookuptb.cc:63
 hmdclookuptb.cc:64
 hmdclookuptb.cc:65
 hmdclookuptb.cc:66
 hmdclookuptb.cc:67
 hmdclookuptb.cc:68
 hmdclookuptb.cc:69
 hmdclookuptb.cc:70
 hmdclookuptb.cc:71
 hmdclookuptb.cc:72
 hmdclookuptb.cc:73
 hmdclookuptb.cc:74
 hmdclookuptb.cc:75
 hmdclookuptb.cc:76
 hmdclookuptb.cc:77
 hmdclookuptb.cc:78
 hmdclookuptb.cc:79
 hmdclookuptb.cc:80
 hmdclookuptb.cc:81
 hmdclookuptb.cc:82
 hmdclookuptb.cc:83
 hmdclookuptb.cc:84
 hmdclookuptb.cc:85
 hmdclookuptb.cc:86
 hmdclookuptb.cc:87
 hmdclookuptb.cc:88
 hmdclookuptb.cc:89
 hmdclookuptb.cc:90
 hmdclookuptb.cc:91
 hmdclookuptb.cc:92
 hmdclookuptb.cc:93
 hmdclookuptb.cc:94
 hmdclookuptb.cc:95
 hmdclookuptb.cc:96
 hmdclookuptb.cc:97
 hmdclookuptb.cc:98
 hmdclookuptb.cc:99
 hmdclookuptb.cc:100
 hmdclookuptb.cc:101
 hmdclookuptb.cc:102
 hmdclookuptb.cc:103
 hmdclookuptb.cc:104
 hmdclookuptb.cc:105
 hmdclookuptb.cc:106
 hmdclookuptb.cc:107
 hmdclookuptb.cc:108
 hmdclookuptb.cc:109
 hmdclookuptb.cc:110
 hmdclookuptb.cc:111
 hmdclookuptb.cc:112
 hmdclookuptb.cc:113
 hmdclookuptb.cc:114
 hmdclookuptb.cc:115
 hmdclookuptb.cc:116
 hmdclookuptb.cc:117
 hmdclookuptb.cc:118
 hmdclookuptb.cc:119
 hmdclookuptb.cc:120
 hmdclookuptb.cc:121
 hmdclookuptb.cc:122
 hmdclookuptb.cc:123
 hmdclookuptb.cc:124
 hmdclookuptb.cc:125
 hmdclookuptb.cc:126
 hmdclookuptb.cc:127
 hmdclookuptb.cc:128
 hmdclookuptb.cc:129
 hmdclookuptb.cc:130
 hmdclookuptb.cc:131
 hmdclookuptb.cc:132
 hmdclookuptb.cc:133
 hmdclookuptb.cc:134
 hmdclookuptb.cc:135
 hmdclookuptb.cc:136
 hmdclookuptb.cc:137
 hmdclookuptb.cc:138
 hmdclookuptb.cc:139
 hmdclookuptb.cc:140
 hmdclookuptb.cc:141
 hmdclookuptb.cc:142
 hmdclookuptb.cc:143
 hmdclookuptb.cc:144
 hmdclookuptb.cc:145
 hmdclookuptb.cc:146
 hmdclookuptb.cc:147
 hmdclookuptb.cc:148
 hmdclookuptb.cc:149
 hmdclookuptb.cc:150
 hmdclookuptb.cc:151
 hmdclookuptb.cc:152
 hmdclookuptb.cc:153
 hmdclookuptb.cc:154
 hmdclookuptb.cc:155
 hmdclookuptb.cc:156
 hmdclookuptb.cc:157
 hmdclookuptb.cc:158
 hmdclookuptb.cc:159
 hmdclookuptb.cc:160
 hmdclookuptb.cc:161
 hmdclookuptb.cc:162
 hmdclookuptb.cc:163
 hmdclookuptb.cc:164
 hmdclookuptb.cc:165
 hmdclookuptb.cc:166
 hmdclookuptb.cc:167
 hmdclookuptb.cc:168
 hmdclookuptb.cc:169
 hmdclookuptb.cc:170
 hmdclookuptb.cc:171
 hmdclookuptb.cc:172
 hmdclookuptb.cc:173
 hmdclookuptb.cc:174
 hmdclookuptb.cc:175
 hmdclookuptb.cc:176
 hmdclookuptb.cc:177
 hmdclookuptb.cc:178
 hmdclookuptb.cc:179
 hmdclookuptb.cc:180
 hmdclookuptb.cc:181
 hmdclookuptb.cc:182
 hmdclookuptb.cc:183
 hmdclookuptb.cc:184
 hmdclookuptb.cc:185
 hmdclookuptb.cc:186
 hmdclookuptb.cc:187
 hmdclookuptb.cc:188
 hmdclookuptb.cc:189
 hmdclookuptb.cc:190
 hmdclookuptb.cc:191
 hmdclookuptb.cc:192
 hmdclookuptb.cc:193
 hmdclookuptb.cc:194
 hmdclookuptb.cc:195
 hmdclookuptb.cc:196
 hmdclookuptb.cc:197
 hmdclookuptb.cc:198
 hmdclookuptb.cc:199
 hmdclookuptb.cc:200
 hmdclookuptb.cc:201
 hmdclookuptb.cc:202
 hmdclookuptb.cc:203
 hmdclookuptb.cc:204
 hmdclookuptb.cc:205
 hmdclookuptb.cc:206
 hmdclookuptb.cc:207
 hmdclookuptb.cc:208
 hmdclookuptb.cc:209
 hmdclookuptb.cc:210
 hmdclookuptb.cc:211
 hmdclookuptb.cc:212
 hmdclookuptb.cc:213
 hmdclookuptb.cc:214
 hmdclookuptb.cc:215
 hmdclookuptb.cc:216
 hmdclookuptb.cc:217
 hmdclookuptb.cc:218
 hmdclookuptb.cc:219
 hmdclookuptb.cc:220
 hmdclookuptb.cc:221
 hmdclookuptb.cc:222
 hmdclookuptb.cc:223
 hmdclookuptb.cc:224
 hmdclookuptb.cc:225
 hmdclookuptb.cc:226
 hmdclookuptb.cc:227
 hmdclookuptb.cc:228
 hmdclookuptb.cc:229
 hmdclookuptb.cc:230
 hmdclookuptb.cc:231
 hmdclookuptb.cc:232
 hmdclookuptb.cc:233
 hmdclookuptb.cc:234
 hmdclookuptb.cc:235
 hmdclookuptb.cc:236
 hmdclookuptb.cc:237
 hmdclookuptb.cc:238
 hmdclookuptb.cc:239
 hmdclookuptb.cc:240
 hmdclookuptb.cc:241
 hmdclookuptb.cc:242
 hmdclookuptb.cc:243
 hmdclookuptb.cc:244
 hmdclookuptb.cc:245
 hmdclookuptb.cc:246
 hmdclookuptb.cc:247
 hmdclookuptb.cc:248
 hmdclookuptb.cc:249
 hmdclookuptb.cc:250
 hmdclookuptb.cc:251
 hmdclookuptb.cc:252
 hmdclookuptb.cc:253
 hmdclookuptb.cc:254
 hmdclookuptb.cc:255
 hmdclookuptb.cc:256
 hmdclookuptb.cc:257
 hmdclookuptb.cc:258
 hmdclookuptb.cc:259
 hmdclookuptb.cc:260
 hmdclookuptb.cc:261
 hmdclookuptb.cc:262
 hmdclookuptb.cc:263
 hmdclookuptb.cc:264
 hmdclookuptb.cc:265
 hmdclookuptb.cc:266
 hmdclookuptb.cc:267
 hmdclookuptb.cc:268
 hmdclookuptb.cc:269
 hmdclookuptb.cc:270
 hmdclookuptb.cc:271
 hmdclookuptb.cc:272
 hmdclookuptb.cc:273
 hmdclookuptb.cc:274
 hmdclookuptb.cc:275
 hmdclookuptb.cc:276
 hmdclookuptb.cc:277
 hmdclookuptb.cc:278
 hmdclookuptb.cc:279
 hmdclookuptb.cc:280
 hmdclookuptb.cc:281
 hmdclookuptb.cc:282
 hmdclookuptb.cc:283
 hmdclookuptb.cc:284
 hmdclookuptb.cc:285
 hmdclookuptb.cc:286
 hmdclookuptb.cc:287
 hmdclookuptb.cc:288
 hmdclookuptb.cc:289
 hmdclookuptb.cc:290
 hmdclookuptb.cc:291
 hmdclookuptb.cc:292
 hmdclookuptb.cc:293
 hmdclookuptb.cc:294
 hmdclookuptb.cc:295
 hmdclookuptb.cc:296
 hmdclookuptb.cc:297
 hmdclookuptb.cc:298
 hmdclookuptb.cc:299
 hmdclookuptb.cc:300
 hmdclookuptb.cc:301
 hmdclookuptb.cc:302
 hmdclookuptb.cc:303
 hmdclookuptb.cc:304
 hmdclookuptb.cc:305
 hmdclookuptb.cc:306
 hmdclookuptb.cc:307
 hmdclookuptb.cc:308
 hmdclookuptb.cc:309
 hmdclookuptb.cc:310
 hmdclookuptb.cc:311
 hmdclookuptb.cc:312
 hmdclookuptb.cc:313
 hmdclookuptb.cc:314
 hmdclookuptb.cc:315
 hmdclookuptb.cc:316
 hmdclookuptb.cc:317
 hmdclookuptb.cc:318
 hmdclookuptb.cc:319
 hmdclookuptb.cc:320
 hmdclookuptb.cc:321
 hmdclookuptb.cc:322
 hmdclookuptb.cc:323
 hmdclookuptb.cc:324
 hmdclookuptb.cc:325
 hmdclookuptb.cc:326
 hmdclookuptb.cc:327
 hmdclookuptb.cc:328
 hmdclookuptb.cc:329
 hmdclookuptb.cc:330
 hmdclookuptb.cc:331
 hmdclookuptb.cc:332
 hmdclookuptb.cc:333
 hmdclookuptb.cc:334
 hmdclookuptb.cc:335
 hmdclookuptb.cc:336
 hmdclookuptb.cc:337
 hmdclookuptb.cc:338
 hmdclookuptb.cc:339
 hmdclookuptb.cc:340
 hmdclookuptb.cc:341
 hmdclookuptb.cc:342
 hmdclookuptb.cc:343
 hmdclookuptb.cc:344
 hmdclookuptb.cc:345
 hmdclookuptb.cc:346
 hmdclookuptb.cc:347
 hmdclookuptb.cc:348
 hmdclookuptb.cc:349
 hmdclookuptb.cc:350
 hmdclookuptb.cc:351
 hmdclookuptb.cc:352
 hmdclookuptb.cc:353
 hmdclookuptb.cc:354
 hmdclookuptb.cc:355
 hmdclookuptb.cc:356
 hmdclookuptb.cc:357
 hmdclookuptb.cc:358
 hmdclookuptb.cc:359
 hmdclookuptb.cc:360
 hmdclookuptb.cc:361
 hmdclookuptb.cc:362
 hmdclookuptb.cc:363
 hmdclookuptb.cc:364
 hmdclookuptb.cc:365
 hmdclookuptb.cc:366
 hmdclookuptb.cc:367
 hmdclookuptb.cc:368
 hmdclookuptb.cc:369
 hmdclookuptb.cc:370
 hmdclookuptb.cc:371
 hmdclookuptb.cc:372
 hmdclookuptb.cc:373
 hmdclookuptb.cc:374
 hmdclookuptb.cc:375
 hmdclookuptb.cc:376
 hmdclookuptb.cc:377
 hmdclookuptb.cc:378
 hmdclookuptb.cc:379
 hmdclookuptb.cc:380
 hmdclookuptb.cc:381
 hmdclookuptb.cc:382
 hmdclookuptb.cc:383
 hmdclookuptb.cc:384
 hmdclookuptb.cc:385
 hmdclookuptb.cc:386
 hmdclookuptb.cc:387
 hmdclookuptb.cc:388
 hmdclookuptb.cc:389
 hmdclookuptb.cc:390
 hmdclookuptb.cc:391
 hmdclookuptb.cc:392
 hmdclookuptb.cc:393
 hmdclookuptb.cc:394
 hmdclookuptb.cc:395
 hmdclookuptb.cc:396
 hmdclookuptb.cc:397
 hmdclookuptb.cc:398
 hmdclookuptb.cc:399
 hmdclookuptb.cc:400
 hmdclookuptb.cc:401
 hmdclookuptb.cc:402
 hmdclookuptb.cc:403
 hmdclookuptb.cc:404
 hmdclookuptb.cc:405
 hmdclookuptb.cc:406
 hmdclookuptb.cc:407
 hmdclookuptb.cc:408
 hmdclookuptb.cc:409
 hmdclookuptb.cc:410
 hmdclookuptb.cc:411
 hmdclookuptb.cc:412
 hmdclookuptb.cc:413
 hmdclookuptb.cc:414
 hmdclookuptb.cc:415
 hmdclookuptb.cc:416
 hmdclookuptb.cc:417
 hmdclookuptb.cc:418
 hmdclookuptb.cc:419
 hmdclookuptb.cc:420
 hmdclookuptb.cc:421
 hmdclookuptb.cc:422
 hmdclookuptb.cc:423
 hmdclookuptb.cc:424
 hmdclookuptb.cc:425
 hmdclookuptb.cc:426
 hmdclookuptb.cc:427
 hmdclookuptb.cc:428
 hmdclookuptb.cc:429
 hmdclookuptb.cc:430
 hmdclookuptb.cc:431
 hmdclookuptb.cc:432
 hmdclookuptb.cc:433
 hmdclookuptb.cc:434
 hmdclookuptb.cc:435
 hmdclookuptb.cc:436
 hmdclookuptb.cc:437
 hmdclookuptb.cc:438
 hmdclookuptb.cc:439
 hmdclookuptb.cc:440
 hmdclookuptb.cc:441
 hmdclookuptb.cc:442
 hmdclookuptb.cc:443
 hmdclookuptb.cc:444
 hmdclookuptb.cc:445
 hmdclookuptb.cc:446
 hmdclookuptb.cc:447
 hmdclookuptb.cc:448
 hmdclookuptb.cc:449
 hmdclookuptb.cc:450
 hmdclookuptb.cc:451
 hmdclookuptb.cc:452
 hmdclookuptb.cc:453
 hmdclookuptb.cc:454
 hmdclookuptb.cc:455
 hmdclookuptb.cc:456
 hmdclookuptb.cc:457
 hmdclookuptb.cc:458
 hmdclookuptb.cc:459
 hmdclookuptb.cc:460
 hmdclookuptb.cc:461
 hmdclookuptb.cc:462
 hmdclookuptb.cc:463
 hmdclookuptb.cc:464
 hmdclookuptb.cc:465
 hmdclookuptb.cc:466
 hmdclookuptb.cc:467
 hmdclookuptb.cc:468
 hmdclookuptb.cc:469
 hmdclookuptb.cc:470
 hmdclookuptb.cc:471
 hmdclookuptb.cc:472
 hmdclookuptb.cc:473
 hmdclookuptb.cc:474
 hmdclookuptb.cc:475
 hmdclookuptb.cc:476
 hmdclookuptb.cc:477
 hmdclookuptb.cc:478
 hmdclookuptb.cc:479
 hmdclookuptb.cc:480
 hmdclookuptb.cc:481
 hmdclookuptb.cc:482
 hmdclookuptb.cc:483
 hmdclookuptb.cc:484
 hmdclookuptb.cc:485
 hmdclookuptb.cc:486
 hmdclookuptb.cc:487
 hmdclookuptb.cc:488
 hmdclookuptb.cc:489
 hmdclookuptb.cc:490
 hmdclookuptb.cc:491
 hmdclookuptb.cc:492
 hmdclookuptb.cc:493
 hmdclookuptb.cc:494
 hmdclookuptb.cc:495
 hmdclookuptb.cc:496
 hmdclookuptb.cc:497
 hmdclookuptb.cc:498
 hmdclookuptb.cc:499
 hmdclookuptb.cc:500
 hmdclookuptb.cc:501
 hmdclookuptb.cc:502
 hmdclookuptb.cc:503
 hmdclookuptb.cc:504
 hmdclookuptb.cc:505
 hmdclookuptb.cc:506
 hmdclookuptb.cc:507
 hmdclookuptb.cc:508
 hmdclookuptb.cc:509
 hmdclookuptb.cc:510
 hmdclookuptb.cc:511
 hmdclookuptb.cc:512
 hmdclookuptb.cc:513
 hmdclookuptb.cc:514
 hmdclookuptb.cc:515
 hmdclookuptb.cc:516
 hmdclookuptb.cc:517
 hmdclookuptb.cc:518
 hmdclookuptb.cc:519
 hmdclookuptb.cc:520
 hmdclookuptb.cc:521
 hmdclookuptb.cc:522
 hmdclookuptb.cc:523
 hmdclookuptb.cc:524
 hmdclookuptb.cc:525
 hmdclookuptb.cc:526
 hmdclookuptb.cc:527
 hmdclookuptb.cc:528
 hmdclookuptb.cc:529
 hmdclookuptb.cc:530
 hmdclookuptb.cc:531
 hmdclookuptb.cc:532
 hmdclookuptb.cc:533
 hmdclookuptb.cc:534
 hmdclookuptb.cc:535
 hmdclookuptb.cc:536
 hmdclookuptb.cc:537
 hmdclookuptb.cc:538
 hmdclookuptb.cc:539
 hmdclookuptb.cc:540
 hmdclookuptb.cc:541
 hmdclookuptb.cc:542
 hmdclookuptb.cc:543
 hmdclookuptb.cc:544
 hmdclookuptb.cc:545
 hmdclookuptb.cc:546
 hmdclookuptb.cc:547
 hmdclookuptb.cc:548
 hmdclookuptb.cc:549
 hmdclookuptb.cc:550
 hmdclookuptb.cc:551
 hmdclookuptb.cc:552
 hmdclookuptb.cc:553
 hmdclookuptb.cc:554
 hmdclookuptb.cc:555
 hmdclookuptb.cc:556
 hmdclookuptb.cc:557
 hmdclookuptb.cc:558
 hmdclookuptb.cc:559
 hmdclookuptb.cc:560
 hmdclookuptb.cc:561
 hmdclookuptb.cc:562
 hmdclookuptb.cc:563
 hmdclookuptb.cc:564
 hmdclookuptb.cc:565
 hmdclookuptb.cc:566
 hmdclookuptb.cc:567
 hmdclookuptb.cc:568
 hmdclookuptb.cc:569
 hmdclookuptb.cc:570
 hmdclookuptb.cc:571
 hmdclookuptb.cc:572
 hmdclookuptb.cc:573
 hmdclookuptb.cc:574
 hmdclookuptb.cc:575
 hmdclookuptb.cc:576
 hmdclookuptb.cc:577
 hmdclookuptb.cc:578
 hmdclookuptb.cc:579
 hmdclookuptb.cc:580
 hmdclookuptb.cc:581
 hmdclookuptb.cc:582
 hmdclookuptb.cc:583
 hmdclookuptb.cc:584
 hmdclookuptb.cc:585
 hmdclookuptb.cc:586
 hmdclookuptb.cc:587
 hmdclookuptb.cc:588
 hmdclookuptb.cc:589
 hmdclookuptb.cc:590
 hmdclookuptb.cc:591
 hmdclookuptb.cc:592
 hmdclookuptb.cc:593
 hmdclookuptb.cc:594
 hmdclookuptb.cc:595
 hmdclookuptb.cc:596
 hmdclookuptb.cc:597
 hmdclookuptb.cc:598
 hmdclookuptb.cc:599
 hmdclookuptb.cc:600
 hmdclookuptb.cc:601
 hmdclookuptb.cc:602
 hmdclookuptb.cc:603
 hmdclookuptb.cc:604
 hmdclookuptb.cc:605
 hmdclookuptb.cc:606
 hmdclookuptb.cc:607
 hmdclookuptb.cc:608
 hmdclookuptb.cc:609
 hmdclookuptb.cc:610
 hmdclookuptb.cc:611
 hmdclookuptb.cc:612
 hmdclookuptb.cc:613
 hmdclookuptb.cc:614
 hmdclookuptb.cc:615
 hmdclookuptb.cc:616
 hmdclookuptb.cc:617
 hmdclookuptb.cc:618
 hmdclookuptb.cc:619
 hmdclookuptb.cc:620
 hmdclookuptb.cc:621
 hmdclookuptb.cc:622
 hmdclookuptb.cc:623
 hmdclookuptb.cc:624
 hmdclookuptb.cc:625
 hmdclookuptb.cc:626
 hmdclookuptb.cc:627
 hmdclookuptb.cc:628
 hmdclookuptb.cc:629
 hmdclookuptb.cc:630
 hmdclookuptb.cc:631
 hmdclookuptb.cc:632
 hmdclookuptb.cc:633
 hmdclookuptb.cc:634
 hmdclookuptb.cc:635
 hmdclookuptb.cc:636
 hmdclookuptb.cc:637
 hmdclookuptb.cc:638
 hmdclookuptb.cc:639
 hmdclookuptb.cc:640
 hmdclookuptb.cc:641
 hmdclookuptb.cc:642
 hmdclookuptb.cc:643
 hmdclookuptb.cc:644
 hmdclookuptb.cc:645
 hmdclookuptb.cc:646
 hmdclookuptb.cc:647
 hmdclookuptb.cc:648
 hmdclookuptb.cc:649
 hmdclookuptb.cc:650
 hmdclookuptb.cc:651
 hmdclookuptb.cc:652
 hmdclookuptb.cc:653
 hmdclookuptb.cc:654
 hmdclookuptb.cc:655
 hmdclookuptb.cc:656
 hmdclookuptb.cc:657
 hmdclookuptb.cc:658
 hmdclookuptb.cc:659
 hmdclookuptb.cc:660
 hmdclookuptb.cc:661
 hmdclookuptb.cc:662
 hmdclookuptb.cc:663
 hmdclookuptb.cc:664
 hmdclookuptb.cc:665
 hmdclookuptb.cc:666
 hmdclookuptb.cc:667
 hmdclookuptb.cc:668
 hmdclookuptb.cc:669
 hmdclookuptb.cc:670
 hmdclookuptb.cc:671
 hmdclookuptb.cc:672
 hmdclookuptb.cc:673
 hmdclookuptb.cc:674
 hmdclookuptb.cc:675
 hmdclookuptb.cc:676
 hmdclookuptb.cc:677
 hmdclookuptb.cc:678
 hmdclookuptb.cc:679
 hmdclookuptb.cc:680
 hmdclookuptb.cc:681
 hmdclookuptb.cc:682
 hmdclookuptb.cc:683
 hmdclookuptb.cc:684
 hmdclookuptb.cc:685
 hmdclookuptb.cc:686
 hmdclookuptb.cc:687
 hmdclookuptb.cc:688
 hmdclookuptb.cc:689
 hmdclookuptb.cc:690
 hmdclookuptb.cc:691
 hmdclookuptb.cc:692
 hmdclookuptb.cc:693
 hmdclookuptb.cc:694
 hmdclookuptb.cc:695
 hmdclookuptb.cc:696
 hmdclookuptb.cc:697
 hmdclookuptb.cc:698
 hmdclookuptb.cc:699
 hmdclookuptb.cc:700
 hmdclookuptb.cc:701
 hmdclookuptb.cc:702
 hmdclookuptb.cc:703
 hmdclookuptb.cc:704
 hmdclookuptb.cc:705
 hmdclookuptb.cc:706
 hmdclookuptb.cc:707
 hmdclookuptb.cc:708
 hmdclookuptb.cc:709
 hmdclookuptb.cc:710
 hmdclookuptb.cc:711
 hmdclookuptb.cc:712
 hmdclookuptb.cc:713
 hmdclookuptb.cc:714
 hmdclookuptb.cc:715
 hmdclookuptb.cc:716
 hmdclookuptb.cc:717
 hmdclookuptb.cc:718
 hmdclookuptb.cc:719
 hmdclookuptb.cc:720
 hmdclookuptb.cc:721
 hmdclookuptb.cc:722
 hmdclookuptb.cc:723
 hmdclookuptb.cc:724
 hmdclookuptb.cc:725
 hmdclookuptb.cc:726
 hmdclookuptb.cc:727
 hmdclookuptb.cc:728
 hmdclookuptb.cc:729
 hmdclookuptb.cc:730
 hmdclookuptb.cc:731
 hmdclookuptb.cc:732
 hmdclookuptb.cc:733
 hmdclookuptb.cc:734
 hmdclookuptb.cc:735
 hmdclookuptb.cc:736
 hmdclookuptb.cc:737
 hmdclookuptb.cc:738
 hmdclookuptb.cc:739
 hmdclookuptb.cc:740
 hmdclookuptb.cc:741
 hmdclookuptb.cc:742
 hmdclookuptb.cc:743
 hmdclookuptb.cc:744
 hmdclookuptb.cc:745
 hmdclookuptb.cc:746
 hmdclookuptb.cc:747
 hmdclookuptb.cc:748
 hmdclookuptb.cc:749
 hmdclookuptb.cc:750
 hmdclookuptb.cc:751
 hmdclookuptb.cc:752
 hmdclookuptb.cc:753
 hmdclookuptb.cc:754
 hmdclookuptb.cc:755
 hmdclookuptb.cc:756
 hmdclookuptb.cc:757
 hmdclookuptb.cc:758
 hmdclookuptb.cc:759
 hmdclookuptb.cc:760
 hmdclookuptb.cc:761
 hmdclookuptb.cc:762
 hmdclookuptb.cc:763
 hmdclookuptb.cc:764
 hmdclookuptb.cc:765
 hmdclookuptb.cc:766
 hmdclookuptb.cc:767
 hmdclookuptb.cc:768
 hmdclookuptb.cc:769
 hmdclookuptb.cc:770
 hmdclookuptb.cc:771
 hmdclookuptb.cc:772
 hmdclookuptb.cc:773
 hmdclookuptb.cc:774
 hmdclookuptb.cc:775
 hmdclookuptb.cc:776
 hmdclookuptb.cc:777
 hmdclookuptb.cc:778
 hmdclookuptb.cc:779
 hmdclookuptb.cc:780
 hmdclookuptb.cc:781
 hmdclookuptb.cc:782
 hmdclookuptb.cc:783
 hmdclookuptb.cc:784
 hmdclookuptb.cc:785
 hmdclookuptb.cc:786
 hmdclookuptb.cc:787
 hmdclookuptb.cc:788
 hmdclookuptb.cc:789
 hmdclookuptb.cc:790
 hmdclookuptb.cc:791
 hmdclookuptb.cc:792
 hmdclookuptb.cc:793
 hmdclookuptb.cc:794
 hmdclookuptb.cc:795
 hmdclookuptb.cc:796
 hmdclookuptb.cc:797
 hmdclookuptb.cc:798
 hmdclookuptb.cc:799
 hmdclookuptb.cc:800
 hmdclookuptb.cc:801
 hmdclookuptb.cc:802
 hmdclookuptb.cc:803
 hmdclookuptb.cc:804
 hmdclookuptb.cc:805
 hmdclookuptb.cc:806
 hmdclookuptb.cc:807
 hmdclookuptb.cc:808
 hmdclookuptb.cc:809
 hmdclookuptb.cc:810
 hmdclookuptb.cc:811
 hmdclookuptb.cc:812
 hmdclookuptb.cc:813
 hmdclookuptb.cc:814
 hmdclookuptb.cc:815
 hmdclookuptb.cc:816
 hmdclookuptb.cc:817
 hmdclookuptb.cc:818
 hmdclookuptb.cc:819
 hmdclookuptb.cc:820
 hmdclookuptb.cc:821
 hmdclookuptb.cc:822
 hmdclookuptb.cc:823
 hmdclookuptb.cc:824
 hmdclookuptb.cc:825
 hmdclookuptb.cc:826
 hmdclookuptb.cc:827
 hmdclookuptb.cc:828
 hmdclookuptb.cc:829
 hmdclookuptb.cc:830
 hmdclookuptb.cc:831
 hmdclookuptb.cc:832
 hmdclookuptb.cc:833
 hmdclookuptb.cc:834
 hmdclookuptb.cc:835
 hmdclookuptb.cc:836
 hmdclookuptb.cc:837
 hmdclookuptb.cc:838
 hmdclookuptb.cc:839
 hmdclookuptb.cc:840
 hmdclookuptb.cc:841
 hmdclookuptb.cc:842
 hmdclookuptb.cc:843
 hmdclookuptb.cc:844
 hmdclookuptb.cc:845
 hmdclookuptb.cc:846
 hmdclookuptb.cc:847
 hmdclookuptb.cc:848
 hmdclookuptb.cc:849
 hmdclookuptb.cc:850
 hmdclookuptb.cc:851
 hmdclookuptb.cc:852
 hmdclookuptb.cc:853
 hmdclookuptb.cc:854
 hmdclookuptb.cc:855
 hmdclookuptb.cc:856
 hmdclookuptb.cc:857
 hmdclookuptb.cc:858
 hmdclookuptb.cc:859
 hmdclookuptb.cc:860
 hmdclookuptb.cc:861
 hmdclookuptb.cc:862
 hmdclookuptb.cc:863
 hmdclookuptb.cc:864
 hmdclookuptb.cc:865
 hmdclookuptb.cc:866
 hmdclookuptb.cc:867
 hmdclookuptb.cc:868
 hmdclookuptb.cc:869
 hmdclookuptb.cc:870
 hmdclookuptb.cc:871
 hmdclookuptb.cc:872
 hmdclookuptb.cc:873
 hmdclookuptb.cc:874
 hmdclookuptb.cc:875
 hmdclookuptb.cc:876
 hmdclookuptb.cc:877
 hmdclookuptb.cc:878
 hmdclookuptb.cc:879
 hmdclookuptb.cc:880
 hmdclookuptb.cc:881
 hmdclookuptb.cc:882
 hmdclookuptb.cc:883
 hmdclookuptb.cc:884
 hmdclookuptb.cc:885
 hmdclookuptb.cc:886
 hmdclookuptb.cc:887
 hmdclookuptb.cc:888
 hmdclookuptb.cc:889
 hmdclookuptb.cc:890
 hmdclookuptb.cc:891
 hmdclookuptb.cc:892
 hmdclookuptb.cc:893
 hmdclookuptb.cc:894
 hmdclookuptb.cc:895
 hmdclookuptb.cc:896
 hmdclookuptb.cc:897
 hmdclookuptb.cc:898
 hmdclookuptb.cc:899
 hmdclookuptb.cc:900
 hmdclookuptb.cc:901
 hmdclookuptb.cc:902
 hmdclookuptb.cc:903
 hmdclookuptb.cc:904
 hmdclookuptb.cc:905
 hmdclookuptb.cc:906
 hmdclookuptb.cc:907
 hmdclookuptb.cc:908
 hmdclookuptb.cc:909
 hmdclookuptb.cc:910
 hmdclookuptb.cc:911
 hmdclookuptb.cc:912
 hmdclookuptb.cc:913
 hmdclookuptb.cc:914
 hmdclookuptb.cc:915
 hmdclookuptb.cc:916
 hmdclookuptb.cc:917
 hmdclookuptb.cc:918
 hmdclookuptb.cc:919
 hmdclookuptb.cc:920
 hmdclookuptb.cc:921
 hmdclookuptb.cc:922
 hmdclookuptb.cc:923
 hmdclookuptb.cc:924
 hmdclookuptb.cc:925
 hmdclookuptb.cc:926
 hmdclookuptb.cc:927
 hmdclookuptb.cc:928
 hmdclookuptb.cc:929
 hmdclookuptb.cc:930
 hmdclookuptb.cc:931
 hmdclookuptb.cc:932
 hmdclookuptb.cc:933
 hmdclookuptb.cc:934
 hmdclookuptb.cc:935
 hmdclookuptb.cc:936
 hmdclookuptb.cc:937
 hmdclookuptb.cc:938
 hmdclookuptb.cc:939
 hmdclookuptb.cc:940
 hmdclookuptb.cc:941
 hmdclookuptb.cc:942
 hmdclookuptb.cc:943
 hmdclookuptb.cc:944
 hmdclookuptb.cc:945
 hmdclookuptb.cc:946
 hmdclookuptb.cc:947
 hmdclookuptb.cc:948
 hmdclookuptb.cc:949
 hmdclookuptb.cc:950
 hmdclookuptb.cc:951
 hmdclookuptb.cc:952
 hmdclookuptb.cc:953
 hmdclookuptb.cc:954
 hmdclookuptb.cc:955
 hmdclookuptb.cc:956
 hmdclookuptb.cc:957
 hmdclookuptb.cc:958
 hmdclookuptb.cc:959
 hmdclookuptb.cc:960
 hmdclookuptb.cc:961
 hmdclookuptb.cc:962
 hmdclookuptb.cc:963
 hmdclookuptb.cc:964
 hmdclookuptb.cc:965
 hmdclookuptb.cc:966
 hmdclookuptb.cc:967
 hmdclookuptb.cc:968
 hmdclookuptb.cc:969
 hmdclookuptb.cc:970
 hmdclookuptb.cc:971
 hmdclookuptb.cc:972
 hmdclookuptb.cc:973
 hmdclookuptb.cc:974
 hmdclookuptb.cc:975
 hmdclookuptb.cc:976
 hmdclookuptb.cc:977
 hmdclookuptb.cc:978
 hmdclookuptb.cc:979
 hmdclookuptb.cc:980
 hmdclookuptb.cc:981
 hmdclookuptb.cc:982
 hmdclookuptb.cc:983
 hmdclookuptb.cc:984
 hmdclookuptb.cc:985
 hmdclookuptb.cc:986
 hmdclookuptb.cc:987
 hmdclookuptb.cc:988
 hmdclookuptb.cc:989
 hmdclookuptb.cc:990
 hmdclookuptb.cc:991
 hmdclookuptb.cc:992
 hmdclookuptb.cc:993
 hmdclookuptb.cc:994
 hmdclookuptb.cc:995
 hmdclookuptb.cc:996
 hmdclookuptb.cc:997
 hmdclookuptb.cc:998
 hmdclookuptb.cc:999
 hmdclookuptb.cc:1000
 hmdclookuptb.cc:1001
 hmdclookuptb.cc:1002
 hmdclookuptb.cc:1003
 hmdclookuptb.cc:1004
 hmdclookuptb.cc:1005
 hmdclookuptb.cc:1006
 hmdclookuptb.cc:1007
 hmdclookuptb.cc:1008
 hmdclookuptb.cc:1009
 hmdclookuptb.cc:1010
 hmdclookuptb.cc:1011
 hmdclookuptb.cc:1012
 hmdclookuptb.cc:1013
 hmdclookuptb.cc:1014
 hmdclookuptb.cc:1015
 hmdclookuptb.cc:1016
 hmdclookuptb.cc:1017
 hmdclookuptb.cc:1018
 hmdclookuptb.cc:1019
 hmdclookuptb.cc:1020
 hmdclookuptb.cc:1021
 hmdclookuptb.cc:1022
 hmdclookuptb.cc:1023
 hmdclookuptb.cc:1024
 hmdclookuptb.cc:1025
 hmdclookuptb.cc:1026
 hmdclookuptb.cc:1027
 hmdclookuptb.cc:1028
 hmdclookuptb.cc:1029
 hmdclookuptb.cc:1030
 hmdclookuptb.cc:1031
 hmdclookuptb.cc:1032
 hmdclookuptb.cc:1033
 hmdclookuptb.cc:1034
 hmdclookuptb.cc:1035
 hmdclookuptb.cc:1036
 hmdclookuptb.cc:1037
 hmdclookuptb.cc:1038
 hmdclookuptb.cc:1039
 hmdclookuptb.cc:1040
 hmdclookuptb.cc:1041
 hmdclookuptb.cc:1042
 hmdclookuptb.cc:1043
 hmdclookuptb.cc:1044
 hmdclookuptb.cc:1045
 hmdclookuptb.cc:1046
 hmdclookuptb.cc:1047
 hmdclookuptb.cc:1048
 hmdclookuptb.cc:1049
 hmdclookuptb.cc:1050
 hmdclookuptb.cc:1051
 hmdclookuptb.cc:1052
 hmdclookuptb.cc:1053
 hmdclookuptb.cc:1054
 hmdclookuptb.cc:1055
 hmdclookuptb.cc:1056
 hmdclookuptb.cc:1057
 hmdclookuptb.cc:1058
 hmdclookuptb.cc:1059
 hmdclookuptb.cc:1060
 hmdclookuptb.cc:1061
 hmdclookuptb.cc:1062
 hmdclookuptb.cc:1063
 hmdclookuptb.cc:1064
 hmdclookuptb.cc:1065
 hmdclookuptb.cc:1066
 hmdclookuptb.cc:1067
 hmdclookuptb.cc:1068
 hmdclookuptb.cc:1069
 hmdclookuptb.cc:1070
 hmdclookuptb.cc:1071
 hmdclookuptb.cc:1072
 hmdclookuptb.cc:1073
 hmdclookuptb.cc:1074
 hmdclookuptb.cc:1075
 hmdclookuptb.cc:1076
 hmdclookuptb.cc:1077
 hmdclookuptb.cc:1078
 hmdclookuptb.cc:1079
 hmdclookuptb.cc:1080
 hmdclookuptb.cc:1081
 hmdclookuptb.cc:1082
 hmdclookuptb.cc:1083
 hmdclookuptb.cc:1084
 hmdclookuptb.cc:1085
 hmdclookuptb.cc:1086
 hmdclookuptb.cc:1087
 hmdclookuptb.cc:1088
 hmdclookuptb.cc:1089
 hmdclookuptb.cc:1090
 hmdclookuptb.cc:1091
 hmdclookuptb.cc:1092
 hmdclookuptb.cc:1093
 hmdclookuptb.cc:1094
 hmdclookuptb.cc:1095
 hmdclookuptb.cc:1096
 hmdclookuptb.cc:1097
 hmdclookuptb.cc:1098
 hmdclookuptb.cc:1099
 hmdclookuptb.cc:1100
 hmdclookuptb.cc:1101
 hmdclookuptb.cc:1102
 hmdclookuptb.cc:1103
 hmdclookuptb.cc:1104
 hmdclookuptb.cc:1105
 hmdclookuptb.cc:1106
 hmdclookuptb.cc:1107
 hmdclookuptb.cc:1108
 hmdclookuptb.cc:1109
 hmdclookuptb.cc:1110
 hmdclookuptb.cc:1111
 hmdclookuptb.cc:1112
 hmdclookuptb.cc:1113
 hmdclookuptb.cc:1114
 hmdclookuptb.cc:1115
 hmdclookuptb.cc:1116
 hmdclookuptb.cc:1117
 hmdclookuptb.cc:1118
 hmdclookuptb.cc:1119
 hmdclookuptb.cc:1120
 hmdclookuptb.cc:1121
 hmdclookuptb.cc:1122
 hmdclookuptb.cc:1123
 hmdclookuptb.cc:1124
 hmdclookuptb.cc:1125
 hmdclookuptb.cc:1126
 hmdclookuptb.cc:1127
 hmdclookuptb.cc:1128
 hmdclookuptb.cc:1129
 hmdclookuptb.cc:1130
 hmdclookuptb.cc:1131
 hmdclookuptb.cc:1132
 hmdclookuptb.cc:1133
 hmdclookuptb.cc:1134
 hmdclookuptb.cc:1135
 hmdclookuptb.cc:1136
 hmdclookuptb.cc:1137
 hmdclookuptb.cc:1138
 hmdclookuptb.cc:1139
 hmdclookuptb.cc:1140
 hmdclookuptb.cc:1141
 hmdclookuptb.cc:1142
 hmdclookuptb.cc:1143
 hmdclookuptb.cc:1144
 hmdclookuptb.cc:1145
 hmdclookuptb.cc:1146
 hmdclookuptb.cc:1147
 hmdclookuptb.cc:1148
 hmdclookuptb.cc:1149
 hmdclookuptb.cc:1150
 hmdclookuptb.cc:1151
 hmdclookuptb.cc:1152
 hmdclookuptb.cc:1153
 hmdclookuptb.cc:1154
 hmdclookuptb.cc:1155
 hmdclookuptb.cc:1156
 hmdclookuptb.cc:1157
 hmdclookuptb.cc:1158
 hmdclookuptb.cc:1159
 hmdclookuptb.cc:1160
 hmdclookuptb.cc:1161
 hmdclookuptb.cc:1162
 hmdclookuptb.cc:1163
 hmdclookuptb.cc:1164
 hmdclookuptb.cc:1165
 hmdclookuptb.cc:1166
 hmdclookuptb.cc:1167
 hmdclookuptb.cc:1168
 hmdclookuptb.cc:1169
 hmdclookuptb.cc:1170
 hmdclookuptb.cc:1171
 hmdclookuptb.cc:1172
 hmdclookuptb.cc:1173
 hmdclookuptb.cc:1174
 hmdclookuptb.cc:1175
 hmdclookuptb.cc:1176
 hmdclookuptb.cc:1177
 hmdclookuptb.cc:1178
 hmdclookuptb.cc:1179
 hmdclookuptb.cc:1180
 hmdclookuptb.cc:1181
 hmdclookuptb.cc:1182
 hmdclookuptb.cc:1183
 hmdclookuptb.cc:1184
 hmdclookuptb.cc:1185
 hmdclookuptb.cc:1186
 hmdclookuptb.cc:1187
 hmdclookuptb.cc:1188
 hmdclookuptb.cc:1189
 hmdclookuptb.cc:1190
 hmdclookuptb.cc:1191
 hmdclookuptb.cc:1192
 hmdclookuptb.cc:1193
 hmdclookuptb.cc:1194
 hmdclookuptb.cc:1195
 hmdclookuptb.cc:1196
 hmdclookuptb.cc:1197
 hmdclookuptb.cc:1198
 hmdclookuptb.cc:1199
 hmdclookuptb.cc:1200
 hmdclookuptb.cc:1201
 hmdclookuptb.cc:1202
 hmdclookuptb.cc:1203
 hmdclookuptb.cc:1204
 hmdclookuptb.cc:1205
 hmdclookuptb.cc:1206
 hmdclookuptb.cc:1207
 hmdclookuptb.cc:1208
 hmdclookuptb.cc:1209
 hmdclookuptb.cc:1210
 hmdclookuptb.cc:1211
 hmdclookuptb.cc:1212
 hmdclookuptb.cc:1213
 hmdclookuptb.cc:1214
 hmdclookuptb.cc:1215
 hmdclookuptb.cc:1216
 hmdclookuptb.cc:1217
 hmdclookuptb.cc:1218
 hmdclookuptb.cc:1219
 hmdclookuptb.cc:1220
 hmdclookuptb.cc:1221
 hmdclookuptb.cc:1222
 hmdclookuptb.cc:1223
 hmdclookuptb.cc:1224
 hmdclookuptb.cc:1225
 hmdclookuptb.cc:1226
 hmdclookuptb.cc:1227
 hmdclookuptb.cc:1228
 hmdclookuptb.cc:1229
 hmdclookuptb.cc:1230
 hmdclookuptb.cc:1231
 hmdclookuptb.cc:1232
 hmdclookuptb.cc:1233
 hmdclookuptb.cc:1234
 hmdclookuptb.cc:1235
 hmdclookuptb.cc:1236
 hmdclookuptb.cc:1237
 hmdclookuptb.cc:1238
 hmdclookuptb.cc:1239
 hmdclookuptb.cc:1240
 hmdclookuptb.cc:1241
 hmdclookuptb.cc:1242
 hmdclookuptb.cc:1243
 hmdclookuptb.cc:1244
 hmdclookuptb.cc:1245
 hmdclookuptb.cc:1246
 hmdclookuptb.cc:1247
 hmdclookuptb.cc:1248
 hmdclookuptb.cc:1249
 hmdclookuptb.cc:1250
 hmdclookuptb.cc:1251
 hmdclookuptb.cc:1252
 hmdclookuptb.cc:1253
 hmdclookuptb.cc:1254
 hmdclookuptb.cc:1255
 hmdclookuptb.cc:1256
 hmdclookuptb.cc:1257
 hmdclookuptb.cc:1258
 hmdclookuptb.cc:1259
 hmdclookuptb.cc:1260
 hmdclookuptb.cc:1261
 hmdclookuptb.cc:1262
 hmdclookuptb.cc:1263
 hmdclookuptb.cc:1264
 hmdclookuptb.cc:1265
 hmdclookuptb.cc:1266
 hmdclookuptb.cc:1267
 hmdclookuptb.cc:1268
 hmdclookuptb.cc:1269
 hmdclookuptb.cc:1270
 hmdclookuptb.cc:1271
 hmdclookuptb.cc:1272
 hmdclookuptb.cc:1273
 hmdclookuptb.cc:1274
 hmdclookuptb.cc:1275
 hmdclookuptb.cc:1276
 hmdclookuptb.cc:1277
 hmdclookuptb.cc:1278
 hmdclookuptb.cc:1279
 hmdclookuptb.cc:1280
 hmdclookuptb.cc:1281
 hmdclookuptb.cc:1282
 hmdclookuptb.cc:1283
 hmdclookuptb.cc:1284
 hmdclookuptb.cc:1285
 hmdclookuptb.cc:1286
 hmdclookuptb.cc:1287
 hmdclookuptb.cc:1288
 hmdclookuptb.cc:1289
 hmdclookuptb.cc:1290
 hmdclookuptb.cc:1291
 hmdclookuptb.cc:1292
 hmdclookuptb.cc:1293
 hmdclookuptb.cc:1294
 hmdclookuptb.cc:1295
 hmdclookuptb.cc:1296
 hmdclookuptb.cc:1297
 hmdclookuptb.cc:1298
 hmdclookuptb.cc:1299
 hmdclookuptb.cc:1300
 hmdclookuptb.cc:1301
 hmdclookuptb.cc:1302
 hmdclookuptb.cc:1303
 hmdclookuptb.cc:1304
 hmdclookuptb.cc:1305
 hmdclookuptb.cc:1306
 hmdclookuptb.cc:1307
 hmdclookuptb.cc:1308
 hmdclookuptb.cc:1309
 hmdclookuptb.cc:1310
 hmdclookuptb.cc:1311
 hmdclookuptb.cc:1312
 hmdclookuptb.cc:1313
 hmdclookuptb.cc:1314
 hmdclookuptb.cc:1315
 hmdclookuptb.cc:1316
 hmdclookuptb.cc:1317
 hmdclookuptb.cc:1318
 hmdclookuptb.cc:1319
 hmdclookuptb.cc:1320
 hmdclookuptb.cc:1321
 hmdclookuptb.cc:1322
 hmdclookuptb.cc:1323
 hmdclookuptb.cc:1324
 hmdclookuptb.cc:1325
 hmdclookuptb.cc:1326
 hmdclookuptb.cc:1327
 hmdclookuptb.cc:1328
 hmdclookuptb.cc:1329
 hmdclookuptb.cc:1330
 hmdclookuptb.cc:1331
 hmdclookuptb.cc:1332
 hmdclookuptb.cc:1333
 hmdclookuptb.cc:1334
 hmdclookuptb.cc:1335
 hmdclookuptb.cc:1336
 hmdclookuptb.cc:1337
 hmdclookuptb.cc:1338
 hmdclookuptb.cc:1339
 hmdclookuptb.cc:1340
 hmdclookuptb.cc:1341
 hmdclookuptb.cc:1342
 hmdclookuptb.cc:1343
 hmdclookuptb.cc:1344
 hmdclookuptb.cc:1345
 hmdclookuptb.cc:1346
 hmdclookuptb.cc:1347
 hmdclookuptb.cc:1348
 hmdclookuptb.cc:1349
 hmdclookuptb.cc:1350
 hmdclookuptb.cc:1351
 hmdclookuptb.cc:1352
 hmdclookuptb.cc:1353
 hmdclookuptb.cc:1354
 hmdclookuptb.cc:1355
 hmdclookuptb.cc:1356
 hmdclookuptb.cc:1357
 hmdclookuptb.cc:1358
 hmdclookuptb.cc:1359
 hmdclookuptb.cc:1360
 hmdclookuptb.cc:1361
 hmdclookuptb.cc:1362
 hmdclookuptb.cc:1363
 hmdclookuptb.cc:1364
 hmdclookuptb.cc:1365
 hmdclookuptb.cc:1366
 hmdclookuptb.cc:1367
 hmdclookuptb.cc:1368
 hmdclookuptb.cc:1369
 hmdclookuptb.cc:1370
 hmdclookuptb.cc:1371
 hmdclookuptb.cc:1372
 hmdclookuptb.cc:1373
 hmdclookuptb.cc:1374
 hmdclookuptb.cc:1375
 hmdclookuptb.cc:1376
 hmdclookuptb.cc:1377
 hmdclookuptb.cc:1378
 hmdclookuptb.cc:1379
 hmdclookuptb.cc:1380
 hmdclookuptb.cc:1381
 hmdclookuptb.cc:1382
 hmdclookuptb.cc:1383
 hmdclookuptb.cc:1384
 hmdclookuptb.cc:1385
 hmdclookuptb.cc:1386
 hmdclookuptb.cc:1387
 hmdclookuptb.cc:1388
 hmdclookuptb.cc:1389
 hmdclookuptb.cc:1390
 hmdclookuptb.cc:1391
 hmdclookuptb.cc:1392
 hmdclookuptb.cc:1393
 hmdclookuptb.cc:1394
 hmdclookuptb.cc:1395
 hmdclookuptb.cc:1396
 hmdclookuptb.cc:1397
 hmdclookuptb.cc:1398
 hmdclookuptb.cc:1399
 hmdclookuptb.cc:1400
 hmdclookuptb.cc:1401
 hmdclookuptb.cc:1402
 hmdclookuptb.cc:1403
 hmdclookuptb.cc:1404
 hmdclookuptb.cc:1405
 hmdclookuptb.cc:1406
 hmdclookuptb.cc:1407
 hmdclookuptb.cc:1408
 hmdclookuptb.cc:1409
 hmdclookuptb.cc:1410
 hmdclookuptb.cc:1411
 hmdclookuptb.cc:1412
 hmdclookuptb.cc:1413
 hmdclookuptb.cc:1414
 hmdclookuptb.cc:1415
 hmdclookuptb.cc:1416
 hmdclookuptb.cc:1417
 hmdclookuptb.cc:1418
 hmdclookuptb.cc:1419
 hmdclookuptb.cc:1420
 hmdclookuptb.cc:1421
 hmdclookuptb.cc:1422
 hmdclookuptb.cc:1423
 hmdclookuptb.cc:1424
 hmdclookuptb.cc:1425
 hmdclookuptb.cc:1426
 hmdclookuptb.cc:1427
 hmdclookuptb.cc:1428
 hmdclookuptb.cc:1429
 hmdclookuptb.cc:1430
 hmdclookuptb.cc:1431
 hmdclookuptb.cc:1432
 hmdclookuptb.cc:1433
 hmdclookuptb.cc:1434
 hmdclookuptb.cc:1435
 hmdclookuptb.cc:1436
 hmdclookuptb.cc:1437
 hmdclookuptb.cc:1438
 hmdclookuptb.cc:1439
 hmdclookuptb.cc:1440
 hmdclookuptb.cc:1441
 hmdclookuptb.cc:1442
 hmdclookuptb.cc:1443
 hmdclookuptb.cc:1444
 hmdclookuptb.cc:1445
 hmdclookuptb.cc:1446
 hmdclookuptb.cc:1447
 hmdclookuptb.cc:1448
 hmdclookuptb.cc:1449
 hmdclookuptb.cc:1450
 hmdclookuptb.cc:1451
 hmdclookuptb.cc:1452
 hmdclookuptb.cc:1453
 hmdclookuptb.cc:1454
 hmdclookuptb.cc:1455
 hmdclookuptb.cc:1456
 hmdclookuptb.cc:1457
 hmdclookuptb.cc:1458
 hmdclookuptb.cc:1459
 hmdclookuptb.cc:1460
 hmdclookuptb.cc:1461
 hmdclookuptb.cc:1462
 hmdclookuptb.cc:1463
 hmdclookuptb.cc:1464
 hmdclookuptb.cc:1465
 hmdclookuptb.cc:1466
 hmdclookuptb.cc:1467
 hmdclookuptb.cc:1468
 hmdclookuptb.cc:1469
 hmdclookuptb.cc:1470
 hmdclookuptb.cc:1471
 hmdclookuptb.cc:1472
 hmdclookuptb.cc:1473
 hmdclookuptb.cc:1474
 hmdclookuptb.cc:1475
 hmdclookuptb.cc:1476
 hmdclookuptb.cc:1477
 hmdclookuptb.cc:1478
 hmdclookuptb.cc:1479
 hmdclookuptb.cc:1480
 hmdclookuptb.cc:1481
 hmdclookuptb.cc:1482
 hmdclookuptb.cc:1483
 hmdclookuptb.cc:1484
 hmdclookuptb.cc:1485
 hmdclookuptb.cc:1486
 hmdclookuptb.cc:1487
 hmdclookuptb.cc:1488
 hmdclookuptb.cc:1489
 hmdclookuptb.cc:1490
 hmdclookuptb.cc:1491
 hmdclookuptb.cc:1492
 hmdclookuptb.cc:1493
 hmdclookuptb.cc:1494
 hmdclookuptb.cc:1495
 hmdclookuptb.cc:1496
 hmdclookuptb.cc:1497
 hmdclookuptb.cc:1498
 hmdclookuptb.cc:1499
 hmdclookuptb.cc:1500
 hmdclookuptb.cc:1501
 hmdclookuptb.cc:1502
 hmdclookuptb.cc:1503
 hmdclookuptb.cc:1504
 hmdclookuptb.cc:1505
 hmdclookuptb.cc:1506
 hmdclookuptb.cc:1507
 hmdclookuptb.cc:1508
 hmdclookuptb.cc:1509
 hmdclookuptb.cc:1510
 hmdclookuptb.cc:1511
 hmdclookuptb.cc:1512
 hmdclookuptb.cc:1513
 hmdclookuptb.cc:1514
 hmdclookuptb.cc:1515
 hmdclookuptb.cc:1516
 hmdclookuptb.cc:1517
 hmdclookuptb.cc:1518
 hmdclookuptb.cc:1519
 hmdclookuptb.cc:1520
 hmdclookuptb.cc:1521
 hmdclookuptb.cc:1522
 hmdclookuptb.cc:1523
 hmdclookuptb.cc:1524
 hmdclookuptb.cc:1525
 hmdclookuptb.cc:1526
 hmdclookuptb.cc:1527
 hmdclookuptb.cc:1528
 hmdclookuptb.cc:1529
 hmdclookuptb.cc:1530
 hmdclookuptb.cc:1531
 hmdclookuptb.cc:1532
 hmdclookuptb.cc:1533
 hmdclookuptb.cc:1534
 hmdclookuptb.cc:1535
 hmdclookuptb.cc:1536
 hmdclookuptb.cc:1537
 hmdclookuptb.cc:1538
 hmdclookuptb.cc:1539
 hmdclookuptb.cc:1540
 hmdclookuptb.cc:1541
 hmdclookuptb.cc:1542
 hmdclookuptb.cc:1543
 hmdclookuptb.cc:1544
 hmdclookuptb.cc:1545
 hmdclookuptb.cc:1546
 hmdclookuptb.cc:1547
 hmdclookuptb.cc:1548
 hmdclookuptb.cc:1549
 hmdclookuptb.cc:1550
 hmdclookuptb.cc:1551
 hmdclookuptb.cc:1552
 hmdclookuptb.cc:1553
 hmdclookuptb.cc:1554
 hmdclookuptb.cc:1555
 hmdclookuptb.cc:1556
 hmdclookuptb.cc:1557
 hmdclookuptb.cc:1558
 hmdclookuptb.cc:1559
 hmdclookuptb.cc:1560
 hmdclookuptb.cc:1561
 hmdclookuptb.cc:1562
 hmdclookuptb.cc:1563
 hmdclookuptb.cc:1564
 hmdclookuptb.cc:1565
 hmdclookuptb.cc:1566
 hmdclookuptb.cc:1567
 hmdclookuptb.cc:1568
 hmdclookuptb.cc:1569
 hmdclookuptb.cc:1570
 hmdclookuptb.cc:1571
 hmdclookuptb.cc:1572
 hmdclookuptb.cc:1573
 hmdclookuptb.cc:1574
 hmdclookuptb.cc:1575
 hmdclookuptb.cc:1576
 hmdclookuptb.cc:1577
 hmdclookuptb.cc:1578
 hmdclookuptb.cc:1579
 hmdclookuptb.cc:1580
 hmdclookuptb.cc:1581
 hmdclookuptb.cc:1582
 hmdclookuptb.cc:1583
 hmdclookuptb.cc:1584
 hmdclookuptb.cc:1585
 hmdclookuptb.cc:1586
 hmdclookuptb.cc:1587
 hmdclookuptb.cc:1588
 hmdclookuptb.cc:1589
 hmdclookuptb.cc:1590
 hmdclookuptb.cc:1591
 hmdclookuptb.cc:1592
 hmdclookuptb.cc:1593
 hmdclookuptb.cc:1594
 hmdclookuptb.cc:1595
 hmdclookuptb.cc:1596
 hmdclookuptb.cc:1597
 hmdclookuptb.cc:1598
 hmdclookuptb.cc:1599
 hmdclookuptb.cc:1600
 hmdclookuptb.cc:1601
 hmdclookuptb.cc:1602
 hmdclookuptb.cc:1603
 hmdclookuptb.cc:1604
 hmdclookuptb.cc:1605
 hmdclookuptb.cc:1606
 hmdclookuptb.cc:1607
 hmdclookuptb.cc:1608
 hmdclookuptb.cc:1609
 hmdclookuptb.cc:1610
 hmdclookuptb.cc:1611
 hmdclookuptb.cc:1612
 hmdclookuptb.cc:1613
 hmdclookuptb.cc:1614
 hmdclookuptb.cc:1615
 hmdclookuptb.cc:1616
 hmdclookuptb.cc:1617
 hmdclookuptb.cc:1618
 hmdclookuptb.cc:1619
 hmdclookuptb.cc:1620
 hmdclookuptb.cc:1621
 hmdclookuptb.cc:1622
 hmdclookuptb.cc:1623
 hmdclookuptb.cc:1624
 hmdclookuptb.cc:1625
 hmdclookuptb.cc:1626
 hmdclookuptb.cc:1627
 hmdclookuptb.cc:1628
 hmdclookuptb.cc:1629
 hmdclookuptb.cc:1630
 hmdclookuptb.cc:1631
 hmdclookuptb.cc:1632
 hmdclookuptb.cc:1633
 hmdclookuptb.cc:1634
 hmdclookuptb.cc:1635
 hmdclookuptb.cc:1636
 hmdclookuptb.cc:1637
 hmdclookuptb.cc:1638
 hmdclookuptb.cc:1639
 hmdclookuptb.cc:1640
 hmdclookuptb.cc:1641
 hmdclookuptb.cc:1642
 hmdclookuptb.cc:1643
 hmdclookuptb.cc:1644
 hmdclookuptb.cc:1645
 hmdclookuptb.cc:1646
 hmdclookuptb.cc:1647
 hmdclookuptb.cc:1648
 hmdclookuptb.cc:1649
 hmdclookuptb.cc:1650
 hmdclookuptb.cc:1651
 hmdclookuptb.cc:1652
 hmdclookuptb.cc:1653
 hmdclookuptb.cc:1654
 hmdclookuptb.cc:1655
 hmdclookuptb.cc:1656
 hmdclookuptb.cc:1657
 hmdclookuptb.cc:1658
 hmdclookuptb.cc:1659
 hmdclookuptb.cc:1660
 hmdclookuptb.cc:1661
 hmdclookuptb.cc:1662
 hmdclookuptb.cc:1663
 hmdclookuptb.cc:1664
 hmdclookuptb.cc:1665
 hmdclookuptb.cc:1666
 hmdclookuptb.cc:1667
 hmdclookuptb.cc:1668
 hmdclookuptb.cc:1669
 hmdclookuptb.cc:1670
 hmdclookuptb.cc:1671
 hmdclookuptb.cc:1672
 hmdclookuptb.cc:1673
 hmdclookuptb.cc:1674
 hmdclookuptb.cc:1675
 hmdclookuptb.cc:1676
 hmdclookuptb.cc:1677
 hmdclookuptb.cc:1678
 hmdclookuptb.cc:1679
 hmdclookuptb.cc:1680
 hmdclookuptb.cc:1681
 hmdclookuptb.cc:1682
 hmdclookuptb.cc:1683
 hmdclookuptb.cc:1684
 hmdclookuptb.cc:1685
 hmdclookuptb.cc:1686
 hmdclookuptb.cc:1687
 hmdclookuptb.cc:1688
 hmdclookuptb.cc:1689
 hmdclookuptb.cc:1690
 hmdclookuptb.cc:1691
 hmdclookuptb.cc:1692
 hmdclookuptb.cc:1693
 hmdclookuptb.cc:1694
 hmdclookuptb.cc:1695
 hmdclookuptb.cc:1696
 hmdclookuptb.cc:1697
 hmdclookuptb.cc:1698
 hmdclookuptb.cc:1699
 hmdclookuptb.cc:1700
 hmdclookuptb.cc:1701
 hmdclookuptb.cc:1702
 hmdclookuptb.cc:1703
 hmdclookuptb.cc:1704
 hmdclookuptb.cc:1705
 hmdclookuptb.cc:1706
 hmdclookuptb.cc:1707
 hmdclookuptb.cc:1708
 hmdclookuptb.cc:1709
 hmdclookuptb.cc:1710
 hmdclookuptb.cc:1711
 hmdclookuptb.cc:1712
 hmdclookuptb.cc:1713
 hmdclookuptb.cc:1714
 hmdclookuptb.cc:1715
 hmdclookuptb.cc:1716
 hmdclookuptb.cc:1717
 hmdclookuptb.cc:1718
 hmdclookuptb.cc:1719
 hmdclookuptb.cc:1720
 hmdclookuptb.cc:1721
 hmdclookuptb.cc:1722
 hmdclookuptb.cc:1723
 hmdclookuptb.cc:1724
 hmdclookuptb.cc:1725
 hmdclookuptb.cc:1726
 hmdclookuptb.cc:1727
 hmdclookuptb.cc:1728
 hmdclookuptb.cc:1729
 hmdclookuptb.cc:1730
 hmdclookuptb.cc:1731
 hmdclookuptb.cc:1732
 hmdclookuptb.cc:1733
 hmdclookuptb.cc:1734
 hmdclookuptb.cc:1735
 hmdclookuptb.cc:1736
 hmdclookuptb.cc:1737
 hmdclookuptb.cc:1738
 hmdclookuptb.cc:1739
 hmdclookuptb.cc:1740
 hmdclookuptb.cc:1741
 hmdclookuptb.cc:1742
 hmdclookuptb.cc:1743
 hmdclookuptb.cc:1744
 hmdclookuptb.cc:1745
 hmdclookuptb.cc:1746
 hmdclookuptb.cc:1747
 hmdclookuptb.cc:1748
 hmdclookuptb.cc:1749
 hmdclookuptb.cc:1750
 hmdclookuptb.cc:1751
 hmdclookuptb.cc:1752
 hmdclookuptb.cc:1753
 hmdclookuptb.cc:1754
 hmdclookuptb.cc:1755
 hmdclookuptb.cc:1756
 hmdclookuptb.cc:1757
 hmdclookuptb.cc:1758
 hmdclookuptb.cc:1759
 hmdclookuptb.cc:1760
 hmdclookuptb.cc:1761
 hmdclookuptb.cc:1762
 hmdclookuptb.cc:1763
 hmdclookuptb.cc:1764
 hmdclookuptb.cc:1765
 hmdclookuptb.cc:1766
 hmdclookuptb.cc:1767
 hmdclookuptb.cc:1768
 hmdclookuptb.cc:1769
 hmdclookuptb.cc:1770
 hmdclookuptb.cc:1771
 hmdclookuptb.cc:1772
 hmdclookuptb.cc:1773
 hmdclookuptb.cc:1774
 hmdclookuptb.cc:1775
 hmdclookuptb.cc:1776
 hmdclookuptb.cc:1777
 hmdclookuptb.cc:1778
 hmdclookuptb.cc:1779
 hmdclookuptb.cc:1780
 hmdclookuptb.cc:1781
 hmdclookuptb.cc:1782
 hmdclookuptb.cc:1783
 hmdclookuptb.cc:1784
 hmdclookuptb.cc:1785
 hmdclookuptb.cc:1786
 hmdclookuptb.cc:1787
 hmdclookuptb.cc:1788
 hmdclookuptb.cc:1789
 hmdclookuptb.cc:1790
 hmdclookuptb.cc:1791
 hmdclookuptb.cc:1792
 hmdclookuptb.cc:1793
 hmdclookuptb.cc:1794
 hmdclookuptb.cc:1795
 hmdclookuptb.cc:1796
 hmdclookuptb.cc:1797
 hmdclookuptb.cc:1798
 hmdclookuptb.cc:1799
 hmdclookuptb.cc:1800
 hmdclookuptb.cc:1801
 hmdclookuptb.cc:1802
 hmdclookuptb.cc:1803
 hmdclookuptb.cc:1804
 hmdclookuptb.cc:1805
 hmdclookuptb.cc:1806
 hmdclookuptb.cc:1807
 hmdclookuptb.cc:1808
 hmdclookuptb.cc:1809
 hmdclookuptb.cc:1810
 hmdclookuptb.cc:1811
 hmdclookuptb.cc:1812
 hmdclookuptb.cc:1813
 hmdclookuptb.cc:1814
 hmdclookuptb.cc:1815
 hmdclookuptb.cc:1816
 hmdclookuptb.cc:1817
 hmdclookuptb.cc:1818
 hmdclookuptb.cc:1819
 hmdclookuptb.cc:1820
 hmdclookuptb.cc:1821
 hmdclookuptb.cc:1822
 hmdclookuptb.cc:1823
 hmdclookuptb.cc:1824
 hmdclookuptb.cc:1825
 hmdclookuptb.cc:1826
 hmdclookuptb.cc:1827
 hmdclookuptb.cc:1828
 hmdclookuptb.cc:1829
 hmdclookuptb.cc:1830
 hmdclookuptb.cc:1831
 hmdclookuptb.cc:1832
 hmdclookuptb.cc:1833
 hmdclookuptb.cc:1834
 hmdclookuptb.cc:1835
 hmdclookuptb.cc:1836
 hmdclookuptb.cc:1837
 hmdclookuptb.cc:1838
 hmdclookuptb.cc:1839
 hmdclookuptb.cc:1840
 hmdclookuptb.cc:1841
 hmdclookuptb.cc:1842
 hmdclookuptb.cc:1843
 hmdclookuptb.cc:1844
 hmdclookuptb.cc:1845
 hmdclookuptb.cc:1846
 hmdclookuptb.cc:1847
 hmdclookuptb.cc:1848
 hmdclookuptb.cc:1849
 hmdclookuptb.cc:1850
 hmdclookuptb.cc:1851
 hmdclookuptb.cc:1852
 hmdclookuptb.cc:1853
 hmdclookuptb.cc:1854
 hmdclookuptb.cc:1855
 hmdclookuptb.cc:1856
 hmdclookuptb.cc:1857
 hmdclookuptb.cc:1858
 hmdclookuptb.cc:1859
 hmdclookuptb.cc:1860
 hmdclookuptb.cc:1861
 hmdclookuptb.cc:1862
 hmdclookuptb.cc:1863
 hmdclookuptb.cc:1864
 hmdclookuptb.cc:1865
 hmdclookuptb.cc:1866
 hmdclookuptb.cc:1867
 hmdclookuptb.cc:1868
 hmdclookuptb.cc:1869
 hmdclookuptb.cc:1870
 hmdclookuptb.cc:1871
 hmdclookuptb.cc:1872
 hmdclookuptb.cc:1873
 hmdclookuptb.cc:1874
 hmdclookuptb.cc:1875
 hmdclookuptb.cc:1876
 hmdclookuptb.cc:1877
 hmdclookuptb.cc:1878
 hmdclookuptb.cc:1879
 hmdclookuptb.cc:1880
 hmdclookuptb.cc:1881
 hmdclookuptb.cc:1882
 hmdclookuptb.cc:1883
 hmdclookuptb.cc:1884
 hmdclookuptb.cc:1885
 hmdclookuptb.cc:1886
 hmdclookuptb.cc:1887
 hmdclookuptb.cc:1888
 hmdclookuptb.cc:1889
 hmdclookuptb.cc:1890
 hmdclookuptb.cc:1891
 hmdclookuptb.cc:1892
 hmdclookuptb.cc:1893
 hmdclookuptb.cc:1894
 hmdclookuptb.cc:1895
 hmdclookuptb.cc:1896
 hmdclookuptb.cc:1897
 hmdclookuptb.cc:1898
 hmdclookuptb.cc:1899
 hmdclookuptb.cc:1900
 hmdclookuptb.cc:1901
 hmdclookuptb.cc:1902
 hmdclookuptb.cc:1903
 hmdclookuptb.cc:1904
 hmdclookuptb.cc:1905
 hmdclookuptb.cc:1906
 hmdclookuptb.cc:1907
 hmdclookuptb.cc:1908
 hmdclookuptb.cc:1909
 hmdclookuptb.cc:1910
 hmdclookuptb.cc:1911
 hmdclookuptb.cc:1912
 hmdclookuptb.cc:1913
 hmdclookuptb.cc:1914
 hmdclookuptb.cc:1915
 hmdclookuptb.cc:1916
 hmdclookuptb.cc:1917
 hmdclookuptb.cc:1918
 hmdclookuptb.cc:1919
 hmdclookuptb.cc:1920
 hmdclookuptb.cc:1921
 hmdclookuptb.cc:1922
 hmdclookuptb.cc:1923
 hmdclookuptb.cc:1924
 hmdclookuptb.cc:1925
 hmdclookuptb.cc:1926
 hmdclookuptb.cc:1927
 hmdclookuptb.cc:1928
 hmdclookuptb.cc:1929
 hmdclookuptb.cc:1930
 hmdclookuptb.cc:1931
 hmdclookuptb.cc:1932
 hmdclookuptb.cc:1933
 hmdclookuptb.cc:1934
 hmdclookuptb.cc:1935
 hmdclookuptb.cc:1936
 hmdclookuptb.cc:1937
 hmdclookuptb.cc:1938
 hmdclookuptb.cc:1939
 hmdclookuptb.cc:1940
 hmdclookuptb.cc:1941
 hmdclookuptb.cc:1942
 hmdclookuptb.cc:1943
 hmdclookuptb.cc:1944
 hmdclookuptb.cc:1945
 hmdclookuptb.cc:1946
 hmdclookuptb.cc:1947
 hmdclookuptb.cc:1948
 hmdclookuptb.cc:1949
 hmdclookuptb.cc:1950
 hmdclookuptb.cc:1951
 hmdclookuptb.cc:1952
 hmdclookuptb.cc:1953
 hmdclookuptb.cc:1954
 hmdclookuptb.cc:1955
 hmdclookuptb.cc:1956
 hmdclookuptb.cc:1957
 hmdclookuptb.cc:1958
 hmdclookuptb.cc:1959
 hmdclookuptb.cc:1960
 hmdclookuptb.cc:1961
 hmdclookuptb.cc:1962
 hmdclookuptb.cc:1963
 hmdclookuptb.cc:1964
 hmdclookuptb.cc:1965
 hmdclookuptb.cc:1966
 hmdclookuptb.cc:1967
 hmdclookuptb.cc:1968
 hmdclookuptb.cc:1969
 hmdclookuptb.cc:1970
 hmdclookuptb.cc:1971
 hmdclookuptb.cc:1972
 hmdclookuptb.cc:1973
 hmdclookuptb.cc:1974
 hmdclookuptb.cc:1975
 hmdclookuptb.cc:1976
 hmdclookuptb.cc:1977
 hmdclookuptb.cc:1978
 hmdclookuptb.cc:1979
 hmdclookuptb.cc:1980
 hmdclookuptb.cc:1981
 hmdclookuptb.cc:1982
 hmdclookuptb.cc:1983
 hmdclookuptb.cc:1984
 hmdclookuptb.cc:1985
 hmdclookuptb.cc:1986
 hmdclookuptb.cc:1987
 hmdclookuptb.cc:1988
 hmdclookuptb.cc:1989
 hmdclookuptb.cc:1990
 hmdclookuptb.cc:1991
 hmdclookuptb.cc:1992
 hmdclookuptb.cc:1993
 hmdclookuptb.cc:1994
 hmdclookuptb.cc:1995
 hmdclookuptb.cc:1996
 hmdclookuptb.cc:1997
 hmdclookuptb.cc:1998
 hmdclookuptb.cc:1999
 hmdclookuptb.cc:2000
 hmdclookuptb.cc:2001
 hmdclookuptb.cc:2002
 hmdclookuptb.cc:2003
 hmdclookuptb.cc:2004
 hmdclookuptb.cc:2005
 hmdclookuptb.cc:2006
 hmdclookuptb.cc:2007
 hmdclookuptb.cc:2008
 hmdclookuptb.cc:2009
 hmdclookuptb.cc:2010
 hmdclookuptb.cc:2011
 hmdclookuptb.cc:2012
 hmdclookuptb.cc:2013
 hmdclookuptb.cc:2014
 hmdclookuptb.cc:2015
 hmdclookuptb.cc:2016
 hmdclookuptb.cc:2017
 hmdclookuptb.cc:2018
 hmdclookuptb.cc:2019
 hmdclookuptb.cc:2020
 hmdclookuptb.cc:2021
 hmdclookuptb.cc:2022
 hmdclookuptb.cc:2023
 hmdclookuptb.cc:2024
 hmdclookuptb.cc:2025
 hmdclookuptb.cc:2026
 hmdclookuptb.cc:2027
 hmdclookuptb.cc:2028
 hmdclookuptb.cc:2029
 hmdclookuptb.cc:2030
 hmdclookuptb.cc:2031
 hmdclookuptb.cc:2032
 hmdclookuptb.cc:2033
 hmdclookuptb.cc:2034
 hmdclookuptb.cc:2035
 hmdclookuptb.cc:2036
 hmdclookuptb.cc:2037
 hmdclookuptb.cc:2038
 hmdclookuptb.cc:2039
 hmdclookuptb.cc:2040
 hmdclookuptb.cc:2041
 hmdclookuptb.cc:2042
 hmdclookuptb.cc:2043
 hmdclookuptb.cc:2044
 hmdclookuptb.cc:2045
 hmdclookuptb.cc:2046
 hmdclookuptb.cc:2047
 hmdclookuptb.cc:2048
 hmdclookuptb.cc:2049
 hmdclookuptb.cc:2050
 hmdclookuptb.cc:2051
 hmdclookuptb.cc:2052
 hmdclookuptb.cc:2053
 hmdclookuptb.cc:2054
 hmdclookuptb.cc:2055
 hmdclookuptb.cc:2056
 hmdclookuptb.cc:2057
 hmdclookuptb.cc:2058
 hmdclookuptb.cc:2059
 hmdclookuptb.cc:2060
 hmdclookuptb.cc:2061
 hmdclookuptb.cc:2062
 hmdclookuptb.cc:2063
 hmdclookuptb.cc:2064
 hmdclookuptb.cc:2065
 hmdclookuptb.cc:2066
 hmdclookuptb.cc:2067
 hmdclookuptb.cc:2068
 hmdclookuptb.cc:2069
 hmdclookuptb.cc:2070
 hmdclookuptb.cc:2071
 hmdclookuptb.cc:2072
 hmdclookuptb.cc:2073
 hmdclookuptb.cc:2074
 hmdclookuptb.cc:2075
 hmdclookuptb.cc:2076
 hmdclookuptb.cc:2077
 hmdclookuptb.cc:2078
 hmdclookuptb.cc:2079
 hmdclookuptb.cc:2080
 hmdclookuptb.cc:2081
 hmdclookuptb.cc:2082
 hmdclookuptb.cc:2083
 hmdclookuptb.cc:2084
 hmdclookuptb.cc:2085
 hmdclookuptb.cc:2086
 hmdclookuptb.cc:2087
 hmdclookuptb.cc:2088
 hmdclookuptb.cc:2089
 hmdclookuptb.cc:2090
 hmdclookuptb.cc:2091
 hmdclookuptb.cc:2092
 hmdclookuptb.cc:2093
 hmdclookuptb.cc:2094
 hmdclookuptb.cc:2095
 hmdclookuptb.cc:2096
 hmdclookuptb.cc:2097
 hmdclookuptb.cc:2098
 hmdclookuptb.cc:2099
 hmdclookuptb.cc:2100
 hmdclookuptb.cc:2101
 hmdclookuptb.cc:2102
 hmdclookuptb.cc:2103
 hmdclookuptb.cc:2104
 hmdclookuptb.cc:2105
 hmdclookuptb.cc:2106
 hmdclookuptb.cc:2107
 hmdclookuptb.cc:2108
 hmdclookuptb.cc:2109
 hmdclookuptb.cc:2110
 hmdclookuptb.cc:2111
 hmdclookuptb.cc:2112
 hmdclookuptb.cc:2113
 hmdclookuptb.cc:2114
 hmdclookuptb.cc:2115
 hmdclookuptb.cc:2116
 hmdclookuptb.cc:2117
 hmdclookuptb.cc:2118
 hmdclookuptb.cc:2119
 hmdclookuptb.cc:2120
 hmdclookuptb.cc:2121
 hmdclookuptb.cc:2122
 hmdclookuptb.cc:2123
 hmdclookuptb.cc:2124
 hmdclookuptb.cc:2125
 hmdclookuptb.cc:2126
 hmdclookuptb.cc:2127
 hmdclookuptb.cc:2128
 hmdclookuptb.cc:2129
 hmdclookuptb.cc:2130
 hmdclookuptb.cc:2131
 hmdclookuptb.cc:2132
 hmdclookuptb.cc:2133
 hmdclookuptb.cc:2134
 hmdclookuptb.cc:2135
 hmdclookuptb.cc:2136
 hmdclookuptb.cc:2137
 hmdclookuptb.cc:2138
 hmdclookuptb.cc:2139
 hmdclookuptb.cc:2140
 hmdclookuptb.cc:2141
 hmdclookuptb.cc:2142
 hmdclookuptb.cc:2143
 hmdclookuptb.cc:2144
 hmdclookuptb.cc:2145
 hmdclookuptb.cc:2146
 hmdclookuptb.cc:2147
 hmdclookuptb.cc:2148
 hmdclookuptb.cc:2149
 hmdclookuptb.cc:2150
 hmdclookuptb.cc:2151
 hmdclookuptb.cc:2152
 hmdclookuptb.cc:2153
 hmdclookuptb.cc:2154
 hmdclookuptb.cc:2155
 hmdclookuptb.cc:2156
 hmdclookuptb.cc:2157
 hmdclookuptb.cc:2158
 hmdclookuptb.cc:2159
 hmdclookuptb.cc:2160
 hmdclookuptb.cc:2161
 hmdclookuptb.cc:2162
 hmdclookuptb.cc:2163
 hmdclookuptb.cc:2164
 hmdclookuptb.cc:2165
 hmdclookuptb.cc:2166
 hmdclookuptb.cc:2167
 hmdclookuptb.cc:2168
 hmdclookuptb.cc:2169
 hmdclookuptb.cc:2170
 hmdclookuptb.cc:2171
 hmdclookuptb.cc:2172
 hmdclookuptb.cc:2173
 hmdclookuptb.cc:2174
 hmdclookuptb.cc:2175
 hmdclookuptb.cc:2176
 hmdclookuptb.cc:2177
 hmdclookuptb.cc:2178
 hmdclookuptb.cc:2179
 hmdclookuptb.cc:2180
 hmdclookuptb.cc:2181
 hmdclookuptb.cc:2182
 hmdclookuptb.cc:2183
 hmdclookuptb.cc:2184
 hmdclookuptb.cc:2185
 hmdclookuptb.cc:2186
 hmdclookuptb.cc:2187
 hmdclookuptb.cc:2188
 hmdclookuptb.cc:2189
 hmdclookuptb.cc:2190
 hmdclookuptb.cc:2191
 hmdclookuptb.cc:2192
 hmdclookuptb.cc:2193
 hmdclookuptb.cc:2194
 hmdclookuptb.cc:2195
 hmdclookuptb.cc:2196
 hmdclookuptb.cc:2197
 hmdclookuptb.cc:2198
 hmdclookuptb.cc:2199
 hmdclookuptb.cc:2200
 hmdclookuptb.cc:2201
 hmdclookuptb.cc:2202
 hmdclookuptb.cc:2203
 hmdclookuptb.cc:2204
 hmdclookuptb.cc:2205
 hmdclookuptb.cc:2206
 hmdclookuptb.cc:2207
 hmdclookuptb.cc:2208
 hmdclookuptb.cc:2209
 hmdclookuptb.cc:2210
 hmdclookuptb.cc:2211
 hmdclookuptb.cc:2212
 hmdclookuptb.cc:2213
 hmdclookuptb.cc:2214
 hmdclookuptb.cc:2215
 hmdclookuptb.cc:2216
 hmdclookuptb.cc:2217
 hmdclookuptb.cc:2218
 hmdclookuptb.cc:2219
 hmdclookuptb.cc:2220
 hmdclookuptb.cc:2221
 hmdclookuptb.cc:2222
 hmdclookuptb.cc:2223
 hmdclookuptb.cc:2224
 hmdclookuptb.cc:2225
 hmdclookuptb.cc:2226
 hmdclookuptb.cc:2227
 hmdclookuptb.cc:2228
 hmdclookuptb.cc:2229
 hmdclookuptb.cc:2230
 hmdclookuptb.cc:2231
 hmdclookuptb.cc:2232
 hmdclookuptb.cc:2233
 hmdclookuptb.cc:2234
 hmdclookuptb.cc:2235
 hmdclookuptb.cc:2236
 hmdclookuptb.cc:2237
 hmdclookuptb.cc:2238
 hmdclookuptb.cc:2239
 hmdclookuptb.cc:2240
 hmdclookuptb.cc:2241
 hmdclookuptb.cc:2242
 hmdclookuptb.cc:2243
 hmdclookuptb.cc:2244
 hmdclookuptb.cc:2245
 hmdclookuptb.cc:2246
 hmdclookuptb.cc:2247
 hmdclookuptb.cc:2248
 hmdclookuptb.cc:2249
 hmdclookuptb.cc:2250
 hmdclookuptb.cc:2251
 hmdclookuptb.cc:2252
 hmdclookuptb.cc:2253
 hmdclookuptb.cc:2254
 hmdclookuptb.cc:2255
 hmdclookuptb.cc:2256
 hmdclookuptb.cc:2257
 hmdclookuptb.cc:2258
 hmdclookuptb.cc:2259
 hmdclookuptb.cc:2260
 hmdclookuptb.cc:2261
 hmdclookuptb.cc:2262
 hmdclookuptb.cc:2263
 hmdclookuptb.cc:2264
 hmdclookuptb.cc:2265
 hmdclookuptb.cc:2266
 hmdclookuptb.cc:2267
 hmdclookuptb.cc:2268
 hmdclookuptb.cc:2269
 hmdclookuptb.cc:2270
 hmdclookuptb.cc:2271
 hmdclookuptb.cc:2272
 hmdclookuptb.cc:2273
 hmdclookuptb.cc:2274
 hmdclookuptb.cc:2275
 hmdclookuptb.cc:2276
 hmdclookuptb.cc:2277
 hmdclookuptb.cc:2278
 hmdclookuptb.cc:2279
 hmdclookuptb.cc:2280
 hmdclookuptb.cc:2281
 hmdclookuptb.cc:2282
 hmdclookuptb.cc:2283
 hmdclookuptb.cc:2284
 hmdclookuptb.cc:2285
 hmdclookuptb.cc:2286
 hmdclookuptb.cc:2287
 hmdclookuptb.cc:2288
 hmdclookuptb.cc:2289
 hmdclookuptb.cc:2290
 hmdclookuptb.cc:2291
 hmdclookuptb.cc:2292
 hmdclookuptb.cc:2293
 hmdclookuptb.cc:2294
 hmdclookuptb.cc:2295
 hmdclookuptb.cc:2296
 hmdclookuptb.cc:2297
 hmdclookuptb.cc:2298
 hmdclookuptb.cc:2299
 hmdclookuptb.cc:2300
 hmdclookuptb.cc:2301
 hmdclookuptb.cc:2302
 hmdclookuptb.cc:2303
 hmdclookuptb.cc:2304
 hmdclookuptb.cc:2305
 hmdclookuptb.cc:2306
 hmdclookuptb.cc:2307
 hmdclookuptb.cc:2308
 hmdclookuptb.cc:2309
 hmdclookuptb.cc:2310
 hmdclookuptb.cc:2311
 hmdclookuptb.cc:2312
 hmdclookuptb.cc:2313
 hmdclookuptb.cc:2314
 hmdclookuptb.cc:2315
 hmdclookuptb.cc:2316
 hmdclookuptb.cc:2317
 hmdclookuptb.cc:2318
 hmdclookuptb.cc:2319
 hmdclookuptb.cc:2320
 hmdclookuptb.cc:2321
 hmdclookuptb.cc:2322
 hmdclookuptb.cc:2323
 hmdclookuptb.cc:2324
 hmdclookuptb.cc:2325
 hmdclookuptb.cc:2326
 hmdclookuptb.cc:2327
 hmdclookuptb.cc:2328
 hmdclookuptb.cc:2329
 hmdclookuptb.cc:2330
 hmdclookuptb.cc:2331
 hmdclookuptb.cc:2332
 hmdclookuptb.cc:2333
 hmdclookuptb.cc:2334
 hmdclookuptb.cc:2335
 hmdclookuptb.cc:2336
 hmdclookuptb.cc:2337
 hmdclookuptb.cc:2338
 hmdclookuptb.cc:2339
 hmdclookuptb.cc:2340
 hmdclookuptb.cc:2341
 hmdclookuptb.cc:2342
 hmdclookuptb.cc:2343
 hmdclookuptb.cc:2344
 hmdclookuptb.cc:2345
 hmdclookuptb.cc:2346
 hmdclookuptb.cc:2347
 hmdclookuptb.cc:2348
 hmdclookuptb.cc:2349
 hmdclookuptb.cc:2350
 hmdclookuptb.cc:2351
 hmdclookuptb.cc:2352
 hmdclookuptb.cc:2353
 hmdclookuptb.cc:2354
 hmdclookuptb.cc:2355
 hmdclookuptb.cc:2356
 hmdclookuptb.cc:2357
 hmdclookuptb.cc:2358
 hmdclookuptb.cc:2359
 hmdclookuptb.cc:2360
 hmdclookuptb.cc:2361
 hmdclookuptb.cc:2362
 hmdclookuptb.cc:2363
 hmdclookuptb.cc:2364
 hmdclookuptb.cc:2365
 hmdclookuptb.cc:2366
 hmdclookuptb.cc:2367
 hmdclookuptb.cc:2368
 hmdclookuptb.cc:2369
 hmdclookuptb.cc:2370
 hmdclookuptb.cc:2371
 hmdclookuptb.cc:2372
 hmdclookuptb.cc:2373
 hmdclookuptb.cc:2374
 hmdclookuptb.cc:2375
 hmdclookuptb.cc:2376
 hmdclookuptb.cc:2377
 hmdclookuptb.cc:2378
 hmdclookuptb.cc:2379
 hmdclookuptb.cc:2380
 hmdclookuptb.cc:2381
 hmdclookuptb.cc:2382
 hmdclookuptb.cc:2383
 hmdclookuptb.cc:2384
 hmdclookuptb.cc:2385
 hmdclookuptb.cc:2386
 hmdclookuptb.cc:2387
 hmdclookuptb.cc:2388
 hmdclookuptb.cc:2389
 hmdclookuptb.cc:2390
 hmdclookuptb.cc:2391
 hmdclookuptb.cc:2392
 hmdclookuptb.cc:2393
 hmdclookuptb.cc:2394
 hmdclookuptb.cc:2395
 hmdclookuptb.cc:2396
 hmdclookuptb.cc:2397
 hmdclookuptb.cc:2398
 hmdclookuptb.cc:2399
 hmdclookuptb.cc:2400
 hmdclookuptb.cc:2401
 hmdclookuptb.cc:2402
 hmdclookuptb.cc:2403
 hmdclookuptb.cc:2404
 hmdclookuptb.cc:2405
 hmdclookuptb.cc:2406
 hmdclookuptb.cc:2407
 hmdclookuptb.cc:2408
 hmdclookuptb.cc:2409
 hmdclookuptb.cc:2410
 hmdclookuptb.cc:2411
 hmdclookuptb.cc:2412
 hmdclookuptb.cc:2413
 hmdclookuptb.cc:2414
 hmdclookuptb.cc:2415
 hmdclookuptb.cc:2416
 hmdclookuptb.cc:2417
 hmdclookuptb.cc:2418
 hmdclookuptb.cc:2419
 hmdclookuptb.cc:2420
 hmdclookuptb.cc:2421
 hmdclookuptb.cc:2422
 hmdclookuptb.cc:2423
 hmdclookuptb.cc:2424
 hmdclookuptb.cc:2425
 hmdclookuptb.cc:2426
 hmdclookuptb.cc:2427
 hmdclookuptb.cc:2428
 hmdclookuptb.cc:2429
 hmdclookuptb.cc:2430
 hmdclookuptb.cc:2431
 hmdclookuptb.cc:2432
 hmdclookuptb.cc:2433
 hmdclookuptb.cc:2434
 hmdclookuptb.cc:2435
 hmdclookuptb.cc:2436
 hmdclookuptb.cc:2437
 hmdclookuptb.cc:2438
 hmdclookuptb.cc:2439
 hmdclookuptb.cc:2440
 hmdclookuptb.cc:2441
 hmdclookuptb.cc:2442
 hmdclookuptb.cc:2443
 hmdclookuptb.cc:2444
 hmdclookuptb.cc:2445
 hmdclookuptb.cc:2446
 hmdclookuptb.cc:2447
 hmdclookuptb.cc:2448
 hmdclookuptb.cc:2449
 hmdclookuptb.cc:2450
 hmdclookuptb.cc:2451
 hmdclookuptb.cc:2452
 hmdclookuptb.cc:2453
 hmdclookuptb.cc:2454
 hmdclookuptb.cc:2455
 hmdclookuptb.cc:2456
 hmdclookuptb.cc:2457
 hmdclookuptb.cc:2458
 hmdclookuptb.cc:2459
 hmdclookuptb.cc:2460
 hmdclookuptb.cc:2461
 hmdclookuptb.cc:2462
 hmdclookuptb.cc:2463
 hmdclookuptb.cc:2464
 hmdclookuptb.cc:2465
 hmdclookuptb.cc:2466
 hmdclookuptb.cc:2467
 hmdclookuptb.cc:2468
 hmdclookuptb.cc:2469
 hmdclookuptb.cc:2470
 hmdclookuptb.cc:2471
 hmdclookuptb.cc:2472
 hmdclookuptb.cc:2473
 hmdclookuptb.cc:2474
 hmdclookuptb.cc:2475
 hmdclookuptb.cc:2476
 hmdclookuptb.cc:2477
 hmdclookuptb.cc:2478
 hmdclookuptb.cc:2479
 hmdclookuptb.cc:2480
 hmdclookuptb.cc:2481
 hmdclookuptb.cc:2482
 hmdclookuptb.cc:2483
 hmdclookuptb.cc:2484
 hmdclookuptb.cc:2485
 hmdclookuptb.cc:2486
 hmdclookuptb.cc:2487
 hmdclookuptb.cc:2488
 hmdclookuptb.cc:2489
 hmdclookuptb.cc:2490
 hmdclookuptb.cc:2491
 hmdclookuptb.cc:2492
 hmdclookuptb.cc:2493
 hmdclookuptb.cc:2494
 hmdclookuptb.cc:2495
 hmdclookuptb.cc:2496
 hmdclookuptb.cc:2497
 hmdclookuptb.cc:2498
 hmdclookuptb.cc:2499
 hmdclookuptb.cc:2500
 hmdclookuptb.cc:2501
 hmdclookuptb.cc:2502
 hmdclookuptb.cc:2503
 hmdclookuptb.cc:2504
 hmdclookuptb.cc:2505
 hmdclookuptb.cc:2506
 hmdclookuptb.cc:2507
 hmdclookuptb.cc:2508
 hmdclookuptb.cc:2509
 hmdclookuptb.cc:2510
 hmdclookuptb.cc:2511
 hmdclookuptb.cc:2512
 hmdclookuptb.cc:2513
 hmdclookuptb.cc:2514
 hmdclookuptb.cc:2515
 hmdclookuptb.cc:2516
 hmdclookuptb.cc:2517
 hmdclookuptb.cc:2518
 hmdclookuptb.cc:2519
 hmdclookuptb.cc:2520
 hmdclookuptb.cc:2521
 hmdclookuptb.cc:2522
 hmdclookuptb.cc:2523
 hmdclookuptb.cc:2524
 hmdclookuptb.cc:2525
 hmdclookuptb.cc:2526
 hmdclookuptb.cc:2527
 hmdclookuptb.cc:2528
 hmdclookuptb.cc:2529
 hmdclookuptb.cc:2530
 hmdclookuptb.cc:2531
 hmdclookuptb.cc:2532
 hmdclookuptb.cc:2533
 hmdclookuptb.cc:2534
 hmdclookuptb.cc:2535
 hmdclookuptb.cc:2536
 hmdclookuptb.cc:2537
 hmdclookuptb.cc:2538
 hmdclookuptb.cc:2539
 hmdclookuptb.cc:2540
 hmdclookuptb.cc:2541
 hmdclookuptb.cc:2542
 hmdclookuptb.cc:2543
 hmdclookuptb.cc:2544
 hmdclookuptb.cc:2545
 hmdclookuptb.cc:2546
 hmdclookuptb.cc:2547
 hmdclookuptb.cc:2548
 hmdclookuptb.cc:2549
 hmdclookuptb.cc:2550
 hmdclookuptb.cc:2551
 hmdclookuptb.cc:2552
 hmdclookuptb.cc:2553
 hmdclookuptb.cc:2554
 hmdclookuptb.cc:2555
 hmdclookuptb.cc:2556
 hmdclookuptb.cc:2557
 hmdclookuptb.cc:2558
 hmdclookuptb.cc:2559
 hmdclookuptb.cc:2560
 hmdclookuptb.cc:2561
 hmdclookuptb.cc:2562
 hmdclookuptb.cc:2563
 hmdclookuptb.cc:2564
 hmdclookuptb.cc:2565
 hmdclookuptb.cc:2566
 hmdclookuptb.cc:2567
 hmdclookuptb.cc:2568
 hmdclookuptb.cc:2569
 hmdclookuptb.cc:2570
 hmdclookuptb.cc:2571
 hmdclookuptb.cc:2572
 hmdclookuptb.cc:2573
 hmdclookuptb.cc:2574
 hmdclookuptb.cc:2575
 hmdclookuptb.cc:2576
 hmdclookuptb.cc:2577
 hmdclookuptb.cc:2578
 hmdclookuptb.cc:2579
 hmdclookuptb.cc:2580
 hmdclookuptb.cc:2581
 hmdclookuptb.cc:2582
 hmdclookuptb.cc:2583
 hmdclookuptb.cc:2584
 hmdclookuptb.cc:2585
 hmdclookuptb.cc:2586
 hmdclookuptb.cc:2587
 hmdclookuptb.cc:2588
 hmdclookuptb.cc:2589
 hmdclookuptb.cc:2590
 hmdclookuptb.cc:2591
 hmdclookuptb.cc:2592
 hmdclookuptb.cc:2593
 hmdclookuptb.cc:2594
 hmdclookuptb.cc:2595
 hmdclookuptb.cc:2596
 hmdclookuptb.cc:2597
 hmdclookuptb.cc:2598
 hmdclookuptb.cc:2599
 hmdclookuptb.cc:2600
 hmdclookuptb.cc:2601
 hmdclookuptb.cc:2602
 hmdclookuptb.cc:2603
 hmdclookuptb.cc:2604
 hmdclookuptb.cc:2605
 hmdclookuptb.cc:2606
 hmdclookuptb.cc:2607
 hmdclookuptb.cc:2608
 hmdclookuptb.cc:2609
 hmdclookuptb.cc:2610
 hmdclookuptb.cc:2611
 hmdclookuptb.cc:2612
 hmdclookuptb.cc:2613
 hmdclookuptb.cc:2614
 hmdclookuptb.cc:2615
 hmdclookuptb.cc:2616
 hmdclookuptb.cc:2617
 hmdclookuptb.cc:2618
 hmdclookuptb.cc:2619
 hmdclookuptb.cc:2620
 hmdclookuptb.cc:2621
 hmdclookuptb.cc:2622
 hmdclookuptb.cc:2623
 hmdclookuptb.cc:2624
 hmdclookuptb.cc:2625
 hmdclookuptb.cc:2626
 hmdclookuptb.cc:2627
 hmdclookuptb.cc:2628
 hmdclookuptb.cc:2629
 hmdclookuptb.cc:2630
 hmdclookuptb.cc:2631
 hmdclookuptb.cc:2632
 hmdclookuptb.cc:2633
 hmdclookuptb.cc:2634
 hmdclookuptb.cc:2635
 hmdclookuptb.cc:2636
 hmdclookuptb.cc:2637
 hmdclookuptb.cc:2638
 hmdclookuptb.cc:2639
 hmdclookuptb.cc:2640
 hmdclookuptb.cc:2641
 hmdclookuptb.cc:2642
 hmdclookuptb.cc:2643
 hmdclookuptb.cc:2644
 hmdclookuptb.cc:2645
 hmdclookuptb.cc:2646
 hmdclookuptb.cc:2647
 hmdclookuptb.cc:2648
 hmdclookuptb.cc:2649
 hmdclookuptb.cc:2650
 hmdclookuptb.cc:2651
 hmdclookuptb.cc:2652
 hmdclookuptb.cc:2653
 hmdclookuptb.cc:2654
 hmdclookuptb.cc:2655
 hmdclookuptb.cc:2656
 hmdclookuptb.cc:2657
 hmdclookuptb.cc:2658
 hmdclookuptb.cc:2659
 hmdclookuptb.cc:2660
 hmdclookuptb.cc:2661
 hmdclookuptb.cc:2662
 hmdclookuptb.cc:2663
 hmdclookuptb.cc:2664
 hmdclookuptb.cc:2665
 hmdclookuptb.cc:2666
 hmdclookuptb.cc:2667
 hmdclookuptb.cc:2668
 hmdclookuptb.cc:2669
 hmdclookuptb.cc:2670
 hmdclookuptb.cc:2671
 hmdclookuptb.cc:2672
 hmdclookuptb.cc:2673
 hmdclookuptb.cc:2674
 hmdclookuptb.cc:2675
 hmdclookuptb.cc:2676
 hmdclookuptb.cc:2677
 hmdclookuptb.cc:2678
 hmdclookuptb.cc:2679
 hmdclookuptb.cc:2680
 hmdclookuptb.cc:2681
 hmdclookuptb.cc:2682
 hmdclookuptb.cc:2683
 hmdclookuptb.cc:2684
 hmdclookuptb.cc:2685
 hmdclookuptb.cc:2686
 hmdclookuptb.cc:2687
 hmdclookuptb.cc:2688
 hmdclookuptb.cc:2689
 hmdclookuptb.cc:2690
 hmdclookuptb.cc:2691
 hmdclookuptb.cc:2692
 hmdclookuptb.cc:2693
 hmdclookuptb.cc:2694
 hmdclookuptb.cc:2695
 hmdclookuptb.cc:2696
 hmdclookuptb.cc:2697
 hmdclookuptb.cc:2698
 hmdclookuptb.cc:2699
 hmdclookuptb.cc:2700
 hmdclookuptb.cc:2701
 hmdclookuptb.cc:2702
 hmdclookuptb.cc:2703
 hmdclookuptb.cc:2704
 hmdclookuptb.cc:2705
 hmdclookuptb.cc:2706
 hmdclookuptb.cc:2707
 hmdclookuptb.cc:2708
 hmdclookuptb.cc:2709
 hmdclookuptb.cc:2710
 hmdclookuptb.cc:2711
 hmdclookuptb.cc:2712
 hmdclookuptb.cc:2713
 hmdclookuptb.cc:2714
 hmdclookuptb.cc:2715
 hmdclookuptb.cc:2716
 hmdclookuptb.cc:2717
 hmdclookuptb.cc:2718
 hmdclookuptb.cc:2719
 hmdclookuptb.cc:2720
 hmdclookuptb.cc:2721
 hmdclookuptb.cc:2722
 hmdclookuptb.cc:2723
 hmdclookuptb.cc:2724
 hmdclookuptb.cc:2725
 hmdclookuptb.cc:2726
 hmdclookuptb.cc:2727
 hmdclookuptb.cc:2728
 hmdclookuptb.cc:2729
 hmdclookuptb.cc:2730
 hmdclookuptb.cc:2731
 hmdclookuptb.cc:2732
 hmdclookuptb.cc:2733
 hmdclookuptb.cc:2734
 hmdclookuptb.cc:2735
 hmdclookuptb.cc:2736
 hmdclookuptb.cc:2737
 hmdclookuptb.cc:2738
 hmdclookuptb.cc:2739
 hmdclookuptb.cc:2740
 hmdclookuptb.cc:2741
 hmdclookuptb.cc:2742
 hmdclookuptb.cc:2743
 hmdclookuptb.cc:2744
 hmdclookuptb.cc:2745
 hmdclookuptb.cc:2746
 hmdclookuptb.cc:2747
 hmdclookuptb.cc:2748
 hmdclookuptb.cc:2749
 hmdclookuptb.cc:2750
 hmdclookuptb.cc:2751
 hmdclookuptb.cc:2752
 hmdclookuptb.cc:2753
 hmdclookuptb.cc:2754
 hmdclookuptb.cc:2755
 hmdclookuptb.cc:2756
 hmdclookuptb.cc:2757
 hmdclookuptb.cc:2758
 hmdclookuptb.cc:2759
 hmdclookuptb.cc:2760
 hmdclookuptb.cc:2761
 hmdclookuptb.cc:2762
 hmdclookuptb.cc:2763
 hmdclookuptb.cc:2764
 hmdclookuptb.cc:2765
 hmdclookuptb.cc:2766
 hmdclookuptb.cc:2767
 hmdclookuptb.cc:2768
 hmdclookuptb.cc:2769
 hmdclookuptb.cc:2770
 hmdclookuptb.cc:2771
 hmdclookuptb.cc:2772
 hmdclookuptb.cc:2773
 hmdclookuptb.cc:2774
 hmdclookuptb.cc:2775
 hmdclookuptb.cc:2776
 hmdclookuptb.cc:2777
 hmdclookuptb.cc:2778
 hmdclookuptb.cc:2779
 hmdclookuptb.cc:2780
 hmdclookuptb.cc:2781
 hmdclookuptb.cc:2782
 hmdclookuptb.cc:2783
 hmdclookuptb.cc:2784
 hmdclookuptb.cc:2785
 hmdclookuptb.cc:2786
 hmdclookuptb.cc:2787
 hmdclookuptb.cc:2788
 hmdclookuptb.cc:2789
 hmdclookuptb.cc:2790
 hmdclookuptb.cc:2791
 hmdclookuptb.cc:2792
 hmdclookuptb.cc:2793
 hmdclookuptb.cc:2794
 hmdclookuptb.cc:2795
 hmdclookuptb.cc:2796
 hmdclookuptb.cc:2797
 hmdclookuptb.cc:2798
 hmdclookuptb.cc:2799
 hmdclookuptb.cc:2800
 hmdclookuptb.cc:2801
 hmdclookuptb.cc:2802
 hmdclookuptb.cc:2803
 hmdclookuptb.cc:2804
 hmdclookuptb.cc:2805
 hmdclookuptb.cc:2806
 hmdclookuptb.cc:2807
 hmdclookuptb.cc:2808
 hmdclookuptb.cc:2809
 hmdclookuptb.cc:2810
 hmdclookuptb.cc:2811
 hmdclookuptb.cc:2812
 hmdclookuptb.cc:2813
 hmdclookuptb.cc:2814
 hmdclookuptb.cc:2815
 hmdclookuptb.cc:2816
 hmdclookuptb.cc:2817
 hmdclookuptb.cc:2818
 hmdclookuptb.cc:2819
 hmdclookuptb.cc:2820
 hmdclookuptb.cc:2821
 hmdclookuptb.cc:2822
 hmdclookuptb.cc:2823
 hmdclookuptb.cc:2824
 hmdclookuptb.cc:2825
 hmdclookuptb.cc:2826
 hmdclookuptb.cc:2827
 hmdclookuptb.cc:2828
 hmdclookuptb.cc:2829
 hmdclookuptb.cc:2830
 hmdclookuptb.cc:2831
 hmdclookuptb.cc:2832
 hmdclookuptb.cc:2833
 hmdclookuptb.cc:2834
 hmdclookuptb.cc:2835
 hmdclookuptb.cc:2836
 hmdclookuptb.cc:2837
 hmdclookuptb.cc:2838
 hmdclookuptb.cc:2839
 hmdclookuptb.cc:2840
 hmdclookuptb.cc:2841
 hmdclookuptb.cc:2842
 hmdclookuptb.cc:2843
 hmdclookuptb.cc:2844
 hmdclookuptb.cc:2845
 hmdclookuptb.cc:2846
 hmdclookuptb.cc:2847
 hmdclookuptb.cc:2848
 hmdclookuptb.cc:2849
 hmdclookuptb.cc:2850
 hmdclookuptb.cc:2851
 hmdclookuptb.cc:2852
 hmdclookuptb.cc:2853
 hmdclookuptb.cc:2854
 hmdclookuptb.cc:2855
 hmdclookuptb.cc:2856
 hmdclookuptb.cc:2857
 hmdclookuptb.cc:2858
 hmdclookuptb.cc:2859
 hmdclookuptb.cc:2860
 hmdclookuptb.cc:2861
 hmdclookuptb.cc:2862
 hmdclookuptb.cc:2863
 hmdclookuptb.cc:2864
 hmdclookuptb.cc:2865
 hmdclookuptb.cc:2866
 hmdclookuptb.cc:2867
 hmdclookuptb.cc:2868
 hmdclookuptb.cc:2869
 hmdclookuptb.cc:2870
 hmdclookuptb.cc:2871
 hmdclookuptb.cc:2872
 hmdclookuptb.cc:2873
 hmdclookuptb.cc:2874
 hmdclookuptb.cc:2875
 hmdclookuptb.cc:2876
 hmdclookuptb.cc:2877
 hmdclookuptb.cc:2878
 hmdclookuptb.cc:2879
 hmdclookuptb.cc:2880
 hmdclookuptb.cc:2881
 hmdclookuptb.cc:2882
 hmdclookuptb.cc:2883
 hmdclookuptb.cc:2884
 hmdclookuptb.cc:2885
 hmdclookuptb.cc:2886
 hmdclookuptb.cc:2887
 hmdclookuptb.cc:2888
 hmdclookuptb.cc:2889
 hmdclookuptb.cc:2890
 hmdclookuptb.cc:2891
 hmdclookuptb.cc:2892
 hmdclookuptb.cc:2893
 hmdclookuptb.cc:2894
 hmdclookuptb.cc:2895
 hmdclookuptb.cc:2896
 hmdclookuptb.cc:2897
 hmdclookuptb.cc:2898
 hmdclookuptb.cc:2899
 hmdclookuptb.cc:2900
 hmdclookuptb.cc:2901
 hmdclookuptb.cc:2902
 hmdclookuptb.cc:2903
 hmdclookuptb.cc:2904
 hmdclookuptb.cc:2905
 hmdclookuptb.cc:2906
 hmdclookuptb.cc:2907
 hmdclookuptb.cc:2908
 hmdclookuptb.cc:2909
 hmdclookuptb.cc:2910
 hmdclookuptb.cc:2911
 hmdclookuptb.cc:2912
 hmdclookuptb.cc:2913
 hmdclookuptb.cc:2914
 hmdclookuptb.cc:2915
 hmdclookuptb.cc:2916
 hmdclookuptb.cc:2917
 hmdclookuptb.cc:2918
 hmdclookuptb.cc:2919
 hmdclookuptb.cc:2920
 hmdclookuptb.cc:2921
 hmdclookuptb.cc:2922
 hmdclookuptb.cc:2923
 hmdclookuptb.cc:2924
 hmdclookuptb.cc:2925
 hmdclookuptb.cc:2926
 hmdclookuptb.cc:2927
 hmdclookuptb.cc:2928
 hmdclookuptb.cc:2929
 hmdclookuptb.cc:2930
 hmdclookuptb.cc:2931
 hmdclookuptb.cc:2932
 hmdclookuptb.cc:2933
 hmdclookuptb.cc:2934
 hmdclookuptb.cc:2935
 hmdclookuptb.cc:2936
 hmdclookuptb.cc:2937
 hmdclookuptb.cc:2938
 hmdclookuptb.cc:2939
 hmdclookuptb.cc:2940
 hmdclookuptb.cc:2941
 hmdclookuptb.cc:2942
 hmdclookuptb.cc:2943
 hmdclookuptb.cc:2944
 hmdclookuptb.cc:2945
 hmdclookuptb.cc:2946
 hmdclookuptb.cc:2947
 hmdclookuptb.cc:2948
 hmdclookuptb.cc:2949
 hmdclookuptb.cc:2950
 hmdclookuptb.cc:2951
 hmdclookuptb.cc:2952
 hmdclookuptb.cc:2953
 hmdclookuptb.cc:2954
 hmdclookuptb.cc:2955
 hmdclookuptb.cc:2956
 hmdclookuptb.cc:2957
 hmdclookuptb.cc:2958
 hmdclookuptb.cc:2959
 hmdclookuptb.cc:2960
 hmdclookuptb.cc:2961
 hmdclookuptb.cc:2962
 hmdclookuptb.cc:2963
 hmdclookuptb.cc:2964
 hmdclookuptb.cc:2965
 hmdclookuptb.cc:2966
 hmdclookuptb.cc:2967
 hmdclookuptb.cc:2968
 hmdclookuptb.cc:2969
 hmdclookuptb.cc:2970
 hmdclookuptb.cc:2971
 hmdclookuptb.cc:2972
 hmdclookuptb.cc:2973
 hmdclookuptb.cc:2974
 hmdclookuptb.cc:2975
 hmdclookuptb.cc:2976
 hmdclookuptb.cc:2977
 hmdclookuptb.cc:2978
 hmdclookuptb.cc:2979
 hmdclookuptb.cc:2980
 hmdclookuptb.cc:2981
 hmdclookuptb.cc:2982
 hmdclookuptb.cc:2983
 hmdclookuptb.cc:2984
 hmdclookuptb.cc:2985
 hmdclookuptb.cc:2986
 hmdclookuptb.cc:2987
 hmdclookuptb.cc:2988
 hmdclookuptb.cc:2989
 hmdclookuptb.cc:2990
 hmdclookuptb.cc:2991
 hmdclookuptb.cc:2992
 hmdclookuptb.cc:2993
 hmdclookuptb.cc:2994
 hmdclookuptb.cc:2995
 hmdclookuptb.cc:2996
 hmdclookuptb.cc:2997
 hmdclookuptb.cc:2998
 hmdclookuptb.cc:2999
 hmdclookuptb.cc:3000
 hmdclookuptb.cc:3001
 hmdclookuptb.cc:3002
 hmdclookuptb.cc:3003
 hmdclookuptb.cc:3004
 hmdclookuptb.cc:3005
 hmdclookuptb.cc:3006
 hmdclookuptb.cc:3007
 hmdclookuptb.cc:3008
 hmdclookuptb.cc:3009
 hmdclookuptb.cc:3010
 hmdclookuptb.cc:3011
 hmdclookuptb.cc:3012
 hmdclookuptb.cc:3013
 hmdclookuptb.cc:3014
 hmdclookuptb.cc:3015
 hmdclookuptb.cc:3016
 hmdclookuptb.cc:3017
 hmdclookuptb.cc:3018
 hmdclookuptb.cc:3019
 hmdclookuptb.cc:3020
 hmdclookuptb.cc:3021
 hmdclookuptb.cc:3022
 hmdclookuptb.cc:3023
 hmdclookuptb.cc:3024
 hmdclookuptb.cc:3025
 hmdclookuptb.cc:3026
 hmdclookuptb.cc:3027
 hmdclookuptb.cc:3028
 hmdclookuptb.cc:3029
 hmdclookuptb.cc:3030
 hmdclookuptb.cc:3031
 hmdclookuptb.cc:3032
 hmdclookuptb.cc:3033
 hmdclookuptb.cc:3034
 hmdclookuptb.cc:3035
 hmdclookuptb.cc:3036
 hmdclookuptb.cc:3037
 hmdclookuptb.cc:3038
 hmdclookuptb.cc:3039
 hmdclookuptb.cc:3040
 hmdclookuptb.cc:3041
 hmdclookuptb.cc:3042
 hmdclookuptb.cc:3043
 hmdclookuptb.cc:3044
 hmdclookuptb.cc:3045
 hmdclookuptb.cc:3046
 hmdclookuptb.cc:3047
 hmdclookuptb.cc:3048
 hmdclookuptb.cc:3049
 hmdclookuptb.cc:3050
 hmdclookuptb.cc:3051
 hmdclookuptb.cc:3052
 hmdclookuptb.cc:3053
 hmdclookuptb.cc:3054
 hmdclookuptb.cc:3055
 hmdclookuptb.cc:3056
 hmdclookuptb.cc:3057
 hmdclookuptb.cc:3058
 hmdclookuptb.cc:3059
 hmdclookuptb.cc:3060
 hmdclookuptb.cc:3061
 hmdclookuptb.cc:3062
 hmdclookuptb.cc:3063
 hmdclookuptb.cc:3064
 hmdclookuptb.cc:3065
 hmdclookuptb.cc:3066
 hmdclookuptb.cc:3067
 hmdclookuptb.cc:3068
 hmdclookuptb.cc:3069
 hmdclookuptb.cc:3070
 hmdclookuptb.cc:3071
 hmdclookuptb.cc:3072
 hmdclookuptb.cc:3073
 hmdclookuptb.cc:3074
 hmdclookuptb.cc:3075
 hmdclookuptb.cc:3076
 hmdclookuptb.cc:3077
 hmdclookuptb.cc:3078
 hmdclookuptb.cc:3079
 hmdclookuptb.cc:3080
 hmdclookuptb.cc:3081
 hmdclookuptb.cc:3082
 hmdclookuptb.cc:3083
 hmdclookuptb.cc:3084
 hmdclookuptb.cc:3085
 hmdclookuptb.cc:3086
 hmdclookuptb.cc:3087
 hmdclookuptb.cc:3088
 hmdclookuptb.cc:3089
 hmdclookuptb.cc:3090
 hmdclookuptb.cc:3091
 hmdclookuptb.cc:3092
 hmdclookuptb.cc:3093
 hmdclookuptb.cc:3094
 hmdclookuptb.cc:3095
 hmdclookuptb.cc:3096
 hmdclookuptb.cc:3097
 hmdclookuptb.cc:3098
 hmdclookuptb.cc:3099
 hmdclookuptb.cc:3100
 hmdclookuptb.cc:3101
 hmdclookuptb.cc:3102
 hmdclookuptb.cc:3103
 hmdclookuptb.cc:3104
 hmdclookuptb.cc:3105
 hmdclookuptb.cc:3106
 hmdclookuptb.cc:3107
 hmdclookuptb.cc:3108
 hmdclookuptb.cc:3109
 hmdclookuptb.cc:3110
 hmdclookuptb.cc:3111
 hmdclookuptb.cc:3112
 hmdclookuptb.cc:3113
 hmdclookuptb.cc:3114
 hmdclookuptb.cc:3115
 hmdclookuptb.cc:3116
 hmdclookuptb.cc:3117
 hmdclookuptb.cc:3118
 hmdclookuptb.cc:3119
 hmdclookuptb.cc:3120
 hmdclookuptb.cc:3121
 hmdclookuptb.cc:3122
 hmdclookuptb.cc:3123
 hmdclookuptb.cc:3124
 hmdclookuptb.cc:3125
 hmdclookuptb.cc:3126
 hmdclookuptb.cc:3127
 hmdclookuptb.cc:3128
 hmdclookuptb.cc:3129
 hmdclookuptb.cc:3130
 hmdclookuptb.cc:3131
 hmdclookuptb.cc:3132
 hmdclookuptb.cc:3133
 hmdclookuptb.cc:3134
 hmdclookuptb.cc:3135
 hmdclookuptb.cc:3136
 hmdclookuptb.cc:3137
 hmdclookuptb.cc:3138
 hmdclookuptb.cc:3139
 hmdclookuptb.cc:3140
 hmdclookuptb.cc:3141
 hmdclookuptb.cc:3142
 hmdclookuptb.cc:3143
 hmdclookuptb.cc:3144
 hmdclookuptb.cc:3145
 hmdclookuptb.cc:3146
 hmdclookuptb.cc:3147
 hmdclookuptb.cc:3148
 hmdclookuptb.cc:3149
 hmdclookuptb.cc:3150
 hmdclookuptb.cc:3151
 hmdclookuptb.cc:3152
 hmdclookuptb.cc:3153
 hmdclookuptb.cc:3154
 hmdclookuptb.cc:3155
 hmdclookuptb.cc:3156
 hmdclookuptb.cc:3157
 hmdclookuptb.cc:3158
 hmdclookuptb.cc:3159
 hmdclookuptb.cc:3160
 hmdclookuptb.cc:3161
 hmdclookuptb.cc:3162
 hmdclookuptb.cc:3163
 hmdclookuptb.cc:3164
 hmdclookuptb.cc:3165
 hmdclookuptb.cc:3166
 hmdclookuptb.cc:3167
 hmdclookuptb.cc:3168
 hmdclookuptb.cc:3169
 hmdclookuptb.cc:3170
 hmdclookuptb.cc:3171
 hmdclookuptb.cc:3172
 hmdclookuptb.cc:3173
 hmdclookuptb.cc:3174
 hmdclookuptb.cc:3175
 hmdclookuptb.cc:3176
 hmdclookuptb.cc:3177
 hmdclookuptb.cc:3178
 hmdclookuptb.cc:3179
 hmdclookuptb.cc:3180
 hmdclookuptb.cc:3181
 hmdclookuptb.cc:3182
 hmdclookuptb.cc:3183
 hmdclookuptb.cc:3184
 hmdclookuptb.cc:3185
 hmdclookuptb.cc:3186
 hmdclookuptb.cc:3187
 hmdclookuptb.cc:3188
 hmdclookuptb.cc:3189
 hmdclookuptb.cc:3190
 hmdclookuptb.cc:3191
 hmdclookuptb.cc:3192
 hmdclookuptb.cc:3193
 hmdclookuptb.cc:3194
 hmdclookuptb.cc:3195
 hmdclookuptb.cc:3196
 hmdclookuptb.cc:3197
 hmdclookuptb.cc:3198
 hmdclookuptb.cc:3199
 hmdclookuptb.cc:3200
 hmdclookuptb.cc:3201
 hmdclookuptb.cc:3202
 hmdclookuptb.cc:3203
 hmdclookuptb.cc:3204
 hmdclookuptb.cc:3205
 hmdclookuptb.cc:3206
 hmdclookuptb.cc:3207
 hmdclookuptb.cc:3208
 hmdclookuptb.cc:3209
 hmdclookuptb.cc:3210
 hmdclookuptb.cc:3211
 hmdclookuptb.cc:3212
 hmdclookuptb.cc:3213
 hmdclookuptb.cc:3214
 hmdclookuptb.cc:3215
 hmdclookuptb.cc:3216
 hmdclookuptb.cc:3217
 hmdclookuptb.cc:3218
 hmdclookuptb.cc:3219
 hmdclookuptb.cc:3220
 hmdclookuptb.cc:3221
 hmdclookuptb.cc:3222
 hmdclookuptb.cc:3223
 hmdclookuptb.cc:3224
 hmdclookuptb.cc:3225
 hmdclookuptb.cc:3226
 hmdclookuptb.cc:3227
 hmdclookuptb.cc:3228
 hmdclookuptb.cc:3229
 hmdclookuptb.cc:3230
 hmdclookuptb.cc:3231
 hmdclookuptb.cc:3232
 hmdclookuptb.cc:3233
 hmdclookuptb.cc:3234
 hmdclookuptb.cc:3235
 hmdclookuptb.cc:3236
 hmdclookuptb.cc:3237
 hmdclookuptb.cc:3238
 hmdclookuptb.cc:3239
 hmdclookuptb.cc:3240
 hmdclookuptb.cc:3241
 hmdclookuptb.cc:3242
 hmdclookuptb.cc:3243
 hmdclookuptb.cc:3244
 hmdclookuptb.cc:3245
 hmdclookuptb.cc:3246
 hmdclookuptb.cc:3247
 hmdclookuptb.cc:3248
 hmdclookuptb.cc:3249
 hmdclookuptb.cc:3250
 hmdclookuptb.cc:3251
 hmdclookuptb.cc:3252
 hmdclookuptb.cc:3253
 hmdclookuptb.cc:3254
 hmdclookuptb.cc:3255
 hmdclookuptb.cc:3256
 hmdclookuptb.cc:3257
 hmdclookuptb.cc:3258
 hmdclookuptb.cc:3259
 hmdclookuptb.cc:3260
 hmdclookuptb.cc:3261