ROOT logo
#include "hmdc34clfinder.h"
#include "hades.h"
#include "hmatrixcategory.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hmdctrackddef.h"
#include "hmdcgeomobj.h"
#include "hmdcgetcontainers.h"
#include "hmdcclussim.h"
#include "hmdccluster.h"
#include "hmdcseg.h"
#include "TH2.h"
#include "TMath.h"
#include "hgeomtransform.h"
#include "hmdcgeomstruct.h"
#include "hspecgeompar.h"
#include "hgeomvolume.h"
#include "hgeomcompositevolume.h"
#include "hmdclayergeompar.h"
#include "hmdcsizescells.h"
#include "hmdcgeompar.h"
#include "hmdcclfnstack.h"
#include "hmdctrackdset.h"
#include "hmdcgeanttrack.h"
#include "hmdcdrifttimepar.h"
#include "hmdcclusmetamatch.h"
#include "hmdctrackparam.h"
#include "hmdckickcor.h"

#include <stdlib.h>
#include <iostream>
#include <iomanip>

using namespace std;

using namespace TMath;

//*-- AUTHOR : Pechenov Vladimir
//*-- Modified : 19/05/2010 by O. Pechenova
//*-- Modified : 25/02/2010 by O. Pechenova
//*-- Modified : 07/02/2003 by V. Pechenov
//*-- Modified : 05/06/2002 by V. Pechenov
//*-- Modified : 10/05/2001 by V. Pechenov
//*-- Modified : 07/03/2001 by V. Pechenov
//*-- Modified : 12/07/2000 by V.Pechenov

//_HADES_CLASS_DESCRIPTION
////////////////////////////////////////////////////////////////
// HMdc34ClFinder
//
// Track finder for outer segment MDC:
// Constructor:
//
////////////////////////////////////////////////////////////////

ClassImp(HMdcProjPlot)
ClassImp(HMdc34ClFinderLayer)
ClassImp(HMdc34ClFinderMod)
ClassImp(HMdc34ClFinderSec)
ClassImp(HMdc34ClFinder)

UChar_t* HMdcProjPlot::weights=0;
UChar_t* HMdcProjPlot::weights3=0;
UChar_t* HMdcProjPlot::weights4=0;
Int_t    HMdcProjPlot::wtArrSize=0;
UChar_t  HMdcProjPlot::nBitsLuTb[64] = {
    0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6};

HMdcProjPlot::HMdcProjPlot(UChar_t mSeg, Int_t inBinX, Int_t inBinY) {
  nBinX = inBinX;
  nBinY = inBinY;
  size  = nBinX*nBinY;
  size  = (size/32 + ((size%32 > 0) ? 1:0))*32;
  xMinL = new Short_t [nBinY];
  xMaxL = new Short_t [nBinY];
  yMinL = new Short_t [nBinX];
  rootPlot   = 0;
  if(size>wtArrSize) {
    if(weights) delete [] weights;
    weights   = new UChar_t [size*2];
    weights3  = weights;
    weights4  = weights+size;
    wtArrSize = size;
  }
  xBinsPos = new Double_t [nBinX];
  yBinsPos = new Double_t [nBinY];
  memset(weights,0,wtArrSize*2);
}

HMdcProjPlot::~HMdcProjPlot() {
  if(xMinL) delete [] xMinL;
  if(xMaxL) delete [] xMaxL;
  if(yMinL) delete [] yMinL;
  xMinL = xMaxL= yMinL = 0;
  if(rootPlot) {
    delete rootPlot;
    rootPlot = 0;
  }
  if(weights) {
    delete [] weights;
    weights   = 0;
    weights3  = 0;
    weights4  = 0;
    wtArrSize = 0;
  }
  if(xBinsPos) delete [] xBinsPos;
  if(yBinsPos) delete [] yBinsPos;
  xBinsPos = 0;
  yBinsPos = 0;
}

void HMdcProjPlot::setEdges(Double_t iyMin, Double_t ixMinD, Double_t ixMaxD,
                            Double_t iyMax, Double_t ixMin,  Double_t ixMax) {
  stY     = (iyMax-iyMin)/(nBinY-2);
  stX     = (ixMax-ixMin)/(nBinX-2);
  yMin    = iyMin-stY;
  yMax    = iyMax+stY;
  xMin    = ixMin-stX;
  xMax    = ixMax+stX;
  xMinD   = ixMinD;
  xMaxD   = ixMaxD;
  Double_t aL23 = (xMinD-xMin)/(yMin-yMax);
  Double_t aL01 = (xMaxD-xMax)/(yMin-yMax);
  for(Int_t ny=0; ny<nBinY; ny++) {
    Double_t yl = (ny+1)*stY+yMin;
    xMinL[ny]  = Short_t((((yl-yMax)*aL23+xMin)-xMin)/stX);
    if(xMinL[ny] < 1) xMinL[ny]=1;
    xMaxL[ny]  = Short_t((((yl-yMax)*aL01+xMax)-xMin)/stX);
    if(xMaxL[ny] > nBinX-2) xMaxL[ny]=nBinX-2;
  }

  for(Int_t nx=0; nx<nBinX; nx++) {
    yMinL[nx]=nBinY;
    for(Int_t ny=nBinY-2; ny>=0; ny--) {
      if(nx<xMinL[ny] || nx>xMaxL[ny]) break;
      yMinL[nx] = ny==0 ? 1 : ny;
    }
  }
  xFirstBin = 0.5*stX+xMin;            // (stX/2)^2
  yFirstBin = 0.5*stY+yMin;            // (stY/2)^2
  for(Int_t n=0; n<nBinX; n++) xBinsPos[n]=(((Double_t)n)+0.5)*stX+xMin;
  for(Int_t n=0; n<nBinY; n++) yBinsPos[n]=(((Double_t)n)+0.5)*stY+yMin;
}

void HMdcProjPlot::print(void) {
  printf("----- Project plane: -----\n");
  HMdcPlane::print();
  printf(" Sizes: nBinX=%i, nBinY=%i, stepX=%g, stepY=%g\n",nBinX,nBinY,stX,stY);
  printf(" Points (x:y) n. 0=(%.1f:%.1f)  1=(%.1f:%.1f)\n",xMaxD,yMin,xMax,yMax);
  printf("                 2=(%.1f:%.1f)  3=(%.1f:%.1f)\n",xMin,yMax,xMinD,yMin);
}


TH2C* HMdcProjPlot::getPlot(Char_t* name, Char_t* title){
  if(!rootPlot) rootPlot=new TH2C(name,title,nBinX,xMin,xMax,nBinY,yMin,yMax);
  else {
    rootPlot->Reset();
    rootPlot->SetName(name);
    rootPlot->SetTitle(title);
  }
  rootPlot->SetMaximum(12.);
  rootPlot->SetMinimum(0.);
  rootPlot->Fill(0.,0.,0);
  for (Int_t nBin=0; nBin<size; nBin++) {
    UChar_t amp = nBitsLuTb[weights3[nBin]] + nBitsLuTb[weights4[nBin]];
    if(amp != 0) rootPlot->Fill(xBinsPos[nBin%nBinX],yBinsPos[nBin/nBinX],(Stat_t)amp);
  }
  return rootPlot;
}

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

HMdc34ClFinderLayer::HMdc34ClFinderLayer(Int_t sec, Int_t mod, Int_t lay) {
  HMdcGetContainers* fGetCont=HMdcGetContainers::getObject();
  if( !fGetCont ) return;
  HMdcGeomStruct* pMdc=fGetCont->getMdcGeomStruct();
  if( !pMdc ) return;
  nCells        = ((*pMdc)[sec][mod])[lay];
  yBin          = NULL;
  nBinX         = 0;
  xBin1         = NULL;
  xBin2         = NULL;
  cells         = NULL;
  module        = mod;
  layer         = lay;
  nextPartFCell = 777;
  layerNextPart = NULL;
  layerPart     = 0;
  yCross        = -1000.;
}

HMdc34ClFinderLayer::~HMdc34ClFinderLayer() {
  if(yBin != NULL)  delete [] yBin;
  if(xBin1 != NULL) delete [] xBin1;
  if(xBin2 != NULL) delete [] xBin2;
  yBin  = NULL;
  xBin1 = NULL;
  xBin2 = NULL;
  nBinX = 0;
  layerNextPart = NULL;
  if(layerNextPart != NULL) delete layerNextPart;
}

HMdc34ClFinderLayer::HMdc34ClFinderLayer(HMdc34ClFinderLayer& prevPart):TObject(prevPart) {
  // copy constructor
  nCells        = prevPart.nCells;
  yBin          = NULL;
  nBinX         = 0;
  xBin1         = NULL;
  xBin2         = NULL;
  cells         = prevPart.cells;
  module        = prevPart.module;
  layer         = prevPart.layer;
  nextPartFCell = 777;
  layerNextPart = NULL;
  layerPart     = prevPart.layerPart + 1;
}

HMdc34ClFinderLayer* HMdc34ClFinderLayer::nextLayerPart(Int_t nPartFCell)  {
  if(nPartFCell<0 || nPartFCell >= nCells) return NULL;
  nextPartFCell = nPartFCell;
  layerNextPart = new HMdc34ClFinderLayer(*this);
  return layerNextPart;
}

Bool_t HMdc34ClFinderLayer::createArrayBins(Short_t nBins) {
  if(nBinX == nBins) return kTRUE;
  if(yBin) delete [] yBin;
  nBinX = nBins;
  yBin  = new Short_t [nBins];
  if(yBin==0) return kFALSE;
  return kTRUE;
}

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

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

Int_t HMdc34ClFinderMod::getNCells(void) {
  Int_t nHits = 0;
  for(Int_t lay=0; lay<6; lay++) nHits += (*this)[lay].cells->getNCells();
  return nHits;
}

//----------Sector------------------------------------

HMdc34ClFinderSec::HMdc34ClFinderSec(Int_t sec, Int_t inBinX, Int_t inBinY) {
  // constructor creates an array of pointers of type HMdc34ClFinderMod
  //
  memset(pLayPar,0,sizeof(pLayPar));
  regInd = 0;
  sector = sec;
  for(Int_t m=0; m<4; m++) lMods[m] = HMdcGetContainers::getObject()->isModActive(sec,m) ? 1:0;
  mSeg[0] = (lMods[0] ? 1:0) + (lMods[1] ? 2:0);
  mSeg[1] = (lMods[2] ? 1:0) + (lMods[3] ? 2:0);
  array = new TObjArray(4);
  typeClFinder = 0;
  for (Int_t m=2; m<4; m++) if(lMods[m]) (*array)[m] = new HMdc34ClFinderMod(sector,m);
  prPlotSeg2 = 0;
  if(mSeg[1] > 0) {
    prPlotSeg2    = new HMdcProjPlot(mSeg[1],inBinX,inBinY);
    nBinX         = prPlotSeg2->nBinX;
    nearbyBins[0] = -1;
    nearbyBins[1] = +1;
    nearbyBins[2] =   -nBinX;
    nearbyBins[3] =   +nBinX;
    nearbyBins[4] = -1-nBinX;
    nearbyBins[5] = -1+nBinX;
    nearbyBins[6] =  1-nBinX;
    nearbyBins[7] =  1+nBinX;
    nBinYM2       = prPlotSeg2->nBinY-2;
  }
  isGeant = HMdcGetContainers::isGeant();

  locClus.set(2,sector,1);
  xCMin         = new Int_t [prPlotSeg2->nBinY];
  xCMax         = new Int_t [prPlotSeg2->nBinY];
  for(Int_t y=0;y<prPlotSeg2->nBinY;y++) {
    xCMin[y] = nBinX;
    xCMax[y] = -1;
  }

  pClustersArrs = HMdcClustersArrs::getObject();
  clusArr       = pClustersArrs->getArray1();
  if(clusArr == 0) clusArr = pClustersArrs->createArray1(1000); // Array size
  clusArrSize   = pClustersArrs->getArray1Size();

  pDriftTimeParSec = HMdcDriftTimePar::getObject()->at(sector);
  dDistCut      = 3.5;
  useDriftTime  = kFALSE; // kTRUE ?
  pMetaMatch    = NULL;
  useDxDyCut    = 0; //kFALSE;
  dDistYCorr    = 0.;        //???????????????
  pKickCor      = NULL;
  
  fakeSuppFlag  = HMdcTrackDSet::getGhostRemovingParamSeg2(wLev,wBin,wLay,dWtCut);
  useDriftTime  = HMdcTrackDSet::useDriftTimeSeg2();
  HMdcTrackDSet::getDrTimeProjParSeg2(dDistCut,dDistYCorr,dDCutCorr);
  
  for(Int_t nr=0;nr<36;nr++) cutXBins[nr] = NULL;
  
  bitsSetLay[0]   = 0x01010101;
  bitsSetLay[1]   = 0x02020202;
  bitsSetLay[2]   = 0x04040404;
  bitsSetLay[3]   = 0x08080808;
  bitsSetLay[4]   = 0x10101010;
  bitsSetLay[5]   = 0x20202020;
  oneArrLay[0][0] = 0x00000000;
  oneArrLay[0][1] = 0x00000001;
  oneArrLay[0][2] = 0x00000101;
  oneArrLay[0][3] = 0x00010101;
  for(Int_t lay=1;lay<6;lay++) for(Int_t i=0;i<4;i++) oneArrLay[lay][i] = oneArrLay[0][i]<<lay;
}

HMdc34ClFinderSec::~HMdc34ClFinderSec() {
  // destructor
  if(array) {
    array->Delete();
    delete array;
  }
  if(prPlotSeg2) delete prPlotSeg2;
  prPlotSeg2 = 0;

  if(xCMin) delete [] xCMin;
  xCMin = 0;
  if(xCMax) delete [] xCMax;
  xCMax = 0;
  
  for(Int_t nr=0;nr<36;nr++) {
    if(cutXBins[nr] != NULL) delete [] cutXBins[nr];
    cutXBins[nr] = NULL;
  }
}

void HMdc34ClFinderSec::clear(void) {
  maxAmp[2]    = -1;
  maxAmp[3]    = -1;
  notEnoughWrs = kTRUE;
  if(isGeant) {
    HMdcGeantEvent* pGEvent = HMdcGeantEvent::getExObject();
    if(pGEvent) pGEvent->clearOSeg();
  }
}

void HMdc34ClFinderSec::setMinBin(Int_t *mBin) {
  for(Int_t i=0;i<4;i++) minAmp[i]=mBin[i];
  notEnoughWrs = testMaxAmp();
}

Bool_t HMdc34ClFinderSec::testMaxAmp(void) {
  // Calculating checking max.amplitude
  for(Int_t mod=2;mod<4;mod++) {
    maxAmp[mod]=0;
    if(minAmp[mod]<=0) continue;
    maxAmp[mod] += (*pListCells)[mod].getNLayers();
  }
  if(minAmp[2]>0 && minAmp[3]>0) {
    if(minAmp[2]+minAmp[3] > maxAmp[2]+maxAmp[3]) return kTRUE; // Sum.Amp. cut
//  For mixed clusters:
//    if(minAmp[2]>maxAmp[2] || minAmp[3]>maxAmp[3]) return kTRUE;
  } else {
    if(minAmp[2]>maxAmp[2]) return kTRUE;
    if(minAmp[3]>maxAmp[3]) return kTRUE;
  }
  return kFALSE;
}

// Int_t HMdc34ClFinderSec::findClustersSeg2(HMdcSeg* fSeg, HMdcClus* pClus,Int_t *mBin){
//   if(mBin!=0) setMinBin(mBin);
//   if(notEnoughWrs) return 0;
// 
// //   errZ0 *= 2.; //3.;
//   fkick->calcSegIntersec(fSeg,seg1,dirSeg1,segOnKick,segRegOnKick);
// 
//   indexPar = pClus->getOwnIndex();
//   indexFCh = -1;
//   indexLCh = -2;
//   Int_t nClustCh = findClustersSeg2();
//   if(nClustCh>0) pClus->setIndexChilds(indexFCh,indexLCh);
//   return nClustCh;
// }

Int_t HMdc34ClFinderSec::findClustersSeg2(HMdcTrackParam *tSeg1, HMdcClus* pClus,Int_t *mBin) {
  // Fixed "errors" for calc. region on the kick plane
  if(mBin!=0) setMinBin(mBin);
  if(notEnoughWrs) return 0;
  
  Double_t  ye   = 0.6;  // Parameter
  Double_t  xe   = 1.5;  // Parameter

  HGeomVector p2;
  tSeg1->getFisrtPoint().getVector(seg1);
  tSeg1->getSecondPoint().getVector(p2);
  dirSeg1        = tSeg1->getDir();

  Double_t  x0mE = seg1.getX() - xe;
  Double_t  x0pE = seg1.getX() + xe;
  Double_t  y0mE = seg1.getY() - ye;
  Double_t  y0pE = seg1.getY() + ye;

  Double_t  xPmE = p2.getX() - xe;
  Double_t  xPpE = p2.getX() + xe;
  Double_t  yPmE = p2.getY() - ye;
  Double_t  yPpE = p2.getY() + ye;
  
  if(pKickCor != NULL && lMods[3] != 0) { // For track curvature correction. MDCIV only!
    pKickCor->interpolateAngles(tSeg1->getThetaRad(),tSeg1->getPhiRad());
    HGeomVector crossPnt;
    HGeomVector pnt;
    HMdc34ClFinderMod &pMod = (*this)[3];
    for(Int_t l=0;l<6;l++) {
      HMdc34ClFinderLayer &pLay = pMod[l];
      pLay.pSCLay->calcIntersection(seg1,dirSeg1,crossPnt);
      pnt = pLay.pSCLay->getRotLayP1SysRSec()->transTo(crossPnt);    // can be optimized
      pLay.yCross = pnt.getY();
      if(pLay.pSCLay->getLayerNParts() > 1) {
        pnt = pLay.pSCLay->getRotLayP2SysRSec()->transTo(crossPnt);  // can be optimized
        pLay.layerNextPart->yCross = pnt.getY();
      }
    }
  }

  fkick->calcIntersection(seg1,dirSeg1,segOnKick);
  HMdcPlane *pl1 = tSeg1->getFirstPlane();
  HMdcPlane *pl2 = tSeg1->getSecondPlane();
  fkick->calcIntersection(x0mE,y0mE,pl1->getZOnPlane(x0mE,y0mE),xPpE,yPpE,pl2->getZOnPlane(xPpE,yPpE),segRegOnKick[0]);
  fkick->calcIntersection(x0pE,y0mE,pl1->getZOnPlane(x0pE,y0mE),xPmE,yPpE,pl2->getZOnPlane(xPmE,yPpE),segRegOnKick[1]);
  fkick->calcIntersection(x0mE,y0pE,pl1->getZOnPlane(x0mE,y0pE),xPpE,yPmE,pl2->getZOnPlane(xPpE,yPmE),segRegOnKick[2]);
  fkick->calcIntersection(x0pE,y0pE,pl1->getZOnPlane(x0pE,y0pE),xPmE,yPmE,pl2->getZOnPlane(xPmE,yPmE),segRegOnKick[3]);

  indexPar = pClus->getOwnIndex();
  indexFCh = -1;
  indexLCh = -2;
  Int_t nClustCh = findClustersSeg2();
  if(nClustCh>0) pClus->setIndexChilds(indexFCh,indexLCh);
  return nClustCh;
}

Int_t HMdc34ClFinderSec::findClustersSeg2(HMdcClus* pClus, Int_t *mBin){
  if(pClus->getIOSeg() != 0) return 0;
  if(pClus->getFakeFlag() != 0) return 0;
  
// if((pClus->getOwnIndex()%2)==0) return 0;
// if(isGeant && ((HMdcClusSim*)pClus)->getNNotFakeTracks()<1) return 0;
  
  if(mBin!=0) setMinBin(mBin);
  if(notEnoughWrs) return 0;
  
  pClus->getTarg(seg1);
  pClus->getPoint(dirSeg1);

  Double_t x0mE  = seg1.getX() - pClus->getErrXTarg();
  Double_t x0pE  = seg1.getX() + pClus->getErrXTarg();
  Double_t y0mE  = seg1.getY() - pClus->getErrYTarg();
  Double_t y0pE  = seg1.getY() + pClus->getErrYTarg();
  Double_t z0mE  = seg1.getZ() - pClus->getErrZTarg();
  
  Double_t xPmE  = dirSeg1.getX() - pClus->getErrX();
  Double_t xPpE  = dirSeg1.getX() + pClus->getErrX();
  Double_t yPmE  = dirSeg1.getY() - pClus->getErrY();
  Double_t yPpE  = dirSeg1.getY() + pClus->getErrY();
  
  if(pKickCor != NULL && lMods[3] != 0) { // For track curvature correction. MDCIV only!
    pKickCor->interpolateAngles(pClus->getTheta(),pClus->getPhi());
    HGeomVector crossPnt;
    HGeomVector pnt;
    HMdc34ClFinderMod &pMod = (*this)[3];
    for(Int_t l=0;l<6;l++) {
      HMdc34ClFinderLayer &pLay = pMod[l];
      pLay.pSCLay->calcIntersection(seg1,dirSeg1,crossPnt);
      pnt = pLay.pSCLay->getRotLayP1SysRSec()->transTo(crossPnt);    // can be optimized
      pLay.yCross = pnt.getY();
      if(pLay.pSCLay->getLayerNParts() > 1) {
        pnt = pLay.pSCLay->getRotLayP2SysRSec()->transTo(crossPnt);  // can be optimized
        pLay.layerNextPart->yCross = pnt.getY();
      }
    }
  }
  
  // segOnkick[4]:
  //    [0]---[1]  ^ y
  //     |     |   |
  //     |     |   |
  //    [2]---[3]  |
  // X<-------------

  dirSeg1 -= seg1; // Must be here!
  fkick->calcIntersection(seg1,dirSeg1,segOnKick);
  fkick->calcIntersection(x0mE,y0mE,z0mE,xPpE,yPpE,pClus->getZOnPrPlane(xPpE,yPpE),segRegOnKick[0]);
  fkick->calcIntersection(x0pE,y0mE,z0mE,xPmE,yPpE,pClus->getZOnPrPlane(xPmE,yPpE),segRegOnKick[1]);
  fkick->calcIntersection(x0mE,y0pE,z0mE,xPpE,yPmE,pClus->getZOnPrPlane(xPpE,yPmE),segRegOnKick[2]);
  fkick->calcIntersection(x0pE,y0pE,z0mE,xPmE,yPmE,pClus->getZOnPrPlane(xPmE,yPmE),segRegOnKick[3]);

  indexPar =  pClus->getOwnIndex();
  indexFCh = -1;
  indexLCh = -2;
  Int_t nClustCh = findClustersSeg2();
  if(nClustCh>0) pClus->setIndexChilds(indexFCh,indexLCh);
  return nClustCh;
}

Int_t HMdc34ClFinderSec::findClustersSeg2(void) {
//printf("------------------------ Sec.%i:   ",sector+1); segOnKick.print();
  for(Int_t np=0; np<4; np++) {
    if(segRegOnKick[np].getX()<prPlotSeg2->xMin || segRegOnKick[np].getX()>prPlotSeg2->xMax) {
//       Warning("findClustersSeg2","S%i: The X=%g of the point %i out of the region (%g - %g).",
//          sector+1, segRegOnKick[np].getX(), np, prPlotSeg2->xMin, prPlotSeg2->xMax);
      return 0;
    }
//(segOnKick-segRegOnKick[np]).print();
    Double_t tmp = prPlotSeg2->D() - prPlotSeg2->A()*segRegOnKick[np].getX();  // D-A*x
    al[np]  = tmp-segRegOnKick[np].getZ();                                     // D-A*x-z
    bl[np]  = tmp*segRegOnKick[np].getY();                                     // (D-A*x)*y
    cl[np]  = segRegOnKick[np].getZ()+prPlotSeg2->B()*segRegOnKick[np].getY(); // z+B*y
    nbX[np] = prPlotSeg2->binX(segRegOnKick[np].getX());
  }
  
  // For HMdcClus errors:
  errSegOnKick.setXYZ( (Abs(segRegOnKick[0].getX()-segRegOnKick[1].getX())+
                        Abs(segRegOnKick[2].getX()-segRegOnKick[3].getX()))*0.25,
                       (Abs(segRegOnKick[0].getY()-segRegOnKick[2].getY())+
                        Abs(segRegOnKick[1].getY()-segRegOnKick[3].getY()))*0.25,
                       (Abs(segRegOnKick[0].getZ()-segRegOnKick[2].getZ())+
                        Abs(segRegOnKick[1].getZ()-segRegOnKick[3].getZ()))*0.25);
  
  if(useDxDyCut>0) {
    dXdYCutReg = HMdc34ClFinder::calcDxDyCutRegion(segOnKick);
//    prPlotSeg2->calcCrossBin(seg1,dirSeg1,xBin0,yBin0);
    prPlotSeg2->calcIntersection(seg1,dirSeg1,x0,y0); 
    xBin0 = prPlotSeg2->binX(x0);
    yBin0 = prPlotSeg2->binY(y0);
    
    yBinToDxDyInd = yBin0+yLineMin[dXdYCutReg];
    yMinDxDyCut   = yBinToDxDyInd;
    yMaxDxDyCut   = yBin0+yLineMax[dXdYCutReg];
    if(yMinDxDyCut <= 0)                   yMinDxDyCut = 1;
    if(yMaxDxDyCut >  prPlotSeg2->nBinY-2) yMaxDxDyCut = prPlotSeg2->nBinY-2;
  }

  realTypeClFinder=0;
  if(minAmp[2]>0 && minAmp[3]>0) makeSeg2PlotAmpCut();   // Segment ampl.cut only!
  else if(minAmp[2]>0)  makeModS2Plot(2);
  else if(minAmp[3]>0)  makeModS2Plot(3);
  else return 0;

  Int_t nClusters = scanPlotSeg2();
//!  clearPrSeg2();
  return nClusters;
}

void HMdcProjPlot::calcCrossBin(const HGeomVector &p,const HGeomVector &dir,Short_t& xb,Short_t& yb) const {
  // Function calculate xBinNumber and yBinNumber of bin which line p,dir crosses.
  Double_t x,y;
  calcIntersection(p,dir,x,y); 
  xb = binX(x);
  yb = binY(y);
}

Int_t HMdc34ClFinder::calcDxDyCutRegion(const HGeomVector& pnt) {
  // Return region number for dXdY kick cut.
  // pnt - cross point of inner cluster (or segment) with kick plane
  Double_t x = pnt.getX();
  Double_t y = pnt.getY();
  Double_t z = pnt.getZ();
  Double_t theta = TMath::ATan2(TMath::Sqrt(x*x+y*y),z)*TMath::RadToDeg();
  Double_t phi   = TMath::ATan2(y,x)*TMath::RadToDeg();
  Double_t c1, c2;
  Int_t c3;
  if(theta < 30.) {c1 = 18.; c2 =  6.; c3 = 0;}
  else            {c1 = 30.; c2 = 10.; c3 = 2;}
  if     (theta<19.) theta = 19.;
  else if(theta>69.) theta = 69.;
  if     (phi<61.)   phi = 61.;
  else if(phi>119.)  phi = 119.;
  return (Int_t((theta-c1)/c2)+c3)*6 + Int_t((phi-60.)/10.); 

  /*
  if     (phi <  80.)  dXdYCutReg = 0;
  else if(phi > 100.)  dXdYCutReg = 2;
  if(theta < 30.) return dXdYCutReg;
  if(theta < 50.) return dXdYCutReg + 3;
  return                 dXdYCutReg + 6;
  */
}


void HMdc34ClFinderSec::clearPrSeg2(void) {
  for(Int_t y=0;y<prPlotSeg2->nBinY;y++) {
    if(xCMax[y]<0) continue;
    memset(prPlotSeg2->weights3+xCMin[y] + y*nBinX,0, xCMax[y]-xCMin[y]+1);
    memset(prPlotSeg2->weights4+xCMin[y] + y*nBinX,0, xCMax[y]-xCMin[y]+1);
    xCMin[y] = nBinX;
    xCMax[y] = -1;
  }
}

void HMdc34ClFinderSec::makeModS2Plot(Int_t mod) {
  // Filling proj.plot for one MDC
  module = mod;
  cFMod  = &((*this)[module]);
  if(cFMod == 0) return;

  seg2MinAmpCut = minAmp[module];
  if(seg2MinAmpCut<3) seg2MinAmpCut = 3;

  if(mod==2) weightsArr = prPlotSeg2->weights3;
  else       weightsArr = prPlotSeg2->weights4;

  Int_t layList[6] = {2,3,1,4,0,5};   // order of layers at the pr.plot filling

  Int_t nFiredLay = 0;
  for(Int_t il=0; il<6; il++) {
    Int_t lay=layList[il];
    if(!calcLayerProjVar(lay)) continue; // No fired wires in this layer.
    nFiredLay++;
    if(maxAmp[module]-nFiredLay+1>=seg2MinAmpCut) makeLayProjV1();
    else                                          makeLayProjV2();
  }
}

void HMdc34ClFinderSec::calcDriftDist(void) {
  Double_t tdcTime  = cFLay->cells->getTimeValue(cell);
  if(tdcTime > 0.) {
    tdcTDist = pDriftTimeParSec->calcDistance(module,80.,tdcTime);
    if(tdcTDist < 0.) tdcTDist = 0;
  } else tdcTDist = 0;
}

Double_t HMdc34ClFinderSec::calcKickCor(void) {
  // return correction for cell number
  if(pKickCor != NULL && cFLay->module==3) {
    Double_t wp = (*(cFLay->pSCLay))[cell].getWirePos();
    Double_t corr  = pKickCor->calcCorrection(wp-cFLay->yCross,cFLay->module,cFLay->layer);
    if(corr >= -60. && corr <= 60.) return corr/cFLay->pSCLay->getPitch();
  }
  return 0.;
}

void HMdc34ClFinderSec::setArrays(Int_t lay) {
  layInd    = (module-2)*6 + lay;
  shUpArr   = sUAr[layInd];
  shDnArr   = sDAr[layInd];
  cellNum   = cNum[layInd];
  numPrRegs = &(nPRg[layInd]);
  cFLayArr  = pLayPar[layInd];
}

void HMdc34ClFinderSec::makeSeg2PlotAmpCut(void) {
  // Making proj.plot in segment with cut on the total amplitude in 2 MDC's
  // Number of MDCs in segment must be eq.2 !!!
  realTypeClFinder = 3;
  if(minAmp[2]<=0 || minAmp[3]<=0) return;
  seg2MinAmpCut = minAmp[2]+minAmp[3];
  if(typeClFinder==2) {
    seg2MinAmpCut = Min(minAmp[2],minAmp[3]) + 2;
    if(seg2MinAmpCut < 5) seg2MinAmpCut = 5;
  }
  Int_t maxAmpSeg = maxAmp[2]+maxAmp[3];
  if(maxAmpSeg<seg2MinAmpCut) return;

  Int_t layList[6] = {2,3,1,4,0,5};   // order of layers at the pr.plot filling
  Int_t nFiredLay  = 0;
  for(Int_t il=0; il<6; il++) {
    Int_t lay = layList[il];
    for(module=2; module<4; module++) {
      if(module==2) weightsArr = prPlotSeg2->weights3;
      else          weightsArr = prPlotSeg2->weights4;
      cFMod  = &((*this)[module]);
      if(cFMod == 0) continue;
      if(!calcLayerProjVar(lay)) continue; // No fired wires in this layer.
      nFiredLay++;
      if(maxAmpSeg-nFiredLay+1 >= seg2MinAmpCut) makeLayProjV1();
      else                                       makeLayProjV2();
    }
  }
}

Bool_t HMdc34ClFinderSec::calcLayerProjVar(Int_t lay) {
  // Setting of layer var. for filling proj.plot
  cFLay     = &((*cFMod)[lay]);
  cell      = cFLay->cells->getFirstCell();
  if(cell<0) return kFALSE;
  if(cell >= cFLay->nCells) {
    Warning("calcLayerProjVar","Cell %i >= num.cells(=%i)",cell,cFLay->nCells);
    cell = -1;
    return kFALSE;
  }
  setFirstLayerPart(cell);
  setArrays(lay);
  oneArr     = oneArrLay[lay];
  bitsSet    = bitsSetLay[lay];
  nYLinesL   = cFLay->nYLines-1;
  xBin1L     = cFLay->xBin1;
  xBin2L     = cFLay->xBin2;
  regInd     = 0;
  *numPrRegs = 0;
  if(useDriftTime) {
    Double_t cellNorm = 1./cFLay->nCells;
    while(kTRUE) {
      Double_t dDCutYCellCorr  = cell*cellNorm;             // Correction vs cell (~y)
      dDCutYCellCorr          *= dDCutYCellCorr*dDistYCorr; //quadratic
      calcYbinDrTm(dDCutYCellCorr);
      cell = cFLay->cells->next(cell);
      if(cell < 0) break;
      setLayerPart(cell);
    }
  } else {
    while(kTRUE) {
      shUpArr[*numPrRegs]  = Max(calcYbin(0,0,cell+1),calcYbin(0,1,cell+1));
      shDnArr[*numPrRegs]  = Min(calcYbin(1,0,cell),calcYbin(1,1,cell));
      cellNum[*numPrRegs]  = cell;
      cFLayArr[*numPrRegs] = cFLay;
      (*numPrRegs)++;
      cell = cFLay->cells->next(cell);
      if(cell < 0) break;
      setLayerPart(cell);
    }
  }
  cellNum[*numPrRegs] = -1;
  shDownMax  = -1000000;
  return kTRUE;
}

void HMdc34ClFinderSec::setFirstLayerPart(Int_t c) {
  if(c >= cFLay->nextPartFCell) {
    cFLay = cFLay->layerNextPart;                                // Layer part N2 (layerPart=1)
    if(c >= cFLay->nextPartFCell) cFLay = cFLay->layerNextPart;  // Layer part N3 (layerPart=2)
  }
  nYLinesL = cFLay->nYLines-1;
  xBin1L   = cFLay->xBin1;
  xBin2L   = cFLay->xBin2;
}

void HMdc34ClFinderSec::setLayerPart(Int_t c) {
  if(c >= cFLay->nextPartFCell) {
    cFLay = cFLay->layerNextPart;                                // Layer part N2 (layerPart=1)
    if(c >= cFLay->nextPartFCell) cFLay = cFLay->layerNextPart;  // Layer part N3 (layerPart=2)
    nYLinesL = cFLay->nYLines-1;
    xBin1L   = cFLay->xBin1;
    xBin2L   = cFLay->xBin2;
  }
}

HMdc34ClFinderLayer* HMdc34ClFinderLayer::getLayerPart(Int_t c) {
  if(c < nextPartFCell) return this;
  return layerNextPart->getLayerPart(c);
}

void HMdc34ClFinderSec::makeLayProjV1(void) {
  // plot filling and filled region determination
  while(setRegionVar()) {
    for(Int_t ny=ny1; ny<=ny2; ny++) {
      nbF = prPlotSeg2->xMinL[ny];
      nbL = prPlotSeg2->xMaxL[ny];
      
      Int_t iy1 = ny-shUp;
      Int_t iy2 = ny-shDown;
      if(cFLay->wOrType > 0) {
        if(iy1>=0        && xBin1L[iy1]>nbF) nbF = xBin1L[iy1];
        if(iy2<=nYLinesL && xBin2L[iy2]<nbL) nbL = xBin2L[iy2];
      } else {
        if(iy2<=nYLinesL && xBin1L[iy2]>nbF) nbF = xBin1L[iy2];
        if(iy1>=0        && xBin2L[iy1]<nbL) nbL = xBin2L[iy1];
      }
      if(nbL < nbF) continue;
      if(useDxDyCut==1) {
        Int_t ind = ny - yBinToDxDyInd;  // = ny - yBin0-yLineMin[dXdYCutReg]
        DxDyBinsCut& dxdycut = cutXBins[dXdYCutReg][ind];
        Int_t xCutMin = dxdycut.xBMin + xBin0;
        Int_t xCutMax = dxdycut.xBMax + xBin0;
        if(nbF<xCutMin) nbF = xCutMin;
        if(nbL>xCutMax) nbL = xCutMax;
        if(nbL < nbF) continue;
      }
      if(nbF<xCMin[ny]) xCMin[ny] = nbF;
      if(nbL>xCMax[ny]) xCMax[ny] = nbL;
      fillBins(ny);
    }
  }
}

void HMdc34ClFinderSec::makeLayProjV2(void) {
  // plot filling in filled regions only
  while(setRegionVar()) {
    for(Int_t ny=ny1; ny<=ny2; ny++) {
      nbL = xCMax[ny];
      if(nbL<0) continue;
      nbF = xCMin[ny];
      Int_t iy1 = ny-shUp;
      Int_t iy2 = ny-shDown;
      if(cFLay->wOrType > 0) {
        if(iy1>=0        && xBin1L[iy1]>nbF) nbF = xBin1L[iy1];
        if(iy2<=nYLinesL && xBin2L[iy2]<nbL) nbL = xBin2L[iy2];
      } else {
        if(iy2<=nYLinesL && xBin1L[iy2]>nbF) nbF = xBin1L[iy2];
        if(iy1>=0        && xBin2L[iy1]<nbL) nbL = xBin2L[iy1];
      }
      if(nbL < nbF) continue;
      if(useDxDyCut==1) {
        Int_t ind = ny - yBinToDxDyInd;  // = ny - yBin0-yLineMin[dXdYCutReg]
        DxDyBinsCut& dxdycut = cutXBins[dXdYCutReg][ind];
        Int_t xCutMin = dxdycut.xBMin + xBin0;
        Int_t xCutMax = dxdycut.xBMax + xBin0;
        if(nbF<xCutMin) nbF = xCutMin;
        if(nbL>xCutMax) nbL = xCutMax;
        if(nbL < nbF) continue;
      }
      fillBins(ny);
    }
  }
}

Bool_t HMdc34ClFinderSec::setRegionVar(void) {
  // return kFALSE if no projection region more
  // Calculate
  // shDown,shUp - Y-region of the cell (or some cells) on the proj.plot (can be outside plot!)
  // ny1,ny2 - Y region for filling on the the proj.plot
  if(regInd >= *numPrRegs) return kFALSE;
  if(shDnArr[regInd]>shDownMax) shDown = shDnArr[regInd];
  else                          shDown = shDownMax;
  shUp  = shUpArr[regInd];
  cell  = cellNum[regInd];
  cFLay = cFLayArr[regInd];
  regInd++;
  while(regInd < *numPrRegs && cell != cellNum[regInd]) {
                  // cell can be eq. cellNum[regInd] when drifttime is used only
    if(shDnArr[regInd]-shUp > 1) break;   // No overlap
    if(cFLay != cFLayArr[regInd]) break; // New part of layer
    // is overlap! Combine in one region:
    shUp = shUpArr[regInd];
    if(shDnArr[regInd] < shDown) {
      if(shDnArr[regInd]>shDownMax) shDown = shDnArr[regInd];
      else                          shDown = shDownMax;
    }
    cell = cellNum[regInd];
    regInd++;
  }
  if(cFLay != cFLayArr[regInd]) shDownMax = -1000000; // New part of layer
  else                          shDownMax = shUp+1;   // shDownMax prevent to fill one bin twice.
  // Setting of Y limits:
  shDown += cFLay->yFirst;
  shUp   += cFLay->yFirst;
  ny1     = shDown<=0 ? 1 : shDown;
  ny2     = nYLinesL+shUp>nBinYM2 ? nBinYM2 : nYLinesL+shUp;
  if(useDxDyCut==1) {
    if(ny1 < yMinDxDyCut) ny1 = yMinDxDyCut;
    if(ny2 > yMaxDxDyCut) ny2 = yMaxDxDyCut;
    // If ny1-ny2 - outside of yMinDxDyCut-yMaxDxDyCut 
    // ny2 will smaller ny1 and loops for(.=ny1;<=ny2;...) will ignored!
//  Mozhno optimizirovat' code v etom sluchae ...!!!
  }
  return kTRUE;
}

TH2C* HMdc34ClFinderSec::getPlot(Char_t* name, Char_t* title,Int_t ver) {
  for(module=2; module<4; module++) {
    cFMod = &((*this)[module]);
    if(&cFMod==0) continue;
    for(Int_t lay=0; lay<6; lay++) if(calcLayerProjVar(lay)) makeLayProjV1();
  }
  TH2C* plt = prPlotSeg2->getPlot(name,title);
  clearPrSeg2();
  return plt;
}

Int_t HMdc34ClFinderSec::calcYbin(Int_t upDo, Int_t leRi, Int_t c) {
  //upDo=0 - up rib, =1 down rib
  Int_t    np    = cFLay->nPSegOnKick[upDo][leRi];
  Double_t xp    = segRegOnKick[np].getX();
  Double_t yp    = cFLay->tgY*xp+c*cFLay->yStep+cFLay->y0[leRi];
  Double_t zp    = cFLay->tgZ*xp+c*cFLay->zStep+cFLay->z0[leRi];
  Double_t yPrPl = (al[np]*yp-bl[np]+segRegOnKick[np].getY()*zp)/(zp+prPlotSeg2->B()*yp-cl[np]);
  return Int_t((yPrPl-prPlotSeg2->yMin)/prPlotSeg2->stY) - cFLay->yBin[nbX[np]];
}

void HMdc34ClFinderSec::calcYbinDrTm(Double_t dDCutYCellCorr) {
  // Cut for tdcTDist = dDistCut + dDCutCorr[layInd] + dDCutYCellCorr
  // dDistCut constant for all layers and cells
  // dDCutCorr[lay] - correction for layers
  // dDCutYCellCorr = dDistYCorr*(cell/Number_cells)^2
  calcDriftDist();
  Double_t corr = calcKickCor();
  Double_t cellCorr = cell + corr;  // +or- ? => MINUS!
  Double_t cnstYC = cellCorr*cFLay->yStep + cFLay->y0w;   // wire position in sec.coor.sys
  Double_t cnstZC = cellCorr*cFLay->zStep + cFLay->z0w;   // (x=0!)
  Double_t B      = prPlotSeg2->B();
  Short_t &shDnR1 = shDnArr[*numPrRegs];
  Short_t &shUpR1 = shUpArr[*numPrRegs];
  Short_t &shDnR2 = shDnArr[(*numPrRegs)+1];
  Short_t &shUpR2 = shUpArr[(*numPrRegs)+1];
  Double_t dDistCutLCorr = dDistCut+dDCutCorr[layInd]+dDCutYCellCorr;
// static Double_t ddMin = 1000.;
// static Double_t ddMax = 0.;
// if(ddMin>dDistCutLCorr) {
//   ddMin=dDistCutLCorr;
//   printf("ddMin=%g\n",ddMin);
// }
// if(ddMax<dDistCutLCorr) {
//   ddMax=dDistCutLCorr;
//   printf("  ddMax=%g\n",ddMax);
// }
  Double_t distPlCut = tdcTDist + dDistCutLCorr;
  if(distPlCut > cFLay->maxDrDist) distPlCut = cFLay->maxDrDist;
  Double_t distMnCut = tdcTDist - dDistCutLCorr;
  if(distMnCut < 0.) distMnCut = 0.;
  for(Int_t i=0;i<2;i++) {  //i=0 - shift down, =1 -shift up
    Int_t np = cFLay->nPSegOnKick[1-i][0];

    Double_t distA = i==0 ? distPlCut : distMnCut;
    Double_t distB = i==0 ? distMnCut : distPlCut;
    for(Int_t j=0;j<2;j++) {
      if(j==1) np ^= 1;
      Double_t x0 = segRegOnKick[np].getX();
      Double_t y0 = segRegOnKick[np].getY();
      Double_t z0 = segRegOnKick[np].getZ();

      // Point on the wire for xp = x0.
      Double_t yp = cFLay->tgY*x0 + cnstYC;
      Double_t zp = cFLay->tgZ*x0 + cnstZC;

      // Direction of the line kick->(xp,yp,zp). (dX=0 !);
      Double_t dY = yp-y0;
      Double_t dZ = zp-z0;

      // Calculation of the perpendicular to the plane wire and line dX,dY,dZ
      Double_t x     =  dY*cFLay->zWirDir - dZ*cFLay->yWirDir;
      Double_t y     =  dZ*cFLay->xWirDir;
      Double_t z     = -dY*cFLay->xWirDir;
      Int_t    yWrLU = cFLay->yBin[nbX[np]];

      Double_t normM = 1/Sqrt(x*x+y*y+z*z);
      Double_t coefy = cFLay->tgY*x - y;
      Double_t coefZ = cFLay->tgZ*x - z;

      // Region 1:
      Double_t norm  = distA*normM;
      Double_t ypr   = yp + coefy*norm;
      Double_t zpr   = zp + coefZ*norm;
      Double_t yPrPl = (al[np]*ypr-bl[np]+y0*zpr)/(zpr+B*ypr-cl[np]);
      Int_t    yBin  = Int_t((yPrPl-prPlotSeg2->yMin)/prPlotSeg2->stY) - yWrLU;
      if(i==0) {  // Low proj. bound
        if(j==0 || shDnR1>yBin) shDnR1 = yBin;
      } else {    // Upper proj. bound
        if(j==0 || shUpR1<yBin) shUpR1 = yBin;
      }

      // Region 2:
      norm  = distB*normM;
      ypr   = yp - coefy*norm;
      zpr   = zp - coefZ*norm;
      yPrPl = (al[np]*ypr-bl[np]+y0*zpr)/(zpr+B*ypr-cl[np]);
      yBin  = Int_t((yPrPl-prPlotSeg2->yMin)/prPlotSeg2->stY) - yWrLU;
      if(i==0) {  // Low proj. bound
        if(j==0 || shDnR2>yBin) shDnR2 = yBin;
      } else {    // Upper proj. bound
        if(j==0 || shUpR2<yBin) shUpR2 = yBin;
      }
    }
  }
  cellNum[*numPrRegs]  = cell;
  cFLayArr[*numPrRegs] = cFLay;
  (*numPrRegs)++;
  if(shDnR2-shUpR1 <= 1) { // One region
    shUpR1 = shUpR2;
  } else {                 // Two regions
    cellNum[*numPrRegs]  = cell;
    cFLayArr[*numPrRegs] = cFLay;
    (*numPrRegs)++;
  }
}

Int_t HMdc34ClFinderSec::scanPlotSeg2(void) {
  nClsArr = 0;
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg2();
  for(Int_t y=0;y<prPlotSeg2->nBinY;y++) {
    if(xCMax[y]<0) continue;

    Int_t nb0 = nBinX*y;
    Int_t nb  = nb0 + xCMin[y];
    Int_t nbL = nb0 + xCMax[y];

    UChar_t *wt3 = prPlotSeg2->weights3 + nb;
    UChar_t *wt4 = prPlotSeg2->weights4 + nb;
    for(; nb<=nbL; nb++,wt3++,wt4++) {
      UChar_t amp = prPlotSeg2->nBitsLuTb[*wt3] + prPlotSeg2->nBitsLuTb[*wt4];
      if(amp > 0) {
        *wt3 = 0;
        *wt4 = 0;
        if(amp >= seg2MinAmpCut) {
          if(useFloatLevel) calcClusterSeg2FloatLevel(nb,amp);
          else              calcClusterSeg2FixedLevel(nb,amp);
        }
      }
    }
//    memset(prPlotSeg2->weights+xCMin[y] + y*nBinX,0, xCMax[y]-xCMin[y]+1);
    xCMin[y] = nBinX;
    xCMax[y] = -1;
  }

  if(nClsArr == 0) return 0; // No clusters are found!
  if     (fakeSuppFlag<0) mergeClustSeg2();
  else if(fakeSuppFlag>0) removeGhosts();
  if(pMetaMatch != NULL)  checkMetaMatch();
  return fillClusCat();
}

void HMdc34ClFinderSec::removeGhosts(void) {
   // Ghost removing by selecting best cluster(s)
  if(nClsArr < 2) return;   // no clusters or one cluster only!
  Int_t sumMax1 = 0;
  Int_t sumMax2 = 0;
  for(Int_t cl=0; cl<nClsArr; cl++) {
    HMdcCluster& clst = clusArr[cl];
    if(clst.getFakeFlag() > 0) continue;
    Int_t nLevel     = clst.getRealLevel();
    Int_t nBins      = clst.getNBins();
    Int_t nLayers    = clst.getLCells2().getNLayers();
    Int_t currentSum = wLev*nLevel+wBin*nBins+wLay*nLayers;
    
    if(currentSum==sumMax1 || currentSum<=sumMax2) continue;
    if(sumMax1 == 0) sumMax1 = currentSum;
    else if(currentSum > sumMax1) {
      sumMax2 = sumMax1;
      sumMax1 = currentSum;
    } else if(currentSum > sumMax2) sumMax2 = currentSum;
  }

  Int_t dWtCutC = sumMax1-sumMax2;
  if(dWtCutC>dWtCut) dWtCutC = dWtCut;
  for(Int_t cl=0; cl<nClsArr; cl++) {
    HMdcCluster& clst = clusArr[cl];
    if(clst.getFakeFlag() > 0) continue;
    Int_t nLevel     = clst.getRealLevel();
    Int_t nBins      = clst.getNBins();
    Int_t nLayers    = clst.getLCells2().getNLayers();
    Int_t currentSum = wLev*nLevel+wBin*nBins+wLay*nLayers;
    if(sumMax1-currentSum>dWtCutC) clst.setFakeFlag(21);
  }  
}

// void HMdc34ClFinderSec::removeGhosts(void) {
//    //===Suppression==
//  
//   pListCells->clearClustCounter(1);
//   
//   for(Int_t cl=0; cl<nClsArr; cl++) {
//     HMdcCluster& clst = clusArr[cl];
//     
// if(clst.getIOSeg() != 1) continue;
// 
//     //                                          < 10 suppresed in testForIncl...
//     if(clst.getFakeFlag() > 0 && clst.getFakeFlag() < 10) continue;
//     HMdcList12GroupCells& listCells = clst.getLCells2();
//     if(clst.getRealLevel()==12) pListCells->addToClusCounters(1,listCells);
//   }
// 
//   for(Int_t cl=0; cl<nClsArr; cl++) {
//     // level 12---------------------------------------------
//     HMdcCluster& clst = clusArr[cl];
//     if(clst.getRealLevel()!=12)  continue;
//     if(clst.getFakeFlag() > 0 && clst.getFakeFlag() < 10) continue;
//     Int_t nBins = clst.getNBins();
//     
//     HMdcList12GroupCells& listCells = clst.getLCells2();
//     Int_t  nUnWr  = pListCells->getNUniqueWires(1,listCells);
// 
//     Bool_t realOk = nUnWr > 10 && nBins > 3;  // RealID!
//     Bool_t fakeOk = nUnWr < 2 && nBins < 4;   // nBins == 1;   // FakeID!
//     
//     UChar_t &fakeFd = clst.fakeFlagS();
//     UChar_t &realFd = clst.realFlagS();
// 
// // Dobavit' ispolzovanie "inRealCl..."
//     if(fakeOk && fakeFd > 0) continue;
//     if(fakeOk) {                            // if fakeFd==0 and fakeOk == kTRUE
//       fakeFd = 12;                          // substr. from clusters counter
//       pListCells->subFrClusCounters(1,listCells);
//       if(realFd > 0) {      
//         realFd = 0;                         // and substr. from real cl.counter
//         pListCells->subFrRClusCounters(1,listCells);
//       }
//     } else if(fakeFd>0) {                   // if fakeFd>0 and fakeOk == kFALSE
//       fakeFd = 0;                           // add to clusters counter
//       pListCells->addToClusCounters(1,listCells);
//       if(realOk) { 
//         realFd = 1;                         // and add to real cl.counter
//         pListCells->addToRClusCounters(1,listCells);
//       }
//     } else {                                // if fakeFd==0 and fakeOk == kFALSE
//       if(realOk && realFd > 0) continue;    // No changes is status
//       if(!realOk && realFd <= 0) continue;  // No changes is status
//       if(realOk ) {                         // if realOk=kTRUE && realFd <= 0
//         pListCells->addToRClusCounters(1,listCells); // add to real
//         realFd = 1;
//       } else {
//         realFd = 0;                         // if realOk=kFALSE && realFd > 0
//         pListCells->subFrRClusCounters(1,listCells); // sub. from real
//       }
//     }
//   }
// 
//   // Level 11:
// //!        for(Int_t g=0;g<1;g++)
//   for(Int_t cl=0; cl<nClsArr; cl++) {
//     // level 11---------------------------------------------
//     HMdcCluster& clst = clusArr[cl];
//     if(clst.getRealLevel() != 11) continue;
//     UChar_t &fakeFd = clst.fakeFlagS();
// //?    if(fakeFd > 0 && clst.getFakeFlag() < 10) continue;
//     if(fakeFd>0) continue; //???
//     HMdcList12GroupCells& listCells = clst.getLCells2();
// //          if(g==0) 
//     pListCells->addToClusCounters(1,listCells); // add to cluster counter.
//     Int_t   nRlWr;
//     Int_t   nUnWr = pListCells->getNUniqueAndRWires(1,listCells,nRlWr);
//     Bool_t fakeOk = nUnWr < 5; // && nRlWr > 5;   // FakeID!
//     Bool_t realOk = nUnWr > 10;   // RealID!
//     
//     UChar_t &realFd = clst.realFlagS();
//     if(fakeOk) {                   // if fake - remove from clust.counter
//       fakeFd = 11;
//       pListCells->subFrClusCounters(1,listCells);
//     } else if(realOk) {            // if real - add real clust.counter
//       realFd = 1;
//       pListCells->addToRClusCounters(1,listCells);
//     }        
//   }
// 
//   // Level 10:
//   /*for(Int_t g=0;g<1;g++)*/
//   for(Int_t cl=0; cl<nClsArr; cl++) {
//     // level 10---------------------------------------------
//     HMdcCluster& clst = clusArr[cl];
//     if(clst.getRealLevel() != 10) continue;
//     if(clst.getFakeFlag() > 0 && clst.getFakeFlag() < 10) continue;
//     UChar_t &fakeFd = clst.fakeFlagS();
//     UChar_t &realFd = clst.realFlagS();
//     if(fakeFd>0) continue; //???
// // ?    Int_t nBins = clst.getNBins();
//     HMdcList12GroupCells& listCells = clst.getLCells2();
// //        if(g==0) 
//     pListCells->addToClusCounters(1,listCells);
//     Int_t   nRlWr;
//     Int_t   nUnWr = pListCells->getNUniqueAndRWires(1,listCells,nRlWr);
// 
// //    Bool_t fakeOk = (nUnWr==0) || (nBins<=2 && nUnWr==1) ||
// //                    (nUnWr < 4 && nRlWr > 4); // Fake 80.68%/0.82%/0.40%
//     Bool_t fakeOk = nUnWr < 7;
//     Bool_t realOk = nUnWr > 9;   // RealID!
//     
//     if(fakeOk && fakeFd==0) {
//       fakeFd = 10;
//       pListCells->subFrClusCounters(1,listCells);
//     } else if(realOk && realFd==0) {
//       realFd = 1;
//       pListCells->addToRClusCounters(1,listCells);
//     }
//   }
// }

void HMdc34ClFinderSec::checkMetaMatch(void) {
  // Meta matching
  for(Int_t cl=0; cl<nClsArr; cl++) {
    HMdcCluster& cluster = clusArr[cl];
    if(cluster.getFakeFlag()>0 || !cluster.getStatus()) continue;
    Double_t xc = cluster.getX();
    Double_t yc = cluster.getY();
    if( !pMetaMatch->hasClusMathToMeta(sector,segOnKick,xc,yc,prPlotSeg2->getZOnPlane(xc,yc)) ) {
      cluster.setFakeFlagAndStatus(9);
    }
  }  
}

Int_t HMdc34ClFinderSec::fillClusCat(void) {
  // Filling containers:
  if(nClsArr <= 0) return 0;
  Int_t nClusters      = 0;
  Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg2();
  if( isGeant ) {
    HMdcGeantEvent* pGEvent = HMdcGeantEvent::getExObject();
//    if(pGEvent) pGEvent->clearOSegClus();
    if(pGEvent) pGEvent->clearOClus();  // For HMdcSeg fake supr. clean best cluster ind. only
  }
  for(Int_t cl=0; cl<nClsArr; cl++) if(clusArr[cl].getStatus()) {
    if(fakeSuppFlag==1 && clusArr[cl].getFakeFlag()>0) continue;   // Fake
    HMdcCluster& cluster = clusArr[cl];
    
    if(useDxDyCut>0 && !cutDxDyArr[dXdYCutReg].IsInside(cluster.getX()-x0,cluster.getY()-y0)) continue;
    
    cluster.calcClusParam();
    HMdcClus* clus = (HMdcClus*)fClusCat->getNewSlot(locClus,&indexLCh);
    if(!clus) {
      Warning("fillClusCat","S.%i No slot HMdcClus available!",sector+1);
      break;
    }
    if(isGeant) clus = (HMdcClus*)(new(clus) HMdcClusSim(cluster.getLCells2()));
    else        clus = new(clus) HMdcClus(cluster.getLCells2());
    if(indexFCh<0) indexFCh=indexLCh;
    nClusters++;
    Int_t nLayM1 = clus->getNLayersMod(0);
    Int_t nLayM2 = clus->getNLayersMod(1);
    clus->setSecSegInd(sector,1,indexLCh);
    Int_t tpClFndr = 0;
    if( useFloatLevel ) tpClFndr |= 128;
                        tpClFndr |= 256;  // Segment amp.cut only!
    if(realTypeClFinder==2 && (nLayM1<minAmp[2] || nLayM2<minAmp[3])) {
      clus->setMod( (nLayM1>=nLayM2) ? 2 : 3);
      clus->setTypeClFinder(tpClFndr|2);
    } else {
      clus->setMod((mSeg[1]==3) ? -2 : (mSeg[1]+1) );  // mSeg[1]+1=mSeg[1]-1+2
      clus->setTypeClFinder(tpClFndr);
    }
    clus->setMinCl(minAmp[2],minAmp[3]);
    clus->setPrPlane(prPlotSeg2->A(),prPlotSeg2->B(),prPlotSeg2->D());
    clus->setTarg(segOnKick);
    clus->setErrTarg(errSegOnKick);
    clus->setIndexParent(indexPar);
    cluster.fillClus(clus,1,isGeant); // ",1," - outer segment
  }
  return nClusters;
}

void HMdc34ClFinderSec::mergeClustSeg2(void) {
  Int_t nClus      = nClsArr;
  Int_t mergeLevM3 = minAmp[2]>4 ? 4:3; //???
  Int_t mergeLevM4 = minAmp[3]>4 ? 4: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& cLCSeg2 = cls1.getLCells2();
      for(Int_t cl2=cl1+1; cl2<nClsArr; cl2++) {
        HMdcCluster& cls2=clusArr[cl2];
        if(!cls2.getStatus()) continue;
        HMdcList12GroupCells* cLCSeg2s = &(cls2.getLCells2());
        Float_t dY=cls1.getY()-cls2.getY();
//???optimizaciya???        if(dY>100.) break;
        if(Abs(dY) > 30.) continue;                          //  30. mm !???
        if(Abs(cls1.getX()-cls2.getX()) > 150.) continue;    // 150. mm !???
        if(realTypeClFinder==2) { // realTypeClFinder==2 when typeClFinder==2 +...!
          if(/*typeClFinder==2 &&*/ cLCSeg2.compare(cLCSeg2s,0,11)<6) continue;
        } else {
          if(minAmp[2]>0 && cLCSeg2.compare(cLCSeg2s,0, 5)<mergeLevM3) continue;
          if(minAmp[3]>0 && cLCSeg2.compare(cLCSeg2s,6,11)<mergeLevM4) continue;
        }
        cls1.addClus(cls2);
        nomerg=kFALSE;
        nClus--;
      }
    }
    if(nomerg || nClus==1) break;
  }
}

void HMdc34ClFinderSec::initCluster(Int_t nBin,UChar_t amp) {
  cluster = &(clusArr[nClsArr]);
  cluster->init(sector,1,prPlotSeg2->xFirstBin, prPlotSeg2->yFirstBin,
                         prPlotSeg2->stX,       prPlotSeg2->stY);   // 1 -segmet number (outer)
  Int_t ny = prPlotSeg2->ybin(nBin);
  nLMinCl = nLMaxCl = ny;
  xMinClLines[ny] = xMaxClLines[ny] = prPlotSeg2->xbin(nBin);
  isClstrInited = kTRUE;
  addBinInCluster(nBin,amp);
}

void HMdc34ClFinderSec::reinitCluster(Int_t nBin,UChar_t amp) {
  // Use it if list of wires empty yet!
  cluster->clearBinStat();
  addBinInCluster(nBin,amp);
  Int_t ny = prPlotSeg2->ybin(nBin);
  nLMinCl = nLMaxCl = ny;
  xMinClLines[ny] = xMaxClLines[ny] = prPlotSeg2->xbin(nBin);
}

Bool_t HMdc34ClFinderSec::calcClusterSeg2FixedLevel(Int_t nBin,UChar_t amp) {
  // claster finder with fixed level of searching
  initCluster(nBin,amp);
  stack->init();
  do {
    for(Int_t ib=0; ib<8; ib++) {
      Int_t nb = nBin+nearbyBins[ib];
      amp = prPlotSeg2->getBinAmplAndClear(nb);
      if( amp>=seg2MinAmpCut ) {
        stack->push(nb);
        addBinInCluster(nb,amp);
      }
    }
  } while((nBin=stack->pop()) >= 0);
  return fillClusterSeg2();  // Filling of the cluster
}

Bool_t HMdc34ClFinderSec::calcClusterSeg2FloatLevel(Int_t nBin,UChar_t amp) {
  // claster finder with floating level of searching
  initCluster(nBin,amp);
  stacksArr->init(12);
  while (kTRUE) {
    for(Int_t ib=0; ib<8; ib++) {
      Int_t nb = nBin+nearbyBins[ib];
      UChar_t ampN = prPlotSeg2->getBinAmplAndClear(nb);
      if( ampN<seg2MinAmpCut ) continue;
      stacksArr->push(nb,ampN);
      if(ampN > amp) {    // Increasing amplitude:
        if(ib<7) stacksArr->push(nBin,amp);
        amp = ampN;
        if(isClstrInited) reinitCluster(nb,amp);
        else              initCluster(nb,amp);
        break;
      }
      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 && !fillClusterSeg2()) return kFALSE;
    if(nBin<0) break; // No more bins in stack!
    amp = ampP;
  }
  return kTRUE;
}

Bool_t HMdc34ClFinderSec::increaseClusterNum(void) {
  isClstrInited = kFALSE;
  if(nClsArr > 0 && pClustersArrs->testMdc34Cluster(0,nClsArr)) { // --- Fake suppr. step1;
    if(fakeSuppFlag==1) return kTRUE;   // Cluster "cluster" is fake, don't increace counter
  }
  nClsArr++;
  if(nClsArr < clusArrSize) return kTRUE;
  nClsArr = clusArrSize;
  Warning("increaseClusterNum"," Num.of clusters in sector %i > max=%i\n",sector,clusArrSize);
  clearPrSeg2();
  return kFALSE;
}

void HMdc34ClFinderSec::addBinInCluster(Int_t nBin,UChar_t wt) {
  Int_t nx = prPlotSeg2->xbin(nBin);
  Int_t ny = prPlotSeg2->ybin(nBin);
  cluster->addBin(nx, ny, wt);
  // At the scaning of the cluster y step(in bins) can't be > 1
  if(ny<nLMinCl) {
    nLMinCl = ny;
    xMinClLines[ny] = xMaxClLines[ny] = nx;
  } else if(ny>nLMaxCl) {
    nLMaxCl = ny;
    xMinClLines[ny] = xMaxClLines[ny] = nx;
  }
  else if(nx < xMinClLines[ny]) xMinClLines[ny] = nx;
  else if(nx > xMaxClLines[ny]) xMaxClLines[ny] = nx;
}


Bool_t HMdc34ClFinderSec::fillClusterSeg2(void) {
  // Filling of cluster:
  cluster->calcXY();
  Int_t xMinCl = MinElement(nLMaxCl-nLMinCl+1,xMinClLines+nLMinCl);
  Int_t xMaxCl = MaxElement(nLMaxCl-nLMinCl+1,xMaxClLines+nLMinCl);

  for(module=2; module<4; module++) {
    if(!lMods[module]) continue;
    cFMod = &((*this)[module]);
    Int_t startLay = (module-2)*6;
    for(Int_t lay=0; lay<6; lay++) {
      Int_t layerSeg = startLay+lay;
      cFLay    = &((*cFMod)[lay]);
      HMdcLayListCells* cells = cFLay->cells;

      setArrays(lay);
      for(Int_t rInd=0;rInd<*numPrRegs;rInd++) {
        Int_t cell    = cellNum[rInd];
        Int_t shiftUp = shUpArr[rInd];
        Int_t shiftDn = shDnArr[rInd];
        Int_t cutUp   = nLMinCl - shiftUp;
        Int_t cutDn   = nLMaxCl - shiftDn;
        cFLay         = cFLayArr[rInd];
        if(cFLay->yBin[xMinCl] < cutUp && cFLay->yBin[xMaxCl] < cutUp) continue;
        if(cFLay->yBin[xMinCl] > cutDn && cFLay->yBin[xMaxCl] > cutDn) continue;
                                               // ???????????????     break;
        for(Int_t ny=nLMinCl; ny<=nLMaxCl; ny++) {
          Int_t tYmin = cFLay->yBin[xMinClLines[ny]]-ny;
          Int_t tYmax = cFLay->yBin[xMaxClLines[ny]]-ny;
          Int_t dY1b  = tYmin+shiftUp;
          Int_t dY2b  = tYmax+shiftUp;
    //if (dY1b==0 || dY2b==0) - optimizaciya, proverit' na time !!!!???
          if(dY1b<0 && dY2b<0) break;
          if(dY1b) dY1b = dY1b>0 ? 1 : -1;
          if(dY2b) dY2b = dY2b>0 ? 1 : -1;
          // if dY1b*dY2b<=0 the line cross cell projection
          if(dY1b*dY2b>0) {
            Int_t dY1a = tYmin+shiftDn;
            Int_t dY2a = tYmax+shiftDn;
            if(dY1a) dY1a = dY1a>0 ? 1 : -1;
            if(dY2a) dY2a = dY2a>0 ? 1 : -1;
            // if dY1a*dY2a<=0 the line cross the cell projection
            // dY1a*dY1b<0 The line is in the cell projection
            if(dY1a*dY2a>0 && dY1a*dY1b > 0) continue;
// ????? proverka binov???
          }
          Int_t nDeleted = cluster->getLCells2().setTime(layerSeg,cell,cells->getTime(cell));
	  if(nDeleted && !HMdc34ClFinder::getQuietMode()) Warning(
            "fillClusterSeg2","Too big cluster, %i cells was removed",nDeleted);
          break;
        }
      }
    }
  }
  return increaseClusterNum();
}

//---------------------------------------------------------

HMdc34ClFinder* HMdc34ClFinder::fMdc34ClFinder = 0;
Bool_t          HMdc34ClFinder::quietMode      = kTRUE;

HMdc34ClFinder::HMdc34ClFinder(const Char_t* name,const Char_t* title,const Char_t* context)
              : HParSet(name,title,context) {
  // constructor creates an array of pointers of type HMdc34ClFinderSec
  strcpy(detName,"Mdc");

  array         = new TObjArray(6);
  fGetCont      = HMdcGetContainers::getObject();
  if( !fGetCont ) return;
  fSpecGeomPar  = fGetCont->getSpecGeomPar();
  fSizesCells   = HMdcSizesCells::getObject();
  fMdcGeomPar   = fGetCont->getMdcGeomPar();
  fMdcClusCat   = fGetCont->getCatMdcClus(kTRUE);
  xMinClLines   = 0;
  xMaxClLines   = 0;
  stack         = 0;
  stacksArr     = 0 ;
  pMetaMatch    = NULL;
  useDxDyCut    = kFALSE;
  HMdcDriftTimePar::getObject();
  pKickCor      = NULL;
}

Bool_t HMdc34ClFinder::initContainer(HMdcEvntListCells& event) {
  if( !fSizesCells->initContainer() )              return kFALSE;
  if( !HMdcGetContainers::isInited(fSpecGeomPar) ) return kFALSE;
  if( !HMdcGetContainers::isInited(fMdcGeomPar) )  return kFALSE;
  if( !HMdcDriftTimePar::getObject()->initContainer() ) return kFALSE;
  if( !status && (fSizesCells->hasChanged() || fSpecGeomPar->hasChanged() || fMdcGeomPar->hasChanged())) {
    changed = kTRUE;
    if(!fMdcClusCat) return kFALSE;
    useKickCor = HMdcTrackDSet::getUseKickCorFlag(); //  kFALSE;
    if(useKickCor && pKickCor == NULL) pKickCor = new HMdcKickCor();
    Int_t nBinX,nBinY;
    HMdcTrackDSet::getProjectPlotSizeSeg2(nBinX,nBinY);
    if(!quietMode) printf("Project plot size of outer segment: %ix%i\n",nBinX,nBinY);
    for (Int_t sec = 0; sec < 6; sec++) if( fGetCont->isSegActive(sec,1) ) {
      if( (*array)[sec] == 0) {
        // HMdc34ClFinderSec object creating:
        HMdc34ClFinderSec* secF = new HMdc34ClFinderSec(sec,nBinX,nBinY); //????0,0???
        (*array)[sec] = secF;
        secF->setClusCut(fMdcClusCat);
        secF->setKickPlane(&kickPlane);
        secF->setCellsList(event[sec]);
        if(xMinClLines == 0) xMinClLines = new Short_t [nBinY];
        if(xMaxClLines == 0) xMaxClLines = new Short_t [nBinY];
        secF->setXMinClLines(xMinClLines);
        secF->setXMaxClLines(xMaxClLines);
        if(stacksArr==0) {
          stacksArr = new HMdcClFnStacksArr();
          stack     = stacksArr->getOneStack();
        }
        secF->setClFnStArr(stacksArr);
        secF->setClFnStack(stack);
        secF->doMetaMatch(pMetaMatch);
        secF->setKickCorr(pKickCor);
      }
      // initialization of container ---
      if(!calcTarget(sec))        return kFALSE;
      if(!calcProjPlaneSeg2(sec)) return kFALSE;
      if(!calcSizePlotSeg2(sec))  return kFALSE;
      if(!calcWiresProj(sec))     return kFALSE;

      HMdc34ClFinderSec& p34CFSec = (*this)[sec];

      useDxDyCut = HMdcTrackDSet::getDxDyKickCut(cutDxDyArr);
      if(useDxDyCut && !p34CFSec.setDxDyCut(cutDxDyArr)) return kFALSE;

#if DEBUG_LEVEL>2
      (*this)[sec].prPlotSeg2->print();
#endif
      // --------------------------------
    }
    if(versions[1]<0 || versions[2]<0) versions[1]=versions[2]=0;
    else versions[2]++;
  } else changed=kFALSE;
  return kTRUE;
}

HMdc34ClFinder::~HMdc34ClFinder() {
  // destructor
  if(array) {
    array->Delete();
    delete array;
  }
  fMdc34ClFinder = NULL;
  if(xMinClLines) delete [] xMinClLines;
  if(xMaxClLines) delete [] xMaxClLines;
  xMinClLines = NULL;
  xMaxClLines = NULL;
  if(stacksArr) delete stacksArr;
  stacksArr   = NULL;
  HMdcDriftTimePar::deleteCont();
  if(pKickCor != NULL) delete pKickCor;
}

HMdc34ClFinder* HMdc34ClFinder::getObject(void) {
  if(!fMdc34ClFinder) fMdc34ClFinder=new HMdc34ClFinder();
  return fMdc34ClFinder;
}

HMdc34ClFinder* HMdc34ClFinder::getExObject(void) {
  return fMdc34ClFinder;
}

void HMdc34ClFinder::deleteCont(void) {
  if(fMdc34ClFinder) delete fMdc34ClFinder;
}

void HMdc34ClFinder::clear(void) { // *!*
  // clears the container
  for(Int_t s=0;s<6;s++) if((*array)[s]) (*this)[s].clear();
}

Bool_t HMdc34ClFinder::calcTarget(Int_t sec){
  //Geting size of target
  if(!fSizesCells->hasChanged() && !fSpecGeomPar->hasChanged()) return kTRUE;
  Int_t nT = fSpecGeomPar->getNumTargets()-1;
  if( nT < 0 ) {
    Error("calcTarget","Number of targets = %i!",nT+1);
    return kFALSE;
  }
  HMdc34ClFinderSec& fsec=(*this)[sec];
  HGeomVector* target = fsec.getTargetArr();
  target[0] = (fSpecGeomPar->getTarget(0)->getTransform()).getTransVector();
  target[0].setZ(target[0].getZ() + fSpecGeomPar->getTarget(0)->getPoint(0)->getZ());
  target[1] = (fSpecGeomPar->getTarget(nT)->getTransform()).getTransVector();
  target[1].setZ(target[1].getZ() + fSpecGeomPar->getTarget(nT)->getPoint(2)->getZ());
  const HGeomTransform* trans=(*fSizesCells)[sec].getLabTrans();
  if(trans == NULL) return kFALSE;
  target[0] = trans->transTo(target[0]);
  target[1] = trans->transTo(target[1]);
  return kTRUE;
}


Bool_t HMdc34ClFinder::calcProjPlaneSeg2(Int_t sec){
  // Calculation of project plane:
  //
  //  a plane between MDC3 and MDC4 - -1.<par<1.
  //  plane 1,2,3,4,5 or 6 MDC3 - par=-6,-5,-4,-3,-2 or -1
  //  plane 1,2,3,4,5 or 6 MDC2 - par=+1,+2,+3,+4,+5 or +6
  //  midplane MDC1 - proj.plane=-7
  //  midplane MDC2 - proj.plane=+7
  //  Automatical selection: par>=10. (for two MDC
  //  in sector = 0.15, for one MDC - midplane of this MDC)
  //  Double_t par=-7.; //In a future will be geted from Par.Container
  if(!fSizesCells->hasChanged()) return kTRUE;
  HMdc34ClFinderSec& fsec=(*this)[sec];
  HMdcSizesCellsSec& fSCellsSec=(*fSizesCells)[sec];
  if( !&fSCellsSec ) return kFALSE;
  Double_t par = 10.; //In a future will be geted from Par.Container

  UChar_t* mSeg = fsec.getMSeg();
  Int_t    nL   = (Int_t)par;
  //                  (mdc3 don't exist)      (mdc4 don't exist)      (one mdc exist only)
  if(nL<-7 || nL>7 || (nL<0 && mSeg[1]==2) || (nL>0 && mSeg[1]==1) || (nL==0 && mSeg[1]!=3)) {
    nL  = 0;
    par = 0.1;
  }
  const Char_t *text="as projection plane";
  HGeomTransform prPl;
  if( (nL==0 && mSeg[1]<3) || nL==-7 || nL==7 ) {
    // the project plane - the middle plane of MDC3 or MDC4
    Int_t mod = nL==0 ? mSeg[1]+1 : (nL+7)/14+2;

    prPl=*(fSCellsSec[mod].getSecTrans());
    if(!quietMode) printf("\n===> Sec.%i Seg.2: Using middle plane of MDC%i %s\n",sec+1,mod+1,text);
  } else if( nL==0 ) {
    // the project plane - between MDC3 & MDC4
    const HGeomTransform* trLayer6 = fSCellsSec[2][5].getSecTrans();
    const HGeomTransform* trLayer1 = fSCellsSec[3][0].getSecTrans();
    // MDC3 & MDC4 are ~parallel:
    Double_t distToL6 = trLayer6->getTransVector().length();
    Double_t distToL1 = trLayer1->getTransVector().length();
    Double_t newDist  = distToL6+(distToL1-distToL6)*(1.+par)/2.;
    Double_t mult     = 1.;
    if(par<=0) {    // proj.plane will parallel to MDC3
      prPl.setTransform(*trLayer6);
      mult = newDist/distToL6;
    } else {        // proj.plane will parallel to MDC4
      prPl.setTransform(*trLayer1);
      mult = newDist/distToL1;
    }
    HGeomVector prTr(prPl.getTransVector());
    prTr *= mult;
    prPl.setTransVector(prTr);
    if(!quietMode) printf("\n===> Sec.%i Seg.2: Using plane between MDC 3 & 4 (p=%g) %s\n",
                          sec+1,par,text);
  } else {
    // the project plane - one of the layers
    Int_t mod = nL<0 ? 2:3;
    if(nL<0) nL += 7;
    prPl = *(fSCellsSec[mod][nL-1].getSecTrans());
    if(!quietMode) printf("\n===> Sec.%i Seg.2: Using MDC%i, layer %i %s\n",sec+1,mod+1,nL,text);
  }
  fsec.getPlotSeg2()->setPlanePar(prPl);
  return kTRUE;
}

Bool_t HMdc34ClFinder::calcSizePlotSeg2(Int_t sec){
  // Calculation of plot's size:
  if( !fMdcGeomPar->hasChanged() && !fSizesCells->hasChanged()) return kTRUE;
  HMdc34ClFinderSec& fsec=(*this)[sec];
  UChar_t* mSeg = fsec.getMSeg();
  if(mSeg[0] == 0) return kFALSE;
  HMdcSizesCellsSec& fSCellsSec=(*fSizesCells)[sec];
  if( !&fSCellsSec ) return kFALSE;
  HGeomVector* target = fsec.getTargetArr();
  HGeomVector vect[2][4];
  HGeomVector pKick[4];
  const HGeomTransform* trans=0;
  HGeomVector newP[4][2]; //[4]-num.lines, [2]-the firt&last points of the line
  HMdcPlane plane;
  for(Int_t mod=0; mod<2; mod++) {
    if(fsec.mdcFlag(mod) == 0) continue;
    HGeomCompositeVolume *fVolMdc=fGetCont->getGeomCompositeVolume(mod);
    if(!fVolMdc) return kFALSE;
    HGeomVolume* fVolLayer=fVolMdc->getComponent(5); // layer 5 only
    if(!fVolLayer) return kFALSE;
    trans=fSCellsSec[mod].getSecTrans();
    plane.setPlanePar(*trans);
    for(Int_t point=0; point<4; point++) {
      HGeomVector *fpoint = fVolLayer->getPoint(point);
      if(!fpoint) return kFALSE;
      Int_t indx = mSeg[0]==3 ? mod : 0; // for one  MDC2 in seg. only
      vect[indx][point] = *fpoint;
      vect[indx][point].setZ(0.);
      vect[indx][point] = trans->transFrom(vect[indx][point]);
      if(mod==1 && mSeg[0]==3) {
        Int_t nTag=(point==0 || point==3) ? 0:1;
        vect[0][point] -= target[nTag];
        plane.calcIntersection(target[nTag],vect[0][point],vect[0][point]);
      }
    }
  }
  if(mSeg[0]==3) {
    for(Int_t mod=0; mod<2; mod++) {
      for(Int_t point=0; point<4; point++)
                       vect[mod][point]=trans->transTo(vect[mod][point]);
    }
    newP[0][0] = vect[0][0](0)>vect[1][0](0) ? vect[0][0] : vect[1][0];
    newP[0][1] = vect[0][1](0)>vect[1][1](0) ? vect[0][1] : vect[1][1];
    newP[1][0] = vect[0][1](1)>vect[1][1](1) ? vect[0][1] : vect[1][1];
    newP[1][1] = vect[0][2](1)>vect[1][2](1) ? vect[0][2] : vect[1][2];
    newP[2][0] = vect[0][2](0)<vect[1][2](0) ? vect[0][2] : vect[1][2];
    newP[2][1] = vect[0][3](0)<vect[1][3](0) ? vect[0][3] : vect[1][3];
    newP[3][0] = vect[0][3](1)<vect[1][3](1) ? vect[0][3] : vect[1][3];
    newP[3][1] = vect[0][0](1)<vect[1][0](1) ? vect[0][0] : vect[1][0];
    calcCrossLines(newP[0][0],newP[0][1],newP[3][0],newP[3][1],vect[0][0]);
    calcCrossLines(newP[0][0],newP[0][1],newP[1][0],newP[1][1],vect[0][1]);
    calcCrossLines(newP[1][0],newP[1][1],newP[2][0],newP[2][1],vect[0][2]);
    calcCrossLines(newP[2][0],newP[2][1],newP[3][0],newP[3][1],vect[0][3]);
    for(Int_t point=0; point<4; point++)
                      vect[0][point] = trans->transFrom(vect[0][point]);
  }
  HGeomVector dir;
  for(Int_t point=0; point<4; point++) {
    if(point==0 || point==3) dir = vect[0][point]-target[0];
    else                     dir = vect[0][point]-target[1]; //???
    kickPlane.calcIntersection(vect[0][point],dir,pKick[point]);
  }
  // pKick[0-3] pointers on the kick-plane
  Double_t yMin =  1.e+10;
  Double_t yMax = -1.e+10;
  for(Int_t mod=2; mod<4; mod++) {
    if(fsec.mdcFlag(mod) == 0) continue;
    HGeomCompositeVolume *fVolMdc=fGetCont->getGeomCompositeVolume(mod);
    Int_t indx = mSeg[1]==3 ? mod-2 : 0; // for one  MDC2 in seg. only
    trans=fSCellsSec[mod].getSecTrans();
    for(Int_t point=0; point<4; point++) {
      vect[indx][point]  = *(fVolMdc->getPoint(point));
      vect[indx][point].setZ(0.);  //midplane of MDC
      vect[indx][point]  = trans->transFrom(vect[indx][point]);
      vect[indx][point] -= pKick[point];
      fsec.getPlotSeg2()->calcIntersection(pKick[point],vect[indx][point],vect[indx][point]);
      if(vect[indx][point](1)<yMin) yMin = vect[indx][point](1);
      if(vect[indx][point](1)>yMax) yMax = vect[indx][point](1);
    }
  }
  Double_t xMaxD=xLine(vect[0][0],vect[0][1],yMin);
  Double_t xMinD=xLine(vect[0][2],vect[0][3],yMin);
  Double_t xMax=xLine(vect[0][0],vect[0][1],yMax);
  Double_t xMin=xLine(vect[0][2],vect[0][3],yMax);
  if(mSeg[1]==3) {
    Double_t xnew=xLine(vect[1][0],vect[1][1],yMin);
    if(xnew>xMaxD) xMaxD=xnew;
    xnew=xLine(vect[1][2],vect[1][3],yMin);
    if(xnew<xMinD) xMinD=xnew;
    xnew=xLine(vect[1][0],vect[1][1],yMax);
    if(xnew>xMax) xMax=xnew;
    xnew=xLine(vect[1][2],vect[1][3],yMax);
    if(xnew<xMin) xMin=xnew;
  }
  fsec.getPlotSeg2()->setEdges(yMin, xMinD, xMaxD, yMax, xMin, xMax);
  return kTRUE;
}

void HMdc34ClFinder::calcCrossLines(HGeomVector& p1l1, HGeomVector& p2l1,
            HGeomVector& p1l2, HGeomVector& p2l2, HGeomVector& cross) {
  // Calculating a cross of 2 lines (p1l1-p2l1, p1l2-p2l2) on the one (!)
  // plane. Z seted to 0.
  Double_t a1 = (p1l1(1)-p2l1(1))/(p1l1(0)-p2l1(0));
  Double_t b1 = p1l1(1)-a1*p1l1(0);
  Double_t a2 = (p1l2(1)-p2l2(1))/(p1l2(0)-p2l2(0));
  Double_t b2 = p1l2(1)-a2*p1l2(0);
  Double_t x  = (b2-b1)/(a1-a2);
  Double_t y  = a2*x+b2;
  cross.setXYZ(x,y,0.);
}

Double_t HMdc34ClFinder::xLine(HGeomVector& p1,HGeomVector& p2,Double_t yi) {
  return (yi-p2(1))/(p1(1)-p2(1))*(p1(0)-p2(0))+p2(0);
}

Bool_t HMdc34ClFinder::calcWiresProj(Int_t sec) {
  if(!fMdcGeomPar->hasChanged() && !fSizesCells->hasChanged()) return kTRUE;
  HMdc34ClFinderSec& fsec=(*this)[sec];
  UChar_t* mSeg = fsec.getMSeg();
  if(mSeg[0]==0) return kFALSE;
  HMdcSizesCellsSec& fSCellsSec=(*fSizesCells)[sec];
  if( !&fSCellsSec ) return kFALSE;
  HMdcProjPlot* prPlotSeg2 = fsec.getPlotSeg2();
  Int_t mod = mSeg[0]>1 ? 1:0;
  const HGeomTransform* trans=fSCellsSec[mod].getSecTrans();
  if(!trans) return kFALSE;
  HGeomVector *target = fsec.getTargetArr();
  HGeomVector  tag    = target[0]+target[1];
  tag /= 2.;
  HGeomVector  dir    = trans->getTransVector()-tag;
  dir /= dir.length();
  HGeomVector pKick;
  kickPlane.calcIntersection(tag,dir,pKick);
  for(Int_t mod=2; mod<4; mod++) {
    if(fsec.mdcFlag(mod) == 0) continue;
    HMdcSizesCellsMod& fSCellsMod=fSCellsSec[mod];
    if(!&fSCellsMod) return kFALSE;
    HMdc34ClFinderMod& fMod=fsec[mod];
    for(Int_t lay=0; lay<6; lay++) {
      HMdcSizesCellsLayer& fSCellsLay=fSCellsMod[lay];
      HMdc34ClFinderLayer& fLayer=fMod[lay];
      fLayer.calcWiresProj(fSCellsLay,pKick,prPlotSeg2,0);
      if(fSCellsLay.getLayerNParts()>1) {               // Next layer part:
        fLayer.nextPartFCell = fSCellsLay.getFirstCellPart2();
        fLayer.layerNextPart = new HMdc34ClFinderLayer(fLayer);
        fLayer.layerNextPart->calcWiresProj(fSCellsLay,pKick,prPlotSeg2,fLayer.nextPartFCell);
      }
    }
  }
  return kTRUE;
}

Bool_t HMdc34ClFinderLayer::calcWiresProj(HMdcSizesCellsLayer& fSCellsLay,HGeomVector& pKick,
                                          HMdcProjPlot* prPlotSeg2,Int_t firstCell) {
  pSCLay = &fSCellsLay;
  HGeomVector rib[4];
  HGeomVector point[2];
  HGeomVector wire[2];
  const HGeomTransform* secsys = fSCellsLay.getSecTrans();
  Double_t catDist = fSCellsLay.getHalfCatDist();
  Double_t pitch   = fSCellsLay.getPitch();
  Double_t cosWiOr = fSCellsLay.getCosWireOr(firstCell);
  Double_t wOfSet  = fSCellsLay.getWireOffset(firstCell);
  Double_t aWire   = fSCellsLay.getTanWireOr(firstCell);   // y=a*x+ln[1]

  // calc. of the wire's projection
  Double_t bWire  = (100.*pitch-wOfSet)/cosWiOr;  // 100.-cell n.100
  wire[0].setXYZ( 500., aWire*500.+bWire,0.);
  wire[1].setXYZ(-500.,-aWire*500.+bWire,0.);
  for(Int_t np=0; np<2; np++) {
    wire[np]  = secsys->transFrom(wire[np]);
    wire[np] -= pKick;
    prPlotSeg2->calcIntersection(pKick,wire[np],point[np]);
  }
#if DEBUG_LEVEL>2
  printf("M%i L%i C%i Size of wire on the proj.plane (poin1&point2):\n",
    module+1,layer+1,100+1);
  point[0].print();
  point[1].print();
#endif
  Double_t al      = (point[0](1)-point[1](1))/(point[0](0)-point[1](0));
  Double_t x       = (prPlotSeg2->nBinX-1) * prPlotSeg2->stX + prPlotSeg2->xMin;
  Double_t yLeft   = al*(x - point[1](0))+point[1](1); // (x-x2)*a+y2
  Double_t yRight  = al*(prPlotSeg2->xMin - point[1](0))+point[1](1);
  Short_t  nYLeft  = prPlotSeg2->binY(yLeft);
  Short_t  nYRight = prPlotSeg2->binY(yRight);
  Short_t  yShift  = Min(nYLeft,nYRight);
  if(Abs(nYLeft-nYRight) >= prPlotSeg2->nBinY) {
    Error("calcWiresProj","M%i L%i The region of Y bins of proj. wire >= nBinY(%i).",
    module+1,layer+1,prPlotSeg2->nBinY);
    return kFALSE;
  }
  if( !createArrayBins(prPlotSeg2->nBinX) ) return kFALSE;
  for(Int_t nx=0; nx<nBinX; nx++) {
    Double_t x  = nx * prPlotSeg2->stX + prPlotSeg2->xMin;
    Double_t y  = al*(x-point[1](0))+point[1](1);
    Short_t  nY = prPlotSeg2->binY(y);
    yBin[nx] = nY-yShift;
  }

  Int_t nLines     = yBin[nBinX - 1]-yBin[0];
  nYLines   = Abs(nLines)+1;
  wOrType   = nLines>=0 ? 1 : -1;
  yFirst    = nLines>=0 ? yBin[0]:yBin[nBinX-1];
  maxDrDist = Sqrt(pitch*pitch/4.+catDist*catDist);
  if(xBin1) {
    delete [] xBin1;
    delete [] xBin2;
  }
  xBin1 = new Short_t [nYLines];
  xBin2 = new Short_t [nYLines];
  for(Int_t yb=0;yb<nYLines;yb++) {
    Int_t yl=yb+yFirst;
    xBin1[yb] = -1;
    xBin2[yb] = -1;
    for(Int_t xb=0;xb<nBinX;xb++) {
      Int_t dy=(wOrType>=0) ? yBin[xb]-yl:yl-yBin[xb];
      if(dy<0) continue;
      if(dy>0 && xBin2[yb]>=0) break;
      if(xBin1[yb]<0) xBin1[yb]=xb;
      xBin2[yb] = dy==0 ? xb : xb-1;
    }
  }

  // calc. of the position of the  cells' ribs:
  // Z(x)=A1*x+Y0[nCell]; Z(x)=A2*x+Z0[nCell]; Y0&Z0 - at x=0;
  // Y0[nCell]=Ystep*nCell + Yshift; Z0[nCell]=Zstep*nCell + Zshift(=0!);
  //--- cells 0 & 100 ---
  for(Int_t cell=0; cell<101; cell+=100) {
    Double_t bCell= (cell*pitch-wOfSet-pitch/2.)/cosWiOr;
    // rib[0]-rib[1] - the down and left rib of cell
    // rib[2]-rib[3] - the down and right rib of cell
    for(Int_t n=0; n<4; n++) {
      Double_t x = ((n&1) == 0) ? 500.: -500.;
      Double_t z = (n < 2) ? -catDist : catDist;
      rib[n].setXYZ(x, aWire*x+bCell, z);
      rib[n]=secsys->transFrom(rib[n]);
    }
    Double_t dX = rib[0](0)-rib[1](0);
    rib[1].setXYZ(0.,(rib[0](0)*rib[1](1)-rib[1](0)*rib[0](1))/dX,
                     (rib[0](0)*rib[1](2)-rib[1](0)*rib[0](2))/dX);
    dX = rib[2](0)-rib[3](0);
    rib[3].setXYZ(0.,(rib[2](0)*rib[3](1)-rib[3](0)*rib[2](1))/dX,
                     (rib[2](0)*rib[3](2)-rib[3](0)*rib[2](2))/dX);
    if(cell==0) {
      y0[0] = rib[1](1);
      z0[0] = rib[1](2);
      y0[1] = rib[3](1);
      z0[1] = rib[3](2);
      tgY   = (rib[0](1)-rib[1](1))/(rib[0](0)-rib[1](0));
      tgZ   = (rib[0](2)-rib[1](2))/(rib[0](0)-rib[1](0));
    } else {
      yStep = (rib[1](1)-y0[0])/100.;
      zStep = (rib[1](2)-z0[0])/100.;
      //Calc. the point(index) number in HMdc34ClFinderSec::segRegOnKick[4]:
      if(rib[1](2)+prPlotSeg2->B()*rib[1](1)-prPlotSeg2->D()<0) {
        nPSegOnKick[0][0]=(tgY>0) ? 2 : 3;
        nPSegOnKick[1][0]=(tgY>0) ? 1 : 0;
      } else {
        nPSegOnKick[0][0]=(tgY>0) ? 1 : 0;
        nPSegOnKick[1][0]=(tgY>0) ? 2 : 3;
      }
      if(rib[3](2)+prPlotSeg2->B()*rib[3](1)-prPlotSeg2->D()<0) {
        nPSegOnKick[0][1]=(tgY>0) ? 2 : 3;
        nPSegOnKick[1][1]=(tgY>0) ? 1 : 0;
      } else {
        nPSegOnKick[0][1]=(tgY>0) ? 1 : 0;
        nPSegOnKick[1][1]=(tgY>0) ? 2 : 3;
      }
    }
  }
  // For drift time using:
  xWirDir = wire[0].getX() - wire[1].getX();
  yWirDir = wire[0].getY() - wire[1].getY();
  zWirDir = wire[0].getZ() - wire[1].getZ();
  y0w     = (y0[0]+y0[1]+yStep)/2.;
  z0w     = (z0[0]+z0[1]+zStep)/2.;
  
  return kTRUE;
}

void HMdc34ClFinder::setCellsList(HMdcEvntListCells& event) {
  for(Int_t s=0;s<6;s++) if((*array)[s]) (*this)[s].setCellsList(event[s]);
}

void HMdc34ClFinderSec::setCellsList(HMdcSecListCells& event) {
  pListCells   = &event;
  notEnoughWrs = kTRUE;
  for(Int_t m=2;m<4;m++) {
    if((*array)[m]) (*this)[m].setCellsList(event[m]);
    maxAmp[m] = -1;
  }
}

void HMdc34ClFinderMod::setCellsList(HMdcModListCells& event) {
  for(Int_t l=0;l<6;l++) if((*array)[l]) (*this)[l].setCellsList(event[l]);
}

Bool_t HMdc34ClFinderSec::setDxDyCut(TCutG* cutR) {
  useDxDyCut = 0;
  for(Int_t nr=0;nr<36;nr++) {
    if( !calcXBinsCut(nr,cutR[nr]) ) return kFALSE;
    Double_t x,y;
    for(Int_t i=0;i<cutR[nr].GetN();i++){
	cutR[nr].GetPoint(i, x, y);
	cutDxDyArr[nr].SetPoint(i,x,y);
    }
  }
  useDxDyCut = 1;
//useDxDyCut = 2; //???????????????????
  return kTRUE;
}

Int_t HMdc34ClFinderSec::calcCrosses(TCutG &cutDxDy,Double_t yb,DxDyBinsCut& cutB)  {
  Int_t nPnt = cutDxDy.GetN();
  Int_t nCr  = 0;
  for(Int_t i1=0;i1<nPnt;i1++) {
    Int_t i2 = i1+1<nPnt ? i1+1 : 0;
    Double_t x1,y1,x2,y2;
    cutDxDy.GetPoint(i1,x1,y1);
    cutDxDy.GetPoint(i2,x2,y2);
    if(yb<=y1 && yb<=y2) continue;
    if(yb> y1 && yb> y2) continue;
    if(y1==y2)           continue;
    Double_t xc = (yb-y2)*(x1-x2)/(y1-y2)+x2; // Cross point
    if(xc>=0.) xc += prPlotSeg2->stX/2.;
    else       xc -= prPlotSeg2->stX/2.;
    Short_t xBin = Short_t(xc/prPlotSeg2->stX);
    if(nCr == 0) {
      cutB.xBMin = xBin;
      cutB.xBMax = xBin;
    } else {
      if     (cutB.xBMin > xBin) cutB.xBMin = xBin;
      else if(cutB.xBMax < xBin) cutB.xBMax = xBin;
    }
    nCr++;
  }
  return nCr;
}


Bool_t HMdc34ClFinderSec::calcXBinsCut(Int_t nReg, TCutG& cutDxDy) {
  Short_t& nLnCut = nYLinesInCut[nReg];
  Short_t& yLMin  = yLineMin[nReg];
  Short_t& yLMax  = yLineMax[nReg];
  Double_t stepY  = prPlotSeg2->stY;
  
  Double_t xMin,yMin,xMax,yMax;
  cutDxDy.ComputeRange(xMin,yMin,xMax,yMax);
  Short_t yBinMin   = Short_t((yMin-stepY)/stepY);
  Short_t yBinMax   = Short_t((yMax+stepY)/stepY);
  if(cutXBins[nReg] != NULL) delete [] cutXBins[nReg];
  cutXBins[nReg]  = new DxDyBinsCut [yBinMax-yBinMin+1];
  DxDyBinsCut* cutBins = cutXBins[nReg];
  nLnCut = 0;
  yLMin  = yBinMax;
  yLMax  = yBinMin;
  for(Short_t yBin=yBinMin;yBin<=yBinMax;yBin++) {
    Int_t nCross = calcCrosses(cutDxDy,yBin*stepY,cutBins[nLnCut]);
    if(nCross==0) continue;
    if(nLnCut==0) yLMin = yBin;
    if(yBin-yLMin!=nLnCut || nCross>2) {  // Test for valid TCutG papameters
      Error("calcXBinsCut","Not valid TCutG dXdY cut parameters (more 1 region along X or Y)!");
      delete [] cutBins;
      return kFALSE;
    }
    yLMax = yBin;
    nLnCut++;
  }
  return kTRUE;
}

void HMdc34ClFinder::printClFinderParam(void) {
  HMdcTrackDSet::printMdc34ClFinderPar();
//   Bool_t useDriftTime = HMdcTrackDSet::useDriftTimeSeg2();
//   printf("  Drift time is %sused at the filling of project plot.\n",useDriftTime ? "":"NOT ");
//   printf("  Cut for the kick angle is %sused.\n",useDxDyCut ? "":"NOT ");
//   printf("  Meta matching is %s.\n",pMetaMatch==NULL ? "OFF":"ON");
// //  printf("  %s amplitude cut is used.\n",useSegAmpCut ? "Segment" : "Module");
//   Bool_t useFloatLevel = HMdcTrackDSet::useFloatLevelSeg2();
//   printf("  %s level of cluster finder is used.\n",useFloatLevel ? "Float":"Fixed");
//   Char_t fakeSuppFlag = HMdcTrackDSet::getGhostRemovingFlagSeg2();
//   if      (fakeSuppFlag<0)  printf("  Cluster mergering ON. Fake suppression OFF.\n");
//   else  if(fakeSuppFlag==0) printf("  Fake suppression OFF. Cluster mergering OFF.\n");
//   else  if(fakeSuppFlag==1) printf("  Fake suppression ON. Cluster mergering OFF.\n");
//   else                      printf("  Fake suppression ON but ghosts will not removed.\n");
}
 hmdc34clfinder.cc:1
 hmdc34clfinder.cc:2
 hmdc34clfinder.cc:3
 hmdc34clfinder.cc:4
 hmdc34clfinder.cc:5
 hmdc34clfinder.cc:6
 hmdc34clfinder.cc:7
 hmdc34clfinder.cc:8
 hmdc34clfinder.cc:9
 hmdc34clfinder.cc:10
 hmdc34clfinder.cc:11
 hmdc34clfinder.cc:12
 hmdc34clfinder.cc:13
 hmdc34clfinder.cc:14
 hmdc34clfinder.cc:15
 hmdc34clfinder.cc:16
 hmdc34clfinder.cc:17
 hmdc34clfinder.cc:18
 hmdc34clfinder.cc:19
 hmdc34clfinder.cc:20
 hmdc34clfinder.cc:21
 hmdc34clfinder.cc:22
 hmdc34clfinder.cc:23
 hmdc34clfinder.cc:24
 hmdc34clfinder.cc:25
 hmdc34clfinder.cc:26
 hmdc34clfinder.cc:27
 hmdc34clfinder.cc:28
 hmdc34clfinder.cc:29
 hmdc34clfinder.cc:30
 hmdc34clfinder.cc:31
 hmdc34clfinder.cc:32
 hmdc34clfinder.cc:33
 hmdc34clfinder.cc:34
 hmdc34clfinder.cc:35
 hmdc34clfinder.cc:36
 hmdc34clfinder.cc:37
 hmdc34clfinder.cc:38
 hmdc34clfinder.cc:39
 hmdc34clfinder.cc:40
 hmdc34clfinder.cc:41
 hmdc34clfinder.cc:42
 hmdc34clfinder.cc:43
 hmdc34clfinder.cc:44
 hmdc34clfinder.cc:45
 hmdc34clfinder.cc:46
 hmdc34clfinder.cc:47
 hmdc34clfinder.cc:48
 hmdc34clfinder.cc:49
 hmdc34clfinder.cc:50
 hmdc34clfinder.cc:51
 hmdc34clfinder.cc:52
 hmdc34clfinder.cc:53
 hmdc34clfinder.cc:54
 hmdc34clfinder.cc:55
 hmdc34clfinder.cc:56
 hmdc34clfinder.cc:57
 hmdc34clfinder.cc:58
 hmdc34clfinder.cc:59
 hmdc34clfinder.cc:60
 hmdc34clfinder.cc:61
 hmdc34clfinder.cc:62
 hmdc34clfinder.cc:63
 hmdc34clfinder.cc:64
 hmdc34clfinder.cc:65
 hmdc34clfinder.cc:66
 hmdc34clfinder.cc:67
 hmdc34clfinder.cc:68
 hmdc34clfinder.cc:69
 hmdc34clfinder.cc:70
 hmdc34clfinder.cc:71
 hmdc34clfinder.cc:72
 hmdc34clfinder.cc:73
 hmdc34clfinder.cc:74
 hmdc34clfinder.cc:75
 hmdc34clfinder.cc:76
 hmdc34clfinder.cc:77
 hmdc34clfinder.cc:78
 hmdc34clfinder.cc:79
 hmdc34clfinder.cc:80
 hmdc34clfinder.cc:81
 hmdc34clfinder.cc:82
 hmdc34clfinder.cc:83
 hmdc34clfinder.cc:84
 hmdc34clfinder.cc:85
 hmdc34clfinder.cc:86
 hmdc34clfinder.cc:87
 hmdc34clfinder.cc:88
 hmdc34clfinder.cc:89
 hmdc34clfinder.cc:90
 hmdc34clfinder.cc:91
 hmdc34clfinder.cc:92
 hmdc34clfinder.cc:93
 hmdc34clfinder.cc:94
 hmdc34clfinder.cc:95
 hmdc34clfinder.cc:96
 hmdc34clfinder.cc:97
 hmdc34clfinder.cc:98
 hmdc34clfinder.cc:99
 hmdc34clfinder.cc:100
 hmdc34clfinder.cc:101
 hmdc34clfinder.cc:102
 hmdc34clfinder.cc:103
 hmdc34clfinder.cc:104
 hmdc34clfinder.cc:105
 hmdc34clfinder.cc:106
 hmdc34clfinder.cc:107
 hmdc34clfinder.cc:108
 hmdc34clfinder.cc:109
 hmdc34clfinder.cc:110
 hmdc34clfinder.cc:111
 hmdc34clfinder.cc:112
 hmdc34clfinder.cc:113
 hmdc34clfinder.cc:114
 hmdc34clfinder.cc:115
 hmdc34clfinder.cc:116
 hmdc34clfinder.cc:117
 hmdc34clfinder.cc:118
 hmdc34clfinder.cc:119
 hmdc34clfinder.cc:120
 hmdc34clfinder.cc:121
 hmdc34clfinder.cc:122
 hmdc34clfinder.cc:123
 hmdc34clfinder.cc:124
 hmdc34clfinder.cc:125
 hmdc34clfinder.cc:126
 hmdc34clfinder.cc:127
 hmdc34clfinder.cc:128
 hmdc34clfinder.cc:129
 hmdc34clfinder.cc:130
 hmdc34clfinder.cc:131
 hmdc34clfinder.cc:132
 hmdc34clfinder.cc:133
 hmdc34clfinder.cc:134
 hmdc34clfinder.cc:135
 hmdc34clfinder.cc:136
 hmdc34clfinder.cc:137
 hmdc34clfinder.cc:138
 hmdc34clfinder.cc:139
 hmdc34clfinder.cc:140
 hmdc34clfinder.cc:141
 hmdc34clfinder.cc:142
 hmdc34clfinder.cc:143
 hmdc34clfinder.cc:144
 hmdc34clfinder.cc:145
 hmdc34clfinder.cc:146
 hmdc34clfinder.cc:147
 hmdc34clfinder.cc:148
 hmdc34clfinder.cc:149
 hmdc34clfinder.cc:150
 hmdc34clfinder.cc:151
 hmdc34clfinder.cc:152
 hmdc34clfinder.cc:153
 hmdc34clfinder.cc:154
 hmdc34clfinder.cc:155
 hmdc34clfinder.cc:156
 hmdc34clfinder.cc:157
 hmdc34clfinder.cc:158
 hmdc34clfinder.cc:159
 hmdc34clfinder.cc:160
 hmdc34clfinder.cc:161
 hmdc34clfinder.cc:162
 hmdc34clfinder.cc:163
 hmdc34clfinder.cc:164
 hmdc34clfinder.cc:165
 hmdc34clfinder.cc:166
 hmdc34clfinder.cc:167
 hmdc34clfinder.cc:168
 hmdc34clfinder.cc:169
 hmdc34clfinder.cc:170
 hmdc34clfinder.cc:171
 hmdc34clfinder.cc:172
 hmdc34clfinder.cc:173
 hmdc34clfinder.cc:174
 hmdc34clfinder.cc:175
 hmdc34clfinder.cc:176
 hmdc34clfinder.cc:177
 hmdc34clfinder.cc:178
 hmdc34clfinder.cc:179
 hmdc34clfinder.cc:180
 hmdc34clfinder.cc:181
 hmdc34clfinder.cc:182
 hmdc34clfinder.cc:183
 hmdc34clfinder.cc:184
 hmdc34clfinder.cc:185
 hmdc34clfinder.cc:186
 hmdc34clfinder.cc:187
 hmdc34clfinder.cc:188
 hmdc34clfinder.cc:189
 hmdc34clfinder.cc:190
 hmdc34clfinder.cc:191
 hmdc34clfinder.cc:192
 hmdc34clfinder.cc:193
 hmdc34clfinder.cc:194
 hmdc34clfinder.cc:195
 hmdc34clfinder.cc:196
 hmdc34clfinder.cc:197
 hmdc34clfinder.cc:198
 hmdc34clfinder.cc:199
 hmdc34clfinder.cc:200
 hmdc34clfinder.cc:201
 hmdc34clfinder.cc:202
 hmdc34clfinder.cc:203
 hmdc34clfinder.cc:204
 hmdc34clfinder.cc:205
 hmdc34clfinder.cc:206
 hmdc34clfinder.cc:207
 hmdc34clfinder.cc:208
 hmdc34clfinder.cc:209
 hmdc34clfinder.cc:210
 hmdc34clfinder.cc:211
 hmdc34clfinder.cc:212
 hmdc34clfinder.cc:213
 hmdc34clfinder.cc:214
 hmdc34clfinder.cc:215
 hmdc34clfinder.cc:216
 hmdc34clfinder.cc:217
 hmdc34clfinder.cc:218
 hmdc34clfinder.cc:219
 hmdc34clfinder.cc:220
 hmdc34clfinder.cc:221
 hmdc34clfinder.cc:222
 hmdc34clfinder.cc:223
 hmdc34clfinder.cc:224
 hmdc34clfinder.cc:225
 hmdc34clfinder.cc:226
 hmdc34clfinder.cc:227
 hmdc34clfinder.cc:228
 hmdc34clfinder.cc:229
 hmdc34clfinder.cc:230
 hmdc34clfinder.cc:231
 hmdc34clfinder.cc:232
 hmdc34clfinder.cc:233
 hmdc34clfinder.cc:234
 hmdc34clfinder.cc:235
 hmdc34clfinder.cc:236
 hmdc34clfinder.cc:237
 hmdc34clfinder.cc:238
 hmdc34clfinder.cc:239
 hmdc34clfinder.cc:240
 hmdc34clfinder.cc:241
 hmdc34clfinder.cc:242
 hmdc34clfinder.cc:243
 hmdc34clfinder.cc:244
 hmdc34clfinder.cc:245
 hmdc34clfinder.cc:246
 hmdc34clfinder.cc:247
 hmdc34clfinder.cc:248
 hmdc34clfinder.cc:249
 hmdc34clfinder.cc:250
 hmdc34clfinder.cc:251
 hmdc34clfinder.cc:252
 hmdc34clfinder.cc:253
 hmdc34clfinder.cc:254
 hmdc34clfinder.cc:255
 hmdc34clfinder.cc:256
 hmdc34clfinder.cc:257
 hmdc34clfinder.cc:258
 hmdc34clfinder.cc:259
 hmdc34clfinder.cc:260
 hmdc34clfinder.cc:261
 hmdc34clfinder.cc:262
 hmdc34clfinder.cc:263
 hmdc34clfinder.cc:264
 hmdc34clfinder.cc:265
 hmdc34clfinder.cc:266
 hmdc34clfinder.cc:267
 hmdc34clfinder.cc:268
 hmdc34clfinder.cc:269
 hmdc34clfinder.cc:270
 hmdc34clfinder.cc:271
 hmdc34clfinder.cc:272
 hmdc34clfinder.cc:273
 hmdc34clfinder.cc:274
 hmdc34clfinder.cc:275
 hmdc34clfinder.cc:276
 hmdc34clfinder.cc:277
 hmdc34clfinder.cc:278
 hmdc34clfinder.cc:279
 hmdc34clfinder.cc:280
 hmdc34clfinder.cc:281
 hmdc34clfinder.cc:282
 hmdc34clfinder.cc:283
 hmdc34clfinder.cc:284
 hmdc34clfinder.cc:285
 hmdc34clfinder.cc:286
 hmdc34clfinder.cc:287
 hmdc34clfinder.cc:288
 hmdc34clfinder.cc:289
 hmdc34clfinder.cc:290
 hmdc34clfinder.cc:291
 hmdc34clfinder.cc:292
 hmdc34clfinder.cc:293
 hmdc34clfinder.cc:294
 hmdc34clfinder.cc:295
 hmdc34clfinder.cc:296
 hmdc34clfinder.cc:297
 hmdc34clfinder.cc:298
 hmdc34clfinder.cc:299
 hmdc34clfinder.cc:300
 hmdc34clfinder.cc:301
 hmdc34clfinder.cc:302
 hmdc34clfinder.cc:303
 hmdc34clfinder.cc:304
 hmdc34clfinder.cc:305
 hmdc34clfinder.cc:306
 hmdc34clfinder.cc:307
 hmdc34clfinder.cc:308
 hmdc34clfinder.cc:309
 hmdc34clfinder.cc:310
 hmdc34clfinder.cc:311
 hmdc34clfinder.cc:312
 hmdc34clfinder.cc:313
 hmdc34clfinder.cc:314
 hmdc34clfinder.cc:315
 hmdc34clfinder.cc:316
 hmdc34clfinder.cc:317
 hmdc34clfinder.cc:318
 hmdc34clfinder.cc:319
 hmdc34clfinder.cc:320
 hmdc34clfinder.cc:321
 hmdc34clfinder.cc:322
 hmdc34clfinder.cc:323
 hmdc34clfinder.cc:324
 hmdc34clfinder.cc:325
 hmdc34clfinder.cc:326
 hmdc34clfinder.cc:327
 hmdc34clfinder.cc:328
 hmdc34clfinder.cc:329
 hmdc34clfinder.cc:330
 hmdc34clfinder.cc:331
 hmdc34clfinder.cc:332
 hmdc34clfinder.cc:333
 hmdc34clfinder.cc:334
 hmdc34clfinder.cc:335
 hmdc34clfinder.cc:336
 hmdc34clfinder.cc:337
 hmdc34clfinder.cc:338
 hmdc34clfinder.cc:339
 hmdc34clfinder.cc:340
 hmdc34clfinder.cc:341
 hmdc34clfinder.cc:342
 hmdc34clfinder.cc:343
 hmdc34clfinder.cc:344
 hmdc34clfinder.cc:345
 hmdc34clfinder.cc:346
 hmdc34clfinder.cc:347
 hmdc34clfinder.cc:348
 hmdc34clfinder.cc:349
 hmdc34clfinder.cc:350
 hmdc34clfinder.cc:351
 hmdc34clfinder.cc:352
 hmdc34clfinder.cc:353
 hmdc34clfinder.cc:354
 hmdc34clfinder.cc:355
 hmdc34clfinder.cc:356
 hmdc34clfinder.cc:357
 hmdc34clfinder.cc:358
 hmdc34clfinder.cc:359
 hmdc34clfinder.cc:360
 hmdc34clfinder.cc:361
 hmdc34clfinder.cc:362
 hmdc34clfinder.cc:363
 hmdc34clfinder.cc:364
 hmdc34clfinder.cc:365
 hmdc34clfinder.cc:366
 hmdc34clfinder.cc:367
 hmdc34clfinder.cc:368
 hmdc34clfinder.cc:369
 hmdc34clfinder.cc:370
 hmdc34clfinder.cc:371
 hmdc34clfinder.cc:372
 hmdc34clfinder.cc:373
 hmdc34clfinder.cc:374
 hmdc34clfinder.cc:375
 hmdc34clfinder.cc:376
 hmdc34clfinder.cc:377
 hmdc34clfinder.cc:378
 hmdc34clfinder.cc:379
 hmdc34clfinder.cc:380
 hmdc34clfinder.cc:381
 hmdc34clfinder.cc:382
 hmdc34clfinder.cc:383
 hmdc34clfinder.cc:384
 hmdc34clfinder.cc:385
 hmdc34clfinder.cc:386
 hmdc34clfinder.cc:387
 hmdc34clfinder.cc:388
 hmdc34clfinder.cc:389
 hmdc34clfinder.cc:390
 hmdc34clfinder.cc:391
 hmdc34clfinder.cc:392
 hmdc34clfinder.cc:393
 hmdc34clfinder.cc:394
 hmdc34clfinder.cc:395
 hmdc34clfinder.cc:396
 hmdc34clfinder.cc:397
 hmdc34clfinder.cc:398
 hmdc34clfinder.cc:399
 hmdc34clfinder.cc:400
 hmdc34clfinder.cc:401
 hmdc34clfinder.cc:402
 hmdc34clfinder.cc:403
 hmdc34clfinder.cc:404
 hmdc34clfinder.cc:405
 hmdc34clfinder.cc:406
 hmdc34clfinder.cc:407
 hmdc34clfinder.cc:408
 hmdc34clfinder.cc:409
 hmdc34clfinder.cc:410
 hmdc34clfinder.cc:411
 hmdc34clfinder.cc:412
 hmdc34clfinder.cc:413
 hmdc34clfinder.cc:414
 hmdc34clfinder.cc:415
 hmdc34clfinder.cc:416
 hmdc34clfinder.cc:417
 hmdc34clfinder.cc:418
 hmdc34clfinder.cc:419
 hmdc34clfinder.cc:420
 hmdc34clfinder.cc:421
 hmdc34clfinder.cc:422
 hmdc34clfinder.cc:423
 hmdc34clfinder.cc:424
 hmdc34clfinder.cc:425
 hmdc34clfinder.cc:426
 hmdc34clfinder.cc:427
 hmdc34clfinder.cc:428
 hmdc34clfinder.cc:429
 hmdc34clfinder.cc:430
 hmdc34clfinder.cc:431
 hmdc34clfinder.cc:432
 hmdc34clfinder.cc:433
 hmdc34clfinder.cc:434
 hmdc34clfinder.cc:435
 hmdc34clfinder.cc:436
 hmdc34clfinder.cc:437
 hmdc34clfinder.cc:438
 hmdc34clfinder.cc:439
 hmdc34clfinder.cc:440
 hmdc34clfinder.cc:441
 hmdc34clfinder.cc:442
 hmdc34clfinder.cc:443
 hmdc34clfinder.cc:444
 hmdc34clfinder.cc:445
 hmdc34clfinder.cc:446
 hmdc34clfinder.cc:447
 hmdc34clfinder.cc:448
 hmdc34clfinder.cc:449
 hmdc34clfinder.cc:450
 hmdc34clfinder.cc:451
 hmdc34clfinder.cc:452
 hmdc34clfinder.cc:453
 hmdc34clfinder.cc:454
 hmdc34clfinder.cc:455
 hmdc34clfinder.cc:456
 hmdc34clfinder.cc:457
 hmdc34clfinder.cc:458
 hmdc34clfinder.cc:459
 hmdc34clfinder.cc:460
 hmdc34clfinder.cc:461
 hmdc34clfinder.cc:462
 hmdc34clfinder.cc:463
 hmdc34clfinder.cc:464
 hmdc34clfinder.cc:465
 hmdc34clfinder.cc:466
 hmdc34clfinder.cc:467
 hmdc34clfinder.cc:468
 hmdc34clfinder.cc:469
 hmdc34clfinder.cc:470
 hmdc34clfinder.cc:471
 hmdc34clfinder.cc:472
 hmdc34clfinder.cc:473
 hmdc34clfinder.cc:474
 hmdc34clfinder.cc:475
 hmdc34clfinder.cc:476
 hmdc34clfinder.cc:477
 hmdc34clfinder.cc:478
 hmdc34clfinder.cc:479
 hmdc34clfinder.cc:480
 hmdc34clfinder.cc:481
 hmdc34clfinder.cc:482
 hmdc34clfinder.cc:483
 hmdc34clfinder.cc:484
 hmdc34clfinder.cc:485
 hmdc34clfinder.cc:486
 hmdc34clfinder.cc:487
 hmdc34clfinder.cc:488
 hmdc34clfinder.cc:489
 hmdc34clfinder.cc:490
 hmdc34clfinder.cc:491
 hmdc34clfinder.cc:492
 hmdc34clfinder.cc:493
 hmdc34clfinder.cc:494
 hmdc34clfinder.cc:495
 hmdc34clfinder.cc:496
 hmdc34clfinder.cc:497
 hmdc34clfinder.cc:498
 hmdc34clfinder.cc:499
 hmdc34clfinder.cc:500
 hmdc34clfinder.cc:501
 hmdc34clfinder.cc:502
 hmdc34clfinder.cc:503
 hmdc34clfinder.cc:504
 hmdc34clfinder.cc:505
 hmdc34clfinder.cc:506
 hmdc34clfinder.cc:507
 hmdc34clfinder.cc:508
 hmdc34clfinder.cc:509
 hmdc34clfinder.cc:510
 hmdc34clfinder.cc:511
 hmdc34clfinder.cc:512
 hmdc34clfinder.cc:513
 hmdc34clfinder.cc:514
 hmdc34clfinder.cc:515
 hmdc34clfinder.cc:516
 hmdc34clfinder.cc:517
 hmdc34clfinder.cc:518
 hmdc34clfinder.cc:519
 hmdc34clfinder.cc:520
 hmdc34clfinder.cc:521
 hmdc34clfinder.cc:522
 hmdc34clfinder.cc:523
 hmdc34clfinder.cc:524
 hmdc34clfinder.cc:525
 hmdc34clfinder.cc:526
 hmdc34clfinder.cc:527
 hmdc34clfinder.cc:528
 hmdc34clfinder.cc:529
 hmdc34clfinder.cc:530
 hmdc34clfinder.cc:531
 hmdc34clfinder.cc:532
 hmdc34clfinder.cc:533
 hmdc34clfinder.cc:534
 hmdc34clfinder.cc:535
 hmdc34clfinder.cc:536
 hmdc34clfinder.cc:537
 hmdc34clfinder.cc:538
 hmdc34clfinder.cc:539
 hmdc34clfinder.cc:540
 hmdc34clfinder.cc:541
 hmdc34clfinder.cc:542
 hmdc34clfinder.cc:543
 hmdc34clfinder.cc:544
 hmdc34clfinder.cc:545
 hmdc34clfinder.cc:546
 hmdc34clfinder.cc:547
 hmdc34clfinder.cc:548
 hmdc34clfinder.cc:549
 hmdc34clfinder.cc:550
 hmdc34clfinder.cc:551
 hmdc34clfinder.cc:552
 hmdc34clfinder.cc:553
 hmdc34clfinder.cc:554
 hmdc34clfinder.cc:555
 hmdc34clfinder.cc:556
 hmdc34clfinder.cc:557
 hmdc34clfinder.cc:558
 hmdc34clfinder.cc:559
 hmdc34clfinder.cc:560
 hmdc34clfinder.cc:561
 hmdc34clfinder.cc:562
 hmdc34clfinder.cc:563
 hmdc34clfinder.cc:564
 hmdc34clfinder.cc:565
 hmdc34clfinder.cc:566
 hmdc34clfinder.cc:567
 hmdc34clfinder.cc:568
 hmdc34clfinder.cc:569
 hmdc34clfinder.cc:570
 hmdc34clfinder.cc:571
 hmdc34clfinder.cc:572
 hmdc34clfinder.cc:573
 hmdc34clfinder.cc:574
 hmdc34clfinder.cc:575
 hmdc34clfinder.cc:576
 hmdc34clfinder.cc:577
 hmdc34clfinder.cc:578
 hmdc34clfinder.cc:579
 hmdc34clfinder.cc:580
 hmdc34clfinder.cc:581
 hmdc34clfinder.cc:582
 hmdc34clfinder.cc:583
 hmdc34clfinder.cc:584
 hmdc34clfinder.cc:585
 hmdc34clfinder.cc:586
 hmdc34clfinder.cc:587
 hmdc34clfinder.cc:588
 hmdc34clfinder.cc:589
 hmdc34clfinder.cc:590
 hmdc34clfinder.cc:591
 hmdc34clfinder.cc:592
 hmdc34clfinder.cc:593
 hmdc34clfinder.cc:594
 hmdc34clfinder.cc:595
 hmdc34clfinder.cc:596
 hmdc34clfinder.cc:597
 hmdc34clfinder.cc:598
 hmdc34clfinder.cc:599
 hmdc34clfinder.cc:600
 hmdc34clfinder.cc:601
 hmdc34clfinder.cc:602
 hmdc34clfinder.cc:603
 hmdc34clfinder.cc:604
 hmdc34clfinder.cc:605
 hmdc34clfinder.cc:606
 hmdc34clfinder.cc:607
 hmdc34clfinder.cc:608
 hmdc34clfinder.cc:609
 hmdc34clfinder.cc:610
 hmdc34clfinder.cc:611
 hmdc34clfinder.cc:612
 hmdc34clfinder.cc:613
 hmdc34clfinder.cc:614
 hmdc34clfinder.cc:615
 hmdc34clfinder.cc:616
 hmdc34clfinder.cc:617
 hmdc34clfinder.cc:618
 hmdc34clfinder.cc:619
 hmdc34clfinder.cc:620
 hmdc34clfinder.cc:621
 hmdc34clfinder.cc:622
 hmdc34clfinder.cc:623
 hmdc34clfinder.cc:624
 hmdc34clfinder.cc:625
 hmdc34clfinder.cc:626
 hmdc34clfinder.cc:627
 hmdc34clfinder.cc:628
 hmdc34clfinder.cc:629
 hmdc34clfinder.cc:630
 hmdc34clfinder.cc:631
 hmdc34clfinder.cc:632
 hmdc34clfinder.cc:633
 hmdc34clfinder.cc:634
 hmdc34clfinder.cc:635
 hmdc34clfinder.cc:636
 hmdc34clfinder.cc:637
 hmdc34clfinder.cc:638
 hmdc34clfinder.cc:639
 hmdc34clfinder.cc:640
 hmdc34clfinder.cc:641
 hmdc34clfinder.cc:642
 hmdc34clfinder.cc:643
 hmdc34clfinder.cc:644
 hmdc34clfinder.cc:645
 hmdc34clfinder.cc:646
 hmdc34clfinder.cc:647
 hmdc34clfinder.cc:648
 hmdc34clfinder.cc:649
 hmdc34clfinder.cc:650
 hmdc34clfinder.cc:651
 hmdc34clfinder.cc:652
 hmdc34clfinder.cc:653
 hmdc34clfinder.cc:654
 hmdc34clfinder.cc:655
 hmdc34clfinder.cc:656
 hmdc34clfinder.cc:657
 hmdc34clfinder.cc:658
 hmdc34clfinder.cc:659
 hmdc34clfinder.cc:660
 hmdc34clfinder.cc:661
 hmdc34clfinder.cc:662
 hmdc34clfinder.cc:663
 hmdc34clfinder.cc:664
 hmdc34clfinder.cc:665
 hmdc34clfinder.cc:666
 hmdc34clfinder.cc:667
 hmdc34clfinder.cc:668
 hmdc34clfinder.cc:669
 hmdc34clfinder.cc:670
 hmdc34clfinder.cc:671
 hmdc34clfinder.cc:672
 hmdc34clfinder.cc:673
 hmdc34clfinder.cc:674
 hmdc34clfinder.cc:675
 hmdc34clfinder.cc:676
 hmdc34clfinder.cc:677
 hmdc34clfinder.cc:678
 hmdc34clfinder.cc:679
 hmdc34clfinder.cc:680
 hmdc34clfinder.cc:681
 hmdc34clfinder.cc:682
 hmdc34clfinder.cc:683
 hmdc34clfinder.cc:684
 hmdc34clfinder.cc:685
 hmdc34clfinder.cc:686
 hmdc34clfinder.cc:687
 hmdc34clfinder.cc:688
 hmdc34clfinder.cc:689
 hmdc34clfinder.cc:690
 hmdc34clfinder.cc:691
 hmdc34clfinder.cc:692
 hmdc34clfinder.cc:693
 hmdc34clfinder.cc:694
 hmdc34clfinder.cc:695
 hmdc34clfinder.cc:696
 hmdc34clfinder.cc:697
 hmdc34clfinder.cc:698
 hmdc34clfinder.cc:699
 hmdc34clfinder.cc:700
 hmdc34clfinder.cc:701
 hmdc34clfinder.cc:702
 hmdc34clfinder.cc:703
 hmdc34clfinder.cc:704
 hmdc34clfinder.cc:705
 hmdc34clfinder.cc:706
 hmdc34clfinder.cc:707
 hmdc34clfinder.cc:708
 hmdc34clfinder.cc:709
 hmdc34clfinder.cc:710
 hmdc34clfinder.cc:711
 hmdc34clfinder.cc:712
 hmdc34clfinder.cc:713
 hmdc34clfinder.cc:714
 hmdc34clfinder.cc:715
 hmdc34clfinder.cc:716
 hmdc34clfinder.cc:717
 hmdc34clfinder.cc:718
 hmdc34clfinder.cc:719
 hmdc34clfinder.cc:720
 hmdc34clfinder.cc:721
 hmdc34clfinder.cc:722
 hmdc34clfinder.cc:723
 hmdc34clfinder.cc:724
 hmdc34clfinder.cc:725
 hmdc34clfinder.cc:726
 hmdc34clfinder.cc:727
 hmdc34clfinder.cc:728
 hmdc34clfinder.cc:729
 hmdc34clfinder.cc:730
 hmdc34clfinder.cc:731
 hmdc34clfinder.cc:732
 hmdc34clfinder.cc:733
 hmdc34clfinder.cc:734
 hmdc34clfinder.cc:735
 hmdc34clfinder.cc:736
 hmdc34clfinder.cc:737
 hmdc34clfinder.cc:738
 hmdc34clfinder.cc:739
 hmdc34clfinder.cc:740
 hmdc34clfinder.cc:741
 hmdc34clfinder.cc:742
 hmdc34clfinder.cc:743
 hmdc34clfinder.cc:744
 hmdc34clfinder.cc:745
 hmdc34clfinder.cc:746
 hmdc34clfinder.cc:747
 hmdc34clfinder.cc:748
 hmdc34clfinder.cc:749
 hmdc34clfinder.cc:750
 hmdc34clfinder.cc:751
 hmdc34clfinder.cc:752
 hmdc34clfinder.cc:753
 hmdc34clfinder.cc:754
 hmdc34clfinder.cc:755
 hmdc34clfinder.cc:756
 hmdc34clfinder.cc:757
 hmdc34clfinder.cc:758
 hmdc34clfinder.cc:759
 hmdc34clfinder.cc:760
 hmdc34clfinder.cc:761
 hmdc34clfinder.cc:762
 hmdc34clfinder.cc:763
 hmdc34clfinder.cc:764
 hmdc34clfinder.cc:765
 hmdc34clfinder.cc:766
 hmdc34clfinder.cc:767
 hmdc34clfinder.cc:768
 hmdc34clfinder.cc:769
 hmdc34clfinder.cc:770
 hmdc34clfinder.cc:771
 hmdc34clfinder.cc:772
 hmdc34clfinder.cc:773
 hmdc34clfinder.cc:774
 hmdc34clfinder.cc:775
 hmdc34clfinder.cc:776
 hmdc34clfinder.cc:777
 hmdc34clfinder.cc:778
 hmdc34clfinder.cc:779
 hmdc34clfinder.cc:780
 hmdc34clfinder.cc:781
 hmdc34clfinder.cc:782
 hmdc34clfinder.cc:783
 hmdc34clfinder.cc:784
 hmdc34clfinder.cc:785
 hmdc34clfinder.cc:786
 hmdc34clfinder.cc:787
 hmdc34clfinder.cc:788
 hmdc34clfinder.cc:789
 hmdc34clfinder.cc:790
 hmdc34clfinder.cc:791
 hmdc34clfinder.cc:792
 hmdc34clfinder.cc:793
 hmdc34clfinder.cc:794
 hmdc34clfinder.cc:795
 hmdc34clfinder.cc:796
 hmdc34clfinder.cc:797
 hmdc34clfinder.cc:798
 hmdc34clfinder.cc:799
 hmdc34clfinder.cc:800
 hmdc34clfinder.cc:801
 hmdc34clfinder.cc:802
 hmdc34clfinder.cc:803
 hmdc34clfinder.cc:804
 hmdc34clfinder.cc:805
 hmdc34clfinder.cc:806
 hmdc34clfinder.cc:807
 hmdc34clfinder.cc:808
 hmdc34clfinder.cc:809
 hmdc34clfinder.cc:810
 hmdc34clfinder.cc:811
 hmdc34clfinder.cc:812
 hmdc34clfinder.cc:813
 hmdc34clfinder.cc:814
 hmdc34clfinder.cc:815
 hmdc34clfinder.cc:816
 hmdc34clfinder.cc:817
 hmdc34clfinder.cc:818
 hmdc34clfinder.cc:819
 hmdc34clfinder.cc:820
 hmdc34clfinder.cc:821
 hmdc34clfinder.cc:822
 hmdc34clfinder.cc:823
 hmdc34clfinder.cc:824
 hmdc34clfinder.cc:825
 hmdc34clfinder.cc:826
 hmdc34clfinder.cc:827
 hmdc34clfinder.cc:828
 hmdc34clfinder.cc:829
 hmdc34clfinder.cc:830
 hmdc34clfinder.cc:831
 hmdc34clfinder.cc:832
 hmdc34clfinder.cc:833
 hmdc34clfinder.cc:834
 hmdc34clfinder.cc:835
 hmdc34clfinder.cc:836
 hmdc34clfinder.cc:837
 hmdc34clfinder.cc:838
 hmdc34clfinder.cc:839
 hmdc34clfinder.cc:840
 hmdc34clfinder.cc:841
 hmdc34clfinder.cc:842
 hmdc34clfinder.cc:843
 hmdc34clfinder.cc:844
 hmdc34clfinder.cc:845
 hmdc34clfinder.cc:846
 hmdc34clfinder.cc:847
 hmdc34clfinder.cc:848
 hmdc34clfinder.cc:849
 hmdc34clfinder.cc:850
 hmdc34clfinder.cc:851
 hmdc34clfinder.cc:852
 hmdc34clfinder.cc:853
 hmdc34clfinder.cc:854
 hmdc34clfinder.cc:855
 hmdc34clfinder.cc:856
 hmdc34clfinder.cc:857
 hmdc34clfinder.cc:858
 hmdc34clfinder.cc:859
 hmdc34clfinder.cc:860
 hmdc34clfinder.cc:861
 hmdc34clfinder.cc:862
 hmdc34clfinder.cc:863
 hmdc34clfinder.cc:864
 hmdc34clfinder.cc:865
 hmdc34clfinder.cc:866
 hmdc34clfinder.cc:867
 hmdc34clfinder.cc:868
 hmdc34clfinder.cc:869
 hmdc34clfinder.cc:870
 hmdc34clfinder.cc:871
 hmdc34clfinder.cc:872
 hmdc34clfinder.cc:873
 hmdc34clfinder.cc:874
 hmdc34clfinder.cc:875
 hmdc34clfinder.cc:876
 hmdc34clfinder.cc:877
 hmdc34clfinder.cc:878
 hmdc34clfinder.cc:879
 hmdc34clfinder.cc:880
 hmdc34clfinder.cc:881
 hmdc34clfinder.cc:882
 hmdc34clfinder.cc:883
 hmdc34clfinder.cc:884
 hmdc34clfinder.cc:885
 hmdc34clfinder.cc:886
 hmdc34clfinder.cc:887
 hmdc34clfinder.cc:888
 hmdc34clfinder.cc:889
 hmdc34clfinder.cc:890
 hmdc34clfinder.cc:891
 hmdc34clfinder.cc:892
 hmdc34clfinder.cc:893
 hmdc34clfinder.cc:894
 hmdc34clfinder.cc:895
 hmdc34clfinder.cc:896
 hmdc34clfinder.cc:897
 hmdc34clfinder.cc:898
 hmdc34clfinder.cc:899
 hmdc34clfinder.cc:900
 hmdc34clfinder.cc:901
 hmdc34clfinder.cc:902
 hmdc34clfinder.cc:903
 hmdc34clfinder.cc:904
 hmdc34clfinder.cc:905
 hmdc34clfinder.cc:906
 hmdc34clfinder.cc:907
 hmdc34clfinder.cc:908
 hmdc34clfinder.cc:909
 hmdc34clfinder.cc:910
 hmdc34clfinder.cc:911
 hmdc34clfinder.cc:912
 hmdc34clfinder.cc:913
 hmdc34clfinder.cc:914
 hmdc34clfinder.cc:915
 hmdc34clfinder.cc:916
 hmdc34clfinder.cc:917
 hmdc34clfinder.cc:918
 hmdc34clfinder.cc:919
 hmdc34clfinder.cc:920
 hmdc34clfinder.cc:921
 hmdc34clfinder.cc:922
 hmdc34clfinder.cc:923
 hmdc34clfinder.cc:924
 hmdc34clfinder.cc:925
 hmdc34clfinder.cc:926
 hmdc34clfinder.cc:927
 hmdc34clfinder.cc:928
 hmdc34clfinder.cc:929
 hmdc34clfinder.cc:930
 hmdc34clfinder.cc:931
 hmdc34clfinder.cc:932
 hmdc34clfinder.cc:933
 hmdc34clfinder.cc:934
 hmdc34clfinder.cc:935
 hmdc34clfinder.cc:936
 hmdc34clfinder.cc:937
 hmdc34clfinder.cc:938
 hmdc34clfinder.cc:939
 hmdc34clfinder.cc:940
 hmdc34clfinder.cc:941
 hmdc34clfinder.cc:942
 hmdc34clfinder.cc:943
 hmdc34clfinder.cc:944
 hmdc34clfinder.cc:945
 hmdc34clfinder.cc:946
 hmdc34clfinder.cc:947
 hmdc34clfinder.cc:948
 hmdc34clfinder.cc:949
 hmdc34clfinder.cc:950
 hmdc34clfinder.cc:951
 hmdc34clfinder.cc:952
 hmdc34clfinder.cc:953
 hmdc34clfinder.cc:954
 hmdc34clfinder.cc:955
 hmdc34clfinder.cc:956
 hmdc34clfinder.cc:957
 hmdc34clfinder.cc:958
 hmdc34clfinder.cc:959
 hmdc34clfinder.cc:960
 hmdc34clfinder.cc:961
 hmdc34clfinder.cc:962
 hmdc34clfinder.cc:963
 hmdc34clfinder.cc:964
 hmdc34clfinder.cc:965
 hmdc34clfinder.cc:966
 hmdc34clfinder.cc:967
 hmdc34clfinder.cc:968
 hmdc34clfinder.cc:969
 hmdc34clfinder.cc:970
 hmdc34clfinder.cc:971
 hmdc34clfinder.cc:972
 hmdc34clfinder.cc:973
 hmdc34clfinder.cc:974
 hmdc34clfinder.cc:975
 hmdc34clfinder.cc:976
 hmdc34clfinder.cc:977
 hmdc34clfinder.cc:978
 hmdc34clfinder.cc:979
 hmdc34clfinder.cc:980
 hmdc34clfinder.cc:981
 hmdc34clfinder.cc:982
 hmdc34clfinder.cc:983
 hmdc34clfinder.cc:984
 hmdc34clfinder.cc:985
 hmdc34clfinder.cc:986
 hmdc34clfinder.cc:987
 hmdc34clfinder.cc:988
 hmdc34clfinder.cc:989
 hmdc34clfinder.cc:990
 hmdc34clfinder.cc:991
 hmdc34clfinder.cc:992
 hmdc34clfinder.cc:993
 hmdc34clfinder.cc:994
 hmdc34clfinder.cc:995
 hmdc34clfinder.cc:996
 hmdc34clfinder.cc:997
 hmdc34clfinder.cc:998
 hmdc34clfinder.cc:999
 hmdc34clfinder.cc:1000
 hmdc34clfinder.cc:1001
 hmdc34clfinder.cc:1002
 hmdc34clfinder.cc:1003
 hmdc34clfinder.cc:1004
 hmdc34clfinder.cc:1005
 hmdc34clfinder.cc:1006
 hmdc34clfinder.cc:1007
 hmdc34clfinder.cc:1008
 hmdc34clfinder.cc:1009
 hmdc34clfinder.cc:1010
 hmdc34clfinder.cc:1011
 hmdc34clfinder.cc:1012
 hmdc34clfinder.cc:1013
 hmdc34clfinder.cc:1014
 hmdc34clfinder.cc:1015
 hmdc34clfinder.cc:1016
 hmdc34clfinder.cc:1017
 hmdc34clfinder.cc:1018
 hmdc34clfinder.cc:1019
 hmdc34clfinder.cc:1020
 hmdc34clfinder.cc:1021
 hmdc34clfinder.cc:1022
 hmdc34clfinder.cc:1023
 hmdc34clfinder.cc:1024
 hmdc34clfinder.cc:1025
 hmdc34clfinder.cc:1026
 hmdc34clfinder.cc:1027
 hmdc34clfinder.cc:1028
 hmdc34clfinder.cc:1029
 hmdc34clfinder.cc:1030
 hmdc34clfinder.cc:1031
 hmdc34clfinder.cc:1032
 hmdc34clfinder.cc:1033
 hmdc34clfinder.cc:1034
 hmdc34clfinder.cc:1035
 hmdc34clfinder.cc:1036
 hmdc34clfinder.cc:1037
 hmdc34clfinder.cc:1038
 hmdc34clfinder.cc:1039
 hmdc34clfinder.cc:1040
 hmdc34clfinder.cc:1041
 hmdc34clfinder.cc:1042
 hmdc34clfinder.cc:1043
 hmdc34clfinder.cc:1044
 hmdc34clfinder.cc:1045
 hmdc34clfinder.cc:1046
 hmdc34clfinder.cc:1047
 hmdc34clfinder.cc:1048
 hmdc34clfinder.cc:1049
 hmdc34clfinder.cc:1050
 hmdc34clfinder.cc:1051
 hmdc34clfinder.cc:1052
 hmdc34clfinder.cc:1053
 hmdc34clfinder.cc:1054
 hmdc34clfinder.cc:1055
 hmdc34clfinder.cc:1056
 hmdc34clfinder.cc:1057
 hmdc34clfinder.cc:1058
 hmdc34clfinder.cc:1059
 hmdc34clfinder.cc:1060
 hmdc34clfinder.cc:1061
 hmdc34clfinder.cc:1062
 hmdc34clfinder.cc:1063
 hmdc34clfinder.cc:1064
 hmdc34clfinder.cc:1065
 hmdc34clfinder.cc:1066
 hmdc34clfinder.cc:1067
 hmdc34clfinder.cc:1068
 hmdc34clfinder.cc:1069
 hmdc34clfinder.cc:1070
 hmdc34clfinder.cc:1071
 hmdc34clfinder.cc:1072
 hmdc34clfinder.cc:1073
 hmdc34clfinder.cc:1074
 hmdc34clfinder.cc:1075
 hmdc34clfinder.cc:1076
 hmdc34clfinder.cc:1077
 hmdc34clfinder.cc:1078
 hmdc34clfinder.cc:1079
 hmdc34clfinder.cc:1080
 hmdc34clfinder.cc:1081
 hmdc34clfinder.cc:1082
 hmdc34clfinder.cc:1083
 hmdc34clfinder.cc:1084
 hmdc34clfinder.cc:1085
 hmdc34clfinder.cc:1086
 hmdc34clfinder.cc:1087
 hmdc34clfinder.cc:1088
 hmdc34clfinder.cc:1089
 hmdc34clfinder.cc:1090
 hmdc34clfinder.cc:1091
 hmdc34clfinder.cc:1092
 hmdc34clfinder.cc:1093
 hmdc34clfinder.cc:1094
 hmdc34clfinder.cc:1095
 hmdc34clfinder.cc:1096
 hmdc34clfinder.cc:1097
 hmdc34clfinder.cc:1098
 hmdc34clfinder.cc:1099
 hmdc34clfinder.cc:1100
 hmdc34clfinder.cc:1101
 hmdc34clfinder.cc:1102
 hmdc34clfinder.cc:1103
 hmdc34clfinder.cc:1104
 hmdc34clfinder.cc:1105
 hmdc34clfinder.cc:1106
 hmdc34clfinder.cc:1107
 hmdc34clfinder.cc:1108
 hmdc34clfinder.cc:1109
 hmdc34clfinder.cc:1110
 hmdc34clfinder.cc:1111
 hmdc34clfinder.cc:1112
 hmdc34clfinder.cc:1113
 hmdc34clfinder.cc:1114
 hmdc34clfinder.cc:1115
 hmdc34clfinder.cc:1116
 hmdc34clfinder.cc:1117
 hmdc34clfinder.cc:1118
 hmdc34clfinder.cc:1119
 hmdc34clfinder.cc:1120
 hmdc34clfinder.cc:1121
 hmdc34clfinder.cc:1122
 hmdc34clfinder.cc:1123
 hmdc34clfinder.cc:1124
 hmdc34clfinder.cc:1125
 hmdc34clfinder.cc:1126
 hmdc34clfinder.cc:1127
 hmdc34clfinder.cc:1128
 hmdc34clfinder.cc:1129
 hmdc34clfinder.cc:1130
 hmdc34clfinder.cc:1131
 hmdc34clfinder.cc:1132
 hmdc34clfinder.cc:1133
 hmdc34clfinder.cc:1134
 hmdc34clfinder.cc:1135
 hmdc34clfinder.cc:1136
 hmdc34clfinder.cc:1137
 hmdc34clfinder.cc:1138
 hmdc34clfinder.cc:1139
 hmdc34clfinder.cc:1140
 hmdc34clfinder.cc:1141
 hmdc34clfinder.cc:1142
 hmdc34clfinder.cc:1143
 hmdc34clfinder.cc:1144
 hmdc34clfinder.cc:1145
 hmdc34clfinder.cc:1146
 hmdc34clfinder.cc:1147
 hmdc34clfinder.cc:1148
 hmdc34clfinder.cc:1149
 hmdc34clfinder.cc:1150
 hmdc34clfinder.cc:1151
 hmdc34clfinder.cc:1152
 hmdc34clfinder.cc:1153
 hmdc34clfinder.cc:1154
 hmdc34clfinder.cc:1155
 hmdc34clfinder.cc:1156
 hmdc34clfinder.cc:1157
 hmdc34clfinder.cc:1158
 hmdc34clfinder.cc:1159
 hmdc34clfinder.cc:1160
 hmdc34clfinder.cc:1161
 hmdc34clfinder.cc:1162
 hmdc34clfinder.cc:1163
 hmdc34clfinder.cc:1164
 hmdc34clfinder.cc:1165
 hmdc34clfinder.cc:1166
 hmdc34clfinder.cc:1167
 hmdc34clfinder.cc:1168
 hmdc34clfinder.cc:1169
 hmdc34clfinder.cc:1170
 hmdc34clfinder.cc:1171
 hmdc34clfinder.cc:1172
 hmdc34clfinder.cc:1173
 hmdc34clfinder.cc:1174
 hmdc34clfinder.cc:1175
 hmdc34clfinder.cc:1176
 hmdc34clfinder.cc:1177
 hmdc34clfinder.cc:1178
 hmdc34clfinder.cc:1179
 hmdc34clfinder.cc:1180
 hmdc34clfinder.cc:1181
 hmdc34clfinder.cc:1182
 hmdc34clfinder.cc:1183
 hmdc34clfinder.cc:1184
 hmdc34clfinder.cc:1185
 hmdc34clfinder.cc:1186
 hmdc34clfinder.cc:1187
 hmdc34clfinder.cc:1188
 hmdc34clfinder.cc:1189
 hmdc34clfinder.cc:1190
 hmdc34clfinder.cc:1191
 hmdc34clfinder.cc:1192
 hmdc34clfinder.cc:1193
 hmdc34clfinder.cc:1194
 hmdc34clfinder.cc:1195
 hmdc34clfinder.cc:1196
 hmdc34clfinder.cc:1197
 hmdc34clfinder.cc:1198
 hmdc34clfinder.cc:1199
 hmdc34clfinder.cc:1200
 hmdc34clfinder.cc:1201
 hmdc34clfinder.cc:1202
 hmdc34clfinder.cc:1203
 hmdc34clfinder.cc:1204
 hmdc34clfinder.cc:1205
 hmdc34clfinder.cc:1206
 hmdc34clfinder.cc:1207
 hmdc34clfinder.cc:1208
 hmdc34clfinder.cc:1209
 hmdc34clfinder.cc:1210
 hmdc34clfinder.cc:1211
 hmdc34clfinder.cc:1212
 hmdc34clfinder.cc:1213
 hmdc34clfinder.cc:1214
 hmdc34clfinder.cc:1215
 hmdc34clfinder.cc:1216
 hmdc34clfinder.cc:1217
 hmdc34clfinder.cc:1218
 hmdc34clfinder.cc:1219
 hmdc34clfinder.cc:1220
 hmdc34clfinder.cc:1221
 hmdc34clfinder.cc:1222
 hmdc34clfinder.cc:1223
 hmdc34clfinder.cc:1224
 hmdc34clfinder.cc:1225
 hmdc34clfinder.cc:1226
 hmdc34clfinder.cc:1227
 hmdc34clfinder.cc:1228
 hmdc34clfinder.cc:1229
 hmdc34clfinder.cc:1230
 hmdc34clfinder.cc:1231
 hmdc34clfinder.cc:1232
 hmdc34clfinder.cc:1233
 hmdc34clfinder.cc:1234
 hmdc34clfinder.cc:1235
 hmdc34clfinder.cc:1236
 hmdc34clfinder.cc:1237
 hmdc34clfinder.cc:1238
 hmdc34clfinder.cc:1239
 hmdc34clfinder.cc:1240
 hmdc34clfinder.cc:1241
 hmdc34clfinder.cc:1242
 hmdc34clfinder.cc:1243
 hmdc34clfinder.cc:1244
 hmdc34clfinder.cc:1245
 hmdc34clfinder.cc:1246
 hmdc34clfinder.cc:1247
 hmdc34clfinder.cc:1248
 hmdc34clfinder.cc:1249
 hmdc34clfinder.cc:1250
 hmdc34clfinder.cc:1251
 hmdc34clfinder.cc:1252
 hmdc34clfinder.cc:1253
 hmdc34clfinder.cc:1254
 hmdc34clfinder.cc:1255
 hmdc34clfinder.cc:1256
 hmdc34clfinder.cc:1257
 hmdc34clfinder.cc:1258
 hmdc34clfinder.cc:1259
 hmdc34clfinder.cc:1260
 hmdc34clfinder.cc:1261
 hmdc34clfinder.cc:1262
 hmdc34clfinder.cc:1263
 hmdc34clfinder.cc:1264
 hmdc34clfinder.cc:1265
 hmdc34clfinder.cc:1266
 hmdc34clfinder.cc:1267
 hmdc34clfinder.cc:1268
 hmdc34clfinder.cc:1269
 hmdc34clfinder.cc:1270
 hmdc34clfinder.cc:1271
 hmdc34clfinder.cc:1272
 hmdc34clfinder.cc:1273
 hmdc34clfinder.cc:1274
 hmdc34clfinder.cc:1275
 hmdc34clfinder.cc:1276
 hmdc34clfinder.cc:1277
 hmdc34clfinder.cc:1278
 hmdc34clfinder.cc:1279
 hmdc34clfinder.cc:1280
 hmdc34clfinder.cc:1281
 hmdc34clfinder.cc:1282
 hmdc34clfinder.cc:1283
 hmdc34clfinder.cc:1284
 hmdc34clfinder.cc:1285
 hmdc34clfinder.cc:1286
 hmdc34clfinder.cc:1287
 hmdc34clfinder.cc:1288
 hmdc34clfinder.cc:1289
 hmdc34clfinder.cc:1290
 hmdc34clfinder.cc:1291
 hmdc34clfinder.cc:1292
 hmdc34clfinder.cc:1293
 hmdc34clfinder.cc:1294
 hmdc34clfinder.cc:1295
 hmdc34clfinder.cc:1296
 hmdc34clfinder.cc:1297
 hmdc34clfinder.cc:1298
 hmdc34clfinder.cc:1299
 hmdc34clfinder.cc:1300
 hmdc34clfinder.cc:1301
 hmdc34clfinder.cc:1302
 hmdc34clfinder.cc:1303
 hmdc34clfinder.cc:1304
 hmdc34clfinder.cc:1305
 hmdc34clfinder.cc:1306
 hmdc34clfinder.cc:1307
 hmdc34clfinder.cc:1308
 hmdc34clfinder.cc:1309
 hmdc34clfinder.cc:1310
 hmdc34clfinder.cc:1311
 hmdc34clfinder.cc:1312
 hmdc34clfinder.cc:1313
 hmdc34clfinder.cc:1314
 hmdc34clfinder.cc:1315
 hmdc34clfinder.cc:1316
 hmdc34clfinder.cc:1317
 hmdc34clfinder.cc:1318
 hmdc34clfinder.cc:1319
 hmdc34clfinder.cc:1320
 hmdc34clfinder.cc:1321
 hmdc34clfinder.cc:1322
 hmdc34clfinder.cc:1323
 hmdc34clfinder.cc:1324
 hmdc34clfinder.cc:1325
 hmdc34clfinder.cc:1326
 hmdc34clfinder.cc:1327
 hmdc34clfinder.cc:1328
 hmdc34clfinder.cc:1329
 hmdc34clfinder.cc:1330
 hmdc34clfinder.cc:1331
 hmdc34clfinder.cc:1332
 hmdc34clfinder.cc:1333
 hmdc34clfinder.cc:1334
 hmdc34clfinder.cc:1335
 hmdc34clfinder.cc:1336
 hmdc34clfinder.cc:1337
 hmdc34clfinder.cc:1338
 hmdc34clfinder.cc:1339
 hmdc34clfinder.cc:1340
 hmdc34clfinder.cc:1341
 hmdc34clfinder.cc:1342
 hmdc34clfinder.cc:1343
 hmdc34clfinder.cc:1344
 hmdc34clfinder.cc:1345
 hmdc34clfinder.cc:1346
 hmdc34clfinder.cc:1347
 hmdc34clfinder.cc:1348
 hmdc34clfinder.cc:1349
 hmdc34clfinder.cc:1350
 hmdc34clfinder.cc:1351
 hmdc34clfinder.cc:1352
 hmdc34clfinder.cc:1353
 hmdc34clfinder.cc:1354
 hmdc34clfinder.cc:1355
 hmdc34clfinder.cc:1356
 hmdc34clfinder.cc:1357
 hmdc34clfinder.cc:1358
 hmdc34clfinder.cc:1359
 hmdc34clfinder.cc:1360
 hmdc34clfinder.cc:1361
 hmdc34clfinder.cc:1362
 hmdc34clfinder.cc:1363
 hmdc34clfinder.cc:1364
 hmdc34clfinder.cc:1365
 hmdc34clfinder.cc:1366
 hmdc34clfinder.cc:1367
 hmdc34clfinder.cc:1368
 hmdc34clfinder.cc:1369
 hmdc34clfinder.cc:1370
 hmdc34clfinder.cc:1371
 hmdc34clfinder.cc:1372
 hmdc34clfinder.cc:1373
 hmdc34clfinder.cc:1374
 hmdc34clfinder.cc:1375
 hmdc34clfinder.cc:1376
 hmdc34clfinder.cc:1377
 hmdc34clfinder.cc:1378
 hmdc34clfinder.cc:1379
 hmdc34clfinder.cc:1380
 hmdc34clfinder.cc:1381
 hmdc34clfinder.cc:1382
 hmdc34clfinder.cc:1383
 hmdc34clfinder.cc:1384
 hmdc34clfinder.cc:1385
 hmdc34clfinder.cc:1386
 hmdc34clfinder.cc:1387
 hmdc34clfinder.cc:1388
 hmdc34clfinder.cc:1389
 hmdc34clfinder.cc:1390
 hmdc34clfinder.cc:1391
 hmdc34clfinder.cc:1392
 hmdc34clfinder.cc:1393
 hmdc34clfinder.cc:1394
 hmdc34clfinder.cc:1395
 hmdc34clfinder.cc:1396
 hmdc34clfinder.cc:1397
 hmdc34clfinder.cc:1398
 hmdc34clfinder.cc:1399
 hmdc34clfinder.cc:1400
 hmdc34clfinder.cc:1401
 hmdc34clfinder.cc:1402
 hmdc34clfinder.cc:1403
 hmdc34clfinder.cc:1404
 hmdc34clfinder.cc:1405
 hmdc34clfinder.cc:1406
 hmdc34clfinder.cc:1407
 hmdc34clfinder.cc:1408
 hmdc34clfinder.cc:1409
 hmdc34clfinder.cc:1410
 hmdc34clfinder.cc:1411
 hmdc34clfinder.cc:1412
 hmdc34clfinder.cc:1413
 hmdc34clfinder.cc:1414
 hmdc34clfinder.cc:1415
 hmdc34clfinder.cc:1416
 hmdc34clfinder.cc:1417
 hmdc34clfinder.cc:1418
 hmdc34clfinder.cc:1419
 hmdc34clfinder.cc:1420
 hmdc34clfinder.cc:1421
 hmdc34clfinder.cc:1422
 hmdc34clfinder.cc:1423
 hmdc34clfinder.cc:1424
 hmdc34clfinder.cc:1425
 hmdc34clfinder.cc:1426
 hmdc34clfinder.cc:1427
 hmdc34clfinder.cc:1428
 hmdc34clfinder.cc:1429
 hmdc34clfinder.cc:1430
 hmdc34clfinder.cc:1431
 hmdc34clfinder.cc:1432
 hmdc34clfinder.cc:1433
 hmdc34clfinder.cc:1434
 hmdc34clfinder.cc:1435
 hmdc34clfinder.cc:1436
 hmdc34clfinder.cc:1437
 hmdc34clfinder.cc:1438
 hmdc34clfinder.cc:1439
 hmdc34clfinder.cc:1440
 hmdc34clfinder.cc:1441
 hmdc34clfinder.cc:1442
 hmdc34clfinder.cc:1443
 hmdc34clfinder.cc:1444
 hmdc34clfinder.cc:1445
 hmdc34clfinder.cc:1446
 hmdc34clfinder.cc:1447
 hmdc34clfinder.cc:1448
 hmdc34clfinder.cc:1449
 hmdc34clfinder.cc:1450
 hmdc34clfinder.cc:1451
 hmdc34clfinder.cc:1452
 hmdc34clfinder.cc:1453
 hmdc34clfinder.cc:1454
 hmdc34clfinder.cc:1455
 hmdc34clfinder.cc:1456
 hmdc34clfinder.cc:1457
 hmdc34clfinder.cc:1458
 hmdc34clfinder.cc:1459
 hmdc34clfinder.cc:1460
 hmdc34clfinder.cc:1461
 hmdc34clfinder.cc:1462
 hmdc34clfinder.cc:1463
 hmdc34clfinder.cc:1464
 hmdc34clfinder.cc:1465
 hmdc34clfinder.cc:1466
 hmdc34clfinder.cc:1467
 hmdc34clfinder.cc:1468
 hmdc34clfinder.cc:1469
 hmdc34clfinder.cc:1470
 hmdc34clfinder.cc:1471
 hmdc34clfinder.cc:1472
 hmdc34clfinder.cc:1473
 hmdc34clfinder.cc:1474
 hmdc34clfinder.cc:1475
 hmdc34clfinder.cc:1476
 hmdc34clfinder.cc:1477
 hmdc34clfinder.cc:1478
 hmdc34clfinder.cc:1479
 hmdc34clfinder.cc:1480
 hmdc34clfinder.cc:1481
 hmdc34clfinder.cc:1482
 hmdc34clfinder.cc:1483
 hmdc34clfinder.cc:1484
 hmdc34clfinder.cc:1485
 hmdc34clfinder.cc:1486
 hmdc34clfinder.cc:1487
 hmdc34clfinder.cc:1488
 hmdc34clfinder.cc:1489
 hmdc34clfinder.cc:1490
 hmdc34clfinder.cc:1491
 hmdc34clfinder.cc:1492
 hmdc34clfinder.cc:1493
 hmdc34clfinder.cc:1494
 hmdc34clfinder.cc:1495
 hmdc34clfinder.cc:1496
 hmdc34clfinder.cc:1497
 hmdc34clfinder.cc:1498
 hmdc34clfinder.cc:1499
 hmdc34clfinder.cc:1500
 hmdc34clfinder.cc:1501
 hmdc34clfinder.cc:1502
 hmdc34clfinder.cc:1503
 hmdc34clfinder.cc:1504
 hmdc34clfinder.cc:1505
 hmdc34clfinder.cc:1506
 hmdc34clfinder.cc:1507
 hmdc34clfinder.cc:1508
 hmdc34clfinder.cc:1509
 hmdc34clfinder.cc:1510
 hmdc34clfinder.cc:1511
 hmdc34clfinder.cc:1512
 hmdc34clfinder.cc:1513
 hmdc34clfinder.cc:1514
 hmdc34clfinder.cc:1515
 hmdc34clfinder.cc:1516
 hmdc34clfinder.cc:1517
 hmdc34clfinder.cc:1518
 hmdc34clfinder.cc:1519
 hmdc34clfinder.cc:1520
 hmdc34clfinder.cc:1521
 hmdc34clfinder.cc:1522
 hmdc34clfinder.cc:1523
 hmdc34clfinder.cc:1524
 hmdc34clfinder.cc:1525
 hmdc34clfinder.cc:1526
 hmdc34clfinder.cc:1527
 hmdc34clfinder.cc:1528
 hmdc34clfinder.cc:1529
 hmdc34clfinder.cc:1530
 hmdc34clfinder.cc:1531
 hmdc34clfinder.cc:1532
 hmdc34clfinder.cc:1533
 hmdc34clfinder.cc:1534
 hmdc34clfinder.cc:1535
 hmdc34clfinder.cc:1536
 hmdc34clfinder.cc:1537
 hmdc34clfinder.cc:1538
 hmdc34clfinder.cc:1539
 hmdc34clfinder.cc:1540
 hmdc34clfinder.cc:1541
 hmdc34clfinder.cc:1542
 hmdc34clfinder.cc:1543
 hmdc34clfinder.cc:1544
 hmdc34clfinder.cc:1545
 hmdc34clfinder.cc:1546
 hmdc34clfinder.cc:1547
 hmdc34clfinder.cc:1548
 hmdc34clfinder.cc:1549
 hmdc34clfinder.cc:1550
 hmdc34clfinder.cc:1551
 hmdc34clfinder.cc:1552
 hmdc34clfinder.cc:1553
 hmdc34clfinder.cc:1554
 hmdc34clfinder.cc:1555
 hmdc34clfinder.cc:1556
 hmdc34clfinder.cc:1557
 hmdc34clfinder.cc:1558
 hmdc34clfinder.cc:1559
 hmdc34clfinder.cc:1560
 hmdc34clfinder.cc:1561
 hmdc34clfinder.cc:1562
 hmdc34clfinder.cc:1563
 hmdc34clfinder.cc:1564
 hmdc34clfinder.cc:1565
 hmdc34clfinder.cc:1566
 hmdc34clfinder.cc:1567
 hmdc34clfinder.cc:1568
 hmdc34clfinder.cc:1569
 hmdc34clfinder.cc:1570
 hmdc34clfinder.cc:1571
 hmdc34clfinder.cc:1572
 hmdc34clfinder.cc:1573
 hmdc34clfinder.cc:1574
 hmdc34clfinder.cc:1575
 hmdc34clfinder.cc:1576
 hmdc34clfinder.cc:1577
 hmdc34clfinder.cc:1578
 hmdc34clfinder.cc:1579
 hmdc34clfinder.cc:1580
 hmdc34clfinder.cc:1581
 hmdc34clfinder.cc:1582
 hmdc34clfinder.cc:1583
 hmdc34clfinder.cc:1584
 hmdc34clfinder.cc:1585
 hmdc34clfinder.cc:1586
 hmdc34clfinder.cc:1587
 hmdc34clfinder.cc:1588
 hmdc34clfinder.cc:1589
 hmdc34clfinder.cc:1590
 hmdc34clfinder.cc:1591
 hmdc34clfinder.cc:1592
 hmdc34clfinder.cc:1593
 hmdc34clfinder.cc:1594
 hmdc34clfinder.cc:1595
 hmdc34clfinder.cc:1596
 hmdc34clfinder.cc:1597
 hmdc34clfinder.cc:1598
 hmdc34clfinder.cc:1599
 hmdc34clfinder.cc:1600
 hmdc34clfinder.cc:1601
 hmdc34clfinder.cc:1602
 hmdc34clfinder.cc:1603
 hmdc34clfinder.cc:1604
 hmdc34clfinder.cc:1605
 hmdc34clfinder.cc:1606
 hmdc34clfinder.cc:1607
 hmdc34clfinder.cc:1608
 hmdc34clfinder.cc:1609
 hmdc34clfinder.cc:1610
 hmdc34clfinder.cc:1611
 hmdc34clfinder.cc:1612
 hmdc34clfinder.cc:1613
 hmdc34clfinder.cc:1614
 hmdc34clfinder.cc:1615
 hmdc34clfinder.cc:1616
 hmdc34clfinder.cc:1617
 hmdc34clfinder.cc:1618
 hmdc34clfinder.cc:1619
 hmdc34clfinder.cc:1620
 hmdc34clfinder.cc:1621
 hmdc34clfinder.cc:1622
 hmdc34clfinder.cc:1623
 hmdc34clfinder.cc:1624
 hmdc34clfinder.cc:1625
 hmdc34clfinder.cc:1626
 hmdc34clfinder.cc:1627
 hmdc34clfinder.cc:1628
 hmdc34clfinder.cc:1629
 hmdc34clfinder.cc:1630
 hmdc34clfinder.cc:1631
 hmdc34clfinder.cc:1632
 hmdc34clfinder.cc:1633
 hmdc34clfinder.cc:1634
 hmdc34clfinder.cc:1635
 hmdc34clfinder.cc:1636
 hmdc34clfinder.cc:1637
 hmdc34clfinder.cc:1638
 hmdc34clfinder.cc:1639
 hmdc34clfinder.cc:1640
 hmdc34clfinder.cc:1641
 hmdc34clfinder.cc:1642
 hmdc34clfinder.cc:1643
 hmdc34clfinder.cc:1644
 hmdc34clfinder.cc:1645
 hmdc34clfinder.cc:1646
 hmdc34clfinder.cc:1647
 hmdc34clfinder.cc:1648
 hmdc34clfinder.cc:1649
 hmdc34clfinder.cc:1650
 hmdc34clfinder.cc:1651
 hmdc34clfinder.cc:1652
 hmdc34clfinder.cc:1653
 hmdc34clfinder.cc:1654
 hmdc34clfinder.cc:1655
 hmdc34clfinder.cc:1656
 hmdc34clfinder.cc:1657
 hmdc34clfinder.cc:1658
 hmdc34clfinder.cc:1659
 hmdc34clfinder.cc:1660
 hmdc34clfinder.cc:1661
 hmdc34clfinder.cc:1662
 hmdc34clfinder.cc:1663
 hmdc34clfinder.cc:1664
 hmdc34clfinder.cc:1665
 hmdc34clfinder.cc:1666
 hmdc34clfinder.cc:1667
 hmdc34clfinder.cc:1668
 hmdc34clfinder.cc:1669
 hmdc34clfinder.cc:1670
 hmdc34clfinder.cc:1671
 hmdc34clfinder.cc:1672
 hmdc34clfinder.cc:1673
 hmdc34clfinder.cc:1674
 hmdc34clfinder.cc:1675
 hmdc34clfinder.cc:1676
 hmdc34clfinder.cc:1677
 hmdc34clfinder.cc:1678
 hmdc34clfinder.cc:1679
 hmdc34clfinder.cc:1680
 hmdc34clfinder.cc:1681
 hmdc34clfinder.cc:1682
 hmdc34clfinder.cc:1683
 hmdc34clfinder.cc:1684
 hmdc34clfinder.cc:1685
 hmdc34clfinder.cc:1686
 hmdc34clfinder.cc:1687
 hmdc34clfinder.cc:1688
 hmdc34clfinder.cc:1689
 hmdc34clfinder.cc:1690
 hmdc34clfinder.cc:1691
 hmdc34clfinder.cc:1692
 hmdc34clfinder.cc:1693
 hmdc34clfinder.cc:1694
 hmdc34clfinder.cc:1695
 hmdc34clfinder.cc:1696
 hmdc34clfinder.cc:1697
 hmdc34clfinder.cc:1698
 hmdc34clfinder.cc:1699
 hmdc34clfinder.cc:1700
 hmdc34clfinder.cc:1701
 hmdc34clfinder.cc:1702
 hmdc34clfinder.cc:1703
 hmdc34clfinder.cc:1704
 hmdc34clfinder.cc:1705
 hmdc34clfinder.cc:1706
 hmdc34clfinder.cc:1707
 hmdc34clfinder.cc:1708
 hmdc34clfinder.cc:1709
 hmdc34clfinder.cc:1710
 hmdc34clfinder.cc:1711
 hmdc34clfinder.cc:1712
 hmdc34clfinder.cc:1713
 hmdc34clfinder.cc:1714
 hmdc34clfinder.cc:1715
 hmdc34clfinder.cc:1716
 hmdc34clfinder.cc:1717
 hmdc34clfinder.cc:1718
 hmdc34clfinder.cc:1719
 hmdc34clfinder.cc:1720
 hmdc34clfinder.cc:1721
 hmdc34clfinder.cc:1722
 hmdc34clfinder.cc:1723
 hmdc34clfinder.cc:1724
 hmdc34clfinder.cc:1725
 hmdc34clfinder.cc:1726
 hmdc34clfinder.cc:1727
 hmdc34clfinder.cc:1728
 hmdc34clfinder.cc:1729
 hmdc34clfinder.cc:1730
 hmdc34clfinder.cc:1731
 hmdc34clfinder.cc:1732
 hmdc34clfinder.cc:1733
 hmdc34clfinder.cc:1734
 hmdc34clfinder.cc:1735
 hmdc34clfinder.cc:1736
 hmdc34clfinder.cc:1737
 hmdc34clfinder.cc:1738
 hmdc34clfinder.cc:1739
 hmdc34clfinder.cc:1740
 hmdc34clfinder.cc:1741
 hmdc34clfinder.cc:1742
 hmdc34clfinder.cc:1743
 hmdc34clfinder.cc:1744
 hmdc34clfinder.cc:1745
 hmdc34clfinder.cc:1746
 hmdc34clfinder.cc:1747
 hmdc34clfinder.cc:1748
 hmdc34clfinder.cc:1749
 hmdc34clfinder.cc:1750
 hmdc34clfinder.cc:1751
 hmdc34clfinder.cc:1752
 hmdc34clfinder.cc:1753
 hmdc34clfinder.cc:1754
 hmdc34clfinder.cc:1755
 hmdc34clfinder.cc:1756
 hmdc34clfinder.cc:1757
 hmdc34clfinder.cc:1758
 hmdc34clfinder.cc:1759
 hmdc34clfinder.cc:1760
 hmdc34clfinder.cc:1761
 hmdc34clfinder.cc:1762
 hmdc34clfinder.cc:1763
 hmdc34clfinder.cc:1764
 hmdc34clfinder.cc:1765
 hmdc34clfinder.cc:1766
 hmdc34clfinder.cc:1767
 hmdc34clfinder.cc:1768
 hmdc34clfinder.cc:1769
 hmdc34clfinder.cc:1770
 hmdc34clfinder.cc:1771
 hmdc34clfinder.cc:1772
 hmdc34clfinder.cc:1773
 hmdc34clfinder.cc:1774
 hmdc34clfinder.cc:1775
 hmdc34clfinder.cc:1776
 hmdc34clfinder.cc:1777
 hmdc34clfinder.cc:1778
 hmdc34clfinder.cc:1779
 hmdc34clfinder.cc:1780
 hmdc34clfinder.cc:1781
 hmdc34clfinder.cc:1782
 hmdc34clfinder.cc:1783
 hmdc34clfinder.cc:1784
 hmdc34clfinder.cc:1785
 hmdc34clfinder.cc:1786
 hmdc34clfinder.cc:1787
 hmdc34clfinder.cc:1788
 hmdc34clfinder.cc:1789
 hmdc34clfinder.cc:1790
 hmdc34clfinder.cc:1791
 hmdc34clfinder.cc:1792
 hmdc34clfinder.cc:1793
 hmdc34clfinder.cc:1794
 hmdc34clfinder.cc:1795
 hmdc34clfinder.cc:1796
 hmdc34clfinder.cc:1797
 hmdc34clfinder.cc:1798
 hmdc34clfinder.cc:1799
 hmdc34clfinder.cc:1800
 hmdc34clfinder.cc:1801
 hmdc34clfinder.cc:1802
 hmdc34clfinder.cc:1803
 hmdc34clfinder.cc:1804
 hmdc34clfinder.cc:1805
 hmdc34clfinder.cc:1806
 hmdc34clfinder.cc:1807
 hmdc34clfinder.cc:1808
 hmdc34clfinder.cc:1809
 hmdc34clfinder.cc:1810
 hmdc34clfinder.cc:1811
 hmdc34clfinder.cc:1812
 hmdc34clfinder.cc:1813
 hmdc34clfinder.cc:1814
 hmdc34clfinder.cc:1815
 hmdc34clfinder.cc:1816
 hmdc34clfinder.cc:1817
 hmdc34clfinder.cc:1818
 hmdc34clfinder.cc:1819
 hmdc34clfinder.cc:1820
 hmdc34clfinder.cc:1821
 hmdc34clfinder.cc:1822
 hmdc34clfinder.cc:1823
 hmdc34clfinder.cc:1824
 hmdc34clfinder.cc:1825
 hmdc34clfinder.cc:1826
 hmdc34clfinder.cc:1827
 hmdc34clfinder.cc:1828
 hmdc34clfinder.cc:1829
 hmdc34clfinder.cc:1830
 hmdc34clfinder.cc:1831
 hmdc34clfinder.cc:1832
 hmdc34clfinder.cc:1833
 hmdc34clfinder.cc:1834
 hmdc34clfinder.cc:1835
 hmdc34clfinder.cc:1836
 hmdc34clfinder.cc:1837
 hmdc34clfinder.cc:1838
 hmdc34clfinder.cc:1839
 hmdc34clfinder.cc:1840
 hmdc34clfinder.cc:1841
 hmdc34clfinder.cc:1842
 hmdc34clfinder.cc:1843
 hmdc34clfinder.cc:1844
 hmdc34clfinder.cc:1845
 hmdc34clfinder.cc:1846
 hmdc34clfinder.cc:1847
 hmdc34clfinder.cc:1848
 hmdc34clfinder.cc:1849
 hmdc34clfinder.cc:1850
 hmdc34clfinder.cc:1851
 hmdc34clfinder.cc:1852
 hmdc34clfinder.cc:1853
 hmdc34clfinder.cc:1854
 hmdc34clfinder.cc:1855
 hmdc34clfinder.cc:1856
 hmdc34clfinder.cc:1857
 hmdc34clfinder.cc:1858
 hmdc34clfinder.cc:1859
 hmdc34clfinder.cc:1860
 hmdc34clfinder.cc:1861
 hmdc34clfinder.cc:1862
 hmdc34clfinder.cc:1863
 hmdc34clfinder.cc:1864
 hmdc34clfinder.cc:1865
 hmdc34clfinder.cc:1866
 hmdc34clfinder.cc:1867
 hmdc34clfinder.cc:1868
 hmdc34clfinder.cc:1869
 hmdc34clfinder.cc:1870
 hmdc34clfinder.cc:1871
 hmdc34clfinder.cc:1872
 hmdc34clfinder.cc:1873
 hmdc34clfinder.cc:1874
 hmdc34clfinder.cc:1875
 hmdc34clfinder.cc:1876
 hmdc34clfinder.cc:1877
 hmdc34clfinder.cc:1878
 hmdc34clfinder.cc:1879
 hmdc34clfinder.cc:1880
 hmdc34clfinder.cc:1881
 hmdc34clfinder.cc:1882
 hmdc34clfinder.cc:1883
 hmdc34clfinder.cc:1884
 hmdc34clfinder.cc:1885
 hmdc34clfinder.cc:1886
 hmdc34clfinder.cc:1887
 hmdc34clfinder.cc:1888
 hmdc34clfinder.cc:1889
 hmdc34clfinder.cc:1890
 hmdc34clfinder.cc:1891
 hmdc34clfinder.cc:1892
 hmdc34clfinder.cc:1893
 hmdc34clfinder.cc:1894
 hmdc34clfinder.cc:1895
 hmdc34clfinder.cc:1896
 hmdc34clfinder.cc:1897
 hmdc34clfinder.cc:1898
 hmdc34clfinder.cc:1899
 hmdc34clfinder.cc:1900
 hmdc34clfinder.cc:1901
 hmdc34clfinder.cc:1902
 hmdc34clfinder.cc:1903
 hmdc34clfinder.cc:1904
 hmdc34clfinder.cc:1905
 hmdc34clfinder.cc:1906
 hmdc34clfinder.cc:1907
 hmdc34clfinder.cc:1908
 hmdc34clfinder.cc:1909
 hmdc34clfinder.cc:1910
 hmdc34clfinder.cc:1911
 hmdc34clfinder.cc:1912
 hmdc34clfinder.cc:1913
 hmdc34clfinder.cc:1914
 hmdc34clfinder.cc:1915
 hmdc34clfinder.cc:1916
 hmdc34clfinder.cc:1917
 hmdc34clfinder.cc:1918
 hmdc34clfinder.cc:1919
 hmdc34clfinder.cc:1920
 hmdc34clfinder.cc:1921
 hmdc34clfinder.cc:1922
 hmdc34clfinder.cc:1923
 hmdc34clfinder.cc:1924
 hmdc34clfinder.cc:1925
 hmdc34clfinder.cc:1926
 hmdc34clfinder.cc:1927
 hmdc34clfinder.cc:1928
 hmdc34clfinder.cc:1929
 hmdc34clfinder.cc:1930
 hmdc34clfinder.cc:1931
 hmdc34clfinder.cc:1932
 hmdc34clfinder.cc:1933
 hmdc34clfinder.cc:1934
 hmdc34clfinder.cc:1935
 hmdc34clfinder.cc:1936
 hmdc34clfinder.cc:1937
 hmdc34clfinder.cc:1938
 hmdc34clfinder.cc:1939
 hmdc34clfinder.cc:1940
 hmdc34clfinder.cc:1941
 hmdc34clfinder.cc:1942
 hmdc34clfinder.cc:1943
 hmdc34clfinder.cc:1944
 hmdc34clfinder.cc:1945
 hmdc34clfinder.cc:1946
 hmdc34clfinder.cc:1947
 hmdc34clfinder.cc:1948
 hmdc34clfinder.cc:1949
 hmdc34clfinder.cc:1950
 hmdc34clfinder.cc:1951
 hmdc34clfinder.cc:1952
 hmdc34clfinder.cc:1953
 hmdc34clfinder.cc:1954
 hmdc34clfinder.cc:1955
 hmdc34clfinder.cc:1956
 hmdc34clfinder.cc:1957
 hmdc34clfinder.cc:1958
 hmdc34clfinder.cc:1959
 hmdc34clfinder.cc:1960
 hmdc34clfinder.cc:1961
 hmdc34clfinder.cc:1962
 hmdc34clfinder.cc:1963
 hmdc34clfinder.cc:1964
 hmdc34clfinder.cc:1965
 hmdc34clfinder.cc:1966
 hmdc34clfinder.cc:1967
 hmdc34clfinder.cc:1968
 hmdc34clfinder.cc:1969
 hmdc34clfinder.cc:1970
 hmdc34clfinder.cc:1971
 hmdc34clfinder.cc:1972
 hmdc34clfinder.cc:1973
 hmdc34clfinder.cc:1974
 hmdc34clfinder.cc:1975
 hmdc34clfinder.cc:1976
 hmdc34clfinder.cc:1977
 hmdc34clfinder.cc:1978
 hmdc34clfinder.cc:1979
 hmdc34clfinder.cc:1980
 hmdc34clfinder.cc:1981
 hmdc34clfinder.cc:1982
 hmdc34clfinder.cc:1983
 hmdc34clfinder.cc:1984
 hmdc34clfinder.cc:1985
 hmdc34clfinder.cc:1986
 hmdc34clfinder.cc:1987
 hmdc34clfinder.cc:1988
 hmdc34clfinder.cc:1989
 hmdc34clfinder.cc:1990
 hmdc34clfinder.cc:1991
 hmdc34clfinder.cc:1992
 hmdc34clfinder.cc:1993
 hmdc34clfinder.cc:1994
 hmdc34clfinder.cc:1995
 hmdc34clfinder.cc:1996
 hmdc34clfinder.cc:1997
 hmdc34clfinder.cc:1998
 hmdc34clfinder.cc:1999
 hmdc34clfinder.cc:2000
 hmdc34clfinder.cc:2001
 hmdc34clfinder.cc:2002
 hmdc34clfinder.cc:2003
 hmdc34clfinder.cc:2004
 hmdc34clfinder.cc:2005
 hmdc34clfinder.cc:2006
 hmdc34clfinder.cc:2007
 hmdc34clfinder.cc:2008
 hmdc34clfinder.cc:2009
 hmdc34clfinder.cc:2010
 hmdc34clfinder.cc:2011
 hmdc34clfinder.cc:2012
 hmdc34clfinder.cc:2013
 hmdc34clfinder.cc:2014