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$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// class for PHOS calibration                                                 //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TRandom.h"
#include "AliLog.h"
#include "AliPHOSCalibData.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBId.h"
#include "AliCDBEntry.h"
#include "AliPHOSEmcCalibData.h"
#include "AliPHOSCpvCalibData.h"
#include "AliPHOSEmcBadChannelsMap.h"
#include "AliCDBMetaData.h"

ClassImp(AliPHOSCalibData)

//________________________________________________________________
  AliPHOSCalibData::AliPHOSCalibData(): 
    TNamed(), 
    fCalibDataEmc(0x0), 
    fCalibDataCpv(0x0),
    fEmcBadChannelsMap(0x0),
    fEmcDataPath("PHOS/Calib/EmcGainPedestals"),
    fCpvDataPath("PHOS/Calib/CpvGainPedestals"),
    fEmcBadChannelsMapPath("PHOS/Calib/EmcBadChannels")
{
  // Default constructor.
  // Open CDB entry, get EMC and CPV calibration data and bad channel map.
  // If EMC or CPV calibration data does not exist, stop the run
 
}

//________________________________________________________________
AliPHOSCalibData::AliPHOSCalibData(Int_t runNumber) :
  TNamed("phosCalib","PHOS Calibration Data Manager"),
  fCalibDataEmc(0x0), fCalibDataCpv(0x0), fEmcBadChannelsMap(0x0),
  fEmcDataPath("PHOS/Calib/EmcGainPedestals"),
  fCpvDataPath("PHOS/Calib/CpvGainPedestals"),
  fEmcBadChannelsMapPath("PHOS/Calib/EmcBadChannels")
{
  // Constructor
  // Open CDB entry, get EMC and CPV calibration data and bad channel map.
  // If EMC or CPV calibration data does not exist, stop the run

  AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data(),runNumber);
  if(entryEmc)
    fCalibDataEmc = (AliPHOSEmcCalibData*)entryEmc->GetObject();

  if(!fCalibDataEmc)
    AliFatal("Calibration parameters for PHOS EMC not found. Stop reconstruction!\n");
  
  AliCDBEntry* entryCpv = AliCDBManager::Instance()->Get(fCpvDataPath.Data(),runNumber);
  if(entryCpv)
    fCalibDataCpv = (AliPHOSCpvCalibData*)entryCpv->GetObject();

  if(!fCalibDataCpv)
    AliFatal("Calibration parameters for PHOS CPV not found. Stop reconstruction!\n");
  
  AliCDBEntry* entryEmcBadMap = AliCDBManager::Instance()->
    Get(fEmcBadChannelsMapPath.Data(),runNumber);
  if(entryEmcBadMap)
    fEmcBadChannelsMap = (AliPHOSEmcBadChannelsMap*)entryEmcBadMap->GetObject(); 

}

//________________________________________________________________
AliPHOSCalibData::AliPHOSCalibData(AliPHOSCalibData & phosCDB) :
  TNamed(phosCDB),
  fCalibDataEmc(phosCDB.fCalibDataEmc),
  fCalibDataCpv(phosCDB.fCalibDataCpv),
  fEmcBadChannelsMap(phosCDB.fEmcBadChannelsMap),
  fEmcDataPath(phosCDB.fEmcDataPath),
  fCpvDataPath(phosCDB.fCpvDataPath),
  fEmcBadChannelsMapPath(phosCDB.fEmcBadChannelsMapPath)
{
  // Copy constructor
}
//________________________________________________________________
AliPHOSCalibData::~AliPHOSCalibData()
{
  // Destructor
 
}

//________________________________________________________________
AliPHOSCalibData & AliPHOSCalibData::operator = (const AliPHOSCalibData & rhs)
{
  //Copy-assignment. Does not delete anything (see destructor)
  //compiler generated is ok, but ... because -Weffc++ and pointer
  //members we have to define it explicitly.
  TNamed::operator=(rhs);
  if (this != &rhs) {
    fCalibDataEmc = rhs.fCalibDataEmc;
    fCalibDataCpv = rhs.fCalibDataCpv;
    fEmcBadChannelsMap = rhs.fEmcBadChannelsMap;
    fEmcDataPath  = rhs.fEmcDataPath;
    fCpvDataPath  = rhs.fCpvDataPath;
    fEmcBadChannelsMapPath = rhs.fEmcBadChannelsMapPath;
  }
  else {
    AliFatal("Self assignment!");
  }
  return *this;
}

//________________________________________________________________
void AliPHOSCalibData::Reset()
{
  // Set all pedestals to 0 and all ADC channels to 1,
  // and all channels are good (alive)

  fCalibDataEmc     ->Reset();
  fCalibDataCpv     ->Reset();
  fEmcBadChannelsMap->Reset();
}

//________________________________________________________________
void  AliPHOSCalibData::Print(Option_t *option) const
{
  // Print EMC and CPV calibration containers
  // Input: option="ped"  to print pedestals
  //        option="gain" to print calibration coefficients
  if (fCalibDataEmc) fCalibDataEmc->Print(option);
  if (fCalibDataCpv) fCalibDataCpv->Print(option);
}

//________________________________________________________________
void AliPHOSCalibData::CreateNew()
{
  // Create new EMC and CPV calibration containers with ideal coefficients

  if(fCalibDataEmc) delete fCalibDataEmc;
  fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");

  if(fCalibDataCpv) delete fCalibDataCpv;
  fCalibDataCpv = new AliPHOSCpvCalibData("PHOS-CPV");

  if(fEmcBadChannelsMap) delete fEmcBadChannelsMap;
  fEmcBadChannelsMap = new AliPHOSEmcBadChannelsMap();

}

//________________________________________________________________
Bool_t AliPHOSCalibData::WriteEmc(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md)
{
  // Write EMC calibration container to CDB

  if(!fCalibDataEmc) return kFALSE;

  AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS/*");
  if(!storage)
    storage = AliCDBManager::Instance()->GetDefaultStorage();

  if(storage) { 
    AliCDBId id(fEmcDataPath.Data(),firstRun,lastRun);
    storage->Put(fCalibDataEmc,id, md);
    return kTRUE;
  }
  else
    return kFALSE;

}

//________________________________________________________________
Bool_t AliPHOSCalibData::WriteCpv(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md)
{
  // Write CPV calibration container to CDB

  if(!fCalibDataCpv) return kFALSE;
  
  AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS/*");
  if(!storage)
    storage = AliCDBManager::Instance()->GetDefaultStorage();

  if(storage) { 
    AliCDBId id(fCpvDataPath.Data(),firstRun,lastRun);
    storage->Put(fCalibDataCpv,id, md);
    return kTRUE;
  }
  else
    return kFALSE;

}


//________________________________________________________________
Bool_t AliPHOSCalibData::WriteEmcBadChannelsMap(Int_t firstRun,Int_t lastRun,AliCDBMetaData *md)
{
  //Write EMC bad channels map into CDB.

  if(!fEmcBadChannelsMap) return kFALSE;
  
  AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS/*");
  if(!storage)
    storage = AliCDBManager::Instance()->GetDefaultStorage();

  if(storage) { 
    AliCDBId id(fEmcBadChannelsMapPath.Data(),firstRun,lastRun);
    storage->Put(fEmcBadChannelsMap,id, md);
    return kTRUE;
  }
  else
    return kFALSE;
}

//________________________________________________________________
Float_t AliPHOSCalibData::GetADCchannelEmc(Int_t module, Int_t column, Int_t row) const
{
  // Return EMC calibration coefficient
  // for channel defined by (module,column,row)
  // module, column,raw should follow the internal PHOS convention:
  // module 1:5, column 1:56, row 1:64
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one

  if(fCalibDataEmc) 
    return fCalibDataEmc->GetADCchannelEmc(module,column,row);
  else
    return 1.0; // default width of one EMC ADC channel in GeV
}

//________________________________________________________________
void AliPHOSCalibData::SetADCchannelEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set EMC calibration coefficient for (module,column,row)

  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");

  fCalibDataEmc->SetADCchannelEmc(module,column,row,value);
}

//________________________________________________________________
Float_t AliPHOSCalibData::GetADCpedestalEmc(Int_t module, Int_t column, Int_t row) const
{
  // Return EMC pedestal for channel defined by (module,column,row)
  // module, column,raw should follow the internal PHOS convention:
  // module 1:5, column 1:56, row 1:64
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one

  if(fCalibDataEmc) 
    return fCalibDataEmc->GetADCpedestalEmc(module,column,row);
  else
    return 0.0; // default EMC ADC pedestal
}

//________________________________________________________________
void AliPHOSCalibData::SetADCpedestalEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set EMC pedestal for (module,column,row)

  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");

  fCalibDataEmc->SetADCpedestalEmc(module,column,row,value);
}

//________________________________________________________________
Float_t AliPHOSCalibData::GetHighLowRatioEmc(Int_t module, Int_t column, Int_t row) const
{
  // Return EMC calibration coefficient
  // for channel defined by (module,column,row)
  // module, column,raw should follow the internal PHOS convention:
  // module 1:5, column 1:56, row 1:64
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one
 
  if(fCalibDataEmc)
    return fCalibDataEmc->GetHighLowRatioEmc(module,column,row);
  else
    return 1.0; // default width of one EMC ADC channel in GeV
}
 
//________________________________________________________________
void AliPHOSCalibData::SetHighLowRatioEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set EMC calibration coefficient for (module,column,row)
 
  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
 
  fCalibDataEmc->SetHighLowRatioEmc(module,column,row,value);
}
 
//________________________________________________________________
Float_t AliPHOSCalibData::GetTimeShiftEmc(Int_t module, Int_t column, Int_t row) const
{ 
  // Return EMC calibration coefficient 
  // for channel defined by (module,column,row)                                
  // module, column,raw should follow the internal PHOS convention:            
  // module 1:5, column 1:56, row 1:64 
  // if CBD instance exists, the value is taken from CDB. 
  // Otherwise it is an ideal one  
  
  if(fCalibDataEmc)
    return fCalibDataEmc->GetTimeShiftEmc(module,column,row);
  else
    return 0.0; // by default no offset
}
//________________________________________________________________
Float_t AliPHOSCalibData::GetLGTimeShiftEmc(Int_t module, Int_t column, Int_t row) const
{ 
  // Return EMC calibration coefficient 
  // for channel defined by (module,column,row)                                
  // module, column,raw should follow the internal PHOS convention:            
  // module 1:5, column 1:56, row 1:64 
  // if CBD instance exists, the value is taken from CDB. 
  // Otherwise it is an ideal one  
  
  if(fCalibDataEmc)
    return fCalibDataEmc->GetLGTimeShiftEmc(module,column,row);
  else
    return 0.0; // no offset by default
}
 
//________________________________________________________________
void AliPHOSCalibData::SetLGTimeShiftEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set EMC calibration coefficient for (module,column,row)
 
  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
 
  fCalibDataEmc->SetLGTimeShiftEmc(module,column,row,value);
}
//________________________________________________________________
void AliPHOSCalibData::SetTimeShiftEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set EMC calibration coefficient for (module,column,row)
 
  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
 
  fCalibDataEmc->SetTimeShiftEmc(module,column,row,value);
}
//________________________________________________________________
Float_t AliPHOSCalibData::GetSampleTimeStep() const 
{
  //Get conversion coeff. from sample time step to seconds.
  //Negative value means that it is not used in reconstruction
  //but only in simulation of raw.
  if(fCalibDataEmc)
    return fCalibDataEmc->GetSampleTimeStep();
  else
    return 0.0; // default width of one EMC ADC channel in GeV
}
//________________________________________________________________
void   AliPHOSCalibData::SetSampleTimeStep(Float_t step)
{
  //Set conversion coeff. from sample time step to seconds.
  //Negative value means that it is not used in reconstruction
  //but only in simulation of raw.
  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");

  fCalibDataEmc->SetSampleTimeStep(step) ;
}
//________________________________________________________________
Int_t AliPHOSCalibData::GetAltroOffsetEmc(Int_t module, Int_t column, Int_t row) const
{
  // Return ALTRO pedestal coefficient
  // for channel defined by (module,column,row)
  // module, column,raw should follow the internal PHOS convention:
  // module 1:5, column 1:56, row 1:64
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one
 
  if(fCalibDataEmc)
    return fCalibDataEmc->GetAltroOffsetEmc(module,column,row);
  else
    return 0; // default width of one EMC ADC channel in GeV
}
 
//________________________________________________________________
void AliPHOSCalibData::SetAltroOffsetEmc(Int_t module, Int_t column, Int_t row, Int_t value)
{
  // Set altro offset for (module,column,row)
 
  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
 
  fCalibDataEmc->SetAltroOffsetEmc(module,column,row,value);
}

 
//________________________________________________________________
Float_t AliPHOSCalibData::GetADCchannelCpv(Int_t module, Int_t column, Int_t row) const
{
  // Return CPV calibration coefficient
  // for channel defined by (module,column,row)
  // module, column,raw should follow the internal CPV convention:
  // module 1:5, column 1:56, row 1:128
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one

  if(fCalibDataCpv) 
    return fCalibDataCpv->GetADCchannelCpv(module,column,row);
  else
    return 0.0012; // default width of one ADC channel in CPV arbitrary units
}

//________________________________________________________________
Float_t AliPHOSCalibData::GetADCpedestalCpv(Int_t module, Int_t column, Int_t row) const
{
  // Return CPV pedestal
  // for channel defined by (module,column,row)
  // module, column,raw should follow the internal CPV convention:
  // module 1:5, column 1:56, row 1:128
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one

  if(fCalibDataCpv) 
    return fCalibDataCpv->GetADCpedestalCpv(module,column,row);
  else
    return 0.012; // default CPV ADC pedestal
}

//________________________________________________________________
void AliPHOSCalibData::SetADCchannelCpv(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set CPV calibration coefficient for (module,column,row)

  if(!fCalibDataCpv)
    fCalibDataCpv = new AliPHOSCpvCalibData("PHOS-CPV");

  fCalibDataCpv->SetADCchannelCpv(module,column,row,value);
}

//________________________________________________________________
void AliPHOSCalibData::SetADCpedestalCpv(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set CPV pedestal for (module,column,row)

  if(!fCalibDataCpv)
    fCalibDataCpv = new AliPHOSCpvCalibData("PHOS-CPV");

  fCalibDataCpv->SetADCpedestalCpv(module,column,row,value);
}

//________________________________________________________________
void AliPHOSCalibData::RandomEmc(Float_t ccMin, Float_t ccMax)
{
  // Create decalibrated EMC with calibration coefficients and pedestals
  // randomly distributed within hard-coded limits
  // Default spread of calibration parameters is Cmax/Cmin = 4, (Cmax-Cmin)/2 = 1

  if(fCalibDataEmc) delete fCalibDataEmc;
  fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");

  TRandom rn;
  rn.SetSeed(0); //the seed is set to the current  machine clock
  
  Float_t adcChannelEmc,adcPedestalEmc;

  for(Int_t module=1; module<6; module++) {
    for(Int_t column=1; column<57; column++) {
      for(Int_t row=1; row<65; row++) {
        adcChannelEmc =rn.Uniform(ccMin,ccMax);
        adcPedestalEmc=rn.Uniform(0.0,0.0); // 0 spread of pedestals
        fCalibDataEmc->SetADCchannelEmc(module,column,row,adcChannelEmc);
        fCalibDataEmc->SetADCpedestalEmc(module,column,row,adcPedestalEmc);
      }
    }
  }

}

//________________________________________________________________
void AliPHOSCalibData::RandomCpv(Float_t ccMin, Float_t ccMax)
{
  // Create decalibrated CPV with calibration coefficients and pedestals
  // randomly distributed within hard-coded limits
  // Default spread of calibration parameters is  0.0012 +- 25%

  if(fCalibDataCpv) delete fCalibDataCpv;
  fCalibDataCpv = new AliPHOSCpvCalibData("PHOS-CPV");

  TRandom rn;
  rn.SetSeed(0); //the seed is set to the current  machine clock
  
  Float_t adcChannelCpv,adcPedestalCpv;

  for(Int_t module=1; module<6; module++) {
    for(Int_t column=1; column<57; column++) {
      for(Int_t row=1; row<129; row++) {
	adcChannelCpv =rn.Uniform(ccMin,ccMax);
        adcPedestalCpv=rn.Uniform(0.0048,0.0192); // Ped[max]/Ped[min] = 4, <Ped> = 0.012
        fCalibDataCpv->SetADCchannelCpv(module,column,row,adcChannelCpv);
        fCalibDataCpv->SetADCpedestalCpv(module,column,row,adcPedestalCpv);
      }
    }
  }
}
//________________________________________________________________
Bool_t AliPHOSCalibData::IsBadChannelEmc(Int_t module, Int_t col, Int_t row) const
{
  //If no bad channels map found, channel considered good

  if(fEmcBadChannelsMap) 
    return fEmcBadChannelsMap->IsBadChannel(module,col,row);
  else
    return kFALSE;
}

//________________________________________________________________
Int_t AliPHOSCalibData::GetNumOfEmcBadChannels() const
{
  if(fEmcBadChannelsMap)
    return fEmcBadChannelsMap->GetNumOfBadChannels();
  else
    return 0;
}
//________________________________________________________________
void AliPHOSCalibData::EmcBadChannelIds(Int_t *badIds)
{
  //Fill array badIds by the Ids of EMC bad channels.
  //Array badIds of length GetNumOfBadChannels() should be prepared in advance. 

  if(fEmcBadChannelsMap)              
    fEmcBadChannelsMap->BadChannelIds(badIds);
}

//________________________________________________________________
Float_t AliPHOSCalibData::GetADCchannelEmcDecalib(Int_t module, Int_t column, Int_t row) const
{
  // Return random EMC (de)calibration factor O(1) for channel defined by (module,column,row). 
  // Used in simulation.
  
  // module, column,raw should follow the internal PHOS convention:
  // module 1:5, column 1:56, row 1:64
  // if CBD instance exists, the value is taken from CDB.
  // Otherwise it is an ideal one (no decalibration).
  
  if(fCalibDataEmc) 
    return fCalibDataEmc->GetADCchannelEmcDecalib(module,column,row);
  else
    return 1.0; // no decalibration by default
}

//________________________________________________________________
void AliPHOSCalibData::SetADCchannelEmcDecalib(Int_t module, Int_t column, Int_t row, Float_t value)
{
  // Set EMC (de)calibration factor for (module,column,row).
  // Used in simulation.
  
  if(!fCalibDataEmc)
    fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
  
  fCalibDataEmc->SetADCchannelEmcDecalib(module,column,row,value);
}
 AliPHOSCalibData.cxx:1
 AliPHOSCalibData.cxx:2
 AliPHOSCalibData.cxx:3
 AliPHOSCalibData.cxx:4
 AliPHOSCalibData.cxx:5
 AliPHOSCalibData.cxx:6
 AliPHOSCalibData.cxx:7
 AliPHOSCalibData.cxx:8
 AliPHOSCalibData.cxx:9
 AliPHOSCalibData.cxx:10
 AliPHOSCalibData.cxx:11
 AliPHOSCalibData.cxx:12
 AliPHOSCalibData.cxx:13
 AliPHOSCalibData.cxx:14
 AliPHOSCalibData.cxx:15
 AliPHOSCalibData.cxx:16
 AliPHOSCalibData.cxx:17
 AliPHOSCalibData.cxx:18
 AliPHOSCalibData.cxx:19
 AliPHOSCalibData.cxx:20
 AliPHOSCalibData.cxx:21
 AliPHOSCalibData.cxx:22
 AliPHOSCalibData.cxx:23
 AliPHOSCalibData.cxx:24
 AliPHOSCalibData.cxx:25
 AliPHOSCalibData.cxx:26
 AliPHOSCalibData.cxx:27
 AliPHOSCalibData.cxx:28
 AliPHOSCalibData.cxx:29
 AliPHOSCalibData.cxx:30
 AliPHOSCalibData.cxx:31
 AliPHOSCalibData.cxx:32
 AliPHOSCalibData.cxx:33
 AliPHOSCalibData.cxx:34
 AliPHOSCalibData.cxx:35
 AliPHOSCalibData.cxx:36
 AliPHOSCalibData.cxx:37
 AliPHOSCalibData.cxx:38
 AliPHOSCalibData.cxx:39
 AliPHOSCalibData.cxx:40
 AliPHOSCalibData.cxx:41
 AliPHOSCalibData.cxx:42
 AliPHOSCalibData.cxx:43
 AliPHOSCalibData.cxx:44
 AliPHOSCalibData.cxx:45
 AliPHOSCalibData.cxx:46
 AliPHOSCalibData.cxx:47
 AliPHOSCalibData.cxx:48
 AliPHOSCalibData.cxx:49
 AliPHOSCalibData.cxx:50
 AliPHOSCalibData.cxx:51
 AliPHOSCalibData.cxx:52
 AliPHOSCalibData.cxx:53
 AliPHOSCalibData.cxx:54
 AliPHOSCalibData.cxx:55
 AliPHOSCalibData.cxx:56
 AliPHOSCalibData.cxx:57
 AliPHOSCalibData.cxx:58
 AliPHOSCalibData.cxx:59
 AliPHOSCalibData.cxx:60
 AliPHOSCalibData.cxx:61
 AliPHOSCalibData.cxx:62
 AliPHOSCalibData.cxx:63
 AliPHOSCalibData.cxx:64
 AliPHOSCalibData.cxx:65
 AliPHOSCalibData.cxx:66
 AliPHOSCalibData.cxx:67
 AliPHOSCalibData.cxx:68
 AliPHOSCalibData.cxx:69
 AliPHOSCalibData.cxx:70
 AliPHOSCalibData.cxx:71
 AliPHOSCalibData.cxx:72
 AliPHOSCalibData.cxx:73
 AliPHOSCalibData.cxx:74
 AliPHOSCalibData.cxx:75
 AliPHOSCalibData.cxx:76
 AliPHOSCalibData.cxx:77
 AliPHOSCalibData.cxx:78
 AliPHOSCalibData.cxx:79
 AliPHOSCalibData.cxx:80
 AliPHOSCalibData.cxx:81
 AliPHOSCalibData.cxx:82
 AliPHOSCalibData.cxx:83
 AliPHOSCalibData.cxx:84
 AliPHOSCalibData.cxx:85
 AliPHOSCalibData.cxx:86
 AliPHOSCalibData.cxx:87
 AliPHOSCalibData.cxx:88
 AliPHOSCalibData.cxx:89
 AliPHOSCalibData.cxx:90
 AliPHOSCalibData.cxx:91
 AliPHOSCalibData.cxx:92
 AliPHOSCalibData.cxx:93
 AliPHOSCalibData.cxx:94
 AliPHOSCalibData.cxx:95
 AliPHOSCalibData.cxx:96
 AliPHOSCalibData.cxx:97
 AliPHOSCalibData.cxx:98
 AliPHOSCalibData.cxx:99
 AliPHOSCalibData.cxx:100
 AliPHOSCalibData.cxx:101
 AliPHOSCalibData.cxx:102
 AliPHOSCalibData.cxx:103
 AliPHOSCalibData.cxx:104
 AliPHOSCalibData.cxx:105
 AliPHOSCalibData.cxx:106
 AliPHOSCalibData.cxx:107
 AliPHOSCalibData.cxx:108
 AliPHOSCalibData.cxx:109
 AliPHOSCalibData.cxx:110
 AliPHOSCalibData.cxx:111
 AliPHOSCalibData.cxx:112
 AliPHOSCalibData.cxx:113
 AliPHOSCalibData.cxx:114
 AliPHOSCalibData.cxx:115
 AliPHOSCalibData.cxx:116
 AliPHOSCalibData.cxx:117
 AliPHOSCalibData.cxx:118
 AliPHOSCalibData.cxx:119
 AliPHOSCalibData.cxx:120
 AliPHOSCalibData.cxx:121
 AliPHOSCalibData.cxx:122
 AliPHOSCalibData.cxx:123
 AliPHOSCalibData.cxx:124
 AliPHOSCalibData.cxx:125
 AliPHOSCalibData.cxx:126
 AliPHOSCalibData.cxx:127
 AliPHOSCalibData.cxx:128
 AliPHOSCalibData.cxx:129
 AliPHOSCalibData.cxx:130
 AliPHOSCalibData.cxx:131
 AliPHOSCalibData.cxx:132
 AliPHOSCalibData.cxx:133
 AliPHOSCalibData.cxx:134
 AliPHOSCalibData.cxx:135
 AliPHOSCalibData.cxx:136
 AliPHOSCalibData.cxx:137
 AliPHOSCalibData.cxx:138
 AliPHOSCalibData.cxx:139
 AliPHOSCalibData.cxx:140
 AliPHOSCalibData.cxx:141
 AliPHOSCalibData.cxx:142
 AliPHOSCalibData.cxx:143
 AliPHOSCalibData.cxx:144
 AliPHOSCalibData.cxx:145
 AliPHOSCalibData.cxx:146
 AliPHOSCalibData.cxx:147
 AliPHOSCalibData.cxx:148
 AliPHOSCalibData.cxx:149
 AliPHOSCalibData.cxx:150
 AliPHOSCalibData.cxx:151
 AliPHOSCalibData.cxx:152
 AliPHOSCalibData.cxx:153
 AliPHOSCalibData.cxx:154
 AliPHOSCalibData.cxx:155
 AliPHOSCalibData.cxx:156
 AliPHOSCalibData.cxx:157
 AliPHOSCalibData.cxx:158
 AliPHOSCalibData.cxx:159
 AliPHOSCalibData.cxx:160
 AliPHOSCalibData.cxx:161
 AliPHOSCalibData.cxx:162
 AliPHOSCalibData.cxx:163
 AliPHOSCalibData.cxx:164
 AliPHOSCalibData.cxx:165
 AliPHOSCalibData.cxx:166
 AliPHOSCalibData.cxx:167
 AliPHOSCalibData.cxx:168
 AliPHOSCalibData.cxx:169
 AliPHOSCalibData.cxx:170
 AliPHOSCalibData.cxx:171
 AliPHOSCalibData.cxx:172
 AliPHOSCalibData.cxx:173
 AliPHOSCalibData.cxx:174
 AliPHOSCalibData.cxx:175
 AliPHOSCalibData.cxx:176
 AliPHOSCalibData.cxx:177
 AliPHOSCalibData.cxx:178
 AliPHOSCalibData.cxx:179
 AliPHOSCalibData.cxx:180
 AliPHOSCalibData.cxx:181
 AliPHOSCalibData.cxx:182
 AliPHOSCalibData.cxx:183
 AliPHOSCalibData.cxx:184
 AliPHOSCalibData.cxx:185
 AliPHOSCalibData.cxx:186
 AliPHOSCalibData.cxx:187
 AliPHOSCalibData.cxx:188
 AliPHOSCalibData.cxx:189
 AliPHOSCalibData.cxx:190
 AliPHOSCalibData.cxx:191
 AliPHOSCalibData.cxx:192
 AliPHOSCalibData.cxx:193
 AliPHOSCalibData.cxx:194
 AliPHOSCalibData.cxx:195
 AliPHOSCalibData.cxx:196
 AliPHOSCalibData.cxx:197
 AliPHOSCalibData.cxx:198
 AliPHOSCalibData.cxx:199
 AliPHOSCalibData.cxx:200
 AliPHOSCalibData.cxx:201
 AliPHOSCalibData.cxx:202
 AliPHOSCalibData.cxx:203
 AliPHOSCalibData.cxx:204
 AliPHOSCalibData.cxx:205
 AliPHOSCalibData.cxx:206
 AliPHOSCalibData.cxx:207
 AliPHOSCalibData.cxx:208
 AliPHOSCalibData.cxx:209
 AliPHOSCalibData.cxx:210
 AliPHOSCalibData.cxx:211
 AliPHOSCalibData.cxx:212
 AliPHOSCalibData.cxx:213
 AliPHOSCalibData.cxx:214
 AliPHOSCalibData.cxx:215
 AliPHOSCalibData.cxx:216
 AliPHOSCalibData.cxx:217
 AliPHOSCalibData.cxx:218
 AliPHOSCalibData.cxx:219
 AliPHOSCalibData.cxx:220
 AliPHOSCalibData.cxx:221
 AliPHOSCalibData.cxx:222
 AliPHOSCalibData.cxx:223
 AliPHOSCalibData.cxx:224
 AliPHOSCalibData.cxx:225
 AliPHOSCalibData.cxx:226
 AliPHOSCalibData.cxx:227
 AliPHOSCalibData.cxx:228
 AliPHOSCalibData.cxx:229
 AliPHOSCalibData.cxx:230
 AliPHOSCalibData.cxx:231
 AliPHOSCalibData.cxx:232
 AliPHOSCalibData.cxx:233
 AliPHOSCalibData.cxx:234
 AliPHOSCalibData.cxx:235
 AliPHOSCalibData.cxx:236
 AliPHOSCalibData.cxx:237
 AliPHOSCalibData.cxx:238
 AliPHOSCalibData.cxx:239
 AliPHOSCalibData.cxx:240
 AliPHOSCalibData.cxx:241
 AliPHOSCalibData.cxx:242
 AliPHOSCalibData.cxx:243
 AliPHOSCalibData.cxx:244
 AliPHOSCalibData.cxx:245
 AliPHOSCalibData.cxx:246
 AliPHOSCalibData.cxx:247
 AliPHOSCalibData.cxx:248
 AliPHOSCalibData.cxx:249
 AliPHOSCalibData.cxx:250
 AliPHOSCalibData.cxx:251
 AliPHOSCalibData.cxx:252
 AliPHOSCalibData.cxx:253
 AliPHOSCalibData.cxx:254
 AliPHOSCalibData.cxx:255
 AliPHOSCalibData.cxx:256
 AliPHOSCalibData.cxx:257
 AliPHOSCalibData.cxx:258
 AliPHOSCalibData.cxx:259
 AliPHOSCalibData.cxx:260
 AliPHOSCalibData.cxx:261
 AliPHOSCalibData.cxx:262
 AliPHOSCalibData.cxx:263
 AliPHOSCalibData.cxx:264
 AliPHOSCalibData.cxx:265
 AliPHOSCalibData.cxx:266
 AliPHOSCalibData.cxx:267
 AliPHOSCalibData.cxx:268
 AliPHOSCalibData.cxx:269
 AliPHOSCalibData.cxx:270
 AliPHOSCalibData.cxx:271
 AliPHOSCalibData.cxx:272
 AliPHOSCalibData.cxx:273
 AliPHOSCalibData.cxx:274
 AliPHOSCalibData.cxx:275
 AliPHOSCalibData.cxx:276
 AliPHOSCalibData.cxx:277
 AliPHOSCalibData.cxx:278
 AliPHOSCalibData.cxx:279
 AliPHOSCalibData.cxx:280
 AliPHOSCalibData.cxx:281
 AliPHOSCalibData.cxx:282
 AliPHOSCalibData.cxx:283
 AliPHOSCalibData.cxx:284
 AliPHOSCalibData.cxx:285
 AliPHOSCalibData.cxx:286
 AliPHOSCalibData.cxx:287
 AliPHOSCalibData.cxx:288
 AliPHOSCalibData.cxx:289
 AliPHOSCalibData.cxx:290
 AliPHOSCalibData.cxx:291
 AliPHOSCalibData.cxx:292
 AliPHOSCalibData.cxx:293
 AliPHOSCalibData.cxx:294
 AliPHOSCalibData.cxx:295
 AliPHOSCalibData.cxx:296
 AliPHOSCalibData.cxx:297
 AliPHOSCalibData.cxx:298
 AliPHOSCalibData.cxx:299
 AliPHOSCalibData.cxx:300
 AliPHOSCalibData.cxx:301
 AliPHOSCalibData.cxx:302
 AliPHOSCalibData.cxx:303
 AliPHOSCalibData.cxx:304
 AliPHOSCalibData.cxx:305
 AliPHOSCalibData.cxx:306
 AliPHOSCalibData.cxx:307
 AliPHOSCalibData.cxx:308
 AliPHOSCalibData.cxx:309
 AliPHOSCalibData.cxx:310
 AliPHOSCalibData.cxx:311
 AliPHOSCalibData.cxx:312
 AliPHOSCalibData.cxx:313
 AliPHOSCalibData.cxx:314
 AliPHOSCalibData.cxx:315
 AliPHOSCalibData.cxx:316
 AliPHOSCalibData.cxx:317
 AliPHOSCalibData.cxx:318
 AliPHOSCalibData.cxx:319
 AliPHOSCalibData.cxx:320
 AliPHOSCalibData.cxx:321
 AliPHOSCalibData.cxx:322
 AliPHOSCalibData.cxx:323
 AliPHOSCalibData.cxx:324
 AliPHOSCalibData.cxx:325
 AliPHOSCalibData.cxx:326
 AliPHOSCalibData.cxx:327
 AliPHOSCalibData.cxx:328
 AliPHOSCalibData.cxx:329
 AliPHOSCalibData.cxx:330
 AliPHOSCalibData.cxx:331
 AliPHOSCalibData.cxx:332
 AliPHOSCalibData.cxx:333
 AliPHOSCalibData.cxx:334
 AliPHOSCalibData.cxx:335
 AliPHOSCalibData.cxx:336
 AliPHOSCalibData.cxx:337
 AliPHOSCalibData.cxx:338
 AliPHOSCalibData.cxx:339
 AliPHOSCalibData.cxx:340
 AliPHOSCalibData.cxx:341
 AliPHOSCalibData.cxx:342
 AliPHOSCalibData.cxx:343
 AliPHOSCalibData.cxx:344
 AliPHOSCalibData.cxx:345
 AliPHOSCalibData.cxx:346
 AliPHOSCalibData.cxx:347
 AliPHOSCalibData.cxx:348
 AliPHOSCalibData.cxx:349
 AliPHOSCalibData.cxx:350
 AliPHOSCalibData.cxx:351
 AliPHOSCalibData.cxx:352
 AliPHOSCalibData.cxx:353
 AliPHOSCalibData.cxx:354
 AliPHOSCalibData.cxx:355
 AliPHOSCalibData.cxx:356
 AliPHOSCalibData.cxx:357
 AliPHOSCalibData.cxx:358
 AliPHOSCalibData.cxx:359
 AliPHOSCalibData.cxx:360
 AliPHOSCalibData.cxx:361
 AliPHOSCalibData.cxx:362
 AliPHOSCalibData.cxx:363
 AliPHOSCalibData.cxx:364
 AliPHOSCalibData.cxx:365
 AliPHOSCalibData.cxx:366
 AliPHOSCalibData.cxx:367
 AliPHOSCalibData.cxx:368
 AliPHOSCalibData.cxx:369
 AliPHOSCalibData.cxx:370
 AliPHOSCalibData.cxx:371
 AliPHOSCalibData.cxx:372
 AliPHOSCalibData.cxx:373
 AliPHOSCalibData.cxx:374
 AliPHOSCalibData.cxx:375
 AliPHOSCalibData.cxx:376
 AliPHOSCalibData.cxx:377
 AliPHOSCalibData.cxx:378
 AliPHOSCalibData.cxx:379
 AliPHOSCalibData.cxx:380
 AliPHOSCalibData.cxx:381
 AliPHOSCalibData.cxx:382
 AliPHOSCalibData.cxx:383
 AliPHOSCalibData.cxx:384
 AliPHOSCalibData.cxx:385
 AliPHOSCalibData.cxx:386
 AliPHOSCalibData.cxx:387
 AliPHOSCalibData.cxx:388
 AliPHOSCalibData.cxx:389
 AliPHOSCalibData.cxx:390
 AliPHOSCalibData.cxx:391
 AliPHOSCalibData.cxx:392
 AliPHOSCalibData.cxx:393
 AliPHOSCalibData.cxx:394
 AliPHOSCalibData.cxx:395
 AliPHOSCalibData.cxx:396
 AliPHOSCalibData.cxx:397
 AliPHOSCalibData.cxx:398
 AliPHOSCalibData.cxx:399
 AliPHOSCalibData.cxx:400
 AliPHOSCalibData.cxx:401
 AliPHOSCalibData.cxx:402
 AliPHOSCalibData.cxx:403
 AliPHOSCalibData.cxx:404
 AliPHOSCalibData.cxx:405
 AliPHOSCalibData.cxx:406
 AliPHOSCalibData.cxx:407
 AliPHOSCalibData.cxx:408
 AliPHOSCalibData.cxx:409
 AliPHOSCalibData.cxx:410
 AliPHOSCalibData.cxx:411
 AliPHOSCalibData.cxx:412
 AliPHOSCalibData.cxx:413
 AliPHOSCalibData.cxx:414
 AliPHOSCalibData.cxx:415
 AliPHOSCalibData.cxx:416
 AliPHOSCalibData.cxx:417
 AliPHOSCalibData.cxx:418
 AliPHOSCalibData.cxx:419
 AliPHOSCalibData.cxx:420
 AliPHOSCalibData.cxx:421
 AliPHOSCalibData.cxx:422
 AliPHOSCalibData.cxx:423
 AliPHOSCalibData.cxx:424
 AliPHOSCalibData.cxx:425
 AliPHOSCalibData.cxx:426
 AliPHOSCalibData.cxx:427
 AliPHOSCalibData.cxx:428
 AliPHOSCalibData.cxx:429
 AliPHOSCalibData.cxx:430
 AliPHOSCalibData.cxx:431
 AliPHOSCalibData.cxx:432
 AliPHOSCalibData.cxx:433
 AliPHOSCalibData.cxx:434
 AliPHOSCalibData.cxx:435
 AliPHOSCalibData.cxx:436
 AliPHOSCalibData.cxx:437
 AliPHOSCalibData.cxx:438
 AliPHOSCalibData.cxx:439
 AliPHOSCalibData.cxx:440
 AliPHOSCalibData.cxx:441
 AliPHOSCalibData.cxx:442
 AliPHOSCalibData.cxx:443
 AliPHOSCalibData.cxx:444
 AliPHOSCalibData.cxx:445
 AliPHOSCalibData.cxx:446
 AliPHOSCalibData.cxx:447
 AliPHOSCalibData.cxx:448
 AliPHOSCalibData.cxx:449
 AliPHOSCalibData.cxx:450
 AliPHOSCalibData.cxx:451
 AliPHOSCalibData.cxx:452
 AliPHOSCalibData.cxx:453
 AliPHOSCalibData.cxx:454
 AliPHOSCalibData.cxx:455
 AliPHOSCalibData.cxx:456
 AliPHOSCalibData.cxx:457
 AliPHOSCalibData.cxx:458
 AliPHOSCalibData.cxx:459
 AliPHOSCalibData.cxx:460
 AliPHOSCalibData.cxx:461
 AliPHOSCalibData.cxx:462
 AliPHOSCalibData.cxx:463
 AliPHOSCalibData.cxx:464
 AliPHOSCalibData.cxx:465
 AliPHOSCalibData.cxx:466
 AliPHOSCalibData.cxx:467
 AliPHOSCalibData.cxx:468
 AliPHOSCalibData.cxx:469
 AliPHOSCalibData.cxx:470
 AliPHOSCalibData.cxx:471
 AliPHOSCalibData.cxx:472
 AliPHOSCalibData.cxx:473
 AliPHOSCalibData.cxx:474
 AliPHOSCalibData.cxx:475
 AliPHOSCalibData.cxx:476
 AliPHOSCalibData.cxx:477
 AliPHOSCalibData.cxx:478
 AliPHOSCalibData.cxx:479
 AliPHOSCalibData.cxx:480
 AliPHOSCalibData.cxx:481
 AliPHOSCalibData.cxx:482
 AliPHOSCalibData.cxx:483
 AliPHOSCalibData.cxx:484
 AliPHOSCalibData.cxx:485
 AliPHOSCalibData.cxx:486
 AliPHOSCalibData.cxx:487
 AliPHOSCalibData.cxx:488
 AliPHOSCalibData.cxx:489
 AliPHOSCalibData.cxx:490
 AliPHOSCalibData.cxx:491
 AliPHOSCalibData.cxx:492
 AliPHOSCalibData.cxx:493
 AliPHOSCalibData.cxx:494
 AliPHOSCalibData.cxx:495
 AliPHOSCalibData.cxx:496
 AliPHOSCalibData.cxx:497
 AliPHOSCalibData.cxx:498
 AliPHOSCalibData.cxx:499
 AliPHOSCalibData.cxx:500
 AliPHOSCalibData.cxx:501
 AliPHOSCalibData.cxx:502
 AliPHOSCalibData.cxx:503
 AliPHOSCalibData.cxx:504
 AliPHOSCalibData.cxx:505
 AliPHOSCalibData.cxx:506
 AliPHOSCalibData.cxx:507
 AliPHOSCalibData.cxx:508
 AliPHOSCalibData.cxx:509
 AliPHOSCalibData.cxx:510
 AliPHOSCalibData.cxx:511
 AliPHOSCalibData.cxx:512
 AliPHOSCalibData.cxx:513
 AliPHOSCalibData.cxx:514
 AliPHOSCalibData.cxx:515
 AliPHOSCalibData.cxx:516
 AliPHOSCalibData.cxx:517
 AliPHOSCalibData.cxx:518
 AliPHOSCalibData.cxx:519
 AliPHOSCalibData.cxx:520
 AliPHOSCalibData.cxx:521
 AliPHOSCalibData.cxx:522
 AliPHOSCalibData.cxx:523
 AliPHOSCalibData.cxx:524
 AliPHOSCalibData.cxx:525
 AliPHOSCalibData.cxx:526
 AliPHOSCalibData.cxx:527
 AliPHOSCalibData.cxx:528
 AliPHOSCalibData.cxx:529
 AliPHOSCalibData.cxx:530
 AliPHOSCalibData.cxx:531
 AliPHOSCalibData.cxx:532
 AliPHOSCalibData.cxx:533
 AliPHOSCalibData.cxx:534
 AliPHOSCalibData.cxx:535
 AliPHOSCalibData.cxx:536
 AliPHOSCalibData.cxx:537
 AliPHOSCalibData.cxx:538
 AliPHOSCalibData.cxx:539
 AliPHOSCalibData.cxx:540
 AliPHOSCalibData.cxx:541
 AliPHOSCalibData.cxx:542
 AliPHOSCalibData.cxx:543
 AliPHOSCalibData.cxx:544
 AliPHOSCalibData.cxx:545
 AliPHOSCalibData.cxx:546
 AliPHOSCalibData.cxx:547
 AliPHOSCalibData.cxx:548
 AliPHOSCalibData.cxx:549
 AliPHOSCalibData.cxx:550
 AliPHOSCalibData.cxx:551
 AliPHOSCalibData.cxx:552
 AliPHOSCalibData.cxx:553
 AliPHOSCalibData.cxx:554
 AliPHOSCalibData.cxx:555
 AliPHOSCalibData.cxx:556
 AliPHOSCalibData.cxx:557
 AliPHOSCalibData.cxx:558
 AliPHOSCalibData.cxx:559
 AliPHOSCalibData.cxx:560
 AliPHOSCalibData.cxx:561
 AliPHOSCalibData.cxx:562
 AliPHOSCalibData.cxx:563
 AliPHOSCalibData.cxx:564
 AliPHOSCalibData.cxx:565
 AliPHOSCalibData.cxx:566
 AliPHOSCalibData.cxx:567
 AliPHOSCalibData.cxx:568
 AliPHOSCalibData.cxx:569
 AliPHOSCalibData.cxx:570
 AliPHOSCalibData.cxx:571
 AliPHOSCalibData.cxx:572