ROOT logo
#include "hmdctargetmon.h"
#include "TROOT.h"
#include "TH1.h"
#include "TH2.h"
#include "TNtuple.h"
#include "TCanvas.h"
#include "TStyle.h"
#include "TPaveLabel.h"
#include "TSystem.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hdatasource.h"
#include "hspectrometer.h"
#include "hmdcgeompar.h"
#include "hspecgeompar.h"
#include "heventheader.h"
#include "hmdcdetector.h"
#include "hmdcdef.h"
#include "hevent.h"
#include "hcategory.h"
#include "hgeomvolume.h"
#include "hmdchit.h"
#include "hiterator.h"
#include "hmdcseg.h"
#include "hrun.h"
#include "TLine.h"
#include "hmdcsizescells.h"
#include "hmdcgetcontainers.h"
#include "hmdctrackdset.h"
#include "TSystem.h"

ClassImp(HMdcTargetMon)

HMdcTargetMon::HMdcTargetMon(Bool_t isClOff, UInt_t pt) {
  isCoilOff=isClOff;
  setDefParam(pt);
}

HMdcTargetMon::HMdcTargetMon(const Text_t *name,const Text_t *title,
    Bool_t isClOff,UInt_t pt) : HReconstructor(name,title) {
  isCoilOff=isClOff;
  setDefParam(pt);
}

void HMdcTargetMon::setDefParam(UInt_t pt) {
  plotType        = pt;
  timeStep        = 10.;
  mode            = kFALSE;
  label           = NULL;
  labelNR         = NULL;
  combToMdc[0][0] = 0;
  combToMdc[0][1] = 1;
  combToMdc[1][0] = 0;
  combToMdc[1][1] = 2;
  combToMdc[2][0] = 0;
  combToMdc[2][1] = 3;
  combToMdc[3][0] = 1;
  combToMdc[3][1] = 2;
  combToMdc[4][0] = 1;
  combToMdc[4][1] = 3;
  combToMdc[5][0] = 2;
  combToMdc[5][1] = 3;

  iterMdcHit      = 0;
  firstEvent      = kTRUE;
  dateFEvent      = 0;
  timeFEvent      = 0;
  dateLEvent      = 0;
  timeLEvent      = 0;
  dPhiCut         = 5.5; //15.; //1.5;
  r0Cut           = 20.; //100.; //25.;

  nZmBins         = 1000; //900;
  zmin            = -500.;//-90; //-5000.;  //-1000.;
  zmax            = 600.;//100; //5000.;   //800.;
  histsMode       = 0;
  numEventsSave   = -1;
  eventCounter    = 0;
  
  fillSeg         = kFALSE;
  stat            = 0;
  sumOfFiles      = kTRUE;
  collectNRuns    = 0;
  runsCounter     = 0;
  for(Int_t s=0;s<6;s++) {
    canvs[s]      = NULL;
    canvsForNR[s] = NULL;
  }
  for(Int_t i=0;i<7;i++) {
    dPhiH[i]      = NULL;
    r0H[i]        = NULL;
    dPhiForNR[i]  = NULL;
    r0ForNR[i]    = NULL;
    for(Int_t s=0;s<6;s++) {
      zVerH[s][i]            = NULL;
      zVerVsEventH[s][i]     = NULL;    
      zVerForNR[s][i]        = NULL;
      zVerVsEventForNR[s][1] = NULL;
      for(Int_t k=0;k<10;k++) {
        zVerDscH[s][i][k]     = NULL;
        zVerDscForNR[s][i][k] = NULL;
      }
   }
  }
  for(Int_t s=0;s<6;s++) {
    useRtdbTarget[s] = kTRUE;
    firstTarPnt[s]   = 0.; 
    lastTarPnt[s]    = 0.;
  }
  drawInOutTracks  = kFALSE;
  inTargetArr      = 0;
  allTargetArr     = 0;
  nRunsDraw        = 0;
  inOutTargCurrRun = 0;
  hTargTrFraction  = 0;
  canvasWidth      = 950;
  canvasHeight     = 700;
  pathHistOneRun   = ".";
  pathHistSumRun   = ".";
  selectEvByTBits  = -1;
  normalizeHists   = kTRUE;
}

HMdcTargetMon::~HMdcTargetMon() {
  // destructor
  if(iterMdcHit) delete iterMdcHit;
  iterMdcHit   = 0;
  if(inTargetArr)  delete inTargetArr;
  inTargetArr  = 0;
  if(allTargetArr) delete allTargetArr;
  allTargetArr = 0;
}

void HMdcTargetMon::setGraphicFormat(const Char_t* fileType) {
  if(fileType==0) typePrintFile = "-";
  else {
    typePrintFile = fileType;
    typePrintFile.ToLower();
  }
}


TH1F* HMdcTargetMon::setTargetZRegion(Double_t fpoint,Double_t lpoint,Int_t nRuns,Int_t sec) {
  // set target Z region for calulating 
  // n.tracks_in_target/n.tracks_out_target
  // nRuns - maximal number of runs in hist
  if(drawInOutTracks || nRuns<2) return 0;
  for(Int_t s=0;s<6;s++) if(sec<0 || sec>5 || s==sec){
    firstTarPnt[s] = fpoint;
    lastTarPnt[s]  = lpoint;
  }
  drawInOutTracks  = kTRUE;
  nRunsDraw        = nRuns;
  inTargetArr      = new Double_t [nRunsDraw];
  allTargetArr     = new Double_t [nRunsDraw];
  for(Int_t i=0;i<nRuns;i++) inTargetArr[i]=allTargetArr[i]=0.;
  inOutTargCurrRun = 0;
  hTargTrFraction  = new TH1F("hTargTrFraction","N.TargetTracks/N.Tracks;Run",nRunsDraw,0.,nRunsDraw);
  hTargTrFraction->SetLabelSize(0.05,"X");
  hTargTrFraction->SetLabelSize(0.05,"Y");
  return hTargTrFraction;
}

void HMdcTargetMon::shiftArrays(void) {
  for(Int_t i=0;i<nRunsDraw-1;i++) {
    inTargetArr[i]  = inTargetArr[i+1];
    allTargetArr[i] = allTargetArr[i+1];
  }
  inTargetArr[nRunsDraw-1]  = 0.;
  allTargetArr[nRunsDraw-1] = 0.;
}

void HMdcTargetMon::fillTargTrFraction(void) {
  if(!drawInOutTracks) return;
  if(inOutTargCurrRun < nRunsDraw-1) inOutTargCurrRun++;
  for(Int_t i=0;i<=inOutTargCurrRun;i++) fillInOutTarHistBin(i);
  if(inOutTargCurrRun == nRunsDraw-1) shiftArrays();
  setEntriesInOutTHist();
}

void HMdcTargetMon::setEntriesInOutTHist(void) {
  Int_t nRuns = inOutTargCurrRun;
  if(allTargetArr[inOutTargCurrRun]>0) nRuns++;
  hTargTrFraction->SetEntries(nRuns);
}

void HMdcTargetMon::fillInOutTarHistBin(Int_t bin) {
  if(allTargetArr[bin]>0) {
    Double_t cont = inTargetArr[bin]/allTargetArr[bin];
    Double_t err  = TMath::Sqrt(inTargetArr[bin])/allTargetArr[bin];
    hTargTrFraction->SetBinContent(bin+1,cont);
    hTargTrFraction->SetBinError(bin+1,err);
  } else {
    hTargTrFraction->SetBinContent(bin+1,0.);
    hTargTrFraction->SetBinError(bin+1,0.);
  }
}

Bool_t HMdcTargetMon::init(void) {
  fMdcHitCat = gHades->getCurrentEvent()->getCategory(catMdcHit);
  if (fMdcHitCat) iterMdcHit = (HIterator *)fMdcHitCat->MakeIterator();
  else {
    Error("init","The category HMdcHit is absent");
    return kFALSE;
  }

  HMdcGeomPar* fMdcGeomPar = (HMdcGeomPar*)gHades->getRuntimeDb()->getContainer("MdcGeomPar");
  if(!fMdcGeomPar) return kFALSE;

  HSpecGeomPar* fSpecGeomPar = (HSpecGeomPar*)gHades->getRuntimeDb()->getContainer("SpecGeomPar");
  if(!fSpecGeomPar) return kFALSE;

  if(fillSeg) {
    fSegCat = gHades->getCurrentEvent()->getCategory(catMdcSeg);
    if (!fSegCat) {
      HMdcDetector* fMdcDet=(HMdcDetector*)gHades->getSetup()->getDetector("Mdc");
      fSegCat = fMdcDet->buildCategory(catMdcSeg);
      if (!fSegCat) return kFALSE;
      gHades->getCurrentEvent()->addCategory(catMdcSeg,fSegCat,"Mdc");
    }
  } else fSegCat=0;
  locSeg.set(2,0,0);
  runId = 0;
  
  return kTRUE;
}

Bool_t HMdcTargetMon::initHists(void) {
  HMdcGetContainers* fGetCont = HMdcGetContainers::getObject();
  Int_t nModsMax=(isCoilOff) ? 4:2;
  Int_t nSectors=0;
  for (Int_t n=0; n<24; n++) listMdc[n]=kFALSE;
  for (Int_t sec = 0; sec < 6; sec++) {
    mdcInSec[sec]=0;
    for(Int_t mod=0; mod<nModsMax; mod++) if(fGetCont->isModActive(sec,mod)) mdcInSec[sec]++;
    if(mdcInSec[sec]>=2) {
      for(Int_t mod=0; mod<nModsMax; mod++) listMdc[sec*4+mod] = fGetCont->isModActive(sec,mod);
      nSectors++;
    } else mdcInSec[sec]=0;
  }
  if(nSectors == 0) {
    Error("init","Numb. of MDC's is not enough for target finding!");
    return kFALSE;
  }

  Char_t name[100];
  Char_t title[100];
  for(Int_t comb=0; comb<6; comb++) nPads[comb]=0;
  gStyle->SetOptStat(10);
  for(Int_t sec=0; sec<6; sec++) {
    for(Int_t mod1=0; mod1<nModsMax-1; mod1++) {
      if(!listMdc[sec*4+mod1]) continue;
      for(Int_t mod2=mod1+1; mod2<nModsMax; mod2++) {
        if(!listMdc[sec*4+mod2]) continue;
        Int_t comb = mod1+mod2;
        if(mod1==0) comb--;
        nPads[comb]++;
        if(dPhiH[comb] == NULL) {
          sprintf(name,"s%im%iv%i_dPhi",sec+1,mod1+1,mod2+1);
          sprintf(title,"S.%i M.%i-%i  #Delta#phi (deg.)",sec+1,mod1+1,mod2+1);
          dPhiH[comb]=new TH1F(name,title,200,-10.,10.);
          sprintf(name,"s%im%iv%i_Rm",sec+1,mod1+1,mod2+1);
          sprintf(title,"S.%i M.%i-%i  R_{min} (mm)",sec+1,mod1+1,mod2+1);
          r0H[comb]=new TH1F(name,title,500,-100.,100.);
        }
        if(zVerH[sec][comb] == NULL) {
          sprintf(name,"s%im%iv%i_Zm",sec+1,mod1+1,mod2+1);
          sprintf(title,"S.%i M.%i-%i",sec+1,mod1+1,mod2+1);
          zVerH[sec][comb]=new TH1F(name,title,nZmBins,zmin,zmax);
          zVerH[sec][comb]->SetFillColor(3);
          if(histsMode==1) {
            zVerH[sec][comb]->GetXaxis()->SetTitle(
                "Downsc.Flag:  #color[4]{0}, #color[2]{1}             Zmin, (mm)");
          } else zVerH[sec][comb]->GetXaxis()->SetTitle("Zmin, (mm)");
          zVerH[sec][comb]->GetXaxis()->SetTitleOffset(0.9);
          if(histsMode==1) {
            sprintf(name,"s%im%iv%i_ZmDS0",sec+1,mod1+1,mod2+1);
            sprintf(title,"DownscalingFlag=0;Zmin, (mm)");
            zVerDscH[sec][comb][0]=new TH1F(name,title,nZmBins,zmin,zmax);
            zVerDscH[sec][comb][0]->SetFillColor(4);
            zVerDscH[sec][comb][0]->SetLineColor(4);
            sprintf(name,"s%im%iv%i_ZmDS1",sec+1,mod1+1,mod2+1);
            sprintf(title,"DownscalingFlag=1;Zmin, (mm)");
            zVerDscH[sec][comb][1]=new TH1F(name,title,nZmBins,zmin,zmax);
            zVerDscH[sec][comb][1]->SetLineColor(2);
          } else if(histsMode==2) {
            Int_t col[10]={2,4,5,6,7,8,9,10,34,36};
            for(Int_t n=0;n<8;n++) {
              sprintf(name,"s%im%iv%i_ZmTR%i",sec+1,mod1+1,mod2+1,n);
              sprintf(title,"Trigger. %i;Zmin, (mm)",n);
              zVerDscH[sec][comb][n]=new TH1F(name,title,nZmBins,zmin,zmax);
              zVerDscH[sec][comb][n]->SetLineColor(col[n]);
              zVerDscH[sec][comb][n]->SetFillColor(0);
            }
          }

          if(plotType==1) {
            sprintf(name,"s%im%iv%i_ZmVev",sec+1,mod1+1,mod2+1);
            sprintf(title,"S.%i M.%i-%i  Z_{min} vs Nev.;Event;Zmin",sec+1,mod1+1,mod2+1);
            zVerVsEventH[sec][comb] = new TH2F(name,title,1000,0,1000,500,zmin,zmax);
//new TH2F(name,title,1000,0,1000,256,0.,256.);


#if ROOT_VERSION_CODE  > ROOT_VERSION(6,0,0)
	    zVerVsEventH[sec][comb]->SetCanExtend(TH1::kAllAxes);
#else
	    zVerVsEventH[sec][comb]->SetBit(TH1::kCanRebin);
#endif

          } else if(plotType==2) {
            sprintf(name,"s%im%iv%i_YvX",sec+1,mod1+1,mod2+1);
            sprintf(title,"S.%i M.%i-%i  Y vs X;X (mm);Y (mm)",sec+1,mod1+1,mod2+1);
            zVerVsEventH[sec][comb] = new TH2F(name,title,30,-30.,30.,30,-30.,30.);
//zVerVsEventH[sec][comb] = new TH2F(name,title,50,-100.,100.,50,-100.,100.);
          } else if(plotType==3) {
            sprintf(name,"s%im%iv%i_ZmVtm",sec+1,mod1+1,mod2+1);
            sprintf(title,"S.%i M.%i-%i  Z_{min} vs ev.time;Time;Zmin",sec+1,mod1+1,mod2+1);
            zVerVsEventH[sec][comb] = new TH2F(name,title,600,0,600,500,zmin,zmax);
//new TH2F(name,title,1000,0,1000,256,0.,256.);

#if ROOT_VERSION_CODE  > ROOT_VERSION(6,0,0)
	    zVerVsEventH[sec][comb]->SetCanExtend(TH1::kAllAxes);
#else
	    zVerVsEventH[sec][comb]->SetBit(TH1::kCanRebin);
#endif
          } else if(plotType==4) {
            sprintf(name,"s%im%iv%i_XvZ",sec+1,mod1+1,mod2+1);
            sprintf(title,"S.%i M.%i-%i  X vs Z;Z (mm);X (mm)",sec+1,mod1+1,mod2+1);
            zVerVsEventH[sec][comb] = new TH2F(name,title,500,zmin,zmax,50,-100.,100.);
          } else if(plotType==5) {
            sprintf(name,"s%im%iv%i_YvZ",sec+1,mod1+1,mod2+1);
            sprintf(title,"S.%i M.%i-%i  Y vs Z;Z (mm);Y (mm)",sec+1,mod1+1,mod2+1);
            zVerVsEventH[sec][comb] = new TH2F(name,title,500,zmin,zmax,50,-100.,100.);
          } else {
            sprintf(name,"s%im%iv%i_ThVZm",sec+1,mod1+1,mod2+1);
            sprintf(title,"Theta vs Zmin;Zmin;Theta");
            zVerVsEventH[sec][comb]=new TH2F(name,title,100,-250.,150.,80,10,90);
          }
        }
      }
    }
  }
  initRunsSumHists();
  return kTRUE;
} 
 
void HMdcTargetMon::initRunsSumHists(void) {
  if(collectNRuns<2) return;  
  Char_t name[100]; 
  for(Int_t sec=0; sec<6; sec++) {
    for(Int_t mod1=0; mod1<3; mod1++) {
      for(Int_t mod2=mod1+1; mod2<4; mod2++) {
        Int_t comb=mod1+mod2;        
        if(mod1==0) comb--;

        if(dPhiH[comb]!=NULL && dPhiForNR[comb]==NULL) {
          sprintf(name,"s%im%iv%i_dPhi_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
          dPhiForNR[comb]=new TH1F(*(dPhiH[comb]));
          dPhiForNR[comb]->SetName(name);
          sprintf(name,"s%im%iv%i_Rm_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
          r0ForNR[comb]=new TH1F(*(r0H[comb]));
          r0ForNR[comb]->SetName(name);          
        }
        if(zVerH[sec][comb]!=NULL && zVerForNR[sec][comb]==NULL) {
          sprintf(name,"s%im%iv%i_Zm_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
          zVerForNR[sec][comb] = new TH1F(*(zVerH[sec][comb]));
          zVerForNR[sec][comb]->SetName(name);
          if(histsMode==1) {
            sprintf(name,"s%im%iv%i_ZmDS0_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerDscForNR[sec][comb][0] = new TH1F(*(zVerDscH[sec][comb][0]));
            zVerDscForNR[sec][comb][0]->SetName(name);
            sprintf(name,"s%im%iv%i_ZmDS1_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerDscForNR[sec][comb][1] = new TH1F(*(zVerDscH[sec][comb][1]));
            zVerDscForNR[sec][comb][1]->SetName(name);
          } else if(histsMode==2) {
            for(Int_t n=0;n<8;n++) {
              sprintf(name,"s%im%iv%i_ZmTR%i_%iruns",sec+1,mod1+1,mod2+1,n,collectNRuns);
              zVerDscForNR[sec][comb][n]=new TH1F(*(zVerDscH[sec][comb][n]));
              zVerDscForNR[sec][comb][n]->SetName(name);
            }
          }

          if(plotType==1) {
            sprintf(name,"s%im%iv%i_ZmVev_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerVsEventForNR[sec][comb]=new TH2F(*(zVerVsEventH[sec][comb]));
            zVerVsEventForNR[sec][comb]->SetName(name);

#if ROOT_VERSION_CODE  > ROOT_VERSION(6,0,0)
	    zVerVsEventForNR[sec][comb]->SetCanExtend(TH1::kAllAxes);
#else
	    zVerVsEventForNR[sec][comb]->SetBit(TH1::kCanRebin);
#endif




          } else if(plotType==2) {
            sprintf(name,"s%im%iv%i_YvX_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerVsEventForNR[sec][comb]=new TH2F(*(zVerVsEventH[sec][comb]));
            zVerVsEventForNR[sec][comb]->SetName(name);
          } else if(plotType==3) {
            sprintf(name,"s%im%iv%i_ZmVtm_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerVsEventForNR[sec][comb]=new TH2F(*(zVerVsEventH[sec][comb]));
            zVerVsEventForNR[sec][comb]->SetName(name);
          } else if(plotType==4) {
            sprintf(name,"s%im%iv%i_XvZ_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerVsEventForNR[sec][comb]=new TH2F(*(zVerVsEventH[sec][comb]));
            zVerVsEventForNR[sec][comb]->SetName(name);
          } else if(plotType==5) {
            sprintf(name,"s%im%iv%i_YvZ_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerVsEventForNR[sec][comb]=new TH2F(*(zVerVsEventH[sec][comb]));
            zVerVsEventForNR[sec][comb]->SetName(name);
          } else {
            sprintf(name,"s%im%iv%i_ThVZm_%iruns",sec+1,mod1+1,mod2+1,collectNRuns);
            zVerVsEventForNR[sec][comb]=new TH2F(*(zVerVsEventH[sec][comb]));
            zVerVsEventForNR[sec][comb]->SetName(name);
          }
        }
      }
    }
  }
} 
 
Bool_t HMdcTargetMon::reinit(void) {
  
  UInt_t newRunId = gHades->getDataSource()->getCurrentRunId();
  if(newRunId > 0 && newRunId == runId) return kTRUE;
  
//   if(runId > 0) addHistsToRunsSum();
   if(!initHists()) return kFALSE;
  evHeader = gHades->getCurrentEvent()->getHeader();
  if(!evHeader) {
    Error("reinit","Can't get pointer to event header.");
    return kFALSE;
  }

  HMdcGeomPar* fMdcGeomPar = (HMdcGeomPar*)gHades->getRuntimeDb()->getContainer("MdcGeomPar");
  if(!fMdcGeomPar) return kFALSE;
  for(Int_t s=0;s<6;s++) {
    for(Int_t m=0;m<4;m++) {
      HModGeomPar* mGeomPar = fMdcGeomPar->getModule(s,m);
      if(mGeomPar) transf[s*4+m] = &(mGeomPar->getLabTransform());
      else         transf[s*4+m] = NULL;
    }
  }

  HSpecGeomPar* fSpecGeomPar = (HSpecGeomPar*)gHades->getRuntimeDb()->getContainer("SpecGeomPar");
  if(!fSpecGeomPar) return kFALSE;
  for(Int_t sec=0;sec<6;sec++) if(useRtdbTarget[sec]) {
    Int_t nTarg=fSpecGeomPar->getNumTargets()-1;
    target[sec] = fSpecGeomPar->getTarget(    0)->getTransform().getTransVector() +
                  fSpecGeomPar->getTarget(nTarg)->getTransform().getTransVector();
    target[sec] /= 2.;
  }
  HMdcSizesCells* pMdcSizesCells = HMdcSizesCells::getExObject();
  const HGeomVector& firsPnt     = pMdcSizesCells->getTargetFirstPoint();
  const HGeomVector& lastPnt     = pMdcSizesCells->getTargetLastPoint();
  Double_t targHalfLength = (lastPnt.getZ()-firsPnt.getZ())*0.5;
  for(Int_t sec=0;sec<6;sec++) {
    Double_t tarHLngth = (lastTarPnt[sec]-firstTarPnt[sec])*0.5;
    if(tarHLngth <= 0.001) tarHLngth = targHalfLength;
    firstTarPnt[sec] = target[sec].getZ()-tarHLngth;
    lastTarPnt[sec]  = target[sec].getZ()+tarHLngth;
  }
  for(Int_t sec=0;sec<6;sec++) {
    printf("*** Sector %i Target: X=%7.2f Y=%7.2f Z=%7.2f (%7.2f <-> %7.2f)\n",sec+1,
        target[sec].getX(),target[sec].getY(),target[sec].getZ(),firstTarPnt[sec],lastTarPnt[sec]);
  }
  if(sumOfFiles) {
    collectNRuns=0;       // collect n.runs for sumOfFiles=kFALSE only !!!
    extractFileInfo();
    if(firstEvent) {
      setCanvName();
      if(!mode) {
        timer.Reset();
        timer.Start();
      }
      firstEvent=kFALSE;
    }
  } else {
    if(firstEvent) {
      extractFileInfo();
      setCanvName();
      drawCanvases();
      if(collectNRuns>1) {
        firstRunName = fileNameR;
        lastRunName  = fileNameR;
        drawCanvasesRunsSum();
      }
    }
    stat = 0;
    if(!mode) {
      timer.Reset();
      timer.Start();
    }
    firstEvent = kFALSE;
  }

  return kTRUE;
}

Bool_t HMdcTargetMon::finalize(void) {
  runsCounter++;
  if(collectNRuns > 1) {
    addHistsToRunsSum();     // add and draw hists
    saveCanvasesForNR();
  }
  drawCanvases();
  saveCanvases();
  return kTRUE;
}

void HMdcTargetMon::saveCanvases(void) {
  if(stat<1) return;
  for(Int_t comb=0; comb<6; comb++) {
    if(nPads[comb] == 0) continue;
    TCanvas *canv = canvs[comb]; //(TCanvas*)gROOT->FindObject(cnComb[comb]);
    if(canv == NULL) continue;
    saveCanvas(canv,pathHistOneRun);
  }
}

void HMdcTargetMon::saveCanvasesForNR(void) {
  for(Int_t comb=0; comb<6; comb++) {
    if(nPads[comb] == 0) continue;
    TCanvas *canv = canvsForNR[comb];
    if(canv == NULL) continue;
    saveCanvas(canv,pathHistSumRun);
  }
}

void HMdcTargetMon::saveCanvas(TCanvas* canv,TString& path) {
  if(canv == 0) return;
  TString fileName(path);
  fileName += "/";
  fileName += canv->GetName();
  if(typePrintFile.Length() == 0)     canv->SaveAs("");  // ps file will be cr.
  if(typePrintFile.Contains(".pdf"))  canv->SaveAs((fileName+".pdf").Data());
  if(typePrintFile.Contains(".ps"))   canv->SaveAs((fileName+".ps").Data());
  if(typePrintFile.Contains(".eps"))  canv->SaveAs((fileName+".eps").Data());
  if(typePrintFile.Contains(".gif"))  canv->SaveAs((fileName+".gif").Data());
  if(typePrintFile.Contains(".svg"))  canv->SaveAs((fileName+".svg").Data());
  if(typePrintFile.Contains(".jpg"))  canv->SaveAs((fileName+".jpg").Data());
  if(typePrintFile.Contains(".root")) canv->SaveAs((fileName+".root").Data());
}
    
Int_t HMdcTargetMon::execute(void) {

  gSystem->ProcessEvents();
  
  UInt_t newRunId = 0;
  if(dateFEvent == 0) {
    dateFEvent  = evHeader->getDate();
    timeFEvent  = evHeader->getTime();
  }
  newRunId = gHades->getDataSource()->getCurrentRunId();
  if(newRunId == 0) return 0;
  if(runId != newRunId) {
      // New run but not first run! ------------------------------------------
    fillTargTrFraction();
    if( !sumOfFiles ) {
      runsCounter++;
      drawCanvases();
      saveCanvases();  // save hists for each run
      if(numEventsSave > 0) eventCounter = 0;
      if(collectNRuns > 1) {
        lastRunName = fileNameR;
        addHistsToRunsSum();     // add and draw hists
        if(runsCounter==collectNRuns) saveCanvasesForNR();
      }
      extractFileInfo();
      lastRunName  = fileNameR;
      
      if(collectNRuns>1 && runsCounter==collectNRuns) {
        runsCounter  = 0;
        firstRunName = fileNameR;
        lastRunName  = fileNameR;
        resetHistsRunsSum();
        drawCanvasesRunsSum();
      }

       stat = 0;
       setCanvName();
       resetHists();

       if(!mode) {
         timer.Reset();
         timer.Start();
       }
       firstEvent=kFALSE;
    }
  }
  
  UInt_t downscalingFlag=evHeader->getDownscalingFlag() & 1;
  
  Int_t tBit = evHeader->getTBit();
  if(selectEvByTBits>0 && (selectEvByTBits&tBit)==0) return 1;

//if(selectEvByTBits != tBit) return 1;

// June10:
// PT1 (TOF mult.):        12            2048
// PT2 (RPC mult.):        13            4096
// PT3 (FW  mult.):        14            8192
  
  tBit = tBit&255;
  Int_t hNum = -1;
  if(histsMode==2) {
    if(tBit&1)       hNum = (tBit&32) ? 1:0;  // 0 - mult.4; 1 - mult.4+opp.sec.
    else if(tBit& 2) hNum = 2;                // minimum bias
    else if(tBit& 4) hNum = (tBit&32) ? 4:3;  // 3 - mult.2; 4 - mult.2+opp.sec.
    else if(tBit& 8) hNum = 5;                // M1 //small angle
    else if(tBit&16) hNum = 7;                // M3 //pulser;
    else if(tBit&32) hNum = 6;                // opp.sec.
  }
  
  
//Trigger Box setting for alignment run:
//   1         2        4       8       16           32
// 1         2        3       4        5           6             7       8
//M4    Start      Veto       M1      M3    opp. Sec.          1kHz   r.puls
// 2         C        D       C       0           2              0 0
//on        on      on     on      on         on           OFF   on
  
  
  if(evHeader->getId() != 1) return 0;
  timeLEvent    = evHeader->getTime();
  UInt_t nevent = evHeader->getEventSeqNumber();
  
// static UInt_t oldEvn=0;
// static UInt_t mmm=0;
// if(oldEvn==0) {
//   oldEvn=nevent;
//   mmm=nevent;
// }
// if((tBit&128)) {
//   if(nevent-oldEvn > 200) {
//     printf("nevent=%i  nevent-oldEvn=%i\n",nevent,nevent-oldEvn);
//     mmm=nevent;
//   }
//   oldEvn=nevent;
// }
// nevent-=mmm;
// if((tBit&1)==0) return 0;
  for(Int_t n=0; n<24; n++) nhits[n]=0;
  HGeomVector vHit;
  HMdcHit* hit;
  iterMdcHit->Reset();
  while ( (hit=(HMdcHit*)iterMdcHit->Next()) != 0 ){
    //if(hit->getChi2()<0. || hit->getChi2()>30.) continue;
    //if(hit->getOffset()<-10.||hit->getOffset()>50.) continue;
    Int_t sec  = hit->getSector();
    if(mdcInSec[sec]<2) continue;
    Int_t mod  = hit->getModule();
    Int_t indx = sec*4+mod;
    if(!listMdc[indx]) continue;
    if(nhits[indx]>=1000) {
      printf("Too many clusters! Skip event!\n");
      return kSkipEvent;
    }
    //   if(mod != modF && mod != modS) continue;

    vHit.setXYZ(hit->getX(),hit->getY(),0.);
    vHit=transf[indx]->transFrom(vHit);
    Int_t indx2=nhits[indx];
    x[indx][indx2] = vHit.getX() - target[sec].getX();  // shift Z to target position
    y[indx][indx2] = vHit.getY() - target[sec].getY();  //
    z[indx][indx2] = vHit.getZ();
    vHit -= target[sec];
    Double_t phiN=TMath::ATan2(vHit.getY(),vHit.getX())*180./TMath::Pi();
    if(phiN<0.) phiN+=360.;
//    Double_t thetaN=acos(vHit.getZ()/vHit.length())*180./TMath::Pi();
    phi[indx][indx2]=phiN;
    nhits[indx]++;
  }

//zVerVsEventH[0][5]->Fill(nevent+0.5,tBit);
  if(fSegCat) fSegCat->Clear(); 
    
  for(Int_t sec=0; sec<6; sec++) {
    if(mdcInSec[sec]<2) continue;
    
    Int_t iS  = sec*4;
    locSeg[0] = sec;
    HGeomVector& targ = target[sec];
    for(Int_t mod1=0; mod1<3; mod1++) {
      Int_t iM1= iS+mod1;
      if(nhits[iM1]==0) continue;
      locSeg[1]=mod1>>1;   // po pervomu modulyu !!!
      for(Int_t mod2=mod1+1; mod2<4; mod2++) {
        Int_t iM2= iS+mod2;
        if(nhits[iM2]==0) continue;
        Int_t comb = mod1+mod2;
        if(mod1==0) comb--;
        Int_t nTracks = 0;
        for(Int_t hitM1=0; hitM1<nhits[iM1]; hitM1++) {
          for(Int_t hitM2=0; hitM2<nhits[iM2]; hitM2++) {
            TrackPar &track  =  trArr[nTracks];
            //-------------------------------------------
            Double_t dX      = x[iM2][hitM2]-x[iM1][hitM1];
            Double_t dY      = y[iM2][hitM2]-y[iM1][hitM1];
            Double_t phiTr   = TMath::ATan2(dY,dX);
            Double_t r0      = y[iM1][hitM1]*TMath::Cos(phiTr)-x[iM1][hitM1]*TMath::Sin(phiTr);
            Double_t dZ      = z[iM2][hitM2]-z[iM1][hitM1];
            track.theta      = TMath::ATan2(TMath::Sqrt(dX*dX+dY*dY),dZ);
//if(TMath::Abs(track.theta)<45.*TMath::DegToRad()) continue;
            if( TMath::Abs(track.theta) < 0.01 ) continue;
            track.z = z[iM1][hitM1] - TMath::Cos(track.theta)/TMath::Sin(track.theta) *
                      (x[iM1][hitM1]*TMath::Cos(phiTr)+y[iM1][hitM1]*TMath::Sin(phiTr));
//printf("%f %f   %f %f\n",track.z,track.theta,z[iM1][hitM1],z[iM2][hitM2]);
            //-------------------------------------------
            Double_t           dPhi  = phi[iM1][hitM1]-phi[iM2][hitM2];
            if(dPhi<-180.)     dPhi += 360.;
            else if(dPhi>180.) dPhi -= 360.;
            dPhiH[comb]->Fill(dPhi);

            //Double_t dTheta=theta[iM1][hitM1]-theta[iM2][hitM2];
//if(theta[iM1][hitM1]<40.||theta[iM2][hitM2]<40.) continue;
            if(TMath::Abs(dPhi)>=dPhiCut) continue;
            //-------------------------------------------
            r0H[comb]->Fill(r0);
            //-------------------------------------------
            
            stat++;
            
            track.x0 = -100000.;
            track.y0 = -100000.;
            
            if(plotType==2 && TMath::Abs(dZ)>1.e-20 && TMath::Abs(track.z-targ.getZ())<10.) {
              track.y0 = dY/dZ*(targ.getZ()-z[iM1][hitM1]) + y[iM1][hitM1]+targ.getY();
              track.x0 = dX/dZ*(targ.getZ()-z[iM1][hitM1]) + x[iM1][hitM1]+targ.getX();
              zVerVsEventH[sec][comb]->Fill(track.x0,track.y0);
            }
            if(plotType==4) {
              track.y0 = dY/dZ*(targ.getZ()-z[iM1][hitM1]) + y[iM1][hitM1]+targ.getY();
              track.x0 = dX/dZ*(targ.getZ()-z[iM1][hitM1]) + x[iM1][hitM1]+targ.getX();
              zVerVsEventH[sec][comb]->Fill(track.z,track.x0);
            } else if(plotType==5) {
              track.y0 = dY/dZ*(targ.getZ()-z[iM1][hitM1]) + y[iM1][hitM1]+targ.getY();
              track.x0 = dX/dZ*(targ.getZ()-z[iM1][hitM1]) + x[iM1][hitM1]+targ.getX();
              zVerVsEventH[sec][comb]->Fill(track.z,track.y0);
            }
            
            //-------------------------------------------
            if(TMath::Abs(r0)>=r0Cut) continue;
            if(fillSeg) {
              HMdcSeg* fSeg = (HMdcSeg*)fSegCat->getNewSlot(locSeg);
              if(!fSeg) Warning("execute","S.%i No HMdcSeg slot available",sec+1);
              else {
                fSeg=new(fSeg) HMdcSeg;
                fSeg->setPar(track.z,r0,track.theta,phiTr);
                fSeg->setSec(locSeg[0]);
                fSeg->setIOSeg(locSeg[1]);
                fSeg->setFlag((mod1<<2)+mod2);
                fSeg->setChi2(100.); //!!!!!!!!!!!!!!!!!
              }
            }
            
            nTracks++;
            if(nTracks>=10000) {
              Warning("execut","To many tracks. Return kSkipEvent!");
              return kSkipEvent;
            }
          }
        }
        // Fill histogramms:
        if(nTracks==0) continue;
        Double_t wt = normalizeHists ? 1./Double_t(nTracks) : 1.;
        for(Int_t n=0;n<nTracks;n++) {
          TrackPar &track  =  trArr[n];
          zVerH[sec][comb]->Fill(track.z,wt);
          if(drawInOutTracks) {
            allTargetArr[inOutTargCurrRun] += wt;
            if(track.z>firstTarPnt[sec] && track.z<lastTarPnt[sec]) inTargetArr[inOutTargCurrRun] += wt;
          }
          if(histsMode==1) zVerDscH[sec][comb][downscalingFlag]->Fill(track.z,wt);
          else if(histsMode==2 && hNum>=0 && hNum<8) zVerDscH[sec][comb][hNum]->Fill(track.z,wt);
          if(plotType == 1) {
            if(track.z>zmin && track.z<zmax) zVerVsEventH[sec][comb]->Fill(nevent+0.5,track.z,wt);
          }
          else if(plotType == 3) {
            if(track.z>zmin && track.z<zmax) zVerVsEventH[sec][comb]->Fill(eventTime()+0.5,track.z,wt);
          }
        }
      }
    }
  }
  if(!mode) {
    if(timer.CpuTime()>=timeStep) {
      if(drawInOutTracks) {
        fillInOutTarHistBin(inOutTargCurrRun);
        setEntriesInOutTHist();
      }
      drawCanvases();
      timer.Reset();
    }
    timer.Start(kFALSE);
  }
  
  // Saving canvases for each "numEventsSave" events:
  if(numEventsSave > 0) {
    eventCounter++;
    if(eventCounter%numEventsSave == 0) {
      if(drawInOutTracks) {
        fillInOutTarHistBin(inOutTargCurrRun);
        setEntriesInOutTHist();
      }
      drawCanvases();
      saveCanvases();
    }
  }
 
  return 0;
}

void HMdcTargetMon::extractFileInfo(void) {
  dateFEvent  = evHeader->getDate();
  if(timeFEvent==0) timeFEvent  = evHeader->getTime();
  TString fileNameOld(fileNameR);
  
  fileNameR = gHades->getDataSource()->getCurrentFileName();
  runId     = gHades->getDataSource()->getCurrentRunId();
  fileNameR.Replace(0, fileNameR.Last('/') + 1, ""); // remove path
  Int_t indpnt = fileNameR.Index(".");
  if(indpnt == 13 || indpnt==15) {                   // file name (be...,)
    fileNameR = fileNameR.Remove(13);
  } else {
    fileNameR.Clear();
    fileNameR += runId;
  }

  if(firstEvent || !sumOfFiles) fileName = fileNameR;
  else {
    fileName += ".";
//    fileName += fileNameR;
  }
}

void HMdcTargetMon::fillDateTime(void) {
  UChar_t* dt  = (UChar_t*)&dateFEvent;
  UChar_t* tm1 = (UChar_t*)&timeFEvent;
  UChar_t* tm2 = (UChar_t*)&timeLEvent;
  Char_t buf[100];
  UChar_t d = dt[0];
  UChar_t h1 = tm1[2];
  UChar_t h2 = tm2[2];
  h1 += 2;
  if(h1 > 23) {
    h1 -= 24;
    d += 1;
  }
  h2 += 2;
  if(h2 > 23) h2 -= 24;
  sprintf(buf,"%02i-%02i-%4i:  %02i:%02i:%02i - %02i:%02i:%02i\n",
      d,dt[1]+1,1900+dt[2],h1,tm1[1],tm1[0],h2,tm2[1],tm2[0]);
  dateTime=buf;
}

Int_t HMdcTargetMon::eventTime(void) {
  UChar_t* tm1=(UChar_t*)&timeFEvent;
  UChar_t* tm2=(UChar_t*)&timeLEvent;
  UInt_t t1=(((UInt_t)tm1[2])*60+((UInt_t)tm1[1]))*60+(UInt_t)tm1[0];
  UInt_t t2=(((UInt_t)tm2[2])*60+((UInt_t)tm2[1]))*60+(UInt_t)tm2[0];
  if(t1<=t2) return t2-t1;
  return (t2+86400)-t1;
}

void HMdcTargetMon::setCanvName(void) {
//   sprintf(cnCut,"cR%icuts",runId);
//   sprintf(ctCut,"Run %s    Cuts",fileNameR.Data());
  for(Int_t comb=0; comb<6; comb++)
    if(nPads[comb]>0) {
      sprintf(cnComb[comb],"target%s_%s_M%i%i",addCnName.Data(),
          fileNameR.Data(),combToMdc[comb][0]+1,combToMdc[comb][1]+1);
      sprintf(ctComb[comb],"Run %s  %s  MDC %i-%i",fileNameR.Data(),
          addCnName.Data(),combToMdc[comb][0]+1,combToMdc[comb][1]+1);
      if(canvs[comb]) {
        canvs[comb]->SetName(cnComb[comb]);
        canvs[comb]->SetTitle(ctComb[comb]);
        canvs[comb]->Update();
      }
   }
}

void HMdcTargetMon::setCanvNameForNR(void) {
  if(collectNRuns<2) return;
  for(Int_t comb=0; comb<6; comb++)
    if(nPads[comb]>0) {
      sprintf(cnCombForNR[comb],"targetSum%iruns%s_%s-%s_M%i%i",
          collectNRuns,addCnName.Data(),
          firstRunName.Data(),lastRunName.Data(),
          combToMdc[comb][0]+1,combToMdc[comb][1]+1);
      sprintf(ctCombForNR[comb],"Runs %s-%s  %s  MDC %i-%i",
          firstRunName.Data(),lastRunName.Data(),
          addCnName.Data(),combToMdc[comb][0]+1,combToMdc[comb][1]+1);
      if(canvsForNR[comb]) {
        canvsForNR[comb]->SetName(cnCombForNR[comb]);
        canvsForNR[comb]->SetTitle(ctCombForNR[comb]);
        canvsForNR[comb]->Update();
      }
   }
}

void HMdcTargetMon::setCanvasSize(Int_t ww, Int_t wh) {
  if(ww>50) canvasWidth  = ww;
  if(wh>50) canvasHeight = wh;
}

void HMdcTargetMon::drawCanvases(void) {
  fillDateTime();
  Char_t title[200];
  if(label==0) label=new TPaveLabel(0.1,0.955,0.9,0.995," ");
//  sprintf(title,"Run:   #color[4]{%s}       Date:   #color[4]{%s}",
//      fileName.Data(),dateTime.Data());
  if(dateFEvent==0) sprintf(title,"%s Run:   #color[4]{%s}",addCnName.Data(),fileName.Data());
  else              sprintf(title,"%s Run:   #color[4]{%s}       Date:   #color[4]{%s}",
  	                    addCnName.Data(),fileName.Data(),dateTime.Data());
  label->SetLabel(title);
  Int_t nPadsPerSector = drawInOutTracks ? 3 : 2;
  for(comb=0; comb<6; comb++) {
    if(nPads[comb]==0) continue;
    if(canvs[comb] == 0) {
      Int_t yln = canvasHeight;
      if(nPads[comb]>1) yln += (nPads[comb]-1)*100;
      if(yln>900) yln = 900;
      canvs[comb] = new TCanvas(cnComb[comb],ctComb[comb],canvasWidth,yln);
      currCanvas = canvs[comb];
      currCanvas->cd();
      currCanvas->SetFillColor(10);
      label->Draw();
      Double_t dY=0.95/nPads[comb];
      Int_t padsRow=0;
      for(Int_t sec=0; sec<6; sec++) {
        if(!zVerH[sec][comb]) continue;
        pad         = padsRow*nPadsPerSector;
        Double_t y1 = dY*(nPads[comb]-padsRow-1)+0.0001;
        Double_t y2 = dY*(nPads[comb]-padsRow)-0.0001;
        
        drawPad(0.0001,y1,0.6999,y2);
        sprintf(title,"sec.%i mod. %i-%i",sec+1,combToMdc[comb][0]+1,combToMdc[comb][1]+1);
        zVerH[sec][comb]->SetTitle(title);
        zVerH[sec][comb]->SetMinimum(0.);
        zVerH[sec][comb]->Draw();
        
        if(drawInOutTracks) {
          TLine* ln = new TLine();
          ln->SetLineColor(2);
          ln->SetLineWidth(4);
          ln->DrawLine(firstTarPnt[sec],0.,lastTarPnt[sec],0.);
        }
        
        fPads[comb][pad]->SetGridx();
        fPads[comb][pad]->SetGridy();
        
        if(histsMode==1) {
          zVerDscH[sec][comb][0]->Draw("same");
          zVerDscH[sec][comb][1]->Draw("same");
        } else if(histsMode==2)
            for(Int_t n=0;n<8;n++) zVerDscH[sec][comb][n]->Draw("same");
        
        Double_t y1b = drawInOutTracks ? (y1+y2)*0.4+0.0001 : y1;
        Double_t y2b = drawInOutTracks ? (y1+y2)*0.4-0.0001 : y2;
        pad++;
        drawPad(0.7001,y1b,0.9999,y2);
        if(plotType==2) {
          sprintf(title,"%s Z=%.2f",zVerVsEventH[sec][comb]->GetTitle(),target[sec].getZ());
          zVerVsEventH[sec][comb]->SetTitle(title);
        }
	gPad->SetGridx();
	gPad->SetGridy();
        zVerVsEventH[sec][comb]->Draw("colz");
        
        if(drawInOutTracks) {
          pad++;
          drawPad(0.7001,y1,0.9999,y2b);
	  gPad->SetGridx();
	  gPad->SetGridy();
          hTargTrFraction->SetLineColor(2);
          hTargTrFraction->Draw();
        }
        padsRow++;
        
      }
    } else {
      canvs[comb]->cd();
      for(Int_t pad=0;pad<(nPadsPerSector*nPads[comb]); pad++) fPads[comb][pad]->Modified();
    }
    canvs[comb]->Modified();
    canvs[comb]->Update();
  }
}

void HMdcTargetMon::drawPad(Double_t x1,Double_t y1,Double_t x2,Double_t y2) {
  Char_t title[20];
  sprintf(title,"pad%i_%02i",comb,pad);
  currCanvas->cd();
  fPads[comb][pad] = new TPad(title,title,x1,y1,x2,y2);
  fPads[comb][pad]->Draw();
  fPads[comb][pad]->cd();
}

void HMdcTargetMon::drawCanvasesRunsSum(void) {
  if(collectNRuns<2) return;
  fillDateTime();
  setCanvNameForNR();
  Char_t title[200];
  if(labelNR==0) labelNR=new TPaveLabel(0.1,0.955,0.9,0.995," ");
//  sprintf(title,"Run:   #color[4]{%s}       Date:   #color[4]{%s}",
//      fileName.Data(),dateTime.Data());
  sprintf(title,"%s %i runs: #color[4]{%s-%s}",addCnName.Data(),runsCounter,firstRunName.Data(),lastRunName.Data());
  labelNR->SetLabel(title);
  Int_t nPadsPerSector = drawInOutTracks ? 3 : 2;
  for(comb=0; comb<6; comb++) {
    if(nPads[comb]==0) continue;
    if(canvsForNR[comb] == 0) {
      Int_t yln = canvasHeight;
      if(nPads[comb]>1) yln += (nPads[comb]-1)*100;
      if(yln>900) yln = 900;
      canvsForNR[comb] = new TCanvas(cnCombForNR[comb],ctCombForNR[comb],canvasWidth,yln);
      currCanvas = canvsForNR[comb];
      currCanvas->cd();
      currCanvas->SetFillColor(10);
      labelNR->Draw();
      Double_t dY      = 0.95/nPads[comb];
      Int_t    padsRow = 0;
      for(Int_t sec=0; sec<6; sec++) {
        if(!zVerForNR[sec][comb]) continue;
        pad         = padsRow*nPadsPerSector;
        Double_t y1 = dY*(nPads[comb]-padsRow-1)+0.0001;
        Double_t y2 = dY*(nPads[comb]-padsRow)-0.0001;
        
        drawPadS(0.0001,y1,0.6999,y2);
        sprintf(title,"sec.%i mod. %i-%i",sec+1,
            combToMdc[comb][0]+1,combToMdc[comb][1]+1);
        zVerForNR[sec][comb]->SetTitle(title);
        zVerForNR[sec][comb]->SetMinimum(0.);
        zVerForNR[sec][comb]->Draw();
        
        if(drawInOutTracks) {
          TLine* ln = new TLine();
          ln->SetLineColor(2);
          ln->SetLineWidth(4);
          ln->DrawLine(firstTarPnt[sec],0.,lastTarPnt[sec],0.);
        }
        
        fPadsForNR[comb][pad]->SetGridx();
        fPadsForNR[comb][pad]->SetGridy();
        
        if(histsMode==1) {
          zVerDscForNR[sec][comb][0]->Draw("same");
          zVerDscForNR[sec][comb][1]->Draw("same");
        } else if(histsMode==2)
            for(Int_t n=0;n<8;n++) zVerDscForNR[sec][comb][n]->Draw("same");
        
        Double_t y1b = drawInOutTracks ? (y1+y2)*0.4+0.0001 : y1;
        Double_t y2b = drawInOutTracks ? (y1+y2)*0.4-0.0001 : y2;
        pad++;
        drawPadS(0.7001,y1b,0.9999,y2);
        if(plotType==2) {
          sprintf(title,"%s Z=%.2f",zVerVsEventForNR[sec][comb]->GetTitle(),target[sec].getZ());
          zVerVsEventForNR[sec][comb]->SetTitle(title);
        }
	gPad->SetGridx();
	gPad->SetGridy();
        zVerVsEventForNR[sec][comb]->Draw("colz");
        
        if(drawInOutTracks) {
          pad++;
          drawPadS(0.7001,y1,0.9999,y2b);
	  gPad->SetGridx();
	  gPad->SetGridy();
          hTargTrFraction->SetLineColor(2);
          hTargTrFraction->Draw();
        }
        padsRow++;
      }
    } else {
      canvsForNR[comb]->cd();
      for(Int_t pad=0;pad<(nPadsPerSector*nPads[comb]); pad++) 
          fPadsForNR[comb][pad]->Modified();
    }
    canvsForNR[comb]->Modified();
    canvsForNR[comb]->Update();
  }
}

void HMdcTargetMon::drawPadS(Double_t x1,Double_t y1,Double_t x2,Double_t y2) {
  Char_t title[20];
  sprintf(title,"pad%i_%02iS",comb,pad);
  currCanvas->cd();
  fPadsForNR[comb][pad] = new TPad(title,title,x1,y1,x2,y2);
  fPadsForNR[comb][pad]->Draw();
  fPadsForNR[comb][pad]->cd();
}

void HMdcTargetMon::setTargPos(Double_t xt, Double_t yt, Double_t zt,Int_t sec) {
  // if sec <0 use it for all sectors
  if(sec>=0 && sec<6) {
    useRtdbTarget[sec] = kFALSE;
    target[sec].setXYZ(xt,yt,zt);
  } else  for(Int_t s=0;s<6;s++) {
    useRtdbTarget[s] = kFALSE;
    target[s].setXYZ(xt,yt,zt);
  }
}

void HMdcTargetMon::setHistPar(Int_t nb, Double_t z1, Double_t z2) {
  nZmBins=nb;
  zmin=z1;
  zmax=z2;
}

void HMdcTargetMon::resetHists(void) {
  for(Int_t i=0;i<6;i++) {
    if(dPhiH[i]) dPhiH[i]->Reset();
    if(r0H[i]) r0H[i]->Reset();
    for(Int_t s=0;s<6;s++) {        
      if(zVerH[s][i]) zVerH[s][i]->Reset();
      if(zVerVsEventH[s][i]) zVerVsEventH[s][i]->Reset();
      for(Int_t k=0;k<10;k++) if(zVerDscH[s][i][k]) zVerDscH[s][i][k]->Reset();
    }
  }
  drawCanvases();
}

void HMdcTargetMon::resetHistsRunsSum(void) {
  if(collectNRuns<2) return;
  for(Int_t i=0;i<6;i++) {
    if(dPhiForNR[i] != NULL) dPhiForNR[i]->Reset();
    if(r0ForNR[i]   != NULL) r0ForNR[i]->Reset();
    for(Int_t s=0;s<6;s++) {        
      if(zVerForNR[s][i]        != NULL) zVerForNR[s][i]->Reset();
      if(zVerVsEventForNR[s][i] != NULL) zVerVsEventForNR[s][i]->Reset();
      for(Int_t k=0;k<10;k++) if(zVerDscForNR[s][i][k] != NULL) zVerDscForNR[s][i][k]->Reset();
    }
  }
  drawCanvasesRunsSum();
}

void HMdcTargetMon::addHistsToRunsSum(void) {
  if(collectNRuns<2) return;
  for(Int_t i=0;i<6;i++) {
    if(dPhiH[i] != NULL) dPhiForNR[i]->Add(dPhiH[i]);
    if(r0H[i]   != NULL  ) r0ForNR[i]->Add(r0H[i]);
    for(Int_t s=0;s<6;s++) {        
      if(zVerH[s][i]        != NULL) zVerForNR[s][i]->Add(zVerH[s][i]);
      if(zVerVsEventH[s][i] != NULL) zVerVsEventForNR[s][i]->Add(zVerVsEventH[s][i]);
      for(Int_t k=0;k<10;k++) if(zVerDscH[s][i][k] != NULL) zVerDscForNR[s][i][k]->Add(zVerDscH[s][i][k]);
    }
  }
  drawCanvasesRunsSum();
}

Bool_t HMdcTargetMon::readMonParam(TString fileMonParam) {
  FILE* file = fopen(fileMonParam.Data(),"r");
  if(file == NULL) {
    Error("readMonParan","File of monitor parameters has been not found !!!");
    return kFALSE;
  }
  TString buffer;
  TString p[6];
  while(buffer.Gets(file)) {
    Int_t ind = buffer.First('#');
    if(ind == 0)  continue;              // Skip line comment
    else if(ind>0) buffer.Resize(ind);   // Remove comment at the line end
    buffer.ToLower();
    TObjArray* a = buffer.Tokenize(" ");
    Int_t np = a->GetEntries()-1;
    TString name = ((TObjString*)(a->At(0)))->GetString();
    if(np > 0 && np<7) {
      for(Int_t n=0;n<np;n++) p[n] = ((TObjString*)(a->At(n+1)))->GetString();
      TString &p1 = p[0];
      if(np == 1) {
        if     (name.EqualTo("selecttrigerbit"))    selectEvByTBits = p1.Atoi();
        else if(name.EqualTo("hist1rmincut"))       r0Cut           = p1.Atof();
        else if(name.EqualTo("donormalization"))    normalizeHists  = p1.Atoi();
        else if(name.EqualTo("hist1type"))          histsMode       = p1.Atoi();
        else if(name.EqualTo("hist2type"))          plotType        = p1.Atoi();
        else if(name.EqualTo("numeventssave"))      numEventsSave   = p1.Atoi();
        else if(name.EqualTo("numrunscollect"))     collectNRuns    = p1.Atoi();
        else if(name.EqualTo("selecttrigerbit"))    selectEvByTBits = p1.Atoi();
        else if(name.EqualTo("saveas"))             typePrintFile   = p1;
        else if(name.EqualTo("pathforonerunhist"))  pathHistOneRun  = p1;
        else if(name.EqualTo("pathforsumrunshist")) pathHistSumRun  = p1;
        else if(name.EqualTo("draweachrun"))        sumOfFiles      = p1.Atoi()==0;
      } else {
        TString &p2 = p[1];
        if(np == 2) {
          if(name.EqualTo("canvassize"))            setCanvasSize(p1.Atoi(),p2.Atoi());
          if(name.EqualTo("clfinderlevelseg1"))     HMdcTrackDSet::setTrFnSegLevel(0,p1.Atoi(),p2.Atoi());
          if(name.EqualTo("clfinderlevelseg2"))     HMdcTrackDSet::setTrFnSegLevel(1,p1.Atoi(),p2.Atoi());
        } else {
          TString &p3 = p[2];
          if(np == 3) {
            if(name.EqualTo("hist1param"))          setHistPar(p1.Atoi(),p2.Atof(),p3.Atof());
            if(name.EqualTo("hist3targetregion"))   setTargetZRegion(p1.Atof(),p2.Atof(),p3.Atoi());
          } else {
            TString &p4 = p[3];
            if(np == 4) {
              if(name.EqualTo("xyztargsec"))        target[p1.Atoi()].setXYZ(p2.Atof(),p3.Atof(),p4.Atof());
            } else {
              if(np == 5) {
                if(name.EqualTo("nlayerssec")) {
                  for(Int_t m=0;m<4;m++)            HMdcTrackDSet::setTrFnNLayers(p1.Atoi(),m,p[m+1].Atoi());
                }
              } else {
                if(np == 6 &&  name.EqualTo("setflag")) {
                  for(Int_t i=0;i<6;i++) useRtdbTarget[i] = (p[i].Atoi()==0);
                }
              }
            }
          }
        }
      }
      a->Delete();
      delete a;
    }
  }
  fclose(file);
  return kTRUE;
}
 hmdctargetmon.cc:1
 hmdctargetmon.cc:2
 hmdctargetmon.cc:3
 hmdctargetmon.cc:4
 hmdctargetmon.cc:5
 hmdctargetmon.cc:6
 hmdctargetmon.cc:7
 hmdctargetmon.cc:8
 hmdctargetmon.cc:9
 hmdctargetmon.cc:10
 hmdctargetmon.cc:11
 hmdctargetmon.cc:12
 hmdctargetmon.cc:13
 hmdctargetmon.cc:14
 hmdctargetmon.cc:15
 hmdctargetmon.cc:16
 hmdctargetmon.cc:17
 hmdctargetmon.cc:18
 hmdctargetmon.cc:19
 hmdctargetmon.cc:20
 hmdctargetmon.cc:21
 hmdctargetmon.cc:22
 hmdctargetmon.cc:23
 hmdctargetmon.cc:24
 hmdctargetmon.cc:25
 hmdctargetmon.cc:26
 hmdctargetmon.cc:27
 hmdctargetmon.cc:28
 hmdctargetmon.cc:29
 hmdctargetmon.cc:30
 hmdctargetmon.cc:31
 hmdctargetmon.cc:32
 hmdctargetmon.cc:33
 hmdctargetmon.cc:34
 hmdctargetmon.cc:35
 hmdctargetmon.cc:36
 hmdctargetmon.cc:37
 hmdctargetmon.cc:38
 hmdctargetmon.cc:39
 hmdctargetmon.cc:40
 hmdctargetmon.cc:41
 hmdctargetmon.cc:42
 hmdctargetmon.cc:43
 hmdctargetmon.cc:44
 hmdctargetmon.cc:45
 hmdctargetmon.cc:46
 hmdctargetmon.cc:47
 hmdctargetmon.cc:48
 hmdctargetmon.cc:49
 hmdctargetmon.cc:50
 hmdctargetmon.cc:51
 hmdctargetmon.cc:52
 hmdctargetmon.cc:53
 hmdctargetmon.cc:54
 hmdctargetmon.cc:55
 hmdctargetmon.cc:56
 hmdctargetmon.cc:57
 hmdctargetmon.cc:58
 hmdctargetmon.cc:59
 hmdctargetmon.cc:60
 hmdctargetmon.cc:61
 hmdctargetmon.cc:62
 hmdctargetmon.cc:63
 hmdctargetmon.cc:64
 hmdctargetmon.cc:65
 hmdctargetmon.cc:66
 hmdctargetmon.cc:67
 hmdctargetmon.cc:68
 hmdctargetmon.cc:69
 hmdctargetmon.cc:70
 hmdctargetmon.cc:71
 hmdctargetmon.cc:72
 hmdctargetmon.cc:73
 hmdctargetmon.cc:74
 hmdctargetmon.cc:75
 hmdctargetmon.cc:76
 hmdctargetmon.cc:77
 hmdctargetmon.cc:78
 hmdctargetmon.cc:79
 hmdctargetmon.cc:80
 hmdctargetmon.cc:81
 hmdctargetmon.cc:82
 hmdctargetmon.cc:83
 hmdctargetmon.cc:84
 hmdctargetmon.cc:85
 hmdctargetmon.cc:86
 hmdctargetmon.cc:87
 hmdctargetmon.cc:88
 hmdctargetmon.cc:89
 hmdctargetmon.cc:90
 hmdctargetmon.cc:91
 hmdctargetmon.cc:92
 hmdctargetmon.cc:93
 hmdctargetmon.cc:94
 hmdctargetmon.cc:95
 hmdctargetmon.cc:96
 hmdctargetmon.cc:97
 hmdctargetmon.cc:98
 hmdctargetmon.cc:99
 hmdctargetmon.cc:100
 hmdctargetmon.cc:101
 hmdctargetmon.cc:102
 hmdctargetmon.cc:103
 hmdctargetmon.cc:104
 hmdctargetmon.cc:105
 hmdctargetmon.cc:106
 hmdctargetmon.cc:107
 hmdctargetmon.cc:108
 hmdctargetmon.cc:109
 hmdctargetmon.cc:110
 hmdctargetmon.cc:111
 hmdctargetmon.cc:112
 hmdctargetmon.cc:113
 hmdctargetmon.cc:114
 hmdctargetmon.cc:115
 hmdctargetmon.cc:116
 hmdctargetmon.cc:117
 hmdctargetmon.cc:118
 hmdctargetmon.cc:119
 hmdctargetmon.cc:120
 hmdctargetmon.cc:121
 hmdctargetmon.cc:122
 hmdctargetmon.cc:123
 hmdctargetmon.cc:124
 hmdctargetmon.cc:125
 hmdctargetmon.cc:126
 hmdctargetmon.cc:127
 hmdctargetmon.cc:128
 hmdctargetmon.cc:129
 hmdctargetmon.cc:130
 hmdctargetmon.cc:131
 hmdctargetmon.cc:132
 hmdctargetmon.cc:133
 hmdctargetmon.cc:134
 hmdctargetmon.cc:135
 hmdctargetmon.cc:136
 hmdctargetmon.cc:137
 hmdctargetmon.cc:138
 hmdctargetmon.cc:139
 hmdctargetmon.cc:140
 hmdctargetmon.cc:141
 hmdctargetmon.cc:142
 hmdctargetmon.cc:143
 hmdctargetmon.cc:144
 hmdctargetmon.cc:145
 hmdctargetmon.cc:146
 hmdctargetmon.cc:147
 hmdctargetmon.cc:148
 hmdctargetmon.cc:149
 hmdctargetmon.cc:150
 hmdctargetmon.cc:151
 hmdctargetmon.cc:152
 hmdctargetmon.cc:153
 hmdctargetmon.cc:154
 hmdctargetmon.cc:155
 hmdctargetmon.cc:156
 hmdctargetmon.cc:157
 hmdctargetmon.cc:158
 hmdctargetmon.cc:159
 hmdctargetmon.cc:160
 hmdctargetmon.cc:161
 hmdctargetmon.cc:162
 hmdctargetmon.cc:163
 hmdctargetmon.cc:164
 hmdctargetmon.cc:165
 hmdctargetmon.cc:166
 hmdctargetmon.cc:167
 hmdctargetmon.cc:168
 hmdctargetmon.cc:169
 hmdctargetmon.cc:170
 hmdctargetmon.cc:171
 hmdctargetmon.cc:172
 hmdctargetmon.cc:173
 hmdctargetmon.cc:174
 hmdctargetmon.cc:175
 hmdctargetmon.cc:176
 hmdctargetmon.cc:177
 hmdctargetmon.cc:178
 hmdctargetmon.cc:179
 hmdctargetmon.cc:180
 hmdctargetmon.cc:181
 hmdctargetmon.cc:182
 hmdctargetmon.cc:183
 hmdctargetmon.cc:184
 hmdctargetmon.cc:185
 hmdctargetmon.cc:186
 hmdctargetmon.cc:187
 hmdctargetmon.cc:188
 hmdctargetmon.cc:189
 hmdctargetmon.cc:190
 hmdctargetmon.cc:191
 hmdctargetmon.cc:192
 hmdctargetmon.cc:193
 hmdctargetmon.cc:194
 hmdctargetmon.cc:195
 hmdctargetmon.cc:196
 hmdctargetmon.cc:197
 hmdctargetmon.cc:198
 hmdctargetmon.cc:199
 hmdctargetmon.cc:200
 hmdctargetmon.cc:201
 hmdctargetmon.cc:202
 hmdctargetmon.cc:203
 hmdctargetmon.cc:204
 hmdctargetmon.cc:205
 hmdctargetmon.cc:206
 hmdctargetmon.cc:207
 hmdctargetmon.cc:208
 hmdctargetmon.cc:209
 hmdctargetmon.cc:210
 hmdctargetmon.cc:211
 hmdctargetmon.cc:212
 hmdctargetmon.cc:213
 hmdctargetmon.cc:214
 hmdctargetmon.cc:215
 hmdctargetmon.cc:216
 hmdctargetmon.cc:217
 hmdctargetmon.cc:218
 hmdctargetmon.cc:219
 hmdctargetmon.cc:220
 hmdctargetmon.cc:221
 hmdctargetmon.cc:222
 hmdctargetmon.cc:223
 hmdctargetmon.cc:224
 hmdctargetmon.cc:225
 hmdctargetmon.cc:226
 hmdctargetmon.cc:227
 hmdctargetmon.cc:228
 hmdctargetmon.cc:229
 hmdctargetmon.cc:230
 hmdctargetmon.cc:231
 hmdctargetmon.cc:232
 hmdctargetmon.cc:233
 hmdctargetmon.cc:234
 hmdctargetmon.cc:235
 hmdctargetmon.cc:236
 hmdctargetmon.cc:237
 hmdctargetmon.cc:238
 hmdctargetmon.cc:239
 hmdctargetmon.cc:240
 hmdctargetmon.cc:241
 hmdctargetmon.cc:242
 hmdctargetmon.cc:243
 hmdctargetmon.cc:244
 hmdctargetmon.cc:245
 hmdctargetmon.cc:246
 hmdctargetmon.cc:247
 hmdctargetmon.cc:248
 hmdctargetmon.cc:249
 hmdctargetmon.cc:250
 hmdctargetmon.cc:251
 hmdctargetmon.cc:252
 hmdctargetmon.cc:253
 hmdctargetmon.cc:254
 hmdctargetmon.cc:255
 hmdctargetmon.cc:256
 hmdctargetmon.cc:257
 hmdctargetmon.cc:258
 hmdctargetmon.cc:259
 hmdctargetmon.cc:260
 hmdctargetmon.cc:261
 hmdctargetmon.cc:262
 hmdctargetmon.cc:263
 hmdctargetmon.cc:264
 hmdctargetmon.cc:265
 hmdctargetmon.cc:266
 hmdctargetmon.cc:267
 hmdctargetmon.cc:268
 hmdctargetmon.cc:269
 hmdctargetmon.cc:270
 hmdctargetmon.cc:271
 hmdctargetmon.cc:272
 hmdctargetmon.cc:273
 hmdctargetmon.cc:274
 hmdctargetmon.cc:275
 hmdctargetmon.cc:276
 hmdctargetmon.cc:277
 hmdctargetmon.cc:278
 hmdctargetmon.cc:279
 hmdctargetmon.cc:280
 hmdctargetmon.cc:281
 hmdctargetmon.cc:282
 hmdctargetmon.cc:283
 hmdctargetmon.cc:284
 hmdctargetmon.cc:285
 hmdctargetmon.cc:286
 hmdctargetmon.cc:287
 hmdctargetmon.cc:288
 hmdctargetmon.cc:289
 hmdctargetmon.cc:290
 hmdctargetmon.cc:291
 hmdctargetmon.cc:292
 hmdctargetmon.cc:293
 hmdctargetmon.cc:294
 hmdctargetmon.cc:295
 hmdctargetmon.cc:296
 hmdctargetmon.cc:297
 hmdctargetmon.cc:298
 hmdctargetmon.cc:299
 hmdctargetmon.cc:300
 hmdctargetmon.cc:301
 hmdctargetmon.cc:302
 hmdctargetmon.cc:303
 hmdctargetmon.cc:304
 hmdctargetmon.cc:305
 hmdctargetmon.cc:306
 hmdctargetmon.cc:307
 hmdctargetmon.cc:308
 hmdctargetmon.cc:309
 hmdctargetmon.cc:310
 hmdctargetmon.cc:311
 hmdctargetmon.cc:312
 hmdctargetmon.cc:313
 hmdctargetmon.cc:314
 hmdctargetmon.cc:315
 hmdctargetmon.cc:316
 hmdctargetmon.cc:317
 hmdctargetmon.cc:318
 hmdctargetmon.cc:319
 hmdctargetmon.cc:320
 hmdctargetmon.cc:321
 hmdctargetmon.cc:322
 hmdctargetmon.cc:323
 hmdctargetmon.cc:324
 hmdctargetmon.cc:325
 hmdctargetmon.cc:326
 hmdctargetmon.cc:327
 hmdctargetmon.cc:328
 hmdctargetmon.cc:329
 hmdctargetmon.cc:330
 hmdctargetmon.cc:331
 hmdctargetmon.cc:332
 hmdctargetmon.cc:333
 hmdctargetmon.cc:334
 hmdctargetmon.cc:335
 hmdctargetmon.cc:336
 hmdctargetmon.cc:337
 hmdctargetmon.cc:338
 hmdctargetmon.cc:339
 hmdctargetmon.cc:340
 hmdctargetmon.cc:341
 hmdctargetmon.cc:342
 hmdctargetmon.cc:343
 hmdctargetmon.cc:344
 hmdctargetmon.cc:345
 hmdctargetmon.cc:346
 hmdctargetmon.cc:347
 hmdctargetmon.cc:348
 hmdctargetmon.cc:349
 hmdctargetmon.cc:350
 hmdctargetmon.cc:351
 hmdctargetmon.cc:352
 hmdctargetmon.cc:353
 hmdctargetmon.cc:354
 hmdctargetmon.cc:355
 hmdctargetmon.cc:356
 hmdctargetmon.cc:357
 hmdctargetmon.cc:358
 hmdctargetmon.cc:359
 hmdctargetmon.cc:360
 hmdctargetmon.cc:361
 hmdctargetmon.cc:362
 hmdctargetmon.cc:363
 hmdctargetmon.cc:364
 hmdctargetmon.cc:365
 hmdctargetmon.cc:366
 hmdctargetmon.cc:367
 hmdctargetmon.cc:368
 hmdctargetmon.cc:369
 hmdctargetmon.cc:370
 hmdctargetmon.cc:371
 hmdctargetmon.cc:372
 hmdctargetmon.cc:373
 hmdctargetmon.cc:374
 hmdctargetmon.cc:375
 hmdctargetmon.cc:376
 hmdctargetmon.cc:377
 hmdctargetmon.cc:378
 hmdctargetmon.cc:379
 hmdctargetmon.cc:380
 hmdctargetmon.cc:381
 hmdctargetmon.cc:382
 hmdctargetmon.cc:383
 hmdctargetmon.cc:384
 hmdctargetmon.cc:385
 hmdctargetmon.cc:386
 hmdctargetmon.cc:387
 hmdctargetmon.cc:388
 hmdctargetmon.cc:389
 hmdctargetmon.cc:390
 hmdctargetmon.cc:391
 hmdctargetmon.cc:392
 hmdctargetmon.cc:393
 hmdctargetmon.cc:394
 hmdctargetmon.cc:395
 hmdctargetmon.cc:396
 hmdctargetmon.cc:397
 hmdctargetmon.cc:398
 hmdctargetmon.cc:399
 hmdctargetmon.cc:400
 hmdctargetmon.cc:401
 hmdctargetmon.cc:402
 hmdctargetmon.cc:403
 hmdctargetmon.cc:404
 hmdctargetmon.cc:405
 hmdctargetmon.cc:406
 hmdctargetmon.cc:407
 hmdctargetmon.cc:408
 hmdctargetmon.cc:409
 hmdctargetmon.cc:410
 hmdctargetmon.cc:411
 hmdctargetmon.cc:412
 hmdctargetmon.cc:413
 hmdctargetmon.cc:414
 hmdctargetmon.cc:415
 hmdctargetmon.cc:416
 hmdctargetmon.cc:417
 hmdctargetmon.cc:418
 hmdctargetmon.cc:419
 hmdctargetmon.cc:420
 hmdctargetmon.cc:421
 hmdctargetmon.cc:422
 hmdctargetmon.cc:423
 hmdctargetmon.cc:424
 hmdctargetmon.cc:425
 hmdctargetmon.cc:426
 hmdctargetmon.cc:427
 hmdctargetmon.cc:428
 hmdctargetmon.cc:429
 hmdctargetmon.cc:430
 hmdctargetmon.cc:431
 hmdctargetmon.cc:432
 hmdctargetmon.cc:433
 hmdctargetmon.cc:434
 hmdctargetmon.cc:435
 hmdctargetmon.cc:436
 hmdctargetmon.cc:437
 hmdctargetmon.cc:438
 hmdctargetmon.cc:439
 hmdctargetmon.cc:440
 hmdctargetmon.cc:441
 hmdctargetmon.cc:442
 hmdctargetmon.cc:443
 hmdctargetmon.cc:444
 hmdctargetmon.cc:445
 hmdctargetmon.cc:446
 hmdctargetmon.cc:447
 hmdctargetmon.cc:448
 hmdctargetmon.cc:449
 hmdctargetmon.cc:450
 hmdctargetmon.cc:451
 hmdctargetmon.cc:452
 hmdctargetmon.cc:453
 hmdctargetmon.cc:454
 hmdctargetmon.cc:455
 hmdctargetmon.cc:456
 hmdctargetmon.cc:457
 hmdctargetmon.cc:458
 hmdctargetmon.cc:459
 hmdctargetmon.cc:460
 hmdctargetmon.cc:461
 hmdctargetmon.cc:462
 hmdctargetmon.cc:463
 hmdctargetmon.cc:464
 hmdctargetmon.cc:465
 hmdctargetmon.cc:466
 hmdctargetmon.cc:467
 hmdctargetmon.cc:468
 hmdctargetmon.cc:469
 hmdctargetmon.cc:470
 hmdctargetmon.cc:471
 hmdctargetmon.cc:472
 hmdctargetmon.cc:473
 hmdctargetmon.cc:474
 hmdctargetmon.cc:475
 hmdctargetmon.cc:476
 hmdctargetmon.cc:477
 hmdctargetmon.cc:478
 hmdctargetmon.cc:479
 hmdctargetmon.cc:480
 hmdctargetmon.cc:481
 hmdctargetmon.cc:482
 hmdctargetmon.cc:483
 hmdctargetmon.cc:484
 hmdctargetmon.cc:485
 hmdctargetmon.cc:486
 hmdctargetmon.cc:487
 hmdctargetmon.cc:488
 hmdctargetmon.cc:489
 hmdctargetmon.cc:490
 hmdctargetmon.cc:491
 hmdctargetmon.cc:492
 hmdctargetmon.cc:493
 hmdctargetmon.cc:494
 hmdctargetmon.cc:495
 hmdctargetmon.cc:496
 hmdctargetmon.cc:497
 hmdctargetmon.cc:498
 hmdctargetmon.cc:499
 hmdctargetmon.cc:500
 hmdctargetmon.cc:501
 hmdctargetmon.cc:502
 hmdctargetmon.cc:503
 hmdctargetmon.cc:504
 hmdctargetmon.cc:505
 hmdctargetmon.cc:506
 hmdctargetmon.cc:507
 hmdctargetmon.cc:508
 hmdctargetmon.cc:509
 hmdctargetmon.cc:510
 hmdctargetmon.cc:511
 hmdctargetmon.cc:512
 hmdctargetmon.cc:513
 hmdctargetmon.cc:514
 hmdctargetmon.cc:515
 hmdctargetmon.cc:516
 hmdctargetmon.cc:517
 hmdctargetmon.cc:518
 hmdctargetmon.cc:519
 hmdctargetmon.cc:520
 hmdctargetmon.cc:521
 hmdctargetmon.cc:522
 hmdctargetmon.cc:523
 hmdctargetmon.cc:524
 hmdctargetmon.cc:525
 hmdctargetmon.cc:526
 hmdctargetmon.cc:527
 hmdctargetmon.cc:528
 hmdctargetmon.cc:529
 hmdctargetmon.cc:530
 hmdctargetmon.cc:531
 hmdctargetmon.cc:532
 hmdctargetmon.cc:533
 hmdctargetmon.cc:534
 hmdctargetmon.cc:535
 hmdctargetmon.cc:536
 hmdctargetmon.cc:537
 hmdctargetmon.cc:538
 hmdctargetmon.cc:539
 hmdctargetmon.cc:540
 hmdctargetmon.cc:541
 hmdctargetmon.cc:542
 hmdctargetmon.cc:543
 hmdctargetmon.cc:544
 hmdctargetmon.cc:545
 hmdctargetmon.cc:546
 hmdctargetmon.cc:547
 hmdctargetmon.cc:548
 hmdctargetmon.cc:549
 hmdctargetmon.cc:550
 hmdctargetmon.cc:551
 hmdctargetmon.cc:552
 hmdctargetmon.cc:553
 hmdctargetmon.cc:554
 hmdctargetmon.cc:555
 hmdctargetmon.cc:556
 hmdctargetmon.cc:557
 hmdctargetmon.cc:558
 hmdctargetmon.cc:559
 hmdctargetmon.cc:560
 hmdctargetmon.cc:561
 hmdctargetmon.cc:562
 hmdctargetmon.cc:563
 hmdctargetmon.cc:564
 hmdctargetmon.cc:565
 hmdctargetmon.cc:566
 hmdctargetmon.cc:567
 hmdctargetmon.cc:568
 hmdctargetmon.cc:569
 hmdctargetmon.cc:570
 hmdctargetmon.cc:571
 hmdctargetmon.cc:572
 hmdctargetmon.cc:573
 hmdctargetmon.cc:574
 hmdctargetmon.cc:575
 hmdctargetmon.cc:576
 hmdctargetmon.cc:577
 hmdctargetmon.cc:578
 hmdctargetmon.cc:579
 hmdctargetmon.cc:580
 hmdctargetmon.cc:581
 hmdctargetmon.cc:582
 hmdctargetmon.cc:583
 hmdctargetmon.cc:584
 hmdctargetmon.cc:585
 hmdctargetmon.cc:586
 hmdctargetmon.cc:587
 hmdctargetmon.cc:588
 hmdctargetmon.cc:589
 hmdctargetmon.cc:590
 hmdctargetmon.cc:591
 hmdctargetmon.cc:592
 hmdctargetmon.cc:593
 hmdctargetmon.cc:594
 hmdctargetmon.cc:595
 hmdctargetmon.cc:596
 hmdctargetmon.cc:597
 hmdctargetmon.cc:598
 hmdctargetmon.cc:599
 hmdctargetmon.cc:600
 hmdctargetmon.cc:601
 hmdctargetmon.cc:602
 hmdctargetmon.cc:603
 hmdctargetmon.cc:604
 hmdctargetmon.cc:605
 hmdctargetmon.cc:606
 hmdctargetmon.cc:607
 hmdctargetmon.cc:608
 hmdctargetmon.cc:609
 hmdctargetmon.cc:610
 hmdctargetmon.cc:611
 hmdctargetmon.cc:612
 hmdctargetmon.cc:613
 hmdctargetmon.cc:614
 hmdctargetmon.cc:615
 hmdctargetmon.cc:616
 hmdctargetmon.cc:617
 hmdctargetmon.cc:618
 hmdctargetmon.cc:619
 hmdctargetmon.cc:620
 hmdctargetmon.cc:621
 hmdctargetmon.cc:622
 hmdctargetmon.cc:623
 hmdctargetmon.cc:624
 hmdctargetmon.cc:625
 hmdctargetmon.cc:626
 hmdctargetmon.cc:627
 hmdctargetmon.cc:628
 hmdctargetmon.cc:629
 hmdctargetmon.cc:630
 hmdctargetmon.cc:631
 hmdctargetmon.cc:632
 hmdctargetmon.cc:633
 hmdctargetmon.cc:634
 hmdctargetmon.cc:635
 hmdctargetmon.cc:636
 hmdctargetmon.cc:637
 hmdctargetmon.cc:638
 hmdctargetmon.cc:639
 hmdctargetmon.cc:640
 hmdctargetmon.cc:641
 hmdctargetmon.cc:642
 hmdctargetmon.cc:643
 hmdctargetmon.cc:644
 hmdctargetmon.cc:645
 hmdctargetmon.cc:646
 hmdctargetmon.cc:647
 hmdctargetmon.cc:648
 hmdctargetmon.cc:649
 hmdctargetmon.cc:650
 hmdctargetmon.cc:651
 hmdctargetmon.cc:652
 hmdctargetmon.cc:653
 hmdctargetmon.cc:654
 hmdctargetmon.cc:655
 hmdctargetmon.cc:656
 hmdctargetmon.cc:657
 hmdctargetmon.cc:658
 hmdctargetmon.cc:659
 hmdctargetmon.cc:660
 hmdctargetmon.cc:661
 hmdctargetmon.cc:662
 hmdctargetmon.cc:663
 hmdctargetmon.cc:664
 hmdctargetmon.cc:665
 hmdctargetmon.cc:666
 hmdctargetmon.cc:667
 hmdctargetmon.cc:668
 hmdctargetmon.cc:669
 hmdctargetmon.cc:670
 hmdctargetmon.cc:671
 hmdctargetmon.cc:672
 hmdctargetmon.cc:673
 hmdctargetmon.cc:674
 hmdctargetmon.cc:675
 hmdctargetmon.cc:676
 hmdctargetmon.cc:677
 hmdctargetmon.cc:678
 hmdctargetmon.cc:679
 hmdctargetmon.cc:680
 hmdctargetmon.cc:681
 hmdctargetmon.cc:682
 hmdctargetmon.cc:683
 hmdctargetmon.cc:684
 hmdctargetmon.cc:685
 hmdctargetmon.cc:686
 hmdctargetmon.cc:687
 hmdctargetmon.cc:688
 hmdctargetmon.cc:689
 hmdctargetmon.cc:690
 hmdctargetmon.cc:691
 hmdctargetmon.cc:692
 hmdctargetmon.cc:693
 hmdctargetmon.cc:694
 hmdctargetmon.cc:695
 hmdctargetmon.cc:696
 hmdctargetmon.cc:697
 hmdctargetmon.cc:698
 hmdctargetmon.cc:699
 hmdctargetmon.cc:700
 hmdctargetmon.cc:701
 hmdctargetmon.cc:702
 hmdctargetmon.cc:703
 hmdctargetmon.cc:704
 hmdctargetmon.cc:705
 hmdctargetmon.cc:706
 hmdctargetmon.cc:707
 hmdctargetmon.cc:708
 hmdctargetmon.cc:709
 hmdctargetmon.cc:710
 hmdctargetmon.cc:711
 hmdctargetmon.cc:712
 hmdctargetmon.cc:713
 hmdctargetmon.cc:714
 hmdctargetmon.cc:715
 hmdctargetmon.cc:716
 hmdctargetmon.cc:717
 hmdctargetmon.cc:718
 hmdctargetmon.cc:719
 hmdctargetmon.cc:720
 hmdctargetmon.cc:721
 hmdctargetmon.cc:722
 hmdctargetmon.cc:723
 hmdctargetmon.cc:724
 hmdctargetmon.cc:725
 hmdctargetmon.cc:726
 hmdctargetmon.cc:727
 hmdctargetmon.cc:728
 hmdctargetmon.cc:729
 hmdctargetmon.cc:730
 hmdctargetmon.cc:731
 hmdctargetmon.cc:732
 hmdctargetmon.cc:733
 hmdctargetmon.cc:734
 hmdctargetmon.cc:735
 hmdctargetmon.cc:736
 hmdctargetmon.cc:737
 hmdctargetmon.cc:738
 hmdctargetmon.cc:739
 hmdctargetmon.cc:740
 hmdctargetmon.cc:741
 hmdctargetmon.cc:742
 hmdctargetmon.cc:743
 hmdctargetmon.cc:744
 hmdctargetmon.cc:745
 hmdctargetmon.cc:746
 hmdctargetmon.cc:747
 hmdctargetmon.cc:748
 hmdctargetmon.cc:749
 hmdctargetmon.cc:750
 hmdctargetmon.cc:751
 hmdctargetmon.cc:752
 hmdctargetmon.cc:753
 hmdctargetmon.cc:754
 hmdctargetmon.cc:755
 hmdctargetmon.cc:756
 hmdctargetmon.cc:757
 hmdctargetmon.cc:758
 hmdctargetmon.cc:759
 hmdctargetmon.cc:760
 hmdctargetmon.cc:761
 hmdctargetmon.cc:762
 hmdctargetmon.cc:763
 hmdctargetmon.cc:764
 hmdctargetmon.cc:765
 hmdctargetmon.cc:766
 hmdctargetmon.cc:767
 hmdctargetmon.cc:768
 hmdctargetmon.cc:769
 hmdctargetmon.cc:770
 hmdctargetmon.cc:771
 hmdctargetmon.cc:772
 hmdctargetmon.cc:773
 hmdctargetmon.cc:774
 hmdctargetmon.cc:775
 hmdctargetmon.cc:776
 hmdctargetmon.cc:777
 hmdctargetmon.cc:778
 hmdctargetmon.cc:779
 hmdctargetmon.cc:780
 hmdctargetmon.cc:781
 hmdctargetmon.cc:782
 hmdctargetmon.cc:783
 hmdctargetmon.cc:784
 hmdctargetmon.cc:785
 hmdctargetmon.cc:786
 hmdctargetmon.cc:787
 hmdctargetmon.cc:788
 hmdctargetmon.cc:789
 hmdctargetmon.cc:790
 hmdctargetmon.cc:791
 hmdctargetmon.cc:792
 hmdctargetmon.cc:793
 hmdctargetmon.cc:794
 hmdctargetmon.cc:795
 hmdctargetmon.cc:796
 hmdctargetmon.cc:797
 hmdctargetmon.cc:798
 hmdctargetmon.cc:799
 hmdctargetmon.cc:800
 hmdctargetmon.cc:801
 hmdctargetmon.cc:802
 hmdctargetmon.cc:803
 hmdctargetmon.cc:804
 hmdctargetmon.cc:805
 hmdctargetmon.cc:806
 hmdctargetmon.cc:807
 hmdctargetmon.cc:808
 hmdctargetmon.cc:809
 hmdctargetmon.cc:810
 hmdctargetmon.cc:811
 hmdctargetmon.cc:812
 hmdctargetmon.cc:813
 hmdctargetmon.cc:814
 hmdctargetmon.cc:815
 hmdctargetmon.cc:816
 hmdctargetmon.cc:817
 hmdctargetmon.cc:818
 hmdctargetmon.cc:819
 hmdctargetmon.cc:820
 hmdctargetmon.cc:821
 hmdctargetmon.cc:822
 hmdctargetmon.cc:823
 hmdctargetmon.cc:824
 hmdctargetmon.cc:825
 hmdctargetmon.cc:826
 hmdctargetmon.cc:827
 hmdctargetmon.cc:828
 hmdctargetmon.cc:829
 hmdctargetmon.cc:830
 hmdctargetmon.cc:831
 hmdctargetmon.cc:832
 hmdctargetmon.cc:833
 hmdctargetmon.cc:834
 hmdctargetmon.cc:835
 hmdctargetmon.cc:836
 hmdctargetmon.cc:837
 hmdctargetmon.cc:838
 hmdctargetmon.cc:839
 hmdctargetmon.cc:840
 hmdctargetmon.cc:841
 hmdctargetmon.cc:842
 hmdctargetmon.cc:843
 hmdctargetmon.cc:844
 hmdctargetmon.cc:845
 hmdctargetmon.cc:846
 hmdctargetmon.cc:847
 hmdctargetmon.cc:848
 hmdctargetmon.cc:849
 hmdctargetmon.cc:850
 hmdctargetmon.cc:851
 hmdctargetmon.cc:852
 hmdctargetmon.cc:853
 hmdctargetmon.cc:854
 hmdctargetmon.cc:855
 hmdctargetmon.cc:856
 hmdctargetmon.cc:857
 hmdctargetmon.cc:858
 hmdctargetmon.cc:859
 hmdctargetmon.cc:860
 hmdctargetmon.cc:861
 hmdctargetmon.cc:862
 hmdctargetmon.cc:863
 hmdctargetmon.cc:864
 hmdctargetmon.cc:865
 hmdctargetmon.cc:866
 hmdctargetmon.cc:867
 hmdctargetmon.cc:868
 hmdctargetmon.cc:869
 hmdctargetmon.cc:870
 hmdctargetmon.cc:871
 hmdctargetmon.cc:872
 hmdctargetmon.cc:873
 hmdctargetmon.cc:874
 hmdctargetmon.cc:875
 hmdctargetmon.cc:876
 hmdctargetmon.cc:877
 hmdctargetmon.cc:878
 hmdctargetmon.cc:879
 hmdctargetmon.cc:880
 hmdctargetmon.cc:881
 hmdctargetmon.cc:882
 hmdctargetmon.cc:883
 hmdctargetmon.cc:884
 hmdctargetmon.cc:885
 hmdctargetmon.cc:886
 hmdctargetmon.cc:887
 hmdctargetmon.cc:888
 hmdctargetmon.cc:889
 hmdctargetmon.cc:890
 hmdctargetmon.cc:891
 hmdctargetmon.cc:892
 hmdctargetmon.cc:893
 hmdctargetmon.cc:894
 hmdctargetmon.cc:895
 hmdctargetmon.cc:896
 hmdctargetmon.cc:897
 hmdctargetmon.cc:898
 hmdctargetmon.cc:899
 hmdctargetmon.cc:900
 hmdctargetmon.cc:901
 hmdctargetmon.cc:902
 hmdctargetmon.cc:903
 hmdctargetmon.cc:904
 hmdctargetmon.cc:905
 hmdctargetmon.cc:906
 hmdctargetmon.cc:907
 hmdctargetmon.cc:908
 hmdctargetmon.cc:909
 hmdctargetmon.cc:910
 hmdctargetmon.cc:911
 hmdctargetmon.cc:912
 hmdctargetmon.cc:913
 hmdctargetmon.cc:914
 hmdctargetmon.cc:915
 hmdctargetmon.cc:916
 hmdctargetmon.cc:917
 hmdctargetmon.cc:918
 hmdctargetmon.cc:919
 hmdctargetmon.cc:920
 hmdctargetmon.cc:921
 hmdctargetmon.cc:922
 hmdctargetmon.cc:923
 hmdctargetmon.cc:924
 hmdctargetmon.cc:925
 hmdctargetmon.cc:926
 hmdctargetmon.cc:927
 hmdctargetmon.cc:928
 hmdctargetmon.cc:929
 hmdctargetmon.cc:930
 hmdctargetmon.cc:931
 hmdctargetmon.cc:932
 hmdctargetmon.cc:933
 hmdctargetmon.cc:934
 hmdctargetmon.cc:935
 hmdctargetmon.cc:936
 hmdctargetmon.cc:937
 hmdctargetmon.cc:938
 hmdctargetmon.cc:939
 hmdctargetmon.cc:940
 hmdctargetmon.cc:941
 hmdctargetmon.cc:942
 hmdctargetmon.cc:943
 hmdctargetmon.cc:944
 hmdctargetmon.cc:945
 hmdctargetmon.cc:946
 hmdctargetmon.cc:947
 hmdctargetmon.cc:948
 hmdctargetmon.cc:949
 hmdctargetmon.cc:950
 hmdctargetmon.cc:951
 hmdctargetmon.cc:952
 hmdctargetmon.cc:953
 hmdctargetmon.cc:954
 hmdctargetmon.cc:955
 hmdctargetmon.cc:956
 hmdctargetmon.cc:957
 hmdctargetmon.cc:958
 hmdctargetmon.cc:959
 hmdctargetmon.cc:960
 hmdctargetmon.cc:961
 hmdctargetmon.cc:962
 hmdctargetmon.cc:963
 hmdctargetmon.cc:964
 hmdctargetmon.cc:965
 hmdctargetmon.cc:966
 hmdctargetmon.cc:967
 hmdctargetmon.cc:968
 hmdctargetmon.cc:969
 hmdctargetmon.cc:970
 hmdctargetmon.cc:971
 hmdctargetmon.cc:972
 hmdctargetmon.cc:973
 hmdctargetmon.cc:974
 hmdctargetmon.cc:975
 hmdctargetmon.cc:976
 hmdctargetmon.cc:977
 hmdctargetmon.cc:978
 hmdctargetmon.cc:979
 hmdctargetmon.cc:980
 hmdctargetmon.cc:981
 hmdctargetmon.cc:982
 hmdctargetmon.cc:983
 hmdctargetmon.cc:984
 hmdctargetmon.cc:985
 hmdctargetmon.cc:986
 hmdctargetmon.cc:987
 hmdctargetmon.cc:988
 hmdctargetmon.cc:989
 hmdctargetmon.cc:990
 hmdctargetmon.cc:991
 hmdctargetmon.cc:992
 hmdctargetmon.cc:993
 hmdctargetmon.cc:994
 hmdctargetmon.cc:995
 hmdctargetmon.cc:996
 hmdctargetmon.cc:997
 hmdctargetmon.cc:998
 hmdctargetmon.cc:999
 hmdctargetmon.cc:1000
 hmdctargetmon.cc:1001
 hmdctargetmon.cc:1002
 hmdctargetmon.cc:1003
 hmdctargetmon.cc:1004
 hmdctargetmon.cc:1005
 hmdctargetmon.cc:1006
 hmdctargetmon.cc:1007
 hmdctargetmon.cc:1008
 hmdctargetmon.cc:1009
 hmdctargetmon.cc:1010
 hmdctargetmon.cc:1011
 hmdctargetmon.cc:1012
 hmdctargetmon.cc:1013
 hmdctargetmon.cc:1014
 hmdctargetmon.cc:1015
 hmdctargetmon.cc:1016
 hmdctargetmon.cc:1017
 hmdctargetmon.cc:1018
 hmdctargetmon.cc:1019
 hmdctargetmon.cc:1020
 hmdctargetmon.cc:1021
 hmdctargetmon.cc:1022
 hmdctargetmon.cc:1023
 hmdctargetmon.cc:1024
 hmdctargetmon.cc:1025
 hmdctargetmon.cc:1026
 hmdctargetmon.cc:1027
 hmdctargetmon.cc:1028
 hmdctargetmon.cc:1029
 hmdctargetmon.cc:1030
 hmdctargetmon.cc:1031
 hmdctargetmon.cc:1032
 hmdctargetmon.cc:1033
 hmdctargetmon.cc:1034
 hmdctargetmon.cc:1035
 hmdctargetmon.cc:1036
 hmdctargetmon.cc:1037
 hmdctargetmon.cc:1038
 hmdctargetmon.cc:1039
 hmdctargetmon.cc:1040
 hmdctargetmon.cc:1041
 hmdctargetmon.cc:1042
 hmdctargetmon.cc:1043
 hmdctargetmon.cc:1044
 hmdctargetmon.cc:1045
 hmdctargetmon.cc:1046
 hmdctargetmon.cc:1047
 hmdctargetmon.cc:1048
 hmdctargetmon.cc:1049
 hmdctargetmon.cc:1050
 hmdctargetmon.cc:1051
 hmdctargetmon.cc:1052
 hmdctargetmon.cc:1053
 hmdctargetmon.cc:1054
 hmdctargetmon.cc:1055
 hmdctargetmon.cc:1056
 hmdctargetmon.cc:1057
 hmdctargetmon.cc:1058
 hmdctargetmon.cc:1059
 hmdctargetmon.cc:1060
 hmdctargetmon.cc:1061
 hmdctargetmon.cc:1062
 hmdctargetmon.cc:1063
 hmdctargetmon.cc:1064
 hmdctargetmon.cc:1065
 hmdctargetmon.cc:1066
 hmdctargetmon.cc:1067
 hmdctargetmon.cc:1068
 hmdctargetmon.cc:1069
 hmdctargetmon.cc:1070
 hmdctargetmon.cc:1071
 hmdctargetmon.cc:1072
 hmdctargetmon.cc:1073
 hmdctargetmon.cc:1074
 hmdctargetmon.cc:1075
 hmdctargetmon.cc:1076
 hmdctargetmon.cc:1077
 hmdctargetmon.cc:1078
 hmdctargetmon.cc:1079
 hmdctargetmon.cc:1080
 hmdctargetmon.cc:1081
 hmdctargetmon.cc:1082
 hmdctargetmon.cc:1083
 hmdctargetmon.cc:1084
 hmdctargetmon.cc:1085
 hmdctargetmon.cc:1086
 hmdctargetmon.cc:1087
 hmdctargetmon.cc:1088
 hmdctargetmon.cc:1089
 hmdctargetmon.cc:1090
 hmdctargetmon.cc:1091
 hmdctargetmon.cc:1092
 hmdctargetmon.cc:1093
 hmdctargetmon.cc:1094
 hmdctargetmon.cc:1095
 hmdctargetmon.cc:1096
 hmdctargetmon.cc:1097
 hmdctargetmon.cc:1098
 hmdctargetmon.cc:1099
 hmdctargetmon.cc:1100
 hmdctargetmon.cc:1101
 hmdctargetmon.cc:1102
 hmdctargetmon.cc:1103
 hmdctargetmon.cc:1104
 hmdctargetmon.cc:1105
 hmdctargetmon.cc:1106
 hmdctargetmon.cc:1107
 hmdctargetmon.cc:1108
 hmdctargetmon.cc:1109
 hmdctargetmon.cc:1110
 hmdctargetmon.cc:1111
 hmdctargetmon.cc:1112
 hmdctargetmon.cc:1113
 hmdctargetmon.cc:1114
 hmdctargetmon.cc:1115
 hmdctargetmon.cc:1116
 hmdctargetmon.cc:1117
 hmdctargetmon.cc:1118
 hmdctargetmon.cc:1119
 hmdctargetmon.cc:1120
 hmdctargetmon.cc:1121
 hmdctargetmon.cc:1122
 hmdctargetmon.cc:1123
 hmdctargetmon.cc:1124
 hmdctargetmon.cc:1125
 hmdctargetmon.cc:1126
 hmdctargetmon.cc:1127
 hmdctargetmon.cc:1128
 hmdctargetmon.cc:1129
 hmdctargetmon.cc:1130
 hmdctargetmon.cc:1131
 hmdctargetmon.cc:1132
 hmdctargetmon.cc:1133
 hmdctargetmon.cc:1134
 hmdctargetmon.cc:1135
 hmdctargetmon.cc:1136
 hmdctargetmon.cc:1137
 hmdctargetmon.cc:1138
 hmdctargetmon.cc:1139
 hmdctargetmon.cc:1140
 hmdctargetmon.cc:1141
 hmdctargetmon.cc:1142
 hmdctargetmon.cc:1143
 hmdctargetmon.cc:1144
 hmdctargetmon.cc:1145
 hmdctargetmon.cc:1146
 hmdctargetmon.cc:1147
 hmdctargetmon.cc:1148
 hmdctargetmon.cc:1149
 hmdctargetmon.cc:1150
 hmdctargetmon.cc:1151
 hmdctargetmon.cc:1152
 hmdctargetmon.cc:1153
 hmdctargetmon.cc:1154
 hmdctargetmon.cc:1155
 hmdctargetmon.cc:1156
 hmdctargetmon.cc:1157
 hmdctargetmon.cc:1158
 hmdctargetmon.cc:1159
 hmdctargetmon.cc:1160
 hmdctargetmon.cc:1161
 hmdctargetmon.cc:1162
 hmdctargetmon.cc:1163
 hmdctargetmon.cc:1164
 hmdctargetmon.cc:1165
 hmdctargetmon.cc:1166
 hmdctargetmon.cc:1167
 hmdctargetmon.cc:1168
 hmdctargetmon.cc:1169
 hmdctargetmon.cc:1170
 hmdctargetmon.cc:1171
 hmdctargetmon.cc:1172
 hmdctargetmon.cc:1173
 hmdctargetmon.cc:1174
 hmdctargetmon.cc:1175
 hmdctargetmon.cc:1176
 hmdctargetmon.cc:1177
 hmdctargetmon.cc:1178
 hmdctargetmon.cc:1179
 hmdctargetmon.cc:1180
 hmdctargetmon.cc:1181
 hmdctargetmon.cc:1182
 hmdctargetmon.cc:1183
 hmdctargetmon.cc:1184
 hmdctargetmon.cc:1185
 hmdctargetmon.cc:1186
 hmdctargetmon.cc:1187
 hmdctargetmon.cc:1188
 hmdctargetmon.cc:1189
 hmdctargetmon.cc:1190
 hmdctargetmon.cc:1191
 hmdctargetmon.cc:1192
 hmdctargetmon.cc:1193
 hmdctargetmon.cc:1194
 hmdctargetmon.cc:1195
 hmdctargetmon.cc:1196
 hmdctargetmon.cc:1197
 hmdctargetmon.cc:1198
 hmdctargetmon.cc:1199
 hmdctargetmon.cc:1200
 hmdctargetmon.cc:1201
 hmdctargetmon.cc:1202
 hmdctargetmon.cc:1203
 hmdctargetmon.cc:1204
 hmdctargetmon.cc:1205
 hmdctargetmon.cc:1206
 hmdctargetmon.cc:1207
 hmdctargetmon.cc:1208
 hmdctargetmon.cc:1209
 hmdctargetmon.cc:1210
 hmdctargetmon.cc:1211
 hmdctargetmon.cc:1212
 hmdctargetmon.cc:1213
 hmdctargetmon.cc:1214
 hmdctargetmon.cc:1215
 hmdctargetmon.cc:1216
 hmdctargetmon.cc:1217
 hmdctargetmon.cc:1218
 hmdctargetmon.cc:1219
 hmdctargetmon.cc:1220
 hmdctargetmon.cc:1221