ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : RICH team member
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRichAnalysisPar
//
//
//////////////////////////////////////////////////////////////////////////////


#include "hparamlist.h"
#include "hrichanalysispar.h"

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

using namespace std;

ClassImp(HRichAnalysisPar)


//----------------------------------------------------------------------------
HRichAnalysisPar::HRichAnalysisPar(const Char_t* name, const Char_t* title,
                                   const Char_t* context)
   : HParCond(name, title, context)
{
   clear();
}
//============================================================================

//----------------------------------------------------------------------------
HRichAnalysisPar::~HRichAnalysisPar()
{
   clear();
}
//============================================================================

//----------------------------------------------------------------------------
void HRichAnalysisPar::clear()
{

   iCutOffThresheold = 0;
   iRingMatrixSize = 0;
   iRingMaskSize = 0;
   iRingRadius = 0;
   iRingRadiusError = 0;

   isActiveCleanAlonePad = 0;
   iCleanAlonePadBorder = 0;
   iCleanAlonePadLowerThreshold = 0;

   isActiveCleanHighPulse = 0;
   iCleanHighPulseBorder = 0;
   iCleanHighPulseUpperThreshold = 0;

   maxFiredSectorPads = 0;
   isActiveBorderAmplitReduction = 0;

   isActiveLabelPads = 0;
   iLabeledPadsDistance = 0;
   isActiveTestAsymmetry = 0;

   isActiveTestDensity = 0;
   fThresholdDensity = 0.;
   fSurfaceArea = 0.;

   isActiveDynamicThrAmplitude = 0;
   fLowerAmplFactor = 0.;
   fFormulaParam1 = 0.;
   fFormulaParam2 = 0.;
   fFormulaParam3 = 0.;

   isActiveFiredRingPadsRatio = 0;
   fFiredRingPadsRatio = 0.;

   isActiveTestCharge = 0;
   fRingMinCharge = 0.;
   fRingMaxCharge = 0.;

   isActiveFakesRejection = 0;
   fFakeQualityRatio = 0.;
   fFakeCentroidCut = 0.;

   iSuperiorAlgorithmID = 0;

   isActiveRingFindFitMatrix = 0;
   iMinimalFitMatrixRingQuality = 0;
   iMinimalFitMatrixRingDistance = 0;
   iHowManyFitMatrixRings = 0;

   isActiveRingHoughTransf = 0;
   iMinimalHoughTransfRingQuality = 0;
   iMinimalHoughTransfRingDistance = 0;
   iHowManyHoughTransfRings = 0;

   fAmpCorrFac.Set(6);
   fAmpCorrFac.Reset(1.F);

}
//============================================================================

//----------------------------------------------------------------------------
void HRichAnalysisPar::defaultInit()
{

// so far dummy
   clear();
}
//============================================================================
/*
//----------------------------------------------------------------------------
HRichAnalysisPar::HRichAnalysisPar(const HRichAnalysisPar& source)
{
   cerr << "HRichAnalysisPar object can not be initialized with values of another object!\n";
   cerr << "Default constructor will be called.\n";
   HRichAnalysisPar();
}
//============================================================================

//----------------------------------------------------------------------------
HRichAnalysisPar& HRichAnalysisPar::operator=(const HRichAnalysisPar& source)
{
   if (this != &source) {
      cerr << "HRichAnalysisPar object can not be assigned!\n";
      cerr << "Default constructor will be called.\n";
      HRichAnalysisPar();
   }
   return *this;
}
//============================================================================
*/
//----------------------------------------------------------------------------
void HRichAnalysisPar::printParams()
{

   cout << endl << endl;
   cout << "$RING PARAMETERS$" << endl;
   cout << "\tRing radius       = " << iRingRadius << endl;
   cout << "\tRing radius error = " << iRingRadiusError << endl << endl;

   cout << "$PAD CLEANING$" << endl;
   cout << "\tClean Alone Pad lower threshold  = " << iCleanAlonePadLowerThreshold << endl;
   cout << "\tClean High Pulse upper threshold = " << iCleanHighPulseUpperThreshold << endl << endl;

   cout << "$PATTERN MATRIX$" << endl;
   if (isActiveRingFindFitMatrix) {
      cout << "\tMinimal Ring Quality in Pattern Matrix         = " << iMinimalFitMatrixRingQuality << endl;
      cout << "\tMinimal Rings Distances in Pattern Matrix      = " << iMinimalFitMatrixRingDistance << endl;
      cout << "\tNumber of Rings to be sought by Pattern Matrix = " << iHowManyFitMatrixRings << endl << endl;
   } else {
      cout << "\t(not active)" << endl << endl;
   }

   cout << "$HOUGH TRANSFORM$" << endl;
   if (isActiveRingHoughTransf) {
      cout << "\tMinimal Ring Quality in Hough Transform         = " << iMinimalHoughTransfRingQuality << endl;
      cout << "\tMinimal Rings Distances in Hough Transform      = " << iMinimalHoughTransfRingDistance << endl;
      cout << "\tNumber of Rings to be sought by Hough Transform = " << iHowManyHoughTransfRings << endl << endl;
   } else {
      cout << "\t(not active)" << endl << endl;
   }

   cout << "$RING TESTS$" << endl;
   if (isActiveTestDensity) cout << "\tRing Test Density                 = yes" << endl;
   else cout << "\tRing Test Density                 = no" << endl;
   if (isActiveBorderAmplitReduction) cout << "\tAmplitude reduction at the border = yes" << endl;
   else cout << "\tAmplitude reduction at the border = no" << endl;
   if (isActiveDynamicThrAmplitude) cout << "\tDynamic Amplitude Threshold       = yes" << endl;
   else cout << "\tDynamic Amplitude Threshold       = no" << endl;
   if (isActiveFiredRingPadsRatio) cout << "\tFired Pads Ratio in ring          = yes" << endl;
   else cout << "\tFired Pads Ratio in ring          = no" << endl;
   if (isActiveTestAsymmetry) cout << "\tTest Ring Asymmetry               = yes" << endl;
   else cout << "\tTest Ring Asymmetry               = no" << endl;
   if (isActiveTestCharge) cout << "\tTest Ring Charge                  = yes" << endl;
   else cout << "\tTest Ring Charge                  = no" << endl;
   if (isActiveFakesRejection) cout << "\tFakes Rejection                   = yes" << endl;
   else cout << "\tFakes Rejection                   = no" << endl << endl;

   Info("printParams", "RICH ANALYSIS PARAMETERS\n");
   cout << " iCutOffThresheold.................." << iCutOffThresheold << endl;
   cout << " iRingRadius........................" << iRingRadius << endl;
   cout << " iRingMatrixSize...................." << iRingMatrixSize << endl;
   cout << " iRingMaskSize......................" << iRingMaskSize << endl;
   cout << " isActiveCleanAlonePad.............." << isActiveCleanAlonePad << endl;
   cout << " iCleanAlonePadBorder..............." << iCleanAlonePadBorder << endl;
   cout << " iCleanAlonePadLowerThreshold......." << iCleanAlonePadLowerThreshold << endl;
   cout << " isActiveCleanHighPulse............." << isActiveCleanHighPulse << endl;
   cout << " iCleanHighPulseBorder.............." << iCleanHighPulseBorder << endl;
   cout << " iCleanHighPulseUpperThreshold......" << iCleanHighPulseUpperThreshold << endl;
   cout << " isActiveLabelPads.................." << isActiveLabelPads << endl;
   cout << " iLabeledPadsDistance..............." << iLabeledPadsDistance << endl;
   cout << " maxFiredSectorPads................." << maxFiredSectorPads << endl;
   cout << " isActiveBorderAmplitReduction......" << isActiveBorderAmplitReduction << endl;
   cout << " isActiveTestDensity................" << isActiveTestDensity << endl;
   cout << " fThresholdDensity.................." << fThresholdDensity << endl;
   cout << " fSurfaceArea......................." << fSurfaceArea << endl;
   cout << " isActiveDynamicThrAmplitude........" << isActiveDynamicThrAmplitude << endl;
   cout << " fLowerAmplFactor..................." << fLowerAmplFactor << endl;
   cout << " fFormulaParam1....................." << fFormulaParam1 << endl;
   cout << " fFormulaParam2....................." << fFormulaParam2 << endl;
   cout << " fFormulaParam3....................." << fFormulaParam3 << endl;
   cout << " isActiveFiredRingPadsRatio........." << isActiveFiredRingPadsRatio << endl;
   cout << " fFiredRingPadsRatio................" << fFiredRingPadsRatio << endl;
   cout << " isActiveTestAsymmetry.............." << isActiveTestAsymmetry << endl;
   cout << " isActiveTestCharge................." << isActiveTestCharge << endl;
   cout << " fRingMinCharge....................." << fRingMinCharge << endl;
   cout << " fRingMaxCharge....................." << fRingMaxCharge << endl;
   cout << " isActiveFakesRejection............." << isActiveFakesRejection << endl;
   cout << " fFakeQualityRatio.................." << fFakeQualityRatio << endl;
   cout << " fFakeCentroidCut..................." << fFakeCentroidCut << endl;
   cout << " iSuperiorAlgorithmID..............." << iSuperiorAlgorithmID << endl;
   cout << " isActiveRingFindFitMatrix.........." << isActiveRingFindFitMatrix << endl;
   cout << " iMinimalFitMatrixRingQuality......." << iMinimalFitMatrixRingQuality << endl;
   cout << " iMinimalFitMatrixRingDistance......" << iMinimalFitMatrixRingDistance << endl;
   cout << " iHowManyFitMatrixRings............." << iHowManyFitMatrixRings << endl;
   cout << " isActiveRingHoughTransf............" << isActiveRingHoughTransf << endl;
   cout << " iMinimalHoughTransfRingQuality....." << iMinimalHoughTransfRingQuality << endl;
   cout << " iMinimalHoughTransfRingDistance...." << iMinimalHoughTransfRingDistance << endl;
   cout << " iHowManyHoughTransfRings..........." << iHowManyHoughTransfRings << endl << endl;
   cout << " fAmpCorrFac........................";
   for (Int_t i = 0; i < 6; ++i) {
     cout << " " << fAmpCorrFac.At(i);
     cout << endl << endl;
   }
}
//============================================================================

//============================================================================

void HRichAnalysisPar::putParams(HParamList* l)
{
   if (!l) return;
   l->add("iCutOffThresheold", iCutOffThresheold);
   l->add("iRingRadius", iRingRadius);
   l->add("iRingRadiusError", iRingRadiusError);
   l->add("iRingMatrixSize", iRingMatrixSize);
   l->add("iRingMatrix", iRingMatrix);
   l->add("iRingMaskSize", iRingMaskSize);
   l->add("iRingMask", iRingMask);
   l->add("isActiveCleanAlonePad", isActiveCleanAlonePad);
   l->add("iCleanAlonePadBorder", iCleanAlonePadBorder);
   l->add("iCleanAlonePadLowerThreshold", iCleanAlonePadLowerThreshold);
   l->add("isActiveCleanHighPulse", isActiveCleanHighPulse);
   l->add("iCleanHighPulseBorder", iCleanHighPulseBorder);
   l->add("iCleanHighPulseUpperThreshold", iCleanHighPulseUpperThreshold);
   l->add("isActiveLabelPads", isActiveLabelPads);
   l->add("iLabeledPadsDistance", iLabeledPadsDistance);
   l->add("maxFiredSectorPads", maxFiredSectorPads);
   l->add("isActiveBorderAmplitReduction", isActiveBorderAmplitReduction);
   l->add("isActiveTestDensity", isActiveTestDensity);
   l->add("fThresholdDensity", fThresholdDensity);
   l->add("fSurfaceArea", fSurfaceArea);
   l->add("isActiveDynamicThrAmplitude", isActiveDynamicThrAmplitude);
   l->add("fLowerAmplFactor", fLowerAmplFactor);
   l->add("fFormulaParam1", fFormulaParam1);
   l->add("fFormulaParam2", fFormulaParam2);
   l->add("fFormulaParam3", fFormulaParam3);
   l->add("isActiveFiredRingPadsRatio", isActiveFiredRingPadsRatio);
   l->add("fFiredRingPadsRatio", fFiredRingPadsRatio);
   l->add("isActiveTestAsymmetry", isActiveTestAsymmetry);
   l->add("isActiveTestCharge", isActiveTestCharge);
   l->add("fRingMinCharge", fRingMinCharge);
   l->add("fRingMaxCharge", fRingMaxCharge);
   l->add("isActiveFakesRejection", isActiveFakesRejection);
   l->add("fFakeQualityRatio", fFakeQualityRatio);
   l->add("fFakeCentroidCut", fFakeCentroidCut);
   l->add("iSuperiorAlgorithmID", iSuperiorAlgorithmID);
   l->add("isActiveRingFindFitMatrix", isActiveRingFindFitMatrix);
   l->add("iMinimalFitMatrixRingQuality", iMinimalFitMatrixRingQuality);
   l->add("iMinimalFitMatrixRingDistance", iMinimalFitMatrixRingDistance);
   l->add("iHowManyFitMatrixRings", iHowManyFitMatrixRings);
   l->add("isActiveRingHoughTransf", isActiveRingHoughTransf);
   l->add("iMinimalHoughTransfRingQuality", iMinimalHoughTransfRingQuality);
   l->add("iMinimalHoughTransfRingDistance", iMinimalHoughTransfRingDistance);
   l->add("iHowManyHoughTransfRings", iHowManyHoughTransfRings);
   l->add("fAmpCorrFac", fAmpCorrFac);
}
//============================================================================

Bool_t HRichAnalysisPar::getParams(HParamList* l)
{
   if (!l) return kFALSE;
   if (!l->fill("iCutOffThresheold", &iCutOffThresheold)) return kFALSE;
   if (!l->fill("iRingRadius", &iRingRadius)) return kFALSE;
   if (!l->fill("iRingRadiusError", &iRingRadiusError)) return kFALSE;
   if (!l->fill("iRingMatrixSize", &iRingMatrixSize)) return kFALSE;
   if (!l->fill("iRingMatrix", &iRingMatrix)) return kFALSE;
   if (!l->fill("iRingMaskSize", &iRingMaskSize)) return kFALSE;
   if (!l->fill("iRingMask", &iRingMask)) return kFALSE;
   if (!l->fill("isActiveCleanAlonePad", &isActiveCleanAlonePad)) return kFALSE;
   if (!l->fill("iCleanAlonePadBorder", &iCleanAlonePadBorder)) return kFALSE;
   if (!l->fill("iCleanAlonePadLowerThreshold", &iCleanAlonePadLowerThreshold)) return kFALSE;
   if (!l->fill("isActiveCleanHighPulse", &isActiveCleanHighPulse)) return kFALSE;
   if (!l->fill("iCleanHighPulseBorder", &iCleanHighPulseBorder)) return kFALSE;
   if (!l->fill("iCleanHighPulseUpperThreshold", &iCleanHighPulseUpperThreshold)) return kFALSE;
   if (!l->fill("isActiveLabelPads", &isActiveLabelPads)) return kFALSE;
   if (!l->fill("iLabeledPadsDistance", &iLabeledPadsDistance)) return kFALSE;
   if (!l->fill("maxFiredSectorPads", &maxFiredSectorPads)) return kFALSE;
   if (!l->fill("isActiveBorderAmplitReduction", &isActiveBorderAmplitReduction)) return kFALSE;
   if (!l->fill("isActiveTestDensity", &isActiveTestDensity)) return kFALSE;
   if (!l->fill("fThresholdDensity", &fThresholdDensity)) return kFALSE;
   if (!l->fill("fSurfaceArea", &fSurfaceArea)) return kFALSE;
   if (!l->fill("isActiveDynamicThrAmplitude", &isActiveDynamicThrAmplitude)) return kFALSE;
   if (!l->fill("fLowerAmplFactor", &fLowerAmplFactor)) return kFALSE;
   if (!l->fill("fFormulaParam1", &fFormulaParam1)) return kFALSE;
   if (!l->fill("fFormulaParam2", &fFormulaParam2)) return kFALSE;
   if (!l->fill("fFormulaParam3", &fFormulaParam3)) return kFALSE;
   if (!l->fill("isActiveFiredRingPadsRatio", &isActiveFiredRingPadsRatio)) return kFALSE;
   if (!l->fill("fFiredRingPadsRatio", &fFiredRingPadsRatio)) return kFALSE;
   if (!l->fill("isActiveTestAsymmetry", &isActiveTestAsymmetry)) return kFALSE;
   if (!l->fill("isActiveTestCharge", &isActiveTestCharge)) return kFALSE;
   if (!l->fill("fRingMinCharge", &fRingMinCharge)) return kFALSE;
   if (!l->fill("fRingMaxCharge", &fRingMaxCharge)) return kFALSE;
   if (!l->fill("isActiveFakesRejection", &isActiveFakesRejection)) return kFALSE;
   if (!l->fill("fFakeQualityRatio", &fFakeQualityRatio)) return kFALSE;
   if (!l->fill("fFakeCentroidCut", &fFakeCentroidCut)) return kFALSE;
   if (!l->fill("iSuperiorAlgorithmID", &iSuperiorAlgorithmID)) return kFALSE;
   if (!l->fill("isActiveRingFindFitMatrix", &isActiveRingFindFitMatrix)) return kFALSE;
   if (!l->fill("iMinimalFitMatrixRingQuality", &iMinimalFitMatrixRingQuality)) return kFALSE;
   if (!l->fill("iMinimalFitMatrixRingDistance", &iMinimalFitMatrixRingDistance)) return kFALSE;
   if (!l->fill("iHowManyFitMatrixRings", &iHowManyFitMatrixRings)) return kFALSE;
   if (!l->fill("isActiveRingHoughTransf", &isActiveRingHoughTransf)) return kFALSE;
   if (!l->fill("iMinimalHoughTransfRingQuality", &iMinimalHoughTransfRingQuality)) return kFALSE;
   if (!l->fill("iMinimalHoughTransfRingDistance", &iMinimalHoughTransfRingDistance)) return kFALSE;
   if (!l->fill("iHowManyHoughTransfRings", &iHowManyHoughTransfRings)) return kFALSE;
   if (!l->fill("fAmpCorrFac", &fAmpCorrFac)) return kFALSE;
   return kTRUE;
}

void HRichAnalysisPar::Streamer(TBuffer &R__b)
{
   // Stream an object of class HRichAnalysisPar.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      HParCond::Streamer(R__b);
      R__b >> iCutOffThresheold;
      R__b >> iRingRadius;
      R__b >> iRingRadiusError;
      R__b >> iRingMatrixSize;
      iRingMatrix.Streamer(R__b);
      R__b >> iRingMaskSize;
      iRingMask.Streamer(R__b);
      R__b >> isActiveCleanAlonePad;
      R__b >> iCleanAlonePadBorder;
      R__b >> iCleanAlonePadLowerThreshold;
      R__b >> isActiveCleanHighPulse;
      R__b >> iCleanHighPulseBorder;
      R__b >> iCleanHighPulseUpperThreshold;
      R__b >> isActiveLabelPads;
      R__b >> iLabeledPadsDistance;
      R__b >> maxFiredSectorPads;
      R__b >> isActiveBorderAmplitReduction;
      R__b >> isActiveTestDensity;
      R__b >> fThresholdDensity;
      R__b >> fSurfaceArea;
      R__b >> isActiveDynamicThrAmplitude;
      R__b >> fLowerAmplFactor;
      R__b >> fFormulaParam1;
      R__b >> fFormulaParam2;
      R__b >> fFormulaParam3;
      R__b >> isActiveFiredRingPadsRatio;
      R__b >> fFiredRingPadsRatio;
      R__b >> isActiveTestAsymmetry;
      R__b >> isActiveTestCharge;
      R__b >> fRingMinCharge;
      R__b >> fRingMaxCharge;
      R__b >> isActiveFakesRejection;
      R__b >> fFakeQualityRatio;
      R__b >> fFakeCentroidCut;
      R__b >> iSuperiorAlgorithmID;
      R__b >> isActiveRingFindFitMatrix;
      R__b >> iMinimalFitMatrixRingQuality;
      R__b >> iMinimalFitMatrixRingDistance;
      R__b >> iHowManyFitMatrixRings;
      R__b >> isActiveRingHoughTransf;
      R__b >> iMinimalHoughTransfRingQuality;
      R__b >> iMinimalHoughTransfRingDistance;
      R__b >> iHowManyHoughTransfRings;
      if (R__v > 1) fAmpCorrFac.Streamer(R__b);
      else          fAmpCorrFac.Reset(1.F);
      R__b.ReadStaticArray((char*)filename);
      R__b.CheckByteCount(R__s, R__c, HRichAnalysisPar::IsA());
   } else {
      R__c = R__b.WriteVersion(HRichAnalysisPar::IsA(), kTRUE);
      HParCond::Streamer(R__b);
      R__b << iCutOffThresheold;
      R__b << iRingRadius;
      R__b << iRingRadiusError;
      R__b << iRingMatrixSize;
      iRingMatrix.Streamer(R__b);
      R__b << iRingMaskSize;
      iRingMask.Streamer(R__b);
      R__b << isActiveCleanAlonePad;
      R__b << iCleanAlonePadBorder;
      R__b << iCleanAlonePadLowerThreshold;
      R__b << isActiveCleanHighPulse;
      R__b << iCleanHighPulseBorder;
      R__b << iCleanHighPulseUpperThreshold;
      R__b << isActiveLabelPads;
      R__b << iLabeledPadsDistance;
      R__b << maxFiredSectorPads;
      R__b << isActiveBorderAmplitReduction;
      R__b << isActiveTestDensity;
      R__b << fThresholdDensity;
      R__b << fSurfaceArea;
      R__b << isActiveDynamicThrAmplitude;
      R__b << fLowerAmplFactor;
      R__b << fFormulaParam1;
      R__b << fFormulaParam2;
      R__b << fFormulaParam3;
      R__b << isActiveFiredRingPadsRatio;
      R__b << fFiredRingPadsRatio;
      R__b << isActiveTestAsymmetry;
      R__b << isActiveTestCharge;
      R__b << fRingMinCharge;
      R__b << fRingMaxCharge;
      R__b << isActiveFakesRejection;
      R__b << fFakeQualityRatio;
      R__b << fFakeCentroidCut;
      R__b << iSuperiorAlgorithmID;
      R__b << isActiveRingFindFitMatrix;
      R__b << iMinimalFitMatrixRingQuality;
      R__b << iMinimalFitMatrixRingDistance;
      R__b << iHowManyFitMatrixRings;
      R__b << isActiveRingHoughTransf;
      R__b << iMinimalHoughTransfRingQuality;
      R__b << iMinimalHoughTransfRingDistance;
      R__b << iHowManyHoughTransfRings;
      fAmpCorrFac.Streamer(R__b);
      R__b.WriteArray(filename, 40);
      R__b.SetByteCount(R__c, kTRUE);
   }
}
 hrichanalysispar.cc:1
 hrichanalysispar.cc:2
 hrichanalysispar.cc:3
 hrichanalysispar.cc:4
 hrichanalysispar.cc:5
 hrichanalysispar.cc:6
 hrichanalysispar.cc:7
 hrichanalysispar.cc:8
 hrichanalysispar.cc:9
 hrichanalysispar.cc:10
 hrichanalysispar.cc:11
 hrichanalysispar.cc:12
 hrichanalysispar.cc:13
 hrichanalysispar.cc:14
 hrichanalysispar.cc:15
 hrichanalysispar.cc:16
 hrichanalysispar.cc:17
 hrichanalysispar.cc:18
 hrichanalysispar.cc:19
 hrichanalysispar.cc:20
 hrichanalysispar.cc:21
 hrichanalysispar.cc:22
 hrichanalysispar.cc:23
 hrichanalysispar.cc:24
 hrichanalysispar.cc:25
 hrichanalysispar.cc:26
 hrichanalysispar.cc:27
 hrichanalysispar.cc:28
 hrichanalysispar.cc:29
 hrichanalysispar.cc:30
 hrichanalysispar.cc:31
 hrichanalysispar.cc:32
 hrichanalysispar.cc:33
 hrichanalysispar.cc:34
 hrichanalysispar.cc:35
 hrichanalysispar.cc:36
 hrichanalysispar.cc:37
 hrichanalysispar.cc:38
 hrichanalysispar.cc:39
 hrichanalysispar.cc:40
 hrichanalysispar.cc:41
 hrichanalysispar.cc:42
 hrichanalysispar.cc:43
 hrichanalysispar.cc:44
 hrichanalysispar.cc:45
 hrichanalysispar.cc:46
 hrichanalysispar.cc:47
 hrichanalysispar.cc:48
 hrichanalysispar.cc:49
 hrichanalysispar.cc:50
 hrichanalysispar.cc:51
 hrichanalysispar.cc:52
 hrichanalysispar.cc:53
 hrichanalysispar.cc:54
 hrichanalysispar.cc:55
 hrichanalysispar.cc:56
 hrichanalysispar.cc:57
 hrichanalysispar.cc:58
 hrichanalysispar.cc:59
 hrichanalysispar.cc:60
 hrichanalysispar.cc:61
 hrichanalysispar.cc:62
 hrichanalysispar.cc:63
 hrichanalysispar.cc:64
 hrichanalysispar.cc:65
 hrichanalysispar.cc:66
 hrichanalysispar.cc:67
 hrichanalysispar.cc:68
 hrichanalysispar.cc:69
 hrichanalysispar.cc:70
 hrichanalysispar.cc:71
 hrichanalysispar.cc:72
 hrichanalysispar.cc:73
 hrichanalysispar.cc:74
 hrichanalysispar.cc:75
 hrichanalysispar.cc:76
 hrichanalysispar.cc:77
 hrichanalysispar.cc:78
 hrichanalysispar.cc:79
 hrichanalysispar.cc:80
 hrichanalysispar.cc:81
 hrichanalysispar.cc:82
 hrichanalysispar.cc:83
 hrichanalysispar.cc:84
 hrichanalysispar.cc:85
 hrichanalysispar.cc:86
 hrichanalysispar.cc:87
 hrichanalysispar.cc:88
 hrichanalysispar.cc:89
 hrichanalysispar.cc:90
 hrichanalysispar.cc:91
 hrichanalysispar.cc:92
 hrichanalysispar.cc:93
 hrichanalysispar.cc:94
 hrichanalysispar.cc:95
 hrichanalysispar.cc:96
 hrichanalysispar.cc:97
 hrichanalysispar.cc:98
 hrichanalysispar.cc:99
 hrichanalysispar.cc:100
 hrichanalysispar.cc:101
 hrichanalysispar.cc:102
 hrichanalysispar.cc:103
 hrichanalysispar.cc:104
 hrichanalysispar.cc:105
 hrichanalysispar.cc:106
 hrichanalysispar.cc:107
 hrichanalysispar.cc:108
 hrichanalysispar.cc:109
 hrichanalysispar.cc:110
 hrichanalysispar.cc:111
 hrichanalysispar.cc:112
 hrichanalysispar.cc:113
 hrichanalysispar.cc:114
 hrichanalysispar.cc:115
 hrichanalysispar.cc:116
 hrichanalysispar.cc:117
 hrichanalysispar.cc:118
 hrichanalysispar.cc:119
 hrichanalysispar.cc:120
 hrichanalysispar.cc:121
 hrichanalysispar.cc:122
 hrichanalysispar.cc:123
 hrichanalysispar.cc:124
 hrichanalysispar.cc:125
 hrichanalysispar.cc:126
 hrichanalysispar.cc:127
 hrichanalysispar.cc:128
 hrichanalysispar.cc:129
 hrichanalysispar.cc:130
 hrichanalysispar.cc:131
 hrichanalysispar.cc:132
 hrichanalysispar.cc:133
 hrichanalysispar.cc:134
 hrichanalysispar.cc:135
 hrichanalysispar.cc:136
 hrichanalysispar.cc:137
 hrichanalysispar.cc:138
 hrichanalysispar.cc:139
 hrichanalysispar.cc:140
 hrichanalysispar.cc:141
 hrichanalysispar.cc:142
 hrichanalysispar.cc:143
 hrichanalysispar.cc:144
 hrichanalysispar.cc:145
 hrichanalysispar.cc:146
 hrichanalysispar.cc:147
 hrichanalysispar.cc:148
 hrichanalysispar.cc:149
 hrichanalysispar.cc:150
 hrichanalysispar.cc:151
 hrichanalysispar.cc:152
 hrichanalysispar.cc:153
 hrichanalysispar.cc:154
 hrichanalysispar.cc:155
 hrichanalysispar.cc:156
 hrichanalysispar.cc:157
 hrichanalysispar.cc:158
 hrichanalysispar.cc:159
 hrichanalysispar.cc:160
 hrichanalysispar.cc:161
 hrichanalysispar.cc:162
 hrichanalysispar.cc:163
 hrichanalysispar.cc:164
 hrichanalysispar.cc:165
 hrichanalysispar.cc:166
 hrichanalysispar.cc:167
 hrichanalysispar.cc:168
 hrichanalysispar.cc:169
 hrichanalysispar.cc:170
 hrichanalysispar.cc:171
 hrichanalysispar.cc:172
 hrichanalysispar.cc:173
 hrichanalysispar.cc:174
 hrichanalysispar.cc:175
 hrichanalysispar.cc:176
 hrichanalysispar.cc:177
 hrichanalysispar.cc:178
 hrichanalysispar.cc:179
 hrichanalysispar.cc:180
 hrichanalysispar.cc:181
 hrichanalysispar.cc:182
 hrichanalysispar.cc:183
 hrichanalysispar.cc:184
 hrichanalysispar.cc:185
 hrichanalysispar.cc:186
 hrichanalysispar.cc:187
 hrichanalysispar.cc:188
 hrichanalysispar.cc:189
 hrichanalysispar.cc:190
 hrichanalysispar.cc:191
 hrichanalysispar.cc:192
 hrichanalysispar.cc:193
 hrichanalysispar.cc:194
 hrichanalysispar.cc:195
 hrichanalysispar.cc:196
 hrichanalysispar.cc:197
 hrichanalysispar.cc:198
 hrichanalysispar.cc:199
 hrichanalysispar.cc:200
 hrichanalysispar.cc:201
 hrichanalysispar.cc:202
 hrichanalysispar.cc:203
 hrichanalysispar.cc:204
 hrichanalysispar.cc:205
 hrichanalysispar.cc:206
 hrichanalysispar.cc:207
 hrichanalysispar.cc:208
 hrichanalysispar.cc:209
 hrichanalysispar.cc:210
 hrichanalysispar.cc:211
 hrichanalysispar.cc:212
 hrichanalysispar.cc:213
 hrichanalysispar.cc:214
 hrichanalysispar.cc:215
 hrichanalysispar.cc:216
 hrichanalysispar.cc:217
 hrichanalysispar.cc:218
 hrichanalysispar.cc:219
 hrichanalysispar.cc:220
 hrichanalysispar.cc:221
 hrichanalysispar.cc:222
 hrichanalysispar.cc:223
 hrichanalysispar.cc:224
 hrichanalysispar.cc:225
 hrichanalysispar.cc:226
 hrichanalysispar.cc:227
 hrichanalysispar.cc:228
 hrichanalysispar.cc:229
 hrichanalysispar.cc:230
 hrichanalysispar.cc:231
 hrichanalysispar.cc:232
 hrichanalysispar.cc:233
 hrichanalysispar.cc:234
 hrichanalysispar.cc:235
 hrichanalysispar.cc:236
 hrichanalysispar.cc:237
 hrichanalysispar.cc:238
 hrichanalysispar.cc:239
 hrichanalysispar.cc:240
 hrichanalysispar.cc:241
 hrichanalysispar.cc:242
 hrichanalysispar.cc:243
 hrichanalysispar.cc:244
 hrichanalysispar.cc:245
 hrichanalysispar.cc:246
 hrichanalysispar.cc:247
 hrichanalysispar.cc:248
 hrichanalysispar.cc:249
 hrichanalysispar.cc:250
 hrichanalysispar.cc:251
 hrichanalysispar.cc:252
 hrichanalysispar.cc:253
 hrichanalysispar.cc:254
 hrichanalysispar.cc:255
 hrichanalysispar.cc:256
 hrichanalysispar.cc:257
 hrichanalysispar.cc:258
 hrichanalysispar.cc:259
 hrichanalysispar.cc:260
 hrichanalysispar.cc:261
 hrichanalysispar.cc:262
 hrichanalysispar.cc:263
 hrichanalysispar.cc:264
 hrichanalysispar.cc:265
 hrichanalysispar.cc:266
 hrichanalysispar.cc:267
 hrichanalysispar.cc:268
 hrichanalysispar.cc:269
 hrichanalysispar.cc:270
 hrichanalysispar.cc:271
 hrichanalysispar.cc:272
 hrichanalysispar.cc:273
 hrichanalysispar.cc:274
 hrichanalysispar.cc:275
 hrichanalysispar.cc:276
 hrichanalysispar.cc:277
 hrichanalysispar.cc:278
 hrichanalysispar.cc:279
 hrichanalysispar.cc:280
 hrichanalysispar.cc:281
 hrichanalysispar.cc:282
 hrichanalysispar.cc:283
 hrichanalysispar.cc:284
 hrichanalysispar.cc:285
 hrichanalysispar.cc:286
 hrichanalysispar.cc:287
 hrichanalysispar.cc:288
 hrichanalysispar.cc:289
 hrichanalysispar.cc:290
 hrichanalysispar.cc:291
 hrichanalysispar.cc:292
 hrichanalysispar.cc:293
 hrichanalysispar.cc:294
 hrichanalysispar.cc:295
 hrichanalysispar.cc:296
 hrichanalysispar.cc:297
 hrichanalysispar.cc:298
 hrichanalysispar.cc:299
 hrichanalysispar.cc:300
 hrichanalysispar.cc:301
 hrichanalysispar.cc:302
 hrichanalysispar.cc:303
 hrichanalysispar.cc:304
 hrichanalysispar.cc:305
 hrichanalysispar.cc:306
 hrichanalysispar.cc:307
 hrichanalysispar.cc:308
 hrichanalysispar.cc:309
 hrichanalysispar.cc:310
 hrichanalysispar.cc:311
 hrichanalysispar.cc:312
 hrichanalysispar.cc:313
 hrichanalysispar.cc:314
 hrichanalysispar.cc:315
 hrichanalysispar.cc:316
 hrichanalysispar.cc:317
 hrichanalysispar.cc:318
 hrichanalysispar.cc:319
 hrichanalysispar.cc:320
 hrichanalysispar.cc:321
 hrichanalysispar.cc:322
 hrichanalysispar.cc:323
 hrichanalysispar.cc:324
 hrichanalysispar.cc:325
 hrichanalysispar.cc:326
 hrichanalysispar.cc:327
 hrichanalysispar.cc:328
 hrichanalysispar.cc:329
 hrichanalysispar.cc:330
 hrichanalysispar.cc:331
 hrichanalysispar.cc:332
 hrichanalysispar.cc:333
 hrichanalysispar.cc:334
 hrichanalysispar.cc:335
 hrichanalysispar.cc:336
 hrichanalysispar.cc:337
 hrichanalysispar.cc:338
 hrichanalysispar.cc:339
 hrichanalysispar.cc:340
 hrichanalysispar.cc:341
 hrichanalysispar.cc:342
 hrichanalysispar.cc:343
 hrichanalysispar.cc:344
 hrichanalysispar.cc:345
 hrichanalysispar.cc:346
 hrichanalysispar.cc:347
 hrichanalysispar.cc:348
 hrichanalysispar.cc:349
 hrichanalysispar.cc:350
 hrichanalysispar.cc:351
 hrichanalysispar.cc:352
 hrichanalysispar.cc:353
 hrichanalysispar.cc:354
 hrichanalysispar.cc:355
 hrichanalysispar.cc:356
 hrichanalysispar.cc:357
 hrichanalysispar.cc:358
 hrichanalysispar.cc:359
 hrichanalysispar.cc:360
 hrichanalysispar.cc:361
 hrichanalysispar.cc:362
 hrichanalysispar.cc:363
 hrichanalysispar.cc:364
 hrichanalysispar.cc:365
 hrichanalysispar.cc:366
 hrichanalysispar.cc:367
 hrichanalysispar.cc:368
 hrichanalysispar.cc:369
 hrichanalysispar.cc:370
 hrichanalysispar.cc:371
 hrichanalysispar.cc:372
 hrichanalysispar.cc:373
 hrichanalysispar.cc:374
 hrichanalysispar.cc:375
 hrichanalysispar.cc:376
 hrichanalysispar.cc:377
 hrichanalysispar.cc:378
 hrichanalysispar.cc:379
 hrichanalysispar.cc:380
 hrichanalysispar.cc:381
 hrichanalysispar.cc:382
 hrichanalysispar.cc:383
 hrichanalysispar.cc:384
 hrichanalysispar.cc:385
 hrichanalysispar.cc:386
 hrichanalysispar.cc:387
 hrichanalysispar.cc:388
 hrichanalysispar.cc:389
 hrichanalysispar.cc:390
 hrichanalysispar.cc:391
 hrichanalysispar.cc:392
 hrichanalysispar.cc:393
 hrichanalysispar.cc:394
 hrichanalysispar.cc:395
 hrichanalysispar.cc:396
 hrichanalysispar.cc:397
 hrichanalysispar.cc:398
 hrichanalysispar.cc:399
 hrichanalysispar.cc:400
 hrichanalysispar.cc:401
 hrichanalysispar.cc:402
 hrichanalysispar.cc:403
 hrichanalysispar.cc:404
 hrichanalysispar.cc:405
 hrichanalysispar.cc:406
 hrichanalysispar.cc:407
 hrichanalysispar.cc:408
 hrichanalysispar.cc:409
 hrichanalysispar.cc:410
 hrichanalysispar.cc:411
 hrichanalysispar.cc:412
 hrichanalysispar.cc:413
 hrichanalysispar.cc:414
 hrichanalysispar.cc:415
 hrichanalysispar.cc:416
 hrichanalysispar.cc:417
 hrichanalysispar.cc:418
 hrichanalysispar.cc:419
 hrichanalysispar.cc:420
 hrichanalysispar.cc:421
 hrichanalysispar.cc:422
 hrichanalysispar.cc:423
 hrichanalysispar.cc:424
 hrichanalysispar.cc:425
 hrichanalysispar.cc:426
 hrichanalysispar.cc:427
 hrichanalysispar.cc:428
 hrichanalysispar.cc:429
 hrichanalysispar.cc:430
 hrichanalysispar.cc:431
 hrichanalysispar.cc:432
 hrichanalysispar.cc:433
 hrichanalysispar.cc:434
 hrichanalysispar.cc:435
 hrichanalysispar.cc:436
 hrichanalysispar.cc:437
 hrichanalysispar.cc:438
 hrichanalysispar.cc:439
 hrichanalysispar.cc:440
 hrichanalysispar.cc:441
 hrichanalysispar.cc:442