ROOT logo
#ifndef ALIPHOSCALIBDATA_H
#define ALIPHOSCALIBDATA_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

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

#include "TNamed.h"
#include "TString.h"

class AliPHOSEmcCalibData;
class AliPHOSCpvCalibData;
class AliPHOSEmcBadChannelsMap;
class AliCDBMetaData;

class AliPHOSCalibData: public TNamed {

 public:
  AliPHOSCalibData();
  AliPHOSCalibData(Int_t runNumber);
  AliPHOSCalibData(AliPHOSCalibData & phosCDB);
  virtual ~AliPHOSCalibData();

  AliPHOSCalibData & operator = (const AliPHOSCalibData & rhs);

  void Reset();
  virtual void Print(Option_t *option = "") const; 

  AliPHOSEmcCalibData *GetCalibDataEmc() const {return fCalibDataEmc;}
  AliPHOSCpvCalibData *GetCalibDataCpv() const {return fCalibDataCpv;}
  
  void CreateNew();
  void RandomEmc(Float_t ccMin=0.5   , Float_t ccMax=1.5);
  void RandomCpv(Float_t ccMin=0.0009, Float_t ccMax=0.0015);

  //----First EMC parameters---------
  Float_t GetADCchannelEmc(Int_t module, Int_t column, Int_t row) const;
  void    SetADCchannelEmc(Int_t module, Int_t column, Int_t row, Float_t value);

  Float_t GetADCpedestalEmc(Int_t module, Int_t column, Int_t row) const;
  void    SetADCpedestalEmc(Int_t module, Int_t column, Int_t row, Float_t value);

  Float_t GetHighLowRatioEmc(Int_t module, Int_t column, Int_t row) const ;
  void    SetHighLowRatioEmc(Int_t module, Int_t column, Int_t row, Float_t value) ;
  
  Float_t GetTimeShiftEmc(Int_t module, Int_t column, Int_t row) const;
  void    SetTimeShiftEmc(Int_t module, Int_t column, Int_t row, Float_t value) ;

  Float_t GetLGTimeShiftEmc(Int_t module, Int_t column, Int_t row) const;
  void    SetLGTimeShiftEmc(Int_t module, Int_t column, Int_t row, Float_t value) ;

  Int_t  GetAltroOffsetEmc(Int_t module, Int_t column, Int_t row) const;
  void   SetAltroOffsetEmc(Int_t module, Int_t column, Int_t row, Int_t value) ;

  Float_t GetSampleTimeStep() const ;
  void    SetSampleTimeStep(Float_t step) ;

  //----Now CPV parameters-----------
  Float_t GetADCchannelCpv(Int_t module, Int_t column, Int_t row) const;
  void    SetADCchannelCpv(Int_t module, Int_t column, Int_t row, Float_t value);

  Float_t GetADCpedestalCpv(Int_t module, Int_t column, Int_t row) const;
  void    SetADCpedestalCpv(Int_t module, Int_t column, Int_t row, Float_t value);

  //----Bad channels map-------------
  Int_t  GetNumOfEmcBadChannels() const;
  Bool_t IsBadChannelEmc(Int_t module, Int_t col, Int_t row) const; 
  void   EmcBadChannelIds(Int_t *badIds=0); 

  void SetEmcDataPath(const char* emcPath) {fEmcDataPath=emcPath;}
  void SetCpvDataPath(const char* cpvPath) {fCpvDataPath=cpvPath;}

  Bool_t WriteEmc(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md);
  Bool_t WriteCpv(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md);
  Bool_t WriteEmcBadChannelsMap(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md);

  //----Decalibration factors for simulation-------------
  Float_t GetADCchannelEmcDecalib(Int_t module, Int_t column, Int_t row) const;
  void    SetADCchannelEmcDecalib(Int_t module, Int_t column, Int_t row, Float_t value);  
  
 private:

  AliPHOSEmcCalibData* fCalibDataEmc; // EMC calibration data
  AliPHOSCpvCalibData* fCalibDataCpv; // CPV calibration data
  AliPHOSEmcBadChannelsMap* fEmcBadChannelsMap; // EMC bad channels map
  
  TString fEmcDataPath; // path to EMC calibration data
  TString fCpvDataPath; // path to CPV calibration data
  TString fEmcBadChannelsMapPath; // path to bad channels map

  ClassDef(AliPHOSCalibData,6)    // PHOS Calibration data
};

#endif
 AliPHOSCalibData.h:1
 AliPHOSCalibData.h:2
 AliPHOSCalibData.h:3
 AliPHOSCalibData.h:4
 AliPHOSCalibData.h:5
 AliPHOSCalibData.h:6
 AliPHOSCalibData.h:7
 AliPHOSCalibData.h:8
 AliPHOSCalibData.h:9
 AliPHOSCalibData.h:10
 AliPHOSCalibData.h:11
 AliPHOSCalibData.h:12
 AliPHOSCalibData.h:13
 AliPHOSCalibData.h:14
 AliPHOSCalibData.h:15
 AliPHOSCalibData.h:16
 AliPHOSCalibData.h:17
 AliPHOSCalibData.h:18
 AliPHOSCalibData.h:19
 AliPHOSCalibData.h:20
 AliPHOSCalibData.h:21
 AliPHOSCalibData.h:22
 AliPHOSCalibData.h:23
 AliPHOSCalibData.h:24
 AliPHOSCalibData.h:25
 AliPHOSCalibData.h:26
 AliPHOSCalibData.h:27
 AliPHOSCalibData.h:28
 AliPHOSCalibData.h:29
 AliPHOSCalibData.h:30
 AliPHOSCalibData.h:31
 AliPHOSCalibData.h:32
 AliPHOSCalibData.h:33
 AliPHOSCalibData.h:34
 AliPHOSCalibData.h:35
 AliPHOSCalibData.h:36
 AliPHOSCalibData.h:37
 AliPHOSCalibData.h:38
 AliPHOSCalibData.h:39
 AliPHOSCalibData.h:40
 AliPHOSCalibData.h:41
 AliPHOSCalibData.h:42
 AliPHOSCalibData.h:43
 AliPHOSCalibData.h:44
 AliPHOSCalibData.h:45
 AliPHOSCalibData.h:46
 AliPHOSCalibData.h:47
 AliPHOSCalibData.h:48
 AliPHOSCalibData.h:49
 AliPHOSCalibData.h:50
 AliPHOSCalibData.h:51
 AliPHOSCalibData.h:52
 AliPHOSCalibData.h:53
 AliPHOSCalibData.h:54
 AliPHOSCalibData.h:55
 AliPHOSCalibData.h:56
 AliPHOSCalibData.h:57
 AliPHOSCalibData.h:58
 AliPHOSCalibData.h:59
 AliPHOSCalibData.h:60
 AliPHOSCalibData.h:61
 AliPHOSCalibData.h:62
 AliPHOSCalibData.h:63
 AliPHOSCalibData.h:64
 AliPHOSCalibData.h:65
 AliPHOSCalibData.h:66
 AliPHOSCalibData.h:67
 AliPHOSCalibData.h:68
 AliPHOSCalibData.h:69
 AliPHOSCalibData.h:70
 AliPHOSCalibData.h:71
 AliPHOSCalibData.h:72
 AliPHOSCalibData.h:73
 AliPHOSCalibData.h:74
 AliPHOSCalibData.h:75
 AliPHOSCalibData.h:76
 AliPHOSCalibData.h:77
 AliPHOSCalibData.h:78
 AliPHOSCalibData.h:79
 AliPHOSCalibData.h:80
 AliPHOSCalibData.h:81
 AliPHOSCalibData.h:82
 AliPHOSCalibData.h:83
 AliPHOSCalibData.h:84
 AliPHOSCalibData.h:85
 AliPHOSCalibData.h:86
 AliPHOSCalibData.h:87
 AliPHOSCalibData.h:88
 AliPHOSCalibData.h:89
 AliPHOSCalibData.h:90
 AliPHOSCalibData.h:91
 AliPHOSCalibData.h:92
 AliPHOSCalibData.h:93
 AliPHOSCalibData.h:94
 AliPHOSCalibData.h:95
 AliPHOSCalibData.h:96
 AliPHOSCalibData.h:97
 AliPHOSCalibData.h:98
 AliPHOSCalibData.h:99