ROOT logo
//*--- Author : Vladimir Pechenov
//*--- Modified: 19.06.07 by V.Pechenov
//*--- Modified: 16.08.05 by V.Pechenov
//*--- Modified: 11.05.02 by V. Pechenov
//*--- Modified: 08.05.01 by V. Pechenov
//*--- Modified: 07.03.01 by V. Pechenov
//*--- Modified: 27.05.00 by V. Pechenov
//*--- Modified: 24.05.00 by V. Pechenov
//*--- Modified: 07.03.00 by R. Holzmann
//*--- Modified: 31.08.99 by V. Pechenov

using namespace std;
#include "hmdcsizescells.h"
#include "hspectrometer.h"
#include "hmdcgeomstruct.h"
#include <iostream> 
#include <iomanip>
#include "math.h"
#include "hgeomvolume.h"
#include "hgeomcompositevolume.h"
#include "hmdcgetcontainers.h"
#include "hmdclayergeompar.h"
#include "hmdcgeompar.h"
#include "hmdclookupraw.h"
#include "hmdclayercorrpar.h"
#include "hmdcrawstruct.h"
#include "hruntimedb.h"
#include "hspecgeompar.h"
#include <stdlib.h>

//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////////////////////////////////////////
//
//  HMdcSizesCells
//  HMdcSizesCellsSec
//  HMdcSizesCellsMod
//  HMdcSizesCellsLayer
//  HMdcSizesCellsCell
//
//  Creating the container and geting the pointer to cont.:
//  HMdcSizesCells* fSizesCells=HMdcSizesCells::getObject();
//
//  Geting the pointer to cont. (without creating):
//  HMdcSizesCells* fSizesCells=HMdcSizesCells::getExObject();
//
//  Deleting of container:
//  HMdcSizesCells::deleteCont();
//
//  Container class keep volumes sizes of wires (2-points/wire)
//  in coordinate system of sector and transformations layer<->mod,
//  layer<->sec, ...
//  It has same useful functions:
//  HMdcSizesCellsCell
//    Float_t getWireLength(void)
//
//  HMdcSizesCellsLayer:
//    HGeomTransform* getSecTrans();
//    HGeomTransform* getModTrans();
//    void transSecToRotLayer(HGeomVector& point);
//    Double_t getAlpha(const HGeomVector& p1, const HGeomVector& p2);
//    Double_t getDist(const HGeomVector& p1,
//                     const HGeomVector& p2, Int_t cell);
//    void getImpact(const HGeomVector& p1, const HGeomVector& p2,
//                  Int_t cell, Double_t &alpha, Double_t &per);
//    Double_t getImpact(Double_t x1,Double_t y1,Double_t z1,
//        Double_t x2,Double_t y2,Double_t z2, Int_t cell, Double_t &alphaPerp);
//    Bool_t getImpact(Double_t x1,Double_t y1,Double_t z1,
//        Double_t x2, Double_t y2, Double_t z2,
//        Int_t cell, Double_t &alphaDrDist, Double_t &driftDist);
//    Int_t getCellNum(Double_t x, Double_t y):
//      calculation the the cell number for the point x,y
//      on the wire plane. (x,y - in coor. sys. of layer, z=0)
//    Double_t getXSign(Double_t x1, Double_t y1, Double_t z1,
//        Double_t x2, Double_t y2, Double_t z2, Int_t cell)
//    Float_t getSignPath(Double_t x1,Double_t y1,Double_t z1,
//        Double_t x2, Double_t y2, Double_t z2, Int_t cell);
//    Float_t getSignPath(Double_t x1,Double_t y1,Double_t z1,
//        Double_t x2, Double_t y2, Double_t z2, Int_t cell, Float_t& outside);    
//
//  HMdcSizesCellsMod:
//    HGeomTransform* getSecTrans();
//
//  HMdcSizesCellsSec:
//    HGeomTransform* getLabTrans();
//
//  HMdcSizesCells:
//    Bool_t getCellVol(Int_t sec, Int_t mod, Int_t lay,
//        Int_t cell, HMdcTrap& volCell);
//    Char_t findReadOutSide(Int_t s,Int_t m,Int_t l,Int_t c)
//
//////////////////////////////////////////////////////////////////////////////

ClassImp(HMdcSizesCellsCell)
ClassImp(HMdcSizesCellsLayer)
ClassImp(HMdcSizesCellsMod)
ClassImp(HMdcSizesCellsSec)
ClassImp(HMdcSizesCells)
    
void HMdcSizesCellsCell::clear(void) {
  wirePnt1.clear();
  wirePnt2.clear();
  status      = kFALSE;
  xReadout    = 0.;
  readOutSide = '0';
  yWirePos    = 0.;
}

HMdcSizesCells* HMdcSizesCellsLayer::getSizesCells(void) {
  return pToMod->getSizesCells();
}

HMdcSizesCells* HMdcSizesCellsMod::getSizesCells(void) {
  return pToSec->getSizesCells();
}

HMdcSizesCells* HMdcSizesCellsSec::getSizesCells(void) {
  return pToSC;
}

HMdcSizesCellsLayer::HMdcSizesCellsLayer(void) {
  cellsArray = NULL;
  nCells     = 0;
  // Constructor
}

void HMdcSizesCellsLayer::initLayer(HMdcSizesCellsMod* pMod, Int_t lay) {
  // Constructor creates an array of pointers of type HMdcSizesCellsCell
  sector = pMod->getSec();
  module = pMod->getMod();
  layer  = lay;
  pToMod = pMod;
  HMdcGetContainers* fGetCont       = HMdcGetContainers::getObject();
  HMdcGeomStruct*    fMdcGeomStruct = fGetCont->getMdcGeomStruct();

  if(nCells==0 || nCells != ((*fMdcGeomStruct)[sector][module])[layer]) {
    nCells = ((*fMdcGeomStruct)[sector][module])[layer];
    if(cellsArray != NULL) delete [] cellsArray;
    if( nCells > 0 ) cellsArray = new HMdcSizesCellsCell [nCells];
    else             cellsArray = NULL;
  }
  firstCellPart2  = 777;  // 777 - no correction for this layer
  wireOffsetPart2 = 0.;
  cosWireOrPart2  = 0.;
  sinWireOrPart2  = 0.;
}

HMdcSizesCellsLayer::~HMdcSizesCellsLayer(void) {
  // destructor
  if(cellsArray) {
    delete [] cellsArray;
    cellsArray = NULL;
  }
}

Bool_t HMdcSizesCellsLayer::setSecTrans(Double_t corZ) {
  // alignTrans: coord. system of layer will transformed to "alignTrans" sys.
  HMdcGetContainers* fGetCont=HMdcGetContainers::getObject();
  if(!fGetCont) return kFALSE;
  sysRMod = fGetCont->getModTransLayer(sector,module,layer);
  
  fGetCont->getModTransGeantLayer(geantSysRMod,sector,module,layer);
  fGetCont->getSecTransGeantLayer(geantSysRSec,sector,module,layer);
  geantPlane.setPlanePar(geantSysRSec);

  HGeomVector vc(sysRMod.getTransVector());
  if(corZ!=0) { // For alignment.
    vc.setZ(vc.getZ()+corZ);
    sysRMod.setTransVector(vc);
  }
  zModule = vc.getZ();
  sysRSec = sysRMod;
  sysRSec.transFrom(*(pToMod->getSecTrans()));
  HMdcSizesCells::copyTransfToArr(sysRSec,tSysRSec);
  setPlanePar(sysRSec);
  
  HGeomRotation rotLay;
  rotLay.setUnitMatrix();
  rotLay.setElement( cosWireOr,0);
  rotLay.setElement(-sinWireOr,1);
  rotLay.setElement( sinWireOr,3);
  rotLay.setElement( cosWireOr,4);
  rotLaySysRMod.clear();
  rotLaySysRMod.setRotMatrix(rotLay);
  rotLaySysRMod.transFrom(sysRMod);
  rotLaySysRSec.clear();
  rotLaySysRSec.setRotMatrix(rotLay);
  rotLaySysRSec.transFrom(sysRSec);
  HMdcSizesCells::copyTransfToArr(rotLaySysRSec,tRLaySysRSec);
  pntToCell[0] = tRLaySysRSec[1]*invPitch;
  pntToCell[1] = tRLaySysRSec[4]*invPitch;
  pntToCell[2] = tRLaySysRSec[7]*invPitch;
  pntToCell[3] = cellOffset - invPitch*(tRLaySysRSec[1]*tRLaySysRSec[9]+tRLaySysRSec[4]*tRLaySysRSec[10]
                                       +tRLaySysRSec[7]*tRLaySysRSec[11]);
  
  if(firstCellPart2<nCells) {
    rotLay.setUnitMatrix();
    rotLay.setElement( cosWireOrPart2,0);
    rotLay.setElement(-sinWireOrPart2,1);
    rotLay.setElement( sinWireOrPart2,3);
    rotLay.setElement( cosWireOrPart2,4);
    rotLaySysRModPart2.clear();
    rotLaySysRModPart2.setRotMatrix(rotLay);
    rotLaySysRModPart2.transFrom(sysRMod);
    rotLaySysRSecPart2.clear();
    rotLaySysRSecPart2.setRotMatrix(rotLay);
    rotLaySysRSecPart2.transFrom(sysRSec);
    HMdcSizesCells::copyTransfToArr(rotLaySysRSecPart2,tRLaySysRSecPart2);
  } else {
    rotLaySysRModPart2 = rotLaySysRMod;
    rotLaySysRSecPart2 = rotLaySysRSec;
    HMdcSizesCells::copyTransfToArr(rotLaySysRSecPart2,tRLaySysRSecPart2);
  }
  
  return kTRUE;
}

Double_t HMdcSizesCellsLayer::calcWire(Double_t x, Double_t y) const{
  // return point on the layer plane in wire float number scale!
  Double_t yRot = y*cosWireOr-x*sinWireOr;
  Double_t wire = (wireOffset + yRot)*invPitch;
  if(Int_t(wire+0.5) >= firstCellPart2) {
    yRot = y*cosWireOrPart2-x*sinWireOrPart2;
    wire = (wireOffsetPart2 + yRot)*invPitch;
  }
  return wire;
}

Int_t HMdcSizesCellsLayer::calcCellNum(Double_t x, Double_t y) const{
  //  calculation the the cell number for the point x,y
  //  on the wire plane. (x,y - in coor. sys. of layer, z=0)
  Double_t wire  = calcWire(x,y) + 0.5;
  Int_t    nWire = (Int_t)wire;
  return (wire<0. || nWire>=nCells) ? -1:nWire;
}

Int_t HMdcSizesCellsLayer::distanceSign(const HMdcLineParam& ln, Int_t cell) const{
  // HMdcLineParam ln must be in sector coor.system
  // return +1 if line path OVER wire in layer(mdc,sector) coor.system
  // return -1 if line path UNDER wire in layer(mdc,sector) coor.system
  // return 0. if cell<0 or cell>=nCells in layer
  if(cell<0 || cell>=nCells) return 0;
  Double_t x,y,z;
  Int_t parSec = ln.getSec();
  if(parSec==sector || parSec<0) {
    calcIntersection(ln.x1(),ln.y1(),ln.z1(),ln.x2(),ln.y2(),ln.z2(), x,y,z);
  } else {
    HGeomVector p1,p2;
    HMdcSizesCells* pSCells = HMdcSizesCells::getObject();
    pSCells->transLineToOtherSec(ln,sector,p1,p2);
    calcIntersection(p1.X(),p1.Y(),p1.Z(),p2.X(),p2.Y(),p2.Z(), x,y,z);
  }
  transTo(x,y,z);
  Double_t wire = calcWire(x,y) - cell;
  return (wire >= 0.) ? 1 : -1;
}

Bool_t HMdcSizesCellsLayer::calcCrCellsGeantMdc(Float_t &x,Float_t &y,Float_t theta,Float_t phi,
                                             Int_t& c1, Int_t& c2) const {
  // Calculate cells crossed by GeantMdc hit (x,y,theta,phi) for mdc digitizer.
  // return kFALSE if no cells crossed
  // return x,y corrected to the layer plane
  
  // Correction for HGeantMdc hit Z position! (zGeantHit)
  Double_t dXY    = -zGeantHit * TMath::Tan(theta * TMath::DegToRad());
  Double_t sinPhi = TMath::Sin(phi * TMath::DegToRad());
  Double_t cosPhi = TMath::Cos(phi * TMath::DegToRad());
  y += dXY * sinPhi;
  x += dXY * cosPhi;
    
  Double_t dPt = halfCatDist * TMath::Tan(theta * TMath::DegToRad());
  Double_t yc1= y - dPt * sinPhi;
  Double_t yc2= y + dPt * sinPhi;
  Double_t xc1= x - dPt * cosPhi;
  Double_t xc2= x + dPt * cosPhi;
  Double_t fc1 = calcWire(xc1,yc1) + 0.5;
  Double_t fc2 = calcWire(xc2,yc2) + 0.5;
  if(fc1 <= fc2) {
    c1 = fc1 < 0. ? 0 : fc1;
    c2 = fc2;
  } else {
    c2 = fc1;
    c1 = fc2 < 0. ? 0 : fc2;
  }
  if(fc1 < 0. && fc2 < 0.) return kFALSE;
  if(c1 >= nCells)         return kFALSE;
  if(c2 >= nCells)         c2 = nCells-1;
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::calcCrossedCells(const HMdcLineParam& ln,Float_t& cell1, Float_t& cell2) const {
  // calculation of cells crossed by line "ln" 
  // ln - sector coordinate system
  Double_t tanAlpha;
  Double_t y = calcImpactParam(ln,tanAlpha);
  Double_t dCell = halfCatDist*tanAlpha*invPitch;
  Double_t cell = (wireOffset + y)*invPitch + 0.5;
  cell1 = cell - dCell;
  cell2 = cell + dCell;
  if(cell2 < 0.) return kFALSE;
  if(cell1 < 0.) cell1 = 0.;
  else if(Int_t(cell1+0.5) >= firstCellPart2) {
    y = calcImpactParam(ln,tanAlpha,kFALSE);
    Double_t dCell = halfCatDist*tanAlpha*invPitch;
    cell = (wireOffset + y)*invPitch + 0.5;
    cell1 = cell - dCell;
    cell2 = cell + dCell;
  } else if(Int_t(cell2+0.5) >= firstCellPart2) {
    y = calcImpactParam(ln,tanAlpha,kFALSE);
    Double_t dCell = halfCatDist*tanAlpha*invPitch;
    cell = (wireOffset + y)*invPitch + 0.5;
    cell2 = cell + dCell;
  }
  if(cell1 >= nCells) return kFALSE;
  if(cell2 >= nCells) cell2 = nCells-0.0001;//nCells-1;
  return kTRUE;
}

Double_t HMdcSizesCellsLayer::calcImpactParam(const HMdcLineParam& ln,Double_t &tanAlpha,
    Bool_t isLayerFirstPart) const {
  //  return: y of the cross point of line "ln" with layer in coor.sys. of rotated layer
  //  and abs(tanAlpha)- alpha is impact angle of "ln"
  Double_t y,z,dy,dz;
  const Double_t *t = isLayerFirstPart ? tRLaySysRSec : tRLaySysRSecPart2;
  rotateTo(t,ln.x1()-t[9],ln.y1()-t[10],ln.z1()-t[11],y,z);
  rotateTo(t,ln.getDir(),dy,dz);
  Double_t dYZ = dy/dz;
  tanAlpha = TMath::Abs(dYZ);
  return y-z*dYZ;  // y is on the layer plane
}

Bool_t HMdcSizesCellsLayer::calcCrossedCells(Double_t x1, Double_t y1, 
    Double_t z1, Double_t x2, Double_t y2, Double_t z2, 
    Float_t& cell1, Float_t& cell2) const {
  // calculation of cells crossed by line x1,y1,z1-x2,y2,z2
  // x1,y1,z1, x2,y2,z2 - sector coordinate system
  transTo(x1,y1,z1);
  transTo(x2,y2,z2);
  Double_t dX  = x2-x1;
  Double_t dY  = y2-y1;
  Double_t dZI = z2-z1;
  if(dZI==0.) return kFALSE;
  dZI          = 1/dZI;
  Double_t tmp = (halfCatDist-z1)*dZI;
  Double_t x   = tmp*dX+x1;
  Double_t y   = tmp*dY+y1;
  cell1        = calcWire(x,y) + 0.5;
  tmp          = (-halfCatDist-z1)*dZI;
  x            = tmp*dX+x1;
  y            = tmp*dY+y1;
  cell2        = calcWire(x,y) + 0.5;
  if(cell1>cell2) {
    Float_t c = cell1;
    cell1     = cell2;
    cell2     = c;
  }
  if(cell1<0.) {
    if(cell2<0.) return kFALSE;
    cell1 = 0.;
  }
  if(cell2>=nCells) {
    if(cell1>=nCells) return kFALSE;
    cell2 = nCells-0.0001;//nCells-1;
  }
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::calcCrossedCells(Double_t x1, Double_t y1, 
    Double_t z1, Double_t x2, Double_t y2, Double_t z2, 
    Int_t& firstCell, Int_t& lastCell, 
    Float_t &firstCellPath,Float_t &midCellPath,Float_t &lastCellPath) const {
  // calculation of cells crossed by line x1,y1,z1 - x2,y2,z2
  // x1,y1,z1, x2,y2,z2 - sector coordinate system
  //
  // return kTRUE if crossed cell number >=0 and < nCells_in_layer
  // return region of crossed cells: firstCell - lastCell
  // and track path in cells:
  // firstCellPath for cell=firstCell
  // midCellPath   for firstCell<cell<lastCell
  // lastCellPath  for cell=lastCell
  //
  // midCellPath  = 0 if one or two cells crossed only
  // lastCellPath = 0 if one cell crossed only
  //
  // Exmaple:
  //  HMdcSizesCells* pSizesCell;
  //  HMdcSizesCellsLayers &sizesCellsLayer = (*pSizesCell)[sector][module][layer];
  //  Int_t firstCell,lastCell; 
  //  Float_t firstCellPath,midCellPath,lastCellPath;
  //  if(sizesCellsLayer->calcCrossedCells(x1,y1,z1,x2,y2,z2,firstCell,lastCell, 
  //                                       firstCellPath,midCellPath,lastCellPath) {
  //    Float_t totalePathInLayer = 0.;
  //    for(Int_t c=firstCell;c<=lastCell;++c) {
  //      Float_t cellPath;
  //      if   (c == firstCell) cellPath = firstCellPath;
  //      else (c == lastCell)  cellPath = lastCellPath;
  //      else                  cellPath = midCellPath;
  //      totalePathInLayer += cellPath;
  //      .... 
  //    }
  //  }
  
  // Transform line to the layer coor.system:
  transTo(x1,y1,z1);
  transTo(x2,y2,z2);
  
  Double_t dZ = z2-z1;
  if(dZ == 0.) return kFALSE;
  Double_t dXdZ  = (x2-x1)/dZ;
  Double_t dYdZ  = (y2-y1)/dZ;

  Double_t layerPath = 2*halfCatDist*TMath::Sqrt(dXdZ*dXdZ + dYdZ*dYdZ + 1.); 
  Float_t  cl1 = calcWire(( halfCatDist-z1)*dXdZ+x1,( halfCatDist-z1)*dYdZ+y1) + 0.5;
  Float_t  cl2 = calcWire((-halfCatDist-z1)*dXdZ+x1,(-halfCatDist-z1)*dYdZ+y1) + 0.5;

  if(cl1>cl2) {
    Float_t c = cl1;
    cl1       = cl2;
    cl2       = c;
  }
  if(cl2 < 0. || Short_t(cl1) >= nCells) return kFALSE;
  
  firstCell     = cl1;
  lastCell      = cl2;
  firstCellPath = layerPath;
  midCellPath   = 0.;
  lastCellPath  = 0.;
  if(firstCell == lastCell) return kTRUE;  // return in one cell crossed only
  
  // Calc. path length in cells: 
  Double_t pathPerCell = layerPath/(cl2-cl1);
  firstCellPath = pathPerCell * (firstCell + 1. - cl1);
  lastCellPath  = pathPerCell * (cl2 - lastCell);
  
  // Check cell number boundaries:
  if(cl1<0.) {
    firstCell     = 0;
    firstCellPath = firstCell==lastCell ? lastCellPath : pathPerCell;
  }
  if(cl2>=nCells) {
    lastCell     = nCells-1;
    lastCellPath = pathPerCell;
  }
  if(firstCell == lastCell) lastCellPath = 0.;
  else if(lastCell - firstCell > 1) midCellPath = pathPerCell;
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::calcSegCrossCells(Double_t z,Double_t r,Double_t theta,Double_t phi,
    Int_t& firstCell, Int_t& lastCell, 
    Float_t &firstCellPath,Float_t &midCellPath,Float_t &lastCellPath) const {
  // calculation of cells crossed by line z,r,theta,phi (parameters of HMdcSeg)
  //    z,r [mm]   theta,phi [rad]
  //
  // return kTRUE if crossed cell number >=0 and < nCells_in_layer
  // return region of crossed cells: firstCell - lastCell
  // and track path in cells:
  // firstCellPath for cell=firstCell
  // midCellPath   for firstCell<cell<lastCell
  // lastCellPath  for cell=lastCell
  //
  // midCellPath  = 0 if one or two cells crossed only
  // lastCellPath = 0 if one cell crossed only
  //
  // Exmaple:
  //  HMdcSizesCells* pSizesCell;
  //  HMdcSizesCellsLayers &sizesCellsLayer = (*pSizesCell)[sector][module][layer];
  //  Int_t firstCell,lastCell; 
  //  Float_t firstCellPath,midCellPath,lastCellPath;
  //  if(sizesCellsLayer->calcCrossedCells(Zmin,Rmin,theta,phi,firstCell,lastCell, 
  //                                       firstCellPath,midCellPath,lastCellPath) {
  //    Float_t totalePathInLayer = 0.;
  //    for(Int_t c=firstCell;c<=lastCell;++c) {
  //      Float_t cellPath;
  //      if   (c == firstCell) cellPath = firstCellPath;
  //      else (c == lastCell)  cellPath = lastCellPath;
  //      else                  cellPath = midCellPath;
  //      totalePathInLayer += cellPath;
  //      .... 
  //    }
  //  }
  
  Double_t cosPhi = TMath::Cos(phi);
  Double_t sinPhi = TMath::Sin(phi);
  Double_t x      = -r*sinPhi;   
  Double_t y      =  r*cosPhi;
  Double_t dZ0    = TMath::Cos(theta);
  Double_t dxy    = TMath::Sqrt(1.-dZ0*dZ0);
  
  // Transform line to the layer coor.system:
  transTo(x,y,z);
  Double_t dX,dY,dZ;
  rotVectToLay(dxy*cosPhi,dxy*sinPhi,dZ0, dX,dY,dZ );
  
  if(dZ == 0.) return kFALSE;
  Double_t dXdZ  = dX/dZ;
  Double_t dYdZ  = dY/dZ;
  
  Double_t layerPath = 2*halfCatDist*TMath::Sqrt(dXdZ*dXdZ + dYdZ*dYdZ + 1.); 
  Float_t  cl1 = calcWire(( halfCatDist-z)*dXdZ+x,( halfCatDist-z)*dYdZ+y) + 0.5;
  Float_t  cl2 = calcWire((-halfCatDist-z)*dXdZ+x,(-halfCatDist-z)*dYdZ+y) + 0.5;
  
  if(cl1>cl2) {
    Float_t c = cl1;
    cl1       = cl2;
    cl2       = c;
  }
  if(cl2 < 0. || Short_t(cl1) >= nCells) return kFALSE;
  
  firstCell     = cl1;
  lastCell      = cl2;
  firstCellPath = layerPath;
  midCellPath   = 0.;
  lastCellPath  = 0.;
  if(firstCell == lastCell) return kTRUE;  // return in one cell crossed only 

  // Calc. path length in cells:  
  Double_t pathPerCell = layerPath/(cl2-cl1);
  firstCellPath = pathPerCell * (firstCell + 1. - cl1);
  lastCellPath  = pathPerCell * (cl2 - lastCell);
  
  // Check cell number boundaries:
  if(cl1<0.) {
    firstCell     = 0;
    firstCellPath = firstCell==lastCell ? lastCellPath : pathPerCell;
  }
  if(cl2>=nCells) {
    lastCell     = nCells-1;
    lastCellPath = pathPerCell;
  }
  
  if(firstCell == lastCell) lastCellPath = 0.;
  else if(lastCell - firstCell > 1) midCellPath = pathPerCell;
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::calcCrossedCellsPar(const HMdcLineParam& ln,Double_t extendCells,
  Int_t &c1,Int_t &c2,Int_t &c3,Double_t *al,Double_t *md,Double_t *st) const {

  // calculation of cells crossed by line "ln" 
  // ln - sector coordinate system
  Double_t dYZ;
  Double_t y     = calcImpactParam(ln,dYZ);
  Double_t cell  = (wireOffset + y)*invPitch + 0.5;
  Double_t dCell = halfCatDist*invPitch*dYZ + extendCells;
  
  if(cell + dCell < 0.) return kFALSE;                          // out of layer
  c1 = cell - dCell < 0. ? 0 : cell - dCell;
  if(c1 < firstCellPart2) {
    if(c1 >= nCells) return kFALSE;                             // out of layer
    Double_t p1s = 1./TMath::Sqrt(1.+dYZ*dYZ);
    st[0] = pitch*p1s;
    md[0] = (cellsArray[c1].getWirePos()-y)*p1s; 
    al[0] = calcAlphaImpact(dYZ); //TMath::ATan2(1.,dYZ)*TMath::RadToDeg();

    if(cell-dCell > 260.) return kFALSE;                        // out of layer
    c2 = cell + dCell  + 1;
    if(c2 <= firstCellPart2) {
      if(c2 > nCells) c2 = nCells;
      c3 = -1;
      return kTRUE;
    } else c2 = firstCellPart2;
  } else c1 = -1;
  
  y     = calcImpactParam(ln,dYZ,kFALSE);
  cell  = (wireOffsetPart2 + y)*invPitch + 0.5;
  dCell = halfCatDist*invPitch*dYZ + extendCells;
  
  if(c1 < 0) { // No crossed cells in first layer part:
    c2 = cell - dCell;
    if(c2 >=  nCells) return kFALSE;                            // out of layer
    if(c2 < firstCellPart2) c2 = firstCellPart2;
  }
  c3 = cell + dCell +1;
  if(c3 > nCells) c3 = nCells;
  
  Double_t p1s = 1./TMath::Sqrt(1.+dYZ*dYZ);
  st[1] = pitch*p1s;
  md[1] = (cellsArray[c2].getWirePos()-y)*p1s; 
  al[1] = calcAlphaImpact(dYZ); //TMath::ATan2(1.,dYZ)*TMath::RadToDeg();
  
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::calcCrossedCellsPar(const Double_t *v,Double_t extendCells,
     Int_t &c1,Int_t &c2,Int_t &c3,Double_t *al,Double_t *md,Double_t *st) const {
  // calculation of cells crossed by line "v"
  // v[0-2] = x,y,z - point of line
  //          dx,dy,dz - direction of line
  // v[3] = dx/dz;
  // v[4] = dy/dz;

  Double_t z   = v[2] - zModule;
  Double_t dYZ = cosWireOr*v[4] - sinWireOr*v[3];
  Double_t y   = cosWireOr*v[1] - sinWireOr*v[0] - z*dYZ;
  if(dYZ < 0.) dYZ = -dYZ;
  
  Double_t dCell = halfCDsDivPitch*dYZ + extendCells;
  if(dCell > 10.) return kFALSE;
  Double_t cell  = (wireOffset + y)*invPitch + 0.5;
  if(cell > 260. || cell < -20.) return kFALSE;

  Double_t maxCell = cell + dCell;
  if(maxCell < 0.) return kFALSE;                               // out of layer
  c1 = cell - dCell < 0. ? 0 : cell - dCell;
  if(c1 < firstCellPart2) {
    if(c1 >= nCells) return kFALSE;                             // out of layer
    Double_t p1s = 1./TMath::Sqrt(1.+dYZ*dYZ);
    st[0] = pitch*p1s;
    md[0] = (cellsArray[c1].getWirePos()-y)*p1s;
   
    al[0] = calcAlphaImpact(dYZ); //TMath::ATan2(1.,dYZ)*TMath::RadToDeg();
    c2 = maxCell  + 1;
    if(c2 <= firstCellPart2) {
      if(c2 >= nCells) c2 = nCells-1;
      c3 = -1;
      return kTRUE;
    } else c2 = firstCellPart2;
  } else c1 = -1;
  
  dYZ = cosWireOrPart2*v[4] - sinWireOrPart2*v[3];
  y   = cosWireOrPart2*v[1] - sinWireOrPart2*v[0] - z*dYZ;
  if(dYZ < 0.) dYZ = -dYZ;
  
  cell    = (wireOffsetPart2 + y)*invPitch + 0.5;
  dCell   = halfCDsDivPitch*dYZ + extendCells;
  maxCell = cell + dCell;
  
  if(c1 < 0) { // No crossed cells in first layer part:
    c2 = cell - dCell;
    if(c2 >=  nCells) return kFALSE;                            // out of layer
    if(c2 < firstCellPart2) c2 = firstCellPart2;
  }
  c3 = maxCell +1;
  if(c3 > nCells) c3 = nCells;
  
  Double_t p1s = 1./TMath::Sqrt(1.+dYZ*dYZ);
  st[1] = pitch*p1s;
  md[1] = (cellsArray[c2].getWirePos()-y)*p1s; 
  al[1] = calcAlphaImpact(dYZ); //TMath::ATan2(1.,dYZ)*TMath::RadToDeg();
  
  return kTRUE;
}

void HMdcSizesCellsLayer::transSecToRotLayer(Int_t c,HGeomVector& point) const {
  // transformation to coor. sys. of rotated layer from sector sys.
  point = getRotLaySysRSec(c).transTo(point);
}

Double_t HMdcSizesCellsLayer::getAlpha(Int_t c,const HGeomVector& p1,const HGeomVector& p2) const {
  // return the angle alpha (in degree) between projection of line p1-p2
  // on the Y-Z plane and Y axis in coor.sys. of wires in degree.
  // p1,p2 in coordinate system of sector.
  const HGeomTransform& trans = getRotLaySysRSec(c);
  HGeomVector tranP1(trans.transTo(p1));
  HGeomVector tranP2(trans.transTo(p2));
  return TMath::ATan2( TMath::Abs(tranP2.getZ()-tranP1.getZ()),
                       TMath::Abs(tranP2.getY()-tranP1.getY()) )*TMath::RadToDeg();
}

Double_t HMdcSizesCellsLayer::getDist(const HGeomVector& p1,const HGeomVector& p2,Int_t cell){
  // return the minimal distance from line (p1-p2) to wire.
  // p1,p2 are in coordinate system of sector.
  const HGeomTransform& trans = getRotLaySysRSec(cell);
  HGeomVector tranP1(trans.transTo(p1));
  HGeomVector tranP2(trans.transTo(p2));
  Double_t yWire = cellsArray[cell].getWirePos();
  Double_t y1    = tranP1.getY() - yWire;
  Double_t y2    = tranP2.getY() - yWire;
  Double_t dz    = tranP1.getZ() - tranP2.getZ();
  Double_t dy    = y1-y2;
  return TMath::Abs((tranP1.getZ()*y2-tranP2.getZ()*y1)/TMath::Sqrt(dz*dz+dy*dy));
}

void HMdcSizesCellsLayer::getImpact(const HGeomVector& p1,const HGeomVector& p2,Int_t cell,
                                    Double_t &alpha,Double_t &minDist) const {
  // calc. the angle alpha (in degree) between projection of line p1-p2
  // on the Y-Z plane and Y axis in coor.sys. of wire (y=z=0) and
  // the minimal distance from line (p1-p2) to wire.
  // p1,p2 - in sector coor.sys.
  const HGeomTransform& trans = getRotLaySysRSec(cell);
  HGeomVector tranP1(trans.transTo(p1));
  HGeomVector tranP2(trans.transTo(p2));
  Double_t yWire = cellsArray[cell].getWirePos();
  Double_t y1    = tranP1.getY() - yWire;
  Double_t y2    = tranP2.getY() - yWire;
  Double_t dz    = tranP2.getZ() - tranP1.getZ();
  Double_t dy    = y2-y1;
  Double_t lng   = 1./TMath::Sqrt(dz*dz+dy*dy);
  alpha          = TMath::ASin(TMath::Abs(dz)*lng)*TMath::RadToDeg();
  minDist        = TMath::Abs((tranP1.getZ()*y2-tranP2.getZ()*y1)*lng);
}

Double_t HMdcSizesCellsLayer::getImpactLSys(const HGeomVector& p1l,const HGeomVector& p2l,
                                            Int_t cell, Double_t &alpha,Int_t& distSign) const {
  // p1l,p2l - in ROTATED LAYER COOR.SYS.!!!
  // calc. the angle alpha (in degree) between projection of line p1-p2
  // on the Y-Z plane and Y axis in coor.sys. of wire (y=z=0) and
  // the minimal distance from line (p1-p2) to wire.
  Double_t dz = p2l.getZ() - p1l.getZ();
  Double_t dy = p2l.getY() - p1l.getY();
  Double_t y  = p1l.getY() - cellsArray[cell].getWirePos();
  Double_t z  = p1l.getZ();
  distSign    = y >= z*dy/dz ? +1 : -1;   // For derivatives calculation in alignment
  alpha       = calcAlphaImpact(dy/dz); //TMath::ATan2(TMath::Abs(dz),TMath::Abs(dy))*TMath::RadToDeg();
  return TMath::Abs((y*dz-z*dy)/TMath::Sqrt(dz*dz+dy*dy));
}

Double_t HMdcSizesCellsLayer::getImpact(
    Double_t x1,Double_t y1,Double_t z1,
    Double_t x2,Double_t y2,Double_t z2, Int_t cell,Double_t &alpha) const {
  // calc. the angle alpha (in degree) between projection of line
  // x1,y1,z1-x2,y2,z2 on the Y-Z plane and Y axis in coor.sys.
  // of wires and the minimal distance from line x1,y1,z1-x2,y2,z2
  // to wire.
  // x1,y1,z1,x2,y2,z2 - in sector coor.sys. 
  Double_t y,z,dy,dz;
  const Double_t *transArr = getRLSysRSec(cell);
  rotateTo(transArr,x1-transArr[9],y1-transArr[10],z1-transArr[11],y,z);
  y -= cellsArray[cell].getWirePos();
  rotateTo(transArr,x2-x1,y2-y1,z2-z1,dy,dz);
  alpha = calcAlphaImpact(dy/dz); //TMath::ATan2(TMath::Abs(dz),TMath::Abs(dy))*TMath::RadToDeg();
  return TMath::Abs((y*dz-z*dy)/TMath::Sqrt(dz*dz+dy*dy));
}

Bool_t HMdcSizesCellsLayer::getImpact(Double_t x1, Double_t y1, Double_t z1,
                                      Double_t x2, Double_t y2, Double_t z2,
    Int_t cell, Double_t &alpha, Double_t &minDist) const {
  // return kTRUE if line x1,y1,z1-x2,y2,z2 intersect cell or kFALSE
  // if not intersect and calc. the angle alpha (in degree) between projection
  // of the line  x1,y1,z1-x2,y2,z2 on the Y-Z plane and Y axis in coor.
  // sys. of wires and the minimal distance from line x1,y1,z1-x2,y2,z2
  // to wire.
  // x1,y1,z1,x2,y2,z2 - in sector coor.sys.
  Double_t y,z,dy,dz;
  const Double_t *transArr = getRLSysRSec(cell);
  rotateTo(transArr,x1-transArr[9],y1-transArr[10],z1-transArr[11],y,z);
  y -= cellsArray[cell].getWirePos();
  rotateTo(transArr,x2-x1,y2-y1,z2-z1,dy,dz);
  
  Double_t lng   = 1./TMath::Sqrt(dz*dz+dy*dy);
  Double_t yDist = TMath::Abs(y*dz-z*dy); // abs(Ywire-Ycross_track)=yDist/dz
  minDist = yDist*lng;
  dz      = TMath::Abs(dz);
  dy      = TMath::Abs(dy);
  alpha   = calcAlphaImpact(dy/dz); //TMath::ATan2(dz,dy)*TMath::RadToDeg();
  if(minDist*dz*lng > halfPitch) {
    if(dy==0.0) return kFALSE;
    if((yDist-halfPitch*dz)/dy > halfCatDist)  return kFALSE;
  } else if(minDist*dy*lng > halfCatDist &&    // dy*lng = cos(alpha)
      (yDist-halfCatDist*dy)/dz > halfPitch) return kFALSE;
  return kTRUE;
}

Double_t HMdcSizesCellsLayer::getXSign(Double_t x1, Double_t y1,
    Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const {
  // return X position of the signal on the wire in coor. sys. of this wire
  // (Ywire=0, Zwire=0), x1,y1,z1 & x2,y2,z2 - track in sector coor.system
  Double_t x,y,z;
  const Double_t *transArr = getRLSysRSec(cell);
  rotateTo(transArr,x1-transArr[9],y1-transArr[10],z1-transArr[11],x,y,z);
  y -= cellsArray[cell].getWirePos();
  Double_t dx,dy,dz;
  rotateTo(transArr,x2-x1,y2-y1,z2-z1,dx,dy,dz);
  return x-(z*dz+y*dy)/(dz*dz+dy*dy)*dx;
}

Float_t HMdcSizesCellsLayer::getSignPath(Double_t x1, Double_t y1, Double_t z1,
    Double_t x2, Double_t y2, Double_t z2, Int_t cell) const {
  // return the path of signal along wire number "cell"
  // x1,y1,z1 & x2,y2,z2 - track in sector coor.system
  // Path can be <0. or > wire_length !!!
  // For GEANT data and don't connected wires return 0.
  HMdcSizesCellsCell& fCell = cellsArray[cell];
  if(!&fCell || fCell.getReadoutSide()=='0') return 0.;
  Float_t x = getXSign(x1, y1,z1, x2, y2, z2,cell);
  return fCell.getSignPath(x);
}

Double_t HMdcSizesCellsLayer::getXSign(const HMdcLineParam& ln,Int_t cell) const {
  // return X position of the signal on the wire in coor. sys. of this wire
  // (Ywire=0, Zwire=0), "ln" - track in sector coor.system
  Double_t x,y,z,dx,dy,dz;
  Int_t parSec = ln.getSec();
  if(parSec==sector || parSec<0) {
    const Double_t *trans = getRLSysRSec(cell);
    rotateTo(trans,ln.x1()-trans[9],ln.y1()-trans[10],ln.z1()-trans[11],x,y,z);
    y -= cellsArray[cell].getWirePos();
    rotateTo(trans,ln.getDir(),dx,dy,dz);
  } else {
    HGeomTransform rotLSysROtherSec;
    getRotLSysForOtherSecSys(parSec,cell,rotLSysROtherSec);
    const HGeomRotation& rot = rotLSysROtherSec.getRotMatrix();
    const HGeomVector&   trn = rotLSysROtherSec.getTransVector();
    HMdcSizesCells::rotateXYZ(rot,ln.x1()-trn(0),ln.y1()-trn(1),ln.z1()-trn(2),x,y,z);
    y -= cellsArray[cell].getWirePos();
    HMdcSizesCells::rotateDir(rot,ln.getDir(),dx,dy,dz);
  }
  return x-(z*dz+y*dy)/(dz*dz+dy*dy)*dx;
}

Double_t HMdcSizesCellsLayer::getSignPath(const HMdcLineParam& ln,
    Int_t cell) const {
  // return the path of signal along wire number "cell"
  // "ln" - track in sector coor.system
  // Path can be <0. or > wire_length !!!
  // For GEANT data and don't connected wires return 0.
  HMdcSizesCellsCell& fCell = cellsArray[cell];
  if(!&fCell || fCell.getReadoutSide()=='0') return 0.;
  Double_t x = getXSign(ln,cell);
  return fCell.getSignPath(x);
}

Float_t HMdcSizesCellsLayer::getSignPath(Double_t x1, Double_t y1, Double_t z1,
    Double_t x2, Double_t y2, Double_t z2, Int_t cell, Float_t& outside) const {
  // return the path of signal along wire number "cell"
  // x1,y1,z1 & x2,y2,z2 - track in sector coor.system
  // For GEANT data and don't connected wires return 0.
  //
  // outside:
  // if(path<0) outside=-path;
  // else if(path>wire_length) outside=path-wire_length;
  // else outside=0;
  //
  // path-outside give new path which >=0. and <=wire_length)

  HMdcSizesCellsCell& fCell = cellsArray[cell];
  if(!&fCell || fCell.getReadoutSide()=='0') {
    outside = 0.;
    return 0.;
  }
  
  Float_t x    = getXSign(x1, y1,z1, x2, y2, z2,cell);
  Float_t path = fCell.getSignPath(x);
  if(path<0.) outside = path;
  else if(path>fCell.getWireLength()) outside = path-fCell.getWireLength();
  else outside=0.;
  return path;
}

Bool_t HMdcSizesCellsLayer::getDriftDist(Double_t xP1,Double_t yP1,Double_t zP1,
    Double_t xP2, Double_t yP2, Double_t zP2,
    Int_t cell, Double_t &alphaDrDist, Double_t &driftDist) const {
  //
  // return kTRUE if line p1-p2 intersect cell or kFALSE if not intersect
  // calc. the angle driftAlpha (in degree) and drift distance in cell
  // from line (p1-p2) to wire.
  // p1,p2 - in sector coor.sys.
  // 1)
  //    Z^
  //     |  |------------*----|
  //     |  | cell        *   |
  //     |  |            / *  |
  //     |  |           /90 * |
  //     |  | driftDist/     *|
  //     |  |         /       *
  //   --|--|--------*^-----/-|*--------->
  //     |  |              /  | *        Y
  //     |  |      alphaDrDist|  *
  //        |                 |   *
  //        |                 |    *
  //        |-----------------|     * track
  //
  // 2)             *** 90
  //    Z^             ***
  //     |  |----------:--***-|
  //     |  | cell     :  /  ***
  //     |  |         :  /    | ***  track
  //     |  |         : /     |    ***
  //     |  | driftDist/      |
  //     |  |        :/       |
  //   --|--|--------*^-------|---------->
  //     |  |         |       |          Y
  //     |  |                 |  alphaDrDist ???
  //        |                 |
  //        |                 |
  //        |-----------------|
  //
  //
  // 3)                        *
  //                            *
  //    Z^                     / * <-- no eg. 90 deg. !
  //     |  |-----------------/   *
  //     |  | cell           /|    *
  //     |  |               / |     *
  //     |  |              /  |      *
  //     |  |   driftDist /   |       *
  //     |  |            /    |        *track
  //     |  |           /     |         *
  //     |  |          /      |          *
  //     |  |         /       |      Alpha*
  //   --|--|--------*^-------|------------->
  //     |  |         |       |          Y
  //     |  |      alphaDrDist|
  //        |                 |
  //        |                 |
  //        |                 |
  //        |                 |
  //        |                 |
  //        |                 |
  //        |-----------------|

  Double_t y1,y2,z1,z2;
  const Double_t *trans = getRLSysRSec(cell);
  rotateTo(trans,xP1-trans[9],yP1-trans[10],zP1-trans[11],y1,z1);
  rotateTo(trans,xP2-trans[9],yP2-trans[10],zP2-trans[11],y2,z2);
  Double_t yWire = cellsArray[cell].getWirePos();
  y1 -= yWire;
  y2 -= yWire;
      
  Double_t dz       = TMath::Abs(z1-z2);
  Double_t dy       = TMath::Abs(y1-y2);
  Double_t length   = TMath::Sqrt(dz*dz+dy*dy);
  Double_t ctgAlpha = dy/dz;
  Double_t sinAlpha = dz/length;
  Double_t yDist    = TMath::Abs((z1*y2-z2*y1)/dz);
  driftDist   = yDist*sinAlpha;
  alphaDrDist = TMath::ATan2(dz,dy)*TMath::RadToDeg();
  if(driftDist*sinAlpha > halfPitch) {
    Double_t z = (dy != 0.0) ? ((yDist-halfPitch)/ctgAlpha) : 1.E+10;
    if(z <= halfCatDist)  {
      driftDist   = TMath::Sqrt(halfPitch*halfPitch+z*z);
      alphaDrDist = TMath::ATan2((Double_t)halfPitch,z)*TMath::RadToDeg();
    } else {
      Double_t tgADrDist=halfCatDist/halfPitch;
      alphaDrDist = 90.-TMath::ATan(tgADrDist)*TMath::RadToDeg();
      driftDist   = yDist/(TMath::Abs(ctgAlpha*tgADrDist)+1.) * TMath::Sqrt(1+tgADrDist*tgADrDist);
      return kFALSE;
    }
  } else if(driftDist*dy/length > halfCatDist) { // dy/length = cos(alpha)
    Double_t y = yDist-halfCatDist*ctgAlpha;
    if(y <= halfPitch) {
      driftDist   = TMath::Sqrt(y*y+halfCatDist*halfCatDist);
      alphaDrDist = TMath::ATan2(y,(Double_t)halfCatDist)*TMath::RadToDeg();
    } else {
      Double_t tgADrDist = halfCatDist/halfPitch;
      alphaDrDist = 90.-TMath::ATan(tgADrDist)*TMath::RadToDeg();
      driftDist   = yDist/(TMath::Abs(ctgAlpha*tgADrDist)+1.) * TMath::Sqrt(1+tgADrDist*tgADrDist);
      return kFALSE;
    }
  }
  return kTRUE;
}

void HMdcSizesCellsLayer::calcInOtherSecSys(const HMdcLineParam& ln,Int_t cell,
    Double_t &y,Double_t &z,Double_t &dy,Double_t &dz) const {
  // if "ln"  is in another sector coor.sys
  Int_t parSec = ln.getSec();
  HGeomTransform rotLSysROtherSec;
  getRotLSysForOtherSecSys(parSec,cell,rotLSysROtherSec);

  const HGeomRotation& rot = rotLSysROtherSec.getRotMatrix();
  const HGeomVector&   trn = rotLSysROtherSec.getTransVector();
  HMdcSizesCells::rotateYZ(rot,ln.x1()-trn(0),ln.y1()-trn(1),ln.z1()-trn(2),y,z);
  y -= cellsArray[cell].getWirePos();
  HMdcSizesCells::rotateDir(rot,ln.getDir(),dy,dz);
}

void HMdcSizesCellsLayer::getRotLSysForOtherSecSys(Int_t othSec,Int_t cell,
                                                   HGeomTransform& trans) const {
  trans = cell<firstCellPart2 ? rotLaySysRSec : rotLaySysRSecPart2;
  
  HMdcSizesCells*    pSCells     = HMdcSizesCells::getObject();
  HMdcSizesCellsSec& pSCellsSec0 = (*pSCells)[sector];
  const HGeomTransform* tr0 = pSCellsSec0.getLabTrans();
  trans.transFrom(*tr0);  // trans. to lab.
  
  HMdcSizesCellsSec&    pSCellsSec1 = (*pSCells)[othSec];
  const HGeomTransform* tr1         = pSCellsSec1.getLabTrans();
  trans.transTo(*tr1);   // trans. to another sector
}

void HMdcSizesCellsLayer::print(void) const {
  printf("HMSCLayer: %iS %iM %iL, %i cells, cat.dist=%5.2f, pitch=%f, ang.=%6.3f\n",
      sector+1,module+1,layer+1,nCells,halfCatDist*2,pitch,
      TMath::ASin(sinWireOr)*TMath::RadToDeg());
  if(firstCellPart2<nCells) printf("  Part2 from %i cell ang.=%6.3f\n",firstCellPart2+1,
      TMath::ASin(sinWireOrPart2)*TMath::RadToDeg());
  printf("\n");
}

HMdcSizesCellsMod::HMdcSizesCellsMod(HMdcSizesCellsSec* pSec, Int_t mod) {
  // constructor
  sector = pSec->getSector();
  module = mod;
  pToSec = pSec;
  for (Int_t layer=0; layer<6; layer++) mdcSCLayers[layer].initLayer(this,layer);
}

HMdcSizesCellsMod::~HMdcSizesCellsMod(void) {
  // destructor
}

Bool_t HMdcSizesCellsMod::setSecTrans(const HGeomTransform * alignTrans,
    Int_t sysOfAlignTrans) {
  if(!HMdcGetContainers::getObject()->getSecTransMod(sysRSec,sector,module))
    return kFALSE;
  if(alignTrans) {
    if(sysOfAlignTrans==0) {
      sysRSec.transTo(*alignTrans);
      HMdcSizesCells::getExObject()->setGeomModifiedFlag();
    } else if(sysOfAlignTrans==1) {
      HGeomTransform alSys=(*alignTrans);
      alSys.transFrom(sysRSec);
      sysRSec=alSys;
      HMdcSizesCells::getExObject()->setGeomModifiedFlag();
    } else if(sysOfAlignTrans==2) {
      sysRSec.transFrom(pToSec->getLabTransform());
      sysRSec.transTo(*alignTrans);
      sysRSec.transTo(pToSec->getLabTransform());
      HMdcSizesCells::getExObject()->setGeomModifiedFlag();
    }
  }
  HMdcSizesCells::copyTransfToArr(sysRSec,tSysRSec);
  tSysRSecOp[ 0] = tSysRSec[0];
  tSysRSecOp[ 1] = tSysRSec[3];
  tSysRSecOp[ 2] = tSysRSec[6];
  tSysRSecOp[ 3] = tSysRSec[1];
  tSysRSecOp[ 4] = tSysRSec[4];
  tSysRSecOp[ 5] = tSysRSec[7];
  tSysRSecOp[ 6] = tSysRSec[2];
  tSysRSecOp[ 7] = tSysRSec[5];
  tSysRSecOp[ 8] = tSysRSec[8];
  tSysRSecOp[ 9] = -tSysRSec[0]*tSysRSec[ 9]-tSysRSec[3]*tSysRSec[10]-tSysRSec[6]*tSysRSec[11];
  tSysRSecOp[10] = -tSysRSec[1]*tSysRSec[ 9]-tSysRSec[4]*tSysRSec[10]-tSysRSec[7]*tSysRSec[11];
  tSysRSecOp[11] = -tSysRSec[2]*tSysRSec[ 9]-tSysRSec[5]*tSysRSec[10]-tSysRSec[8]*tSysRSec[11];
  setPlanePar(sysRSec);
  ct[0] = (tSysRSec[0]-tSysRSec[6]*parA);
  ct[1] = (tSysRSec[3]-tSysRSec[6]*parB);
  ct[2] = tSysRSec[6]*(parD-parB*tSysRSec[10]-tSysRSec[11]-parA*tSysRSec[9]);
  ct[3] = (tSysRSec[1]-tSysRSec[7]*parA);
  ct[4] = (tSysRSec[4]-tSysRSec[7]*parB);
  ct[5] = tSysRSec[7]*(parD-parB*tSysRSec[10]-tSysRSec[11]-parA*tSysRSec[9]);
  return kTRUE;
}

void HMdcSizesCellsMod::calcMdcHit(Double_t x1, Double_t y1, Double_t z1,
      Double_t x2, Double_t y2, Double_t z2,
      Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2,
      Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2,
      Double_t& x, Double_t& eX, Double_t& y, Double_t& eY,
      Double_t& xDir, Double_t& eXDir, Double_t& yDir, Double_t& eYDir) const {
  // Calcul. a cross of the line with plane MDC (parA*x+parB*y+c*z=parD),
  // transform. this point to mdc coor.sys. (z=0) and calc.
  // hit direction in mdc coor.sys. and errors
  //
  // Input param:
  // x1,y1,z1 - target or point on plane
  // x2,y2,z2 - point on plane
  // eX1,eY1,eZ1, eX2,eY2 - errors (eZ2=0!)
  // dZ2dX2 = -A2  where A2 - plane param. (z2=D2-A2*x2+B2*y2)
  // dZ2dY2 = -B2  where B2 - plane param. (z2=D2-A2*x2+B2*y2)
  // If P1-on plane
  //   eZ1=0;
  //   dZ1dX1 = -A1  where A1 - plane param. (z1=D1-A1*x1+B1*y1)
  //   dZ1dY1 = -B1  where B1 - plane param. (z1=D1-A1*x1+B1*y1)
  // If P1-target:
  //   dZ1dX1 = dZ1/dY1 = 0;
  //---Cross-----------------------------------------------
  Double_t dX   = x2-x1;
  Double_t dY   = y2-y1;
  Double_t dZ   = z2-z1;
  Double_t cxz1 = parD-z1-parA*x1;
  Double_t cxz2 = parD-z2-parA*x2;
  Double_t cyz1 = parD-z1-parB*y1;
  Double_t cyz2 = parD-z2-parB*y2;
  Double_t del  = 1/(parA*dX+parB*dY+dZ);
  Double_t xt0  = (x2*cyz1 - x1*cyz2)*del;
  Double_t yt0  = (y2*cxz1 - y1*cxz2)*del;
  Double_t xt   = xt0-tSysRSec[ 9];
  Double_t yt   = yt0-tSysRSec[10];
  x = ct[0]*xt+ct[1]*yt+ct[2];
  y = ct[3]*xt+ct[4]*yt+ct[5];
  // - Errors - - - - - - - - - - - - - - - - -
  Double_t x1t    = x1-xt0;
  Double_t y1t    = y1-yt0;
  Double_t xt2    = xt0-x2;
  Double_t yt2    = yt0-y2;
  Double_t xtA    = xt0*parA;
  Double_t ytB    = yt0*parB;
  Double_t dXtdX2 = x1t*dZ2dX2+cyz1-xtA;
  Double_t dYtdY2 = y1t*dZ2dY2+cxz1-ytB;
  Double_t dXtdX1 = xt2*dZ1dX1-cyz2+xtA;
  Double_t dYtdY1 = yt2*dZ1dY1-cxz2+ytB;
  Double_t dXtdY2 = x1t*(dZ2dY2+parB);
  Double_t dYtdX2 = y1t*(dZ2dX2+parA);
  Double_t dXtdY1 = xt2*(dZ1dY1+parB);
  Double_t dYtdX1 = yt2*(dZ1dX1+parA);
  Double_t dXtdZ1 = xt2;
  Double_t dYtdZ1 = yt2;
  Double_t dXdX1  = (ct[0]*dXtdX1+ct[1]*dYtdX1)*eX1;
  Double_t dYdX1  = (ct[3]*dXtdX1+ct[4]*dYtdX1)*eX1;
  Double_t dXdY1  = (ct[0]*dXtdY1+ct[1]*dYtdY1)*eY1;
  Double_t dYdY1  = (ct[3]*dXtdY1+ct[4]*dYtdY1)*eY1;
  Double_t dXdX2  = (ct[0]*dXtdX2+ct[1]*dYtdX2)*eX2;
  Double_t dYdX2  = (ct[3]*dXtdX2+ct[4]*dYtdX2)*eX2;
  Double_t dXdY2  = (ct[0]*dXtdY2+ct[1]*dYtdY2)*eY2;
  Double_t dYdY2  = (ct[3]*dXtdY2+ct[4]*dYtdY2)*eY2;
  Double_t dXdZ1  = (ct[0]*dXtdZ1+ct[1]*dYtdZ1)*eZ1;
  Double_t dYdZ1  = (ct[3]*dXtdZ1+ct[4]*dYtdZ1)*eZ1;
  eX = TMath::Sqrt(dXdX1*dXdX1+dXdY1*dXdY1+dXdZ1*dXdZ1+dXdX2*dXdX2+dXdY2*dXdY2)*del;
  eY = TMath::Sqrt(dYdX1*dYdX1+dYdY1*dYdY1+dYdZ1*dYdZ1+dYdX2*dYdX2+dYdY2*dYdY2)*del;
  //---Hit direction----------------------------------------------------
  Double_t length = 1/TMath::Sqrt(dX*dX+dY*dY+dZ*dZ);
  dX  *= length; // unit vector
  dY  *= length;
  dZ  *= length;
  xDir = tSysRSec[0]*dX+tSysRSec[3]*dY+tSysRSec[6]*dZ;
  yDir = tSysRSec[1]*dX+tSysRSec[4]*dY+tSysRSec[7]*dZ;
  // - Errors - - - - - - - - - - - - - - - - -
  Double_t c0xx   = (tSysRSec[0]-xDir*dX);
  Double_t c3xy   = (tSysRSec[3]-xDir*dY);
  Double_t c6xz   = (tSysRSec[6]-xDir*dZ);
  Double_t c1yx   = (tSysRSec[1]-yDir*dX);
  Double_t c4yy   = (tSysRSec[4]-yDir*dY);
  Double_t c7yz   = (tSysRSec[7]-yDir*dZ);
  Double_t dXDdX2 = (c0xx+c6xz*dZ2dX2)*eX2;
  Double_t dXDdY2 = (c3xy+c6xz*dZ2dY2)*eY2;
  Double_t dXDdX1 = (c0xx+c6xz*dZ1dX1)*eX1; // *(-1)
  Double_t dXDdY1 = (c3xy+c6xz*dZ1dY1)*eY1; // *(-1)
  Double_t dXDdZ1 =       c6xz        *eZ1; // *(-1)
  Double_t dYDdX2 = (c1yx+c7yz*dZ2dX2)*eX2;
  Double_t dYDdY2 = (c4yy+c7yz*dZ2dY2)*eY2;
  Double_t dYDdX1 = (c1yx+c7yz*dZ1dX1)*eX1; // *(-1)
  Double_t dYDdY1 = (c4yy+c7yz*dZ1dY1)*eY1; // *(-1)
  Double_t dYDdZ1 =       c7yz        *eZ1; // *(-1)
  eXDir = TMath::Sqrt(dXDdX2*dXDdX2+dXDdY2*dXDdY2+
                      dXDdX1*dXDdX1+dXDdY1*dXDdY1+dXDdZ1*dXDdZ1)*length;
  eYDir = TMath::Sqrt(dYDdX2*dYDdX2+dYDdY2*dYDdY2+
                      dYDdX1*dYDdX1+dYDdY1*dYDdY1+dYDdZ1*dYDdZ1)*length;
}

HMdcSizesCellsSec::HMdcSizesCellsSec(HMdcSizesCells* pSC, Int_t sec) {
  // constructor creates an array of pointers of type
  // HMdcSizesCellsMod
  sector     = sec;
  array      = new TObjArray(4);
  mdcStatSec = pSC->modStatusArr(sector);
  pToSC      = pSC;
  targets    = 0;
  for (Int_t mod=0; mod<4; mod++) if(mdcStatSec[mod])
      (*array)[mod] = new HMdcSizesCellsMod(this,mod);
}

HMdcSizesCellsSec::~HMdcSizesCellsSec(void) {
  // destructor
  if(array) {
    array->Delete();
    delete array;
    array = 0;
  }
  if(targets) delete [] targets;
  targets=0;
}

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

HMdcSizesCells* HMdcSizesCells::fMdcSizesCells=0;

HMdcSizesCells::HMdcSizesCells(void) {
  // constructor creates an array of pointers of type HMdcSizesCellsSec
  fGetCont       = HMdcGetContainers::getObject();
  fLayerGeomPar  = fGetCont->getMdcLayerGeomPar();
  fGeomPar       = fGetCont->getMdcGeomPar();
  fSpecGeomPar   = fGetCont->getSpecGeomPar();
  fMdcGeomStruct = fGetCont->getMdcGeomStruct();
  fMdcRawStruct  = fGetCont->getMdcRawStruct();
  fLayerCorrPar  = fGetCont->getMdcLayerCorrPar();
  if (!fMdcRawStruct->isStatic() || !HMdcGetContainers::isInited(fMdcRawStruct))
      ((HParSet*)fMdcRawStruct)->init(); //Needs explicit initialization 
  fMdcLookupRaw = (HMdcLookupRaw*)gHades->getRuntimeDb()->getContainer("MdcLookupRaw");
  changed      = kFALSE;
  geomModified = kFALSE;
  array        = new TObjArray(6);
  for(Int_t i=0;i<3;i++) verLayerGeomPar[i]=verGeomPar[i]=verLookupRaw[i]=-111111;
  numTargets   = 0;
  targets      = NULL;
  tarHalfThick = NULL;
  return;
}

HMdcSizesCells::~HMdcSizesCells(void) {
  // destructor
  if(array) {
    array->Delete();
    delete array;
    array = NULL;
  }
  HMdcGetContainers::deleteCont();
  if(targets) delete [] targets;
  if(tarHalfThick) delete [] tarHalfThick;
  targets      = NULL;
  tarHalfThick = NULL;
}

Bool_t HMdcSizesCells::initContainer(void) {
  if( !fMdcGeomStruct || !HMdcGetContainers::isInited(fLayerGeomPar)
      || !HMdcGetContainers::isInited(fGeomPar)
      || !HMdcGetContainers::isInited(fMdcLookupRaw)
      || !HMdcGetContainers::isInited(fMdcRawStruct) 
      || !HMdcGetContainers::isInited(fLayerCorrPar) ) return kFALSE;
  if( array==NULL || fLayerGeomPar->hasChanged() || fGeomPar->hasChanged() ||
      fMdcLookupRaw->hasChanged() || fLayerCorrPar->hasChanged()) {
    for(Int_t i=1; i<3; i++) {
      if( array!=NULL &&
         fLayerGeomPar->getInputVersion(i) == verLayerGeomPar[i] &&
         fGeomPar->     getInputVersion(i) == verGeomPar[i] &&
         fMdcLookupRaw->getInputVersion(i) == verLookupRaw[i]) continue;
      for(Int_t j=i; j<3; j++) {
        verLayerGeomPar[j] = fLayerGeomPar->getInputVersion(j);
        verGeomPar[j]      = fGeomPar->getInputVersion(j);
        verLookupRaw[j]    = fMdcLookupRaw->getInputVersion(j);
      }
      changed=kTRUE;
      for (Int_t sec = 0; sec < 6; sec++) {
        nModsSeg[sec][0]=nModsSeg[sec][1]=0;
        for(Int_t mod=0;mod<4;mod++) {
          mdcStatus[sec][mod] = fGetCont->isModActive(sec,mod);
          if(mdcStatus[sec][mod]) nModsSeg[sec][mod/2]++;
        }
        if( !fGetCont->isSecActive(sec) )  continue;
        if( !(*array)[sec] ) (*array)[sec] = new HMdcSizesCellsSec(this,sec);
        if( !fillCont(sec) )  return kFALSE;
      }
      fillTargetPos();
      break;
    }
  } else changed=kFALSE;
  if(geomModified) changed=kTRUE;
  return kTRUE;
}

HMdcSizesCells* HMdcSizesCells::getObject(void) {
  if(fMdcSizesCells == NULL) fMdcSizesCells = new HMdcSizesCells();
  return fMdcSizesCells;
}

void HMdcSizesCells::deleteCont(void) {
  if(fMdcSizesCells) {
    delete fMdcSizesCells;
    fMdcSizesCells=0;
  }
}

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

void HMdcSizesCells::clear(void) {
  // clears the container
  for(Int_t s=0;s<6;s++) {
    HMdcSizesCellsSec* sec=&(*this)[s];
    if( sec == NULL ) continue;
    for(Int_t m=0;m<4;m++) {
      HMdcSizesCellsMod* mod=&(*sec)[m];
      if( mod == NULL ) continue;
      for(Int_t l=0;l<6;l++) {
        HMdcSizesCellsLayer& mdcSCLay = (*mod)[l];
	Int_t nc = mdcSCLay.getNCells();
	for(Int_t c=0;c<nc;c++) mdcSCLay[c].clear();
      }
    }
  }
  changed=kFALSE;
}

Bool_t HMdcSizesCells::fillCont(Int_t sec) {
  // calculation of the container HMdcSizesCells
  // with wire's sizes (2-pint) in coordinate system of sector.
  HMdcSizesCellsSec& fSCSec = (*this)[sec];
  if(!fGetCont->getLabTransSec(fSCSec.getLabTransform(),sec)) return kFALSE;
  for(Int_t mod=0; mod<4; mod++) if(!fillModCont(sec,mod)) return kFALSE;
  return kTRUE;
}

Bool_t HMdcSizesCells::fillModCont(Int_t sec, Int_t mod, 
    HGeomTransform * alignTrans, Int_t sysOfAlignTrans) { 
  // filling HMdcSizesCellsMod, HMdcSizesCellsLayer, HMdcSizesCellsCell
  // objects for MDC module "mod" in sector "sec".
  // if alignTrans>0 - correction of mdc position (must be done after
  // filling HMdcSizesCells!)
  // sysOfAlignTrans =0 transform mdc coor.sys. by "alignTrans" respect 
  //                    coor.sys.of sector
  //                 =1 transform mdc coor.sys. by "alignTrans" respect 
  //                    coor.sys.of mdc module
  //                 =2 transform mdc coor.sys. by "alignTrans" respect 
  //                    lab.coor.sys.
  if(!secOk(sec) || !modOk(mod)) return kFALSE; 
  HMdcSizesCellsSec& fSizesCellsSec=(*this)[sec];
  if(&fSizesCellsSec==0) return kFALSE;
  if( !mdcStatus[sec][mod] ) return kTRUE;
  HMdcSizesCellsMod& fSCellsMod = fSizesCellsSec[mod];
  if(!fSCellsMod.setSecTrans(alignTrans,sysOfAlignTrans)) return kFALSE;
  for(Int_t layer=0; layer<6; layer++)
      if(!fSCellsMod[layer].fillLayerCont(fLayerCorrPar)) return kFALSE;
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::getParamCont(void) {
  HMdcGetContainers* pGetCont=HMdcGetContainers::getObject();
  HGeomCompositeVolume* pCV =pGetCont->getGeomCompositeVolume(module);
  if(!pCV) {
    Error("getParamCont","GeomCompositeVolume for MDC%i in sec.%i is absent.",
        module+1,sector+1);
    return kFALSE;
  }
  pGeomVol=pCV->getComponent(layer);
  if(pGeomVol==0) {
    Error("getParamCont",
        "HGeomVolume for lay. %i in sec.%i mod.%i doesn't exist!",layer+1,
        sector+1,module+1);
    return kFALSE;
  }
  pLayerGeomParLay=&(*(pGetCont->getMdcLayerGeomPar()))[sector][module][layer];
  if(pLayerGeomParLay==0) {
    Error("getParamCont",
        "HLayerGeomParLay for lay. %i in sec.%i mod.%i doesn't exist!",layer+1,
        sector+1,module+1);
    return kFALSE;
  }
  return kTRUE;
}

Bool_t HMdcSizesCells::fillModCont(Int_t sec, Int_t mod, Double_t * corr) { 
  // filling HMdcSizesCellsMod, HMdcSizesCellsLayer, HMdcSizesCellsCell
  // objects for MDC module "mod" in sector "sec"
  if(!secOk(sec) || !modOk(mod)) return kFALSE;
  HMdcSizesCellsSec& fSizesCellsSec=(*this)[sec];
  if(&fSizesCellsSec==0) return kFALSE;
  if( !mdcStatus[sec][mod] ) return kTRUE;
  HMdcSizesCellsMod& fSCellsMod=fSizesCellsSec[mod];
  if(!fSCellsMod.setSecTrans()) return kFALSE;
  for(Int_t layer=0; layer<6; layer++) 
      if(!fSCellsMod[layer].fillLayerCont(fLayerCorrPar,corr)) return kFALSE;
  return kTRUE;
}

Bool_t HMdcSizesCellsLayer::fillLayerCont(const HMdcLayerCorrPar* fLayCorrPar,
                                          const Double_t* corr) {
  if(!getParamCont()) return kFALSE;
  if(nCells<0) return kTRUE;
  pitch           = pLayerGeomParLay->getPitch();
  invPitch        = 1./pitch;
  halfPitch       = pitch*0.5;
  halfCatDist     = pLayerGeomParLay->getCatDist()*0.5;
  halfCDsDivPitch = halfCatDist*invPitch;
  maxDriftDist    = TMath::Sqrt(halfPitch*halfPitch + halfCatDist*halfCatDist);
  cellOffset      = pLayerGeomParLay->getCentralWireNr()-0.5;
  wireOffset      = (pLayerGeomParLay->getCentralWireNr()-1.)*pitch;
  wireOrient      = pLayerGeomParLay->getWireOrient();
  // Layer geometry correction:
  if(corr) {
    wireOrient += corr[layer];
    wireOffset += corr[layer + 6];
    cellOffset += corr[layer + 6]/pitch;
  }
  cosWireOr = TMath::Cos(wireOrient*TMath::DegToRad());
  sinWireOr = TMath::Sin(wireOrient*TMath::DegToRad());

  if(fLayCorrPar) {   // Must be after "if(corr)..."
    Float_t shift,orCorr;
    fLayCorrPar->getLayerCorrPar(sector,module,layer,firstCellPart2,shift,orCorr);
    cellOffsetPart2   = cellOffset - shift/pitch;
    wireOffsetPart2   = wireOffset - shift;
    wireOrientPart2   = wireOrient - orCorr;
    cosWireOrPart2    = TMath::Cos(wireOrientPart2*TMath::DegToRad());
    sinWireOrPart2    = TMath::Sin(wireOrientPart2*TMath::DegToRad());
  }

  if(!setSecTrans(corr ? corr[layer+12]:0.)) return kFALSE; // Must be abter if(fLayCorrPar) {...}!
  
  Int_t nPoint=pGeomVol->getNumPoints();
  if(nPoint != 8) {
    Error("fillCont","NumPoints for layer volume not eg. 8.");
    return kFALSE;
  }
  sensWiresThick = pGeomVol->getPoint(4)->getZ() - 
                   pGeomVol->getPoint(0)->getZ();
  if(sensWiresThick < 0.02) {
    Error("fillCont","Geometry of layer looks not reasonable");
    sensWiresThick = 0.;
    zGeantHit      = 0.;
    return kFALSE;
  }
  zGeantHit      = -sensWiresThick/2.;
  Double_t x[4],y[4];
  for(nPoint=0; nPoint<4;nPoint++) {
    const HGeomVector* pnt = pGeomVol->getPoint(nPoint);
    x[nPoint] = pnt->getX();
    y[nPoint] = pnt->getY();
  }

  // ----- calcBLines ----------------
  Double_t at[4],bt[4];
  for(Int_t i1=0; i1<4; i1++) {
    Int_t i2=i1+1;
    if(i2==4) i2=0;
    at[i1] = (y[i2]-y[i1])/(x[i2]-x[i1]);
    bt[i1] = y[i1]-at[i1]*x[i1];
  }
  //----------------------------------

  for(Int_t cell=0; cell<nCells; cell++) {
//---  Double_t a = TMath::Tan(wireOr*TMath::DegToRad());   // y=a*x+ln[1]
    Double_t a = getTanWireOr(cell);
    HMdcSizesCellsCell& fSizesCellsCell = cellsArray[cell];
    Double_t yWire = calcWireY(cell);
    Double_t b     = yWire/getCosWireOr(cell);
    fSizesCellsCell.setWirePos(yWire);
    HGeomVector& lineP1 = fSizesCellsCell.getWirePnt1();
    HGeomVector& lineP2 = fSizesCellsCell.getWirePnt2();
    //---------- Calculation of wire size ------------------
    //
    //
    //            Line 1
    //          ----------                 ^ (y)
    //          \ Layre  /                 |
    // Line 0 -> \ MDC  /  <- Line 2       |
    //            \____/                   |
    //            Line 3                   |
    //  (x) <--------|----------------------
    //              0,0
    //
    Double_t x1  = (bt[0]-b)/(a-at[0]);       //Xb    line 0
    Double_t x2  = (bt[2]-b)/(a-at[2]);       //Xe    line 2
    Double_t y1  = a*x1+b;                    // Yb
    Double_t y2  = a*x2+b;                    // Ye
    Int_t nLine1 = (x1>=x[0] && x1<=x[1] && y1>=y[0] && y1<=y[1]) ? 0:-1;
    Int_t nLine2 = (x2<=x[3] && x2>=x[2] && y2>=y[3] && y2<=y[2]) ? 2:-1;
    if(nLine1<0 && nLine2 <0) {
      if(cell<100) {
        Warning("fillCont","S%i M%i L%i: Cell %i is out of MDC.",
        sector+1,module+1,layer+1,cell+1);
        continue;
      } else {
        Warning("fillCont","S%i M%i L%i: Cells %i-%i are out of MDC.",
        sector+1,module+1,layer+1,cell+1,nCells);
        break;
      }
    }
    if(nLine1<0) {
      x1 = (bt[1]-b)/(a-at[1]);               // Xb    line 1
      if(x1<x[2]) x1 = (bt[3]-b)/(a-at[3]);   // Xb    line 3
      y1 = a*x1+b;                            // Yb
    } else if(nLine2<0) {
      x2 = (bt[1]-b)/(a-at[1]);               // Xe    line 1
      if(x2>x[1]) x2 = (bt[3]-b)/(a-at[3]);   // Xe    line 3
      y2 = a*x2+b;                            // Ye
    }
    
    HMdcSizesCells* pSC=HMdcSizesCells::getExObject();
    Char_t readOutSide=pSC->findReadOutSide(sector,module,layer,cell);
    if( readOutSide=='0'){
      if( cell>3 && cell < pSC->nCells(sector,module,layer)-4) {
        if(corr==0) Warning("fillCont",
          " %iS%iM%iL: Wire %i is not connected.",sector+1,module+1,layer+1,cell+1);
      }
    } else {
      if( (readOutSide=='L' && x1<x2) || (readOutSide=='R' && x1>x2) ||
          (readOutSide=='U' && y1<y2) ) {
        Double_t tmp;
        tmp=x1; x1=x2; x2=tmp;
        tmp=y1; y1=y2; y2=tmp;
      }
      if(readOutSide=='U') readOutSide=(x1>x2) ? 'L':'R';
    }
    fSizesCellsCell.setReadoutSide(readOutSide);
    fSizesCellsCell.setXReadout(getXinRotLay(cell,x1,y1));
//???    fSizesCellsCell.setWireLength(getXinRotLay(cell,x2-x1,y2-y1));
    fSizesCellsCell.setWireLength(TMath::Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
    lineP1.setXYZ(x1,y1,0.);
    lineP2.setXYZ(x2,y2,0.);
    lineP1 = sysRSec.transFrom(lineP1);
    lineP2 = sysRSec.transFrom(lineP2);
    fSizesCellsCell.setStatus(kTRUE);
  }
  return kTRUE;
}

Double_t HMdcSizesCellsLayer::getXinRotLay(Int_t c, Double_t xi, Double_t yi)
    const {
  // Input:  xi,yi - layer coor.sys.
  // Return X in  rotated layer coor.sys.
  if(c < firstCellPart2) return xi*cosWireOr      + yi*sinWireOr;
  else                   return xi*cosWireOrPart2 + yi*sinWireOrPart2;
}

Double_t HMdcSizesCellsLayer::getYinRotLay(Int_t c, Double_t xi, Double_t yi) const {
  // Input:  xi,yi - layer coor.sys.
  // Return Y in  rotated layer coor.sys.
  if(c < firstCellPart2) return yi*cosWireOr      - xi*sinWireOr;
  else                   return yi*cosWireOrPart2 - xi*sinWireOrPart2;
}

Double_t HMdcSizesCellsLayer::getCosWireOr(Int_t c) const {
  return c<firstCellPart2 ? cosWireOr : cosWireOrPart2;
}

Double_t HMdcSizesCellsLayer::getSinWireOr(Int_t c) const {
  return c<firstCellPart2 ? sinWireOr : sinWireOrPart2;
}

Double_t HMdcSizesCellsLayer::getTanWireOr(Int_t c) const {
  return c<firstCellPart2 ? sinWireOr/cosWireOr : sinWireOrPart2/cosWireOrPart2;
}

Double_t HMdcSizesCellsLayer::getWireOffset(Int_t c) const  {
  return c<firstCellPart2 ? wireOffset : wireOffsetPart2;
}

Bool_t HMdcSizesCells::getCellVol(Int_t sec,Int_t mod,Int_t lay,Int_t cell,
    HMdcTrap& volCell, Double_t sizeFactor) const {
  // Return the cell volume as HMdcTrap (8 points) in sector(!) coordinate sys..
  // Use "sizeFactor" param. for drawing purpose only. 
  // This parameter increase Y and Z cell size on this factor.
  HGeomVector layerVol[8];  // Drift gas vol. (8-points)
  if( &((*this)[sec]) == 0 ) return kFALSE;
  HMdcSizesCellsMod& fSCellsMod=(*this)[sec][mod];
  if(!&fSCellsMod) return kFALSE;
  HGeomCompositeVolume* fComVol=fGetCont->getGeomCompositeVolume(mod);
  if(!fComVol) return kFALSE;
  HMdcSizesCellsLayer& fSCellsLay = fSCellsMod[lay];
  if(cell<0 || cell>=fSCellsLay.getNCells() || !fSCellsLay[cell].getStatus())
    return kFALSE;
  HGeomVolume* fGeomVol=fComVol->getComponent(lay);
  for(Int_t point=0; point<4; point++) {
    layerVol[point  ] = *(fGeomVol->getPoint(point));
    layerVol[point+4] = layerVol[point];
    layerVol[point  ].setZ(-fSCellsLay.getHalfCatDist());
    layerVol[point+4].setZ(+fSCellsLay.getHalfCatDist());
  }
  Double_t a = fSCellsLay.getTanWireOr(cell); // y=a*x+ln[1]
  // ----- calcBLines ----------------
  Double_t at[4],bt[4];
  for(Int_t i1=0; i1<4; i1++) {
    Int_t i2=i1+1;
    if(i2==4) i2=0;
    at[i1] = (layerVol[i2].getY()-layerVol[i1].getY())/
             (layerVol[i2].getX()-layerVol[i1].getX());
    bt[i1] = layerVol[i1].getY()-at[i1]*layerVol[i1].getX();
  }
  Double_t cosWrOr = fSCellsLay.getCosWireOr(cell);
  Double_t sinWrOr = fSCellsLay.getSinWireOr(cell);
  Double_t ymax = -1.e+30;
  Double_t ymin =  1.e+30;
  for(Int_t i=0; i<4; i++) {
    Double_t y = layerVol[i].getY()*cosWrOr - layerVol[i].getX()*sinWrOr;
    if(y>ymax) ymax = y;
    if(y<ymin) ymin = y;
  }
  Double_t b = fSCellsLay[cell].getWirePos()/cosWrOr;
  //---------- Calculation of wire size ------------------
  //
  //
  //            Line 1
  //          ----------                 ^ (y)
  //          \ Layre  /                 |
  // Line 0 -> \ MDC  /  <- Line 2       |
  //            \____/                   |
  //            Line 3                   |
  //  (x) <--------|----------------------
  //              0,0
  //
  Double_t x1     = (bt[0]-b)/(a-at[0]);       // Xb    line 0
  Double_t x2     = (bt[2]-b)/(a-at[2]);       // Xe    line 2
  Double_t y1     = a*x1+b;                    // Yb    line 0
  Double_t y2     = a*x2+b;                    // Ye    line 2
  Int_t    nLine1 = (x1>=layerVol[0].getX() && x1<=layerVol[1].getX() &&
                     y1>=layerVol[0].getY() && y1<=layerVol[1].getY()) ? 0:-1;
  Int_t    nLine2 = (x2<=layerVol[3].getX() && x2>=layerVol[2].getX() &&
                     y2>=layerVol[3].getY() && y2<=layerVol[2].getY()) ? 2:-1;
  if(nLine1<0 && nLine2 <0) return kFALSE;
  if(nLine1<0)       nLine1 = ((bt[1]-b)/(a-at[1]) >= layerVol[2].getX()) ? 1:3;
  else if(nLine2<0)  nLine2 = ((bt[1]-b)/(a-at[1]) <= layerVol[1].getX()) ? 1:3;

  Double_t halfPitch = fSCellsLay.getHalfPitch();
  if(sizeFactor>0.) halfPitch *= sizeFactor;
  Double_t bLine = fSCellsLay[cell].getWirePos() - halfPitch;
  Double_t tLine = fSCellsLay[cell].getWirePos() + halfPitch;
  if(tLine > ymax) tLine = ymax;
  if(bLine < ymin) bLine = ymin;
  bLine = bLine/cosWrOr;
  tLine = tLine/cosWrOr;

  Double_t z=layerVol[0](2);
  if(sizeFactor>0.) z*=sizeFactor;
  Double_t x=(bt[nLine1]-bLine)/(a-at[nLine1]);
  volCell[0].setXYZ(x,a*x+bLine,z);  
  x = (bt[nLine1]-tLine)/(a-at[nLine1]);
  volCell[1].setXYZ(x,a*x+tLine,z);
  x = (bt[nLine2]-tLine)/(a-at[nLine2]);
  volCell[2].setXYZ(x,a*x+tLine,z);
  x = (bt[nLine2]-bLine)/(a-at[nLine2]);
  volCell[3].setXYZ(x,a*x+bLine,z);
  z = layerVol[4](2);
  
  HGeomVector dif;
  volCell.setDbPointNum(-1);
  for(Int_t i=0;i<4;i++) {
    Int_t i2 = i<3 ? i+1 : 0;
    dif = volCell[i]-volCell[i2];
    if(dif.length()<0.01) {
      volCell[i2]   = volCell[i];
      volCell[i2+4] = volCell[i+4];
      volCell.setDbPointNum(i);
      break;               // not more then one double point
    }
  }
  
  if(sizeFactor>0.) z *= sizeFactor;
  for(Int_t i=0; i<4; i++) {
    volCell[i+4] = volCell[i];
    volCell[i+4].setZ(z);
  }
  volCell.transFrom(*(fSCellsLay.getSecTrans()));
  return kTRUE;
}

Char_t HMdcSizesCells::findReadOutSide(Int_t s,Int_t m,Int_t l,Int_t c) const {
  // Function to get the side from which the corresponding wire is read out.
  // Function return values are 'L' for left, 'R' for right, 'U' for top 
  // and '0' for GEANT data and not connected wires.
  if(!fMdcLookupRaw || !fMdcRawStruct) return '0';
  HMdcLookupCell &cell = (*fMdcLookupRaw)[s][m][l][c];
  if(!&cell) return '0';
  
  Char_t rdOutSide = cell.getReadoutSide();
  if(rdOutSide=='L' || rdOutSide=='R' || rdOutSide=='U') return rdOutSide;
  
  // Next code is important for reading parameters from root file which 
  // was created before adding ReadoutSide in HMdcLookupCell!:
  Int_t mbo = cell.getNMoth();
  if(mbo < 0) return '0';  // don't connected wires have mbo==-1
  HMdcRawMothStru& rMbo=(*fMdcRawStruct)[s][m][mbo];
  if(!&rMbo) return '0';
  Char_t mbn = rMbo.GetName()[0];
  if     (mbn == '1') return 'L';
  else if(mbn == '2') return 'R';
  else if(mbn == '3') return 'U';
  else                return '0';  
}

Bool_t HMdcSizesCells::fillTargetPos(HGeomVector* targetShift) {
  // Filling target parameters
  if(targets && numTargets<fSpecGeomPar->getNumTargets()) {
    delete [] targets;
    delete [] tarHalfThick;
    targets = 0;
  }
  numTargets = fSpecGeomPar->getNumTargets();
  if( numTargets < 1 ) {
    Error("calcTarget","Number of targets = %i!",numTargets);
    return kFALSE;
  }
  if(targets==0) {
    targets      = new HGeomVector [numTargets];
    tarHalfThick = new Double_t    [numTargets];
  }
  for(Int_t t=0;t<numTargets;t++) {
    HGeomVolume* tr = fSpecGeomPar->getTarget(t);
    if(!tr) {
      Error("calcTarget","GeomVolume for target absent!");
      return kFALSE;
    }
    targets[t]      = tr->getTransform().getTransVector();
    Double_t zV1    = tr->getPoint(0)->getZ();
    Double_t zV2    = tr->getPoint(2)->getZ();
    tarHalfThick[t] = TMath::Abs(zV1-zV2)/2.;
    targets[t].setZ(targets[t].getZ()+(zV1+zV2)/2.);
    // Targets sorting:
    Int_t t1 = t;
    for(Int_t t2=t1-1;t2>=0;t2--) {
      if(targets[t1].getZ()>targets[t2].getZ()) break;
      HGeomVector tmpVec(targets[t2]);
      targets[t2] = targets[t1];
      targets[t1] = tmpVec;
      Double_t tmpTarTh = tarHalfThick[t2];
      tarHalfThick[t2]  = tarHalfThick[t1];
      tarHalfThick[t1]  = tmpTarTh;
      t1 = t2;
    }
  }
  targ3p[0]  = targets[0];
  targ3p[2]  = targets[numTargets-1];
  targ3p[0].setZ(targ3p[0].getZ() - tarHalfThick[0]);
  targ3p[2].setZ(targ3p[2].getZ() + tarHalfThick[numTargets-1]);
  targ3p[1]  = targ3p[0]+targ3p[2];
  targ3p[1] *= 0.5;
 
  if(targetShift) {
    for(Int_t i=0;i<3;i++) targ3p[i] += *targetShift;
    for(Int_t i=0;i<numTargets;i++) targets[i] += *targetShift;
  }
    
  for(Int_t sec=0;sec<6;sec++) {
    HMdcSizesCellsSec* fSec=(HMdcSizesCellsSec*)((*array)[sec]);
    if(fSec == 0) continue;
    fSec->setNumOfTargets(targ3p,numTargets,targets);
  }
  return kTRUE;
}

Int_t HMdcSizesCells::calcTargNum(Double_t z,Double_t* dz) const {
  // Calculate the target numer which is 
  // Return the nearest to z target numer.
  // dz!=0 :
  //           *dz will eq. 0. if z inside target 
  // otherwise *dz will eq. Abs(Ztarg-z)
  Int_t    nt   = 0;
  Double_t dZnt = TMath::Abs(z-targets[0].getZ());
  if(dZnt <= tarHalfThick[0]+0.01) dZnt = 0;
  else {
    for(Int_t n=1;n<numTargets;n++) {
      Double_t dZnext = TMath::Abs(z-targets[n].getZ());
      if(dZnext<dZnt) {
        nt = n;
        dZnt = dZnext;
        if(dZnt > tarHalfThick[n]+0.01) continue;
        dZnt = 0.;
        break;
      }
    }
  }
  if(dz) *dz = dZnt;
  return nt;
}

void HMdcSizesCells::calcMdcSeg(Double_t x1, Double_t y1, Double_t z1,
                                Double_t x2, Double_t y2, Double_t z2,
    Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2,
    Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2,
    Double_t& zm, Double_t& eZm, Double_t& r0,  Double_t& eR0,
    Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi) {
  // Calcul. a HMdcSeg hit.
  // Input and output are in sector coor.sys.
  // theta=atan(TMath::Sqrt(dX*dX+dY*dY)/dZ);  phi=atan(dY/dX)
  // zm= z1 - cos(theta)/sin(theta) * (x1*cos(phi)+y1*sin(phi))
  // r0=y1*cos(phi)-x1*sin(phi)
  //
  // If (x1,y1,z1)=(x2,y2,z2) dZ will eq.1.!
  // Input param:
  // x1,y1,z1 - target or point on plane
  // x2,y2,z2 - point on plane
  // eX1,eY1,eZ1, eX2,eY2 - errors (eZ2=0!)
  // dZ2dX2 = -A2  where A2 - plane param. (z2=D2-A2*x2+B2*y2)
  // dZ2dY2 = -B2  where B2 - plane param. (z2=D2-A2*x2+B2*y2)
  // If P1-on plane
  //   eZ1=0;
  //   dZ1dX1 = -A1  where A1 - plane param. (z1=D1-A1*x1+B1*y1)
  //   dZ1dY1 = -B1  where B1 - plane param. (z1=D1-A1*x1+B1*y1)
  // If P1-target:
  //   dZ1dX1 = dZ1/dY1 = 0;
  Double_t dX    = x2-x1;
  Double_t dY    = y2-y1;
  Double_t dZ    = z2-z1;
  Double_t lenXY = TMath::Sqrt(dX*dX+dY*dY);
  if(lenXY<2.E-5) {
    dX    = x2 * 1.E-5/TMath::Sqrt(x2*x2+y2*y2);
    dY    = y2 * 1.E-5/TMath::Sqrt(x2*x2+y2*y2);
    lenXY = 1.E-5;            // = dX*dX+dY*dY;
    dZ    = 1.;
  }
  dX /= lenXY;
  dY /= lenXY;
  dZ /= lenXY;
  phi   = TMath::ATan2(dY,dX);
  theta = TMath::ATan2(1.,dZ);
  Double_t xy2 = (x2*dX+y2*dY);
  Double_t xy1 = (x1*dX+y1*dY);
  zm = (z1*xy2-z2*xy1)/lenXY;  //= z1-dZ*(x1*dX+y1*dY);
  r0 = y1*dX-x1*dY;

  Double_t dR0dX1 = (y2-r0*dX)*eX1;  // *(-1)
  Double_t dR0dX2 = (y1-r0*dX)*eX2;
  Double_t dR0dY1 = (x2+r0*dY)*eY1;
  Double_t dR0dY2 = (x1+r0*dY)*eY2;  // *(-1)
  eR0 = TMath::Sqrt(dR0dX1*dR0dX1+dR0dY1*dR0dY1+dR0dX2*dR0dX2+dR0dY2*dR0dY2)/lenXY;

  Double_t zx12   = (z1*dX-x1*dZ)-2*zm*dX;
  Double_t zy12   = (z1*dY-y1*dZ)-2*zm*dY;
  Double_t dZmdZ1 = xy2*eZ1;
  Double_t dZmdX1 = (xy2*dZ1dX1-zx12-z2*dX)*eX1;
  Double_t dZmdX2 = (xy1*dZ2dX2-zx12-z1*dX)*eX2;  // *(-1)
  Double_t dZmdY1 = (xy2*dZ1dY1-zy12-z2*dY)*eY1;
  Double_t dZmdY2 = (xy1*dZ2dY2-zy12-z1*dY)*eY2;  // *(-1)
  eZm = TMath::Sqrt(dZmdZ1*dZmdZ1+dZmdX1*dZmdX1+dZmdX2*dZmdX2+dZmdY1*dZmdY1+
        dZmdY2*dZmdY2)/lenXY;

  Double_t drvTh  = 1./(1.+dZ*dZ);
  Double_t dThdX1 = (dZ*dX-dZ1dX1)*eX1; // *(-1)
  Double_t dThdY1 = (dZ*dY-dZ1dY1)*eY1; // *(-1)
  Double_t dThdX2 = (dZ*dX-dZ2dX2)*eX2;
  Double_t dThdY2 = (dZ*dY-dZ2dY2)*eY2;
  //  Double_t dThdZ1=eZ1;
  eTheta = TMath::Sqrt(dThdX1*dThdX1+dThdY1*dThdY1+eZ1*eZ1+dThdX2*dThdX2+dThdY2*dThdY2)*
           drvTh/lenXY;

  Double_t dPhdX1 = dY*eX1;
  Double_t dPhdX2 = dY*eX2; // *(-1)
  Double_t dPhdY1 = dX*eY1; // *(-1)
  Double_t dPhdY2 = dX*eY2;
  ePhi = TMath::Sqrt(dPhdX1*dPhdX1+dPhdX2*dPhdX2+dPhdY1*dPhdY1+dPhdY2*dPhdY2)/lenXY;
}

void HMdcSizesCells::calcRZToTargLine(Double_t x1, Double_t y1, Double_t z1, 
                                Double_t x2, Double_t y2, Double_t z2, 
    Double_t &zm, Double_t &r0) const {
  // Input and output are in lab.sys.
  calcRZToLineXY(x1,y1,z1,x2,y2,z2,targ3p[2].getX(),targ3p[2].getY(),zm,r0);
}

void HMdcSizesCellsSec::calcRZToTargLine(Double_t x1, Double_t y1, Double_t z1, 
                                Double_t x2, Double_t y2, Double_t z2, 
    Double_t &zm, Double_t &r0) const {
  // Input and output are in sector coor.sys.
  HMdcSizesCells::calcRZToLineXY(x1,y1,z1,x2,y2,z2,
      targ3p[2].getX(),targ3p[2].getY(),zm,r0);
}

void HMdcSizesCells::calcRZToLineXY(Double_t x1, Double_t y1, Double_t z1, 
                                Double_t x2, Double_t y2, Double_t z2, 
    Double_t xBeam, Double_t yBeam, Double_t &zm, Double_t &r0) {
  // zm= z1 - cos(theta)/sin(theta) * ((x1-xBeam)*cos(phi)+(y1-yBeam)*sin(phi))
  // r0=(y1-yBeam)*cos(phi)-(x1-xBeam)*sin(phi)
  //
  // If (x1,y1,z1)=(x2,y2,z2) dZ will eq.1.! 
  Double_t dX     = x2-x1;
  Double_t dY     = y2-y1;
  Double_t dZ     = z2-z1;
  Double_t lenXY2 = dX*dX+dY*dY;
  Double_t lenXY  = TMath::Sqrt(lenXY2);
  if(lenXY<2.E-5) {
    dX     = x2 * 1.E-5/TMath::Sqrt(x2*x2+y2*y2);
    dY     = y2 * 1.E-5/TMath::Sqrt(x2*x2+y2*y2);
    lenXY  = 1.E-5;            //dX*dX+dY*dY;
    lenXY2 = lenXY*lenXY;
    dZ     = 1.;
  }
  x1 -= xBeam;  // Shifting to beam line
  y1 -= yBeam;  // Shifting to beam line
  
  zm = z1-dZ*(x1*dX+y1*dY)/lenXY2;
  r0 = (y1*dX-x1*dY)/lenXY;
}

void HMdcSizesCells::setTransform(Double_t* par, HGeomTransform& trans) {
  // Filling  HGeomTransform object by 6 parameters
  // par[0] - shift along X
  // par[1] - shift along Y
  // par[2] - shift along Z
  // par[3] - rotation around X (in degree)
  // par[4] - rotation around Y (in degree)
  // par[5] - rotation around Z (in degree)
  if(par==0) return;
  
  Double_t alpha    = par[3]*TMath::DegToRad();
  Double_t beta     = par[4]*TMath::DegToRad();
  Double_t gamma    = par[5]*TMath::DegToRad();

  Double_t cosAlpha = TMath::Cos(alpha);
  Double_t sinAlpha = TMath::Sin(alpha);
  Double_t cosBeta  = TMath::Cos(beta);
  Double_t sinBeta  = TMath::Sin(beta);
  Double_t cosGamma = TMath::Cos(gamma);
  Double_t sinGamma = TMath::Sin(gamma);

  Double_t rot[9];
  rot[0] = cosBeta*cosGamma;
  rot[1] = -cosBeta*sinGamma;
  rot[2] = sinBeta;
  rot[3] = sinAlpha*sinBeta*cosGamma+cosAlpha*sinGamma;
  rot[4] = -sinAlpha*sinBeta*sinGamma+cosAlpha*cosGamma;
  rot[5] = -sinAlpha*cosBeta;
  rot[6] = -cosAlpha*sinBeta*cosGamma+sinAlpha*sinGamma;
  rot[7] = cosAlpha*sinBeta*sinGamma+sinAlpha*cosGamma;
  rot[8] = cosAlpha*cosBeta;

  trans.setRotMatrix(rot);
  trans.setTransVector(par);
}

void HMdcSizesCells::copyTransfToArr(const HGeomTransform& trans,
    Double_t* arr) {
  // Copy trans to array
  // Array size must be eq. or more 12!
  const HGeomRotation& rot = trans.getRotMatrix();
  const HGeomVector&   trn = trans.getTransVector();
  for(Int_t i=0; i<9; i++) arr[i]=rot(i);
  arr[ 9] = trn(0);
  arr[10] = trn(1);
  arr[11] = trn(2);
}

void HMdcSizesCells::rotateYZ(const HGeomRotation& rot,
    Double_t xi,Double_t yi,Double_t zi,Double_t& yo, Double_t& zo) {
  // Input:  xi,yi,zi - sector coor.sys.
  // Output: yo,zo - rotated layer coor.sys.
  yo = rot(1)*xi + rot(4)*yi + rot(7)*zi;
  zo = rot(2)*xi + rot(5)*yi + rot(8)*zi;
}

void HMdcSizesCells::rotateXYZ(const HGeomRotation& rot,
    Double_t xi,Double_t yi,Double_t zi,
    Double_t& xo, Double_t& yo,Double_t& zo) {
  // Input:  xi,yi,zi - sector coor.sys.
  // Output: x0,yo,zo - rotated layer coor.sys.
  xo = rot(0)*xi + rot(3)*yi + rot(6)*zi;
  yo = rot(1)*xi + rot(4)*yi + rot(7)*zi;
  zo = rot(2)*xi + rot(5)*yi + rot(8)*zi;
}


void HMdcSizesCells::rotateDir(const HGeomRotation& rot,
    const HGeomVector& d,Double_t& dy, Double_t& dz) {
  // Input:  rot - rotation matrix; d - vector...
  // Output: yo,zo - rotated layer coor.sys.
  dy = rot(1)*d.getX()+rot(4)*d.getY()+rot(7)*d.getZ();
  dz = rot(2)*d.getX()+rot(5)*d.getY()+rot(8)*d.getZ();
}

void HMdcSizesCells::rotateDir(const HGeomRotation& rot,
    const HGeomVector& d,Double_t& dx, Double_t& dy, Double_t& dz) {
  // Input:  rot - rotation matrix; d - vector...
  // Output: x0,yo,zo - rotated layer coor.sys.
  dx = rot(0)*d.getX()+rot(3)*d.getY()+rot(6)*d.getZ();
  dy = rot(1)*d.getX()+rot(4)*d.getY()+rot(7)*d.getZ();
  dz = rot(2)*d.getX()+rot(5)*d.getY()+rot(8)*d.getZ();
}

void HMdcSizesCells::transLineToOtherSec(const HMdcLineParam& ln,Int_t sec,
    HGeomVector& p1,HGeomVector& p2) {
  Int_t parSec = ln.getSec();
  p1 = ln.getFisrtPoint().getVector();
  p2 = ln.getSecondPoint().getVector();
  if(parSec==sec || parSec<0) return;
  HMdcSizesCellsSec& pSCellsSec0 = (*this)[parSec];
  const HGeomTransform* tr0 = pSCellsSec0.getLabTrans();
  p1 = tr0->transFrom(p1);
  p2 = tr0->transFrom(p2);
  HMdcSizesCellsSec& pSCellsSec1 = (*this)[sec];
  const HGeomTransform* tr1 = pSCellsSec1.getLabTrans();
  p1 = tr1->transTo(p1);
  p2 = tr1->transTo(p2);
}

void HMdcSizesCells::transLineToAnotherSec(HMdcLineParam& ln,Int_t anotherSec) {
  // Transformation of track line to another sector coor.system (for cosmic!)
  // !!! Error matrix is not transformed !!!
  Int_t parSec = ln.getSec();
  if(parSec==anotherSec || parSec<0) return;
  const HGeomTransform* tr0 = (*this)[parSec].getLabTrans();
  const HGeomTransform* tr1 = (*this)[anotherSec].getLabTrans();
  ln.transFrom(tr0);
  ln.transTo(tr1,anotherSec);
}

Int_t HMdcSizesCells::nCells(Int_t s,Int_t m,Int_t l) const {
  return ((*fMdcGeomStruct)[s][m])[l];
}

void HMdcSizesCellsSec::setNumOfTargets(HGeomVector* targ3pLab,
    Int_t nt,HGeomVector* targetsLab) {
  for(Int_t i=0;i<3;i++) targ3p[i] = sysRLab.transTo(targ3pLab[i]);
  if(targets && numTargets<nt) {
    delete [] targets;
    targets = 0;
  }
  numTargets = nt;
  if(targets==0) targets = new HGeomVector[numTargets];
  for(Int_t i=0;i<numTargets;i++) targets[i] = sysRLab.transTo(targetsLab[i]);
}

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