ROOT logo
//*-- AUTHOR : Ilse Koenig
//*-- Created : 05/11/2004
//*-- Modified : 24/11/2004 by V. Pechenov

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////
//
//  HMetaMatchPar
//
//  Parameter container for HMetaMatchF
//
// Rich:
//   Tr - angle theta of ring from HRichHit (in degree) in lab.coor.sys.
//   Pr - angle phi of ring from HRichHit (in degree) in lab.coor.sys.
//   Tm - angle theta of ring from HRichHit (in degree) in lab.coor.sys.
//   Pm - angle phi of ring from HRichHit (in degree) in lab.coor.sys.
//   SigmaTheta= (richThetaMaxCut - richThetaMinCut)/2.
//   Toffset   = (richThetaMinCut + richThetaMaxCut)/2.
//   qualityRich = 
//     sqrt[((Pr - Pm - richSigmaPhiOffset)*sin(Tm)/richSigmaPhi)^2 +
//          ((Tr - Tm - Toffset)/SigmaTheta)^2]
//
//   Condition of RICH MDC matching:  qualityRich < richQualityCut
//
//   Parameters preparation (for each sector):
//     From distribution of (Tr-Tm) to get 
//     window "richThetaMinCut" - "richThetaMaxCut".
//     From distribution of (Pr-Pm) to get (by Gaus approximation for example)
//     "richSigmaPhiOffset" (mean of approximation).
//     From distribution of (Pr-Pm-richSigmaPhiOffset)*sin(Tm) to get 
//     "richSigmaPhi" (sigma of this distr.).
//     Select "richQualityCut", for example 1.0.
//
//  RichIPU:
//   Tr - angle theta of ring from HRichHitIPU (in degree) in lab.coor.sys.
//   Pr - angle phi of ring from HRichHitIPU (in degree) in lab.coor.sys.
//   Tm - angle theta of ring from HRichHitIPU (in degree) in lab.coor.sys.
//   Pm - angle phi of ring from HRichHitIPU (in degree) in lab.coor.sys.
//   SigmaTheta= (richIPUThetaMaxCut - richIPUThetaMinCut)/2.
//   Toffset   = (richIPUThetaMinCut + richIPUThetaMaxCut)/2.
//   qualityRichIPU = 
//     sqrt[((Pr - Pm - richIPUSigmaPhiOffset)*sin(Tm)/richIPUSigmaPhi)^2 +
//          ((Tr - Tm - Toffset)/SigmaTheta)^2]
//
//   Condition of RICHIPU MDC matching:  qualityIPURich < richIPUQualityCut
//
//   Parameters preparation (for each sector):
//     From distribution of (Tr-Tm) to get 
//     window "richIPUThetaMinCut" - "richIPUThetaMaxCut".
//     From distribution of (Pr-Pm) to get (by Gaus approximation for
//     example) "richIPUSigmaPhiOffset" (mean of this distr.).
//     From distribution of (Pr-Pm-richIPUSigmaPhiOffset)*sin(Tm) to get
//     "richIPUSigmaPhi" (sigma of this distr.).
//     Select "richIPUQualityCut", for example 1.0
//
// Rpc:
//   Xr,Yr - rpc hit position in coordinate system of rpc module
//   dXr,dYr - hit position errors (== HRpcHit::getXRMS(), getYRMS())
//   Xm,Ym - mdc segment cross point with rpc module in coordinate system 
//           of corresponding rpc module 
//   qualityRpc = 
//     sqrt[((Xr - Xm - rpcSigmaXOffset)/sqrt(dXr^2 + rpcSigmaXMdc^2))^2 +
//          ((Yr - Ym - rpcSigmaYOffset)/sqrt(dYr^2 + rpcSigmaYMdc^2))^2]
//
//   Condition of SHOWER MDC matching:  qualityRpc < rpcQualityCut
//
// Shower:
//   Xs,Ys - shower hit position in coordinate system of shower module
//   dXs,dYs - hit position errors (== HShowerHit::getSigmaX(), getSigmaY())
//   Xm,Ym - mdc segment cross point with shower module in coordinate system 
//           of corresponding shower module 
//   qualityShower = 
//     sqrt[((Xs - Xm - showerSigmaXOffset)/sqrt(dXs^2 + showerSigmaXMdc^2))^2 +
//          ((Ys - Ym - showerSigmaYOffset)/sqrt(dYs^2 + showerSigmaYMdc^2))^2]
//
//   Condition of SHOWER MDC matching:  qualityShower < showerQualityCut
//
//   Parameters preparation (for each sector):
//     From distribution of (Xs-Xm) to get "showerSigmaXOffset" 
//     (mean of this distr.).
//     From distribution of (Xs-Xm-showerSigmaXOffset)/dXs (!) to get 
//     sigma of this distribution.
//     If sigma > 1. to calculate "showerSigmaXMdc" = sqrt(sigma^2 - 1.),
//     otherwise set "showerSigmaXMdc" = 0.
//     From distribution of (Ys-Ym) to get "showerSigmaYOffset".
//     From distribution of (Ys-Ym-showerSigmaYOffset)/dYs (!) to get 
//     sigma of this distribution.
//     If sigma > 1. to calculate "showerSigmaYMdc" = sqrt(sigma^2 - 1.),
//     otherwise set "showerSigmaYMdc" = 0.
//     Select "showerQualityCut", for example 5.0 (five sigmas cut).
//
//
// Tof:
//   Xt,Yt - toh hit (or tof cluster position in coordinate system of tof module
//   Xm,Ym - mdc segment cross point with tof module in coordinate system 
//           of corresponding tof module
//   qualityTof = sqrt[ ((Xt - Xm - tofSigmaXOffset)/tofSigmaX)^2 +
//                      ((Yt - Ym - tofSigmaYOffset)/tofSigmaY)^2 ]
//
//   Condition of TOF MDC matching:  qualityTof < tofQualityCut
//
//   Parameters preparation (for each sector):
//     From distribution of (Xt-Xm) to get "tofSigmaX" (sigma of this distr.) 
//     and "tofSigmaXOffset" (mean of this distr).
//     From distribution of (Yt-Ym) to get "tofSigmaY" (sigma of this distr.) 
//     and "tofSigmaYOffset" (mean of this distr).
//     Select "tofQualityCut", for example 5.0 (five sigmas cut).
//
///////////////////////////////////////////////////////////////////////////

#include "hmetamatchpar.h"
#include "hparamlist.h"

ClassImp(HMetaMatchPar)

HMetaMatchPar::HMetaMatchPar(const Char_t* name,
                       const Char_t* title,
                       const Char_t* context)
           : HParCond(name,title,context) {
  // constructor
  Float_t a[6]={0.,0.,0.,0.,0.,0.};
  richThetaMinCut.Set(6,a);
  richThetaMaxCut.Set(6,a);
  richSigmaPhi.Set(6,a);
  richSigmaPhiOffset.Set(6,a);
  richQualityCut.Set(6,a);
  richIPUThetaMinCut.Set(6,a);
  richIPUThetaMaxCut.Set(6,a);
  richIPUSigmaPhi.Set(6,a);
  richIPUSigmaPhiOffset.Set(6,a);
  richIPUQualityCut.Set(6,a);
  showerSigmaXMdc.Set(6,a);
  showerSigmaYMdc.Set(6,a);
  showerSigmaXOffset.Set(6,a);
  showerSigmaYOffset.Set(6,a);
  showerQualityCut.Set(6,a);
  tofSigmaX.Set(6,a);
  tofSigmaY.Set(6,a);
  tofSigmaXOffset.Set(6,a);
  tofSigmaYOffset.Set(6,a);
  tofQualityCut.Set(6,a);
  rpcSigmaXMdc.Set(6,a);
  rpcSigmaYMdc.Set(6,a);
  rpcSigmaXOffset.Set(6,a);
  rpcSigmaYOffset.Set(6,a);
  rpcQualityCut.Set(6,a); 
}

void HMetaMatchPar::clear(void) {
  // all parameters are initialized with 0.
  for(Int_t i=0;i<6;i++) {
    richThetaMinCut[i]       = 0.f;
    richThetaMaxCut[i]       = 0.f;
    richSigmaPhi[i]          = 0.f;
    richSigmaPhiOffset[i]    = 0.f;
    richQualityCut[i]        = 0.f;
    richIPUThetaMinCut[i]    = 0.f;
    richIPUThetaMaxCut[i]    = 0.f;
    richIPUSigmaPhi[i]       = 0.f;
    richIPUSigmaPhiOffset[i] = 0.f;
    richIPUQualityCut[i]     = 0.f;
    showerSigmaXMdc[i]       = 0.f;
    showerSigmaYMdc[i]       = 0.f;
    showerSigmaXOffset[i]    = 0.f;
    showerSigmaYOffset[i]    = 0.f;
    showerQualityCut[i]      = 0.f;
    tofSigmaX[i]             = 0.f;
    tofSigmaY[i]             = 0.f;
    tofSigmaXOffset[i]       = 0.f;
    tofSigmaYOffset[i]       = 0.f;
    tofQualityCut[i]         = 0.f;
    
    rpcSigmaXMdc[i]          = 0.f;
    rpcSigmaYMdc[i]          = 0.f;
    rpcSigmaXOffset[i]       = 0.f;
    rpcSigmaYOffset[i]       = 0.f;
    rpcQualityCut[i]         = 0.f;
  }
  status=kFALSE;
  resetInputVersions();
  changed=kFALSE;
}

void HMetaMatchPar::putParams(HParamList* l) {
  // puts all parameters to the parameter list, which is used by the io
  if (!l) return;
  l->add("richThetaMinCut",      richThetaMinCut);
  l->add("richThetaMaxCut",      richThetaMaxCut);
  l->add("richSigmaPhi",         richSigmaPhi);
  l->add("richSigmaPhiOffset",   richSigmaPhiOffset);
  l->add("richQualityCut",       richQualityCut);
  l->add("richIPUThetaMinCut",   richIPUThetaMinCut);
  l->add("richIPUThetaMaxCut",   richIPUThetaMaxCut);
  l->add("richIPUSigmaPhi",      richIPUSigmaPhi);
  l->add("richIPUSigmaPhiOffset",richIPUSigmaPhiOffset);
  l->add("richIPUQualityCut",    richIPUQualityCut);
  l->add("showerSigmaXMdc",      showerSigmaXMdc);
  l->add("showerSigmaYMdc",      showerSigmaYMdc);
  l->add("showerSigmaXOffset",   showerSigmaXOffset);
  l->add("showerSigmaYOffset",   showerSigmaYOffset);
  l->add("showerQualityCut",     showerQualityCut);
  l->add("tofSigmaX",            tofSigmaX);
  l->add("tofSigmaY",            tofSigmaY);
  l->add("tofSigmaXOffset",      tofSigmaXOffset);
  l->add("tofSigmaYOffset",      tofSigmaYOffset);
  l->add("tofQualityCut",        tofQualityCut);
    
  l->add("rpcSigmaXMdc",         rpcSigmaXMdc);
  l->add("rpcSigmaYMdc",         rpcSigmaYMdc);
  l->add("rpcSigmaXOffset",      rpcSigmaXOffset);
  l->add("rpcSigmaYOffset",      rpcSigmaYOffset);
  l->add("rpcQualityCut",        rpcQualityCut);
}

Bool_t HMetaMatchPar::getParams(HParamList* l) {
  // gets all parameters from the parameter list, which is used by the io
  if (!l) return kFALSE;
  if (!(l->fill("richThetaMinCut",      &richThetaMinCut)))       return kFALSE;
  if (!(l->fill("richThetaMaxCut",      &richThetaMaxCut)))       return kFALSE;
  if (!(l->fill("richSigmaPhi",         &richSigmaPhi)))          return kFALSE;
  if (!(l->fill("richSigmaPhiOffset",   &richSigmaPhiOffset)))    return kFALSE;
  if (!(l->fill("richQualityCut",       &richQualityCut)))        return kFALSE;
  if (!(l->fill("richIPUThetaMinCut",   &richIPUThetaMinCut)))    return kFALSE;
  if (!(l->fill("richIPUThetaMaxCut",   &richIPUThetaMaxCut)))    return kFALSE;
  if (!(l->fill("richIPUSigmaPhi",      &richIPUSigmaPhi)))       return kFALSE;
  if (!(l->fill("richIPUSigmaPhiOffset",&richIPUSigmaPhiOffset))) return kFALSE;
  if (!(l->fill("richIPUQualityCut",    &richIPUQualityCut)))     return kFALSE;  
  if (!(l->fill("showerSigmaXMdc",      &showerSigmaXMdc)))       return kFALSE;
  if (!(l->fill("showerSigmaYMdc",      &showerSigmaYMdc)))       return kFALSE;
  if (!(l->fill("showerSigmaXOffset",   &showerSigmaXOffset)))    return kFALSE;
  if (!(l->fill("showerSigmaYOffset",   &showerSigmaYOffset)))    return kFALSE;
  if (!(l->fill("showerQualityCut",     &showerQualityCut)))      return kFALSE;
  if (!(l->fill("tofSigmaX",            &tofSigmaX)))             return kFALSE;
  if (!(l->fill("tofSigmaY",            &tofSigmaY)))             return kFALSE;
  if (!(l->fill("tofSigmaXOffset",      &tofSigmaXOffset)))       return kFALSE;
  if (!(l->fill("tofSigmaYOffset",      &tofSigmaYOffset)))       return kFALSE;
  if (!(l->fill("tofQualityCut",        &tofQualityCut)))         return kFALSE;
  
  if (!(l->fill("rpcSigmaXMdc",         &rpcSigmaXMdc)))          return kFALSE;
  if (!(l->fill("rpcSigmaYMdc",         &rpcSigmaYMdc)))          return kFALSE;
  if (!(l->fill("rpcSigmaXOffset",      &rpcSigmaXOffset)))       return kFALSE;
  if (!(l->fill("rpcSigmaYOffset",      &rpcSigmaYOffset)))       return kFALSE;
  if (!(l->fill("rpcQualityCut",        &rpcQualityCut)))         return kFALSE;

  return kTRUE;
}

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

   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);
      richThetaMinCut.Streamer(R__b);
      richThetaMaxCut.Streamer(R__b);
      richSigmaPhi.Streamer(R__b);
      richSigmaPhiOffset.Streamer(R__b);
      richQualityCut.Streamer(R__b);
      richIPUThetaMinCut.Streamer(R__b);
      richIPUThetaMaxCut.Streamer(R__b);
      richIPUSigmaPhi.Streamer(R__b);
      richIPUSigmaPhiOffset.Streamer(R__b);
      richIPUQualityCut.Streamer(R__b);
      showerSigmaXMdc.Streamer(R__b);
      showerSigmaYMdc.Streamer(R__b);
      showerSigmaXOffset.Streamer(R__b);
      showerSigmaYOffset.Streamer(R__b);
      showerQualityCut.Streamer(R__b);
      tofSigmaX.Streamer(R__b);
      tofSigmaY.Streamer(R__b);
      tofSigmaXOffset.Streamer(R__b);
      tofSigmaYOffset.Streamer(R__b);
      tofQualityCut.Streamer(R__b);
      
      if(R__v > 1) {
        rpcSigmaXMdc.Streamer(R__b);   
        rpcSigmaYMdc.Streamer(R__b);   
        rpcSigmaXOffset.Streamer(R__b);
        rpcSigmaYOffset.Streamer(R__b);
        rpcQualityCut.Streamer(R__b);
      }
      
      R__b.CheckByteCount(R__s, R__c, HMetaMatchPar::IsA());
   } else {
      R__c = R__b.WriteVersion(HMetaMatchPar::IsA(), kTRUE);
      HParCond::Streamer(R__b);
      richThetaMinCut.Streamer(R__b);
      richThetaMaxCut.Streamer(R__b);
      richSigmaPhi.Streamer(R__b);
      richSigmaPhiOffset.Streamer(R__b);
      richQualityCut.Streamer(R__b);
      richIPUThetaMinCut.Streamer(R__b);
      richIPUThetaMaxCut.Streamer(R__b);
      richIPUSigmaPhi.Streamer(R__b);
      richIPUSigmaPhiOffset.Streamer(R__b);
      richIPUQualityCut.Streamer(R__b);
      showerSigmaXMdc.Streamer(R__b);
      showerSigmaYMdc.Streamer(R__b);
      showerSigmaXOffset.Streamer(R__b);
      showerSigmaYOffset.Streamer(R__b);
      showerQualityCut.Streamer(R__b);
      tofSigmaX.Streamer(R__b);
      tofSigmaY.Streamer(R__b);
      tofSigmaXOffset.Streamer(R__b);
      tofSigmaYOffset.Streamer(R__b);
      tofQualityCut.Streamer(R__b);
      
      rpcSigmaXMdc.Streamer(R__b);   
      rpcSigmaYMdc.Streamer(R__b);   
      rpcSigmaXOffset.Streamer(R__b);
      rpcSigmaYOffset.Streamer(R__b);
      rpcQualityCut.Streamer(R__b); 
      
      R__b.SetByteCount(R__c, kTRUE);
   }
}
 hmetamatchpar.cc:1
 hmetamatchpar.cc:2
 hmetamatchpar.cc:3
 hmetamatchpar.cc:4
 hmetamatchpar.cc:5
 hmetamatchpar.cc:6
 hmetamatchpar.cc:7
 hmetamatchpar.cc:8
 hmetamatchpar.cc:9
 hmetamatchpar.cc:10
 hmetamatchpar.cc:11
 hmetamatchpar.cc:12
 hmetamatchpar.cc:13
 hmetamatchpar.cc:14
 hmetamatchpar.cc:15
 hmetamatchpar.cc:16
 hmetamatchpar.cc:17
 hmetamatchpar.cc:18
 hmetamatchpar.cc:19
 hmetamatchpar.cc:20
 hmetamatchpar.cc:21
 hmetamatchpar.cc:22
 hmetamatchpar.cc:23
 hmetamatchpar.cc:24
 hmetamatchpar.cc:25
 hmetamatchpar.cc:26
 hmetamatchpar.cc:27
 hmetamatchpar.cc:28
 hmetamatchpar.cc:29
 hmetamatchpar.cc:30
 hmetamatchpar.cc:31
 hmetamatchpar.cc:32
 hmetamatchpar.cc:33
 hmetamatchpar.cc:34
 hmetamatchpar.cc:35
 hmetamatchpar.cc:36
 hmetamatchpar.cc:37
 hmetamatchpar.cc:38
 hmetamatchpar.cc:39
 hmetamatchpar.cc:40
 hmetamatchpar.cc:41
 hmetamatchpar.cc:42
 hmetamatchpar.cc:43
 hmetamatchpar.cc:44
 hmetamatchpar.cc:45
 hmetamatchpar.cc:46
 hmetamatchpar.cc:47
 hmetamatchpar.cc:48
 hmetamatchpar.cc:49
 hmetamatchpar.cc:50
 hmetamatchpar.cc:51
 hmetamatchpar.cc:52
 hmetamatchpar.cc:53
 hmetamatchpar.cc:54
 hmetamatchpar.cc:55
 hmetamatchpar.cc:56
 hmetamatchpar.cc:57
 hmetamatchpar.cc:58
 hmetamatchpar.cc:59
 hmetamatchpar.cc:60
 hmetamatchpar.cc:61
 hmetamatchpar.cc:62
 hmetamatchpar.cc:63
 hmetamatchpar.cc:64
 hmetamatchpar.cc:65
 hmetamatchpar.cc:66
 hmetamatchpar.cc:67
 hmetamatchpar.cc:68
 hmetamatchpar.cc:69
 hmetamatchpar.cc:70
 hmetamatchpar.cc:71
 hmetamatchpar.cc:72
 hmetamatchpar.cc:73
 hmetamatchpar.cc:74
 hmetamatchpar.cc:75
 hmetamatchpar.cc:76
 hmetamatchpar.cc:77
 hmetamatchpar.cc:78
 hmetamatchpar.cc:79
 hmetamatchpar.cc:80
 hmetamatchpar.cc:81
 hmetamatchpar.cc:82
 hmetamatchpar.cc:83
 hmetamatchpar.cc:84
 hmetamatchpar.cc:85
 hmetamatchpar.cc:86
 hmetamatchpar.cc:87
 hmetamatchpar.cc:88
 hmetamatchpar.cc:89
 hmetamatchpar.cc:90
 hmetamatchpar.cc:91
 hmetamatchpar.cc:92
 hmetamatchpar.cc:93
 hmetamatchpar.cc:94
 hmetamatchpar.cc:95
 hmetamatchpar.cc:96
 hmetamatchpar.cc:97
 hmetamatchpar.cc:98
 hmetamatchpar.cc:99
 hmetamatchpar.cc:100
 hmetamatchpar.cc:101
 hmetamatchpar.cc:102
 hmetamatchpar.cc:103
 hmetamatchpar.cc:104
 hmetamatchpar.cc:105
 hmetamatchpar.cc:106
 hmetamatchpar.cc:107
 hmetamatchpar.cc:108
 hmetamatchpar.cc:109
 hmetamatchpar.cc:110
 hmetamatchpar.cc:111
 hmetamatchpar.cc:112
 hmetamatchpar.cc:113
 hmetamatchpar.cc:114
 hmetamatchpar.cc:115
 hmetamatchpar.cc:116
 hmetamatchpar.cc:117
 hmetamatchpar.cc:118
 hmetamatchpar.cc:119
 hmetamatchpar.cc:120
 hmetamatchpar.cc:121
 hmetamatchpar.cc:122
 hmetamatchpar.cc:123
 hmetamatchpar.cc:124
 hmetamatchpar.cc:125
 hmetamatchpar.cc:126
 hmetamatchpar.cc:127
 hmetamatchpar.cc:128
 hmetamatchpar.cc:129
 hmetamatchpar.cc:130
 hmetamatchpar.cc:131
 hmetamatchpar.cc:132
 hmetamatchpar.cc:133
 hmetamatchpar.cc:134
 hmetamatchpar.cc:135
 hmetamatchpar.cc:136
 hmetamatchpar.cc:137
 hmetamatchpar.cc:138
 hmetamatchpar.cc:139
 hmetamatchpar.cc:140
 hmetamatchpar.cc:141
 hmetamatchpar.cc:142
 hmetamatchpar.cc:143
 hmetamatchpar.cc:144
 hmetamatchpar.cc:145
 hmetamatchpar.cc:146
 hmetamatchpar.cc:147
 hmetamatchpar.cc:148
 hmetamatchpar.cc:149
 hmetamatchpar.cc:150
 hmetamatchpar.cc:151
 hmetamatchpar.cc:152
 hmetamatchpar.cc:153
 hmetamatchpar.cc:154
 hmetamatchpar.cc:155
 hmetamatchpar.cc:156
 hmetamatchpar.cc:157
 hmetamatchpar.cc:158
 hmetamatchpar.cc:159
 hmetamatchpar.cc:160
 hmetamatchpar.cc:161
 hmetamatchpar.cc:162
 hmetamatchpar.cc:163
 hmetamatchpar.cc:164
 hmetamatchpar.cc:165
 hmetamatchpar.cc:166
 hmetamatchpar.cc:167
 hmetamatchpar.cc:168
 hmetamatchpar.cc:169
 hmetamatchpar.cc:170
 hmetamatchpar.cc:171
 hmetamatchpar.cc:172
 hmetamatchpar.cc:173
 hmetamatchpar.cc:174
 hmetamatchpar.cc:175
 hmetamatchpar.cc:176
 hmetamatchpar.cc:177
 hmetamatchpar.cc:178
 hmetamatchpar.cc:179
 hmetamatchpar.cc:180
 hmetamatchpar.cc:181
 hmetamatchpar.cc:182
 hmetamatchpar.cc:183
 hmetamatchpar.cc:184
 hmetamatchpar.cc:185
 hmetamatchpar.cc:186
 hmetamatchpar.cc:187
 hmetamatchpar.cc:188
 hmetamatchpar.cc:189
 hmetamatchpar.cc:190
 hmetamatchpar.cc:191
 hmetamatchpar.cc:192
 hmetamatchpar.cc:193
 hmetamatchpar.cc:194
 hmetamatchpar.cc:195
 hmetamatchpar.cc:196
 hmetamatchpar.cc:197
 hmetamatchpar.cc:198
 hmetamatchpar.cc:199
 hmetamatchpar.cc:200
 hmetamatchpar.cc:201
 hmetamatchpar.cc:202
 hmetamatchpar.cc:203
 hmetamatchpar.cc:204
 hmetamatchpar.cc:205
 hmetamatchpar.cc:206
 hmetamatchpar.cc:207
 hmetamatchpar.cc:208
 hmetamatchpar.cc:209
 hmetamatchpar.cc:210
 hmetamatchpar.cc:211
 hmetamatchpar.cc:212
 hmetamatchpar.cc:213
 hmetamatchpar.cc:214
 hmetamatchpar.cc:215
 hmetamatchpar.cc:216
 hmetamatchpar.cc:217
 hmetamatchpar.cc:218
 hmetamatchpar.cc:219
 hmetamatchpar.cc:220
 hmetamatchpar.cc:221
 hmetamatchpar.cc:222
 hmetamatchpar.cc:223
 hmetamatchpar.cc:224
 hmetamatchpar.cc:225
 hmetamatchpar.cc:226
 hmetamatchpar.cc:227
 hmetamatchpar.cc:228
 hmetamatchpar.cc:229
 hmetamatchpar.cc:230
 hmetamatchpar.cc:231
 hmetamatchpar.cc:232
 hmetamatchpar.cc:233
 hmetamatchpar.cc:234
 hmetamatchpar.cc:235
 hmetamatchpar.cc:236
 hmetamatchpar.cc:237
 hmetamatchpar.cc:238
 hmetamatchpar.cc:239
 hmetamatchpar.cc:240
 hmetamatchpar.cc:241
 hmetamatchpar.cc:242
 hmetamatchpar.cc:243
 hmetamatchpar.cc:244
 hmetamatchpar.cc:245
 hmetamatchpar.cc:246
 hmetamatchpar.cc:247
 hmetamatchpar.cc:248
 hmetamatchpar.cc:249
 hmetamatchpar.cc:250
 hmetamatchpar.cc:251
 hmetamatchpar.cc:252
 hmetamatchpar.cc:253
 hmetamatchpar.cc:254
 hmetamatchpar.cc:255
 hmetamatchpar.cc:256
 hmetamatchpar.cc:257
 hmetamatchpar.cc:258
 hmetamatchpar.cc:259
 hmetamatchpar.cc:260
 hmetamatchpar.cc:261
 hmetamatchpar.cc:262
 hmetamatchpar.cc:263
 hmetamatchpar.cc:264
 hmetamatchpar.cc:265
 hmetamatchpar.cc:266
 hmetamatchpar.cc:267
 hmetamatchpar.cc:268
 hmetamatchpar.cc:269
 hmetamatchpar.cc:270
 hmetamatchpar.cc:271
 hmetamatchpar.cc:272
 hmetamatchpar.cc:273
 hmetamatchpar.cc:274
 hmetamatchpar.cc:275
 hmetamatchpar.cc:276
 hmetamatchpar.cc:277
 hmetamatchpar.cc:278
 hmetamatchpar.cc:279
 hmetamatchpar.cc:280
 hmetamatchpar.cc:281
 hmetamatchpar.cc:282
 hmetamatchpar.cc:283
 hmetamatchpar.cc:284
 hmetamatchpar.cc:285
 hmetamatchpar.cc:286
 hmetamatchpar.cc:287
 hmetamatchpar.cc:288
 hmetamatchpar.cc:289
 hmetamatchpar.cc:290
 hmetamatchpar.cc:291
 hmetamatchpar.cc:292
 hmetamatchpar.cc:293
 hmetamatchpar.cc:294
 hmetamatchpar.cc:295
 hmetamatchpar.cc:296
 hmetamatchpar.cc:297
 hmetamatchpar.cc:298
 hmetamatchpar.cc:299
 hmetamatchpar.cc:300
 hmetamatchpar.cc:301
 hmetamatchpar.cc:302
 hmetamatchpar.cc:303
 hmetamatchpar.cc:304
 hmetamatchpar.cc:305
 hmetamatchpar.cc:306
 hmetamatchpar.cc:307
 hmetamatchpar.cc:308
 hmetamatchpar.cc:309
 hmetamatchpar.cc:310
 hmetamatchpar.cc:311
 hmetamatchpar.cc:312
 hmetamatchpar.cc:313
 hmetamatchpar.cc:314
 hmetamatchpar.cc:315
 hmetamatchpar.cc:316
 hmetamatchpar.cc:317
 hmetamatchpar.cc:318