ROOT logo
//*-- AUTHOR : C.Muentz

//*-- Modified : 02/01/01 by P.Zumbruch,J.Markert
//*-- Modified : 28/12/00 by P.Zumbruch
//*-- Modified : 19/4/00 by CM, add start detector
//*-- Modified : 11/4/00 by CM
//*-- Modified : 7/4/00 by CM
//*-- Modified : 10/8/00 by CM, get rid of prof histos

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
//
// HMdcSelfTracking
//
// Begin_Html
// purpose: analyse CAL1 data of individual chambers, focussing on 0deg-layer's self
//          correlation and fluctuations (as fct of event number).
// input: hades listmode files (*.hld)
// needed: calibration parameters (gain, offset)
// End_Html
///////////////////////////////////////////////////////////////////////////////
using namespace std;
#include "hmdcselftracking.h"

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

#include "TClass.h"
#include "TFile.h"
#include "TH1.h"
#include "TH2.h" 
#include "TH3.h" 
#include "TProfile.h" 
#include "hades.h"
#include "hmdcdetector.h"
#include "hmdccal1.h"
#include "hstart2detector.h"
#include "hstart2cal.h"
#include "hrecevent.h"
#include "htree.h"
#include "hspectrometer.h"
#include "hruntimedb.h"
#include "hmatrixcategory.h"
#include "hpartialevent.h"
#include "htaskset.h"
#include "hiterator.h"
#include "hcategory.h"
#include "hmdcdef.h"
#include "hevent.h"

ClassImp(HMdcSelfTracking)

HMdcSelfTracking::HMdcSelfTracking(void)
{
    // Default Constructor

    fout   = NULL;
    calCatMdc = NULL;
    calCatStart = NULL;
    iterMdc   = NULL;
    iterStart   = NULL;

    // some local declarations:
    setDefault();
  
}

HMdcSelfTracking::HMdcSelfTracking(const Text_t* name,const Text_t* title) : HReconstructor(name,title)
{
    //

    fout   = NULL;
    calCatMdc = NULL;
    calCatStart = NULL;
    iterMdc   = NULL;
    iterStart   = NULL;

    // some local declarations:
    setDefault();
}

HMdcSelfTracking::~HMdcSelfTracking(void)
{
    // Destructor.

    if (iterMdc)       delete iterMdc;
    if (iterStart)       delete iterStart;
    if (fNameRoot)  delete fNameRoot;
    //if(fout) delete fout;
    iterMdc = NULL;
    iterStart = NULL;
}

void HMdcSelfTracking::setDefault()
{
    // Sets default values (especially for the cuts) for the parameters

    // *** cuts ***
    clearCutbridges();

    // setCutbridge(TOF_BIT_CUT,kTRUE);
    // setCutbridge(START_CUT],kTRUE);
    // setCutbridge(TIME1_CUT,kTRUE);
    // setCutbridge(TIME2_CUT,kTRUE);
    // setCutbridge(TIME_ABOVE_THRESHOLD_CUT,kTRUE);
    setStartTimeCutWindow(START_STRIP_1,37.2,38.2);
    setStartTimeCutWindow(START_STRIP_2,36.3,37.5);
    setStartTimeCutWindow(START_STRIP_3,37.3,38.5);
    setStartTimeCutWindow(START_STRIP_4,36.5,37.7);
    setTimeCutWindow(0,300);       // cut in time1, time2 (min)
    setTimeAboveThresholdCutWindow(1,10,400); // cut in time above threshold
    setTimeAboveThresholdCutWindow(2,11,400); // cut in time above threshold
    setTimeAboveThresholdCutWindow(3,27,400); // cut in time above threshold
    setTimeAboveThresholdCutWindow(4,10,400); // cut in time above threshold

    setCorrelationFct(1,0,1,0); // default correlation fct parameters
    setCorrelationFct(2,0,1,0); // default correlation fct parameters
    setCorrelationFct(3,0,1,0); // default correlation fct parameters

    // other cuts:
    setTimeDiffL3L4Cut(20); // cut for time1(layer3)-time1(layer4) to project on time-sum
    setAnalysisCellCutWindow(96,116);  // cells to be used for further analysis
    // *** end cuts ***

    setMonitor(3,106); // sets the monitor cell to layer 3 cell number 106
    setTimeDiffMax(10); // used as cut for filling pTimesum_adj_cell4 histogramm

    analysisLayer1=3;
    analysisLayer2=4;

    cntHitslayer1=0;
    cntHitslayer2=0;
    cntHitsWithoutNeighbours=0;
    cntHitsAnalysislayer2=0;
    cntDoubleHitsAnalysislayer2=0;

    eventCounter=0;
    setsector=1; // initial value
    setmodule=1; // initial value
    noStart=kFALSE;
    noCorrSector=kFALSE;
    noCheckCorrSector=kFALSE;
    relevant_data=kFALSE;

    setLeft[0]=0; // define left/right correl.
    setLeft[1]=1;
    setLeft[2]=1;
    setLeft[3]=-1; //-1
    setRight[0]=-1; 
    setRight[1]=0;
    setRight[2]=0;
    setRight[3]=-2;//-2

    return;
}

void HMdcSelfTracking::setOutputRoot(const Char_t *c)
{
  // Sets rootfile output of HMdcSelfTracking where all
  // created histograms were written.
    
    if (fNameRoot) delete fNameRoot;
    fNameRoot = new Char_t[strlen(c)+1];
    strcpy(fNameRoot, c);
}

Bool_t HMdcSelfTracking::setCutbridge(UInt_t index,  Bool_t b)
{
  // Begin_Html Disables (bridges) the following cuts
  // index cut details End_Html
  // 1: TOF_BIT_CUT Tof-Bit set in Event Header? 
  // 2: START_CUT Start multiplicity = 1 and start times of the strips in the given ranges?
  // 3: TIME1_CUT Time1 in the given range?
  // 4: TIME2_CUT Time2 in the given range?
  // 5: TIME_ABOVE_THRESHOLD_CUT Time above threshold in the give range?
  // 6-19: not used

  if(index < HMDCSELFTRACKING_CUTBRIDGE_NUMBER) 
    {
      cutbridge[index]=b;
      return kTRUE;
    }
  return kFALSE;
}

Bool_t HMdcSelfTracking::getCutbridge(UInt_t index)
{
    // Begin_Html Returns the status of the cut bridge index, End_Html
    // description see HMdcSelfTracking::setCutbridge

  if(index < HMDCSELFTRACKING_CUTBRIDGE_NUMBER) 
    {
      return  cutbridge[index];
    }
  return kFALSE;
}

void HMdcSelfTracking::printCutbridge(void)
{
  // Begin_Html Prints out a table of all available cut bridges and their status
  // to the standard output End_Html

  Char_t cutname[HMDCSELFTRACKING_CUTBRIDGE_NUMBER][80]=
  {
    "-", 
      "TOF_BIT_CUT",
      "START_CUT",
      "TIME1_CUT",
      "TIME2_CUT",
      "TIME_ABOVE_THRESHOLD_CUT",
      "-",  "-",  "-",  "-",  "-",
      "-",  "-",  "-",  "-",  "-",  
      "-",  "-",  "-",  "-"};

  cout << endl;
  cout << "Cut bridges :" << endl;
  printf("index  bridged %-40s\n","Discription");
  printf("---------------------------------------------------------\n");
  for (Int_t index = 0 ; index < HMDCSELFTRACKING_CUTBRIDGE_NUMBER; index ++)
    {
      printf(" %2i    %5s    %-40s\n",
	     index, 
	     (getCutbridge(index))?"YES":"no",
	     cutname[index]);
    }
  cout << endl;
  return; 
}

Bool_t HMdcSelfTracking::setStartTimeCutWindow(UInt_t index, Float_t min, Float_t max)
{
  // Begin_Html sets the start time cut window for strip no. index from min to max (in ns)
  // if index is out of bounds kFALSE will be the default value End_Html

  return (setStartTimeCutMin(index,min) && setStartTimeCutMax(index,max));
}

Bool_t HMdcSelfTracking::setStartTimeCutMax(UInt_t index, Float_t max)
{

  // Begin_Html sets the upper limit (in ns) of the start time cut window for strip no. index
  // if index is out of bounds kFALSE will be the default value End_Html

  if(index < HMDCSELFTRACKING_STARTSTRIP_NUMBER)
    {
      startmax[index]=max;
      return kTRUE;
    }
  return kFALSE;
}

Bool_t HMdcSelfTracking::setStartTimeCutMin(UInt_t index, Float_t min)
{
  // Begin_Html sets the lower limit (in ns) of the start time cut window for strip no. index
  // if index is out of bounds kFALSE will be the default value  End_Html

  if(index < HMDCSELFTRACKING_STARTSTRIP_NUMBER)
    {
      startmin[index]=min;
      return kTRUE;
    }
  return kFALSE;
}

Float_t HMdcSelfTracking::getStartTimeCutMax(UInt_t index)
{
  // Begin_Html returns the upper limit (in ns) of the start time cut window of Start Strip no index
  // if index is out of bounds a default value of -999 is returned.  End_Html

  if(index < HMDCSELFTRACKING_STARTSTRIP_NUMBER)
    {
      return startmax[index];
    }
  return -999.;
}

Float_t HMdcSelfTracking::getStartTimeCutMin(UInt_t index)
{
  // Begin_Html returns the lower limit (in ns) of the start time cut window of Start Strip no index
  // if index is out of bounds a default value of -999 is returned. End_Html

  if(index < HMDCSELFTRACKING_STARTSTRIP_NUMBER)
    {
      return startmin[index];
    }
  return -999.;
}

void HMdcSelfTracking::printStartTimeCutWindow(void)
{
  // Begin_Html Prints out a table of all start time cut windows for all start detector strips  
  // to the standard output  End_Html
  
  cout << endl;
  cout << "Start Time Windows :" << endl;
  printf("strip\t\tmin\t\tmax \n");
  printf("-------------------------------------------------------\n");
  for (Int_t index = 1 ; index < HMDCSELFTRACKING_STARTSTRIP_NUMBER; index ++)
    {
      printf(" % 2i\t\t%03.1f \tns\t%03.1f \tns\n",
	     index, 
	     getStartTimeCutMin(index),
	     getStartTimeCutMax(index));
    }
  cout << endl;
  return; 
}
void HMdcSelfTracking::printCorrelationWindow(void)
{
  // Begin_Html Prints out residual cuts  
  // to the standard output  End_Html
  
  cout << endl;
  cout << "Correlation Cuts (Residuals) :" << endl;
  printf("Residual#\tmin\tmax \n");
  printf("-------------------------------------------------------\n");
  for (Int_t index = 1 ; index < 4; index ++)
    {
      printf(" % 2i\t\t%03.1f \t%03.1f \n",
	     index, 
	     getCorrelationWmin(index),
	     getCorrelationWmax(index));
    }
  cout << endl;
  return; 
}

void HMdcSelfTracking::printTimeCutWindow(void)
{
  // Begin_Html Prints out the time cut windows   
  // to the standard output End_Html

  cout << endl;
  cout << "Time Windows :" << endl;
  printf("min\t\tmax \n");
  printf("-------------------------------------------------------\n");
  printf("%#03.1f \tns\t%#03.1f ns\n",getTimeCutMin(),getTimeCutMax());
  cout << endl;
  return; 
}

void HMdcSelfTracking::printTimeAboveThresholdCutWindow(void)
{
  // Begin_Html Prints out the time above threshold cut windows   
  // to the standard output End_Html

  cout << endl;
  cout << "Time Above Threshold Windows :" << endl;
  printf("plane\tmin\t\tmax \n");
  printf("-------------------------------------------------------\n");
  for (Int_t i=1; i<5;i++){
    printf("%i \t%#03.1f \tns\t%#03.1f ns\n",i,getTimeAboveThresholdCutMin(i),getTimeAboveThresholdCutMax(i));
  }
  cout << endl;
  return; 
}

void HMdcSelfTracking::printCorrelationFct(void)
{
  // Begin_Html Prints out the correltation fct parameters (1=plane1 vs. plane2, 2=1 vs. 3, 3=2 vs. 3)   
  // to the standard output End_Html

  cout << endl;
  cout << "Correlation Function parameters:" << endl;
  printf("cor. \tA \tB \tC \n");
  printf("-------------------------------------------------------\n");
  for (Int_t i=1; i<4;i++){
    printf("%i \t%f \t%f \t%f\n",i,getCorrelationFctA(i),getCorrelationFctB(i),getCorrelationFctC(i));
  }
  cout << endl;
  return; 
}

void HMdcSelfTracking::printAnalysisCellCutWindow(void)
{
  // Prints out the range of the cells numbers which will be used in further analysis
  // to the standard output

  cout << endl;
  cout << "Analysis Cell Windows :" << endl;
  printf("min\t\tmax \n");
  printf("-------------------------------------------------------\n");
  printf("%03i\t\t%03i\n",getAnalysisCellCutMin(),getAnalysisCellCutMax());
  cout << endl;
  return; 
}

void HMdcSelfTracking::printTimeDiffL3L4Cut()
{
  // Begin_Html Prints out the value for the difference 
  // between time1 in layer 3 and time1 in layer 4
  // to the standard output  End_Html
  
  cout << endl;
  printf("Time Difference Cut between Layer 3 and 4: %3.1f ns\n",tdifcut);
  cout << endl;
  return;
}

Bool_t HMdcSelfTracking::init(void)
{
//  Initializes HMdcSelfTracking

    // MDC:
    calCatMdc=gHades->getCurrentEvent()->getCategory(catMdcCal1);
    if (!calCatMdc) {
        calCatMdc=gHades->getSetup()->getDetector("Mdc")->buildCategory(catMdcCal1);
        if (!calCatMdc) return kFALSE;
        else gHades->getCurrentEvent()->addCategory(catMdcCal1,calCatMdc,"Mdc");
    }
    // creates an iterator which loops over all fired cells
    iterMdc=(HIterator *)calCatMdc->MakeIterator("native");
    if (fNameRoot && !fout)
        fout = new TFile(fNameRoot,"RECREATE");

    //START: 
    if(!noStart){
	calCatStart=gHades->getCurrentEvent()->getCategory(catStart2Cal);
	if (!calCatStart) {
	    calCatStart=gHades->getSetup()->getDetector("Start")->buildCategory(catStart2Cal);
	    if (!calCatStart) return kFALSE;
	    else gHades->getCurrentEvent()->addCategory(catStart2Cal,calCatStart,"Start");
	}
    }
    //Header:
    evheader = gHades->getCurrentEvent()->getHeader();

    // creates an iterator which loops over all fired cells
    if(!noStart){
	iterStart=(HIterator *)calCatStart->MakeIterator("native");
    }
    if (fNameRoot && !fout)
        fout = new TFile(fNameRoot,"RECREATE");

    createHist();
    resetCounters();
    fActive=kTRUE;

    return kTRUE;
}

void HMdcSelfTracking::createHist()
{
    // allocate histograms

    Char_t title[20], name[20];

    sprintf(title, "%s%i","Time_cut",0);
    sprintf(name, "%s%i%s","pTime_cut[",0,"]");
    pTime_cut[0] = new TH1D(name,title,350,-100,600);
    for (Int_t i=1;i<7;i++){
	sprintf(title, "%s%i","Time_cut",i);
	sprintf(name, "%s%i%s","pTime_cut[",i,"]");
	pTime_cut[i] = new TH1D(name,title,350,-100,600);
	sprintf(title, "%s%i","Time0_cell",i);
	sprintf(name, "%s%i%s","pTime0_cell[",i,"]");
	pTime0_cell[i] = new TH2S(name,title,350,-100,600,200,0,200);
	sprintf(title, "%s%i","Time_cell",i);
	sprintf(name, "%s%i%s","pTime_cell[",i,"]");
	pTime_cell[i] = new TH2S(name,title,300,0,600,200,0,200);
	sprintf(title, "%s%i","Layer",i);
	sprintf(name, "%s%i%s","pLayer[",i,"]");
	player[i] = new TH1D(name,title,200,0,200);
	sprintf(title, "%s%i","NhitLayer",i);
	sprintf(name, "%s%i%s","pNhitLayer[",i,"]");
	pNhitlayer[i] = new TH1D(name,title,50,0,50);
	if (i>0 && i<3) {
	    sprintf(title, "%s%i","Timesum_cell",i);
	    sprintf(name, "%s%i%s","pTimesum_cell[",i,"]");
	    pTimesum_cell[i] = new TH2S(name,title,200,0,200,75,0,300);
	    sprintf(title, "%s%i","Time0diff_cell",i);
	    sprintf(name, "%s%i%s","pTime0diff_cell[",i,"]");
	    pTime0diff_cell[i] = new TH2S(name,title,250,-50,200,100,0,200);
	    for (Int_t j=cellmin; j<=cellmax; j++){
		sprintf(title, "%s%i%s%i","Fish",i,"_",j);
		sprintf(name, "%s%i%s%i%s","pFish[",i,"][",j,"]");
		pFish[i][j] = new TH2S(name,title,150,0,300,125,-250,250);
// 		sprintf(title, "%s%i%s%i","Tsum_ev_prof",i,"_",j);
// 		sprintf(name, "%s%i%s%i%s","pTsum_ev_prof[",i,"][",j,"]");
// 		pTsum_ev_prof[i][j] = new TProfile(name,title,150,0,3000000,20,250);
		sprintf(title, "%s%i%s%i","Tsum_ev",i,"_",j);
		sprintf(name, "%s%i%s%i%s","pTsum_ev[",i,"][",j,"]");
		pTsum_ev[i][j] = new TH2S(name,title,150,0,3000000,60,0,240);
	    }
	}
    }
    sprintf(title, "%s","Time0_diff");
    sprintf(name, "%s","pTime0_diff");
    pTime0_diff = new TH2S(name,title,250,-50,450,250,-50,450);
    pTime_diff[0] = new TH1D("pTime_diff[0]","tdif0",650,-50,600); // t1-t2 before cuts
    pTime_diff[1] = new TH1D("pTime_diff[1]","tdif1",650,-50,600); // t1-t2 after cuts
    player0[1] = new TH1D("player01","layer01",200,0,200);
    player0[2] = new TH1D("player02","layer02",200,0,200);
    pinfo = new TH1F("pinfo","info",60,-0.25,29.25);
    peff = new TH1F("peff","eff",160,0,160);
    pTimesum_adj_cell3 = new TH2S("pTimesum_adj_cell3","pTimesum_adj_cell3",250,0,250,100,0,200);
    pTimesum_adj_cell4 = new TH2S("pTimesum_adj_cell4","pTimesum_adj_cell4",250,0,250,100,0,200);
    if(!noStart){
	pStart_time_strip = new TH2S("pStart_time_strip","pStart_time_strip",300,0,150,100,0.5,8.5);
	for (Int_t i=1;i<HMDCSELFTRACKING_STARTSTRIP_NUMBER;i++){
	    sprintf(title, "%s%i","Start_time",i);
	    sprintf(name, "%s%i%s","pStart_time[",i,"]");
	    pStart_time[i] = new TH1F(name,title,1200,0,150);
	}
	pStart_mult = new TH1F("pStart_mult","pStart_mult",5,-0.5,4.5);
    }
    if(!noCorrSector) {
       pCorrSector = new TH3F("pCorrSector","CorrSector",180,0,180,180,0,180,180,0,180);
       for (Int_t i=1;i<4;i++){
	    sprintf(title, "%s%i","CorrDiff0",i);
	    sprintf(name, "%s%i%s","CorrDiff0[",i,"]");
	    pCorrDiff[0][i] = new TH1F(name,title,100,-20,20);
	}
    }

    if(!noCheckCorrSector) {
       for (Int_t i=1;i<4;i++){
	    sprintf(title, "%s%i","CorrDiff1",i);
	    sprintf(name, "%s%i%s","CorrDiff1[",i,"]");
	    pCorrDiff[1][i] = new TH1F(name,title,100,-20,20);
	}
    }
}

void HMdcSelfTracking::checkAdjacentCellAnalysisLayer1(Int_t ihit, Int_t ii)
{
    // Begin_Html Checks whether cell ihit and cell ii are adjacent
    // cells in analysis layer 1 ( default= layer 3)
    // and if this cell combination has not been used before End_Html
    // fills the sum of their times to pTimesum_adj_cell3

    if (abs(hitCells[analysisLayer1][ihit]-hitCells[analysisLayer1][ii])==1)
    {
	flag[NEIGHBOURS] = kTRUE;
	timesum  = hitTime1[analysisLayer1][ihit] + hitTime1[analysisLayer1][ii];
	timediff = hitTime1[analysisLayer1][ihit] - hitTime1[analysisLayer1][ii];

	if (alreadyUsedCellFlag_AnalysisLayer1[hitCells[analysisLayer1][ihit]] == 0 &&
	    alreadyUsedCellFlag_AnalysisLayer1[hitCells[analysisLayer1][ii]]   == 0)
	{
	    if (fabs(timediff)<timeDiffMax) pTimesum_adj_cell3 -> Fill(timesum,hitCells[analysisLayer1][ihit],1.);
	    alreadyUsedCellFlag_AnalysisLayer1[hitCells[analysisLayer1][ihit]] = 1;
	    alreadyUsedCellFlag_AnalysisLayer1[hitCells[analysisLayer1][ii]]   = 1;
	}
    }
    return;
}

void HMdcSelfTracking::checkAdjacentCellAnalysisLayer2(Int_t ihit, Int_t ii)
{
    // Begin_Html Checks whether cell ihit and cell ii are adjacent cells in analysis layer 2 ( default= layer 4)
    // and if this cell combination has not been used before End_Html
    // fills the sum of their times  to pTimesum_adj_cell4
    // but only if the time difference is smaller than a given value (default: 10 ns)

    if (abs(hitCells[analysisLayer2][ihit] - hitCells[analysisLayer2][ii]) == 1)
    {
	timesum  = hitTime1[analysisLayer2][ihit] + hitTime1[analysisLayer2][ii];
	timediff = hitTime1[analysisLayer2][ihit] - hitTime1[analysisLayer2][ii];

	if (alreadyUsedCellFlag_AnalysisLayer2[hitCells[analysisLayer2][ihit]] == 0 &&
	    alreadyUsedCellFlag_AnalysisLayer2[hitCells[analysisLayer2][ii]]   == 0)
	{
	    if (fabs(timediff)<timeDiffMax) pTimesum_adj_cell4 -> Fill(timesum,hitCells[analysisLayer2][ihit],1.);
	    alreadyUsedCellFlag_AnalysisLayer2[hitCells[analysisLayer2][ihit]] = 1;
	    alreadyUsedCellFlag_AnalysisLayer2[hitCells[analysisLayer2][ii]]   = 1;
	}
    }
    return;
}

void HMdcSelfTracking::findCorrelatedHits(Int_t ihit)
{
    // Begin_Html Compares all hit cells found in analysis layer 2 with cell ihit
    // and looks if there are correlated cells in analysis layer 1 and 2
    // Then it determines whether the hit in analysis layer 2 was in the cell left or right
    // beneath cell ihit in analysis layer 1 End_Html

    flag[LEFT_CELL_HIT]  = kFALSE;
    flag[RIGHT_CELL_HIT] = kFALSE;

    for (Int_t ii=1; ii < nhit[analysisLayer2]+1; ii++)
    { // loop over hits in layer4
	if ((hitCells[analysisLayer1][ihit] - hitCells[analysisLayer2][ii]) == setLeft[setmodule-1])
	{ // left
	    flag[LEFT_CELL_HIT]  = kTRUE;
	    lhit[LEFT] = ii;
	}
	if ((hitCells[analysisLayer1][ihit] - hitCells[analysisLayer2][ii]) == setRight[setmodule-1])
	{ //right
	    flag[RIGHT_CELL_HIT] = kTRUE;
	    lhit[RIGHT] = ii;
	}
    } // layer4 hit loop

    return;
}

void HMdcSelfTracking::fillHist()
{

// analyze layer 3: +0deg, layer 4: -0deg, fill histos

    if (nhit[analysisLayer2] > 0)
    { // analysis of adjacent cells in layer 4
        cntHitslayer2=cntHitslayer2+nhit[analysisLayer2];
	for (Int_t ihit = 1; ihit < nhit[analysisLayer2] + 1; ihit++)
	{ // loop over hits in layer4
	    for (Int_t ii = 1; ii < nhit[analysisLayer2] + 1; ii++)
	    {
		checkAdjacentCellAnalysisLayer2(ihit, ii);
	    }
	}
    }

    if (nhit[analysisLayer1] > 0)
    { // adjacent cell analysis and selfcorrelation
        cntHitslayer1=cntHitslayer1+nhit[analysisLayer1];
	for (Int_t ihit = 1; ihit < nhit[analysisLayer1] + 1; ihit++)
	{ // loop over hits in layer3
	    flag[NEIGHBOURS] = kFALSE;
	    for (Int_t ii = 1; ii < nhit[analysisLayer1] + 1; ii++)
	    {
		checkAdjacentCellAnalysisLayer1(ihit, ii);
	    }

            flag[RESIDUAL_CUT]=kTRUE;
            if (!noCheckCorrSector) checkCorrSector(hitCells[analysisLayer1][ihit],setmodule);

	    if (!flag[NEIGHBOURS] && flag[RESIDUAL_CUT])
	    { // hit cells  w/o neighbours & residual cut
		cntHitsWithoutNeighbours++;
		counter[NEIGHBOURS][ hitCells[analysisLayer1][ihit] ]++;

                findCorrelatedHits(ihit);
 
		if ( flag[LEFT_CELL_HIT]  || flag[RIGHT_CELL_HIT])
		{ // hit(s) in layer4, incl. Double_t hits
		    cntHitsAnalysislayer2++;
		    counter[ANALYSISLAYER2_HITS][hitCells[analysisLayer1][ihit]]++;
		}

		if ( flag[LEFT_CELL_HIT]  && flag[RIGHT_CELL_HIT])
		{ // Double_t hit in layer4
		    cntDoubleHitsAnalysislayer2++;
		    counter[ANALYSISLAYER2_DOUBLE_HITS][hitCells[analysisLayer1][ihit]]++;
		}

		if ((flag[LEFT_CELL_HIT]) ^ (flag[RIGHT_CELL_HIT]))
		{ // single hit in layer4
		    fillAnalysisHists(ihit);
		} // end case single hit in layer4

	    } // end case layer3 sinlge hit cell
	} // end layer3 hit loop
    } // end case layer3
    // end event-wise analysis
}

void HMdcSelfTracking::fillAnalysisHists(Int_t ihit)
{
    // Fills histogramms after all neccessary conditions are checked.

    Int_t leftOrRight = (flag[RIGHT_CELL_HIT])? RIGHT:LEFT; // fill right or left

    Float_t time1AnalysisLayer1 = hitTime1[analysisLayer1][ihit];
    Float_t time1AnalysisLayer2 = hitTime1[analysisLayer2][lhit[leftOrRight]];

    if (hitCells[analysisLayer1][ihit] >= cellmin &&
	hitCells[analysisLayer1][ihit] <= cellmax)
    {
	pFish[leftOrRight][hitCells[analysisLayer1][ihit]]
	    -> Fill(time1AnalysisLayer1 + time1AnalysisLayer2,
		    time1AnalysisLayer1 - time1AnalysisLayer2,
		    1.);
	if ( fabs(time1AnalysisLayer1 - time1AnalysisLayer2) < tdifcut)
	  { 
//             pTsum_ev_prof[leftOrRight][hitCells[analysisLayer1][ihit]]
// 	    -> Fill(eventCounter,time1AnalysisLayer1 + time1AnalysisLayer2);
            pTsum_ev[leftOrRight][hitCells[analysisLayer1][ihit]]
	    -> Fill(eventCounter,time1AnalysisLayer1 + time1AnalysisLayer2);
          }
    }
    if ( fabs(time1AnalysisLayer1 - time1AnalysisLayer2) < tdifcut)
    {
	pTimesum_cell[leftOrRight]
	    -> Fill(hitCells[analysisLayer1][ihit],
		    time1AnalysisLayer1 + time1AnalysisLayer2,
		    1.);
	player0[leftOrRight]
	    -> Fill( (Float_t) hitCells[analysisLayer1][ihit],
		     1.);
    }
    return;
}

void HMdcSelfTracking::writeHist()
{
    // Write histogramms to a rootfile.

    fout->cd();

    pinfo -> Write();
    pTime_diff[0] -> Write(); pTime_diff[1] -> Write();
    player0[1] -> Write(); player0[2] -> Write();
    peff -> Write();
    pTimesum_adj_cell3 -> Write(); pTimesum_adj_cell4 -> Write();
    pTime_cut[0] -> Write();
    pTime0_diff -> Write();
    for (Int_t i=1; i<7; i++){
        pTime_cut[i] -> Write();
        player[i] -> Write();
        pNhitlayer[i] -> Write();
        pTime_cell[i] -> Write();
        pTime0_cell[i] -> Write();
        if (i>0 && i<3){
            pTimesum_cell[i] -> Write();
            pTime0diff_cell[i] -> Write();
            for (Int_t j=cellmin; j<=cellmax; j++){
                pFish[i][j] -> Write();
//                 pTsum_ev_prof[i][j] -> Write();
                pTsum_ev[i][j] -> Write();
            }
        }
    }
    if(!noStart){
	pStart_time_strip -> Write();
	for (Int_t i=1; i<HMDCSELFTRACKING_STARTSTRIP_NUMBER; i++) {pStart_time[i] -> Write();}
	pStart_mult -> Write();
    }
    if(!noCorrSector) {
       pCorrSector -> Write();
       for (Int_t i=1; i<4; i++){pCorrDiff[0][i] -> Write();}
    }

    if(!noCheckCorrSector) {
      for (Int_t i=1; i<4; i++){pCorrDiff[1][i] -> Write();}
    }
}


Bool_t HMdcSelfTracking::finalize()
{
    // Fills control histogramms and saves all histogramms to file fout

    fillControlHists();
    if (fout)  writeHist ();

    fout->Save();
    fout->Close();
    delete fout;

    return kTRUE;
}

void HMdcSelfTracking::resetCounters()
{
    // reset counters

    for (Int_t ii=0; ii<3 ; ii++)
    {
	for (Int_t jj=0;jj<160;jj++) counter[ii][jj]=0;
    }
    for (Int_t ii=0; ii<11; ii++) ctrl[ii]=0;
    for (Int_t ii=0; ii<7 ; ii++) nhit[ii]=0;
}

void HMdcSelfTracking::fillControlHists()
{
    // fill some info histos

    pinfo->Fill(10.0, (Float_t) cntHitslayer1);
    pinfo->Fill(11.0, (Float_t) cntHitslayer2);
    pinfo->Fill(12.0, (Float_t) cntHitsWithoutNeighbours);
    pinfo->Fill(13.0, (Float_t) cntHitsAnalysislayer2);
    pinfo->Fill(14.0, (Float_t) cntDoubleHitsAnalysislayer2);
    pinfo->Fill(20.0, (Float_t) (ctrl[NO_CUT]));
    pinfo->Fill(21.0, (Float_t) (ctrl[TOF_BIT_CUT]));
    pinfo->Fill(22.0, (Float_t) (ctrl[START_CUT]));
    pinfo->Fill(23.0, (Float_t) (ctrl[TIME1_CUT]));
    pinfo->Fill(24.0, (Float_t) (ctrl[TIME2_CUT]));
    pinfo->Fill(25.0, (Float_t) (ctrl[TIME_ABOVE_THRESHOLD_CUT]));

    printf(" layer3 hits: %i, corresponding layer4 hits: %i (Double_t hits: %i)\n",
	   cntHitsWithoutNeighbours,
	   cntHitsAnalysislayer2,
	   cntDoubleHitsAnalysislayer2);

    for (Int_t i=1; i<160; i++){
	if (counter[NEIGHBOURS][i]>0 && counter[ANALYSISLAYER2_HITS][i]>0)
	    peff->Fill(i, (counter[ANALYSISLAYER2_HITS][i]/counter[NEIGHBOURS][i])*100 );
    }

}

void HMdcSelfTracking::executeEventHeaderCheck()
{
    // Checks Event Header for TofBit

    pinfo->Fill(NO_CUT,1.);

//  if (evheader->IsTofBit() || cutbridge[TOF_BIT_CUT]) {
    if (cutbridge[TOF_BIT_CUT]) {
	cut[TOF_BIT_CUT]=kTRUE; // cut on trigger condition
	pinfo->Fill(TOF_BIT_CUT,1.);
    }
    return;
}

void HMdcSelfTracking::executeStart()
{
    // First checks start detector for single hits
    // and secondly filters for certain time windows on the start detector times
    // defined per default in HMdcSelfTracking:setDefaults() or
    // changed by HMdcSelfTracking:setStartTimeCutWindow(strip,min,max)

    HStart2Cal *objStartC;
    while ( (objStartC=(HStart2Cal *)iterStart->Next())!=0 ) {
	start_strip = objStartC->getStrip() + 1;
//	start_time = objStartC->getTime();
	if (start_strip<5) nstartstrip++; //check start, NOT veto counter
    }
    pStart_mult->Fill(nstartstrip,1.);
//     if (nstartstrip==1 || cutbridge[START_CUT]){ // cut on start strip multiplicity=1 & start time
// 	pStart_time_strip -> Fill(start_time, start_strip);
// 	if (cut[TOF_BIT_CUT]) pStart_time[start_strip] -> Fill(start_time,1.);
// 	if ((start_time>startmin[start_strip] && start_time<startmax[start_strip]) || cutbridge[START_CUT]){
// 	    cut[START_CUT]=kTRUE;
// 	    pinfo->Fill(START_CUT,1.);
// 	}
//     }
    return;
}

void HMdcSelfTracking::executeMdc()
{

    relevant_data=kFALSE;

    HMdcCal1 *objMdcC;
    while ( (objMdcC=(HMdcCal1 *)iterMdc->Next())!=0 ) {
	sector = objMdcC->getSector() + 1;
	module = objMdcC->getModule() + 1;
	layer = objMdcC->getLayer() + 1;
	cell  = objMdcC->getCell() + 1;
	time1   = objMdcC->getTime1();
	time2   = objMdcC->getTime2();

        if(sector==4&&layer==3&& // Sector correlation analysis w/ time cuts, sector 4 only!
          (time1>tmin && time1<tmax)&&(time2>tmin && time2<tmax)&&
          ((time2-time1)>tdifmin[module] && (time2-time1)<tdifmax[module])) {
             ncell0[module]++;
	     cell0[module][ncell0[module]]=cell;
        }
  
	if(sector==setsector&&module==setmodule){

	    pTime_diff[0] -> Fill(time2-time1,1.);
	    pTime0_cell[layer] -> Fill(time1,(Float_t) cell,1.);
	    if (time1>25 && time1<45) {
		if (layer == analysisLayer1) pTime0diff_cell[1] -> Fill((time2-time1),(Float_t) cell,1.);
		if (layer == analysisLayer2) pTime0diff_cell[2] -> Fill((time2-time1),(Float_t) cell,1.);
	    }

	    if (layer == monitorLayer && cell == monitorCell) pTime_cut[NO_CUT] -> Fill(time1,1.);
 
            ctrl[NO_CUT]++;
	    if (cut[TOF_BIT_CUT] || cutbridge[TOF_BIT_CUT]) {
		if (layer == monitorLayer && cell == monitorCell) pTime_cut[TOF_BIT_CUT] -> Fill(time1,1.);

                ctrl[TOF_BIT_CUT]++;
		if (cut[START_CUT] || cutbridge[START_CUT]) {
		    if (layer == monitorLayer && cell == monitorCell){
			pTime_cut[START_CUT] -> Fill(time1,1.);
			pTime0_diff -> Fill(time1,(time2-time1),1.);

		    }

		    // MDC-CUTS:
		    ctrl[START_CUT]++;
		    if ((time1>tmin && time1<tmax) || cutbridge[TIME1_CUT])
		    {   // cut time1 (time window due to "-99")
			if (layer == monitorLayer && cell == monitorCell) pTime_cut[TIME1_CUT] -> Fill(time1,1.);
			ctrl[TIME1_CUT]++;
			if ((time2>tmin && time2<tmax) || cutbridge[TIME2_CUT])
			{  // cut time2
			    if (layer == monitorLayer && cell == monitorCell) pTime_cut[TIME2_CUT] -> Fill(time1,1.);
			    ctrl[TIME2_CUT]++;
			    if (((time2-time1)>tdifmin[setmodule] && (time2-time1)<tdifmax[setmodule]) ||
				cutbridge[TIME_ABOVE_THRESHOLD_CUT])
			        {  // cut time-above-thr.
				relevant_data=kTRUE;
			     	if (layer == monitorLayer && cell == monitorCell) pTime_cut[TIME_ABOVE_THRESHOLD_CUT] -> Fill(time1,1.);
				nhit[layer]++;
				ctrl[TIME_ABOVE_THRESHOLD_CUT]++;
				hitCells[layer][nhit[layer]] = cell;
				hitTime1[layer][nhit[layer]] = time1;
				hitTime2[layer][nhit[layer]] = time2;
				pTime_cell[layer] -> Fill(time1,(Float_t) cell,1.);
				pTime_diff[1] -> Fill(time2-time1,1.);
				player[layer] -> Fill((Float_t) cell, 1.);
			    } // cut5: time-dif
			} // cut4: time2
		    } // cut3: time1
                    pNhitlayer[layer] -> Fill((Float_t) nhit[layer],1.);
		} // cut2: start
	    } // cut1: trigger
	} // set sector/module
    } // end of while MDC Iterator

    return;
}

void HMdcSelfTracking::executeCorrSector()
{
  // combinatorics:
  for (Int_t i3=1; i3<(ncell0[3]+1); i3++){
    for (Int_t i2=1; i2<(ncell0[2]+1); i2++){
      for (Int_t i1=1; i1<(ncell0[1]+1); i1++){

	 pCorrSector -> Fill(cell0[1][i1],cell0[2][i2],cell0[3][i3]); // fill 3D

    	 // fill residuals to determine cut later:
   	 Float_t x0=cell0[1][i1]; 
	 Float_t y0=cell0[2][i2];
	 Float_t z0=cell0[3][i3];

         Float_t x1=A[1]+B[1]*y0+C[1]*y0*y0;
         Float_t x2=A[2]+B[2]*z0+C[2]*y0*y0;
         Float_t y1=A[3]+B[3]*z0+C[3]*z0*z0;

         Float_t difx1=x0-x1;
         Float_t difx2=x0-x2;
         Float_t dify1=y0-y1;

         pCorrDiff[0][1]->Fill(difx1,1.);
         pCorrDiff[0][2]->Fill(difx2,1.);
         pCorrDiff[0][3]->Fill(dify1,1.);

      }   
    }
  }
   return;
}

void HMdcSelfTracking::checkCorrSector(Int_t cell, Int_t module)
{

  Int_t m1, m2;
  Float_t x[4] = {0,0,0,0};

  Float_t dif[4] = {1000, 1000, 1000, 1000}; // default residuals
  Bool_t check[4] = {kFALSE, kFALSE, kFALSE};

  check[module] = kTRUE;

  m1=2; m2=3;

  switch(module){ // set loop & residual variables
    case 1:
      m1=2; m2=3;
    break;  
    case 2:
      m1=1; m2=3;
    break;  
    case 3:
      m1=1; m2=2;
    break;   
    default:  
      printf("!!! checkCorrSector: not yet initialized !!!");
    break;
  }

  flag[RESIDUAL_CUT]=kFALSE;

  for (Int_t i1=1; i1<(ncell0[m1]+1); i1++){
     for (Int_t i2=1; i2<(ncell0[m2]+1); i2++){
       if(module==1){x[1]=cell; x[2]=cell0[m1][i1]; x[3]=cell0[m2][i2];}
       if(module==2){x[1]=cell0[m1][i1]; x[2]=cell; x[3]=cell0[m2][i2];}
       if(module==3){x[1]=cell0[m1][i1]; x[2]=cell0[m2][i2]; x[3]=cell;}
       dif[1]=x[1]-(A[1]+B[1]*x[2]+C[1]*x[2]*x[2]);
       dif[2]=x[1]-(A[2]+B[2]*x[3]+C[2]*x[3]*x[3]);
       dif[3]=x[2]-(A[3]+B[3]*x[3]+C[3]*x[3]*x[3]);
//        pCorrDiff[0][1]->Fill(dif[1],1.);
//        pCorrDiff[0][2]->Fill(dif[2],1.);
//        pCorrDiff[0][3]->Fill(dif[3],1.);
       if(((dif[1]>CorrWindow[1][1] && dif[1]<CorrWindow[1][2])|!check[1]) &&
          ((dif[2]>CorrWindow[2][1] && dif[2]<CorrWindow[2][2])|!check[2]) &&
          ((dif[3]>CorrWindow[3][1] && dif[3]<CorrWindow[3][2])|!check[3])) flag[RESIDUAL_CUT]=kTRUE;
     }
  }

  if (flag[RESIDUAL_CUT]) {
    for(Int_t i=1;i<4;i++){pCorrDiff[1][i]->Fill(dif[i],1.);}
  }  

return;
}


void HMdcSelfTracking::executeReset()
{
    // reset iterators
    iterMdc->Reset();
    if(!noStart) iterStart->Reset();

    // reset counters, flags
    for (Int_t ii=0; ii<5; ii++){ ncell0[ii] = 0;}
    for (Int_t ii=0; ii<7; ii++){ nhit[ii] = 0;}
    for (Int_t ii=0; ii<20; ii++){ cut[ii] = 0;}
    for (Int_t ii=0; ii<200; ii++)
    {
	alreadyUsedCellFlag_AnalysisLayer1[ii] = 0;
	alreadyUsedCellFlag_AnalysisLayer2[ii] = 0;
        for (Int_t i=0; i<5;i++){ cell0[i][ii] = 0;}
    }
    nstartstrip=0;

    return;
}

Int_t HMdcSelfTracking::execute()
{
    // loop inside event and fill pre-defined structures, apply cuts

    executeReset();

    // hit loop, fill local variables:
    eventCounter++;
    if ( !(eventCounter % 2000) ) printf(" ... event %i\n",eventCounter);

    // Event Header:
    executeEventHeaderCheck();

    // Start:
    if(!noStart) executeStart();

    // Mdc:
    executeMdc();

    // Correlations in Sector:
    if(!noCorrSector) executeCorrSector();

    // Correlation Analysis:
    if (relevant_data) fillHist();

    return 0; // end event
}

 hmdcselftracking.cc:1
 hmdcselftracking.cc:2
 hmdcselftracking.cc:3
 hmdcselftracking.cc:4
 hmdcselftracking.cc:5
 hmdcselftracking.cc:6
 hmdcselftracking.cc:7
 hmdcselftracking.cc:8
 hmdcselftracking.cc:9
 hmdcselftracking.cc:10
 hmdcselftracking.cc:11
 hmdcselftracking.cc:12
 hmdcselftracking.cc:13
 hmdcselftracking.cc:14
 hmdcselftracking.cc:15
 hmdcselftracking.cc:16
 hmdcselftracking.cc:17
 hmdcselftracking.cc:18
 hmdcselftracking.cc:19
 hmdcselftracking.cc:20
 hmdcselftracking.cc:21
 hmdcselftracking.cc:22
 hmdcselftracking.cc:23
 hmdcselftracking.cc:24
 hmdcselftracking.cc:25
 hmdcselftracking.cc:26
 hmdcselftracking.cc:27
 hmdcselftracking.cc:28
 hmdcselftracking.cc:29
 hmdcselftracking.cc:30
 hmdcselftracking.cc:31
 hmdcselftracking.cc:32
 hmdcselftracking.cc:33
 hmdcselftracking.cc:34
 hmdcselftracking.cc:35
 hmdcselftracking.cc:36
 hmdcselftracking.cc:37
 hmdcselftracking.cc:38
 hmdcselftracking.cc:39
 hmdcselftracking.cc:40
 hmdcselftracking.cc:41
 hmdcselftracking.cc:42
 hmdcselftracking.cc:43
 hmdcselftracking.cc:44
 hmdcselftracking.cc:45
 hmdcselftracking.cc:46
 hmdcselftracking.cc:47
 hmdcselftracking.cc:48
 hmdcselftracking.cc:49
 hmdcselftracking.cc:50
 hmdcselftracking.cc:51
 hmdcselftracking.cc:52
 hmdcselftracking.cc:53
 hmdcselftracking.cc:54
 hmdcselftracking.cc:55
 hmdcselftracking.cc:56
 hmdcselftracking.cc:57
 hmdcselftracking.cc:58
 hmdcselftracking.cc:59
 hmdcselftracking.cc:60
 hmdcselftracking.cc:61
 hmdcselftracking.cc:62
 hmdcselftracking.cc:63
 hmdcselftracking.cc:64
 hmdcselftracking.cc:65
 hmdcselftracking.cc:66
 hmdcselftracking.cc:67
 hmdcselftracking.cc:68
 hmdcselftracking.cc:69
 hmdcselftracking.cc:70
 hmdcselftracking.cc:71
 hmdcselftracking.cc:72
 hmdcselftracking.cc:73
 hmdcselftracking.cc:74
 hmdcselftracking.cc:75
 hmdcselftracking.cc:76
 hmdcselftracking.cc:77
 hmdcselftracking.cc:78
 hmdcselftracking.cc:79
 hmdcselftracking.cc:80
 hmdcselftracking.cc:81
 hmdcselftracking.cc:82
 hmdcselftracking.cc:83
 hmdcselftracking.cc:84
 hmdcselftracking.cc:85
 hmdcselftracking.cc:86
 hmdcselftracking.cc:87
 hmdcselftracking.cc:88
 hmdcselftracking.cc:89
 hmdcselftracking.cc:90
 hmdcselftracking.cc:91
 hmdcselftracking.cc:92
 hmdcselftracking.cc:93
 hmdcselftracking.cc:94
 hmdcselftracking.cc:95
 hmdcselftracking.cc:96
 hmdcselftracking.cc:97
 hmdcselftracking.cc:98
 hmdcselftracking.cc:99
 hmdcselftracking.cc:100
 hmdcselftracking.cc:101
 hmdcselftracking.cc:102
 hmdcselftracking.cc:103
 hmdcselftracking.cc:104
 hmdcselftracking.cc:105
 hmdcselftracking.cc:106
 hmdcselftracking.cc:107
 hmdcselftracking.cc:108
 hmdcselftracking.cc:109
 hmdcselftracking.cc:110
 hmdcselftracking.cc:111
 hmdcselftracking.cc:112
 hmdcselftracking.cc:113
 hmdcselftracking.cc:114
 hmdcselftracking.cc:115
 hmdcselftracking.cc:116
 hmdcselftracking.cc:117
 hmdcselftracking.cc:118
 hmdcselftracking.cc:119
 hmdcselftracking.cc:120
 hmdcselftracking.cc:121
 hmdcselftracking.cc:122
 hmdcselftracking.cc:123
 hmdcselftracking.cc:124
 hmdcselftracking.cc:125
 hmdcselftracking.cc:126
 hmdcselftracking.cc:127
 hmdcselftracking.cc:128
 hmdcselftracking.cc:129
 hmdcselftracking.cc:130
 hmdcselftracking.cc:131
 hmdcselftracking.cc:132
 hmdcselftracking.cc:133
 hmdcselftracking.cc:134
 hmdcselftracking.cc:135
 hmdcselftracking.cc:136
 hmdcselftracking.cc:137
 hmdcselftracking.cc:138
 hmdcselftracking.cc:139
 hmdcselftracking.cc:140
 hmdcselftracking.cc:141
 hmdcselftracking.cc:142
 hmdcselftracking.cc:143
 hmdcselftracking.cc:144
 hmdcselftracking.cc:145
 hmdcselftracking.cc:146
 hmdcselftracking.cc:147
 hmdcselftracking.cc:148
 hmdcselftracking.cc:149
 hmdcselftracking.cc:150
 hmdcselftracking.cc:151
 hmdcselftracking.cc:152
 hmdcselftracking.cc:153
 hmdcselftracking.cc:154
 hmdcselftracking.cc:155
 hmdcselftracking.cc:156
 hmdcselftracking.cc:157
 hmdcselftracking.cc:158
 hmdcselftracking.cc:159
 hmdcselftracking.cc:160
 hmdcselftracking.cc:161
 hmdcselftracking.cc:162
 hmdcselftracking.cc:163
 hmdcselftracking.cc:164
 hmdcselftracking.cc:165
 hmdcselftracking.cc:166
 hmdcselftracking.cc:167
 hmdcselftracking.cc:168
 hmdcselftracking.cc:169
 hmdcselftracking.cc:170
 hmdcselftracking.cc:171
 hmdcselftracking.cc:172
 hmdcselftracking.cc:173
 hmdcselftracking.cc:174
 hmdcselftracking.cc:175
 hmdcselftracking.cc:176
 hmdcselftracking.cc:177
 hmdcselftracking.cc:178
 hmdcselftracking.cc:179
 hmdcselftracking.cc:180
 hmdcselftracking.cc:181
 hmdcselftracking.cc:182
 hmdcselftracking.cc:183
 hmdcselftracking.cc:184
 hmdcselftracking.cc:185
 hmdcselftracking.cc:186
 hmdcselftracking.cc:187
 hmdcselftracking.cc:188
 hmdcselftracking.cc:189
 hmdcselftracking.cc:190
 hmdcselftracking.cc:191
 hmdcselftracking.cc:192
 hmdcselftracking.cc:193
 hmdcselftracking.cc:194
 hmdcselftracking.cc:195
 hmdcselftracking.cc:196
 hmdcselftracking.cc:197
 hmdcselftracking.cc:198
 hmdcselftracking.cc:199
 hmdcselftracking.cc:200
 hmdcselftracking.cc:201
 hmdcselftracking.cc:202
 hmdcselftracking.cc:203
 hmdcselftracking.cc:204
 hmdcselftracking.cc:205
 hmdcselftracking.cc:206
 hmdcselftracking.cc:207
 hmdcselftracking.cc:208
 hmdcselftracking.cc:209
 hmdcselftracking.cc:210
 hmdcselftracking.cc:211
 hmdcselftracking.cc:212
 hmdcselftracking.cc:213
 hmdcselftracking.cc:214
 hmdcselftracking.cc:215
 hmdcselftracking.cc:216
 hmdcselftracking.cc:217
 hmdcselftracking.cc:218
 hmdcselftracking.cc:219
 hmdcselftracking.cc:220
 hmdcselftracking.cc:221
 hmdcselftracking.cc:222
 hmdcselftracking.cc:223
 hmdcselftracking.cc:224
 hmdcselftracking.cc:225
 hmdcselftracking.cc:226
 hmdcselftracking.cc:227
 hmdcselftracking.cc:228
 hmdcselftracking.cc:229
 hmdcselftracking.cc:230
 hmdcselftracking.cc:231
 hmdcselftracking.cc:232
 hmdcselftracking.cc:233
 hmdcselftracking.cc:234
 hmdcselftracking.cc:235
 hmdcselftracking.cc:236
 hmdcselftracking.cc:237
 hmdcselftracking.cc:238
 hmdcselftracking.cc:239
 hmdcselftracking.cc:240
 hmdcselftracking.cc:241
 hmdcselftracking.cc:242
 hmdcselftracking.cc:243
 hmdcselftracking.cc:244
 hmdcselftracking.cc:245
 hmdcselftracking.cc:246
 hmdcselftracking.cc:247
 hmdcselftracking.cc:248
 hmdcselftracking.cc:249
 hmdcselftracking.cc:250
 hmdcselftracking.cc:251
 hmdcselftracking.cc:252
 hmdcselftracking.cc:253
 hmdcselftracking.cc:254
 hmdcselftracking.cc:255
 hmdcselftracking.cc:256
 hmdcselftracking.cc:257
 hmdcselftracking.cc:258
 hmdcselftracking.cc:259
 hmdcselftracking.cc:260
 hmdcselftracking.cc:261
 hmdcselftracking.cc:262
 hmdcselftracking.cc:263
 hmdcselftracking.cc:264
 hmdcselftracking.cc:265
 hmdcselftracking.cc:266
 hmdcselftracking.cc:267
 hmdcselftracking.cc:268
 hmdcselftracking.cc:269
 hmdcselftracking.cc:270
 hmdcselftracking.cc:271
 hmdcselftracking.cc:272
 hmdcselftracking.cc:273
 hmdcselftracking.cc:274
 hmdcselftracking.cc:275
 hmdcselftracking.cc:276
 hmdcselftracking.cc:277
 hmdcselftracking.cc:278
 hmdcselftracking.cc:279
 hmdcselftracking.cc:280
 hmdcselftracking.cc:281
 hmdcselftracking.cc:282
 hmdcselftracking.cc:283
 hmdcselftracking.cc:284
 hmdcselftracking.cc:285
 hmdcselftracking.cc:286
 hmdcselftracking.cc:287
 hmdcselftracking.cc:288
 hmdcselftracking.cc:289
 hmdcselftracking.cc:290
 hmdcselftracking.cc:291
 hmdcselftracking.cc:292
 hmdcselftracking.cc:293
 hmdcselftracking.cc:294
 hmdcselftracking.cc:295
 hmdcselftracking.cc:296
 hmdcselftracking.cc:297
 hmdcselftracking.cc:298
 hmdcselftracking.cc:299
 hmdcselftracking.cc:300
 hmdcselftracking.cc:301
 hmdcselftracking.cc:302
 hmdcselftracking.cc:303
 hmdcselftracking.cc:304
 hmdcselftracking.cc:305
 hmdcselftracking.cc:306
 hmdcselftracking.cc:307
 hmdcselftracking.cc:308
 hmdcselftracking.cc:309
 hmdcselftracking.cc:310
 hmdcselftracking.cc:311
 hmdcselftracking.cc:312
 hmdcselftracking.cc:313
 hmdcselftracking.cc:314
 hmdcselftracking.cc:315
 hmdcselftracking.cc:316
 hmdcselftracking.cc:317
 hmdcselftracking.cc:318
 hmdcselftracking.cc:319
 hmdcselftracking.cc:320
 hmdcselftracking.cc:321
 hmdcselftracking.cc:322
 hmdcselftracking.cc:323
 hmdcselftracking.cc:324
 hmdcselftracking.cc:325
 hmdcselftracking.cc:326
 hmdcselftracking.cc:327
 hmdcselftracking.cc:328
 hmdcselftracking.cc:329
 hmdcselftracking.cc:330
 hmdcselftracking.cc:331
 hmdcselftracking.cc:332
 hmdcselftracking.cc:333
 hmdcselftracking.cc:334
 hmdcselftracking.cc:335
 hmdcselftracking.cc:336
 hmdcselftracking.cc:337
 hmdcselftracking.cc:338
 hmdcselftracking.cc:339
 hmdcselftracking.cc:340
 hmdcselftracking.cc:341
 hmdcselftracking.cc:342
 hmdcselftracking.cc:343
 hmdcselftracking.cc:344
 hmdcselftracking.cc:345
 hmdcselftracking.cc:346
 hmdcselftracking.cc:347
 hmdcselftracking.cc:348
 hmdcselftracking.cc:349
 hmdcselftracking.cc:350
 hmdcselftracking.cc:351
 hmdcselftracking.cc:352
 hmdcselftracking.cc:353
 hmdcselftracking.cc:354
 hmdcselftracking.cc:355
 hmdcselftracking.cc:356
 hmdcselftracking.cc:357
 hmdcselftracking.cc:358
 hmdcselftracking.cc:359
 hmdcselftracking.cc:360
 hmdcselftracking.cc:361
 hmdcselftracking.cc:362
 hmdcselftracking.cc:363
 hmdcselftracking.cc:364
 hmdcselftracking.cc:365
 hmdcselftracking.cc:366
 hmdcselftracking.cc:367
 hmdcselftracking.cc:368
 hmdcselftracking.cc:369
 hmdcselftracking.cc:370
 hmdcselftracking.cc:371
 hmdcselftracking.cc:372
 hmdcselftracking.cc:373
 hmdcselftracking.cc:374
 hmdcselftracking.cc:375
 hmdcselftracking.cc:376
 hmdcselftracking.cc:377
 hmdcselftracking.cc:378
 hmdcselftracking.cc:379
 hmdcselftracking.cc:380
 hmdcselftracking.cc:381
 hmdcselftracking.cc:382
 hmdcselftracking.cc:383
 hmdcselftracking.cc:384
 hmdcselftracking.cc:385
 hmdcselftracking.cc:386
 hmdcselftracking.cc:387
 hmdcselftracking.cc:388
 hmdcselftracking.cc:389
 hmdcselftracking.cc:390
 hmdcselftracking.cc:391
 hmdcselftracking.cc:392
 hmdcselftracking.cc:393
 hmdcselftracking.cc:394
 hmdcselftracking.cc:395
 hmdcselftracking.cc:396
 hmdcselftracking.cc:397
 hmdcselftracking.cc:398
 hmdcselftracking.cc:399
 hmdcselftracking.cc:400
 hmdcselftracking.cc:401
 hmdcselftracking.cc:402
 hmdcselftracking.cc:403
 hmdcselftracking.cc:404
 hmdcselftracking.cc:405
 hmdcselftracking.cc:406
 hmdcselftracking.cc:407
 hmdcselftracking.cc:408
 hmdcselftracking.cc:409
 hmdcselftracking.cc:410
 hmdcselftracking.cc:411
 hmdcselftracking.cc:412
 hmdcselftracking.cc:413
 hmdcselftracking.cc:414
 hmdcselftracking.cc:415
 hmdcselftracking.cc:416
 hmdcselftracking.cc:417
 hmdcselftracking.cc:418
 hmdcselftracking.cc:419
 hmdcselftracking.cc:420
 hmdcselftracking.cc:421
 hmdcselftracking.cc:422
 hmdcselftracking.cc:423
 hmdcselftracking.cc:424
 hmdcselftracking.cc:425
 hmdcselftracking.cc:426
 hmdcselftracking.cc:427
 hmdcselftracking.cc:428
 hmdcselftracking.cc:429
 hmdcselftracking.cc:430
 hmdcselftracking.cc:431
 hmdcselftracking.cc:432
 hmdcselftracking.cc:433
 hmdcselftracking.cc:434
 hmdcselftracking.cc:435
 hmdcselftracking.cc:436
 hmdcselftracking.cc:437
 hmdcselftracking.cc:438
 hmdcselftracking.cc:439
 hmdcselftracking.cc:440
 hmdcselftracking.cc:441
 hmdcselftracking.cc:442
 hmdcselftracking.cc:443
 hmdcselftracking.cc:444
 hmdcselftracking.cc:445
 hmdcselftracking.cc:446
 hmdcselftracking.cc:447
 hmdcselftracking.cc:448
 hmdcselftracking.cc:449
 hmdcselftracking.cc:450
 hmdcselftracking.cc:451
 hmdcselftracking.cc:452
 hmdcselftracking.cc:453
 hmdcselftracking.cc:454
 hmdcselftracking.cc:455
 hmdcselftracking.cc:456
 hmdcselftracking.cc:457
 hmdcselftracking.cc:458
 hmdcselftracking.cc:459
 hmdcselftracking.cc:460
 hmdcselftracking.cc:461
 hmdcselftracking.cc:462
 hmdcselftracking.cc:463
 hmdcselftracking.cc:464
 hmdcselftracking.cc:465
 hmdcselftracking.cc:466
 hmdcselftracking.cc:467
 hmdcselftracking.cc:468
 hmdcselftracking.cc:469
 hmdcselftracking.cc:470
 hmdcselftracking.cc:471
 hmdcselftracking.cc:472
 hmdcselftracking.cc:473
 hmdcselftracking.cc:474
 hmdcselftracking.cc:475
 hmdcselftracking.cc:476
 hmdcselftracking.cc:477
 hmdcselftracking.cc:478
 hmdcselftracking.cc:479
 hmdcselftracking.cc:480
 hmdcselftracking.cc:481
 hmdcselftracking.cc:482
 hmdcselftracking.cc:483
 hmdcselftracking.cc:484
 hmdcselftracking.cc:485
 hmdcselftracking.cc:486
 hmdcselftracking.cc:487
 hmdcselftracking.cc:488
 hmdcselftracking.cc:489
 hmdcselftracking.cc:490
 hmdcselftracking.cc:491
 hmdcselftracking.cc:492
 hmdcselftracking.cc:493
 hmdcselftracking.cc:494
 hmdcselftracking.cc:495
 hmdcselftracking.cc:496
 hmdcselftracking.cc:497
 hmdcselftracking.cc:498
 hmdcselftracking.cc:499
 hmdcselftracking.cc:500
 hmdcselftracking.cc:501
 hmdcselftracking.cc:502
 hmdcselftracking.cc:503
 hmdcselftracking.cc:504
 hmdcselftracking.cc:505
 hmdcselftracking.cc:506
 hmdcselftracking.cc:507
 hmdcselftracking.cc:508
 hmdcselftracking.cc:509
 hmdcselftracking.cc:510
 hmdcselftracking.cc:511
 hmdcselftracking.cc:512
 hmdcselftracking.cc:513
 hmdcselftracking.cc:514
 hmdcselftracking.cc:515
 hmdcselftracking.cc:516
 hmdcselftracking.cc:517
 hmdcselftracking.cc:518
 hmdcselftracking.cc:519
 hmdcselftracking.cc:520
 hmdcselftracking.cc:521
 hmdcselftracking.cc:522
 hmdcselftracking.cc:523
 hmdcselftracking.cc:524
 hmdcselftracking.cc:525
 hmdcselftracking.cc:526
 hmdcselftracking.cc:527
 hmdcselftracking.cc:528
 hmdcselftracking.cc:529
 hmdcselftracking.cc:530
 hmdcselftracking.cc:531
 hmdcselftracking.cc:532
 hmdcselftracking.cc:533
 hmdcselftracking.cc:534
 hmdcselftracking.cc:535
 hmdcselftracking.cc:536
 hmdcselftracking.cc:537
 hmdcselftracking.cc:538
 hmdcselftracking.cc:539
 hmdcselftracking.cc:540
 hmdcselftracking.cc:541
 hmdcselftracking.cc:542
 hmdcselftracking.cc:543
 hmdcselftracking.cc:544
 hmdcselftracking.cc:545
 hmdcselftracking.cc:546
 hmdcselftracking.cc:547
 hmdcselftracking.cc:548
 hmdcselftracking.cc:549
 hmdcselftracking.cc:550
 hmdcselftracking.cc:551
 hmdcselftracking.cc:552
 hmdcselftracking.cc:553
 hmdcselftracking.cc:554
 hmdcselftracking.cc:555
 hmdcselftracking.cc:556
 hmdcselftracking.cc:557
 hmdcselftracking.cc:558
 hmdcselftracking.cc:559
 hmdcselftracking.cc:560
 hmdcselftracking.cc:561
 hmdcselftracking.cc:562
 hmdcselftracking.cc:563
 hmdcselftracking.cc:564
 hmdcselftracking.cc:565
 hmdcselftracking.cc:566
 hmdcselftracking.cc:567
 hmdcselftracking.cc:568
 hmdcselftracking.cc:569
 hmdcselftracking.cc:570
 hmdcselftracking.cc:571
 hmdcselftracking.cc:572
 hmdcselftracking.cc:573
 hmdcselftracking.cc:574
 hmdcselftracking.cc:575
 hmdcselftracking.cc:576
 hmdcselftracking.cc:577
 hmdcselftracking.cc:578
 hmdcselftracking.cc:579
 hmdcselftracking.cc:580
 hmdcselftracking.cc:581
 hmdcselftracking.cc:582
 hmdcselftracking.cc:583
 hmdcselftracking.cc:584
 hmdcselftracking.cc:585
 hmdcselftracking.cc:586
 hmdcselftracking.cc:587
 hmdcselftracking.cc:588
 hmdcselftracking.cc:589
 hmdcselftracking.cc:590
 hmdcselftracking.cc:591
 hmdcselftracking.cc:592
 hmdcselftracking.cc:593
 hmdcselftracking.cc:594
 hmdcselftracking.cc:595
 hmdcselftracking.cc:596
 hmdcselftracking.cc:597
 hmdcselftracking.cc:598
 hmdcselftracking.cc:599
 hmdcselftracking.cc:600
 hmdcselftracking.cc:601
 hmdcselftracking.cc:602
 hmdcselftracking.cc:603
 hmdcselftracking.cc:604
 hmdcselftracking.cc:605
 hmdcselftracking.cc:606
 hmdcselftracking.cc:607
 hmdcselftracking.cc:608
 hmdcselftracking.cc:609
 hmdcselftracking.cc:610
 hmdcselftracking.cc:611
 hmdcselftracking.cc:612
 hmdcselftracking.cc:613
 hmdcselftracking.cc:614
 hmdcselftracking.cc:615
 hmdcselftracking.cc:616
 hmdcselftracking.cc:617
 hmdcselftracking.cc:618
 hmdcselftracking.cc:619
 hmdcselftracking.cc:620
 hmdcselftracking.cc:621
 hmdcselftracking.cc:622
 hmdcselftracking.cc:623
 hmdcselftracking.cc:624
 hmdcselftracking.cc:625
 hmdcselftracking.cc:626
 hmdcselftracking.cc:627
 hmdcselftracking.cc:628
 hmdcselftracking.cc:629
 hmdcselftracking.cc:630
 hmdcselftracking.cc:631
 hmdcselftracking.cc:632
 hmdcselftracking.cc:633
 hmdcselftracking.cc:634
 hmdcselftracking.cc:635
 hmdcselftracking.cc:636
 hmdcselftracking.cc:637
 hmdcselftracking.cc:638
 hmdcselftracking.cc:639
 hmdcselftracking.cc:640
 hmdcselftracking.cc:641
 hmdcselftracking.cc:642
 hmdcselftracking.cc:643
 hmdcselftracking.cc:644
 hmdcselftracking.cc:645
 hmdcselftracking.cc:646
 hmdcselftracking.cc:647
 hmdcselftracking.cc:648
 hmdcselftracking.cc:649
 hmdcselftracking.cc:650
 hmdcselftracking.cc:651
 hmdcselftracking.cc:652
 hmdcselftracking.cc:653
 hmdcselftracking.cc:654
 hmdcselftracking.cc:655
 hmdcselftracking.cc:656
 hmdcselftracking.cc:657
 hmdcselftracking.cc:658
 hmdcselftracking.cc:659
 hmdcselftracking.cc:660
 hmdcselftracking.cc:661
 hmdcselftracking.cc:662
 hmdcselftracking.cc:663
 hmdcselftracking.cc:664
 hmdcselftracking.cc:665
 hmdcselftracking.cc:666
 hmdcselftracking.cc:667
 hmdcselftracking.cc:668
 hmdcselftracking.cc:669
 hmdcselftracking.cc:670
 hmdcselftracking.cc:671
 hmdcselftracking.cc:672
 hmdcselftracking.cc:673
 hmdcselftracking.cc:674
 hmdcselftracking.cc:675
 hmdcselftracking.cc:676
 hmdcselftracking.cc:677
 hmdcselftracking.cc:678
 hmdcselftracking.cc:679
 hmdcselftracking.cc:680
 hmdcselftracking.cc:681
 hmdcselftracking.cc:682
 hmdcselftracking.cc:683
 hmdcselftracking.cc:684
 hmdcselftracking.cc:685
 hmdcselftracking.cc:686
 hmdcselftracking.cc:687
 hmdcselftracking.cc:688
 hmdcselftracking.cc:689
 hmdcselftracking.cc:690
 hmdcselftracking.cc:691
 hmdcselftracking.cc:692
 hmdcselftracking.cc:693
 hmdcselftracking.cc:694
 hmdcselftracking.cc:695
 hmdcselftracking.cc:696
 hmdcselftracking.cc:697
 hmdcselftracking.cc:698
 hmdcselftracking.cc:699
 hmdcselftracking.cc:700
 hmdcselftracking.cc:701
 hmdcselftracking.cc:702
 hmdcselftracking.cc:703
 hmdcselftracking.cc:704
 hmdcselftracking.cc:705
 hmdcselftracking.cc:706
 hmdcselftracking.cc:707
 hmdcselftracking.cc:708
 hmdcselftracking.cc:709
 hmdcselftracking.cc:710
 hmdcselftracking.cc:711
 hmdcselftracking.cc:712
 hmdcselftracking.cc:713
 hmdcselftracking.cc:714
 hmdcselftracking.cc:715
 hmdcselftracking.cc:716
 hmdcselftracking.cc:717
 hmdcselftracking.cc:718
 hmdcselftracking.cc:719
 hmdcselftracking.cc:720
 hmdcselftracking.cc:721
 hmdcselftracking.cc:722
 hmdcselftracking.cc:723
 hmdcselftracking.cc:724
 hmdcselftracking.cc:725
 hmdcselftracking.cc:726
 hmdcselftracking.cc:727
 hmdcselftracking.cc:728
 hmdcselftracking.cc:729
 hmdcselftracking.cc:730
 hmdcselftracking.cc:731
 hmdcselftracking.cc:732
 hmdcselftracking.cc:733
 hmdcselftracking.cc:734
 hmdcselftracking.cc:735
 hmdcselftracking.cc:736
 hmdcselftracking.cc:737
 hmdcselftracking.cc:738
 hmdcselftracking.cc:739
 hmdcselftracking.cc:740
 hmdcselftracking.cc:741
 hmdcselftracking.cc:742
 hmdcselftracking.cc:743
 hmdcselftracking.cc:744
 hmdcselftracking.cc:745
 hmdcselftracking.cc:746
 hmdcselftracking.cc:747
 hmdcselftracking.cc:748
 hmdcselftracking.cc:749
 hmdcselftracking.cc:750
 hmdcselftracking.cc:751
 hmdcselftracking.cc:752
 hmdcselftracking.cc:753
 hmdcselftracking.cc:754
 hmdcselftracking.cc:755
 hmdcselftracking.cc:756
 hmdcselftracking.cc:757
 hmdcselftracking.cc:758
 hmdcselftracking.cc:759
 hmdcselftracking.cc:760
 hmdcselftracking.cc:761
 hmdcselftracking.cc:762
 hmdcselftracking.cc:763
 hmdcselftracking.cc:764
 hmdcselftracking.cc:765
 hmdcselftracking.cc:766
 hmdcselftracking.cc:767
 hmdcselftracking.cc:768
 hmdcselftracking.cc:769
 hmdcselftracking.cc:770
 hmdcselftracking.cc:771
 hmdcselftracking.cc:772
 hmdcselftracking.cc:773
 hmdcselftracking.cc:774
 hmdcselftracking.cc:775
 hmdcselftracking.cc:776
 hmdcselftracking.cc:777
 hmdcselftracking.cc:778
 hmdcselftracking.cc:779
 hmdcselftracking.cc:780
 hmdcselftracking.cc:781
 hmdcselftracking.cc:782
 hmdcselftracking.cc:783
 hmdcselftracking.cc:784
 hmdcselftracking.cc:785
 hmdcselftracking.cc:786
 hmdcselftracking.cc:787
 hmdcselftracking.cc:788
 hmdcselftracking.cc:789
 hmdcselftracking.cc:790
 hmdcselftracking.cc:791
 hmdcselftracking.cc:792
 hmdcselftracking.cc:793
 hmdcselftracking.cc:794
 hmdcselftracking.cc:795
 hmdcselftracking.cc:796
 hmdcselftracking.cc:797
 hmdcselftracking.cc:798
 hmdcselftracking.cc:799
 hmdcselftracking.cc:800
 hmdcselftracking.cc:801
 hmdcselftracking.cc:802
 hmdcselftracking.cc:803
 hmdcselftracking.cc:804
 hmdcselftracking.cc:805
 hmdcselftracking.cc:806
 hmdcselftracking.cc:807
 hmdcselftracking.cc:808
 hmdcselftracking.cc:809
 hmdcselftracking.cc:810
 hmdcselftracking.cc:811
 hmdcselftracking.cc:812
 hmdcselftracking.cc:813
 hmdcselftracking.cc:814
 hmdcselftracking.cc:815
 hmdcselftracking.cc:816
 hmdcselftracking.cc:817
 hmdcselftracking.cc:818
 hmdcselftracking.cc:819
 hmdcselftracking.cc:820
 hmdcselftracking.cc:821
 hmdcselftracking.cc:822
 hmdcselftracking.cc:823
 hmdcselftracking.cc:824
 hmdcselftracking.cc:825
 hmdcselftracking.cc:826
 hmdcselftracking.cc:827
 hmdcselftracking.cc:828
 hmdcselftracking.cc:829
 hmdcselftracking.cc:830
 hmdcselftracking.cc:831
 hmdcselftracking.cc:832
 hmdcselftracking.cc:833
 hmdcselftracking.cc:834
 hmdcselftracking.cc:835
 hmdcselftracking.cc:836
 hmdcselftracking.cc:837
 hmdcselftracking.cc:838
 hmdcselftracking.cc:839
 hmdcselftracking.cc:840
 hmdcselftracking.cc:841
 hmdcselftracking.cc:842
 hmdcselftracking.cc:843
 hmdcselftracking.cc:844
 hmdcselftracking.cc:845
 hmdcselftracking.cc:846
 hmdcselftracking.cc:847
 hmdcselftracking.cc:848
 hmdcselftracking.cc:849
 hmdcselftracking.cc:850
 hmdcselftracking.cc:851
 hmdcselftracking.cc:852
 hmdcselftracking.cc:853
 hmdcselftracking.cc:854
 hmdcselftracking.cc:855
 hmdcselftracking.cc:856
 hmdcselftracking.cc:857
 hmdcselftracking.cc:858
 hmdcselftracking.cc:859
 hmdcselftracking.cc:860
 hmdcselftracking.cc:861
 hmdcselftracking.cc:862
 hmdcselftracking.cc:863
 hmdcselftracking.cc:864
 hmdcselftracking.cc:865
 hmdcselftracking.cc:866
 hmdcselftracking.cc:867
 hmdcselftracking.cc:868
 hmdcselftracking.cc:869
 hmdcselftracking.cc:870
 hmdcselftracking.cc:871
 hmdcselftracking.cc:872
 hmdcselftracking.cc:873
 hmdcselftracking.cc:874
 hmdcselftracking.cc:875
 hmdcselftracking.cc:876
 hmdcselftracking.cc:877
 hmdcselftracking.cc:878
 hmdcselftracking.cc:879
 hmdcselftracking.cc:880
 hmdcselftracking.cc:881
 hmdcselftracking.cc:882
 hmdcselftracking.cc:883
 hmdcselftracking.cc:884
 hmdcselftracking.cc:885
 hmdcselftracking.cc:886
 hmdcselftracking.cc:887
 hmdcselftracking.cc:888
 hmdcselftracking.cc:889
 hmdcselftracking.cc:890
 hmdcselftracking.cc:891
 hmdcselftracking.cc:892
 hmdcselftracking.cc:893
 hmdcselftracking.cc:894
 hmdcselftracking.cc:895
 hmdcselftracking.cc:896
 hmdcselftracking.cc:897
 hmdcselftracking.cc:898
 hmdcselftracking.cc:899
 hmdcselftracking.cc:900
 hmdcselftracking.cc:901
 hmdcselftracking.cc:902
 hmdcselftracking.cc:903
 hmdcselftracking.cc:904
 hmdcselftracking.cc:905
 hmdcselftracking.cc:906
 hmdcselftracking.cc:907
 hmdcselftracking.cc:908
 hmdcselftracking.cc:909
 hmdcselftracking.cc:910
 hmdcselftracking.cc:911
 hmdcselftracking.cc:912
 hmdcselftracking.cc:913
 hmdcselftracking.cc:914
 hmdcselftracking.cc:915
 hmdcselftracking.cc:916
 hmdcselftracking.cc:917
 hmdcselftracking.cc:918
 hmdcselftracking.cc:919
 hmdcselftracking.cc:920
 hmdcselftracking.cc:921
 hmdcselftracking.cc:922
 hmdcselftracking.cc:923
 hmdcselftracking.cc:924
 hmdcselftracking.cc:925
 hmdcselftracking.cc:926
 hmdcselftracking.cc:927
 hmdcselftracking.cc:928
 hmdcselftracking.cc:929
 hmdcselftracking.cc:930
 hmdcselftracking.cc:931
 hmdcselftracking.cc:932
 hmdcselftracking.cc:933
 hmdcselftracking.cc:934
 hmdcselftracking.cc:935
 hmdcselftracking.cc:936
 hmdcselftracking.cc:937
 hmdcselftracking.cc:938
 hmdcselftracking.cc:939
 hmdcselftracking.cc:940
 hmdcselftracking.cc:941
 hmdcselftracking.cc:942
 hmdcselftracking.cc:943
 hmdcselftracking.cc:944
 hmdcselftracking.cc:945
 hmdcselftracking.cc:946
 hmdcselftracking.cc:947
 hmdcselftracking.cc:948
 hmdcselftracking.cc:949
 hmdcselftracking.cc:950
 hmdcselftracking.cc:951
 hmdcselftracking.cc:952
 hmdcselftracking.cc:953
 hmdcselftracking.cc:954
 hmdcselftracking.cc:955
 hmdcselftracking.cc:956
 hmdcselftracking.cc:957
 hmdcselftracking.cc:958
 hmdcselftracking.cc:959
 hmdcselftracking.cc:960
 hmdcselftracking.cc:961
 hmdcselftracking.cc:962
 hmdcselftracking.cc:963
 hmdcselftracking.cc:964
 hmdcselftracking.cc:965
 hmdcselftracking.cc:966
 hmdcselftracking.cc:967
 hmdcselftracking.cc:968
 hmdcselftracking.cc:969
 hmdcselftracking.cc:970
 hmdcselftracking.cc:971
 hmdcselftracking.cc:972
 hmdcselftracking.cc:973
 hmdcselftracking.cc:974
 hmdcselftracking.cc:975
 hmdcselftracking.cc:976
 hmdcselftracking.cc:977
 hmdcselftracking.cc:978
 hmdcselftracking.cc:979
 hmdcselftracking.cc:980
 hmdcselftracking.cc:981
 hmdcselftracking.cc:982
 hmdcselftracking.cc:983
 hmdcselftracking.cc:984
 hmdcselftracking.cc:985
 hmdcselftracking.cc:986
 hmdcselftracking.cc:987
 hmdcselftracking.cc:988
 hmdcselftracking.cc:989
 hmdcselftracking.cc:990
 hmdcselftracking.cc:991
 hmdcselftracking.cc:992
 hmdcselftracking.cc:993
 hmdcselftracking.cc:994
 hmdcselftracking.cc:995
 hmdcselftracking.cc:996
 hmdcselftracking.cc:997
 hmdcselftracking.cc:998
 hmdcselftracking.cc:999
 hmdcselftracking.cc:1000
 hmdcselftracking.cc:1001
 hmdcselftracking.cc:1002
 hmdcselftracking.cc:1003
 hmdcselftracking.cc:1004
 hmdcselftracking.cc:1005
 hmdcselftracking.cc:1006
 hmdcselftracking.cc:1007
 hmdcselftracking.cc:1008
 hmdcselftracking.cc:1009
 hmdcselftracking.cc:1010
 hmdcselftracking.cc:1011
 hmdcselftracking.cc:1012
 hmdcselftracking.cc:1013
 hmdcselftracking.cc:1014
 hmdcselftracking.cc:1015
 hmdcselftracking.cc:1016
 hmdcselftracking.cc:1017
 hmdcselftracking.cc:1018
 hmdcselftracking.cc:1019
 hmdcselftracking.cc:1020
 hmdcselftracking.cc:1021
 hmdcselftracking.cc:1022
 hmdcselftracking.cc:1023
 hmdcselftracking.cc:1024
 hmdcselftracking.cc:1025
 hmdcselftracking.cc:1026
 hmdcselftracking.cc:1027
 hmdcselftracking.cc:1028
 hmdcselftracking.cc:1029
 hmdcselftracking.cc:1030
 hmdcselftracking.cc:1031
 hmdcselftracking.cc:1032
 hmdcselftracking.cc:1033
 hmdcselftracking.cc:1034
 hmdcselftracking.cc:1035
 hmdcselftracking.cc:1036
 hmdcselftracking.cc:1037
 hmdcselftracking.cc:1038
 hmdcselftracking.cc:1039
 hmdcselftracking.cc:1040
 hmdcselftracking.cc:1041
 hmdcselftracking.cc:1042
 hmdcselftracking.cc:1043
 hmdcselftracking.cc:1044
 hmdcselftracking.cc:1045
 hmdcselftracking.cc:1046
 hmdcselftracking.cc:1047
 hmdcselftracking.cc:1048
 hmdcselftracking.cc:1049
 hmdcselftracking.cc:1050
 hmdcselftracking.cc:1051
 hmdcselftracking.cc:1052