ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */
 
//-----------------------------------------------------------------------------
/// \namespace AliMUONCDB
///
/// Helper functions to experience the OCDB
///
/// They allow to read magnetic field, mapping and recoParam from OCDB
///
/// And also to generate dummy (but complete) containers for all the
/// calibration data types we have for tracker and trigger, and to write
/// them into OCDB.
///
/// For more information, please see READMEcalib
///
/// \author Laurent Aphecetche
//-----------------------------------------------------------------------------

#include "AliMUONCDB.h"

#include "AliMUON1DArray.h"
#include "AliMUON1DMap.h"
#include "AliMUON2DMap.h"
#include "AliMUON2DStoreValidator.h"
#include "AliMUONCalibParamND.h"
#include "AliMUONCalibParamNF.h"
#include "AliMUONCalibParamNI.h"
#include "AliMUONCalibrationData.h"
#include "AliMUONConstants.h"
#include "AliMUONGlobalCrateConfig.h"
#include "AliMUONLogger.h"
#include "AliMUONPadStatusMaker.h"
#include "AliMUONPadStatusMapMaker.h"
#include "AliMUONRecoParam.h"
#include "AliMUONRegionalTriggerConfig.h"
#include "AliMUONRejectList.h"
#include "AliMUONTrackerData.h"
#include "AliMUONTrackerIO.h"
#include "AliMUONTriggerEfficiencyCells.h"
#include "AliMUONTriggerLut.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONVStore.h"

#include "AliMpCDB.h"
#include "AliMpConstants.h"
#include "AliMpDEStore.h"
#include "AliMpDDLStore.h"
#include "AliMpManuStore.h"
#include "AliMpDEManager.h"
#include "AliMpDetElement.h"
#include "AliMpFiles.h"
#include "AliMpDCSNamer.h"
#include "AliMpManuIterator.h"
#include "AliMpSegmentation.h"
#include "AliMpStationType.h"
#include "AliMpVSegmentation.h"

#include "AliCodeTimer.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "AliGRPManager.h"
#include "AliDCSValue.h"
#include "AliLog.h"
#include "AliMpBusPatch.h"

#include <Riostream.h>
#include <TArrayI.h>
#include <TClass.h>
#include <TFile.h>
#include <TH1F.h>
#include <TList.h>
#include <TMap.h>
#include <TObjString.h>
#include <TROOT.h>
#include <TRandom.h>
#include <TStopwatch.h>
#include <TSystem.h>
#include <TMath.h>
#include <TGeoGlobalMagField.h>
#include <TClonesArray.h>
#include <sstream>
#include <set>

using std::endl;
using std::cout;
using std::cerr;
using std::ostringstream;
using std::ifstream;

namespace
{
  //_____________________________________________________________________________
AliMUONVStore* Create2DMap()
{
  return new AliMUON2DMap(true);
}

  //_____________________________________________________________________________
void getBoundaries(const AliMUONVStore& store, Int_t dim,
                   Float_t* xmin, Float_t* xmax)
{
  /// Assuming the store contains AliMUONVCalibParam objects, compute the
  /// limits of the value contained in the VCalibParam, for each of its dimensions
  /// xmin and xmax must be of dimension dim
  
  for ( Int_t i = 0; i < dim; ++i ) 
  {
    xmin[i]=1E30;
    xmax[i]=-1E30;
  }
  
  TIter next(store.CreateIterator());
  AliMUONVCalibParam* value;
  
  while ( ( value = dynamic_cast<AliMUONVCalibParam*>(next() ) ) )
  {
    Int_t detElemId = value->ID0();
    Int_t manuId = value->ID1();
    
    const AliMpVSegmentation* seg = 
      AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(detElemId,manuId);
        
    if (!seg) continue;
    
    for ( Int_t manuChannel = 0; manuChannel < value->Size(); ++manuChannel )
    {
      AliMpPad pad = seg->PadByLocation(manuId,manuChannel,kFALSE);
      if (!pad.IsValid()) continue;
      
      for ( Int_t i = 0; i < dim; ++i ) 
      {
        Float_t x0 = value->ValueAsFloat(manuChannel,i);
      
        xmin[i] = TMath::Min(xmin[i],x0);
        xmax[i] = TMath::Max(xmax[i],x0);
      }
    }
  }

  for ( Int_t i = 0; i < dim; ++i ) 
  {
    if ( TMath::Abs(xmin[i]-xmax[i]) < 1E-3 ) 
    {
      xmin[i] -= 1;
      xmax[i] += 1;
    }
  }
}

//_____________________________________________________________________________
Double_t GetRandom(Double_t mean, Double_t sigma, Bool_t mustBePositive)
{
  Double_t x(-1);
  if ( mustBePositive ) 
  {
    while ( x < 0 ) 
    {
      x = gRandom->Gaus(mean,sigma);
    }
  }
  else
  {
    x = gRandom->Gaus(mean,sigma);
  }
  return x;
}

}

//_____________________________________________________________________________
Bool_t AliMUONCDB::CheckOCDB(Bool_t pathOnly)
{
  /// Check that OCDB path and run number are properly set
  
  AliCDBManager* man = AliCDBManager::Instance();
  
  // first OCDB path
  if (!man->IsDefaultStorageSet()) {
    AliErrorGeneral("AliMUONCDB", "OCDB path must be properly set");
    return kFALSE;
  }
  
  // then run number if required
  if (pathOnly) return kTRUE;
  if (man->GetRun() < 0) {
    AliErrorGeneral("AliMUONCDB", "Run number must be properly set");
    return kFALSE;
  }
  
  return kTRUE;
  
}

//_____________________________________________________________________________
Bool_t AliMUONCDB::CheckMapping(Bool_t segmentationOnly)
{
  /// Check that the mapping has been loaded
  
  // first the segmentation
  if (!AliMpSegmentation::Instance(false)) {
    AliErrorGeneral("AliMUONCDB", "Mapping segmentation must be loaded first");
    return kFALSE;
  }
  
  // then the others if required
  if (segmentationOnly) return kTRUE;
  if (!AliMpDDLStore::Instance(false) || !AliMpDEStore::Instance(false) || !AliMpManuStore::Instance(false)) {
    AliErrorGeneral("AliMUONCDB", "Full mapping must be loaded first");
    return kFALSE;
  }
  
  return kTRUE;
  
}

//_____________________________________________________________________________
Bool_t AliMUONCDB::LoadField()
{
  /// Load magnetic field (existing field will be deleted).
  /// OCDB path and run number are supposed to be set.
  
  AliInfoGeneral("AliMUONCDB","Loading field map from GRP...");
  
  if (!AliMUONCDB::CheckOCDB()) return kFALSE;
  
  AliGRPManager grpMan;
  
  // make sure the old field is deleted even if it is locked
  if(TGeoGlobalMagField::Instance()->IsLocked()) delete TGeoGlobalMagField::Instance();
  
  if (!grpMan.ReadGRPEntry() || !grpMan.SetMagField()) {
    AliErrorGeneral("AliMUONCDB", "failed to load magnetic field from OCDB");
    return kFALSE;
  }
  
  return kTRUE;
  
}

//_____________________________________________________________________________
Bool_t AliMUONCDB::LoadMapping(Bool_t segmentationOnly)
{
  /// Load mapping (existing mapping will be unloaded).
  /// OCDB path and run number are supposed to be set.
  
  AliInfoGeneral("AliMUONCDB", "Loading mapping from OCDB...");
  
  if (!AliMUONCDB::CheckOCDB()) return kFALSE;
  
  // in case it has already been set
  AliMpCDB::UnloadAll();
  
  if (segmentationOnly) {
    
    if (!AliMpCDB::LoadMpSegmentation(kTRUE)){
      AliErrorGeneral("AliMUONCDB", "failed to load segmentation from OCDB");
      return kFALSE;
    }
    
  } else {
    
    if (!AliMpCDB::LoadAll(kTRUE)) {
      AliErrorGeneral("AliMUONCDB", "failed to load mapping from OCDB");
      return kFALSE;
    }
    
  }
  
  return kTRUE;
  
}

//_____________________________________________________________________________
AliMUONRecoParam* AliMUONCDB::LoadRecoParam()
{
  /// Load and return reconstruction parameters.
  /// OCDB path is supposed to be set.
  
  AliInfoGeneral("AliMUONCDB", "Loading RecoParam from OCDB...");
  
  if (!AliMUONCDB::CheckOCDB()) return 0x0;
  
  AliMUONRecoParam* recoParam = 0x0;
  AliCDBEntry* entry = AliCDBManager::Instance()->Get("MUON/Calib/RecoParam");
  
  if(entry) {
    
    // load recoParam according OCDB content (single or array)
    if (!(recoParam = dynamic_cast<AliMUONRecoParam*>(entry->GetObject()))) {
      
      TObjArray* recoParamArray = static_cast<TObjArray*>(entry->GetObject());
//      recoParamArray->SetOwner(kTRUE); // FIXME: this should be done, but is causing a problem at the end of the reco... investigate why...
      
      for(Int_t i = 0; i < recoParamArray->GetEntriesFast(); i++) {
	recoParam = static_cast<AliMUONRecoParam*>(recoParamArray->UncheckedAt(i));
	if (recoParam->IsDefault()) break;
	recoParam = 0x0;
      }
      
    }
    
  }
  
  if (!recoParam) AliErrorGeneral("AliMUONCDB", "failed to load RecoParam from OCDB");
  
  return recoParam;
  
}

//_____________________________________________________________________________
TClonesArray* AliMUONCDB::LoadAlignmentData()
{
  /// Load and return the array of alignment objects.
  
  AliInfoGeneral("AliMUONCDB", "Loading Alignemnt from OCDB...");
  
  if (!AliMUONCDB::CheckOCDB()) return 0x0;
  
  TClonesArray* alignmentArray = 0x0;
  AliCDBEntry* entry = AliCDBManager::Instance()->Get("MUON/Align/Data");
  
  if (entry) {
    // load alignement array
    alignmentArray = dynamic_cast<TClonesArray*>(entry->GetObject());
  }
  
  if (!alignmentArray) { 
    AliErrorGeneral("AliMUONCDB", "failed to load Alignemnt from OCDB");
  }  
  
  return alignmentArray;
}

//_____________________________________________________________________________
AliMUONVStore* 
AliMUONCDB::Diff(AliMUONVStore& store1, AliMUONVStore& store2, 
                 const char* opt)
{
  /// creates a store which contains store1-store2
  /// if opt="abs" the difference is absolute one,
  /// if opt="rel" then what is stored is (store1-store2)/store1
  /// if opt="percent" then what is stored is rel*100
  ///
  /// WARNING Works only for stores which holds AliMUONVCalibParam objects
  
  TString sopt(opt);
  sopt.ToUpper();
  
  if ( !sopt.Contains("ABS") && !sopt.Contains("REL") && !sopt.Contains("PERCENT") )
  {
    AliErrorGeneral("AliMUONCDB", Form("opt %s not supported. Only ABS, REL, PERCENT are",opt));
    return 0x0;
  }
  
  AliMUONVStore* d = static_cast<AliMUONVStore*>(store1.Clone());
  
  TIter next(d->CreateIterator());
  
  AliMUONVCalibParam* param;
  
  while ( ( param = dynamic_cast<AliMUONVCalibParam*>(next() ) ) )
  {
    Int_t detElemId = param->ID0();
    Int_t manuId = param->ID1();
    
    AliMUONVCalibParam* param2 = dynamic_cast<AliMUONVCalibParam*>(store2.FindObject(detElemId,manuId));
    //FIXME: this might happen. Handle it.
    if (!param2) 
    {
      cerr << "param2 is null : FIXME : this might happen !" << endl;
      delete d;
      return 0;
    }
    
    for ( Int_t i = 0; i < param->Size(); ++i )
    {
      for ( Int_t j = 0; j < param->Dimension(); ++j )
      {
        Float_t value(0);
        if ( sopt.Contains("ABS") )
        {
          value = param->ValueAsFloat(i,j) - param2->ValueAsFloat(i,j);
        }
        else if ( sopt.Contains("REL") || sopt.Contains("PERCENT") )
        {
          if ( param->ValueAsFloat(i,j) ) 
          {
            value = (param->ValueAsFloat(i,j) - param2->ValueAsFloat(i,j))/param->ValueAsFloat(i,j);
          }
          else 
          {
            continue;
          }
          if ( sopt.Contains("PERCENT") ) value *= 100.0;
        }
        param->SetValueAsFloat(i,j,value);
      }      
    }
  }
  return d;
}

//_____________________________________________________________________________
TH1** 
AliMUONCDB::Plot(const AliMUONVStore& store, const char* name, Int_t nbins)
{
  /// Make histograms of each dimension of the AliMUONVCalibParam
  /// contained inside store.
  /// It produces histograms named name_0, name_1, etc...
  
  if (!AliMUONCDB::CheckMapping(kTRUE)) return 0x0;
  
  TIter next(store.CreateIterator());
  AliMUONVCalibParam* param;
  Int_t n(0);
  const Int_t kNStations = AliMpConstants::NofTrackingChambers()/2;
  Int_t* nPerStation = new Int_t[kNStations];
  TH1** h(0x0);
  
  for ( Int_t i = 0; i < kNStations; ++i ) nPerStation[i]=0;
  
  while ( ( param = static_cast<AliMUONVCalibParam*>(next()) ) )
  {
    if (!h)
    {
      Int_t dim = param->Dimension();
      h = new TH1*[dim];
      Float_t* xmin = new Float_t[dim];
      Float_t* xmax = new Float_t[dim];
      getBoundaries(store,dim,xmin,xmax);
      
      for ( Int_t i = 0; i < dim; ++i ) 
      {
        h[i] = new TH1F(Form("%s_%d",name,i),Form("%s_%d",name,i),
                            nbins,xmin[i],xmax[i]);
        AliInfoGeneral("AliMUONCDB", Form("Created histogram %s",h[i]->GetName()));
      }
      delete [] xmin;
      delete [] xmax;
    }
    
    Int_t detElemId = param->ID0();
    Int_t manuId = param->ID1();
    Int_t station = AliMpDEManager::GetChamberId(detElemId)/2;
    
    const AliMpVSegmentation* seg = 
      AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(detElemId,manuId);
    
    if (!seg) continue;
    
    for ( Int_t manuChannel = 0; manuChannel < param->Size(); ++manuChannel )
    {
      AliMpPad pad = seg->PadByLocation(manuId,manuChannel,kFALSE);
      if (!pad.IsValid()) continue;

      ++n;
      ++nPerStation[station];
      
      for ( Int_t dim = 0; dim < param->Dimension(); ++dim ) 
      {
        h[dim]->Fill(param->ValueAsFloat(manuChannel,dim));
      }
    }
  } 
  
  for ( Int_t i = 0; i < kNStations; ++i )
  {
    AliInfoGeneral("AliMUONCDB", Form("Station %d %d ",(i+1),nPerStation[i]));
  }

  AliInfoGeneral("AliMUONCDB", Form("Number of channels = %d",n));
  
  delete[] nPerStation;
  
  return h;
}

//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakeHVStore(TMap& aliasMap, Bool_t defaultValues)
{
  /// Create a HV store
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  AliMpDCSNamer hvNamer("TRACKER");
  
  TObjArray* aliases = hvNamer.GenerateAliases();
  
  Int_t nSwitch(0);
  Int_t nChannels(0);
  
  for ( Int_t i = 0; i < aliases->GetEntries(); ++i ) 
  {
    TObjString* alias = static_cast<TObjString*>(aliases->At(i));
    TString& aliasName = alias->String();
    if ( aliasName.Contains("sw") ) 
    {
      // HV Switch (St345 only)
      TObjArray* valueSet = new TObjArray;
      valueSet->SetOwner(kTRUE);
      
      Bool_t value = kTRUE;
      
      if (!defaultValues)
      {
        Float_t r = gRandom->Uniform();
        if ( r < 0.007 ) value = kFALSE;      
      } 
      
      for ( UInt_t timeStamp = 0; timeStamp < 60*3; timeStamp += 60 )
      {
        AliDCSValue* dcsValue = new AliDCSValue(value,timeStamp);
        valueSet->Add(dcsValue);
      }
      aliasMap.Add(new TObjString(*alias),valueSet);
      ++nSwitch;
    }
    else
    {
      TObjArray* valueSet = new TObjArray;
      valueSet->SetOwner(kTRUE);
      for ( UInt_t timeStamp = 0; timeStamp < 60*15; timeStamp += 120 )
      {
        Float_t value = 1500;
        if (!defaultValues) value = GetRandom(1750,62.5,true);
        AliDCSValue* dcsValue = new AliDCSValue(value,timeStamp);
        valueSet->Add(dcsValue);
      }
      aliasMap.Add(new TObjString(*alias),valueSet);
      ++nChannels;
    }
  }
  
  delete aliases;
  
  AliInfoGeneral("AliMUONCDB", Form("%d HV channels and %d switches",nChannels,nSwitch));
  
  return nChannels+nSwitch;
}

//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakeTriggerDCSStore(TMap& aliasMap, Bool_t defaultValues)
{
  /// Create a Trigger HV and Currents store
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  AliMpDCSNamer triggerDCSNamer("TRIGGER");
  
  TObjArray* aliases = triggerDCSNamer.GenerateAliases();
  
  Int_t nChannels[2] = {0, 0};
  
  for ( Int_t i = 0; i < aliases->GetEntries(); ++i ) 
  {
    TObjString* alias = static_cast<TObjString*>(aliases->At(i));
    TString& aliasName = alias->String();

    TObjArray* valueSet = new TObjArray;
    valueSet->SetOwner(kTRUE);

    Int_t measureType = triggerDCSNamer.DCSvariableFromDCSAlias(aliasName.Data());
    if ( measureType < 0 ) {
      AliErrorGeneralStream("AliMUONCDB") 
        << "Failed to get DCS variable from an alias (trigger): "
        << aliasName.Data() << endl;
      return 0;
    }
        
    for ( UInt_t timeStamp = 0; timeStamp < 60*15; timeStamp += 120 )
    {
      Float_t value = 
	(measureType == AliMpDCSNamer::kDCSI) ? 2. : 8000.;
      if (!defaultValues) {
	switch (measureType){
	case AliMpDCSNamer::kDCSI:
	  value = GetRandom(2.,0.4,true);
	  break;
	case AliMpDCSNamer::kDCSHV:
	  value = GetRandom(8000.,16.,true);
	  break;
	}
      }
      AliDCSValue* dcsValue = new AliDCSValue(value,timeStamp);
      valueSet->Add(dcsValue);
    }
    aliasMap.Add(new TObjString(*alias),valueSet);
    ++nChannels[measureType];
  }
  
  delete aliases;
  
  AliInfoGeneral("AliMUONCDB", Form("Trigger channels I -> %i   HV -> %i",nChannels[0], nChannels[1]));
  
  return nChannels[0] + nChannels[1];
}

//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakePedestalStore(AliMUONVStore& pedestalStore, Bool_t defaultValues)
{
  /// Create a pedestal store. if defaultValues=true, ped.mean=ped.sigma=1,
  /// otherwise mean and sigma are from a gaussian (with parameters
  /// defined below by the kPedestal* constants)

  AliCodeTimerAutoGeneral("",0);
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  Int_t nchannels(0);
  Int_t nmanus(0);
  
  const Int_t kChannels(AliMpConstants::ManuNofChannels());
  
  // bending
  const Float_t kPedestalMeanMeanB(200.);
  const Float_t kPedestalMeanSigmaB(10.);
  const Float_t kPedestalSigmaMeanB(1.);
  const Float_t kPedestalSigmaSigmaB(0.2);
  
  // non bending
  const Float_t kPedestalMeanMeanNB(200.);
  const Float_t kPedestalMeanSigmaNB(10.);
  const Float_t kPedestalSigmaMeanNB(1.);
  const Float_t kPedestalSigmaSigmaNB(0.2);
  
  const Float_t kFractionOfDeadManu(0.); // within [0.,1.]

  Int_t detElemId;
  Int_t manuId;
    
  AliMpManuIterator it;
  
  while ( it.Next(detElemId,manuId) )
  {
    // skip a given fraction of manus
    if (kFractionOfDeadManu > 0. && gRandom->Uniform() < kFractionOfDeadManu) continue;
    
    ++nmanus;

    AliMUONVCalibParam* ped = 
      new AliMUONCalibParamNF(2,kChannels,detElemId,manuId,AliMUONVCalibParam::InvalidFloatValue());

    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
    
    for ( Int_t manuChannel = 0; manuChannel < kChannels; ++manuChannel )
    {
      if ( ! de->IsConnectedChannel(manuId,manuChannel) ) continue;
      
      ++nchannels;
      
      Float_t meanPedestal;
      Float_t sigmaPedestal;
      
      if ( defaultValues ) 
      {
        meanPedestal = 0.0;
        sigmaPedestal = 1.0;
      }
      else
      {
        Bool_t positive(kTRUE);
        meanPedestal = 0.0;
	
	if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) ) { // manu in non bending plane
	  
	  while ( meanPedestal == 0.0 ) // avoid strict zero 
	  {
	    meanPedestal = GetRandom(kPedestalMeanMeanNB,kPedestalMeanSigmaNB,positive);
	  }
	  sigmaPedestal = GetRandom(kPedestalSigmaMeanNB,kPedestalSigmaSigmaNB,positive);
	  
	} else { // manu in bending plane
	  
	  while ( meanPedestal == 0.0 ) // avoid strict zero 
	  {
	    meanPedestal = GetRandom(kPedestalMeanMeanB,kPedestalMeanSigmaB,positive);
	  }
	  sigmaPedestal = GetRandom(kPedestalSigmaMeanB,kPedestalSigmaSigmaB,positive);
	  
	}
	
      }
      
      ped->SetValueAsFloat(manuChannel,0,meanPedestal);
      ped->SetValueAsFloat(manuChannel,1,sigmaPedestal);
      
    }
    Bool_t ok = pedestalStore.Add(ped);
    if (!ok)
    {
      AliErrorGeneral("AliMUONCDB", Form("Could not set DetElemId=%d manuId=%d",detElemId,manuId));
    }
  }
  
  AliInfoGeneral("AliMUONCDB", Form("%d Manus and %d channels.",nmanus,nchannels));
  return nchannels;
}

//_____________________________________________________________________________
AliMUONRejectList* 
AliMUONCDB::MakeRejectListStore(Bool_t defaultValues)
{
  /// Create a reject list
  
  AliCodeTimerAutoGeneral("",0);

  AliMUONRejectList* rl = new AliMUONRejectList;
  
  if (!defaultValues)
  {
    rl->SetDetectionElementProbability(510);
    rl->SetDetectionElementProbability(508);
    return rl;
  }
  
  return rl;
}

//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakeOccupancyMapStore(AliMUONVStore& occupancyMapStore, Bool_t defaultValues)
{
  /// Create an occupancy map.
  
  AliCodeTimerAutoGeneral("",0);
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  Int_t nmanus(0);
  
  Int_t detElemId;
  Int_t manuId;
  
  AliMpManuIterator it;
  
  Int_t nevents(1000);
  
  while ( it.Next(detElemId,manuId) )
  {
    ++nmanus;
    
    AliMUONVCalibParam* occupancy = new AliMUONCalibParamND(5,1,detElemId,manuId,0);
    
    Double_t occ = 0.0;

    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
    
    Int_t numberOfChannelsInManu = de->NofChannelsInManu(manuId);
    
    if (!defaultValues) occ = gRandom->Rndm(1);

    Double_t sumn = occ*nevents;
    
    occupancy->SetValueAsFloat(0,0,sumn); 
    occupancy->SetValueAsFloat(0,1,sumn);
    occupancy->SetValueAsFloat(0,2,sumn);
    occupancy->SetValueAsInt(0,3,numberOfChannelsInManu);
    occupancy->SetValueAsInt(0,4,nevents);
    
    Bool_t ok = occupancyMapStore.Add(occupancy);
    if (!ok)
    {
      AliErrorGeneral("AliMUONCDB", Form("Could not set DetElemId=%d manuId=%d",detElemId,manuId));
    }
  }
  
  return nmanus;
}

//_____________________________________________________________________________
Int_t
AliMUONCDB::MakeCapacitanceStore(AliMUONVStore& capaStore, const char* file)
{
  /// Read the capacitance values from file and append them to the capaStore
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  return AliMUONTrackerIO::ReadCapacitances(file,capaStore);
}

//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakeCapacitanceStore(AliMUONVStore& capaStore, Bool_t defaultValues)
{
  /// Create a capacitance store. if defaultValues=true, all capa are 1.0,
  /// otherwise they are from a gaussian with parameters defined in the
  /// kCapa* constants below.

  AliCodeTimerAutoGeneral("",0);
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  Int_t nchannels(0);
  Int_t nmanus(0);
  Int_t nmanusOK(0); // manus for which we got the serial number
    
  const Float_t kCapaMean(0.3);
  const Float_t kCapaSigma(0.1);
  const Float_t kInjectionGainMean(3);
  const Float_t kInjectionGainSigma(1);

  Int_t detElemId;
  Int_t manuId;
  
  AliMpManuIterator it;
  
  while ( it.Next(detElemId,manuId) )
  {
    ++nmanus;
    
    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId); 
    Int_t serialNumber = AliMpManuStore::Instance()->GetManuSerial(detElemId, manuId);
      
    if ( serialNumber <= 0 ) continue;
    
    ++nmanusOK;
    
    AliMUONVCalibParam* capa = static_cast<AliMUONVCalibParam*>(capaStore.FindObject(serialNumber));
    
    if (!capa)
    {
      capa = new AliMUONCalibParamNF(2,AliMpConstants::ManuNofChannels(),serialNumber,0,1.0);
      Bool_t ok = capaStore.Add(capa);
      if (!ok)
      {
        AliErrorGeneral("AliMUONCDB", Form("Could not set serialNumber=%d manuId=%d",serialNumber,manuId));
      }      
    }
    
    for ( Int_t manuChannel = 0; manuChannel < capa->Size(); ++manuChannel )
    {
      if ( ! de->IsConnectedChannel(manuId,manuChannel) ) continue;
      
      ++nchannels;
      
      Float_t capaValue;
      Float_t injectionGain;
      
      if ( defaultValues ) 
      {
        capaValue = 1.0;
        injectionGain = 1.0;
      }
      else
      {
        capaValue = GetRandom(kCapaMean,kCapaSigma,kTRUE);
        injectionGain = GetRandom(kInjectionGainMean,kInjectionGainSigma,kTRUE);
      }
      capa->SetValueAsFloat(manuChannel,0,capaValue);
      capa->SetValueAsFloat(manuChannel,1,injectionGain);
    }
  }
  
  Float_t percent = 0;
  if ( nmanus ) percent = 100*nmanusOK/nmanus;
  AliInfoGeneral("AliMUONCDB", Form("%5d manus with serial number (out of %5d manus = %3.0f%%)",
               nmanusOK,nmanus,percent));
  AliInfoGeneral("AliMUONCDB", Form("%5d channels",nchannels));
  if ( percent < 100 ) 
  {
    AliWarningGeneral("AliMUONCDB", "Did not get all serial numbers. capaStore is incomplete !!!!");
  }
  return nchannels;
  
}

//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakeGainStore(AliMUONVStore& gainStore, Bool_t defaultValues)
{  
  /// Create a gain store. if defaultValues=true, all gains set so that
  /// charge = (adc-ped)
  ///
  /// otherwise parameters are taken from gaussians with parameters 
  /// defined in the k* constants below.
  
  AliCodeTimerAutoGeneral("",0);
  
  if (!AliMUONCDB::CheckMapping()) return 0;
  
  Int_t nchannels(0);
  Int_t nmanus(0);
    
  const Int_t kSaturation(3000);
  const Double_t kA0Mean(1.2);
  const Double_t kA0Sigma(0.1);
  const Double_t kA1Mean(1E-5);
  const Double_t kA1Sigma(1E-6);
  const Double_t kQualMean(0xFF);
  const Double_t kQualSigma(0x10);
  const Int_t kThresMean(1600);
  const Int_t kThresSigma(100);
  
  Int_t detElemId;
  Int_t manuId;
  
  AliMpManuIterator it;
  
  while ( it.Next(detElemId,manuId) )
  {
    ++nmanus;

    AliMUONVCalibParam* gain = 
      new AliMUONCalibParamNF(5,AliMpConstants::ManuNofChannels(),
                              detElemId,
                              manuId,
                              AliMUONVCalibParam::InvalidFloatValue());

    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);

    for ( Int_t manuChannel = 0; manuChannel < gain->Size(); ++manuChannel )
    {
      if ( ! de->IsConnectedChannel(manuId,manuChannel) ) continue;
      
      ++nchannels;
      
      if ( defaultValues ) 
      {
        gain->SetValueAsFloat(manuChannel,0,1.0);
        gain->SetValueAsFloat(manuChannel,1,0.0);
        gain->SetValueAsInt(manuChannel,2,4095); 
        gain->SetValueAsInt(manuChannel,3,1);
        gain->SetValueAsInt(manuChannel,4,kSaturation);
      }
      else
      {
        Bool_t positive(kTRUE);
        gain->SetValueAsFloat(manuChannel,0,GetRandom(kA0Mean,kA0Sigma,positive));
        gain->SetValueAsFloat(manuChannel,1,GetRandom(kA1Mean,kA1Sigma,!positive));
        gain->SetValueAsInt(manuChannel,2,(Int_t)TMath::Nint(GetRandom(kThresMean,kThresSigma,positive)));
        gain->SetValueAsInt(manuChannel,3,(Int_t)TMath::Nint(GetRandom(kQualMean,kQualSigma,positive)));
        gain->SetValueAsInt(manuChannel,4,kSaturation);        
      }
      
    }
    Bool_t ok = gainStore.Add(gain);
    if (!ok)
    {
      AliErrorGeneral("AliMUONCDB", Form("Could not set DetElemId=%d manuId=%d",detElemId,manuId));
    }
  }
  
  AliInfoGeneral("AliMUONCDB", Form("%d Manus and %d channels.",nmanus,nchannels));
  return nchannels;
}

//_____________________________________________________________________________
Int_t
AliMUONCDB::MakeLocalTriggerMaskStore(AliMUONVStore& localBoardMasks)
{
  /// Generate local trigger masks store. All masks are set to FFFF
  
  AliCodeTimerAutoGeneral("",0);
  
  Int_t ngenerated(0);
  // Generate fake mask values for all localboards and put that into
  // one single container (localBoardMasks)
  for ( Int_t i = 1; i <= AliMpConstants::TotalNofLocalBoards(); ++i )
  {
    AliMUONVCalibParam* localBoard = new AliMUONCalibParamNI(1,8,i,0,0);
    for ( Int_t x = 0; x < 2; ++x )
    {
      for ( Int_t y = 0; y < 4; ++y )
      {
        Int_t index = x*4+y;
        localBoard->SetValueAsInt(index,0,0xFFFF);
        ++ngenerated;
      }
    }
    localBoardMasks.Add(localBoard);
  }
  return ngenerated;
}

//_____________________________________________________________________________
Int_t
AliMUONCDB::MakeRegionalTriggerConfigStore(AliMUONRegionalTriggerConfig& rtm)
{
  /// Make a regional trigger config store. Mask is set to FFFF for each local board (Ch.F.)
  
  AliCodeTimerAutoGeneral("",0);
  
  if ( ! rtm.ReadData(AliMpFiles::LocalTriggerBoardMapping()) ) {
    AliErrorGeneral("AliMUONCDB", "Error when reading from mapping file");
    return 0;
  }
    
  return rtm.GetNofTriggerCrates();  
}


//_____________________________________________________________________________
Int_t 
AliMUONCDB::MakeGlobalTriggerConfigStore(AliMUONGlobalCrateConfig& gtm)
{
  /// Make a global trigger config store. All masks (disable) set to 0x00 for each Darc board (Ch.F.)
  
  AliCodeTimerAutoGeneral("",0);
  
  return gtm.ReadData(AliMpFiles::GlobalTriggerBoardMapping());
}


//_____________________________________________________________________________
AliMUONTriggerLut* 
AliMUONCDB::MakeTriggerLUT(const char* file)
{
  /// Make a triggerlut object, from a file.
  
  AliCodeTimerAutoGeneral("",0);
  
  AliMUONTriggerLut* lut = new AliMUONTriggerLut;
  lut->ReadFromFile(file);
  return lut;
}

//_____________________________________________________________________________
AliMUONTriggerEfficiencyCells*
AliMUONCDB::MakeTriggerEfficiency(const char* file)
{
  /// Make a trigger efficiency object from a file.
  
  AliCodeTimerAutoGeneral("",0);
  
  return new AliMUONTriggerEfficiencyCells(file);
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteToCDB(const char* calibpath, TObject* object, 
                       Int_t startRun, Int_t endRun, 
                       const char* filename)
{
  /// Write a given object to OCDB
  
  TString comment(gSystem->ExpandPathName(filename));
  
  WriteToCDB(object, calibpath, startRun, endRun, comment.Data());
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteToCDB(const char* calibpath, TObject* object, 
                       Int_t startRun, Int_t endRun, Bool_t defaultValues)
{
  /// Write a given object to OCDB
  
  TString comment;
  if ( defaultValues ) comment += "Test with default values";
  else comment += "Test with random values";
  
  WriteToCDB(object, calibpath, startRun, endRun, comment.Data());
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteToCDB(TObject* object, const char* calibpath, Int_t startRun, Int_t endRun,
		       const char* comment, const char* responsible)
{
  /// Write a given object to OCDB
  
  if (!AliMUONCDB::CheckOCDB(kTRUE)) return;
  
  AliCDBId id(calibpath,startRun,endRun);
  AliCDBMetaData md;
  md.SetAliRootVersion(gROOT->GetVersion());
  md.SetComment(comment);
  md.SetResponsible(responsible);
  AliCDBManager::Instance()->Put(object,id,&md);
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteLocalTriggerMasks(Int_t startRun, Int_t endRun)
{  
  /// Write local trigger masks to OCDB
  
  AliMUONVStore* ltm = new AliMUON1DArray(AliMpConstants::TotalNofLocalBoards()+1);
  Int_t ngenerated = MakeLocalTriggerMaskStore(*ltm);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  if (ngenerated>0)
  {
    WriteToCDB("MUON/Calib/LocalTriggerBoardMasks",ltm,startRun,endRun,true);
  }
  delete ltm;
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteRegionalTriggerConfig(Int_t startRun, Int_t endRun)
{  
  /// Write regional trigger masks to OCDB
  
  AliMUONRegionalTriggerConfig* rtm = new AliMUONRegionalTriggerConfig();
  Int_t ngenerated = MakeRegionalTriggerConfigStore(*rtm);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  if (ngenerated>0)
  {
    WriteToCDB("MUON/Calib/RegionalTriggerConfig",rtm,startRun,endRun,true);
  }
  delete rtm;
}


//_____________________________________________________________________________
void
AliMUONCDB::WriteGlobalTriggerConfig(Int_t startRun, Int_t endRun)
{  
  /// Write global trigger masks to OCDB
  
  AliMUONGlobalCrateConfig* gtm = new AliMUONGlobalCrateConfig();

  Int_t ngenerated = MakeGlobalTriggerConfigStore(*gtm);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  if (ngenerated>0)
  {
    WriteToCDB("MUON/Calib/GlobalTriggerCrateConfig",gtm,startRun,endRun,true);
  }
  delete gtm;
}


//_____________________________________________________________________________
void
AliMUONCDB::WriteTriggerLut(Int_t startRun, Int_t endRun)
{  
  /// Write trigger LUT to OCDB
  
  AliMUONTriggerLut* lut = MakeTriggerLUT();
  if (lut)
  {
    WriteToCDB("MUON/Calib/TriggerLut",lut,startRun,endRun,true);
  }
  delete lut;
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteTriggerEfficiency(Int_t startRun, Int_t endRun)
{  
  /// Write trigger efficiency to OCDB
  
  AliMUONTriggerEfficiencyCells* eff = MakeTriggerEfficiency();
  if (eff)
  {
    WriteToCDB("MUON/Calib/TriggerEfficiency",eff,startRun,endRun,true);
  }
  delete eff;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteHV(Bool_t defaultValues,
                    Int_t startRun, Int_t endRun)
{
  /// generate HV values (either cste = 1500 V) if defaultValues=true or random
  /// if defaultValues=false, see makeHVStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  TMap* hvStore = new TMap;
  Int_t ngenerated = MakeHVStore(*hvStore,defaultValues);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  if (ngenerated>0)
  {
    WriteToCDB("MUON/Calib/HV",hvStore,startRun,endRun,defaultValues);
  }
  delete hvStore;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteTriggerDCS(Bool_t defaultValues,
                    Int_t startRun, Int_t endRun)
{
  /// generate Trigger HV and current values (either const if defaultValues=true or random
  /// if defaultValues=false, see makeTriggerDCSStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  TMap* triggerDCSStore = new TMap;
  Int_t ngenerated = MakeTriggerDCSStore(*triggerDCSStore,defaultValues);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  if (ngenerated>0)
  {
    WriteToCDB("MUON/Calib/TriggerDCS",triggerDCSStore,startRun,endRun,defaultValues);
  }
  delete triggerDCSStore;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WritePedestals(Bool_t defaultValues,
                           Int_t startRun, Int_t endRun)
{
  /// generate pedestal values (either 0 if defaultValues=true or random
  /// if defaultValues=false, see makePedestalStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  AliMUONVStore* pedestalStore = Create2DMap();
  Int_t ngenerated = MakePedestalStore(*pedestalStore,defaultValues);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  WriteToCDB("MUON/Calib/Pedestals",pedestalStore,startRun,endRun,defaultValues);
  delete pedestalStore;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteOccupancyMap(Bool_t defaultValues,
                              Int_t startRun, Int_t endRun)
{
  /// generate occupancy map values (either empty one if defaultValues=true, or
  /// random one, see MakeOccupancyMapStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  AliMUONVStore* occupancyMapStore = Create2DMap();
  Int_t ngenerated = MakeOccupancyMapStore(*occupancyMapStore,defaultValues);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  WriteToCDB("MUON/Calib/OccupancyMap",occupancyMapStore,startRun,endRun,defaultValues);
  delete occupancyMapStore;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteRejectList(Bool_t defaultValues,
                              Int_t startRun, Int_t endRun)
{
  /// generate reject list values (either empty one if defaultValues=true, or
  /// random one, see MakeRejectListStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  AliMUONRejectList* rl = MakeRejectListStore(defaultValues);
  WriteToCDB("MUON/Calib/RejectList",rl,startRun,endRun,defaultValues);
  delete rl;
}


//_____________________________________________________________________________
void 
AliMUONCDB::WriteGains(Bool_t defaultValues,
                       Int_t startRun, Int_t endRun)
{
  /// generate gain values (either 1 if defaultValues=true or random
  /// if defaultValues=false, see makeGainStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  AliMUONVStore* gainStore = Create2DMap();
  Int_t ngenerated = MakeGainStore(*gainStore,defaultValues);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));  
  WriteToCDB("MUON/Calib/Gains",gainStore,startRun,endRun,defaultValues);
  delete gainStore;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteCapacitances(const char* filename,
                              Int_t startRun, Int_t endRun)
{
  /// read manu capacitance and injection gain values from file 
  /// and store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  AliMUONVStore* capaStore = new AliMUON1DMap(16828);
  Int_t ngenerated = MakeCapacitanceStore(*capaStore,filename);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  if ( ngenerated > 0 ) 
  {
    WriteToCDB("MUON/Calib/Capacitances",capaStore,startRun,endRun,filename);
  }
  delete capaStore;
}

//_____________________________________________________________________________
void 
AliMUONCDB::WriteCapacitances(Bool_t defaultValues,
                              Int_t startRun, Int_t endRun)
{
  /// generate manu capacitance values (either 1 if defaultValues=true or random
  /// if defaultValues=false, see makeCapacitanceStore) and
  /// store them into CDB located at cdbpath, with a validity period
  /// ranging from startRun to endRun
  
  AliMUONVStore* capaStore = new AliMUON1DMap(16828);
  Int_t ngenerated = MakeCapacitanceStore(*capaStore,defaultValues);
  AliInfoGeneral("AliMUONCDB", Form("Ngenerated = %d",ngenerated));
  WriteToCDB("MUON/Calib/Capacitances",capaStore,startRun,endRun,defaultValues);
  delete capaStore;
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteTrigger(Bool_t defaultValues, Int_t startRun, Int_t endRun)
{
  /// Writes all Trigger related calibration to CDB
  WriteTriggerDCS(defaultValues,startRun,endRun);
  WriteLocalTriggerMasks(startRun,endRun);
  WriteRegionalTriggerConfig(startRun,endRun);
  WriteGlobalTriggerConfig(startRun,endRun);
  WriteTriggerLut(startRun,endRun);
  WriteTriggerEfficiency(startRun,endRun);
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteConfig(Int_t startRun, Int_t endRun)
{
  /// Write complete tracker configuration to OCDB
  ostringstream lines;
  TIter next(AliMpDDLStore::Instance()->CreateBusPatchIterator());
  AliMpBusPatch* bp;
  while ( ( bp = static_cast<AliMpBusPatch*>(next()) ) )
  {
    for (Int_t imanu = 0; imanu < bp->GetNofManus(); ++imanu) 
    {
      lines << bp->GetId() << " " << bp->GetManuId(imanu) << endl;
    }
  }
  
  AliMUON2DMap config(kTRUE);
  
  AliMUONTrackerIO::DecodeConfig(lines.str().c_str(),config);
  
  WriteToCDB("MUON/Calib/Config",&config,startRun,endRun,kTRUE);
}

//_____________________________________________________________________________
void
AliMUONCDB::WriteTracker(Bool_t defaultValues, Int_t startRun, Int_t endRun)
{
  /// Writes all Tracker related calibration to CDB
  WriteHV(defaultValues,startRun,endRun);
  WritePedestals(defaultValues,startRun,endRun);
  WriteGains(defaultValues,startRun,endRun);
  WriteCapacitances(defaultValues,startRun,endRun);
  WriteOccupancyMap(defaultValues,startRun,endRun);
  WriteRejectList(defaultValues,startRun,endRun);
  WriteConfig(startRun,endRun);
}

//_____________________________________________________________________________
void 
AliMUONCDB::ShowCapacitances()
{
  /// Show briefly the number of capa values we have in the OCDB,
  /// and the list of manu that are actually in the config and for which
  /// we miss the capa (if any).
  
  if (!AliMUONCDB::CheckOCDB()) return;
  
  AliMUONCDB::LoadMapping();
  
  if (!AliMUONCDB::CheckMapping()) return;
  
  AliCDBEntry* e = AliCDBManager::Instance()->Get("MUON/Calib/Config");
  
  if (!e) return ;
  
  AliMUONVStore* config = static_cast<AliMUONVStore*>(e->GetObject());
  
  e = AliCDBManager::Instance()->Get("MUON/Calib/Capacitances");
  
  if (!e) return;
  
  AliMUONVStore* capacitances = static_cast<AliMUONVStore*>(e->GetObject());
  
  AliInfoGeneral("ShowCapacitances",Form("%d capacitances are in OCDB",capacitances->GetSize()));
  
  TIter nextManu(config->CreateIterator());
  AliMUONVCalibParam* param;
  
  while ( ( param = static_cast<AliMUONVCalibParam*>(nextManu()) ) )
  {
    Int_t detElemId = param->ID0();
    Int_t manuId = param->ID1();
    
    Int_t serialNumber 
    = AliMpManuStore::Instance()->GetManuSerial(detElemId, manuId);
    
    if (serialNumber<0)
    {
      AliErrorGeneral("ShowCapacitances",Form("Did not find serial for DE %04d MANUID %04d",detElemId,manuId));
    }
    else
    {
      AliMUONVCalibParam* capa = static_cast<AliMUONVCalibParam*>(capacitances->FindObject(serialNumber));
      if (!capa)
      {
        AliErrorGeneral("ShowCapacitances",Form("Did not find capacitance for DE %04d MANUID %04d SERIAL %d",detElemId,manuId,serialNumber));
      }
    }
  }
  
}

//_____________________________________________________________________________
void 
AliMUONCDB::ShowConfig(Bool_t withStatusMap)
{  
  /// Dumps the current tracker configuration, i.e. number and identity of missing buspatches
  /// If statusMap is true, will also take into account the status map to report the number
  /// of good channels
  
  if (!AliMUONCDB::CheckOCDB()) return;
  
  AliMUONCDB::LoadMapping();
  
  if (!AliMUONCDB::CheckMapping()) return;
  
  AliCDBEntry* e = AliCDBManager::Instance()->Get("MUON/Calib/Config");
  
  if (!e) return ;
  
  AliMUONVStore* config = static_cast<AliMUONVStore*>(e->GetObject());
  
  AliMUONPadStatusMapMaker* statusMapMaker(0x0);
  AliMUONCalibrationData* cd(0x0);
  AliMUONPadStatusMaker* statusMaker(0x0);

  if ( withStatusMap ) 
  {
    cd = new AliMUONCalibrationData(AliCDBManager::Instance()->GetRun());
  
    statusMaker = new AliMUONPadStatusMaker(*cd);

    AliMUONRecoParam* recoParam = AliMUONCDB::LoadRecoParam();
  
    if (!recoParam)
    {
      AliErrorGeneral("AliMUONCDB::ShowConfig","Cannot get recoParams from OCDB !");
      return;
    }
    
    statusMaker->SetLimits(*recoParam);
  
    UInt_t mask = recoParam->PadGoodnessMask();

    delete recoParam;
    
    const Bool_t deferredInitialization = kFALSE;
  
    statusMapMaker = new AliMUONPadStatusMapMaker(*cd,mask,deferredInitialization);
  }
  
  TIter nextManu(config->CreateIterator());
  AliMUONVCalibParam* param;
  
  AliMpExMap buspatches;
  
  while ( ( param = static_cast<AliMUONVCalibParam*>(nextManu()) ) )
  {
    Int_t detElemId = param->ID0();
    Int_t manuId = param->ID1();
    Int_t busPatchId = AliMpDDLStore::Instance()->GetBusPatchId(detElemId,manuId);
    if ( buspatches.GetValue(busPatchId) == 0x0 ) 
    {      
      buspatches.Add(busPatchId,new TObjString(Form("BP%04d",busPatchId)));
    }
  }

  TArrayI removed(buspatches.GetSize());

  TIter next(AliMpDDLStore::Instance()->CreateBusPatchIterator());
  AliMpBusPatch* bp;
  Int_t n(0);
  Int_t nok(0);
  Int_t nremoved(0);
  
  // accounting of bus patches first
  
  while ( ( bp = static_cast<AliMpBusPatch*>(next())))
  {
    if ( buspatches.GetValue(bp->GetId()) )
    {
      ++nok;
    }
    else
    {
      removed.SetAt(bp->GetId(),nremoved++);
    }
  }
  
  // accounting of channels
  
  AliMpManuIterator it;

  Int_t totalNumberOfChannels(0);
  Int_t removedChannels(0);
  Int_t badChannels(0);
  Int_t badAndRemovedChannels(0);
  Int_t badOrRemovedChannels(0);
  
  Int_t detElemId, manuId;
  
  while ( it.Next(detElemId,manuId) )
  {
    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
    for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i )
    {
      Int_t busPatchId = AliMpDDLStore::Instance()->GetBusPatchId(detElemId,manuId);
      
      if ( de->IsConnectedChannel(manuId,i) )
      {
        ++totalNumberOfChannels;
        Bool_t badBusPatch = ( buspatches.GetValue(busPatchId) == 0x0 );
        
        if ( withStatusMap ) 
        {
          Bool_t badChannel = ( ( statusMapMaker->StatusMap(detElemId,manuId,i) & AliMUONPadStatusMapMaker::SelfDeadMask() ) != 0);
          if ( badChannel ) ++badChannels;
          if ( badBusPatch && badChannel ) ++badAndRemovedChannels;
          if ( badBusPatch || badChannel ) ++badOrRemovedChannels;          
        }
      
        if ( badBusPatch) ++removedChannels;
      }
    }
  }
  
  
  Int_t* indices = new Int_t[nremoved];
  
  TMath::Sort(nremoved,removed.GetArray(),indices,kFALSE);
  
  for ( Int_t i = 0; i < nremoved; ++i ) 
  {
    Int_t busPatchId = removed[indices[i]];
    bp = AliMpDDLStore::Instance()->GetBusPatch(busPatchId);
    bp->Print();
  }
  
  delete[] indices;  
  
  cout << endl;
  cout << Form("Bus patches n=%3d nok=%3d nremoved=%3d",n,nok,nremoved) << endl;

  cout << Form("Channels n=%6d nremoved=%6d bad=%6d bad and removed=%6d bad or removed=%6d",
               totalNumberOfChannels,removedChannels,badChannels,badAndRemovedChannels,badOrRemovedChannels) << endl;
  
  if (totalNumberOfChannels>0)
  {
    cout << Form("Percentage of readout channels %5.1f %%",removedChannels*100.0/totalNumberOfChannels) << endl;
    if ( withStatusMap )
    {
      cout << Form("Percentage of non useable channels (bad or removed) %5.1f %%",
                   badOrRemovedChannels*100.0/totalNumberOfChannels) << endl;
    }
  }
  
  
  delete statusMapMaker;
  delete cd;
  delete statusMaker;  
}

//______________________________________________________________________________
void AliMUONCDB::ReadIntegers(const char* filename, std::vector<int>& integers)
{
  /// Read integers from filename, where integers are either
  /// separated by "," or by return carriage
  ifstream in(gSystem->ExpandPathName(filename));
  int i;
  
  std::set<int> runset;
  
  char line[10000];
  
  in.getline(line,10000,'\n');
  
  TString sline(line);
  
  if (sline.Contains(","))
  {
    TObjArray* a = sline.Tokenize(",");
    TIter next(a);
    TObjString* s;
    while ( ( s = static_cast<TObjString*>(next()) ) )
    {
      runset.insert(s->String().Atoi());
    }
    delete a;
  }
  else
  {
    runset.insert(sline.Atoi());
    
    while ( in >> i )
    {
      runset.insert(i);
    }
  }
  
  for ( std::set<int>::const_iterator it = runset.begin(); it != runset.end(); ++it ) 
  {
    integers.push_back((*it)); 
  }
  
  std::sort(integers.begin(),integers.end());
}

//______________________________________________________________________________
void AliMUONCDB::ShowFaultyBusPatches(const char* runlist, double occLimit,
                                      const char* outputBaseName,
                                      const char* ocdbPath)
{
  /// Shows the list of bus patches above a given occupancy limit,
  /// for each run in the runlist
  
  AliLog::GetRootLogger()->SetGlobalLogLevel(AliLog::kError);
  
  //  AliLog::SetPrintType(AliLog::kInfo,kFALSE);
  //  AliLog::SetPrintType(AliLog::kWarning,kFALSE);
  //  gErrorIgnoreLevel=kError; // to avoid all the TAlienFile::Open messages...
  
  AliCDBManager* man = AliCDBManager::Instance();
  
  man->SetDefaultStorage(ocdbPath);
  
  Bool_t first(kTRUE);
  
  std::vector<int> runnumbers;
  
  ReadIntegers(runlist,runnumbers);
  
  AliMUON2DMap bpValues(kFALSE);
  
  std::ofstream outfile(Form("%s.txt",outputBaseName));
  
  for ( unsigned int i = 0 ; i < runnumbers.size(); ++i )
  {
    int runNumber = runnumbers[i];
    
    man->SetRun(runNumber);
    
    if ( first ) 
    {
      AliMpCDB::LoadAll();  
      first = kFALSE;
    }
    
    AliCDBEntry* e = man->Get("MUON/Calib/OccupancyMap",runNumber);
    
    if (!e)
    {
      AliErrorGeneral("AliMUONCDB::ShowFaultyBusPatches",
                      Form("Could not get OccupancyMap for run %09d",runNumber));
      continue;
    }
    
    AliMUONVStore* occmap = static_cast<AliMUONVStore*>(e->GetObject());
    
    AliMUONTrackerData td("occ","occ",*occmap);
    
    TIter nextBP(AliMpDDLStore::Instance()->CreateBusPatchIterator());
    AliMpBusPatch* bp;
    std::set<int> buspatches;
    Double_t sumn = 1000.0;
    
    while ( ( bp = static_cast<AliMpBusPatch*>(nextBP()) ) )
    {      
      Double_t occ = td.BusPatch(bp->GetId(),2);
      
      if (occ>occLimit) 
      {
        buspatches.insert(bp->GetId());
        
        AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(bpValues.FindObject(bp->GetId()));
        
        if (!param)
        {
          param = new AliMUONCalibParamND(5, 1, bp->GetId(), 0);
          bpValues.Add(param);
          
          Int_t detElemId = AliMpDDLStore::Instance()->GetDEfromBus(bp->GetId());
          AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
          
          Int_t nchannels(0);
          
          for ( Int_t imanu = 0; imanu < bp->GetNofManus(); ++imanu ) 
          {
            Int_t manuId = bp->GetManuId(imanu);
            nchannels += de->NofChannelsInManu(manuId);
          }
          
          param->SetValueAsDouble(0,2,sumn);
          param->SetValueAsDouble(0,3,nchannels);
          param->SetValueAsDouble(0,4,1);          
        }
        
        Double_t sumw = sumn*(param->ValueAsDouble(0)/sumn+1.0/runnumbers.size());
        Double_t sumw2 = 0.0; //(sumn-1)*ey*ey+sumw*sumw/sumn;
        
        param->SetValueAsDouble(0,0,sumw);
        param->SetValueAsDouble(0,1,sumw2);
        
      }
    }
    
    outfile << Form("RUN %09d",runNumber);
    
    for ( std::set<int>::const_iterator bit = buspatches.begin(); bit != buspatches.end(); ++bit )
    {
      outfile << Form(" %4d",*bit);
    }
    outfile << endl;
  }
  
  outfile.close();
  
  const char* name = "BPfailureRate";
  
  AliMUONTrackerData* mpData = new AliMUONTrackerData(name,name,bpValues,2);
  mpData->SetDimensionName(0,name);
  
  TFile f(Form("%s.root",outputBaseName),"recreate");
  mpData->Write();
  f.Close();
  
  cout << Form("Results are in %s.txt and %s.root",outputBaseName,outputBaseName) << endl;
  
  gSystem->Exec(Form("cat %s.txt",outputBaseName));
  
}

//______________________________________________________________________________
void AliMUONCDB::CheckHV(Int_t runNumber, Int_t verbose)
{
  /// Check the HV values in OCDB for a given run
  
  TList messages;
  messages.SetOwner(kTRUE);
  
  Bool_t patched(kTRUE);
  
  if (!AliCDBManager::Instance()->IsDefaultStorageSet())
  {
    AliCDBManager::Instance()->SetDefaultStorage("raw://");
  }

  AliCDBManager::Instance()->SetRun(runNumber);

  LoadMapping();
  
  AliMUONCalibrationData::CreateHV(runNumber,0,patched,&messages);
  
  AliMUONCalibrationData cd(runNumber,true);
  
  AliMUONPadStatusMaker statusMaker(cd);
  
  AliMUONRecoParam* rp = AliMUONCDB::LoadRecoParam();
  
  if (!rp)
  {
    AliErrorGeneral("AliMUONCDB::CheckHV","Could not get RecoParam !!!");
    return;
  }
  
  statusMaker.SetLimits(*rp);
  
  TIter next(&messages);
  TObjString* s;
  AliMpDCSNamer hvNamer("TRACKER");
  AliMUONLogger log;
  
  while ( ( s = static_cast<TObjString*>(next()) ) )
  {
    TObjArray* a = s->String().Tokenize(":");
    
    TString name(static_cast<TObjString*>(a->At(0))->String());
    
    if ( name.Contains("sw") || name.Contains("SUMMARY") ) {delete a; continue;}
    
    Int_t index = hvNamer.DCSIndexFromDCSAlias(name.Data());
    
    Int_t detElemId = hvNamer.DetElemIdFromDCSAlias(name.Data());
    
    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
    
    if (!de)
    {
      AliErrorGeneral("AliMUONCDB::CheckHV",Form("Could not get detElemId from dcsAlias %s",name.Data()));
      delete a;
      continue;
    }
    
    Int_t manuId;
    
    if ( index >= 0 )
    {
      const AliMpArrayI* array = de->ManusForHV(index);
      manuId = array->GetValue(0);
    }
    else
      
    {
      AliMpBusPatch* bp = AliMpDDLStore::Instance()->GetBusPatch(de->GetBusPatchId(0));
      
      manuId = bp->GetManuId(0);
    }
    
    Int_t status = statusMaker.HVStatus(detElemId,manuId);
    
    log.Log(AliMUONPadStatusMaker::AsString(status).Data());
    
    s->String() += Form(" (DE %4d) ",detElemId);
    s->String() += AliMUONPadStatusMaker::AsString(status).Data();
    
    delete a;
  }    
  
  TIter nextMessage(&messages);
  TObjString* msg;
  
  while ( ( msg = static_cast<TObjString*>(nextMessage()) ) )
  {
    if ( verbose > 0 || msg->String().Contains("SUMMARY") )
    {
      AliInfoGeneral("AliMUONCDB::CheckHV",Form("RUN %09d HVchannel %s",runNumber,msg->String().Data()));
    }
  }
  
  TString lmsg;
  Int_t occurance;
  TString totalLog;
  
  while (log.Next(lmsg,occurance))
  {
    totalLog += Form("%s(%d)",lmsg.Data(),occurance);
    totalLog += " | ";
  }

  AliInfoGeneral("AliMUONCDB::CheckHV",Form("RUN %09d %s",runNumber,totalLog.Data()));

  // one last loop to get the list of problematic HV channels
  nextMessage.Reset();
  
  while ( ( msg = static_cast<TObjString*>(nextMessage()) ) )
  {
    if ( msg->String().Contains("HV ") )
    {
      AliInfoGeneral("AliMUONCDB::CheckHV",Form("     Problem at %s",msg->String().Data()));      
    }
  }
   
  AliCDBManager::Instance()->ClearCache();
}


 AliMUONCDB.cxx:1
 AliMUONCDB.cxx:2
 AliMUONCDB.cxx:3
 AliMUONCDB.cxx:4
 AliMUONCDB.cxx:5
 AliMUONCDB.cxx:6
 AliMUONCDB.cxx:7
 AliMUONCDB.cxx:8
 AliMUONCDB.cxx:9
 AliMUONCDB.cxx:10
 AliMUONCDB.cxx:11
 AliMUONCDB.cxx:12
 AliMUONCDB.cxx:13
 AliMUONCDB.cxx:14
 AliMUONCDB.cxx:15
 AliMUONCDB.cxx:16
 AliMUONCDB.cxx:17
 AliMUONCDB.cxx:18
 AliMUONCDB.cxx:19
 AliMUONCDB.cxx:20
 AliMUONCDB.cxx:21
 AliMUONCDB.cxx:22
 AliMUONCDB.cxx:23
 AliMUONCDB.cxx:24
 AliMUONCDB.cxx:25
 AliMUONCDB.cxx:26
 AliMUONCDB.cxx:27
 AliMUONCDB.cxx:28
 AliMUONCDB.cxx:29
 AliMUONCDB.cxx:30
 AliMUONCDB.cxx:31
 AliMUONCDB.cxx:32
 AliMUONCDB.cxx:33
 AliMUONCDB.cxx:34
 AliMUONCDB.cxx:35
 AliMUONCDB.cxx:36
 AliMUONCDB.cxx:37
 AliMUONCDB.cxx:38
 AliMUONCDB.cxx:39
 AliMUONCDB.cxx:40
 AliMUONCDB.cxx:41
 AliMUONCDB.cxx:42
 AliMUONCDB.cxx:43
 AliMUONCDB.cxx:44
 AliMUONCDB.cxx:45
 AliMUONCDB.cxx:46
 AliMUONCDB.cxx:47
 AliMUONCDB.cxx:48
 AliMUONCDB.cxx:49
 AliMUONCDB.cxx:50
 AliMUONCDB.cxx:51
 AliMUONCDB.cxx:52
 AliMUONCDB.cxx:53
 AliMUONCDB.cxx:54
 AliMUONCDB.cxx:55
 AliMUONCDB.cxx:56
 AliMUONCDB.cxx:57
 AliMUONCDB.cxx:58
 AliMUONCDB.cxx:59
 AliMUONCDB.cxx:60
 AliMUONCDB.cxx:61
 AliMUONCDB.cxx:62
 AliMUONCDB.cxx:63
 AliMUONCDB.cxx:64
 AliMUONCDB.cxx:65
 AliMUONCDB.cxx:66
 AliMUONCDB.cxx:67
 AliMUONCDB.cxx:68
 AliMUONCDB.cxx:69
 AliMUONCDB.cxx:70
 AliMUONCDB.cxx:71
 AliMUONCDB.cxx:72
 AliMUONCDB.cxx:73
 AliMUONCDB.cxx:74
 AliMUONCDB.cxx:75
 AliMUONCDB.cxx:76
 AliMUONCDB.cxx:77
 AliMUONCDB.cxx:78
 AliMUONCDB.cxx:79
 AliMUONCDB.cxx:80
 AliMUONCDB.cxx:81
 AliMUONCDB.cxx:82
 AliMUONCDB.cxx:83
 AliMUONCDB.cxx:84
 AliMUONCDB.cxx:85
 AliMUONCDB.cxx:86
 AliMUONCDB.cxx:87
 AliMUONCDB.cxx:88
 AliMUONCDB.cxx:89
 AliMUONCDB.cxx:90
 AliMUONCDB.cxx:91
 AliMUONCDB.cxx:92
 AliMUONCDB.cxx:93
 AliMUONCDB.cxx:94
 AliMUONCDB.cxx:95
 AliMUONCDB.cxx:96
 AliMUONCDB.cxx:97
 AliMUONCDB.cxx:98
 AliMUONCDB.cxx:99
 AliMUONCDB.cxx:100
 AliMUONCDB.cxx:101
 AliMUONCDB.cxx:102
 AliMUONCDB.cxx:103
 AliMUONCDB.cxx:104
 AliMUONCDB.cxx:105
 AliMUONCDB.cxx:106
 AliMUONCDB.cxx:107
 AliMUONCDB.cxx:108
 AliMUONCDB.cxx:109
 AliMUONCDB.cxx:110
 AliMUONCDB.cxx:111
 AliMUONCDB.cxx:112
 AliMUONCDB.cxx:113
 AliMUONCDB.cxx:114
 AliMUONCDB.cxx:115
 AliMUONCDB.cxx:116
 AliMUONCDB.cxx:117
 AliMUONCDB.cxx:118
 AliMUONCDB.cxx:119
 AliMUONCDB.cxx:120
 AliMUONCDB.cxx:121
 AliMUONCDB.cxx:122
 AliMUONCDB.cxx:123
 AliMUONCDB.cxx:124
 AliMUONCDB.cxx:125
 AliMUONCDB.cxx:126
 AliMUONCDB.cxx:127
 AliMUONCDB.cxx:128
 AliMUONCDB.cxx:129
 AliMUONCDB.cxx:130
 AliMUONCDB.cxx:131
 AliMUONCDB.cxx:132
 AliMUONCDB.cxx:133
 AliMUONCDB.cxx:134
 AliMUONCDB.cxx:135
 AliMUONCDB.cxx:136
 AliMUONCDB.cxx:137
 AliMUONCDB.cxx:138
 AliMUONCDB.cxx:139
 AliMUONCDB.cxx:140
 AliMUONCDB.cxx:141
 AliMUONCDB.cxx:142
 AliMUONCDB.cxx:143
 AliMUONCDB.cxx:144
 AliMUONCDB.cxx:145
 AliMUONCDB.cxx:146
 AliMUONCDB.cxx:147
 AliMUONCDB.cxx:148
 AliMUONCDB.cxx:149
 AliMUONCDB.cxx:150
 AliMUONCDB.cxx:151
 AliMUONCDB.cxx:152
 AliMUONCDB.cxx:153
 AliMUONCDB.cxx:154
 AliMUONCDB.cxx:155
 AliMUONCDB.cxx:156
 AliMUONCDB.cxx:157
 AliMUONCDB.cxx:158
 AliMUONCDB.cxx:159
 AliMUONCDB.cxx:160
 AliMUONCDB.cxx:161
 AliMUONCDB.cxx:162
 AliMUONCDB.cxx:163
 AliMUONCDB.cxx:164
 AliMUONCDB.cxx:165
 AliMUONCDB.cxx:166
 AliMUONCDB.cxx:167
 AliMUONCDB.cxx:168
 AliMUONCDB.cxx:169
 AliMUONCDB.cxx:170
 AliMUONCDB.cxx:171
 AliMUONCDB.cxx:172
 AliMUONCDB.cxx:173
 AliMUONCDB.cxx:174
 AliMUONCDB.cxx:175
 AliMUONCDB.cxx:176
 AliMUONCDB.cxx:177
 AliMUONCDB.cxx:178
 AliMUONCDB.cxx:179
 AliMUONCDB.cxx:180
 AliMUONCDB.cxx:181
 AliMUONCDB.cxx:182
 AliMUONCDB.cxx:183
 AliMUONCDB.cxx:184
 AliMUONCDB.cxx:185
 AliMUONCDB.cxx:186
 AliMUONCDB.cxx:187
 AliMUONCDB.cxx:188
 AliMUONCDB.cxx:189
 AliMUONCDB.cxx:190
 AliMUONCDB.cxx:191
 AliMUONCDB.cxx:192
 AliMUONCDB.cxx:193
 AliMUONCDB.cxx:194
 AliMUONCDB.cxx:195
 AliMUONCDB.cxx:196
 AliMUONCDB.cxx:197
 AliMUONCDB.cxx:198
 AliMUONCDB.cxx:199
 AliMUONCDB.cxx:200
 AliMUONCDB.cxx:201
 AliMUONCDB.cxx:202
 AliMUONCDB.cxx:203
 AliMUONCDB.cxx:204
 AliMUONCDB.cxx:205
 AliMUONCDB.cxx:206
 AliMUONCDB.cxx:207
 AliMUONCDB.cxx:208
 AliMUONCDB.cxx:209
 AliMUONCDB.cxx:210
 AliMUONCDB.cxx:211
 AliMUONCDB.cxx:212
 AliMUONCDB.cxx:213
 AliMUONCDB.cxx:214
 AliMUONCDB.cxx:215
 AliMUONCDB.cxx:216
 AliMUONCDB.cxx:217
 AliMUONCDB.cxx:218
 AliMUONCDB.cxx:219
 AliMUONCDB.cxx:220
 AliMUONCDB.cxx:221
 AliMUONCDB.cxx:222
 AliMUONCDB.cxx:223
 AliMUONCDB.cxx:224
 AliMUONCDB.cxx:225
 AliMUONCDB.cxx:226
 AliMUONCDB.cxx:227
 AliMUONCDB.cxx:228
 AliMUONCDB.cxx:229
 AliMUONCDB.cxx:230
 AliMUONCDB.cxx:231
 AliMUONCDB.cxx:232
 AliMUONCDB.cxx:233
 AliMUONCDB.cxx:234
 AliMUONCDB.cxx:235
 AliMUONCDB.cxx:236
 AliMUONCDB.cxx:237
 AliMUONCDB.cxx:238
 AliMUONCDB.cxx:239
 AliMUONCDB.cxx:240
 AliMUONCDB.cxx:241
 AliMUONCDB.cxx:242
 AliMUONCDB.cxx:243
 AliMUONCDB.cxx:244
 AliMUONCDB.cxx:245
 AliMUONCDB.cxx:246
 AliMUONCDB.cxx:247
 AliMUONCDB.cxx:248
 AliMUONCDB.cxx:249
 AliMUONCDB.cxx:250
 AliMUONCDB.cxx:251
 AliMUONCDB.cxx:252
 AliMUONCDB.cxx:253
 AliMUONCDB.cxx:254
 AliMUONCDB.cxx:255
 AliMUONCDB.cxx:256
 AliMUONCDB.cxx:257
 AliMUONCDB.cxx:258
 AliMUONCDB.cxx:259
 AliMUONCDB.cxx:260
 AliMUONCDB.cxx:261
 AliMUONCDB.cxx:262
 AliMUONCDB.cxx:263
 AliMUONCDB.cxx:264
 AliMUONCDB.cxx:265
 AliMUONCDB.cxx:266
 AliMUONCDB.cxx:267
 AliMUONCDB.cxx:268
 AliMUONCDB.cxx:269
 AliMUONCDB.cxx:270
 AliMUONCDB.cxx:271
 AliMUONCDB.cxx:272
 AliMUONCDB.cxx:273
 AliMUONCDB.cxx:274
 AliMUONCDB.cxx:275
 AliMUONCDB.cxx:276
 AliMUONCDB.cxx:277
 AliMUONCDB.cxx:278
 AliMUONCDB.cxx:279
 AliMUONCDB.cxx:280
 AliMUONCDB.cxx:281
 AliMUONCDB.cxx:282
 AliMUONCDB.cxx:283
 AliMUONCDB.cxx:284
 AliMUONCDB.cxx:285
 AliMUONCDB.cxx:286
 AliMUONCDB.cxx:287
 AliMUONCDB.cxx:288
 AliMUONCDB.cxx:289
 AliMUONCDB.cxx:290
 AliMUONCDB.cxx:291
 AliMUONCDB.cxx:292
 AliMUONCDB.cxx:293
 AliMUONCDB.cxx:294
 AliMUONCDB.cxx:295
 AliMUONCDB.cxx:296
 AliMUONCDB.cxx:297
 AliMUONCDB.cxx:298
 AliMUONCDB.cxx:299
 AliMUONCDB.cxx:300
 AliMUONCDB.cxx:301
 AliMUONCDB.cxx:302
 AliMUONCDB.cxx:303
 AliMUONCDB.cxx:304
 AliMUONCDB.cxx:305
 AliMUONCDB.cxx:306
 AliMUONCDB.cxx:307
 AliMUONCDB.cxx:308
 AliMUONCDB.cxx:309
 AliMUONCDB.cxx:310
 AliMUONCDB.cxx:311
 AliMUONCDB.cxx:312
 AliMUONCDB.cxx:313
 AliMUONCDB.cxx:314
 AliMUONCDB.cxx:315
 AliMUONCDB.cxx:316
 AliMUONCDB.cxx:317
 AliMUONCDB.cxx:318
 AliMUONCDB.cxx:319
 AliMUONCDB.cxx:320
 AliMUONCDB.cxx:321
 AliMUONCDB.cxx:322
 AliMUONCDB.cxx:323
 AliMUONCDB.cxx:324
 AliMUONCDB.cxx:325
 AliMUONCDB.cxx:326
 AliMUONCDB.cxx:327
 AliMUONCDB.cxx:328
 AliMUONCDB.cxx:329
 AliMUONCDB.cxx:330
 AliMUONCDB.cxx:331
 AliMUONCDB.cxx:332
 AliMUONCDB.cxx:333
 AliMUONCDB.cxx:334
 AliMUONCDB.cxx:335
 AliMUONCDB.cxx:336
 AliMUONCDB.cxx:337
 AliMUONCDB.cxx:338
 AliMUONCDB.cxx:339
 AliMUONCDB.cxx:340
 AliMUONCDB.cxx:341
 AliMUONCDB.cxx:342
 AliMUONCDB.cxx:343
 AliMUONCDB.cxx:344
 AliMUONCDB.cxx:345
 AliMUONCDB.cxx:346
 AliMUONCDB.cxx:347
 AliMUONCDB.cxx:348
 AliMUONCDB.cxx:349
 AliMUONCDB.cxx:350
 AliMUONCDB.cxx:351
 AliMUONCDB.cxx:352
 AliMUONCDB.cxx:353
 AliMUONCDB.cxx:354
 AliMUONCDB.cxx:355
 AliMUONCDB.cxx:356
 AliMUONCDB.cxx:357
 AliMUONCDB.cxx:358
 AliMUONCDB.cxx:359
 AliMUONCDB.cxx:360
 AliMUONCDB.cxx:361
 AliMUONCDB.cxx:362
 AliMUONCDB.cxx:363
 AliMUONCDB.cxx:364
 AliMUONCDB.cxx:365
 AliMUONCDB.cxx:366
 AliMUONCDB.cxx:367
 AliMUONCDB.cxx:368
 AliMUONCDB.cxx:369
 AliMUONCDB.cxx:370
 AliMUONCDB.cxx:371
 AliMUONCDB.cxx:372
 AliMUONCDB.cxx:373
 AliMUONCDB.cxx:374
 AliMUONCDB.cxx:375
 AliMUONCDB.cxx:376
 AliMUONCDB.cxx:377
 AliMUONCDB.cxx:378
 AliMUONCDB.cxx:379
 AliMUONCDB.cxx:380
 AliMUONCDB.cxx:381
 AliMUONCDB.cxx:382
 AliMUONCDB.cxx:383
 AliMUONCDB.cxx:384
 AliMUONCDB.cxx:385
 AliMUONCDB.cxx:386
 AliMUONCDB.cxx:387
 AliMUONCDB.cxx:388
 AliMUONCDB.cxx:389
 AliMUONCDB.cxx:390
 AliMUONCDB.cxx:391
 AliMUONCDB.cxx:392
 AliMUONCDB.cxx:393
 AliMUONCDB.cxx:394
 AliMUONCDB.cxx:395
 AliMUONCDB.cxx:396
 AliMUONCDB.cxx:397
 AliMUONCDB.cxx:398
 AliMUONCDB.cxx:399
 AliMUONCDB.cxx:400
 AliMUONCDB.cxx:401
 AliMUONCDB.cxx:402
 AliMUONCDB.cxx:403
 AliMUONCDB.cxx:404
 AliMUONCDB.cxx:405
 AliMUONCDB.cxx:406
 AliMUONCDB.cxx:407
 AliMUONCDB.cxx:408
 AliMUONCDB.cxx:409
 AliMUONCDB.cxx:410
 AliMUONCDB.cxx:411
 AliMUONCDB.cxx:412
 AliMUONCDB.cxx:413
 AliMUONCDB.cxx:414
 AliMUONCDB.cxx:415
 AliMUONCDB.cxx:416
 AliMUONCDB.cxx:417
 AliMUONCDB.cxx:418
 AliMUONCDB.cxx:419
 AliMUONCDB.cxx:420
 AliMUONCDB.cxx:421
 AliMUONCDB.cxx:422
 AliMUONCDB.cxx:423
 AliMUONCDB.cxx:424
 AliMUONCDB.cxx:425
 AliMUONCDB.cxx:426
 AliMUONCDB.cxx:427
 AliMUONCDB.cxx:428
 AliMUONCDB.cxx:429
 AliMUONCDB.cxx:430
 AliMUONCDB.cxx:431
 AliMUONCDB.cxx:432
 AliMUONCDB.cxx:433
 AliMUONCDB.cxx:434
 AliMUONCDB.cxx:435
 AliMUONCDB.cxx:436
 AliMUONCDB.cxx:437
 AliMUONCDB.cxx:438
 AliMUONCDB.cxx:439
 AliMUONCDB.cxx:440
 AliMUONCDB.cxx:441
 AliMUONCDB.cxx:442
 AliMUONCDB.cxx:443
 AliMUONCDB.cxx:444
 AliMUONCDB.cxx:445
 AliMUONCDB.cxx:446
 AliMUONCDB.cxx:447
 AliMUONCDB.cxx:448
 AliMUONCDB.cxx:449
 AliMUONCDB.cxx:450
 AliMUONCDB.cxx:451
 AliMUONCDB.cxx:452
 AliMUONCDB.cxx:453
 AliMUONCDB.cxx:454
 AliMUONCDB.cxx:455
 AliMUONCDB.cxx:456
 AliMUONCDB.cxx:457
 AliMUONCDB.cxx:458
 AliMUONCDB.cxx:459
 AliMUONCDB.cxx:460
 AliMUONCDB.cxx:461
 AliMUONCDB.cxx:462
 AliMUONCDB.cxx:463
 AliMUONCDB.cxx:464
 AliMUONCDB.cxx:465
 AliMUONCDB.cxx:466
 AliMUONCDB.cxx:467
 AliMUONCDB.cxx:468
 AliMUONCDB.cxx:469
 AliMUONCDB.cxx:470
 AliMUONCDB.cxx:471
 AliMUONCDB.cxx:472
 AliMUONCDB.cxx:473
 AliMUONCDB.cxx:474
 AliMUONCDB.cxx:475
 AliMUONCDB.cxx:476
 AliMUONCDB.cxx:477
 AliMUONCDB.cxx:478
 AliMUONCDB.cxx:479
 AliMUONCDB.cxx:480
 AliMUONCDB.cxx:481
 AliMUONCDB.cxx:482
 AliMUONCDB.cxx:483
 AliMUONCDB.cxx:484
 AliMUONCDB.cxx:485
 AliMUONCDB.cxx:486
 AliMUONCDB.cxx:487
 AliMUONCDB.cxx:488
 AliMUONCDB.cxx:489
 AliMUONCDB.cxx:490
 AliMUONCDB.cxx:491
 AliMUONCDB.cxx:492
 AliMUONCDB.cxx:493
 AliMUONCDB.cxx:494
 AliMUONCDB.cxx:495
 AliMUONCDB.cxx:496
 AliMUONCDB.cxx:497
 AliMUONCDB.cxx:498
 AliMUONCDB.cxx:499
 AliMUONCDB.cxx:500
 AliMUONCDB.cxx:501
 AliMUONCDB.cxx:502
 AliMUONCDB.cxx:503
 AliMUONCDB.cxx:504
 AliMUONCDB.cxx:505
 AliMUONCDB.cxx:506
 AliMUONCDB.cxx:507
 AliMUONCDB.cxx:508
 AliMUONCDB.cxx:509
 AliMUONCDB.cxx:510
 AliMUONCDB.cxx:511
 AliMUONCDB.cxx:512
 AliMUONCDB.cxx:513
 AliMUONCDB.cxx:514
 AliMUONCDB.cxx:515
 AliMUONCDB.cxx:516
 AliMUONCDB.cxx:517
 AliMUONCDB.cxx:518
 AliMUONCDB.cxx:519
 AliMUONCDB.cxx:520
 AliMUONCDB.cxx:521
 AliMUONCDB.cxx:522
 AliMUONCDB.cxx:523
 AliMUONCDB.cxx:524
 AliMUONCDB.cxx:525
 AliMUONCDB.cxx:526
 AliMUONCDB.cxx:527
 AliMUONCDB.cxx:528
 AliMUONCDB.cxx:529
 AliMUONCDB.cxx:530
 AliMUONCDB.cxx:531
 AliMUONCDB.cxx:532
 AliMUONCDB.cxx:533
 AliMUONCDB.cxx:534
 AliMUONCDB.cxx:535
 AliMUONCDB.cxx:536
 AliMUONCDB.cxx:537
 AliMUONCDB.cxx:538
 AliMUONCDB.cxx:539
 AliMUONCDB.cxx:540
 AliMUONCDB.cxx:541
 AliMUONCDB.cxx:542
 AliMUONCDB.cxx:543
 AliMUONCDB.cxx:544
 AliMUONCDB.cxx:545
 AliMUONCDB.cxx:546
 AliMUONCDB.cxx:547
 AliMUONCDB.cxx:548
 AliMUONCDB.cxx:549
 AliMUONCDB.cxx:550
 AliMUONCDB.cxx:551
 AliMUONCDB.cxx:552
 AliMUONCDB.cxx:553
 AliMUONCDB.cxx:554
 AliMUONCDB.cxx:555
 AliMUONCDB.cxx:556
 AliMUONCDB.cxx:557
 AliMUONCDB.cxx:558
 AliMUONCDB.cxx:559
 AliMUONCDB.cxx:560
 AliMUONCDB.cxx:561
 AliMUONCDB.cxx:562
 AliMUONCDB.cxx:563
 AliMUONCDB.cxx:564
 AliMUONCDB.cxx:565
 AliMUONCDB.cxx:566
 AliMUONCDB.cxx:567
 AliMUONCDB.cxx:568
 AliMUONCDB.cxx:569
 AliMUONCDB.cxx:570
 AliMUONCDB.cxx:571
 AliMUONCDB.cxx:572
 AliMUONCDB.cxx:573
 AliMUONCDB.cxx:574
 AliMUONCDB.cxx:575
 AliMUONCDB.cxx:576
 AliMUONCDB.cxx:577
 AliMUONCDB.cxx:578
 AliMUONCDB.cxx:579
 AliMUONCDB.cxx:580
 AliMUONCDB.cxx:581
 AliMUONCDB.cxx:582
 AliMUONCDB.cxx:583
 AliMUONCDB.cxx:584
 AliMUONCDB.cxx:585
 AliMUONCDB.cxx:586
 AliMUONCDB.cxx:587
 AliMUONCDB.cxx:588
 AliMUONCDB.cxx:589
 AliMUONCDB.cxx:590
 AliMUONCDB.cxx:591
 AliMUONCDB.cxx:592
 AliMUONCDB.cxx:593
 AliMUONCDB.cxx:594
 AliMUONCDB.cxx:595
 AliMUONCDB.cxx:596
 AliMUONCDB.cxx:597
 AliMUONCDB.cxx:598
 AliMUONCDB.cxx:599
 AliMUONCDB.cxx:600
 AliMUONCDB.cxx:601
 AliMUONCDB.cxx:602
 AliMUONCDB.cxx:603
 AliMUONCDB.cxx:604
 AliMUONCDB.cxx:605
 AliMUONCDB.cxx:606
 AliMUONCDB.cxx:607
 AliMUONCDB.cxx:608
 AliMUONCDB.cxx:609
 AliMUONCDB.cxx:610
 AliMUONCDB.cxx:611
 AliMUONCDB.cxx:612
 AliMUONCDB.cxx:613
 AliMUONCDB.cxx:614
 AliMUONCDB.cxx:615
 AliMUONCDB.cxx:616
 AliMUONCDB.cxx:617
 AliMUONCDB.cxx:618
 AliMUONCDB.cxx:619
 AliMUONCDB.cxx:620
 AliMUONCDB.cxx:621
 AliMUONCDB.cxx:622
 AliMUONCDB.cxx:623
 AliMUONCDB.cxx:624
 AliMUONCDB.cxx:625
 AliMUONCDB.cxx:626
 AliMUONCDB.cxx:627
 AliMUONCDB.cxx:628
 AliMUONCDB.cxx:629
 AliMUONCDB.cxx:630
 AliMUONCDB.cxx:631
 AliMUONCDB.cxx:632
 AliMUONCDB.cxx:633
 AliMUONCDB.cxx:634
 AliMUONCDB.cxx:635
 AliMUONCDB.cxx:636
 AliMUONCDB.cxx:637
 AliMUONCDB.cxx:638
 AliMUONCDB.cxx:639
 AliMUONCDB.cxx:640
 AliMUONCDB.cxx:641
 AliMUONCDB.cxx:642
 AliMUONCDB.cxx:643
 AliMUONCDB.cxx:644
 AliMUONCDB.cxx:645
 AliMUONCDB.cxx:646
 AliMUONCDB.cxx:647
 AliMUONCDB.cxx:648
 AliMUONCDB.cxx:649
 AliMUONCDB.cxx:650
 AliMUONCDB.cxx:651
 AliMUONCDB.cxx:652
 AliMUONCDB.cxx:653
 AliMUONCDB.cxx:654
 AliMUONCDB.cxx:655
 AliMUONCDB.cxx:656
 AliMUONCDB.cxx:657
 AliMUONCDB.cxx:658
 AliMUONCDB.cxx:659
 AliMUONCDB.cxx:660
 AliMUONCDB.cxx:661
 AliMUONCDB.cxx:662
 AliMUONCDB.cxx:663
 AliMUONCDB.cxx:664
 AliMUONCDB.cxx:665
 AliMUONCDB.cxx:666
 AliMUONCDB.cxx:667
 AliMUONCDB.cxx:668
 AliMUONCDB.cxx:669
 AliMUONCDB.cxx:670
 AliMUONCDB.cxx:671
 AliMUONCDB.cxx:672
 AliMUONCDB.cxx:673
 AliMUONCDB.cxx:674
 AliMUONCDB.cxx:675
 AliMUONCDB.cxx:676
 AliMUONCDB.cxx:677
 AliMUONCDB.cxx:678
 AliMUONCDB.cxx:679
 AliMUONCDB.cxx:680
 AliMUONCDB.cxx:681
 AliMUONCDB.cxx:682
 AliMUONCDB.cxx:683
 AliMUONCDB.cxx:684
 AliMUONCDB.cxx:685
 AliMUONCDB.cxx:686
 AliMUONCDB.cxx:687
 AliMUONCDB.cxx:688
 AliMUONCDB.cxx:689
 AliMUONCDB.cxx:690
 AliMUONCDB.cxx:691
 AliMUONCDB.cxx:692
 AliMUONCDB.cxx:693
 AliMUONCDB.cxx:694
 AliMUONCDB.cxx:695
 AliMUONCDB.cxx:696
 AliMUONCDB.cxx:697
 AliMUONCDB.cxx:698
 AliMUONCDB.cxx:699
 AliMUONCDB.cxx:700
 AliMUONCDB.cxx:701
 AliMUONCDB.cxx:702
 AliMUONCDB.cxx:703
 AliMUONCDB.cxx:704
 AliMUONCDB.cxx:705
 AliMUONCDB.cxx:706
 AliMUONCDB.cxx:707
 AliMUONCDB.cxx:708
 AliMUONCDB.cxx:709
 AliMUONCDB.cxx:710
 AliMUONCDB.cxx:711
 AliMUONCDB.cxx:712
 AliMUONCDB.cxx:713
 AliMUONCDB.cxx:714
 AliMUONCDB.cxx:715
 AliMUONCDB.cxx:716
 AliMUONCDB.cxx:717
 AliMUONCDB.cxx:718
 AliMUONCDB.cxx:719
 AliMUONCDB.cxx:720
 AliMUONCDB.cxx:721
 AliMUONCDB.cxx:722
 AliMUONCDB.cxx:723
 AliMUONCDB.cxx:724
 AliMUONCDB.cxx:725
 AliMUONCDB.cxx:726
 AliMUONCDB.cxx:727
 AliMUONCDB.cxx:728
 AliMUONCDB.cxx:729
 AliMUONCDB.cxx:730
 AliMUONCDB.cxx:731
 AliMUONCDB.cxx:732
 AliMUONCDB.cxx:733
 AliMUONCDB.cxx:734
 AliMUONCDB.cxx:735
 AliMUONCDB.cxx:736
 AliMUONCDB.cxx:737
 AliMUONCDB.cxx:738
 AliMUONCDB.cxx:739
 AliMUONCDB.cxx:740
 AliMUONCDB.cxx:741
 AliMUONCDB.cxx:742
 AliMUONCDB.cxx:743
 AliMUONCDB.cxx:744
 AliMUONCDB.cxx:745
 AliMUONCDB.cxx:746
 AliMUONCDB.cxx:747
 AliMUONCDB.cxx:748
 AliMUONCDB.cxx:749
 AliMUONCDB.cxx:750
 AliMUONCDB.cxx:751
 AliMUONCDB.cxx:752
 AliMUONCDB.cxx:753
 AliMUONCDB.cxx:754
 AliMUONCDB.cxx:755
 AliMUONCDB.cxx:756
 AliMUONCDB.cxx:757
 AliMUONCDB.cxx:758
 AliMUONCDB.cxx:759
 AliMUONCDB.cxx:760
 AliMUONCDB.cxx:761
 AliMUONCDB.cxx:762
 AliMUONCDB.cxx:763
 AliMUONCDB.cxx:764
 AliMUONCDB.cxx:765
 AliMUONCDB.cxx:766
 AliMUONCDB.cxx:767
 AliMUONCDB.cxx:768
 AliMUONCDB.cxx:769
 AliMUONCDB.cxx:770
 AliMUONCDB.cxx:771
 AliMUONCDB.cxx:772
 AliMUONCDB.cxx:773
 AliMUONCDB.cxx:774
 AliMUONCDB.cxx:775
 AliMUONCDB.cxx:776
 AliMUONCDB.cxx:777
 AliMUONCDB.cxx:778
 AliMUONCDB.cxx:779
 AliMUONCDB.cxx:780
 AliMUONCDB.cxx:781
 AliMUONCDB.cxx:782
 AliMUONCDB.cxx:783
 AliMUONCDB.cxx:784
 AliMUONCDB.cxx:785
 AliMUONCDB.cxx:786
 AliMUONCDB.cxx:787
 AliMUONCDB.cxx:788
 AliMUONCDB.cxx:789
 AliMUONCDB.cxx:790
 AliMUONCDB.cxx:791
 AliMUONCDB.cxx:792
 AliMUONCDB.cxx:793
 AliMUONCDB.cxx:794
 AliMUONCDB.cxx:795
 AliMUONCDB.cxx:796
 AliMUONCDB.cxx:797
 AliMUONCDB.cxx:798
 AliMUONCDB.cxx:799
 AliMUONCDB.cxx:800
 AliMUONCDB.cxx:801
 AliMUONCDB.cxx:802
 AliMUONCDB.cxx:803
 AliMUONCDB.cxx:804
 AliMUONCDB.cxx:805
 AliMUONCDB.cxx:806
 AliMUONCDB.cxx:807
 AliMUONCDB.cxx:808
 AliMUONCDB.cxx:809
 AliMUONCDB.cxx:810
 AliMUONCDB.cxx:811
 AliMUONCDB.cxx:812
 AliMUONCDB.cxx:813
 AliMUONCDB.cxx:814
 AliMUONCDB.cxx:815
 AliMUONCDB.cxx:816
 AliMUONCDB.cxx:817
 AliMUONCDB.cxx:818
 AliMUONCDB.cxx:819
 AliMUONCDB.cxx:820
 AliMUONCDB.cxx:821
 AliMUONCDB.cxx:822
 AliMUONCDB.cxx:823
 AliMUONCDB.cxx:824
 AliMUONCDB.cxx:825
 AliMUONCDB.cxx:826
 AliMUONCDB.cxx:827
 AliMUONCDB.cxx:828
 AliMUONCDB.cxx:829
 AliMUONCDB.cxx:830
 AliMUONCDB.cxx:831
 AliMUONCDB.cxx:832
 AliMUONCDB.cxx:833
 AliMUONCDB.cxx:834
 AliMUONCDB.cxx:835
 AliMUONCDB.cxx:836
 AliMUONCDB.cxx:837
 AliMUONCDB.cxx:838
 AliMUONCDB.cxx:839
 AliMUONCDB.cxx:840
 AliMUONCDB.cxx:841
 AliMUONCDB.cxx:842
 AliMUONCDB.cxx:843
 AliMUONCDB.cxx:844
 AliMUONCDB.cxx:845
 AliMUONCDB.cxx:846
 AliMUONCDB.cxx:847
 AliMUONCDB.cxx:848
 AliMUONCDB.cxx:849
 AliMUONCDB.cxx:850
 AliMUONCDB.cxx:851
 AliMUONCDB.cxx:852
 AliMUONCDB.cxx:853
 AliMUONCDB.cxx:854
 AliMUONCDB.cxx:855
 AliMUONCDB.cxx:856
 AliMUONCDB.cxx:857
 AliMUONCDB.cxx:858
 AliMUONCDB.cxx:859
 AliMUONCDB.cxx:860
 AliMUONCDB.cxx:861
 AliMUONCDB.cxx:862
 AliMUONCDB.cxx:863
 AliMUONCDB.cxx:864
 AliMUONCDB.cxx:865
 AliMUONCDB.cxx:866
 AliMUONCDB.cxx:867
 AliMUONCDB.cxx:868
 AliMUONCDB.cxx:869
 AliMUONCDB.cxx:870
 AliMUONCDB.cxx:871
 AliMUONCDB.cxx:872
 AliMUONCDB.cxx:873
 AliMUONCDB.cxx:874
 AliMUONCDB.cxx:875
 AliMUONCDB.cxx:876
 AliMUONCDB.cxx:877
 AliMUONCDB.cxx:878
 AliMUONCDB.cxx:879
 AliMUONCDB.cxx:880
 AliMUONCDB.cxx:881
 AliMUONCDB.cxx:882
 AliMUONCDB.cxx:883
 AliMUONCDB.cxx:884
 AliMUONCDB.cxx:885
 AliMUONCDB.cxx:886
 AliMUONCDB.cxx:887
 AliMUONCDB.cxx:888
 AliMUONCDB.cxx:889
 AliMUONCDB.cxx:890
 AliMUONCDB.cxx:891
 AliMUONCDB.cxx:892
 AliMUONCDB.cxx:893
 AliMUONCDB.cxx:894
 AliMUONCDB.cxx:895
 AliMUONCDB.cxx:896
 AliMUONCDB.cxx:897
 AliMUONCDB.cxx:898
 AliMUONCDB.cxx:899
 AliMUONCDB.cxx:900
 AliMUONCDB.cxx:901
 AliMUONCDB.cxx:902
 AliMUONCDB.cxx:903
 AliMUONCDB.cxx:904
 AliMUONCDB.cxx:905
 AliMUONCDB.cxx:906
 AliMUONCDB.cxx:907
 AliMUONCDB.cxx:908
 AliMUONCDB.cxx:909
 AliMUONCDB.cxx:910
 AliMUONCDB.cxx:911
 AliMUONCDB.cxx:912
 AliMUONCDB.cxx:913
 AliMUONCDB.cxx:914
 AliMUONCDB.cxx:915
 AliMUONCDB.cxx:916
 AliMUONCDB.cxx:917
 AliMUONCDB.cxx:918
 AliMUONCDB.cxx:919
 AliMUONCDB.cxx:920
 AliMUONCDB.cxx:921
 AliMUONCDB.cxx:922
 AliMUONCDB.cxx:923
 AliMUONCDB.cxx:924
 AliMUONCDB.cxx:925
 AliMUONCDB.cxx:926
 AliMUONCDB.cxx:927
 AliMUONCDB.cxx:928
 AliMUONCDB.cxx:929
 AliMUONCDB.cxx:930
 AliMUONCDB.cxx:931
 AliMUONCDB.cxx:932
 AliMUONCDB.cxx:933
 AliMUONCDB.cxx:934
 AliMUONCDB.cxx:935
 AliMUONCDB.cxx:936
 AliMUONCDB.cxx:937
 AliMUONCDB.cxx:938
 AliMUONCDB.cxx:939
 AliMUONCDB.cxx:940
 AliMUONCDB.cxx:941
 AliMUONCDB.cxx:942
 AliMUONCDB.cxx:943
 AliMUONCDB.cxx:944
 AliMUONCDB.cxx:945
 AliMUONCDB.cxx:946
 AliMUONCDB.cxx:947
 AliMUONCDB.cxx:948
 AliMUONCDB.cxx:949
 AliMUONCDB.cxx:950
 AliMUONCDB.cxx:951
 AliMUONCDB.cxx:952
 AliMUONCDB.cxx:953
 AliMUONCDB.cxx:954
 AliMUONCDB.cxx:955
 AliMUONCDB.cxx:956
 AliMUONCDB.cxx:957
 AliMUONCDB.cxx:958
 AliMUONCDB.cxx:959
 AliMUONCDB.cxx:960
 AliMUONCDB.cxx:961
 AliMUONCDB.cxx:962
 AliMUONCDB.cxx:963
 AliMUONCDB.cxx:964
 AliMUONCDB.cxx:965
 AliMUONCDB.cxx:966
 AliMUONCDB.cxx:967
 AliMUONCDB.cxx:968
 AliMUONCDB.cxx:969
 AliMUONCDB.cxx:970
 AliMUONCDB.cxx:971
 AliMUONCDB.cxx:972
 AliMUONCDB.cxx:973
 AliMUONCDB.cxx:974
 AliMUONCDB.cxx:975
 AliMUONCDB.cxx:976
 AliMUONCDB.cxx:977
 AliMUONCDB.cxx:978
 AliMUONCDB.cxx:979
 AliMUONCDB.cxx:980
 AliMUONCDB.cxx:981
 AliMUONCDB.cxx:982
 AliMUONCDB.cxx:983
 AliMUONCDB.cxx:984
 AliMUONCDB.cxx:985
 AliMUONCDB.cxx:986
 AliMUONCDB.cxx:987
 AliMUONCDB.cxx:988
 AliMUONCDB.cxx:989
 AliMUONCDB.cxx:990
 AliMUONCDB.cxx:991
 AliMUONCDB.cxx:992
 AliMUONCDB.cxx:993
 AliMUONCDB.cxx:994
 AliMUONCDB.cxx:995
 AliMUONCDB.cxx:996
 AliMUONCDB.cxx:997
 AliMUONCDB.cxx:998
 AliMUONCDB.cxx:999
 AliMUONCDB.cxx:1000
 AliMUONCDB.cxx:1001
 AliMUONCDB.cxx:1002
 AliMUONCDB.cxx:1003
 AliMUONCDB.cxx:1004
 AliMUONCDB.cxx:1005
 AliMUONCDB.cxx:1006
 AliMUONCDB.cxx:1007
 AliMUONCDB.cxx:1008
 AliMUONCDB.cxx:1009
 AliMUONCDB.cxx:1010
 AliMUONCDB.cxx:1011
 AliMUONCDB.cxx:1012
 AliMUONCDB.cxx:1013
 AliMUONCDB.cxx:1014
 AliMUONCDB.cxx:1015
 AliMUONCDB.cxx:1016
 AliMUONCDB.cxx:1017
 AliMUONCDB.cxx:1018
 AliMUONCDB.cxx:1019
 AliMUONCDB.cxx:1020
 AliMUONCDB.cxx:1021
 AliMUONCDB.cxx:1022
 AliMUONCDB.cxx:1023
 AliMUONCDB.cxx:1024
 AliMUONCDB.cxx:1025
 AliMUONCDB.cxx:1026
 AliMUONCDB.cxx:1027
 AliMUONCDB.cxx:1028
 AliMUONCDB.cxx:1029
 AliMUONCDB.cxx:1030
 AliMUONCDB.cxx:1031
 AliMUONCDB.cxx:1032
 AliMUONCDB.cxx:1033
 AliMUONCDB.cxx:1034
 AliMUONCDB.cxx:1035
 AliMUONCDB.cxx:1036
 AliMUONCDB.cxx:1037
 AliMUONCDB.cxx:1038
 AliMUONCDB.cxx:1039
 AliMUONCDB.cxx:1040
 AliMUONCDB.cxx:1041
 AliMUONCDB.cxx:1042
 AliMUONCDB.cxx:1043
 AliMUONCDB.cxx:1044
 AliMUONCDB.cxx:1045
 AliMUONCDB.cxx:1046
 AliMUONCDB.cxx:1047
 AliMUONCDB.cxx:1048
 AliMUONCDB.cxx:1049
 AliMUONCDB.cxx:1050
 AliMUONCDB.cxx:1051
 AliMUONCDB.cxx:1052
 AliMUONCDB.cxx:1053
 AliMUONCDB.cxx:1054
 AliMUONCDB.cxx:1055
 AliMUONCDB.cxx:1056
 AliMUONCDB.cxx:1057
 AliMUONCDB.cxx:1058
 AliMUONCDB.cxx:1059
 AliMUONCDB.cxx:1060
 AliMUONCDB.cxx:1061
 AliMUONCDB.cxx:1062
 AliMUONCDB.cxx:1063
 AliMUONCDB.cxx:1064
 AliMUONCDB.cxx:1065
 AliMUONCDB.cxx:1066
 AliMUONCDB.cxx:1067
 AliMUONCDB.cxx:1068
 AliMUONCDB.cxx:1069
 AliMUONCDB.cxx:1070
 AliMUONCDB.cxx:1071
 AliMUONCDB.cxx:1072
 AliMUONCDB.cxx:1073
 AliMUONCDB.cxx:1074
 AliMUONCDB.cxx:1075
 AliMUONCDB.cxx:1076
 AliMUONCDB.cxx:1077
 AliMUONCDB.cxx:1078
 AliMUONCDB.cxx:1079
 AliMUONCDB.cxx:1080
 AliMUONCDB.cxx:1081
 AliMUONCDB.cxx:1082
 AliMUONCDB.cxx:1083
 AliMUONCDB.cxx:1084
 AliMUONCDB.cxx:1085
 AliMUONCDB.cxx:1086
 AliMUONCDB.cxx:1087
 AliMUONCDB.cxx:1088
 AliMUONCDB.cxx:1089
 AliMUONCDB.cxx:1090
 AliMUONCDB.cxx:1091
 AliMUONCDB.cxx:1092
 AliMUONCDB.cxx:1093
 AliMUONCDB.cxx:1094
 AliMUONCDB.cxx:1095
 AliMUONCDB.cxx:1096
 AliMUONCDB.cxx:1097
 AliMUONCDB.cxx:1098
 AliMUONCDB.cxx:1099
 AliMUONCDB.cxx:1100
 AliMUONCDB.cxx:1101
 AliMUONCDB.cxx:1102
 AliMUONCDB.cxx:1103
 AliMUONCDB.cxx:1104
 AliMUONCDB.cxx:1105
 AliMUONCDB.cxx:1106
 AliMUONCDB.cxx:1107
 AliMUONCDB.cxx:1108
 AliMUONCDB.cxx:1109
 AliMUONCDB.cxx:1110
 AliMUONCDB.cxx:1111
 AliMUONCDB.cxx:1112
 AliMUONCDB.cxx:1113
 AliMUONCDB.cxx:1114
 AliMUONCDB.cxx:1115
 AliMUONCDB.cxx:1116
 AliMUONCDB.cxx:1117
 AliMUONCDB.cxx:1118
 AliMUONCDB.cxx:1119
 AliMUONCDB.cxx:1120
 AliMUONCDB.cxx:1121
 AliMUONCDB.cxx:1122
 AliMUONCDB.cxx:1123
 AliMUONCDB.cxx:1124
 AliMUONCDB.cxx:1125
 AliMUONCDB.cxx:1126
 AliMUONCDB.cxx:1127
 AliMUONCDB.cxx:1128
 AliMUONCDB.cxx:1129
 AliMUONCDB.cxx:1130
 AliMUONCDB.cxx:1131
 AliMUONCDB.cxx:1132
 AliMUONCDB.cxx:1133
 AliMUONCDB.cxx:1134
 AliMUONCDB.cxx:1135
 AliMUONCDB.cxx:1136
 AliMUONCDB.cxx:1137
 AliMUONCDB.cxx:1138
 AliMUONCDB.cxx:1139
 AliMUONCDB.cxx:1140
 AliMUONCDB.cxx:1141
 AliMUONCDB.cxx:1142
 AliMUONCDB.cxx:1143
 AliMUONCDB.cxx:1144
 AliMUONCDB.cxx:1145
 AliMUONCDB.cxx:1146
 AliMUONCDB.cxx:1147
 AliMUONCDB.cxx:1148
 AliMUONCDB.cxx:1149
 AliMUONCDB.cxx:1150
 AliMUONCDB.cxx:1151
 AliMUONCDB.cxx:1152
 AliMUONCDB.cxx:1153
 AliMUONCDB.cxx:1154
 AliMUONCDB.cxx:1155
 AliMUONCDB.cxx:1156
 AliMUONCDB.cxx:1157
 AliMUONCDB.cxx:1158
 AliMUONCDB.cxx:1159
 AliMUONCDB.cxx:1160
 AliMUONCDB.cxx:1161
 AliMUONCDB.cxx:1162
 AliMUONCDB.cxx:1163
 AliMUONCDB.cxx:1164
 AliMUONCDB.cxx:1165
 AliMUONCDB.cxx:1166
 AliMUONCDB.cxx:1167
 AliMUONCDB.cxx:1168
 AliMUONCDB.cxx:1169
 AliMUONCDB.cxx:1170
 AliMUONCDB.cxx:1171
 AliMUONCDB.cxx:1172
 AliMUONCDB.cxx:1173
 AliMUONCDB.cxx:1174
 AliMUONCDB.cxx:1175
 AliMUONCDB.cxx:1176
 AliMUONCDB.cxx:1177
 AliMUONCDB.cxx:1178
 AliMUONCDB.cxx:1179
 AliMUONCDB.cxx:1180
 AliMUONCDB.cxx:1181
 AliMUONCDB.cxx:1182
 AliMUONCDB.cxx:1183
 AliMUONCDB.cxx:1184
 AliMUONCDB.cxx:1185
 AliMUONCDB.cxx:1186
 AliMUONCDB.cxx:1187
 AliMUONCDB.cxx:1188
 AliMUONCDB.cxx:1189
 AliMUONCDB.cxx:1190
 AliMUONCDB.cxx:1191
 AliMUONCDB.cxx:1192
 AliMUONCDB.cxx:1193
 AliMUONCDB.cxx:1194
 AliMUONCDB.cxx:1195
 AliMUONCDB.cxx:1196
 AliMUONCDB.cxx:1197
 AliMUONCDB.cxx:1198
 AliMUONCDB.cxx:1199
 AliMUONCDB.cxx:1200
 AliMUONCDB.cxx:1201
 AliMUONCDB.cxx:1202
 AliMUONCDB.cxx:1203
 AliMUONCDB.cxx:1204
 AliMUONCDB.cxx:1205
 AliMUONCDB.cxx:1206
 AliMUONCDB.cxx:1207
 AliMUONCDB.cxx:1208
 AliMUONCDB.cxx:1209
 AliMUONCDB.cxx:1210
 AliMUONCDB.cxx:1211
 AliMUONCDB.cxx:1212
 AliMUONCDB.cxx:1213
 AliMUONCDB.cxx:1214
 AliMUONCDB.cxx:1215
 AliMUONCDB.cxx:1216
 AliMUONCDB.cxx:1217
 AliMUONCDB.cxx:1218
 AliMUONCDB.cxx:1219
 AliMUONCDB.cxx:1220
 AliMUONCDB.cxx:1221
 AliMUONCDB.cxx:1222
 AliMUONCDB.cxx:1223
 AliMUONCDB.cxx:1224
 AliMUONCDB.cxx:1225
 AliMUONCDB.cxx:1226
 AliMUONCDB.cxx:1227
 AliMUONCDB.cxx:1228
 AliMUONCDB.cxx:1229
 AliMUONCDB.cxx:1230
 AliMUONCDB.cxx:1231
 AliMUONCDB.cxx:1232
 AliMUONCDB.cxx:1233
 AliMUONCDB.cxx:1234
 AliMUONCDB.cxx:1235
 AliMUONCDB.cxx:1236
 AliMUONCDB.cxx:1237
 AliMUONCDB.cxx:1238
 AliMUONCDB.cxx:1239
 AliMUONCDB.cxx:1240
 AliMUONCDB.cxx:1241
 AliMUONCDB.cxx:1242
 AliMUONCDB.cxx:1243
 AliMUONCDB.cxx:1244
 AliMUONCDB.cxx:1245
 AliMUONCDB.cxx:1246
 AliMUONCDB.cxx:1247
 AliMUONCDB.cxx:1248
 AliMUONCDB.cxx:1249
 AliMUONCDB.cxx:1250
 AliMUONCDB.cxx:1251
 AliMUONCDB.cxx:1252
 AliMUONCDB.cxx:1253
 AliMUONCDB.cxx:1254
 AliMUONCDB.cxx:1255
 AliMUONCDB.cxx:1256
 AliMUONCDB.cxx:1257
 AliMUONCDB.cxx:1258
 AliMUONCDB.cxx:1259
 AliMUONCDB.cxx:1260
 AliMUONCDB.cxx:1261
 AliMUONCDB.cxx:1262
 AliMUONCDB.cxx:1263
 AliMUONCDB.cxx:1264
 AliMUONCDB.cxx:1265
 AliMUONCDB.cxx:1266
 AliMUONCDB.cxx:1267
 AliMUONCDB.cxx:1268
 AliMUONCDB.cxx:1269
 AliMUONCDB.cxx:1270
 AliMUONCDB.cxx:1271
 AliMUONCDB.cxx:1272
 AliMUONCDB.cxx:1273
 AliMUONCDB.cxx:1274
 AliMUONCDB.cxx:1275
 AliMUONCDB.cxx:1276
 AliMUONCDB.cxx:1277
 AliMUONCDB.cxx:1278
 AliMUONCDB.cxx:1279
 AliMUONCDB.cxx:1280
 AliMUONCDB.cxx:1281
 AliMUONCDB.cxx:1282
 AliMUONCDB.cxx:1283
 AliMUONCDB.cxx:1284
 AliMUONCDB.cxx:1285
 AliMUONCDB.cxx:1286
 AliMUONCDB.cxx:1287
 AliMUONCDB.cxx:1288
 AliMUONCDB.cxx:1289
 AliMUONCDB.cxx:1290
 AliMUONCDB.cxx:1291
 AliMUONCDB.cxx:1292
 AliMUONCDB.cxx:1293
 AliMUONCDB.cxx:1294
 AliMUONCDB.cxx:1295
 AliMUONCDB.cxx:1296
 AliMUONCDB.cxx:1297
 AliMUONCDB.cxx:1298
 AliMUONCDB.cxx:1299
 AliMUONCDB.cxx:1300
 AliMUONCDB.cxx:1301
 AliMUONCDB.cxx:1302
 AliMUONCDB.cxx:1303
 AliMUONCDB.cxx:1304
 AliMUONCDB.cxx:1305
 AliMUONCDB.cxx:1306
 AliMUONCDB.cxx:1307
 AliMUONCDB.cxx:1308
 AliMUONCDB.cxx:1309
 AliMUONCDB.cxx:1310
 AliMUONCDB.cxx:1311
 AliMUONCDB.cxx:1312
 AliMUONCDB.cxx:1313
 AliMUONCDB.cxx:1314
 AliMUONCDB.cxx:1315
 AliMUONCDB.cxx:1316
 AliMUONCDB.cxx:1317
 AliMUONCDB.cxx:1318
 AliMUONCDB.cxx:1319
 AliMUONCDB.cxx:1320
 AliMUONCDB.cxx:1321
 AliMUONCDB.cxx:1322
 AliMUONCDB.cxx:1323
 AliMUONCDB.cxx:1324
 AliMUONCDB.cxx:1325
 AliMUONCDB.cxx:1326
 AliMUONCDB.cxx:1327
 AliMUONCDB.cxx:1328
 AliMUONCDB.cxx:1329
 AliMUONCDB.cxx:1330
 AliMUONCDB.cxx:1331
 AliMUONCDB.cxx:1332
 AliMUONCDB.cxx:1333
 AliMUONCDB.cxx:1334
 AliMUONCDB.cxx:1335
 AliMUONCDB.cxx:1336
 AliMUONCDB.cxx:1337
 AliMUONCDB.cxx:1338
 AliMUONCDB.cxx:1339
 AliMUONCDB.cxx:1340
 AliMUONCDB.cxx:1341
 AliMUONCDB.cxx:1342
 AliMUONCDB.cxx:1343
 AliMUONCDB.cxx:1344
 AliMUONCDB.cxx:1345
 AliMUONCDB.cxx:1346
 AliMUONCDB.cxx:1347
 AliMUONCDB.cxx:1348
 AliMUONCDB.cxx:1349
 AliMUONCDB.cxx:1350
 AliMUONCDB.cxx:1351
 AliMUONCDB.cxx:1352
 AliMUONCDB.cxx:1353
 AliMUONCDB.cxx:1354
 AliMUONCDB.cxx:1355
 AliMUONCDB.cxx:1356
 AliMUONCDB.cxx:1357
 AliMUONCDB.cxx:1358
 AliMUONCDB.cxx:1359
 AliMUONCDB.cxx:1360
 AliMUONCDB.cxx:1361
 AliMUONCDB.cxx:1362
 AliMUONCDB.cxx:1363
 AliMUONCDB.cxx:1364
 AliMUONCDB.cxx:1365
 AliMUONCDB.cxx:1366
 AliMUONCDB.cxx:1367
 AliMUONCDB.cxx:1368
 AliMUONCDB.cxx:1369
 AliMUONCDB.cxx:1370
 AliMUONCDB.cxx:1371
 AliMUONCDB.cxx:1372
 AliMUONCDB.cxx:1373
 AliMUONCDB.cxx:1374
 AliMUONCDB.cxx:1375
 AliMUONCDB.cxx:1376
 AliMUONCDB.cxx:1377
 AliMUONCDB.cxx:1378
 AliMUONCDB.cxx:1379
 AliMUONCDB.cxx:1380
 AliMUONCDB.cxx:1381
 AliMUONCDB.cxx:1382
 AliMUONCDB.cxx:1383
 AliMUONCDB.cxx:1384
 AliMUONCDB.cxx:1385
 AliMUONCDB.cxx:1386
 AliMUONCDB.cxx:1387
 AliMUONCDB.cxx:1388
 AliMUONCDB.cxx:1389
 AliMUONCDB.cxx:1390
 AliMUONCDB.cxx:1391
 AliMUONCDB.cxx:1392
 AliMUONCDB.cxx:1393
 AliMUONCDB.cxx:1394
 AliMUONCDB.cxx:1395
 AliMUONCDB.cxx:1396
 AliMUONCDB.cxx:1397
 AliMUONCDB.cxx:1398
 AliMUONCDB.cxx:1399
 AliMUONCDB.cxx:1400
 AliMUONCDB.cxx:1401
 AliMUONCDB.cxx:1402
 AliMUONCDB.cxx:1403
 AliMUONCDB.cxx:1404
 AliMUONCDB.cxx:1405
 AliMUONCDB.cxx:1406
 AliMUONCDB.cxx:1407
 AliMUONCDB.cxx:1408
 AliMUONCDB.cxx:1409
 AliMUONCDB.cxx:1410
 AliMUONCDB.cxx:1411
 AliMUONCDB.cxx:1412
 AliMUONCDB.cxx:1413
 AliMUONCDB.cxx:1414
 AliMUONCDB.cxx:1415
 AliMUONCDB.cxx:1416
 AliMUONCDB.cxx:1417
 AliMUONCDB.cxx:1418
 AliMUONCDB.cxx:1419
 AliMUONCDB.cxx:1420
 AliMUONCDB.cxx:1421
 AliMUONCDB.cxx:1422
 AliMUONCDB.cxx:1423
 AliMUONCDB.cxx:1424
 AliMUONCDB.cxx:1425
 AliMUONCDB.cxx:1426
 AliMUONCDB.cxx:1427
 AliMUONCDB.cxx:1428
 AliMUONCDB.cxx:1429
 AliMUONCDB.cxx:1430
 AliMUONCDB.cxx:1431
 AliMUONCDB.cxx:1432
 AliMUONCDB.cxx:1433
 AliMUONCDB.cxx:1434
 AliMUONCDB.cxx:1435
 AliMUONCDB.cxx:1436
 AliMUONCDB.cxx:1437
 AliMUONCDB.cxx:1438
 AliMUONCDB.cxx:1439
 AliMUONCDB.cxx:1440
 AliMUONCDB.cxx:1441
 AliMUONCDB.cxx:1442
 AliMUONCDB.cxx:1443
 AliMUONCDB.cxx:1444
 AliMUONCDB.cxx:1445
 AliMUONCDB.cxx:1446
 AliMUONCDB.cxx:1447
 AliMUONCDB.cxx:1448
 AliMUONCDB.cxx:1449
 AliMUONCDB.cxx:1450
 AliMUONCDB.cxx:1451
 AliMUONCDB.cxx:1452
 AliMUONCDB.cxx:1453
 AliMUONCDB.cxx:1454
 AliMUONCDB.cxx:1455
 AliMUONCDB.cxx:1456
 AliMUONCDB.cxx:1457
 AliMUONCDB.cxx:1458
 AliMUONCDB.cxx:1459
 AliMUONCDB.cxx:1460
 AliMUONCDB.cxx:1461
 AliMUONCDB.cxx:1462
 AliMUONCDB.cxx:1463
 AliMUONCDB.cxx:1464
 AliMUONCDB.cxx:1465
 AliMUONCDB.cxx:1466
 AliMUONCDB.cxx:1467
 AliMUONCDB.cxx:1468
 AliMUONCDB.cxx:1469
 AliMUONCDB.cxx:1470
 AliMUONCDB.cxx:1471
 AliMUONCDB.cxx:1472
 AliMUONCDB.cxx:1473
 AliMUONCDB.cxx:1474
 AliMUONCDB.cxx:1475
 AliMUONCDB.cxx:1476
 AliMUONCDB.cxx:1477
 AliMUONCDB.cxx:1478
 AliMUONCDB.cxx:1479
 AliMUONCDB.cxx:1480
 AliMUONCDB.cxx:1481
 AliMUONCDB.cxx:1482
 AliMUONCDB.cxx:1483
 AliMUONCDB.cxx:1484
 AliMUONCDB.cxx:1485
 AliMUONCDB.cxx:1486
 AliMUONCDB.cxx:1487
 AliMUONCDB.cxx:1488
 AliMUONCDB.cxx:1489
 AliMUONCDB.cxx:1490
 AliMUONCDB.cxx:1491
 AliMUONCDB.cxx:1492
 AliMUONCDB.cxx:1493
 AliMUONCDB.cxx:1494
 AliMUONCDB.cxx:1495
 AliMUONCDB.cxx:1496
 AliMUONCDB.cxx:1497
 AliMUONCDB.cxx:1498
 AliMUONCDB.cxx:1499
 AliMUONCDB.cxx:1500
 AliMUONCDB.cxx:1501
 AliMUONCDB.cxx:1502
 AliMUONCDB.cxx:1503
 AliMUONCDB.cxx:1504
 AliMUONCDB.cxx:1505
 AliMUONCDB.cxx:1506
 AliMUONCDB.cxx:1507
 AliMUONCDB.cxx:1508
 AliMUONCDB.cxx:1509
 AliMUONCDB.cxx:1510
 AliMUONCDB.cxx:1511
 AliMUONCDB.cxx:1512
 AliMUONCDB.cxx:1513
 AliMUONCDB.cxx:1514
 AliMUONCDB.cxx:1515
 AliMUONCDB.cxx:1516
 AliMUONCDB.cxx:1517
 AliMUONCDB.cxx:1518
 AliMUONCDB.cxx:1519
 AliMUONCDB.cxx:1520
 AliMUONCDB.cxx:1521
 AliMUONCDB.cxx:1522
 AliMUONCDB.cxx:1523
 AliMUONCDB.cxx:1524
 AliMUONCDB.cxx:1525
 AliMUONCDB.cxx:1526
 AliMUONCDB.cxx:1527
 AliMUONCDB.cxx:1528
 AliMUONCDB.cxx:1529
 AliMUONCDB.cxx:1530
 AliMUONCDB.cxx:1531
 AliMUONCDB.cxx:1532
 AliMUONCDB.cxx:1533
 AliMUONCDB.cxx:1534
 AliMUONCDB.cxx:1535
 AliMUONCDB.cxx:1536
 AliMUONCDB.cxx:1537
 AliMUONCDB.cxx:1538
 AliMUONCDB.cxx:1539
 AliMUONCDB.cxx:1540
 AliMUONCDB.cxx:1541
 AliMUONCDB.cxx:1542
 AliMUONCDB.cxx:1543
 AliMUONCDB.cxx:1544
 AliMUONCDB.cxx:1545
 AliMUONCDB.cxx:1546
 AliMUONCDB.cxx:1547
 AliMUONCDB.cxx:1548
 AliMUONCDB.cxx:1549
 AliMUONCDB.cxx:1550
 AliMUONCDB.cxx:1551
 AliMUONCDB.cxx:1552
 AliMUONCDB.cxx:1553
 AliMUONCDB.cxx:1554
 AliMUONCDB.cxx:1555
 AliMUONCDB.cxx:1556
 AliMUONCDB.cxx:1557
 AliMUONCDB.cxx:1558
 AliMUONCDB.cxx:1559
 AliMUONCDB.cxx:1560
 AliMUONCDB.cxx:1561
 AliMUONCDB.cxx:1562
 AliMUONCDB.cxx:1563
 AliMUONCDB.cxx:1564
 AliMUONCDB.cxx:1565
 AliMUONCDB.cxx:1566
 AliMUONCDB.cxx:1567
 AliMUONCDB.cxx:1568
 AliMUONCDB.cxx:1569
 AliMUONCDB.cxx:1570
 AliMUONCDB.cxx:1571
 AliMUONCDB.cxx:1572
 AliMUONCDB.cxx:1573
 AliMUONCDB.cxx:1574
 AliMUONCDB.cxx:1575
 AliMUONCDB.cxx:1576
 AliMUONCDB.cxx:1577
 AliMUONCDB.cxx:1578
 AliMUONCDB.cxx:1579
 AliMUONCDB.cxx:1580
 AliMUONCDB.cxx:1581
 AliMUONCDB.cxx:1582
 AliMUONCDB.cxx:1583
 AliMUONCDB.cxx:1584
 AliMUONCDB.cxx:1585
 AliMUONCDB.cxx:1586
 AliMUONCDB.cxx:1587
 AliMUONCDB.cxx:1588
 AliMUONCDB.cxx:1589
 AliMUONCDB.cxx:1590
 AliMUONCDB.cxx:1591
 AliMUONCDB.cxx:1592
 AliMUONCDB.cxx:1593
 AliMUONCDB.cxx:1594
 AliMUONCDB.cxx:1595
 AliMUONCDB.cxx:1596
 AliMUONCDB.cxx:1597
 AliMUONCDB.cxx:1598
 AliMUONCDB.cxx:1599
 AliMUONCDB.cxx:1600
 AliMUONCDB.cxx:1601
 AliMUONCDB.cxx:1602
 AliMUONCDB.cxx:1603
 AliMUONCDB.cxx:1604
 AliMUONCDB.cxx:1605
 AliMUONCDB.cxx:1606
 AliMUONCDB.cxx:1607
 AliMUONCDB.cxx:1608
 AliMUONCDB.cxx:1609
 AliMUONCDB.cxx:1610
 AliMUONCDB.cxx:1611
 AliMUONCDB.cxx:1612
 AliMUONCDB.cxx:1613
 AliMUONCDB.cxx:1614
 AliMUONCDB.cxx:1615
 AliMUONCDB.cxx:1616
 AliMUONCDB.cxx:1617
 AliMUONCDB.cxx:1618
 AliMUONCDB.cxx:1619
 AliMUONCDB.cxx:1620
 AliMUONCDB.cxx:1621
 AliMUONCDB.cxx:1622
 AliMUONCDB.cxx:1623
 AliMUONCDB.cxx:1624
 AliMUONCDB.cxx:1625
 AliMUONCDB.cxx:1626
 AliMUONCDB.cxx:1627
 AliMUONCDB.cxx:1628
 AliMUONCDB.cxx:1629
 AliMUONCDB.cxx:1630
 AliMUONCDB.cxx:1631
 AliMUONCDB.cxx:1632
 AliMUONCDB.cxx:1633
 AliMUONCDB.cxx:1634
 AliMUONCDB.cxx:1635
 AliMUONCDB.cxx:1636
 AliMUONCDB.cxx:1637
 AliMUONCDB.cxx:1638
 AliMUONCDB.cxx:1639
 AliMUONCDB.cxx:1640
 AliMUONCDB.cxx:1641
 AliMUONCDB.cxx:1642
 AliMUONCDB.cxx:1643
 AliMUONCDB.cxx:1644
 AliMUONCDB.cxx:1645
 AliMUONCDB.cxx:1646
 AliMUONCDB.cxx:1647
 AliMUONCDB.cxx:1648
 AliMUONCDB.cxx:1649
 AliMUONCDB.cxx:1650
 AliMUONCDB.cxx:1651
 AliMUONCDB.cxx:1652
 AliMUONCDB.cxx:1653
 AliMUONCDB.cxx:1654
 AliMUONCDB.cxx:1655
 AliMUONCDB.cxx:1656
 AliMUONCDB.cxx:1657
 AliMUONCDB.cxx:1658
 AliMUONCDB.cxx:1659
 AliMUONCDB.cxx:1660
 AliMUONCDB.cxx:1661
 AliMUONCDB.cxx:1662
 AliMUONCDB.cxx:1663
 AliMUONCDB.cxx:1664
 AliMUONCDB.cxx:1665
 AliMUONCDB.cxx:1666
 AliMUONCDB.cxx:1667
 AliMUONCDB.cxx:1668
 AliMUONCDB.cxx:1669
 AliMUONCDB.cxx:1670
 AliMUONCDB.cxx:1671
 AliMUONCDB.cxx:1672
 AliMUONCDB.cxx:1673
 AliMUONCDB.cxx:1674
 AliMUONCDB.cxx:1675
 AliMUONCDB.cxx:1676
 AliMUONCDB.cxx:1677
 AliMUONCDB.cxx:1678
 AliMUONCDB.cxx:1679
 AliMUONCDB.cxx:1680
 AliMUONCDB.cxx:1681
 AliMUONCDB.cxx:1682
 AliMUONCDB.cxx:1683
 AliMUONCDB.cxx:1684
 AliMUONCDB.cxx:1685
 AliMUONCDB.cxx:1686
 AliMUONCDB.cxx:1687
 AliMUONCDB.cxx:1688
 AliMUONCDB.cxx:1689
 AliMUONCDB.cxx:1690
 AliMUONCDB.cxx:1691
 AliMUONCDB.cxx:1692
 AliMUONCDB.cxx:1693
 AliMUONCDB.cxx:1694
 AliMUONCDB.cxx:1695
 AliMUONCDB.cxx:1696
 AliMUONCDB.cxx:1697
 AliMUONCDB.cxx:1698
 AliMUONCDB.cxx:1699
 AliMUONCDB.cxx:1700
 AliMUONCDB.cxx:1701
 AliMUONCDB.cxx:1702
 AliMUONCDB.cxx:1703
 AliMUONCDB.cxx:1704
 AliMUONCDB.cxx:1705
 AliMUONCDB.cxx:1706
 AliMUONCDB.cxx:1707
 AliMUONCDB.cxx:1708
 AliMUONCDB.cxx:1709
 AliMUONCDB.cxx:1710
 AliMUONCDB.cxx:1711
 AliMUONCDB.cxx:1712
 AliMUONCDB.cxx:1713
 AliMUONCDB.cxx:1714
 AliMUONCDB.cxx:1715
 AliMUONCDB.cxx:1716
 AliMUONCDB.cxx:1717
 AliMUONCDB.cxx:1718
 AliMUONCDB.cxx:1719
 AliMUONCDB.cxx:1720
 AliMUONCDB.cxx:1721
 AliMUONCDB.cxx:1722
 AliMUONCDB.cxx:1723
 AliMUONCDB.cxx:1724
 AliMUONCDB.cxx:1725
 AliMUONCDB.cxx:1726
 AliMUONCDB.cxx:1727
 AliMUONCDB.cxx:1728
 AliMUONCDB.cxx:1729
 AliMUONCDB.cxx:1730
 AliMUONCDB.cxx:1731
 AliMUONCDB.cxx:1732
 AliMUONCDB.cxx:1733
 AliMUONCDB.cxx:1734
 AliMUONCDB.cxx:1735
 AliMUONCDB.cxx:1736
 AliMUONCDB.cxx:1737
 AliMUONCDB.cxx:1738
 AliMUONCDB.cxx:1739
 AliMUONCDB.cxx:1740
 AliMUONCDB.cxx:1741
 AliMUONCDB.cxx:1742
 AliMUONCDB.cxx:1743
 AliMUONCDB.cxx:1744
 AliMUONCDB.cxx:1745
 AliMUONCDB.cxx:1746
 AliMUONCDB.cxx:1747
 AliMUONCDB.cxx:1748
 AliMUONCDB.cxx:1749
 AliMUONCDB.cxx:1750
 AliMUONCDB.cxx:1751
 AliMUONCDB.cxx:1752
 AliMUONCDB.cxx:1753
 AliMUONCDB.cxx:1754
 AliMUONCDB.cxx:1755
 AliMUONCDB.cxx:1756
 AliMUONCDB.cxx:1757
 AliMUONCDB.cxx:1758
 AliMUONCDB.cxx:1759
 AliMUONCDB.cxx:1760
 AliMUONCDB.cxx:1761
 AliMUONCDB.cxx:1762
 AliMUONCDB.cxx:1763
 AliMUONCDB.cxx:1764
 AliMUONCDB.cxx:1765
 AliMUONCDB.cxx:1766
 AliMUONCDB.cxx:1767
 AliMUONCDB.cxx:1768
 AliMUONCDB.cxx:1769
 AliMUONCDB.cxx:1770
 AliMUONCDB.cxx:1771
 AliMUONCDB.cxx:1772
 AliMUONCDB.cxx:1773
 AliMUONCDB.cxx:1774
 AliMUONCDB.cxx:1775
 AliMUONCDB.cxx:1776
 AliMUONCDB.cxx:1777
 AliMUONCDB.cxx:1778
 AliMUONCDB.cxx:1779
 AliMUONCDB.cxx:1780
 AliMUONCDB.cxx:1781
 AliMUONCDB.cxx:1782
 AliMUONCDB.cxx:1783
 AliMUONCDB.cxx:1784
 AliMUONCDB.cxx:1785
 AliMUONCDB.cxx:1786
 AliMUONCDB.cxx:1787
 AliMUONCDB.cxx:1788
 AliMUONCDB.cxx:1789
 AliMUONCDB.cxx:1790
 AliMUONCDB.cxx:1791
 AliMUONCDB.cxx:1792
 AliMUONCDB.cxx:1793
 AliMUONCDB.cxx:1794
 AliMUONCDB.cxx:1795
 AliMUONCDB.cxx:1796
 AliMUONCDB.cxx:1797
 AliMUONCDB.cxx:1798
 AliMUONCDB.cxx:1799
 AliMUONCDB.cxx:1800
 AliMUONCDB.cxx:1801
 AliMUONCDB.cxx:1802
 AliMUONCDB.cxx:1803
 AliMUONCDB.cxx:1804
 AliMUONCDB.cxx:1805
 AliMUONCDB.cxx:1806
 AliMUONCDB.cxx:1807
 AliMUONCDB.cxx:1808
 AliMUONCDB.cxx:1809
 AliMUONCDB.cxx:1810
 AliMUONCDB.cxx:1811
 AliMUONCDB.cxx:1812
 AliMUONCDB.cxx:1813
 AliMUONCDB.cxx:1814
 AliMUONCDB.cxx:1815
 AliMUONCDB.cxx:1816
 AliMUONCDB.cxx:1817
 AliMUONCDB.cxx:1818
 AliMUONCDB.cxx:1819
 AliMUONCDB.cxx:1820
 AliMUONCDB.cxx:1821
 AliMUONCDB.cxx:1822
 AliMUONCDB.cxx:1823
 AliMUONCDB.cxx:1824
 AliMUONCDB.cxx:1825
 AliMUONCDB.cxx:1826
 AliMUONCDB.cxx:1827
 AliMUONCDB.cxx:1828
 AliMUONCDB.cxx:1829
 AliMUONCDB.cxx:1830
 AliMUONCDB.cxx:1831
 AliMUONCDB.cxx:1832
 AliMUONCDB.cxx:1833
 AliMUONCDB.cxx:1834
 AliMUONCDB.cxx:1835
 AliMUONCDB.cxx:1836
 AliMUONCDB.cxx:1837
 AliMUONCDB.cxx:1838
 AliMUONCDB.cxx:1839
 AliMUONCDB.cxx:1840
 AliMUONCDB.cxx:1841
 AliMUONCDB.cxx:1842
 AliMUONCDB.cxx:1843
 AliMUONCDB.cxx:1844
 AliMUONCDB.cxx:1845
 AliMUONCDB.cxx:1846
 AliMUONCDB.cxx:1847
 AliMUONCDB.cxx:1848
 AliMUONCDB.cxx:1849
 AliMUONCDB.cxx:1850
 AliMUONCDB.cxx:1851
 AliMUONCDB.cxx:1852
 AliMUONCDB.cxx:1853
 AliMUONCDB.cxx:1854
 AliMUONCDB.cxx:1855
 AliMUONCDB.cxx:1856
 AliMUONCDB.cxx:1857
 AliMUONCDB.cxx:1858
 AliMUONCDB.cxx:1859
 AliMUONCDB.cxx:1860
 AliMUONCDB.cxx:1861
 AliMUONCDB.cxx:1862
 AliMUONCDB.cxx:1863
 AliMUONCDB.cxx:1864
 AliMUONCDB.cxx:1865
 AliMUONCDB.cxx:1866
 AliMUONCDB.cxx:1867
 AliMUONCDB.cxx:1868
 AliMUONCDB.cxx:1869
 AliMUONCDB.cxx:1870