ROOT logo
  ////////////////////////////////////////////
  // Author: Ionut Cristian Arsene          //
  // email:  iarsene@mail.cern.ch           //
  ////////////////////////////////////////////
  // Use this macro to create ROOT trees with time dependent information from the TRD OCDB
  //
  // Usage:
  //
  // void DumpOCDBtoTree(const Char_t* outFilename,
  // 		       const Char_t* runListFilename,
  //		       Int_t firstRun = -1, Int_t lastRun = -1,
  //		       const Char_t* storageURI = "alien://folder=/alice/data/2010/OCDB/",
  //		       Bool_t getHVInfo = kTRUE,
  //		       Bool_t getCalibrationInfo = kFALSE,
  //                     Bool_t getGasInfo = kFALSE,
  //		       Bool_t getStatusInfo = kFALSE,
  //		       Bool_t getGoofieInfo = kFALSE,
  //		       Bool_t getDCSInfo = kFALSE,
  //		       Bool_t getGRPInfo = kTRUE)
  //
  //    * runListFilename   - name of an ascii file containing run numbers
  //    * outFilename       - name of the root file where the TRD OCDB information tree to be stored
  //    * firstRun, lastRun - lowest and highest run numbers (from the ascii file) to be dumped
  //                          if these numbers are not specified (-1) all run numbers in the input ascii file will
  //                          be used. If the run list file is not specified then all runs in this interval
  //                          will be queried
  //    * getHVInfo         - flag to switch on/off HV information (HV anode and drift currents/voltages)
  //    * getCalibrationInfo- flag to switch on/off calibration information (gain, pedestal, T0, vdrift, pad status)
  //    * getGasInfo        - flag to switch on/off gas related information (gas composition, overpressure, temperature)
  //    * getStatusInfo     - flag to switch on/off status information (trd_chamberStatus)
  //    * getGoofieInfo     - flag to switch on/off goofie information (gain, HV, pressure, temperature, drift velocity,
  //                          gas composition)
  //    * getDCSInfo        - flag to switch on/off DCS information
  //    * getGRPInfo        - flag to switch on/off GRP information --> there will be no time information in the output tree
  //    * storageURI        - path of the OCDB database (if it is on alien, be sure to have a valid/active token)


  #include <iostream>
  #include <fstream>
  #include <string>
  #include <exception>
  #include "TError.h"
  #include "TVectorD.h"
  #include "TTreeStream.h"
  #include "TObjString.h"
  #include "TTimeStamp.h"
  #include "TH1.h"
  #include "TMath.h"
  #include "TObjArray.h"
  #include "TFile.h"
  #include "TSystem.h"
  #include "TGrid.h"
  #include "AliCDBManager.h"
  #include "AliCDBStorage.h"
  #include "AliCDBEntry.h"
  #include "AliTRDcalibDB.h"
  #include "AliGRPObject.h"
  #include "AliDCSSensor.h"
  #include "AliTRDSensorArray.h"
  #include "AliTRDCalDet.h"
  #include "AliTRDCalPad.h"
  #include "AliTRDCalROC.h"
  #include "AliTRDCalPadStatus.h"
  #include "AliTRDCalChamberStatus.h"
  #include "AliTRDCalSingleChamberStatus.h"
  #include "AliTRDCalDCS.h"
  #include "AliTRDCalDCSFEE.h"
  #include "AliTRDCalDCSv2.h"
  #include "AliTRDCalDCSFEEv2.h"
  using namespace std;

  // global variables
  // histograms used for extracting the mean and RMS of calibration parameters
  TH1F *gRunWiseHisto;
  TH1F *gSuperModuleWiseHisto;
  TH1F *gChamberWiseHisto;

  // global constants
  const Int_t gkSuperModuleStatus[18] = {1, 1, 0, 0, 0, 0, 0, 1, 1,   // (1-installed)
                1, 1, 0, 0, 0, 0, 0, 0, 1};
  AliCDBStorage *storage = NULL;
  AliCDBManager *manager = NULL;
  Int_t currRun(0);
  void MakeRunListFromOCDB(const Char_t* directory, const Char_t* outfile, Bool_t fromAlien=kFALSE);
  void ProcessTRDSensorArray(AliTRDSensorArray*, TTimeStamp, TVectorD&);
  void ProcessTRDCalibArray(AliTRDCalDet*, AliTRDCalPad*, TString, Double_t&, Double_t&,
        TVectorD&, TVectorD&, TVectorD&, TVectorD&);
  void ProcessTRDstatus(AliTRDCalChamberStatus*, AliTRDCalPadStatus*, Float_t&, TVectorD&, TVectorD&);
  void ProcessTRDCalDCSFEE(TObject*, TObject*, Int_t&, Int_t&, Int_t&, Int_t&, Int_t&, Int_t&, Bool_t&,
        TVectorD&, TVectorD&);
  AliCDBEntry* GetCDBentry(const Char_t *path, Bool_t owner=kTRUE);
  //__________________________________________________________________________________________
  void DumpOCDBtoTree(const Char_t* outFilename,
        const Char_t* runListFilename,
        Int_t firstRun = -1, Int_t lastRun = -1,
        const Char_t* storageURI = "alien://folder=/alice/data/2010/OCDB/",
        Bool_t getHVInfo = kTRUE,
        Bool_t getCalibrationInfo = kFALSE,
                    Bool_t getGasInfo = kFALSE,
        Bool_t getStatusInfo = kFALSE,
        Bool_t getGoofieInfo = kFALSE,
        Bool_t getDCSInfo = kFALSE,
        Bool_t getGRPInfo = kTRUE) {
  //
  // Main function to steer the extraction of TRD OCDB information
  //


  TTimeStamp jobStartTime;
  // if the storage is on alien than we need to do some extra stuff
  TString storageString(storageURI);
  if(storageString.Contains("alien://")) {
    TGrid::Connect("alien://");
  }
  // initialize the OCDB manager
  manager = AliCDBManager::Instance();
  manager->SetDefaultStorage(storageURI);
  manager->SetCacheFlag(kTRUE);
  storage = manager->GetDefaultStorage();
  AliCDBEntry *entry = NULL;

  // initialize the tree
  TTreeSRedirector *treeStreamer = new TTreeSRedirector(outFilename);

  // initialize the histograms used for extracting the mean and RMS
  gRunWiseHisto = new TH1F("runHisto", "runHisto", 200, -10.0, 10.0);
  gSuperModuleWiseHisto = new TH1F("smHisto", "smHisto", 200, -10.0, 10.0);
  gChamberWiseHisto = new TH1F("chamberHisto", "chamberHisto", 200, -10.0, 10.0);

  // open the ascii file with run numbers
  ifstream in;
  if(runListFilename[0]!='\0')
    in.open(runListFilename);

  // if a run list file was not specified then use the run range
  if(runListFilename[0]=='\0' && firstRun!=-1 && lastRun!=-1)
    currRun = firstRun-1;

  TVectorD runs;
  TVectorD rejectedRuns;
  TTimeStamp loopStartTime;

  // loop over runs
  while(1) {
    // check if we still have run numbers in the file or provided range
    if(runListFilename[0]=='\0' && firstRun!=-1 && lastRun!=-1) {
      currRun++;
      if(currRun>lastRun) break;
    }
    if(runListFilename[0]!='\0') {
      if(in.eof()) break;
      if(!(in>>currRun)) continue;
      if(currRun < (firstRun==-1 ? 0 : firstRun) ||
          currRun > (lastRun==-1 ? 999999999 : lastRun)) continue;
    }

    printf("\n\tRUN[%d]\n", currRun);
    // check if the run was processed already
    Bool_t runProcessed = kFALSE;
    for(Int_t iRun=0; iRun<runs.GetNoElements(); iRun++) {
      if(runs[iRun]==currRun) runProcessed = kTRUE;
    }
    if(runProcessed) {
      cout << "Run processed already" << endl;
      continue;
    }
    manager->SetRun(currRun);

    // Get the GRP data. Only runs with a corresponding GRP entry in the OCDB
    // will be processed.
    time_t startTime = 0;
    time_t endTime = 0;
    TObjString runType("UNKNOWN");
    AliDCSSensor *cavern_pressure = 0x0;
    AliDCSSensor *surface_pressure = 0x0;
    UInt_t detectorMask = 0;
    if(getGRPInfo){
      if(!(entry = GetCDBentry("GRP/GRP/Data", 0))) {
        rejectedRuns.ResizeTo(rejectedRuns.GetNoElements()+1);
        rejectedRuns[rejectedRuns.GetNoElements()-1] = currRun;
        continue;
      }
    }
    AliGRPObject* grpObject = dynamic_cast<AliGRPObject*>(entry->GetObject());
    if(grpObject) {
      startTime = grpObject->GetTimeStart();
      endTime = grpObject->GetTimeEnd();
      runType = grpObject->GetRunType().Data();
      cavern_pressure = grpObject->GetCavernAtmosPressure();
      surface_pressure = grpObject->GetSurfaceAtmosPressure();
      detectorMask = grpObject->GetDetectorMask();
      TTimeStamp start(grpObject->GetTimeStart());
      TTimeStamp end(grpObject->GetTimeEnd());
      cout << "   Start time: " << start.GetDate()/10000 << "/"
      << (start.GetDate()/100)-(start.GetDate()/10000)*100 << "/"
      << start.GetDate()%100 << "   "
      << start.GetTime()/10000 << ":"
      << (start.GetTime()/100)-(start.GetTime()/10000)*100 << ":"
      << start.GetTime()%100 << endl;
      cout << "   End time: " << end.GetDate()/10000 << "/"
      << (end.GetDate()/100)-(end.GetDate()/10000)*100 << "/"
      << end.GetDate()%100 << "   "
      << end.GetTime()/10000 << ":"
      << (end.GetTime()/100)-(end.GetTime()/10000)*100 << ":"
      << end.GetTime()%100 << endl;
      cout << "   Run type = " << grpObject->GetRunType().Data() << endl;
    } else {
      if(getGRPInfo) {
        cout << "No GRP info available --> skiping this run!" << endl;
        // add the run number to the list of rejected runs
        rejectedRuns.ResizeTo(rejectedRuns.GetNoElements()+1);
        rejectedRuns[rejectedRuns.GetNoElements()-1] = currRun;
        continue;
      }
    }

    // remove runs with zero time duration
    if(getGRPInfo && startTime==endTime) {
      if(grpObject) delete grpObject;
      // add the run number to the list of rejected runs
      rejectedRuns.ResizeTo(rejectedRuns.GetNoElements()+1);
      rejectedRuns[rejectedRuns.GetNoElements()-1] = currRun;
      continue;
    }

    // time step for time dependent information (change this if you need something else)
    UInt_t dTime = TMath::Max((endTime-startTime)/20, Long_t(5*60));

    // get monitoring information
    AliTRDSensorArray *anodeISensors = 0;
    AliTRDSensorArray *anodeUSensors = 0;
    AliTRDSensorArray *driftISensors = 0;
    AliTRDSensorArray *driftUSensors = 0;
    AliTRDSensorArray *temperatureSensors = 0;
    AliTRDSensorArray *chamberStatusSensors = 0;
    AliTRDSensorArray *overpressureSensors = 0;
    AliTRDSensorArray *gasCO2Sensors = 0;
    AliTRDSensorArray *gasH2OSensors = 0;
    AliTRDSensorArray *gasO2Sensors = 0;
    //  AliTRDSensorArray *adcClkPhaseSensors = 0;

    if(getHVInfo) {
      // anode hv currents (per chamber)
      if((entry = GetCDBentry("TRD/Calib/trd_hvAnodeImon"))) anodeISensors = (AliTRDSensorArray*)entry->GetObject();
      // anode hv voltages (per chamber)
      if((entry = GetCDBentry("TRD/Calib/trd_hvAnodeUmon"))) anodeUSensors = (AliTRDSensorArray*)entry->GetObject();
      // drift hv currents (per chamber)
      if((entry = GetCDBentry("TRD/Calib/trd_hvDriftImon"))) driftISensors = (AliTRDSensorArray*)entry->GetObject();
      // drift hv voltages (per chamber)
      if((entry = GetCDBentry("TRD/Calib/trd_hvDriftUmon"))) driftUSensors = (AliTRDSensorArray*)entry->GetObject();
    }  // end if(getHVInfo)

    if(getStatusInfo) {
      // chamber status (from sensors)
      if((entry = GetCDBentry("TRD/Calib/trd_chamberStatus"))) chamberStatusSensors = (AliTRDSensorArray*)entry->GetObject();
    }   // end if(getStatusInfo)

    if(getGasInfo) {
      // temperatures from chamber sensors (per chamber)
      if((entry = GetCDBentry("TRD/Calib/trd_envTemp"))) temperatureSensors = (AliTRDSensorArray*)entry->GetObject();

      // gas overpressure (per whole TRD)
      if((entry = GetCDBentry("TRD/Calib/trd_gasOverpressure"))) overpressureSensors = (AliTRDSensorArray*)entry->GetObject();

      // gas CO2 fraction (whole TRD)
      if((entry = GetCDBentry("TRD/Calib/trd_gasCO2"))) gasCO2Sensors = (AliTRDSensorArray*)entry->GetObject();

      // gas H2O fraction (whole TRD)
      if((entry = GetCDBentry("TRD/Calib/trd_gasH2O"))) gasH2OSensors = (AliTRDSensorArray*)entry->GetObject();

      // gas O2 fraction (whole TRD)
      if((entry = GetCDBentry("TRD/Calib/trd_gasO2"))) gasO2Sensors = (AliTRDSensorArray*)entry->GetObject();

      // ADC Clk phase (whole TRD)
  /*
      entry = manager->Get("TRD/Calib/trd_adcClkPhase");
      if(entry) {
  entry->SetOwner(kTRUE);
  adcClkPhaseSensors = (AliTRDSensorArray*)entry->GetObject();
      }
  */
    }  // end if getGasInfo


    // get calibration information
    // process gains
    AliTRDCalDet *chamberGainFactor = 0;
    AliTRDCalPad *padGainFactor = 0;
    Double_t runMeanGain=0.0, runRMSGain=0.0;
    TVectorD chamberMeanGain(AliTRDcalibDB::kNdet);
    TVectorD chamberRMSGain(AliTRDcalibDB::kNdet);
    TVectorD smMeanGain(AliTRDcalibDB::kNsector);
    TVectorD smRMSGain(AliTRDcalibDB::kNsector);
    TString parName("Gain");
    if(getCalibrationInfo) {
      if((entry = GetCDBentry("TRD/Calib/ChamberGainFactor", 0))) chamberGainFactor = (AliTRDCalDet*)entry->GetObject();

      if((entry = GetCDBentry("TRD/Calib/LocalGainFactor", 0))) padGainFactor = (AliTRDCalPad*)entry->GetObject();

      ProcessTRDCalibArray(chamberGainFactor, padGainFactor,
          parName,
          runMeanGain, runRMSGain,
          chamberMeanGain, chamberRMSGain,
          smMeanGain, smRMSGain);
    }

    // process pedestals
    AliTRDCalDet *chamberNoise = 0;
    AliTRDCalPad *padNoise = 0;
    Double_t runMeanNoise=0.0, runRMSNoise=0.0;
    TVectorD chamberMeanNoise(AliTRDcalibDB::kNdet);
    TVectorD chamberRMSNoise(AliTRDcalibDB::kNdet);
    TVectorD smMeanNoise(AliTRDcalibDB::kNsector);
    TVectorD smRMSNoise(AliTRDcalibDB::kNsector);
    parName = "Noise";
    if(getCalibrationInfo) {
      if((entry = GetCDBentry("TRD/Calib/DetNoise", 0))) chamberNoise = (AliTRDCalDet*)entry->GetObject();

      if((entry = GetCDBentry("TRD/Calib/PadNoise", 0))) padNoise = (AliTRDCalPad*)entry->GetObject();

      ProcessTRDCalibArray(chamberNoise, padNoise,
          parName,
          runMeanNoise, runRMSNoise,
          chamberMeanNoise, chamberRMSNoise,
          smMeanNoise, smRMSNoise);
    }

    // process drift velocity
    AliTRDCalDet *chamberVdrift = 0;
    AliTRDCalPad *padVdrift = 0;
    Double_t runMeanVdrift=0.0, runRMSVdrift=0.0;
    TVectorD chamberMeanVdrift(AliTRDcalibDB::kNdet);
    TVectorD chamberRMSVdrift(AliTRDcalibDB::kNdet);
    TVectorD smMeanVdrift(AliTRDcalibDB::kNsector);
    TVectorD smRMSVdrift(AliTRDcalibDB::kNsector);
    parName = "Vdrift";
    if(getCalibrationInfo) {
      if((entry = GetCDBentry("TRD/Calib/ChamberVdrift", 0))) chamberVdrift = (AliTRDCalDet*)entry->GetObject();

      if((entry = GetCDBentry("TRD/Calib/LocalVdrift", 0))) padVdrift = (AliTRDCalPad*)entry->GetObject();

      ProcessTRDCalibArray(chamberVdrift, padVdrift,
          parName,
          runMeanVdrift, runRMSVdrift,
          chamberMeanVdrift, chamberRMSVdrift,
          smMeanVdrift, smRMSVdrift);
    }

    // process T0
    AliTRDCalDet *chamberT0 = 0;
    AliTRDCalPad *padT0 = 0;
    Double_t runMeanT0=0.0, runRMST0=0.0;
    TVectorD chamberMeanT0(AliTRDcalibDB::kNdet);
    TVectorD chamberRMST0(AliTRDcalibDB::kNdet);
    TVectorD smMeanT0(AliTRDcalibDB::kNsector);
    TVectorD smRMST0(AliTRDcalibDB::kNsector);
    parName = "T0";
    if(getCalibrationInfo) {
      if((entry = GetCDBentry("TRD/Calib/ChamberT0", 0))) chamberT0 = (AliTRDCalDet*)entry->GetObject();

      if((entry = GetCDBentry("TRD/Calib/LocalT0", 0))) padT0 = (AliTRDCalPad*)entry->GetObject();

      ProcessTRDCalibArray(chamberT0, padT0,
          parName,
          runMeanT0, runRMST0,
          chamberMeanT0, chamberRMST0,
          smMeanT0, smRMST0);
    }

    // process pad and chamber status
    AliTRDCalChamberStatus* chamberStatus = 0;
    AliTRDCalPadStatus *padStatus = 0;
    Float_t runBadPadFraction=0.0;
    TVectorD chamberBadPadFraction(AliTRDcalibDB::kNdet);
    TVectorD chamberStatusValues(AliTRDcalibDB::kNdet);
    if(getCalibrationInfo) {
      if((entry = GetCDBentry("TRD/Calib/ChamberStatus", 0))) chamberStatus = (AliTRDCalChamberStatus*)entry->GetObject();

      if((entry = GetCDBentry("TRD/Calib/PadStatus", 0))) padStatus = (AliTRDCalPadStatus*)entry->GetObject();

      ProcessTRDstatus(chamberStatus, padStatus,
            runBadPadFraction, chamberBadPadFraction,
            chamberStatusValues);
    }

    // get Goofie information
    AliTRDSensorArray *goofieGainSensors = 0x0;
    AliTRDSensorArray *goofieHvSensors = 0x0;
    AliTRDSensorArray *goofiePressureSensors = 0x0;
    AliTRDSensorArray *goofieTempSensors = 0x0;
    AliTRDSensorArray *goofieVelocitySensors = 0x0;
    AliTRDSensorArray *goofieCO2Sensors = 0x0;
    AliTRDSensorArray *goofieN2Sensors = 0x0;

    if(getGoofieInfo) {
      // goofie gain
      if((entry = GetCDBentry("TRD/Calib/trd_goofieGain"))) goofieGainSensors = (AliTRDSensorArray*)entry->GetObject();

      // goofie HV
      if((entry = GetCDBentry("TRD/Calib/trd_goofieHv"))) goofieHvSensors = (AliTRDSensorArray*)entry->GetObject();

      // goofie pressure
      if((entry = GetCDBentry("TRD/Calib/trd_goofiePressure"))) goofiePressureSensors = (AliTRDSensorArray*)entry->GetObject();

      // goofie temperature
      if((entry = GetCDBentry("TRD/Calib/trd_goofieTemp"))) goofieTempSensors = (AliTRDSensorArray*)entry->GetObject();

      // goofie drift velocity
      if((entry = GetCDBentry("TRD/Calib/trd_goofieVelocity"))) goofieVelocitySensors = (AliTRDSensorArray*)entry->GetObject();

      // goofie CO2
      if((entry = GetCDBentry("TRD/Calib/trd_goofieCO2"))) goofieCO2Sensors = (AliTRDSensorArray*)entry->GetObject();

      // goofie N2
      if((entry = GetCDBentry("TRD/Calib/trd_goofieN2"))) goofieN2Sensors = (AliTRDSensorArray*)entry->GetObject();
    }   // end if getGoofieInfo

    // process the DCS FEE arrays
    Int_t nSB1 = 0; Int_t nSB2 = 0; Int_t nSB3 = 0; Int_t nSB4 = 0; Int_t nSB5 = 0;
    Int_t nChanged = 0;
    Bool_t sorAndEor = kFALSE;
    TVectorD statusArraySOR(AliTRDcalibDB::kNdet);
    TVectorD statusArrayEOR(AliTRDcalibDB::kNdet);
    Int_t dcsFeeGlobalNTimeBins = -1;
    Int_t dcsFeeGlobalConfigTag = -1;
    Int_t dcsFeeGlobalSingleHitThres = -1;
    Int_t dcsFeeGlobalThreePadClustThres = -1;
    Int_t dcsFeeGlobalSelectiveNoSZ = -1;
    Int_t dcsFeeGlobalTCFilterWeight = -1;
    Int_t dcsFeeGlobalTCFilterShortDecPar = -1;
    Int_t dcsFeeGlobalTCFilterLongDecPar = -1;
    Int_t dcsFeeGlobalModeFastStatNoise = -1;
    TObjString dcsFeeGlobalConfigVersion("");
    TObjString dcsFeeGlobalConfigName("");
    TObjString dcsFeeGlobalFilterType("");
    TObjString dcsFeeGlobalReadoutParam("");
    TObjString dcsFeeGlobalTestPattern("");
    TObjString dcsFeeGlobalTrackletMode("");
    TObjString dcsFeeGlobalTrackletDef("");
    TObjString dcsFeeGlobalTriggerSetup("");
    TObjString dcsFeeGlobalAddOptions("");
    if(getDCSInfo) {
      TObjArray *objArrayCDB = 0;
      TObject* calDCSsor = 0x0;
      TObject* calDCSeor = 0x0;
      if((entry = GetCDBentry("TRD/Calib/DCS"))) objArrayCDB = (TObjArray*)entry->GetObject();
      if(objArrayCDB) {
        objArrayCDB->SetOwner(kTRUE);
        calDCSsor = objArrayCDB->At(0);
        calDCSeor = objArrayCDB->At(1);

        ProcessTRDCalDCSFEE(calDCSsor, calDCSeor,
          nSB1, nSB2, nSB3, nSB4, nSB5,
          nChanged, sorAndEor, statusArraySOR, statusArrayEOR);
      }
      if(calDCSsor || calDCSeor) {
        TObject *caldcs = 0;
        if(calDCSsor) caldcs = calDCSsor;
        else caldcs = calDCSeor;
	Int_t calVer = 0;
	if (!strcmp(caldcs->ClassName(),"AliTRDCalDCS"))   calVer = 1;
	if (!strcmp(caldcs->ClassName(),"AliTRDCalDCSv2")) calVer = 2;
        if (calVer == 1) {
	  dcsFeeGlobalNTimeBins           = ((AliTRDCalDCS*)caldcs)->GetGlobalNumberOfTimeBins();
	  dcsFeeGlobalConfigTag           = ((AliTRDCalDCS*)caldcs)->GetGlobalConfigTag();
	  dcsFeeGlobalSingleHitThres      = ((AliTRDCalDCS*)caldcs)->GetGlobalSingleHitThres();
	  dcsFeeGlobalThreePadClustThres  = ((AliTRDCalDCS*)caldcs)->GetGlobalThreePadClustThres();
	  dcsFeeGlobalSelectiveNoSZ       = ((AliTRDCalDCS*)caldcs)->GetGlobalSelectiveNoZS();
	  dcsFeeGlobalTCFilterWeight      = ((AliTRDCalDCS*)caldcs)->GetGlobalTCFilterWeight();
	  dcsFeeGlobalTCFilterShortDecPar = ((AliTRDCalDCS*)caldcs)->GetGlobalTCFilterShortDecPar();
	  dcsFeeGlobalTCFilterLongDecPar  = ((AliTRDCalDCS*)caldcs)->GetGlobalTCFilterLongDecPar();
	  dcsFeeGlobalModeFastStatNoise   = ((AliTRDCalDCS*)caldcs)->GetGlobalModeFastStatNoise();
	  dcsFeeGlobalConfigVersion       = ((AliTRDCalDCS*)caldcs)->GetGlobalConfigVersion().Data();
	  dcsFeeGlobalConfigName          = ((AliTRDCalDCS*)caldcs)->GetGlobalConfigName().Data();
	  dcsFeeGlobalFilterType          = ((AliTRDCalDCS*)caldcs)->GetGlobalFilterType().Data();
	  dcsFeeGlobalReadoutParam        = ((AliTRDCalDCS*)caldcs)->GetGlobalReadoutParam().Data();
	  dcsFeeGlobalTestPattern         = ((AliTRDCalDCS*)caldcs)->GetGlobalTestPattern().Data();
	  dcsFeeGlobalTrackletMode        = ((AliTRDCalDCS*)caldcs)->GetGlobalTrackletMode().Data();
	  dcsFeeGlobalTrackletDef         = ((AliTRDCalDCS*)caldcs)->GetGlobalTrackletDef().Data();
	  dcsFeeGlobalTriggerSetup        = ((AliTRDCalDCS*)caldcs)->GetGlobalTriggerSetup().Data();
	  dcsFeeGlobalAddOptions          = ((AliTRDCalDCS*)caldcs)->GetGlobalAddOptions().Data();
	}
        if (calVer == 2) {
	  dcsFeeGlobalNTimeBins           = ((AliTRDCalDCSv2*)caldcs)->GetGlobalNumberOfTimeBins();
	  dcsFeeGlobalConfigTag           = ((AliTRDCalDCSv2*)caldcs)->GetGlobalConfigTag();
	  dcsFeeGlobalSingleHitThres      = ((AliTRDCalDCSv2*)caldcs)->GetGlobalSingleHitThres();
	  dcsFeeGlobalThreePadClustThres  = ((AliTRDCalDCSv2*)caldcs)->GetGlobalThreePadClustThres();
	  dcsFeeGlobalSelectiveNoSZ       = ((AliTRDCalDCSv2*)caldcs)->GetGlobalSelectiveNoZS();
	  dcsFeeGlobalTCFilterWeight      = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTCFilterWeight();
	  dcsFeeGlobalTCFilterShortDecPar = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTCFilterShortDecPar();
	  dcsFeeGlobalTCFilterLongDecPar  = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTCFilterLongDecPar();
	  dcsFeeGlobalModeFastStatNoise   = ((AliTRDCalDCSv2*)caldcs)->GetGlobalModeFastStatNoise();
	  dcsFeeGlobalConfigVersion       = ((AliTRDCalDCSv2*)caldcs)->GetGlobalConfigVersion().Data();
	  dcsFeeGlobalConfigName          = ((AliTRDCalDCSv2*)caldcs)->GetGlobalConfigName().Data();
	  dcsFeeGlobalFilterType          = ((AliTRDCalDCSv2*)caldcs)->GetGlobalFilterType().Data();
	  dcsFeeGlobalReadoutParam        = ((AliTRDCalDCSv2*)caldcs)->GetGlobalReadoutParam().Data();
	  dcsFeeGlobalTestPattern         = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTestPattern().Data();
	  dcsFeeGlobalTrackletMode        = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTrackletMode().Data();
	  dcsFeeGlobalTrackletDef        = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTrackletDef().Data();
	  dcsFeeGlobalTriggerSetup        = ((AliTRDCalDCSv2*)caldcs)->GetGlobalTriggerSetup().Data();
	  dcsFeeGlobalAddOptions          = ((AliTRDCalDCSv2*)caldcs)->GetGlobalAddOptions().Data();
	}
      }
      if(objArrayCDB) objArrayCDB->RemoveAll();
    }   // end if(getDCSInfo)


    // loop over time steps
    for(UInt_t iTime = (getGRPInfo ? startTime : 0); iTime<=(getGRPInfo ? endTime : 0); iTime += (getGRPInfo ? dTime : 1)) {
      // time stamp
      TTimeStamp iStamp(iTime);
      cout << "time step  " << iStamp.GetDate()/10000 << "/"
      << (iStamp.GetDate()/100)-(iStamp.GetDate()/10000)*100 << "/"
      << iStamp.GetDate()%100 << "   "
      << iStamp.GetTime()/10000 << ":"
      << (iStamp.GetTime()/100)-(iStamp.GetTime()/10000)*100 << ":"
      << iStamp.GetTime()%100 << endl;

      // cavern pressure
      Float_t pressure = -99.;
      Bool_t inside=kFALSE;
      if(cavern_pressure) pressure = cavern_pressure->Eval(iStamp,inside);

      // surface pressure
      Float_t surfacePressure = -99.;
      if(surface_pressure) surfacePressure = surface_pressure->Eval(iStamp,inside);

      // anode I sensors
      TVectorD anodeIValues(AliTRDcalibDB::kNdet);
      if(anodeISensors) ProcessTRDSensorArray(anodeISensors, iStamp, anodeIValues);

      // anode U sensors
      TVectorD anodeUValues(AliTRDcalibDB::kNdet);
      if(anodeUSensors) ProcessTRDSensorArray(anodeUSensors, iStamp, anodeUValues);

      // drift I sensors
      TVectorD driftIValues(AliTRDcalibDB::kNdet);
      if(driftISensors) ProcessTRDSensorArray(driftISensors, iStamp, driftIValues);

      // drift U sensors
      TVectorD driftUValues(AliTRDcalibDB::kNdet);
      if(driftUSensors) ProcessTRDSensorArray(driftUSensors, iStamp, driftUValues);

      // chamber temperatures
      TVectorD envTempValues(AliTRDcalibDB::kNdet);
      if(temperatureSensors) ProcessTRDSensorArray(temperatureSensors, iStamp, envTempValues);

      // chamber status sensors
      TVectorD statusValues(AliTRDcalibDB::kNdet);
      if(chamberStatusSensors) ProcessTRDSensorArray(chamberStatusSensors, iStamp, statusValues);

      // gas overpressure
      TVectorD overpressureValues(overpressureSensors ? overpressureSensors->NumSensors() : 0);
      if(overpressureSensors) ProcessTRDSensorArray(overpressureSensors, iStamp, overpressureValues);

      // gas CO2
      TVectorD gasCO2Values(gasCO2Sensors ? gasCO2Sensors->NumSensors() : 0);
      if(gasCO2Sensors) ProcessTRDSensorArray(gasCO2Sensors, iStamp, gasCO2Values);

      // gas H2O
      TVectorD gasH2OValues(gasH2OSensors ? gasH2OSensors->NumSensors() : 0);
      if(gasH2OSensors) ProcessTRDSensorArray(gasH2OSensors, iStamp, gasH2OValues);

      // gas O2
      TVectorD gasO2Values(gasO2Sensors ? gasO2Sensors->NumSensors() : 0);
      if(gasO2Sensors) ProcessTRDSensorArray(gasO2Sensors, iStamp, gasO2Values);

      // ADC Clk phase
      //TVectorD adcClkPhaseValues(adcClkPhaseSensors ? adcClkPhaseSensors->NumSensors() : 0);
      //if(adcClkPhaseSensors) ProcessTRDSensorArray(adcClkPhaseSensors, iStamp, adcClkPhaseValues);

      // goofie gain
      TVectorD goofieGainValues(goofieGainSensors ? goofieGainSensors->NumSensors() : 0);
      if(goofieGainSensors) ProcessTRDSensorArray(goofieGainSensors, iStamp, goofieGainValues);

      // goofie HV
      TVectorD goofieHvValues(goofieHvSensors ? goofieHvSensors->NumSensors() : 0);
      if(goofieHvSensors) ProcessTRDSensorArray(goofieHvSensors, iStamp, goofieHvValues);

      // goofie pressure
      TVectorD goofiePressureValues(goofiePressureSensors ? goofiePressureSensors->NumSensors() : 0);
      if(goofiePressureSensors) ProcessTRDSensorArray(goofiePressureSensors, iStamp, goofiePressureValues);

      // goofie temperature
      TVectorD goofieTempValues(goofieTempSensors ? goofieTempSensors->NumSensors() : 0);
      if(goofieTempSensors) ProcessTRDSensorArray(goofieTempSensors, iStamp, goofieTempValues);

      // goofie drift velocity
      TVectorD goofieVelocityValues(goofieVelocitySensors ? goofieVelocitySensors->NumSensors() : 0);
      if(goofieVelocitySensors) ProcessTRDSensorArray(goofieVelocitySensors, iStamp, goofieVelocityValues);

      // goofie CO2
      TVectorD goofieCO2Values(goofieCO2Sensors ? goofieCO2Sensors->NumSensors() : 0);
      if(goofieCO2Sensors) ProcessTRDSensorArray(goofieCO2Sensors, iStamp, goofieCO2Values);

      // goofie N2
      TVectorD goofieN2Values(goofieN2Sensors ? goofieN2Sensors->NumSensors() : 0);
      if(goofieN2Sensors) ProcessTRDSensorArray(goofieN2Sensors, iStamp, goofieN2Values);

      // fill the tree
      (*treeStreamer)<< "trdTree"
          << "run=" << currRun
          << "time=" << iTime
          << "runType.=" << &runType;
      if(getGRPInfo) {
        (*treeStreamer)<< "trdTree"
            << "startTimeGRP=" << startTime
            << "endTimeGRP=" << endTime
            << "cavernPressure=" << pressure
            << "surfacePressure=" << surfacePressure
            << "detectorMask=" << detectorMask;
      }
      if(getHVInfo) {
        (*treeStreamer)<< "trdTree"
            << "hvAnodeI.=" << &anodeIValues
            << "hvAnodeU.=" << &anodeUValues
            << "hvDriftI.=" << &driftIValues
            << "hvDriftU.=" << &driftUValues;
      }
      if(getStatusInfo) {
        (*treeStreamer)<< "trdTree"
            << "sensorStatusValues.=" << &statusValues;
      }
      if(getGasInfo) {
        (*treeStreamer)<< "trdTree"
            << "envTemp.=" << &envTempValues
            << "gasOverPressure.=" << &overpressureValues
            << "gasCO2.=" << &gasCO2Values
            << "gasH2O.=" << &gasH2OValues
            << "gasO2.=" << &gasO2Values;
            //<< "adcClkPhase.=" << &adcClkPhaseValues;
      }
      if(getGoofieInfo) {
  (*treeStreamer)<< "trdTree"
            << "goofieGain.=" << &goofieGainValues
            << "goofieHV.=" << &goofieHvValues
            << "goofiePressure.=" << &goofiePressureValues
            << "goofieTemp.=" << &goofieTempValues
            << "goofieVelocity.=" << &goofieVelocityValues
            << "goofieCO2.=" << &goofieCO2Values
            << "goofieN2.=" << &goofieN2Values;
      }
      if(getCalibrationInfo) {
        (*treeStreamer)<< "trdTree"
            << "runMeanGain=" << runMeanGain
            << "runRMSGain=" << runRMSGain
            << "smMeanGain.=" << &smMeanGain
            << "smRMSGain.=" << &smRMSGain
            << "chamberMeanGain.=" << &chamberMeanGain
            << "chamberRMSGain.=" << &chamberRMSGain
            << "runMeanNoise=" << runMeanNoise
            << "runRMSNoise=" << runRMSNoise
            << "smMeanNoise.=" << &smMeanNoise
            << "smRMSNoise.=" << &smRMSNoise
            << "chamberMeanNoise.=" << &chamberMeanNoise
            << "chamberRMSNoise.=" << &chamberRMSNoise
            << "runMeanVdrift=" << runMeanVdrift
            << "runRMSVdrift=" << runRMSVdrift
            << "smMeanVdrift.=" << &smMeanVdrift
            << "smRMSVdrift.=" << &smRMSVdrift
            << "chamberMeanVdrift.=" << &chamberMeanVdrift
            << "chamberRMSVdrift.=" << &chamberRMSVdrift
            << "runMeanT0=" << runMeanT0
            << "runRMST0=" << runRMST0
            << "smMeanT0.=" << &smMeanT0
            << "smRMST0.=" << &smRMST0
            << "chamberMeanT0.=" << &chamberMeanT0
            << "chamberRMST0.=" << &chamberRMST0
            << "runBadPadFraction=" << runBadPadFraction
            << "chamberBadPadFraction.=" << &chamberBadPadFraction
            << "chamberStatusValues.=" << &chamberStatusValues;
      }
      if(getDCSInfo) {
        (*treeStreamer)<< "trdTree"
            << "dcsFeeGlobalNTimeBins=" << dcsFeeGlobalNTimeBins
            << "dcsFeeGlobalConfigTag=" << dcsFeeGlobalConfigTag
            << "dcsFeeGlobalSingleHitThres=" << dcsFeeGlobalSingleHitThres
            << "dcsFeeGlobalThreePadClustThres=" << dcsFeeGlobalThreePadClustThres
            << "dcsFeeGlobalSelectiveNoSZ=" << dcsFeeGlobalSelectiveNoSZ
            << "dcsFeeGlobalTCFilterWeight=" << dcsFeeGlobalTCFilterWeight
            << "dcsFeeGlobalTCFilterShortDecPar=" << dcsFeeGlobalTCFilterShortDecPar
            << "dcsFeeGlobalTCFilterLongDecPar=" << dcsFeeGlobalTCFilterLongDecPar
            << "dcsFeeGlobalModeFastStatNoise=" << dcsFeeGlobalModeFastStatNoise
    //		     << "dcsFeeGlobalConfigVersion.=" << &dcsFeeGlobalConfigVersion
    //		     << "dcsFeeGlobalConfigName.=" << &dcsFeeGlobalConfigName
    //		     << "dcsFeeGlobalFilterType.=" << &dcsFeeGlobalFilterType
    //		     << "dcsFeeGlobalReadoutParam.=" << &dcsFeeGlobalReadoutParam
    //		     << "dcsFeeGlobalTestPattern.=" << &dcsFeeGlobalTestPattern
    //		     << "dcsFeeGlobalTrackletMode.=" << &dcsFeeGlobalTrackletMode
    //		     << "dcsFeeGlobalTrackletDef.=" << &dcsFeeGlobalTrackletDef
    //		     << "dcsFeeGlobalTriggerSetup.=" << &dcsFeeGlobalTriggerSetup
    //		     << "dcsFeeGlobalAddOptions.=" << &dcsFeeGlobalAddOptions
            << "statusDCSFEESOR.=" << &statusArraySOR
            << "statusDCSFEEEOR.=" << &statusArrayEOR
            << "SORandEOR=" << sorAndEor
            << "nChanged=" << nChanged
            << "nSB1=" << nSB1
            << "nSB2=" << nSB2
            << "nSB3=" << nSB3
            << "nSB4=" << nSB4
            << "nSB5=" << nSB5;
      }
      (*treeStreamer)<< "trdTree"
          << "\n";
    }  // end loop over time steps

    // add the run number to the list of runs
    runs.ResizeTo(runs.GetNoElements()+1);
    runs[runs.GetNoElements()-1] = currRun;

    // do some cleaning
    if(grpObject) delete grpObject;
    if(anodeISensors) anodeISensors->Clear();
    if(anodeUSensors) anodeUSensors->Clear();
    if(driftISensors) driftISensors->Clear();
    if(driftUSensors) driftUSensors->Clear();
    if(temperatureSensors) temperatureSensors->Clear();
    if(overpressureSensors) overpressureSensors->Clear();
    if(gasCO2Sensors) gasCO2Sensors->Clear();
    if(gasH2OSensors) gasH2OSensors->Clear();
    if(gasO2Sensors) gasO2Sensors->Clear();
    //if(adcClkPhaseSensors) adcClkPhaseSensors->Clear();
    if(goofieGainSensors) goofieGainSensors->Clear();
    if(goofieHvSensors) goofieHvSensors->Clear();
    if(goofiePressureSensors) goofiePressureSensors->Clear();
    if(goofieTempSensors) goofieTempSensors->Clear();
    if(goofieVelocitySensors) goofieVelocitySensors->Clear();
    if(goofieCO2Sensors) goofieCO2Sensors->Clear();
    if(goofieN2Sensors) goofieN2Sensors->Clear();
    if(chamberGainFactor) delete chamberGainFactor;
    if(padGainFactor) delete padGainFactor;
    if(chamberNoise) delete chamberNoise;
    if(padNoise) delete padNoise;
    if(chamberVdrift) delete chamberVdrift;
    if(padVdrift) delete padVdrift;
    if(chamberT0) delete chamberT0;
    if(padT0) delete padT0;
    if(chamberStatus) delete chamberStatus;
    if(padStatus) delete padStatus;
  } // end while (loop over runs)
  TTimeStamp loopEndTime;

  treeStreamer->GetFile()->cd();
  runs.Write("runs");
  delete treeStreamer;

  // output some job informations
  TTimeStamp jobEndTime;
  cout << "=============================================" << endl;
  cout << "Job launched at          :  " << jobStartTime.AsString() << endl;
  cout << "Loop over runs started at:  " << loopStartTime.AsString() << endl;
  cout << "Loop over runs ended at  :  " << loopEndTime.AsString() << endl;
  cout << "Job ended at             :  " << jobEndTime.AsString() << endl;
  cout << "Initialization duration  :  "
        << loopStartTime.GetSec() - jobStartTime.GetSec() << " seconds" << endl;
  cout << "Loop over runs duration  :  "
        << loopEndTime.GetSec() - loopStartTime.GetSec() << " seconds" << endl;
  cout << "Post loop                :  "
        << jobEndTime.GetSec() - loopEndTime.GetSec() << " seconds" << endl;
  cout << "Running time per processed run:  "
        << (loopEndTime.GetSec()-loopStartTime.GetSec())/(runs.GetNoElements()>0 ? Double_t(runs.GetNoElements()) : 1.0)
        << " sec./run" << endl;
  cout << "Running time per input run:  "
        << (loopEndTime.GetSec()-loopStartTime.GetSec())/((rejectedRuns.GetNoElements()+runs.GetNoElements())>0 ? Double_t(runs.GetNoElements()+rejectedRuns.GetNoElements()) : 1.0)
        << " sec./run" << endl;

  // print the runs that had problems
  cout << "number of rejected runs: " << rejectedRuns.GetNoElements() << endl;
  cout << "rejected run numbers" << endl;
  cout << "********************" << endl;
  for(Int_t iRun=0; iRun<rejectedRuns.GetNoElements(); iRun++) {
    cout << rejectedRuns[iRun] << "    ";
    if(iRun%10==0) cout << endl;
  }
  cout << "=============================================" << endl;
  return;
  }

  //__________________________________________________________________________________________
  void ProcessTRDSensorArray(AliTRDSensorArray *sensorArray, TTimeStamp timeStamp, TVectorD &values) {
  // Fill a vector with sensor values for a given time stamp
  // The sensor->Eval() method makes interpolation inside the covered time interval
  // and returns the value at the closest time limit (start or end) outside the covered time range
  AliDCSSensor *sensor;
  Bool_t inside=kFALSE;
  for(Int_t i=0; i<sensorArray->NumSensors(); i++) {
    sensor = sensorArray->GetSensorNum(i);
    if(sensor && sensor->GetGraph())
      values[i] = sensor->Eval(timeStamp,inside);
    else
      values[i] = -99.;
  }
  return;
  }

  //__________________________________________________________________________________________
  void ProcessTRDCalibArray(AliTRDCalDet* chamberCalib, AliTRDCalPad *padCalib,
        TString parName,
        Double_t &runValue, Double_t &runRMS,
        TVectorD &chamberValues, TVectorD &chamberValuesRMS,
        TVectorD &superModuleValues, TVectorD &superModuleValuesRMS) {
  // Process the calibrations for a given run.
  // Calculates the run and chamber wise averages
  //

  // check if the calibration parameter is multiplicative or additive
  Bool_t multiplicative = kTRUE;
  if(!parName.CompareTo("T0")) multiplicative = kFALSE;

  // first iteration (calculate all averages and RMS without discrimination on the SM average)
  gRunWiseHisto->Reset();
  for(Int_t iSM = 0; iSM<AliTRDcalibDB::kNsector; iSM++) {   // loop over supermodules
    // reset the super module histogram
    gSuperModuleWiseHisto->Reset();
    // check if SM is installed
    if(!gkSuperModuleStatus[iSM]) continue;
    for(Int_t iChamber=iSM*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer;
  iChamber < (iSM+1)*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer;
  iChamber++) {  // loop over chambers in this supermodule
      // get the chamber value
      Float_t chamberValue = chamberCalib->GetValue(iChamber);
      // get the ROC object
      AliTRDCalROC *chamberROC = padCalib->GetCalROC(iChamber);
      if(!chamberROC)
  continue;
      gChamberWiseHisto->Reset();
      for(Int_t iChannel = 0; iChannel < chamberROC->GetNchannels(); iChannel++){ // loop over channels
  // calculate the calibration parameter for this pad
  Float_t padValue;
  if(multiplicative)
    padValue = chamberValue * chamberROC->GetValue(iChannel);
  else
    padValue = chamberValue + chamberROC->GetValue(iChannel);
  // fill the run, SM and chamber wise histograms
  gChamberWiseHisto->Fill(padValue);
  // if the parameter is Noise then check if the pad value is not a default one
  // Default value is now 1.2!!!! Check with Raphaelle for more informations
  if(parName.Contains("Noise") &&
      TMath::Abs(padValue-1.2)<0.00001) continue;
  gSuperModuleWiseHisto->Fill(padValue);
  gRunWiseHisto->Fill(padValue);
      }  // end loop over channels
      // get the chamber wise mean and RMS
      chamberValues[iChamber] = gChamberWiseHisto->GetMean();
      chamberValuesRMS[iChamber] = gChamberWiseHisto->GetRMS();
    }  // end loop over chambers
    // SM wise mean and RMS
    superModuleValues[iSM] = gSuperModuleWiseHisto->GetMean();
    superModuleValuesRMS[iSM] = gSuperModuleWiseHisto->GetRMS();
  }  // end loop over supermodules
  // run wise mean and RMS
  runValue = gRunWiseHisto->GetMean();
  runRMS = gRunWiseHisto->GetRMS();

  // Noise and Gain are finished processing
  if(parName.Contains("Noise") || parName.Contains("Gain"))
    return;
  // second iteration (calculate SM and run wise averages and RMS for Vdrift and T0)
  // The pads with calib parameter equal to the SM average are discarded (default value)
  gRunWiseHisto->Reset();
  for(Int_t iSM = 0; iSM<AliTRDcalibDB::kNsector; iSM++) {   // loop over supermodules
    gSuperModuleWiseHisto->Reset();
    // eliminate the uninstalled super modules
    if(!gkSuperModuleStatus[iSM]) continue;
    for(Int_t iChamber=iSM*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer;
  iChamber < (iSM+1)*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer;
  iChamber++) {  // loop over chambers
      // the chamber value
      Float_t chamberValue = chamberCalib->GetValue(iChamber);
      AliTRDCalROC *chamberROC = padCalib->GetCalROC(iChamber);
      if(!chamberROC)
  continue;

      for(Int_t iChannel = 0; iChannel < chamberROC->GetNchannels(); iChannel++){ // loop over channels in a chamber
  // get the pad value
  Float_t padValue;
  if(multiplicative)
    padValue = chamberValue * chamberROC->GetValue(iChannel);
  else
    padValue = chamberValue + chamberROC->GetValue(iChannel);
  // eliminate from the average and RMS calculation all pads which
  // have the calib parameter equal with the SM average
  if((parName.Contains("Vdrift") || parName.Contains("T0")) &&
      TMath::Abs(padValue-superModuleValues[iSM])<0.00001) continue;
  gSuperModuleWiseHisto->Fill(padValue);
  gRunWiseHisto->Fill(padValue);
      }   // end loop over channels
    }   // end loop over chambers
    superModuleValues[iSM] = gSuperModuleWiseHisto->GetMean();
    superModuleValuesRMS[iSM] = gSuperModuleWiseHisto->GetRMS();
  }   // end loop over super modules
  runValue = gRunWiseHisto->GetMean();
  runRMS = gRunWiseHisto->GetRMS();
  return;
  }

  //__________________________________________________________________________________________
  void ProcessTRDstatus(AliTRDCalChamberStatus* chamberStatus, AliTRDCalPadStatus* padStatus,
          Float_t &runBadPadFraction, TVectorD &chamberBadPadFraction,
          TVectorD &chamberStatusValues) {
  // Process the pad status. Calculates the fraction of pads with non 0 status
  // run and chamber wise
  //
  Int_t runPadStatusNot0 = 0;
  Int_t runPadStatusAll = 0;

  Int_t superModuleStatus[18] = {1, 1, 0, 0, 0, 0, 0, 1, 1,
          1, 1, 0, 0, 0, 0, 0, 0, 1};

  // loop over chambers
  for(Int_t iChamber=0; iChamber < AliTRDcalibDB::kNdet; iChamber++) {
    // check if the chamber is in an installed sector;
    Int_t sm = AliTRDgeometry::GetSector(iChamber);
    if(!superModuleStatus[sm]) continue;

    chamberStatusValues[iChamber] = chamberStatus->GetStatus(iChamber);
    AliTRDCalSingleChamberStatus *singleChamberStatus = padStatus->GetCalROC(iChamber);
    if(!singleChamberStatus)
      continue;
    Int_t chamberPadStatusNot0 = 0;
    Int_t chamberPadStatusAll = 0;
    // loop over channels in a chamber
    for(Int_t iChannel = 0; iChannel < singleChamberStatus->GetNchannels(); iChannel++) {
      if(singleChamberStatus->GetStatus(iChannel) > 0) {
  chamberPadStatusNot0++;
  runPadStatusNot0++;
      }
      chamberPadStatusAll++;
      runPadStatusAll++;
    }
    chamberBadPadFraction[iChamber] = (chamberPadStatusAll>0 ?
                Float_t(chamberPadStatusNot0)/Float_t(chamberPadStatusAll) : -99.);
  }
  runBadPadFraction = (runPadStatusAll>0 ? Float_t(runPadStatusNot0)/Float_t(runPadStatusAll) : -99.);
  return;
  }

  //__________________________________________________________________________________________
  void ProcessTRDCalDCSFEE(TObject *caldcsSOR, TObject *caldcsEOR,
        Int_t &nsb1, Int_t &nsb2, Int_t &nsb3, Int_t &nsb4, Int_t &nsb5,
        Int_t &nChanged, Bool_t &sorAndEor,
        TVectorD &statusArraySOR, TVectorD &statusArrayEOR) {
  //
  // Process the DCS information
  //
  sorAndEor = kTRUE;
  if(!caldcsSOR && !caldcsEOR) {
    sorAndEor = kFALSE;
    return;
  }
  else if(caldcsSOR && !caldcsEOR) {
    sorAndEor = kFALSE;
  }
  else if(!caldcsSOR && caldcsEOR) {
    caldcsSOR = caldcsEOR;
    sorAndEor = kFALSE;
  }

  Int_t calVer = 0;
  if (!strcmp(caldcsSOR->ClassName(),"AliTRDCalDCS"))   calVer = 1;
  if (!strcmp(caldcsSOR->ClassName(),"AliTRDCalDCSv2")) calVer = 2;
  Int_t feeArrSiz = 0;
  if (calVer == 1) feeArrSiz = ((AliTRDCalDCS*)caldcsSOR)->GetFEEArr()->GetSize();
  if (calVer == 2) feeArrSiz = ((AliTRDCalDCSv2*)caldcsSOR)->GetFEEArr()->GetSize();

  nsb1 = 0; nsb2 = 0; nsb3 = 0; nsb4 = 0; nsb5 = 0; nChanged = 0;
  for(Int_t iROC=0; iROC<AliTRDcalibDB::kNdet && iROC<feeArrSiz; iROC++) {
    TObject* dcsSorFee;
    TObject* dcsEorFee;
    if (calVer == 1) {
      dcsSorFee = ((AliTRDCalDCS*)caldcsSOR)->GetCalDCSFEEObj(iROC);
      dcsEorFee = ((AliTRDCalDCS*)caldcsEOR)->GetCalDCSFEEObj(iROC);
    } else if (calVer == 2) {
      dcsSorFee = ((AliTRDCalDCSv2*)caldcsSOR)->GetCalDCSFEEObj(iROC);
      dcsEorFee = ((AliTRDCalDCSv2*)caldcsEOR)->GetCalDCSFEEObj(iROC);
    } else continue;

    if(dcsSorFee) {
      if (calVer == 1) statusArraySOR[iROC] = ((AliTRDCalDCSFEE*)dcsSorFee)->GetStatusBit();
      if (calVer == 2) statusArraySOR[iROC] = ((AliTRDCalDCSFEEv2*)dcsSorFee)->GetStatusBit();
      if(statusArraySOR[iROC] == 1) nsb1++;
      if(statusArraySOR[iROC] == 2) nsb2++;
      if(statusArraySOR[iROC] == 3) nsb3++;
      if(statusArraySOR[iROC] == 4) nsb4++;
      if(statusArraySOR[iROC] == 5) nsb5++;
    }
    if(dcsEorFee) {
      if (calVer == 1) statusArrayEOR[iROC] = ((AliTRDCalDCSFEE*)dcsEorFee)->GetStatusBit();
      if (calVer == 2) statusArrayEOR[iROC] = ((AliTRDCalDCSFEEv2*)dcsEorFee)->GetStatusBit();
    }
    if(sorAndEor) {
      if((statusArraySOR[iROC]-statusArrayEOR[iROC]) != 0) nChanged++;
    }
  }
  return;
  }

  //__________________________________________________________________________________________
  void MakeRunListFromOCDB(const Char_t* directory, const Char_t* outfile, Bool_t fromAlien) {
  //
  // For a given OCDB path dump the list of available run numbers
  //
  if(fromAlien)
    gSystem->Exec(Form("alien_ls %s > temp.txt", directory));
  else
    gSystem->Exec(Form("ls %s > temp.txt", directory));

  ifstream inBuffer("temp.txt");
  if(!inBuffer.is_open()) {
    cout << "File temp.txt not opened! Exiting" << endl;
    return;
  }
  ofstream outBuffer(outfile);
  if(!outBuffer.is_open()) {
    cout << "File runList.txt cannot be opened! Exiting" << endl;
    return;
  }

  while(!inBuffer.eof()) {
    char inputLine[128];
    inBuffer.getline(inputLine, 128, '\n');
    int runLow, runHigh;
    const char* tempLine = inputLine;
    sscanf(tempLine, "Run%d_%d_v1_s0.root", &runLow, &runHigh);
    outBuffer << runLow << endl;
  }

  inBuffer.close();
  outBuffer.close();
  gSystem->Exec("rm temp.txt");
  return;
  }

  //__________________________________________________________________________________________
  AliCDBEntry* GetCDBentry(const Char_t *path, Bool_t owner)
  {
  TString spath = path;
  ::Info("GetCDBentry", Form("QUERY RUN [%d] for \"%s\".", currRun, spath.Data()));
  AliCDBEntry *entry(NULL);
  storage->QueryCDB(currRun, spath.Data());
  if(!storage->GetQueryCDBList()->GetEntries()){
    ::Error("GetCDBentry", Form("Missing \"%s\" in run %d.", spath.Data(), currRun));
    return NULL;
  } else entry = manager->Get(spath.Data());
  if(!entry) return NULL;

  entry->SetOwner(owner);
  ::Info("GetCDBentry", Form("FOUND ENTRY @ [%p].", (void*)entry));
  return entry;
  }
 DumpOCDBtoTree.C:1
 DumpOCDBtoTree.C:2
 DumpOCDBtoTree.C:3
 DumpOCDBtoTree.C:4
 DumpOCDBtoTree.C:5
 DumpOCDBtoTree.C:6
 DumpOCDBtoTree.C:7
 DumpOCDBtoTree.C:8
 DumpOCDBtoTree.C:9
 DumpOCDBtoTree.C:10
 DumpOCDBtoTree.C:11
 DumpOCDBtoTree.C:12
 DumpOCDBtoTree.C:13
 DumpOCDBtoTree.C:14
 DumpOCDBtoTree.C:15
 DumpOCDBtoTree.C:16
 DumpOCDBtoTree.C:17
 DumpOCDBtoTree.C:18
 DumpOCDBtoTree.C:19
 DumpOCDBtoTree.C:20
 DumpOCDBtoTree.C:21
 DumpOCDBtoTree.C:22
 DumpOCDBtoTree.C:23
 DumpOCDBtoTree.C:24
 DumpOCDBtoTree.C:25
 DumpOCDBtoTree.C:26
 DumpOCDBtoTree.C:27
 DumpOCDBtoTree.C:28
 DumpOCDBtoTree.C:29
 DumpOCDBtoTree.C:30
 DumpOCDBtoTree.C:31
 DumpOCDBtoTree.C:32
 DumpOCDBtoTree.C:33
 DumpOCDBtoTree.C:34
 DumpOCDBtoTree.C:35
 DumpOCDBtoTree.C:36
 DumpOCDBtoTree.C:37
 DumpOCDBtoTree.C:38
 DumpOCDBtoTree.C:39
 DumpOCDBtoTree.C:40
 DumpOCDBtoTree.C:41
 DumpOCDBtoTree.C:42
 DumpOCDBtoTree.C:43
 DumpOCDBtoTree.C:44
 DumpOCDBtoTree.C:45
 DumpOCDBtoTree.C:46
 DumpOCDBtoTree.C:47
 DumpOCDBtoTree.C:48
 DumpOCDBtoTree.C:49
 DumpOCDBtoTree.C:50
 DumpOCDBtoTree.C:51
 DumpOCDBtoTree.C:52
 DumpOCDBtoTree.C:53
 DumpOCDBtoTree.C:54
 DumpOCDBtoTree.C:55
 DumpOCDBtoTree.C:56
 DumpOCDBtoTree.C:57
 DumpOCDBtoTree.C:58
 DumpOCDBtoTree.C:59
 DumpOCDBtoTree.C:60
 DumpOCDBtoTree.C:61
 DumpOCDBtoTree.C:62
 DumpOCDBtoTree.C:63
 DumpOCDBtoTree.C:64
 DumpOCDBtoTree.C:65
 DumpOCDBtoTree.C:66
 DumpOCDBtoTree.C:67
 DumpOCDBtoTree.C:68
 DumpOCDBtoTree.C:69
 DumpOCDBtoTree.C:70
 DumpOCDBtoTree.C:71
 DumpOCDBtoTree.C:72
 DumpOCDBtoTree.C:73
 DumpOCDBtoTree.C:74
 DumpOCDBtoTree.C:75
 DumpOCDBtoTree.C:76
 DumpOCDBtoTree.C:77
 DumpOCDBtoTree.C:78
 DumpOCDBtoTree.C:79
 DumpOCDBtoTree.C:80
 DumpOCDBtoTree.C:81
 DumpOCDBtoTree.C:82
 DumpOCDBtoTree.C:83
 DumpOCDBtoTree.C:84
 DumpOCDBtoTree.C:85
 DumpOCDBtoTree.C:86
 DumpOCDBtoTree.C:87
 DumpOCDBtoTree.C:88
 DumpOCDBtoTree.C:89
 DumpOCDBtoTree.C:90
 DumpOCDBtoTree.C:91
 DumpOCDBtoTree.C:92
 DumpOCDBtoTree.C:93
 DumpOCDBtoTree.C:94
 DumpOCDBtoTree.C:95
 DumpOCDBtoTree.C:96
 DumpOCDBtoTree.C:97
 DumpOCDBtoTree.C:98
 DumpOCDBtoTree.C:99
 DumpOCDBtoTree.C:100
 DumpOCDBtoTree.C:101
 DumpOCDBtoTree.C:102
 DumpOCDBtoTree.C:103
 DumpOCDBtoTree.C:104
 DumpOCDBtoTree.C:105
 DumpOCDBtoTree.C:106
 DumpOCDBtoTree.C:107
 DumpOCDBtoTree.C:108
 DumpOCDBtoTree.C:109
 DumpOCDBtoTree.C:110
 DumpOCDBtoTree.C:111
 DumpOCDBtoTree.C:112
 DumpOCDBtoTree.C:113
 DumpOCDBtoTree.C:114
 DumpOCDBtoTree.C:115
 DumpOCDBtoTree.C:116
 DumpOCDBtoTree.C:117
 DumpOCDBtoTree.C:118
 DumpOCDBtoTree.C:119
 DumpOCDBtoTree.C:120
 DumpOCDBtoTree.C:121
 DumpOCDBtoTree.C:122
 DumpOCDBtoTree.C:123
 DumpOCDBtoTree.C:124
 DumpOCDBtoTree.C:125
 DumpOCDBtoTree.C:126
 DumpOCDBtoTree.C:127
 DumpOCDBtoTree.C:128
 DumpOCDBtoTree.C:129
 DumpOCDBtoTree.C:130
 DumpOCDBtoTree.C:131
 DumpOCDBtoTree.C:132
 DumpOCDBtoTree.C:133
 DumpOCDBtoTree.C:134
 DumpOCDBtoTree.C:135
 DumpOCDBtoTree.C:136
 DumpOCDBtoTree.C:137
 DumpOCDBtoTree.C:138
 DumpOCDBtoTree.C:139
 DumpOCDBtoTree.C:140
 DumpOCDBtoTree.C:141
 DumpOCDBtoTree.C:142
 DumpOCDBtoTree.C:143
 DumpOCDBtoTree.C:144
 DumpOCDBtoTree.C:145
 DumpOCDBtoTree.C:146
 DumpOCDBtoTree.C:147
 DumpOCDBtoTree.C:148
 DumpOCDBtoTree.C:149
 DumpOCDBtoTree.C:150
 DumpOCDBtoTree.C:151
 DumpOCDBtoTree.C:152
 DumpOCDBtoTree.C:153
 DumpOCDBtoTree.C:154
 DumpOCDBtoTree.C:155
 DumpOCDBtoTree.C:156
 DumpOCDBtoTree.C:157
 DumpOCDBtoTree.C:158
 DumpOCDBtoTree.C:159
 DumpOCDBtoTree.C:160
 DumpOCDBtoTree.C:161
 DumpOCDBtoTree.C:162
 DumpOCDBtoTree.C:163
 DumpOCDBtoTree.C:164
 DumpOCDBtoTree.C:165
 DumpOCDBtoTree.C:166
 DumpOCDBtoTree.C:167
 DumpOCDBtoTree.C:168
 DumpOCDBtoTree.C:169
 DumpOCDBtoTree.C:170
 DumpOCDBtoTree.C:171
 DumpOCDBtoTree.C:172
 DumpOCDBtoTree.C:173
 DumpOCDBtoTree.C:174
 DumpOCDBtoTree.C:175
 DumpOCDBtoTree.C:176
 DumpOCDBtoTree.C:177
 DumpOCDBtoTree.C:178
 DumpOCDBtoTree.C:179
 DumpOCDBtoTree.C:180
 DumpOCDBtoTree.C:181
 DumpOCDBtoTree.C:182
 DumpOCDBtoTree.C:183
 DumpOCDBtoTree.C:184
 DumpOCDBtoTree.C:185
 DumpOCDBtoTree.C:186
 DumpOCDBtoTree.C:187
 DumpOCDBtoTree.C:188
 DumpOCDBtoTree.C:189
 DumpOCDBtoTree.C:190
 DumpOCDBtoTree.C:191
 DumpOCDBtoTree.C:192
 DumpOCDBtoTree.C:193
 DumpOCDBtoTree.C:194
 DumpOCDBtoTree.C:195
 DumpOCDBtoTree.C:196
 DumpOCDBtoTree.C:197
 DumpOCDBtoTree.C:198
 DumpOCDBtoTree.C:199
 DumpOCDBtoTree.C:200
 DumpOCDBtoTree.C:201
 DumpOCDBtoTree.C:202
 DumpOCDBtoTree.C:203
 DumpOCDBtoTree.C:204
 DumpOCDBtoTree.C:205
 DumpOCDBtoTree.C:206
 DumpOCDBtoTree.C:207
 DumpOCDBtoTree.C:208
 DumpOCDBtoTree.C:209
 DumpOCDBtoTree.C:210
 DumpOCDBtoTree.C:211
 DumpOCDBtoTree.C:212
 DumpOCDBtoTree.C:213
 DumpOCDBtoTree.C:214
 DumpOCDBtoTree.C:215
 DumpOCDBtoTree.C:216
 DumpOCDBtoTree.C:217
 DumpOCDBtoTree.C:218
 DumpOCDBtoTree.C:219
 DumpOCDBtoTree.C:220
 DumpOCDBtoTree.C:221
 DumpOCDBtoTree.C:222
 DumpOCDBtoTree.C:223
 DumpOCDBtoTree.C:224
 DumpOCDBtoTree.C:225
 DumpOCDBtoTree.C:226
 DumpOCDBtoTree.C:227
 DumpOCDBtoTree.C:228
 DumpOCDBtoTree.C:229
 DumpOCDBtoTree.C:230
 DumpOCDBtoTree.C:231
 DumpOCDBtoTree.C:232
 DumpOCDBtoTree.C:233
 DumpOCDBtoTree.C:234
 DumpOCDBtoTree.C:235
 DumpOCDBtoTree.C:236
 DumpOCDBtoTree.C:237
 DumpOCDBtoTree.C:238
 DumpOCDBtoTree.C:239
 DumpOCDBtoTree.C:240
 DumpOCDBtoTree.C:241
 DumpOCDBtoTree.C:242
 DumpOCDBtoTree.C:243
 DumpOCDBtoTree.C:244
 DumpOCDBtoTree.C:245
 DumpOCDBtoTree.C:246
 DumpOCDBtoTree.C:247
 DumpOCDBtoTree.C:248
 DumpOCDBtoTree.C:249
 DumpOCDBtoTree.C:250
 DumpOCDBtoTree.C:251
 DumpOCDBtoTree.C:252
 DumpOCDBtoTree.C:253
 DumpOCDBtoTree.C:254
 DumpOCDBtoTree.C:255
 DumpOCDBtoTree.C:256
 DumpOCDBtoTree.C:257
 DumpOCDBtoTree.C:258
 DumpOCDBtoTree.C:259
 DumpOCDBtoTree.C:260
 DumpOCDBtoTree.C:261
 DumpOCDBtoTree.C:262
 DumpOCDBtoTree.C:263
 DumpOCDBtoTree.C:264
 DumpOCDBtoTree.C:265
 DumpOCDBtoTree.C:266
 DumpOCDBtoTree.C:267
 DumpOCDBtoTree.C:268
 DumpOCDBtoTree.C:269
 DumpOCDBtoTree.C:270
 DumpOCDBtoTree.C:271
 DumpOCDBtoTree.C:272
 DumpOCDBtoTree.C:273
 DumpOCDBtoTree.C:274
 DumpOCDBtoTree.C:275
 DumpOCDBtoTree.C:276
 DumpOCDBtoTree.C:277
 DumpOCDBtoTree.C:278
 DumpOCDBtoTree.C:279
 DumpOCDBtoTree.C:280
 DumpOCDBtoTree.C:281
 DumpOCDBtoTree.C:282
 DumpOCDBtoTree.C:283
 DumpOCDBtoTree.C:284
 DumpOCDBtoTree.C:285
 DumpOCDBtoTree.C:286
 DumpOCDBtoTree.C:287
 DumpOCDBtoTree.C:288
 DumpOCDBtoTree.C:289
 DumpOCDBtoTree.C:290
 DumpOCDBtoTree.C:291
 DumpOCDBtoTree.C:292
 DumpOCDBtoTree.C:293
 DumpOCDBtoTree.C:294
 DumpOCDBtoTree.C:295
 DumpOCDBtoTree.C:296
 DumpOCDBtoTree.C:297
 DumpOCDBtoTree.C:298
 DumpOCDBtoTree.C:299
 DumpOCDBtoTree.C:300
 DumpOCDBtoTree.C:301
 DumpOCDBtoTree.C:302
 DumpOCDBtoTree.C:303
 DumpOCDBtoTree.C:304
 DumpOCDBtoTree.C:305
 DumpOCDBtoTree.C:306
 DumpOCDBtoTree.C:307
 DumpOCDBtoTree.C:308
 DumpOCDBtoTree.C:309
 DumpOCDBtoTree.C:310
 DumpOCDBtoTree.C:311
 DumpOCDBtoTree.C:312
 DumpOCDBtoTree.C:313
 DumpOCDBtoTree.C:314
 DumpOCDBtoTree.C:315
 DumpOCDBtoTree.C:316
 DumpOCDBtoTree.C:317
 DumpOCDBtoTree.C:318
 DumpOCDBtoTree.C:319
 DumpOCDBtoTree.C:320
 DumpOCDBtoTree.C:321
 DumpOCDBtoTree.C:322
 DumpOCDBtoTree.C:323
 DumpOCDBtoTree.C:324
 DumpOCDBtoTree.C:325
 DumpOCDBtoTree.C:326
 DumpOCDBtoTree.C:327
 DumpOCDBtoTree.C:328
 DumpOCDBtoTree.C:329
 DumpOCDBtoTree.C:330
 DumpOCDBtoTree.C:331
 DumpOCDBtoTree.C:332
 DumpOCDBtoTree.C:333
 DumpOCDBtoTree.C:334
 DumpOCDBtoTree.C:335
 DumpOCDBtoTree.C:336
 DumpOCDBtoTree.C:337
 DumpOCDBtoTree.C:338
 DumpOCDBtoTree.C:339
 DumpOCDBtoTree.C:340
 DumpOCDBtoTree.C:341
 DumpOCDBtoTree.C:342
 DumpOCDBtoTree.C:343
 DumpOCDBtoTree.C:344
 DumpOCDBtoTree.C:345
 DumpOCDBtoTree.C:346
 DumpOCDBtoTree.C:347
 DumpOCDBtoTree.C:348
 DumpOCDBtoTree.C:349
 DumpOCDBtoTree.C:350
 DumpOCDBtoTree.C:351
 DumpOCDBtoTree.C:352
 DumpOCDBtoTree.C:353
 DumpOCDBtoTree.C:354
 DumpOCDBtoTree.C:355
 DumpOCDBtoTree.C:356
 DumpOCDBtoTree.C:357
 DumpOCDBtoTree.C:358
 DumpOCDBtoTree.C:359
 DumpOCDBtoTree.C:360
 DumpOCDBtoTree.C:361
 DumpOCDBtoTree.C:362
 DumpOCDBtoTree.C:363
 DumpOCDBtoTree.C:364
 DumpOCDBtoTree.C:365
 DumpOCDBtoTree.C:366
 DumpOCDBtoTree.C:367
 DumpOCDBtoTree.C:368
 DumpOCDBtoTree.C:369
 DumpOCDBtoTree.C:370
 DumpOCDBtoTree.C:371
 DumpOCDBtoTree.C:372
 DumpOCDBtoTree.C:373
 DumpOCDBtoTree.C:374
 DumpOCDBtoTree.C:375
 DumpOCDBtoTree.C:376
 DumpOCDBtoTree.C:377
 DumpOCDBtoTree.C:378
 DumpOCDBtoTree.C:379
 DumpOCDBtoTree.C:380
 DumpOCDBtoTree.C:381
 DumpOCDBtoTree.C:382
 DumpOCDBtoTree.C:383
 DumpOCDBtoTree.C:384
 DumpOCDBtoTree.C:385
 DumpOCDBtoTree.C:386
 DumpOCDBtoTree.C:387
 DumpOCDBtoTree.C:388
 DumpOCDBtoTree.C:389
 DumpOCDBtoTree.C:390
 DumpOCDBtoTree.C:391
 DumpOCDBtoTree.C:392
 DumpOCDBtoTree.C:393
 DumpOCDBtoTree.C:394
 DumpOCDBtoTree.C:395
 DumpOCDBtoTree.C:396
 DumpOCDBtoTree.C:397
 DumpOCDBtoTree.C:398
 DumpOCDBtoTree.C:399
 DumpOCDBtoTree.C:400
 DumpOCDBtoTree.C:401
 DumpOCDBtoTree.C:402
 DumpOCDBtoTree.C:403
 DumpOCDBtoTree.C:404
 DumpOCDBtoTree.C:405
 DumpOCDBtoTree.C:406
 DumpOCDBtoTree.C:407
 DumpOCDBtoTree.C:408
 DumpOCDBtoTree.C:409
 DumpOCDBtoTree.C:410
 DumpOCDBtoTree.C:411
 DumpOCDBtoTree.C:412
 DumpOCDBtoTree.C:413
 DumpOCDBtoTree.C:414
 DumpOCDBtoTree.C:415
 DumpOCDBtoTree.C:416
 DumpOCDBtoTree.C:417
 DumpOCDBtoTree.C:418
 DumpOCDBtoTree.C:419
 DumpOCDBtoTree.C:420
 DumpOCDBtoTree.C:421
 DumpOCDBtoTree.C:422
 DumpOCDBtoTree.C:423
 DumpOCDBtoTree.C:424
 DumpOCDBtoTree.C:425
 DumpOCDBtoTree.C:426
 DumpOCDBtoTree.C:427
 DumpOCDBtoTree.C:428
 DumpOCDBtoTree.C:429
 DumpOCDBtoTree.C:430
 DumpOCDBtoTree.C:431
 DumpOCDBtoTree.C:432
 DumpOCDBtoTree.C:433
 DumpOCDBtoTree.C:434
 DumpOCDBtoTree.C:435
 DumpOCDBtoTree.C:436
 DumpOCDBtoTree.C:437
 DumpOCDBtoTree.C:438
 DumpOCDBtoTree.C:439
 DumpOCDBtoTree.C:440
 DumpOCDBtoTree.C:441
 DumpOCDBtoTree.C:442
 DumpOCDBtoTree.C:443
 DumpOCDBtoTree.C:444
 DumpOCDBtoTree.C:445
 DumpOCDBtoTree.C:446
 DumpOCDBtoTree.C:447
 DumpOCDBtoTree.C:448
 DumpOCDBtoTree.C:449
 DumpOCDBtoTree.C:450
 DumpOCDBtoTree.C:451
 DumpOCDBtoTree.C:452
 DumpOCDBtoTree.C:453
 DumpOCDBtoTree.C:454
 DumpOCDBtoTree.C:455
 DumpOCDBtoTree.C:456
 DumpOCDBtoTree.C:457
 DumpOCDBtoTree.C:458
 DumpOCDBtoTree.C:459
 DumpOCDBtoTree.C:460
 DumpOCDBtoTree.C:461
 DumpOCDBtoTree.C:462
 DumpOCDBtoTree.C:463
 DumpOCDBtoTree.C:464
 DumpOCDBtoTree.C:465
 DumpOCDBtoTree.C:466
 DumpOCDBtoTree.C:467
 DumpOCDBtoTree.C:468
 DumpOCDBtoTree.C:469
 DumpOCDBtoTree.C:470
 DumpOCDBtoTree.C:471
 DumpOCDBtoTree.C:472
 DumpOCDBtoTree.C:473
 DumpOCDBtoTree.C:474
 DumpOCDBtoTree.C:475
 DumpOCDBtoTree.C:476
 DumpOCDBtoTree.C:477
 DumpOCDBtoTree.C:478
 DumpOCDBtoTree.C:479
 DumpOCDBtoTree.C:480
 DumpOCDBtoTree.C:481
 DumpOCDBtoTree.C:482
 DumpOCDBtoTree.C:483
 DumpOCDBtoTree.C:484
 DumpOCDBtoTree.C:485
 DumpOCDBtoTree.C:486
 DumpOCDBtoTree.C:487
 DumpOCDBtoTree.C:488
 DumpOCDBtoTree.C:489
 DumpOCDBtoTree.C:490
 DumpOCDBtoTree.C:491
 DumpOCDBtoTree.C:492
 DumpOCDBtoTree.C:493
 DumpOCDBtoTree.C:494
 DumpOCDBtoTree.C:495
 DumpOCDBtoTree.C:496
 DumpOCDBtoTree.C:497
 DumpOCDBtoTree.C:498
 DumpOCDBtoTree.C:499
 DumpOCDBtoTree.C:500
 DumpOCDBtoTree.C:501
 DumpOCDBtoTree.C:502
 DumpOCDBtoTree.C:503
 DumpOCDBtoTree.C:504
 DumpOCDBtoTree.C:505
 DumpOCDBtoTree.C:506
 DumpOCDBtoTree.C:507
 DumpOCDBtoTree.C:508
 DumpOCDBtoTree.C:509
 DumpOCDBtoTree.C:510
 DumpOCDBtoTree.C:511
 DumpOCDBtoTree.C:512
 DumpOCDBtoTree.C:513
 DumpOCDBtoTree.C:514
 DumpOCDBtoTree.C:515
 DumpOCDBtoTree.C:516
 DumpOCDBtoTree.C:517
 DumpOCDBtoTree.C:518
 DumpOCDBtoTree.C:519
 DumpOCDBtoTree.C:520
 DumpOCDBtoTree.C:521
 DumpOCDBtoTree.C:522
 DumpOCDBtoTree.C:523
 DumpOCDBtoTree.C:524
 DumpOCDBtoTree.C:525
 DumpOCDBtoTree.C:526
 DumpOCDBtoTree.C:527
 DumpOCDBtoTree.C:528
 DumpOCDBtoTree.C:529
 DumpOCDBtoTree.C:530
 DumpOCDBtoTree.C:531
 DumpOCDBtoTree.C:532
 DumpOCDBtoTree.C:533
 DumpOCDBtoTree.C:534
 DumpOCDBtoTree.C:535
 DumpOCDBtoTree.C:536
 DumpOCDBtoTree.C:537
 DumpOCDBtoTree.C:538
 DumpOCDBtoTree.C:539
 DumpOCDBtoTree.C:540
 DumpOCDBtoTree.C:541
 DumpOCDBtoTree.C:542
 DumpOCDBtoTree.C:543
 DumpOCDBtoTree.C:544
 DumpOCDBtoTree.C:545
 DumpOCDBtoTree.C:546
 DumpOCDBtoTree.C:547
 DumpOCDBtoTree.C:548
 DumpOCDBtoTree.C:549
 DumpOCDBtoTree.C:550
 DumpOCDBtoTree.C:551
 DumpOCDBtoTree.C:552
 DumpOCDBtoTree.C:553
 DumpOCDBtoTree.C:554
 DumpOCDBtoTree.C:555
 DumpOCDBtoTree.C:556
 DumpOCDBtoTree.C:557
 DumpOCDBtoTree.C:558
 DumpOCDBtoTree.C:559
 DumpOCDBtoTree.C:560
 DumpOCDBtoTree.C:561
 DumpOCDBtoTree.C:562
 DumpOCDBtoTree.C:563
 DumpOCDBtoTree.C:564
 DumpOCDBtoTree.C:565
 DumpOCDBtoTree.C:566
 DumpOCDBtoTree.C:567
 DumpOCDBtoTree.C:568
 DumpOCDBtoTree.C:569
 DumpOCDBtoTree.C:570
 DumpOCDBtoTree.C:571
 DumpOCDBtoTree.C:572
 DumpOCDBtoTree.C:573
 DumpOCDBtoTree.C:574
 DumpOCDBtoTree.C:575
 DumpOCDBtoTree.C:576
 DumpOCDBtoTree.C:577
 DumpOCDBtoTree.C:578
 DumpOCDBtoTree.C:579
 DumpOCDBtoTree.C:580
 DumpOCDBtoTree.C:581
 DumpOCDBtoTree.C:582
 DumpOCDBtoTree.C:583
 DumpOCDBtoTree.C:584
 DumpOCDBtoTree.C:585
 DumpOCDBtoTree.C:586
 DumpOCDBtoTree.C:587
 DumpOCDBtoTree.C:588
 DumpOCDBtoTree.C:589
 DumpOCDBtoTree.C:590
 DumpOCDBtoTree.C:591
 DumpOCDBtoTree.C:592
 DumpOCDBtoTree.C:593
 DumpOCDBtoTree.C:594
 DumpOCDBtoTree.C:595
 DumpOCDBtoTree.C:596
 DumpOCDBtoTree.C:597
 DumpOCDBtoTree.C:598
 DumpOCDBtoTree.C:599
 DumpOCDBtoTree.C:600
 DumpOCDBtoTree.C:601
 DumpOCDBtoTree.C:602
 DumpOCDBtoTree.C:603
 DumpOCDBtoTree.C:604
 DumpOCDBtoTree.C:605
 DumpOCDBtoTree.C:606
 DumpOCDBtoTree.C:607
 DumpOCDBtoTree.C:608
 DumpOCDBtoTree.C:609
 DumpOCDBtoTree.C:610
 DumpOCDBtoTree.C:611
 DumpOCDBtoTree.C:612
 DumpOCDBtoTree.C:613
 DumpOCDBtoTree.C:614
 DumpOCDBtoTree.C:615
 DumpOCDBtoTree.C:616
 DumpOCDBtoTree.C:617
 DumpOCDBtoTree.C:618
 DumpOCDBtoTree.C:619
 DumpOCDBtoTree.C:620
 DumpOCDBtoTree.C:621
 DumpOCDBtoTree.C:622
 DumpOCDBtoTree.C:623
 DumpOCDBtoTree.C:624
 DumpOCDBtoTree.C:625
 DumpOCDBtoTree.C:626
 DumpOCDBtoTree.C:627
 DumpOCDBtoTree.C:628
 DumpOCDBtoTree.C:629
 DumpOCDBtoTree.C:630
 DumpOCDBtoTree.C:631
 DumpOCDBtoTree.C:632
 DumpOCDBtoTree.C:633
 DumpOCDBtoTree.C:634
 DumpOCDBtoTree.C:635
 DumpOCDBtoTree.C:636
 DumpOCDBtoTree.C:637
 DumpOCDBtoTree.C:638
 DumpOCDBtoTree.C:639
 DumpOCDBtoTree.C:640
 DumpOCDBtoTree.C:641
 DumpOCDBtoTree.C:642
 DumpOCDBtoTree.C:643
 DumpOCDBtoTree.C:644
 DumpOCDBtoTree.C:645
 DumpOCDBtoTree.C:646
 DumpOCDBtoTree.C:647
 DumpOCDBtoTree.C:648
 DumpOCDBtoTree.C:649
 DumpOCDBtoTree.C:650
 DumpOCDBtoTree.C:651
 DumpOCDBtoTree.C:652
 DumpOCDBtoTree.C:653
 DumpOCDBtoTree.C:654
 DumpOCDBtoTree.C:655
 DumpOCDBtoTree.C:656
 DumpOCDBtoTree.C:657
 DumpOCDBtoTree.C:658
 DumpOCDBtoTree.C:659
 DumpOCDBtoTree.C:660
 DumpOCDBtoTree.C:661
 DumpOCDBtoTree.C:662
 DumpOCDBtoTree.C:663
 DumpOCDBtoTree.C:664
 DumpOCDBtoTree.C:665
 DumpOCDBtoTree.C:666
 DumpOCDBtoTree.C:667
 DumpOCDBtoTree.C:668
 DumpOCDBtoTree.C:669
 DumpOCDBtoTree.C:670
 DumpOCDBtoTree.C:671
 DumpOCDBtoTree.C:672
 DumpOCDBtoTree.C:673
 DumpOCDBtoTree.C:674
 DumpOCDBtoTree.C:675
 DumpOCDBtoTree.C:676
 DumpOCDBtoTree.C:677
 DumpOCDBtoTree.C:678
 DumpOCDBtoTree.C:679
 DumpOCDBtoTree.C:680
 DumpOCDBtoTree.C:681
 DumpOCDBtoTree.C:682
 DumpOCDBtoTree.C:683
 DumpOCDBtoTree.C:684
 DumpOCDBtoTree.C:685
 DumpOCDBtoTree.C:686
 DumpOCDBtoTree.C:687
 DumpOCDBtoTree.C:688
 DumpOCDBtoTree.C:689
 DumpOCDBtoTree.C:690
 DumpOCDBtoTree.C:691
 DumpOCDBtoTree.C:692
 DumpOCDBtoTree.C:693
 DumpOCDBtoTree.C:694
 DumpOCDBtoTree.C:695
 DumpOCDBtoTree.C:696
 DumpOCDBtoTree.C:697
 DumpOCDBtoTree.C:698
 DumpOCDBtoTree.C:699
 DumpOCDBtoTree.C:700
 DumpOCDBtoTree.C:701
 DumpOCDBtoTree.C:702
 DumpOCDBtoTree.C:703
 DumpOCDBtoTree.C:704
 DumpOCDBtoTree.C:705
 DumpOCDBtoTree.C:706
 DumpOCDBtoTree.C:707
 DumpOCDBtoTree.C:708
 DumpOCDBtoTree.C:709
 DumpOCDBtoTree.C:710
 DumpOCDBtoTree.C:711
 DumpOCDBtoTree.C:712
 DumpOCDBtoTree.C:713
 DumpOCDBtoTree.C:714
 DumpOCDBtoTree.C:715
 DumpOCDBtoTree.C:716
 DumpOCDBtoTree.C:717
 DumpOCDBtoTree.C:718
 DumpOCDBtoTree.C:719
 DumpOCDBtoTree.C:720
 DumpOCDBtoTree.C:721
 DumpOCDBtoTree.C:722
 DumpOCDBtoTree.C:723
 DumpOCDBtoTree.C:724
 DumpOCDBtoTree.C:725
 DumpOCDBtoTree.C:726
 DumpOCDBtoTree.C:727
 DumpOCDBtoTree.C:728
 DumpOCDBtoTree.C:729
 DumpOCDBtoTree.C:730
 DumpOCDBtoTree.C:731
 DumpOCDBtoTree.C:732
 DumpOCDBtoTree.C:733
 DumpOCDBtoTree.C:734
 DumpOCDBtoTree.C:735
 DumpOCDBtoTree.C:736
 DumpOCDBtoTree.C:737
 DumpOCDBtoTree.C:738
 DumpOCDBtoTree.C:739
 DumpOCDBtoTree.C:740
 DumpOCDBtoTree.C:741
 DumpOCDBtoTree.C:742
 DumpOCDBtoTree.C:743
 DumpOCDBtoTree.C:744
 DumpOCDBtoTree.C:745
 DumpOCDBtoTree.C:746
 DumpOCDBtoTree.C:747
 DumpOCDBtoTree.C:748
 DumpOCDBtoTree.C:749
 DumpOCDBtoTree.C:750
 DumpOCDBtoTree.C:751
 DumpOCDBtoTree.C:752
 DumpOCDBtoTree.C:753
 DumpOCDBtoTree.C:754
 DumpOCDBtoTree.C:755
 DumpOCDBtoTree.C:756
 DumpOCDBtoTree.C:757
 DumpOCDBtoTree.C:758
 DumpOCDBtoTree.C:759
 DumpOCDBtoTree.C:760
 DumpOCDBtoTree.C:761
 DumpOCDBtoTree.C:762
 DumpOCDBtoTree.C:763
 DumpOCDBtoTree.C:764
 DumpOCDBtoTree.C:765
 DumpOCDBtoTree.C:766
 DumpOCDBtoTree.C:767
 DumpOCDBtoTree.C:768
 DumpOCDBtoTree.C:769
 DumpOCDBtoTree.C:770
 DumpOCDBtoTree.C:771
 DumpOCDBtoTree.C:772
 DumpOCDBtoTree.C:773
 DumpOCDBtoTree.C:774
 DumpOCDBtoTree.C:775
 DumpOCDBtoTree.C:776
 DumpOCDBtoTree.C:777
 DumpOCDBtoTree.C:778
 DumpOCDBtoTree.C:779
 DumpOCDBtoTree.C:780
 DumpOCDBtoTree.C:781
 DumpOCDBtoTree.C:782
 DumpOCDBtoTree.C:783
 DumpOCDBtoTree.C:784
 DumpOCDBtoTree.C:785
 DumpOCDBtoTree.C:786
 DumpOCDBtoTree.C:787
 DumpOCDBtoTree.C:788
 DumpOCDBtoTree.C:789
 DumpOCDBtoTree.C:790
 DumpOCDBtoTree.C:791
 DumpOCDBtoTree.C:792
 DumpOCDBtoTree.C:793
 DumpOCDBtoTree.C:794
 DumpOCDBtoTree.C:795
 DumpOCDBtoTree.C:796
 DumpOCDBtoTree.C:797
 DumpOCDBtoTree.C:798
 DumpOCDBtoTree.C:799
 DumpOCDBtoTree.C:800
 DumpOCDBtoTree.C:801
 DumpOCDBtoTree.C:802
 DumpOCDBtoTree.C:803
 DumpOCDBtoTree.C:804
 DumpOCDBtoTree.C:805
 DumpOCDBtoTree.C:806
 DumpOCDBtoTree.C:807
 DumpOCDBtoTree.C:808
 DumpOCDBtoTree.C:809
 DumpOCDBtoTree.C:810
 DumpOCDBtoTree.C:811
 DumpOCDBtoTree.C:812
 DumpOCDBtoTree.C:813
 DumpOCDBtoTree.C:814
 DumpOCDBtoTree.C:815
 DumpOCDBtoTree.C:816
 DumpOCDBtoTree.C:817
 DumpOCDBtoTree.C:818
 DumpOCDBtoTree.C:819
 DumpOCDBtoTree.C:820
 DumpOCDBtoTree.C:821
 DumpOCDBtoTree.C:822
 DumpOCDBtoTree.C:823
 DumpOCDBtoTree.C:824
 DumpOCDBtoTree.C:825
 DumpOCDBtoTree.C:826
 DumpOCDBtoTree.C:827
 DumpOCDBtoTree.C:828
 DumpOCDBtoTree.C:829
 DumpOCDBtoTree.C:830
 DumpOCDBtoTree.C:831
 DumpOCDBtoTree.C:832
 DumpOCDBtoTree.C:833
 DumpOCDBtoTree.C:834
 DumpOCDBtoTree.C:835
 DumpOCDBtoTree.C:836
 DumpOCDBtoTree.C:837
 DumpOCDBtoTree.C:838
 DumpOCDBtoTree.C:839
 DumpOCDBtoTree.C:840
 DumpOCDBtoTree.C:841
 DumpOCDBtoTree.C:842
 DumpOCDBtoTree.C:843
 DumpOCDBtoTree.C:844
 DumpOCDBtoTree.C:845
 DumpOCDBtoTree.C:846
 DumpOCDBtoTree.C:847
 DumpOCDBtoTree.C:848
 DumpOCDBtoTree.C:849
 DumpOCDBtoTree.C:850
 DumpOCDBtoTree.C:851
 DumpOCDBtoTree.C:852
 DumpOCDBtoTree.C:853
 DumpOCDBtoTree.C:854
 DumpOCDBtoTree.C:855
 DumpOCDBtoTree.C:856
 DumpOCDBtoTree.C:857
 DumpOCDBtoTree.C:858
 DumpOCDBtoTree.C:859
 DumpOCDBtoTree.C:860
 DumpOCDBtoTree.C:861
 DumpOCDBtoTree.C:862
 DumpOCDBtoTree.C:863
 DumpOCDBtoTree.C:864
 DumpOCDBtoTree.C:865
 DumpOCDBtoTree.C:866
 DumpOCDBtoTree.C:867
 DumpOCDBtoTree.C:868
 DumpOCDBtoTree.C:869
 DumpOCDBtoTree.C:870
 DumpOCDBtoTree.C:871
 DumpOCDBtoTree.C:872
 DumpOCDBtoTree.C:873
 DumpOCDBtoTree.C:874
 DumpOCDBtoTree.C:875
 DumpOCDBtoTree.C:876
 DumpOCDBtoTree.C:877
 DumpOCDBtoTree.C:878
 DumpOCDBtoTree.C:879
 DumpOCDBtoTree.C:880
 DumpOCDBtoTree.C:881
 DumpOCDBtoTree.C:882
 DumpOCDBtoTree.C:883
 DumpOCDBtoTree.C:884
 DumpOCDBtoTree.C:885
 DumpOCDBtoTree.C:886
 DumpOCDBtoTree.C:887
 DumpOCDBtoTree.C:888
 DumpOCDBtoTree.C:889
 DumpOCDBtoTree.C:890
 DumpOCDBtoTree.C:891
 DumpOCDBtoTree.C:892
 DumpOCDBtoTree.C:893
 DumpOCDBtoTree.C:894
 DumpOCDBtoTree.C:895
 DumpOCDBtoTree.C:896
 DumpOCDBtoTree.C:897
 DumpOCDBtoTree.C:898
 DumpOCDBtoTree.C:899
 DumpOCDBtoTree.C:900
 DumpOCDBtoTree.C:901
 DumpOCDBtoTree.C:902
 DumpOCDBtoTree.C:903
 DumpOCDBtoTree.C:904
 DumpOCDBtoTree.C:905
 DumpOCDBtoTree.C:906
 DumpOCDBtoTree.C:907
 DumpOCDBtoTree.C:908
 DumpOCDBtoTree.C:909
 DumpOCDBtoTree.C:910
 DumpOCDBtoTree.C:911
 DumpOCDBtoTree.C:912
 DumpOCDBtoTree.C:913
 DumpOCDBtoTree.C:914
 DumpOCDBtoTree.C:915
 DumpOCDBtoTree.C:916
 DumpOCDBtoTree.C:917
 DumpOCDBtoTree.C:918
 DumpOCDBtoTree.C:919
 DumpOCDBtoTree.C:920
 DumpOCDBtoTree.C:921
 DumpOCDBtoTree.C:922
 DumpOCDBtoTree.C:923
 DumpOCDBtoTree.C:924
 DumpOCDBtoTree.C:925
 DumpOCDBtoTree.C:926
 DumpOCDBtoTree.C:927
 DumpOCDBtoTree.C:928
 DumpOCDBtoTree.C:929
 DumpOCDBtoTree.C:930
 DumpOCDBtoTree.C:931
 DumpOCDBtoTree.C:932
 DumpOCDBtoTree.C:933
 DumpOCDBtoTree.C:934
 DumpOCDBtoTree.C:935
 DumpOCDBtoTree.C:936
 DumpOCDBtoTree.C:937
 DumpOCDBtoTree.C:938
 DumpOCDBtoTree.C:939
 DumpOCDBtoTree.C:940
 DumpOCDBtoTree.C:941
 DumpOCDBtoTree.C:942
 DumpOCDBtoTree.C:943
 DumpOCDBtoTree.C:944
 DumpOCDBtoTree.C:945
 DumpOCDBtoTree.C:946
 DumpOCDBtoTree.C:947
 DumpOCDBtoTree.C:948
 DumpOCDBtoTree.C:949
 DumpOCDBtoTree.C:950
 DumpOCDBtoTree.C:951
 DumpOCDBtoTree.C:952
 DumpOCDBtoTree.C:953
 DumpOCDBtoTree.C:954
 DumpOCDBtoTree.C:955
 DumpOCDBtoTree.C:956
 DumpOCDBtoTree.C:957
 DumpOCDBtoTree.C:958
 DumpOCDBtoTree.C:959
 DumpOCDBtoTree.C:960
 DumpOCDBtoTree.C:961
 DumpOCDBtoTree.C:962
 DumpOCDBtoTree.C:963
 DumpOCDBtoTree.C:964
 DumpOCDBtoTree.C:965
 DumpOCDBtoTree.C:966
 DumpOCDBtoTree.C:967
 DumpOCDBtoTree.C:968
 DumpOCDBtoTree.C:969
 DumpOCDBtoTree.C:970
 DumpOCDBtoTree.C:971
 DumpOCDBtoTree.C:972
 DumpOCDBtoTree.C:973
 DumpOCDBtoTree.C:974
 DumpOCDBtoTree.C:975
 DumpOCDBtoTree.C:976
 DumpOCDBtoTree.C:977
 DumpOCDBtoTree.C:978
 DumpOCDBtoTree.C:979
 DumpOCDBtoTree.C:980
 DumpOCDBtoTree.C:981
 DumpOCDBtoTree.C:982
 DumpOCDBtoTree.C:983
 DumpOCDBtoTree.C:984
 DumpOCDBtoTree.C:985
 DumpOCDBtoTree.C:986
 DumpOCDBtoTree.C:987
 DumpOCDBtoTree.C:988
 DumpOCDBtoTree.C:989
 DumpOCDBtoTree.C:990
 DumpOCDBtoTree.C:991
 DumpOCDBtoTree.C:992
 DumpOCDBtoTree.C:993
 DumpOCDBtoTree.C:994
 DumpOCDBtoTree.C:995
 DumpOCDBtoTree.C:996
 DumpOCDBtoTree.C:997
 DumpOCDBtoTree.C:998
 DumpOCDBtoTree.C:999
 DumpOCDBtoTree.C:1000
 DumpOCDBtoTree.C:1001
 DumpOCDBtoTree.C:1002
 DumpOCDBtoTree.C:1003
 DumpOCDBtoTree.C:1004
 DumpOCDBtoTree.C:1005
 DumpOCDBtoTree.C:1006
 DumpOCDBtoTree.C:1007
 DumpOCDBtoTree.C:1008
 DumpOCDBtoTree.C:1009
 DumpOCDBtoTree.C:1010
 DumpOCDBtoTree.C:1011
 DumpOCDBtoTree.C:1012
 DumpOCDBtoTree.C:1013
 DumpOCDBtoTree.C:1014
 DumpOCDBtoTree.C:1015
 DumpOCDBtoTree.C:1016
 DumpOCDBtoTree.C:1017
 DumpOCDBtoTree.C:1018
 DumpOCDBtoTree.C:1019
 DumpOCDBtoTree.C:1020
 DumpOCDBtoTree.C:1021
 DumpOCDBtoTree.C:1022
 DumpOCDBtoTree.C:1023
 DumpOCDBtoTree.C:1024
 DumpOCDBtoTree.C:1025
 DumpOCDBtoTree.C:1026
 DumpOCDBtoTree.C:1027
 DumpOCDBtoTree.C:1028
 DumpOCDBtoTree.C:1029
 DumpOCDBtoTree.C:1030
 DumpOCDBtoTree.C:1031
 DumpOCDBtoTree.C:1032
 DumpOCDBtoTree.C:1033
 DumpOCDBtoTree.C:1034
 DumpOCDBtoTree.C:1035
 DumpOCDBtoTree.C:1036
 DumpOCDBtoTree.C:1037
 DumpOCDBtoTree.C:1038
 DumpOCDBtoTree.C:1039
 DumpOCDBtoTree.C:1040
 DumpOCDBtoTree.C:1041
 DumpOCDBtoTree.C:1042
 DumpOCDBtoTree.C:1043
 DumpOCDBtoTree.C:1044
 DumpOCDBtoTree.C:1045
 DumpOCDBtoTree.C:1046
 DumpOCDBtoTree.C:1047
 DumpOCDBtoTree.C:1048
 DumpOCDBtoTree.C:1049
 DumpOCDBtoTree.C:1050
 DumpOCDBtoTree.C:1051