ROOT logo
//*--- Author : V.Pechenov
//*--- Modified: 23.01.07 V.Pechenov
//*--- Modified: 16.06.2005 by V.Pechenov

#include "hmdctrackfitterb.h"
#include "hmdctrackfitpar.h"
#include "hmdcsizescells.h"
#include "hsymmat.h"
#include "hmdccal1sim.h"
#include "hcategory.h"
#include "hmdcclus.h"
#include <stdlib.h>
#include "TMatrixD.h"

//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////////////////////////////////////////
// 
// HMdcTrackFitterB
//
// Dubna track straight piece fitter. Version B.
// It is tuned version of HMdcTrackFitterA.
//
//////////////////////////////////////////////////////////////////////////////


ClassImp(HMdcTrackFitterB)

HMdcTrackFitterB::HMdcTrackFitterB(HMdcTrackFitInOut* fIO)
    : HMdcTrackFitterA(fIO) {
}

HMdcTrackFitterB::~HMdcTrackFitterB(void) {
}

//-----------------------------------------------------
Int_t HMdcTrackFitterB::minimize(Int_t iter) {
  if(fprint) {
    printf("\n  ********************************\n");
    printf("  *** PROGRAM OF TRACK FITTING ***\n");
    printf("  ********************************\n");
  }
//+++---initParam.setFixedTimeOffset(2.6,3.1,5.,6.);
  wires.setSizeGrad2Matr(initParam);
  finalParam.copyLine(initParam);
//+++---finalParam.setFixedTimeOffset(2.6,3.1,5.,6.);
  finalParam.setIterNumb(0);
  parMin.copyPlanes(initParam);
//+++---parMin.setFixedTimeOffset(2.6,3.1,5.,6.);
  pari.copyPlanes(initParam);
//+++---pari.setFixedTimeOffset(2.6,3.1,5.,6.);
  tmpPar.copyPlanes(initParam);
//+++---tmpPar.setFixedTimeOffset(2.6,3.1,5.,6.);

  // Target scanning:
  Bool_t doTargScan       = fitInOut->getDoTargScanFlag();
  Bool_t noWightsFor3Iter = kFALSE; //kTRUE;
  Bool_t useTukeyInScan   = kFALSE;
  
  Bool_t useNewErrorsForFirstIter = kFALSE; //kFALSE;

  if(fitInOut->getCalcInitValueFlag()==0 && doTargScan) targetScan(useTukeyInScan);


  //********* Initialisation of fit ************************
  stepFit        = initStepFit;  // init value of step
  return2to1     = 0;            // counter
  recalcTdcError = kFALSE;       // kTRUE - old version of fitter

  wires.setInitWeghts(finalParam);
  
  if(useNewErrorsForFirstIter) {
    if(recalcTdcError) wires.valueOfFunctAndErr(finalParam);
    else               wires.calcTdcErrorsTOff0AndFunct(finalParam); 
  } else {
     wires.valueOfFunctional(finalParam);
     if(recalcTdcError) wires.calcTdcErrorsAndFunct(finalParam);
     else               wires.calcTdcErrorsTOff0AndFunct(finalParam);
  }
  iterAfterFilter=0;
  if(!noWightsFor3Iter && fitInOut->useTukey()) wires.filterOfHitsV2(finalParam,1); //!!!!!!!!!!!!!!???

//iterAfterFilter=-9; //!!!!!!!!!!!!!!!!!!!

  return doMinimization();
}

Int_t HMdcTrackFitterB::doMinimization(void) {
  //******************* BEGIN of FIT PROCEDURE ******************
  Int_t minimizationMethod = 1;
  for (iteration = 0; iteration < maxIteration; iteration++ ) {
    if(minimizationMethod==1) {
      minimizationMethod=firstMethod();
      if(minimizationMethod<1) break;
//+++---finalParam.unfixTimeOffset();
    } else if(minimizationMethod==2) {
//      if(recalcTdcError) wires.calcTdcErrorsAndFunct(finalParam);         // ??? test it for real data
//      else               wires.calcTdcErrorsTOff0AndFunct(finalParam);    
      minimizationMethod = secondMethod();
      if(minimizationMethod<1) break;
    }
  } //end of iter loop
  exitFlag=(minimizationMethod<0) ? -minimizationMethod : 4;
  if(fprint) printResult();

  //******************* TEST of RESULT ***************************
  wires.valueOfFunctional(finalParam,2);
  if(!wires.calcNGoodWiresAndChi2(finalParam)) return 0;
  if(testChi2Cut() && exitFlag <= 3) {
    // if(wires.calculateErrors(finalParam)) { // Numerical errors calculations
    if(wires.calcErrorsAnalyt(finalParam)) {   // Analytical errors calculations
      if(fprint) printf("    !!! GOOD EXIT !!!\n");
      return 1;
    }
    exitFlag=5;
  }
  return 0;
}

void HMdcTrackFitterB::targetScan(Bool_t useTukeyInScan) {
  if(wires.getSegment()==1) return;
  HMdcSizesCellsSec& fSCSec=(*fitInOut->getMdcSizesCells())[wires.getSector()];
  Int_t nTargets=fSCSec.getNumOfTargets();
  HMdcClus* fClst=wires.getClust1();
  if(nTargets>1) {
    for(Int_t nTg=0;nTg<nTargets;nTg++) {
      HGeomVector* targ=fSCSec.getTarget(nTg);
      parMin.setParam( targ->getX(),  targ->getY(),  targ->getZ(),
          wires.getXClst(),wires.getYClst(),wires.getZClst());
      
      if(recalcTdcError) wires.valueOfFunctAndErr(parMin);
      else               wires.valueOfFunctional(parMin);
      if(useTukeyInScan) wires.filterOfHitsV2(parMin,1);
      wires.calcNGoodWiresAndChi2(parMin);
      
      if(fprint)printf("Scan: %i target. chi2/NDF=%g\n",nTg,parMin.getChi2());
      if(nTg==0 || parMin.getChi2()<finalParam.getChi2()) {
        finalParam.copyNewParam(parMin);
        if(fClst) fClst->setTarg(targ->getX(), targ->getY(), targ->getZ());
      }
      wires.setUnitWeights();
    }
  } else {
    const HGeomVector& firstTargPoint=fSCSec.getTargetFirstPoint();
    const HGeomVector& lastTargPoint=fSCSec.getTargetLastPoint();
    Double_t z1=firstTargPoint.getZ();
    Double_t z2=lastTargPoint.getZ();
    if(z2-z1 < 5.) return;
    Double_t xPl=wires.getXClst();
    Double_t yPl=wires.getYClst();
    Double_t zPl=wires.getZClst();
    const HGeomVector& targ=fSCSec.getTargetMiddlePoint();
    Double_t xTg=targ.getX();
    Double_t yTg=targ.getY();
    
    Double_t zMin=-5000.;
    for(Double_t z=z1;z<=z2;z+=2.5) { //!!!!!!!!!!!!!!!!!!!!
      parMin.setParam(xTg,yTg,z, xPl,yPl,zPl); //!!!!!!!!!!!!!!!!!!!!

      if(recalcTdcError) wires.valueOfFunctAndErr(parMin);
      else               wires.valueOfFunctional(parMin);
      if(useTukeyInScan) wires.filterOfHitsV2(parMin,1);
      wires.calcNGoodWiresAndChi2(parMin);

      if(fprint)printf("Scan: Ztarget=%5.1f chi2/NDF=%g\n",z,parMin.getChi2());
      if(zMin<-4000. || parMin.getChi2()<finalParam.getChi2()) {
        zMin=z;
        finalParam.copyNewParam(parMin);
        if(fClst) fClst->setTarg(xTg,yTg,z);
      }
      wires.setUnitWeights();
    }
  }
  finalParam.setIterNumb(0);
}

Int_t HMdcTrackFitterB::firstMethod(void) {
  //*** 1-st method
  // function return minimizationMethod flag
  Double_t funct1beforeFilter=finalParam.functional();
  //  wires.calcDerivatives(finalParam,1);
  wires.calcAnalyticDerivatives1(finalParam);
  for(; iteration<maxIteration; iteration++) {
    downhillOnGradient(finalParam);
    if(fprint) finalParam.printParam("out1");

    iterAfterFilter++;
    //---------*** Test for method of minimization ***---------
    if(return2to1 > 0 && iterAfterFilter < 2) {
      //      wires.calcDerivatives(finalParam,1);
      wires.calcAnalyticDerivatives1(finalParam);
      continue;
    }

    if((iterAfterFilter>=2 && ((finalParam>funct1beforeFilter && iteration>2) ||
        finalParam.isFunctRelChangLess(limDeltaF1to2))) ||
        finalParam<limFunct1to2) {
// nuzhna li fil'traciya ??? dlya mdc12 i mdc3 luchshe,dlya mdc34 huzhe!!!
//if(fitInOut->useTukey() && wires.filterOfHitsV2(finalParam)) iterAfterFilter=0;
      if(recalcTdcError) wires.calcTdcErrorsAndFunct(finalParam,1);
      return 2; // Go to mini. method 2
    }

    if(iterAfterFilter == limIter1forFilter) { // ??? == Pochemu???
      funct1beforeFilter = finalParam.functional();
      if(fitInOut->useTukey() && wires.filterOfHitsV2(finalParam)) iterAfterFilter=0;
      if(recalcTdcError) wires.calcTdcErrorsAndFunct(finalParam);
    }

    //    wires.calcDerivatives(finalParam,1);
    wires.calcAnalyticDerivatives1(finalParam);
    // Scaled gradiend calculation // ??? Pochemu proveryaetsya sc.gr.???
    if(calcScaledAGrad(finalParam)<limGrad1to2) {
// nuzhna li fil'traciya ?
      if(fitInOut->useTukey() && wires.filterOfHitsV2(finalParam)) iterAfterFilter=0;
      if(recalcTdcError) wires.calcTdcErrorsAndFunct(finalParam,1);
      return 2; // mini. method
    }
  }
  return -4;
}

Int_t HMdcTrackFitterB::secondMethod(void) {
  //*** 2-nd method
  Int_t iteration2=0;
  Int_t nTestTukey=0;
  Int_t nFinalNeg=0;
  Bool_t final = kFALSE;
  parMin.copyAllParam(finalParam);
  for(; iteration<maxIteration; iteration++) {
    //    wires.calcDerivatives(parMin,2);
    wires.calcAnalyticDerivatives2(parMin);
    parMin.saveFunct();
    pari.copyParam(parMin);
    solutionOfLinearEquationsSystem(parMin);
    if(fprint) parMin.printParam((final) ? "outF":"out2");
    Bool_t parMinEqFinalParam = (parMin > finalParam) ? kFALSE:kTRUE;
    if(parMinEqFinalParam) {
      if(recalcTdcError) wires.valueOfFunctAndErr(parMin);
      else               wires.valueOfFunctional(parMin);
      finalParam.copyAllParam(parMin);
      if(!final && fitInOut->useTukey() && iterAfterFilter>=3) {
        wires.filterOfHitsV2(parMin);
        finalParam.copyAllParam(parMin);
        iterAfterFilter=0;
        continue;
      }
    }
    iteration2++;

    //***  Test for exit from minimization
    if(!final) {
      if(!pari.compare(parMin,limStep2,1.5) ||
          (return2to1>0 && iteration2>=limIter2)) {
        // For filtering take the best parameters:
        if(!parMinEqFinalParam) wires.valueOfFunctional(finalParam);
        if(fitInOut->useTukey()) wires.filterOfHitsV2(finalParam);
        if(recalcTdcError) wires.valueOfFunctAndErr(finalParam);
        else               wires.valueOfFunctional(finalParam);
        wires.setWeightsTo1or0(finalParam);  // for finalParam!
        iterAfterFilter = -1000000;
        if(finalParam > 100000.0) return -5; // Too large functional !
        parMin.copyAllParam(finalParam);
        final = kTRUE;
        iteration2 = 0;
      } else if(iteration2 >= limIter2) {
        //  For filtering take the best parameters:
        if(!parMinEqFinalParam) wires.valueOfFunctional(finalParam);
        if(fitInOut->useTukey() && wires.filterOfHitsV2(finalParam)) iterAfterFilter=0;
        if(recalcTdcError) wires.calcTdcErrorsAndFunct(finalParam);
        else               wires.calcTdcErrorsTOff0AndFunct(finalParam);
        iteration2 = 0;
        return2to1++;
        return 1;   // go back to the first method
      }
    } else {
      if(parMinEqFinalParam) {
        if(recalcTdcError) wires.valueOfFunctAndErr(finalParam);
        else               wires.valueOfFunctional(finalParam);
        if(iteration2>=2 && nTestTukey++<2 && wires.testTukeyWeights(finalParam))
            iteration2=0;
        finalParam.saveFunct();
        parMin.copyAllParam(finalParam);
        //      wires.calcDerivatives(finalParam,2);
        //      if(wires.getAGrad() < limGrad2) return -1;          // return exit flag 1
        if(wires.calcAGradAnalyt(finalParam) < limGrad2) return -1; // return exit flag 1
        if(iteration2 < 2) continue;
        if(!pari.compare(finalParam,limStep2)) return -2;           // return exit flag 2
        if(iteration2 >= limIter2) return -3;                       // return exit flag 3
        nFinalNeg=0;
      } else {
        nFinalNeg++;
        if(nFinalNeg<3) iteration2--;    // Try three times
        else if(nFinalNeg<6) {           // Try three times
          if(recalcTdcError) wires.valueOfFunctAndErr(finalParam);
          else               wires.valueOfFunctional(finalParam);
          if(wires.testTukeyWeights(finalParam)) iteration2=0;
          finalParam.saveFunct();
          if(wires.calcAGradAnalyt(finalParam) < limGrad2) return -1; // return exit flag 1
          if(nFinalNeg>3 && !finalParam.compare(parMin,limStep2)) return -2;         // return exit flag 2
          parMin.copyAllParam(finalParam);
          iteration2--;
        } else {  
          if(wires.calcAGradAnalyt(finalParam) < limGrad2) return -1; // return exit flag 1
          if(iteration2 < 2) continue;
          if(!finalParam.compare(parMin,limStep2)) return -2;         // return exit flag 2
          if(iteration2 >= limIter2) return -3;                       // return exit flag 3
        }
      }
    }
  }
  return -4;
}

void HMdcTrackFitterB::solutionOfLinearEquationsSystem(HMdcTrackParam& par) {
  // input :  matrix grad2[i][j] (i-string, j-column),  vector grad[i]
  // output:  new param. in vector par[i]
  Double_t a[10][11];
  Int_t ieq[10];

  TMatrixD& grad2m=wires.getGrad2Matr();
  Double_t* grad=wires.getGrad();
  Int_t nmOfPar=par.getNumParam();
  for(Int_t i = 0; i < nmOfPar; i++) {
    for(Int_t j = 0; j < nmOfPar; j++) a[i][j] = grad2m(i,j);
    a[i][nmOfPar] = -grad[i];
    ieq[i] = -1;
  }
  Int_t iMax = 0;
  Int_t jMax = 0;
  for(Int_t l = 0; l < nmOfPar; l++) {
    Double_t maxA = 0.0 ;
    for(Int_t i = 0; i < nmOfPar; i++) {
      if(ieq[i] != -1) continue;
      for(Int_t j = 0; j < nmOfPar; j++) {
	if(fabs(a[i][j]) <= maxA) continue;
	maxA = fabs(a[i][j]);
	iMax = i;
	jMax = j;
      }
    }
    ieq[iMax] = jMax;
    Double_t corr = a[iMax][jMax];
    for(Int_t j = 0; j <= nmOfPar; j++) a[iMax][j] /= corr;
    for(Int_t i = 0; i < nmOfPar; i++) {
      if(i == iMax) continue;
      corr = a[i][jMax];
      for(Int_t j = 0; j <= nmOfPar; j++) a[i][j] -= a[iMax][j]*corr;
    }
  }
//printf("slI: "); par.printParam();
//Bool_t jump=kFALSE;
  for(Int_t i = 0; i < nmOfPar; i++) {
    Int_t iout = ieq[i];
//if(iout>=0 && fabs(a[i][nmOfPar])>100.) {
//  printf("jump for par.%i on %f\n",iout,a[i][nmOfPar]);
//  jump=kTRUE;
//}
    if(iout>=0) par.addToParam(iout,a[i][nmOfPar]); //!!!
  }
//if(jump) grad2m.Print();
//printf("slO: "); par.printParam();

  wires.valueOfFunctional(par);
  par.incIterNumb();
}
 hmdctrackfitterb.cc:1
 hmdctrackfitterb.cc:2
 hmdctrackfitterb.cc:3
 hmdctrackfitterb.cc:4
 hmdctrackfitterb.cc:5
 hmdctrackfitterb.cc:6
 hmdctrackfitterb.cc:7
 hmdctrackfitterb.cc:8
 hmdctrackfitterb.cc:9
 hmdctrackfitterb.cc:10
 hmdctrackfitterb.cc:11
 hmdctrackfitterb.cc:12
 hmdctrackfitterb.cc:13
 hmdctrackfitterb.cc:14
 hmdctrackfitterb.cc:15
 hmdctrackfitterb.cc:16
 hmdctrackfitterb.cc:17
 hmdctrackfitterb.cc:18
 hmdctrackfitterb.cc:19
 hmdctrackfitterb.cc:20
 hmdctrackfitterb.cc:21
 hmdctrackfitterb.cc:22
 hmdctrackfitterb.cc:23
 hmdctrackfitterb.cc:24
 hmdctrackfitterb.cc:25
 hmdctrackfitterb.cc:26
 hmdctrackfitterb.cc:27
 hmdctrackfitterb.cc:28
 hmdctrackfitterb.cc:29
 hmdctrackfitterb.cc:30
 hmdctrackfitterb.cc:31
 hmdctrackfitterb.cc:32
 hmdctrackfitterb.cc:33
 hmdctrackfitterb.cc:34
 hmdctrackfitterb.cc:35
 hmdctrackfitterb.cc:36
 hmdctrackfitterb.cc:37
 hmdctrackfitterb.cc:38
 hmdctrackfitterb.cc:39
 hmdctrackfitterb.cc:40
 hmdctrackfitterb.cc:41
 hmdctrackfitterb.cc:42
 hmdctrackfitterb.cc:43
 hmdctrackfitterb.cc:44
 hmdctrackfitterb.cc:45
 hmdctrackfitterb.cc:46
 hmdctrackfitterb.cc:47
 hmdctrackfitterb.cc:48
 hmdctrackfitterb.cc:49
 hmdctrackfitterb.cc:50
 hmdctrackfitterb.cc:51
 hmdctrackfitterb.cc:52
 hmdctrackfitterb.cc:53
 hmdctrackfitterb.cc:54
 hmdctrackfitterb.cc:55
 hmdctrackfitterb.cc:56
 hmdctrackfitterb.cc:57
 hmdctrackfitterb.cc:58
 hmdctrackfitterb.cc:59
 hmdctrackfitterb.cc:60
 hmdctrackfitterb.cc:61
 hmdctrackfitterb.cc:62
 hmdctrackfitterb.cc:63
 hmdctrackfitterb.cc:64
 hmdctrackfitterb.cc:65
 hmdctrackfitterb.cc:66
 hmdctrackfitterb.cc:67
 hmdctrackfitterb.cc:68
 hmdctrackfitterb.cc:69
 hmdctrackfitterb.cc:70
 hmdctrackfitterb.cc:71
 hmdctrackfitterb.cc:72
 hmdctrackfitterb.cc:73
 hmdctrackfitterb.cc:74
 hmdctrackfitterb.cc:75
 hmdctrackfitterb.cc:76
 hmdctrackfitterb.cc:77
 hmdctrackfitterb.cc:78
 hmdctrackfitterb.cc:79
 hmdctrackfitterb.cc:80
 hmdctrackfitterb.cc:81
 hmdctrackfitterb.cc:82
 hmdctrackfitterb.cc:83
 hmdctrackfitterb.cc:84
 hmdctrackfitterb.cc:85
 hmdctrackfitterb.cc:86
 hmdctrackfitterb.cc:87
 hmdctrackfitterb.cc:88
 hmdctrackfitterb.cc:89
 hmdctrackfitterb.cc:90
 hmdctrackfitterb.cc:91
 hmdctrackfitterb.cc:92
 hmdctrackfitterb.cc:93
 hmdctrackfitterb.cc:94
 hmdctrackfitterb.cc:95
 hmdctrackfitterb.cc:96
 hmdctrackfitterb.cc:97
 hmdctrackfitterb.cc:98
 hmdctrackfitterb.cc:99
 hmdctrackfitterb.cc:100
 hmdctrackfitterb.cc:101
 hmdctrackfitterb.cc:102
 hmdctrackfitterb.cc:103
 hmdctrackfitterb.cc:104
 hmdctrackfitterb.cc:105
 hmdctrackfitterb.cc:106
 hmdctrackfitterb.cc:107
 hmdctrackfitterb.cc:108
 hmdctrackfitterb.cc:109
 hmdctrackfitterb.cc:110
 hmdctrackfitterb.cc:111
 hmdctrackfitterb.cc:112
 hmdctrackfitterb.cc:113
 hmdctrackfitterb.cc:114
 hmdctrackfitterb.cc:115
 hmdctrackfitterb.cc:116
 hmdctrackfitterb.cc:117
 hmdctrackfitterb.cc:118
 hmdctrackfitterb.cc:119
 hmdctrackfitterb.cc:120
 hmdctrackfitterb.cc:121
 hmdctrackfitterb.cc:122
 hmdctrackfitterb.cc:123
 hmdctrackfitterb.cc:124
 hmdctrackfitterb.cc:125
 hmdctrackfitterb.cc:126
 hmdctrackfitterb.cc:127
 hmdctrackfitterb.cc:128
 hmdctrackfitterb.cc:129
 hmdctrackfitterb.cc:130
 hmdctrackfitterb.cc:131
 hmdctrackfitterb.cc:132
 hmdctrackfitterb.cc:133
 hmdctrackfitterb.cc:134
 hmdctrackfitterb.cc:135
 hmdctrackfitterb.cc:136
 hmdctrackfitterb.cc:137
 hmdctrackfitterb.cc:138
 hmdctrackfitterb.cc:139
 hmdctrackfitterb.cc:140
 hmdctrackfitterb.cc:141
 hmdctrackfitterb.cc:142
 hmdctrackfitterb.cc:143
 hmdctrackfitterb.cc:144
 hmdctrackfitterb.cc:145
 hmdctrackfitterb.cc:146
 hmdctrackfitterb.cc:147
 hmdctrackfitterb.cc:148
 hmdctrackfitterb.cc:149
 hmdctrackfitterb.cc:150
 hmdctrackfitterb.cc:151
 hmdctrackfitterb.cc:152
 hmdctrackfitterb.cc:153
 hmdctrackfitterb.cc:154
 hmdctrackfitterb.cc:155
 hmdctrackfitterb.cc:156
 hmdctrackfitterb.cc:157
 hmdctrackfitterb.cc:158
 hmdctrackfitterb.cc:159
 hmdctrackfitterb.cc:160
 hmdctrackfitterb.cc:161
 hmdctrackfitterb.cc:162
 hmdctrackfitterb.cc:163
 hmdctrackfitterb.cc:164
 hmdctrackfitterb.cc:165
 hmdctrackfitterb.cc:166
 hmdctrackfitterb.cc:167
 hmdctrackfitterb.cc:168
 hmdctrackfitterb.cc:169
 hmdctrackfitterb.cc:170
 hmdctrackfitterb.cc:171
 hmdctrackfitterb.cc:172
 hmdctrackfitterb.cc:173
 hmdctrackfitterb.cc:174
 hmdctrackfitterb.cc:175
 hmdctrackfitterb.cc:176
 hmdctrackfitterb.cc:177
 hmdctrackfitterb.cc:178
 hmdctrackfitterb.cc:179
 hmdctrackfitterb.cc:180
 hmdctrackfitterb.cc:181
 hmdctrackfitterb.cc:182
 hmdctrackfitterb.cc:183
 hmdctrackfitterb.cc:184
 hmdctrackfitterb.cc:185
 hmdctrackfitterb.cc:186
 hmdctrackfitterb.cc:187
 hmdctrackfitterb.cc:188
 hmdctrackfitterb.cc:189
 hmdctrackfitterb.cc:190
 hmdctrackfitterb.cc:191
 hmdctrackfitterb.cc:192
 hmdctrackfitterb.cc:193
 hmdctrackfitterb.cc:194
 hmdctrackfitterb.cc:195
 hmdctrackfitterb.cc:196
 hmdctrackfitterb.cc:197
 hmdctrackfitterb.cc:198
 hmdctrackfitterb.cc:199
 hmdctrackfitterb.cc:200
 hmdctrackfitterb.cc:201
 hmdctrackfitterb.cc:202
 hmdctrackfitterb.cc:203
 hmdctrackfitterb.cc:204
 hmdctrackfitterb.cc:205
 hmdctrackfitterb.cc:206
 hmdctrackfitterb.cc:207
 hmdctrackfitterb.cc:208
 hmdctrackfitterb.cc:209
 hmdctrackfitterb.cc:210
 hmdctrackfitterb.cc:211
 hmdctrackfitterb.cc:212
 hmdctrackfitterb.cc:213
 hmdctrackfitterb.cc:214
 hmdctrackfitterb.cc:215
 hmdctrackfitterb.cc:216
 hmdctrackfitterb.cc:217
 hmdctrackfitterb.cc:218
 hmdctrackfitterb.cc:219
 hmdctrackfitterb.cc:220
 hmdctrackfitterb.cc:221
 hmdctrackfitterb.cc:222
 hmdctrackfitterb.cc:223
 hmdctrackfitterb.cc:224
 hmdctrackfitterb.cc:225
 hmdctrackfitterb.cc:226
 hmdctrackfitterb.cc:227
 hmdctrackfitterb.cc:228
 hmdctrackfitterb.cc:229
 hmdctrackfitterb.cc:230
 hmdctrackfitterb.cc:231
 hmdctrackfitterb.cc:232
 hmdctrackfitterb.cc:233
 hmdctrackfitterb.cc:234
 hmdctrackfitterb.cc:235
 hmdctrackfitterb.cc:236
 hmdctrackfitterb.cc:237
 hmdctrackfitterb.cc:238
 hmdctrackfitterb.cc:239
 hmdctrackfitterb.cc:240
 hmdctrackfitterb.cc:241
 hmdctrackfitterb.cc:242
 hmdctrackfitterb.cc:243
 hmdctrackfitterb.cc:244
 hmdctrackfitterb.cc:245
 hmdctrackfitterb.cc:246
 hmdctrackfitterb.cc:247
 hmdctrackfitterb.cc:248
 hmdctrackfitterb.cc:249
 hmdctrackfitterb.cc:250
 hmdctrackfitterb.cc:251
 hmdctrackfitterb.cc:252
 hmdctrackfitterb.cc:253
 hmdctrackfitterb.cc:254
 hmdctrackfitterb.cc:255
 hmdctrackfitterb.cc:256
 hmdctrackfitterb.cc:257
 hmdctrackfitterb.cc:258
 hmdctrackfitterb.cc:259
 hmdctrackfitterb.cc:260
 hmdctrackfitterb.cc:261
 hmdctrackfitterb.cc:262
 hmdctrackfitterb.cc:263
 hmdctrackfitterb.cc:264
 hmdctrackfitterb.cc:265
 hmdctrackfitterb.cc:266
 hmdctrackfitterb.cc:267
 hmdctrackfitterb.cc:268
 hmdctrackfitterb.cc:269
 hmdctrackfitterb.cc:270
 hmdctrackfitterb.cc:271
 hmdctrackfitterb.cc:272
 hmdctrackfitterb.cc:273
 hmdctrackfitterb.cc:274
 hmdctrackfitterb.cc:275
 hmdctrackfitterb.cc:276
 hmdctrackfitterb.cc:277
 hmdctrackfitterb.cc:278
 hmdctrackfitterb.cc:279
 hmdctrackfitterb.cc:280
 hmdctrackfitterb.cc:281
 hmdctrackfitterb.cc:282
 hmdctrackfitterb.cc:283
 hmdctrackfitterb.cc:284
 hmdctrackfitterb.cc:285
 hmdctrackfitterb.cc:286
 hmdctrackfitterb.cc:287
 hmdctrackfitterb.cc:288
 hmdctrackfitterb.cc:289
 hmdctrackfitterb.cc:290
 hmdctrackfitterb.cc:291
 hmdctrackfitterb.cc:292
 hmdctrackfitterb.cc:293
 hmdctrackfitterb.cc:294
 hmdctrackfitterb.cc:295
 hmdctrackfitterb.cc:296
 hmdctrackfitterb.cc:297
 hmdctrackfitterb.cc:298
 hmdctrackfitterb.cc:299
 hmdctrackfitterb.cc:300
 hmdctrackfitterb.cc:301
 hmdctrackfitterb.cc:302
 hmdctrackfitterb.cc:303
 hmdctrackfitterb.cc:304
 hmdctrackfitterb.cc:305
 hmdctrackfitterb.cc:306
 hmdctrackfitterb.cc:307
 hmdctrackfitterb.cc:308
 hmdctrackfitterb.cc:309
 hmdctrackfitterb.cc:310
 hmdctrackfitterb.cc:311
 hmdctrackfitterb.cc:312
 hmdctrackfitterb.cc:313
 hmdctrackfitterb.cc:314
 hmdctrackfitterb.cc:315
 hmdctrackfitterb.cc:316
 hmdctrackfitterb.cc:317
 hmdctrackfitterb.cc:318
 hmdctrackfitterb.cc:319
 hmdctrackfitterb.cc:320
 hmdctrackfitterb.cc:321
 hmdctrackfitterb.cc:322
 hmdctrackfitterb.cc:323
 hmdctrackfitterb.cc:324
 hmdctrackfitterb.cc:325
 hmdctrackfitterb.cc:326
 hmdctrackfitterb.cc:327
 hmdctrackfitterb.cc:328
 hmdctrackfitterb.cc:329
 hmdctrackfitterb.cc:330
 hmdctrackfitterb.cc:331
 hmdctrackfitterb.cc:332
 hmdctrackfitterb.cc:333
 hmdctrackfitterb.cc:334
 hmdctrackfitterb.cc:335
 hmdctrackfitterb.cc:336
 hmdctrackfitterb.cc:337
 hmdctrackfitterb.cc:338
 hmdctrackfitterb.cc:339
 hmdctrackfitterb.cc:340
 hmdctrackfitterb.cc:341
 hmdctrackfitterb.cc:342
 hmdctrackfitterb.cc:343
 hmdctrackfitterb.cc:344
 hmdctrackfitterb.cc:345
 hmdctrackfitterb.cc:346
 hmdctrackfitterb.cc:347
 hmdctrackfitterb.cc:348
 hmdctrackfitterb.cc:349
 hmdctrackfitterb.cc:350
 hmdctrackfitterb.cc:351
 hmdctrackfitterb.cc:352
 hmdctrackfitterb.cc:353
 hmdctrackfitterb.cc:354
 hmdctrackfitterb.cc:355
 hmdctrackfitterb.cc:356
 hmdctrackfitterb.cc:357
 hmdctrackfitterb.cc:358
 hmdctrackfitterb.cc:359
 hmdctrackfitterb.cc:360
 hmdctrackfitterb.cc:361
 hmdctrackfitterb.cc:362
 hmdctrackfitterb.cc:363
 hmdctrackfitterb.cc:364
 hmdctrackfitterb.cc:365