Ignore:
Timestamp:
07/14/05 16:03:32 (19 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc

    r7126 r7189  
    184184//   + Float_t fPheErrUpperLimit; // Upper limit acceptance nr. phe's w.r.t. area idx mean (in sigmas)
    185185//
     186//
    186187//  ClassVersion 3:
    187188//   + Bool_t  fUseExtractorRes;  // Include extractor resolution in F-Factor method
     189//
     190//  ClassVersion 3:
     191//   +  Float_t fUnsuitablesLimit;                   // Limit for relative number of unsuitable pixels
     192//   +  Float_t fUnreliablesLimit;                   // Limit for relative number of unreliable pixels
     193//   +  Float_t fExternalNumPhes;                    // External mean number of photo-electrons set from outside
     194//   +  Float_t fExternalNumPhesRelVar;              // External rel. var. number of photo-electrons set from outside 
    188195//
    189196//////////////////////////////////////////////////////////////////////////////
     
    198205
    199206#include "MParList.h"
    200 
    201 #include "MStatusDisplay.h"
    202207
    203208#include "MCalibrationPattern.h"
     
    247252const Float_t MCalibrationChargeCalc::fgFFactorErrLimit        = 4.5;
    248253const Float_t MCalibrationChargeCalc::fgArrTimeRmsLimit        = 3.5;
     254const Float_t MCalibrationChargeCalc::fgUnsuitablesLimit       = 0.1;
     255const Float_t MCalibrationChargeCalc::fgUnreliablesLimit       = 0.3;
    249256const TString MCalibrationChargeCalc::fgNamePedestalCam = "MPedestalCam";
    250257
     
    263270//
    264271// Initializes:
    265 // - fArrTimeRmsLimit   to fgArrTimeRmsLimit
    266 // - fChargeLimit       to fgChargeLimit
    267 // - fChargeErrLimit    to fgChargeErrLimit   
    268 // - fChargeRelErrLimit to fgChargeRelErrLimit
    269 // - fFFactorErrLimit   to fgFFactorErrLimit
    270 // - fLambdaCheckLimit  to fgLambdaCheckLimit
    271 // - fLambdaErrLimit    to fgLambdaErrLimit
    272 // - fNamePedestalCam   to fgNamePedestalCam
    273 // - fPheErrLowerLimit  to fgPheErrLowerLimit
    274 // - fPheErrUpperLimit  to fgPheErrUpperLimit
    275 // - fPulserColor       to MCalibrationCam::kCT1
    276 // - fOutputPath        to "."
    277 // - fOutputFile        to "ChargeCalibStat.txt"
    278 // - flag debug         to kFALSE
     272// - fArrTimeRmsLimit     to fgArrTimeRmsLimit
     273// - fChargeLimit         to fgChargeLimit
     274// - fChargeErrLimit      to fgChargeErrLimit
     275// - fChargeRelErrLimit   to fgChargeRelErrLimit
     276// - fFFactorErrLimit     to fgFFactorErrLimit
     277// - fLambdaCheckLimit    to fgLambdaCheckLimit
     278// - fLambdaErrLimit      to fgLambdaErrLimit
     279// - fNamePedestalCam     to fgNamePedestalCam
     280// - fPheErrLowerLimit    to fgPheErrLowerLimit
     281// - fPheErrUpperLimit    to fgPheErrUpperLimit
     282// - fPulserColor         to MCalibrationCam::kCT1
     283// - fOutputPath          to "."
     284// - fOutputFile          to "ChargeCalibStat.txt"
     285// - flag debug           to kFALSE
     286// - IsUseExtractorRes    to kFALSE
     287// - IsUseExternalNumPhes to kFALSE
     288// - fExternalNumPhes     to 0.
     289// - fExternalNumPhesRelVar to 0.
    279290//
    280291// Sets all checks
     
    284295//
    285296MCalibrationChargeCalc::MCalibrationChargeCalc(const char *name, const char *title)
    286     : fUseExtractorRes(kFALSE),
    287     fGeom(NULL), fSignal(NULL), fCalibPattern(NULL), fExtractor(NULL)
     297    : fGeom(NULL), fSignal(NULL), fCalibPattern(NULL), fExtractor(NULL)
    288298{
    289299       
     
    309319  SetPheErrLowerLimit  ();
    310320  SetPheErrUpperLimit  ();
     321  SetUnsuitablesLimit  ();
     322  SetUnreliablesLimit  ();
     323  SetUseExtractorRes   ();
     324  SetUseUnreliables    ();
     325  SetUseExternalNumPhes(kFALSE);
     326 
     327  SetExternalNumPhes      ();
     328  SetExternalNumPhesRelVar();
    311329
    312330  SetCheckArrivalTimes     ();
     
    560578    }
    561579
     580  fResultFlags.Set(fGeom->GetNumAreas());
     581
    562582  return kTRUE;
    563583}
     
    777797    {
    778798
    779       const MPedestalPix     &ped = fPedestals->GetAverageArea(aidx);
     799      const MPedestalPix    &ped = fPedestals->GetAverageArea(aidx);
    780800      MCalibrationChargePix &pix = (MCalibrationChargePix&)chargecam->GetAverageArea(aidx);
     801      const MArrayI &arr         = fHCam->GetAverageAreaNum();
    781802
    782803      FinalizePedestals(ped,pix,aidx);
     804
     805      //
     806      // Correct for sqrt(number of valid pixels) in the pedestal RMS
     807      // (already done for calibration sigma in MHCalibrationCam::CalcAverageSigma()
     808      //
     809      pix.SetPedRMS(pix.GetPedRms()*TMath::Sqrt((Float_t)arr[aidx]),
     810                    pix.GetPedRmsErr()*TMath::Sqrt((Float_t)arr[aidx]));
     811      pix.SetSigma (pix.GetSigma()/pix.GetFFactorFADC2Phe());
     812
    783813      FinalizeCharges(pix, chargecam->GetAverageBadArea(aidx),"area id");
    784814      FinalizeArrivalTimes(pix, chargecam->GetAverageBadArea(aidx), "area id");
     
    847877  }
    848878
    849   //
    850   // Finalize calibration statistics
    851   //
    852   FinalizeUnsuitablePixels();
    853 
    854   chargecam->SetReadyToSave();
    855   qecam    ->SetReadyToSave();
    856   badcam   ->SetReadyToSave();
    857  
    858   if (blindcam)
    859     blindcam->SetReadyToSave();
    860   if (fPINDiode)
    861     fPINDiode->SetReadyToSave();
    862  
    863879  *fLog << inf << endl;
    864880  *fLog << GetDescriptor() << ": Fatal errors statistics:" << endl; 
     
    884900  PrintUncalibrated(MBadPixelsPix::kDeviatingNumPhes,
    885901                    "Deviating number of phes:                         ");
     902  PrintUncalibrated(MBadPixelsPix::kLoGainBlackout,
     903                    "Too many blackout events in low gain:             ");
    886904  PrintUncalibrated(MBadPixelsPix::kPreviouslyExcluded,
    887905                    "Previously excluded:                              ");
     
    906924      SetLogStream(oldlog);
    907925
    908   return kTRUE;
     926  chargecam->SetReadyToSave();
     927  qecam    ->SetReadyToSave();
     928  badcam   ->SetReadyToSave();
     929
     930  if (blindcam)
     931    blindcam->SetReadyToSave();
     932  if (fPINDiode)
     933    fPINDiode->SetReadyToSave();
     934
     935  //
     936  // Finalize calibration statistics
     937  //
     938  return FinalizeUnsuitablePixels();
    909939}
    910940
     
    10421072    }
    10431073
    1044   if (!fUseExtractorRes)
     1074  if (!IsUseExtractorRes())
    10451075    return kTRUE;
    10461076
     
    10591089    : resinphes/cal.GetMeanConvFADC2Phe();
    10601090
    1061   if (resinfadc > 1.5*cal.GetPedRms() )
    1062     {
    1063       *fLog << warn << " Extractor Resolution: " << resinfadc << " bigger than Pedestal RMS " << cal.GetPedRms() << endl;
    1064       resinfadc = cal.GetPedRms();
     1091  if (resinfadc > 3.0*cal.GetPedRms() )
     1092    {
     1093      *fLog << warn << " Extractor Resolution: " << resinfadc << " bigger than 3 Pedestal RMS "
     1094            << cal.GetPedRms() << endl;
     1095      resinfadc = 3.0*cal.GetPedRms();
    10651096    }
    10661097
     
    11521183          if (bad.IsUncalibrated( MBadPixelsPix::kChargeIsPedestal))
    11531184            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun   );
    1154  
    1155           if (bad.IsUncalibrated( MBadPixelsPix::kChargeErrNotValid ))
    1156             bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
    1157 
    1158           if (bad.IsUncalibrated( MBadPixelsPix::kChargeRelErrNotValid ))
    1159             bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
    11601185        }
    11611186     
     
    12681293      if (bad.IsUncalibrated(MBadPixelsPix::kChargeSigmaNotValid))
    12691294        continue;
    1270      
     1295
     1296      if (!IsUseUnreliables())
     1297        if (bad.IsUnsuitable(MBadPixelsPix::kUnreliableRun))
     1298          continue;
     1299
    12711300      const Float_t nphe  = pix.GetPheFFactorMethod();
    12721301      const Int_t   aidx  = (*fGeom)[i].GetAidx();
     
    13221351      if (ndf < 5)
    13231352        {
    1324           *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the number of photo-electrons "
    1325                 << "in the camera with area index: " << i << endl;
    1326           *fLog << warn << GetDescriptor() << ": Number of dof.: " << ndf << " is smaller than 5 " << endl;
    1327           *fLog << warn << GetDescriptor() << ": Will use the simple mean and rms " << endl;
    1328           delete hist;
    1329           continue;
     1353            *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the number of photo-electrons " << endl;
     1354            *fLog << " in the camera with area index: " << i << endl;
     1355            *fLog << " Number of dof.: " << ndf << " is smaller than 5 " << endl;
     1356            *fLog << " Will use the simple mean and rms " << endl;
     1357            delete hist;
     1358            SetPheFitOK(i,kFALSE);
     1359            continue;
    13301360        }
    13311361     
     
    13341364      if (prob < 0.001)
    13351365        {
    1336           *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the number of photo-electrons "
    1337                 << "in the camera with area index: " << i << endl;
    1338           *fLog << warn << GetDescriptor() << ": Fit probability " << prob
    1339                 << " is smaller than 0.001 " << endl;
    1340           *fLog << warn << GetDescriptor() << ": Will use the simple mean and rms " << endl;
    1341           delete hist;
    1342           continue;
     1366            *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the number of photo-electrons " << endl;
     1367            *fLog << " in the camera with area index: " << i << endl;
     1368            *fLog << " Fit probability " << prob << " is smaller than 0.001 " << endl;
     1369            *fLog << " Will use the simple mean and rms " << endl;
     1370            delete hist;
     1371            SetPheFitOK(i,kFALSE);
     1372            continue;
    13431373        }
    13441374     
    13451375      if (mean < 0.)
    13461376        {
    1347           *fLog << inf << GetDescriptor() << ": Fitted mean number of photo-electrons "
    1348                 << "with area idx " << i << ": " << mean << " is smaller than 0. " << endl;
    1349           *fLog << warn << GetDescriptor() << ": Will use the simple mean and rms " << endl;         
    1350           delete hist;
    1351           continue;
     1377            *fLog << inf << GetDescriptor() << ": Fitted mean number of photo-electrons " << endl;
     1378            *fLog << " with area idx " << i << ": " << mean << " is smaller than 0. " << endl;
     1379            *fLog << warn << " Will use the simple mean and rms " << endl;
     1380            SetPheFitOK(i,kFALSE);
     1381            delete hist;
     1382            continue;
    13521383        }
    13531384     
     
    13591390
    13601391      delete hist;
     1392
     1393      SetPheFitOK(i,kTRUE);
    13611394    }
    13621395
     
    13831416      if (bad.IsUncalibrated(MBadPixelsPix::kChargeSigmaNotValid))
    13841417        continue;
     1418
     1419      if (!IsUseUnreliables())
     1420        if (bad.IsUnsuitable(MBadPixelsPix::kUnreliableRun))
     1421          continue;
    13851422
    13861423      const Float_t nvar  = pix.GetPheFFactorMethodVar();
     
    17301767  MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    qecam->GetAverageArea(0);
    17311768
    1732   const Float_t avphotons   = avpix.GetPheFFactorMethod()       
     1769  if (IsDebug())
     1770    *fLog << dbginf << "External Phes: " << fExternalNumPhes
     1771          << " Internal Phes: " << avpix.GetPheFFactorMethod() << endl;
     1772
     1773  const Float_t avphotons   = ( IsUseExternalNumPhes()
     1774                                ? fExternalNumPhes
     1775                                : avpix.GetPheFFactorMethod() )
    17331776                           / qepix.GetDefaultQE(fPulserColor)
    17341777                           / qepix.GetPMTCollectionEff()
     
    17361779                           / qecam->GetPlexiglassQE();
    17371780
    1738   const Float_t avphotrelvar = avpix.GetPheFFactorMethodRelVar()
     1781  const Float_t avphotrelvar = ( IsUseExternalNumPhes()
     1782                                 ? fExternalNumPhesRelVar
     1783                                 : avpix.GetPheFFactorMethodRelVar() )
    17391784                            + qepix.GetDefaultQERelVar(fPulserColor) / fNumInnerFFactorMethodUsed
    17401785                            + qepix.GetPMTCollectionEffRelVar()
     
    18461891      if (ndf < 2)
    18471892        {
    1848           *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the F-Factor "
    1849                 << "in the camera with area index: " << i << endl;
    1850           *fLog << "Number of dof.: " << ndf << " is smaller than 2 " << endl;
    1851           *fLog << "Will use the simple mean and rms." << endl;
     1893          *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the F-Factor " << endl;
     1894          *fLog << " in the camera with area index: " << i << endl;
     1895          *fLog << " Number of dof.: " << ndf << " is smaller than 2 " << endl;
     1896          *fLog << " Will use the simple mean and rms." << endl;
    18521897          delete hist;
     1898          SetFFactorFitOK(i,kFALSE);
    18531899          continue;
    18541900        }
     
    18581904      if (prob < 0.001)
    18591905        {
    1860           *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the F-Factor "
    1861                 << "in the camera with area index: " << i << endl;
    1862           *fLog << "Fit probability " << prob
    1863                 << " is smaller than 0.001 " << endl;
    1864           *fLog << "Will use the simple mean and rms." << endl;
     1906          *fLog << warn << GetDescriptor() << ": Cannot use a Gauss fit to the F-Factor " << endl;
     1907          *fLog << " in the camera with area index: " << i << endl;
     1908          *fLog << " Fit probability " << prob << " is smaller than 0.001 " << endl;
     1909          *fLog << " Will use the simple mean and rms." << endl;
    18651910          delete hist;
    1866           continue;
     1911          SetFFactorFitOK(i,kFALSE);
     1912         continue;
    18671913        }
    18681914
    18691915      *fLog << inf << GetDescriptor() << ": Mean F-Factor "
    1870           << "with area index #" << i << ": "
    1871             << Form("%4.2f+-%4.2f",mean,sigma) << endl;
     1916          << "with area index #" << i << ": " << Form("%4.2f+-%4.2f",mean,sigma) << endl;
    18721917
    18731918      lowlim  [i] = 1.;
     
    18751920
    18761921      delete hist;
     1922
     1923      SetFFactorFitOK(i,kTRUE);
    18771924    }
    18781925 
     
    21342181// - store numbers of bad pixels of each type in fCam or fIntensCam
    21352182//
    2136 void MCalibrationChargeCalc::FinalizeUnsuitablePixels()
     2183Bool_t MCalibrationChargeCalc::FinalizeUnsuitablePixels()
    21372184{
    21382185 
     
    21432190  const Int_t nareas = fGeom->GetNumAreas();
    21442191
     2192  TArrayI suit(nareas);
     2193  TArrayI unsuit(nareas);
     2194  TArrayI unrel(nareas);
     2195
     2196  const MBadPixelsCam *badcam = fIntensBad ? (MBadPixelsCam*)fIntensBad->GetCam() : fBadPixels;
     2197  MCalibrationChargeCam *chargecam = fIntensCam ? (MCalibrationChargeCam*)fIntensCam->GetCam() : fCam;
     2198
     2199  Int_t unsuitcnt=0;
     2200  Int_t unrelcnt =0;
     2201
     2202  // Count number of succesfully calibrated pixels
     2203  for (Int_t aidx=0; aidx<nareas; aidx++)
     2204  {
     2205      suit[aidx]   = badcam->GetNumSuitable(MBadPixelsPix::kUnsuitableRun,   fGeom, aidx);
     2206      unsuit[aidx] = badcam->GetNumUnsuitable(MBadPixelsPix::kUnsuitableRun, fGeom, aidx);
     2207      unrel[aidx]  = badcam->GetNumUnsuitable(MBadPixelsPix::kUnreliableRun, fGeom, aidx);
     2208
     2209      unsuitcnt   += unsuit[aidx];
     2210      unrelcnt    += unrel[aidx];
     2211
     2212      chargecam->SetNumUnsuitable(unsuit[aidx], aidx);
     2213      chargecam->SetNumUnreliable(unrel[aidx],  aidx);
     2214  }
     2215
    21452216  TArrayI counts(nareas);
    2146 
    2147   MBadPixelsCam         *badcam    = fIntensBad
    2148     ? (MBadPixelsCam*)fIntensBad->GetCam()  : fBadPixels;
    2149   MCalibrationChargeCam *chargecam = fIntensCam
    2150     ? (MCalibrationChargeCam*)fIntensCam->GetCam()  : fCam;
    2151 
    2152   for (Int_t i=0; i<badcam->GetSize(); i++)
    2153     {
    2154       MBadPixelsPix &bad = (*badcam)[i];
    2155       if (!bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
    2156         {
     2217  for (Int_t i=0; i<chargecam->GetSize(); i++)
     2218  {
     2219      MCalibrationPix &pix = (*chargecam)[i];
     2220      if (pix.IsHiGainSaturation())
     2221      {
    21572222          const Int_t aidx = (*fGeom)[i].GetAidx();
    21582223          counts[aidx]++;
    2159         }
    2160     }
     2224      }
     2225  }
    21612226
    21622227  if (fGeom->InheritsFrom("MGeomCamMagic"))
    2163     *fLog << " " << setw(7) << "Successfully calibrated Pixels: "
    2164           << Form("%s%3i%s%3i","Inner: ",counts[0]," Outer: ",counts[1]) << endl;
    2165  
    2166   counts.Reset();
    2167 
    2168   for (Int_t i=0; i<badcam->GetSize(); i++)
    2169     {
    2170       MBadPixelsPix &bad =  (*badcam)[i];
    2171 
    2172       if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
    2173         {
    2174           const Int_t aidx = (*fGeom)[i].GetAidx();
    2175           counts[aidx]++;
    2176         }
    2177     }
    2178 
    2179   for (Int_t aidx=0; aidx<nareas; aidx++)
    2180     chargecam->SetNumUnsuitable(counts[aidx], aidx);
    2181 
    2182   if (fGeom->InheritsFrom("MGeomCamMagic"))
    2183     *fLog << " " << setw(7) << "Uncalibrated Pixels:            "
    2184           << Form("%s%3i%s%3i","Inner: ",counts[0]," Outer: ",counts[1]) << endl;
    2185 
    2186   counts.Reset();
    2187 
    2188   for (Int_t i=0; i<badcam->GetSize(); i++)
    2189     {
    2190 
    2191       MBadPixelsPix &bad = (*badcam)[i];
    2192 
    2193       if (bad.IsUnsuitable(MBadPixelsPix::kUnreliableRun))
    2194         {
    2195           const Int_t aidx = (*fGeom)[i].GetAidx();
    2196           counts[aidx]++;
    2197         }
    2198     }
    2199 
    2200   for (Int_t aidx=0; aidx<nareas; aidx++)
    2201     chargecam->SetNumUnreliable(counts[aidx], aidx);
    2202 
    2203   *fLog << " " << setw(7) << "Unreliable Pixels:              "
    2204         << Form("%s%3i%s%3i","Inner: ",counts[0]," Outer: ",counts[1]) << endl;
    2205 
     2228  {
     2229      *fLog << " Successfully calibrated Pixels: Inner: "
     2230          << Form("%3i",suit[0])   << " Outer: " << Form("%3i",suit[1])   << endl;
     2231      *fLog << " Uncalibrated Pixels:            Inner: "
     2232          << Form("%3i",unsuit[0]) << " Outer: " << Form("%3i",unsuit[1]) << endl;
     2233      *fLog << " Unreliable Pixels:              Inner: "
     2234          << Form("%3i",unrel[0])  << " Outer: " << Form("%3i",unrel[1])  << endl;
     2235      *fLog << " High-gain saturated Pixels:     Inner: "
     2236          << Form("%3i",counts[0]) << " Outer: " << Form("%3i",counts[1]) << endl;
     2237      *fLog << endl;
     2238  }
     2239
     2240  return kTRUE;
     2241
     2242  if (unsuitcnt > fUnsuitablesLimit*fGeom->GetNumPixels())
     2243  {
     2244      *fLog << err << "Number of unsuitable pixels: " << 100.*unsuitcnt/fGeom->GetNumPixels()
     2245          << "% exceeds limit of " << fUnsuitablesLimit*100 << "%" <<  endl;
     2246      return kFALSE;
     2247  }
     2248
     2249  if (unrelcnt > fUnreliablesLimit*fGeom->GetNumPixels())
     2250  {
     2251      *fLog << err << "Relative number of unreliable pixels: " << 100.*unrelcnt/fGeom->GetNumPixels()
     2252          << "% exceeds limit of " << fUnreliablesLimit*100 << "%" << endl;
     2253      return kFALSE;
     2254  }
     2255  return kTRUE;
    22062256}
    22072257
     
    22322282    }
    22332283
    2234   *fLog << " " << setw(7) << text  
    2235         << Form("%s%3i%s%3i","Inner: ",countinner," Outer: ",countouter) << endl;
     2284  *fLog << " " << setw(7) << text << "Inner: " << Form("%3i",countinner)
     2285      << " Outer: " << Form("%3i", countouter) << endl;
    22362286}
    22372287
     
    23612411      rc = kTRUE;
    23622412    }
    2363   if (IsEnvDefined(env, prefix, "UseExtractorRes", print))
    2364     {
    2365       SetUseExtractorRes(GetEnvValue(env, prefix, "UseExtractorRes", fUseExtractorRes));
     2413   if (IsEnvDefined(env, prefix, "UseExtractorRes", print))
     2414     {
     2415       SetUseExtractorRes(GetEnvValue(env, prefix, "UseExtractorRes", IsUseExtractorRes()));
    23662416      rc = kTRUE;
    23672417    }
     2418  if (IsEnvDefined(env, prefix, "UseUnreliables", print))
     2419    {
     2420      SetUseUnreliables(GetEnvValue(env, prefix, "UseUnreliables", IsUseUnreliables()));
     2421      rc = kTRUE;
     2422    }
     2423
     2424  if (IsEnvDefined(env, prefix, "UseExternalNumPhes", print))
     2425    {
     2426      SetUseExternalNumPhes(GetEnvValue(env, prefix, "UseExternalNumPhes", IsUseExternalNumPhes()));
     2427      rc = kTRUE;
     2428    }
     2429
     2430  if (IsEnvDefined(env, prefix, "UnsuitablesLimit", print))
     2431    {
     2432      SetUnsuitablesLimit(GetEnvValue(env, prefix, "UnsuitablesLimit", fUnsuitablesLimit));
     2433      rc = kTRUE;
     2434    }
     2435
     2436  if (IsEnvDefined(env, prefix, "UnreliablesLimit", print))
     2437    {
     2438       SetUnreliablesLimit(GetEnvValue(env, prefix, "UnreliablesLimit", fUnreliablesLimit));
     2439       rc = kTRUE;
     2440     }
     2441 
    23682442
    23692443  return rc;
Note: See TracChangeset for help on using the changeset viewer.