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

// *
// *
// * AliTOFcalibHisto - class to handle TOF calibration histograms,
// *                    map histograms and more
// *
// *
// * autors:   Roberto Preghenella (R+)
// * concacts: preghenella@bo.infn.it
// *
// *

#include "AliTOFcalibHisto.h"
#include "AliLog.h"
#include "TH1D.h"
#include "TFile.h"
#include "AliTOFRawStream.h"
#include "AliTOFCableLengthMap.h"
#include "AliESDtrack.h"

#define SLEW_TOTMIN 10.
#define SLEW_TOTMAX 16.

ClassImp(AliTOFcalibHisto)

//__________________________________________________________________________

TFile *AliTOFcalibHisto::fgCalibHistoFile = NULL;
TFile *AliTOFcalibHisto::fgCalibParFile = NULL;
TFile *AliTOFcalibHisto::fgCalibStatFile = NULL;

//__________________________________________________________________________

TString AliTOFcalibHisto::fgCalibHistoFileName = "$ALICE_ROOT/TOF/data/AliTOFcalibHisto.root";
TString AliTOFcalibHisto::fgCalibParFileName = "$ALICE_ROOT/TOF/data/AliTOFcalibPar.root";
TString AliTOFcalibHisto::fgCalibStatFileName = "$ALICE_ROOT/TOF/data/AliTOFcalibStat.root";

//__________________________________________________________________________

const TString AliTOFcalibHisto::fgkCalibConstName[kNcalibConsts] = {
  "LHCperiod",
  "AmphenolCableDelay",
  "FlatCableDelay",
  "InterfaceCardDelay"
};

//__________________________________________________________________________

const TString AliTOFcalibHisto::fgkCalibMapName[kNcalibMaps] = {
  /* main index */
  "Index",
  /* EO indices */
  "DDL",
  "TRM", 
  "Chain", 
  "TDC", 
  "Channel", 
  /* DO indices */
  "Sector", 
  "Plate", 
  "Strip", 
  "SectorStrip", 
  "PadZ", 
  "PadX", 
  "Pad",
  "InterfaceCardIndex",
  /* calib constants */
  "DDLBCshift",
  "FlatCableLength",
  "InterfaceCardLength",
  "AmphenolCableLength"
};

//__________________________________________________________________________

const TString AliTOFcalibHisto::fgkCalibParName[kNcalibPars] = {
  "hDDLDelay",
  "hHPTDCDelay",
  "hLeftFEAchDelay",
  "hRightFEAchDelay",
  "hFEADelay",
  "hICDelay",
  "hTRMDelay",
  "hStripDelay",
  "hIndexDelay",
  "hSlewing"
};

//__________________________________________________________________________

const TString AliTOFcalibHisto::fgkCalibStatName[kNcalibStats] = {
  "hStripStat"
};

//__________________________________________________________________________

/* LHC clock period [ns] */
const Double_t AliTOFcalibHisto::fgkLHCperiod = (24.4e-3 * 1024); /* ns */

//__________________________________________________________________________

/* Amphenol cable delay [ns/cm] */
const Double_t AliTOFcalibHisto::fgkAmphenolCableDelay = 5.13e-2; /* from measurement */

//__________________________________________________________________________

/* flat cable delay [ns/cm] */
//const Double_t AliTOFcalibHisto::fgkFlatCableDelay = 5.3e-2; /* from Amphenol 132-2829 series data-sheet */
const Double_t AliTOFcalibHisto::fgkFlatCableDelay = 5.124e-2; /* from LHC08d calibration */

//__________________________________________________________________________

/* interface card delay [ns/cm] */
//const Double_t AliTOFcalibHisto::fgkInterfaceCardDelay = 6.9e-2; /* from HyperLinx simulation */
//const Double_t AliTOFcalibHisto::fgkInterfaceCardDelay = 5.7898e-2; /* from LHC08d calibration */
const Double_t AliTOFcalibHisto::fgkInterfaceCardDelay = 6.31360207815420404e-02; /* from LHC09c calibration */

//__________________________________________________________________________

/* number of readout channels (DO/EO) */
const Int_t AliTOFcalibHisto::fgkNchannels = 157248;
const Int_t AliTOFcalibHisto::fgkNchannelsEO = 172800;

//__________________________________________________________________________

/* DDL BC shifts due to TTC fibers [LHCperiod] */
const Int_t AliTOFcalibHisto::fgkDDLBCshift[72] = {
  2, 2, -1, -1,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, 0, 0,
  2, 2, -1, -1,
  2, 2, -1, -1,
  2, 2, -2, -2,
  2, 2, -2, -2,
  2, 2, -2, -2,
  2, 2, -1, -1,
  2, 2, -1, -1,
  2, 2, -1, -1
};

//__________________________________________________________________________

/* strip flat-cable length (preliminary) [cm] */
const Double_t AliTOFcalibHisto::fgkFlatCableLength[91] = {
  18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 17.,
  21., 21., 21., 21., 21., 17., 17., 21., 21., 17., 21., 21., 21., 17., 21., 21., 17., 21., 23.,
  17., 19., 17., 19., 17., 19., 17., 19., 17., 19., 17., 19., 17., 19., 17.,
  23., 21., 17., 21., 21., 17., 21., 21., 21., 17., 21., 21., 17., 17., 21., 21., 21., 21., 21.,
  17., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18., 18.
};

//__________________________________________________________________________

/* interface card lenght (preliminary) [cm] */
const Double_t AliTOFcalibHisto::fgkInterfaceCardLength[48] = {
  13.97, 12.57, 14.52, 13.10, 15.44, 13.60, 10.58, 9.14, 
  11.21, 9.76, 12.11, 10.76, 8.67, 7.58, 9.32, 8.09,
  10.24, 8.4, 5.51, 4.31, 6.54, 5.23, 7.48, 6.28,
  10.43, 8.76, 11.05, 9.43, 11.72, 10.14, 7.2, 5.69,
  7.71, 6.26, 8.36, 7.19, 4.85, 4.09, 5.57, 4.35, 
  6.59, 5.12, 2.49, 2.96, 2.70, 2.76, 2.91, 2.55
};

//__________________________________________________________________________

Bool_t AliTOFcalibHisto::fgCableCorrectionFlag[kNcorrections] = {
  kFALSE, // kDDLBCcorr
  kTRUE, // kAmphenolCableCorr
  kTRUE, // kFlatCableCorr
  kTRUE, // kInterfaceCardCorr
  kFALSE, // kDDLdelayCorr
  kFALSE, // kHPTDCdelayCorr
  kFALSE, // kFEAchDelayCorr
  kFALSE, // kFEAdelayCorr
  kFALSE, // kTRMdelayCorr
  kFALSE, // kICdelayCorr
  kFALSE, // kStripDelayCorr
  kFALSE, // kIndexDelayCorr
  kFALSE, // kTimeSlewingCorr
};

//__________________________________________________________________________

Bool_t AliTOFcalibHisto::fgFullCorrectionFlag[kNcorrections] = {
  kFALSE, // kDDLBCcorr
  kTRUE, // kAmphenolCableCorr
  kTRUE, // kFlatCableCorr
  kTRUE, // kInterfaceCardCorr
  kTRUE, // kDDLdelayCorr
  kTRUE, // kHPTDCdelayCorr
  kTRUE, // kFEAchDelayCorr
  kTRUE, // kFEAdelayCorr
  kTRUE, // kTRMdelayCorr
  kFALSE, // kICdelayCorr
  kTRUE, // kStripDelayCorr
  kTRUE, // kIndexDelayCorr
  kTRUE, // kTimeSlewingCorr
};

//__________________________________________________________________________

const Int_t AliTOFcalibHisto::fgkStripStat[18][91] = {

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S00 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S01 */

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S02 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S03 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S04 */

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S05 */

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S06 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S07 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S08 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S09 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S10 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S11 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S12 */

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S13 */

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S14 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S15 */

  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S16 */
  
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}  /* S17 */

};

//__________________________________________________________________________

AliTOFcalibHisto::AliTOFcalibHisto() :
  TObject(),
  fCalibConst(),
  fCalibMap(),
  fCalibPar(),
  fCalibStat()
{
  /* default constructor */
}

//__________________________________________________________________________

AliTOFcalibHisto::~AliTOFcalibHisto()
{
  /* default destructor */
}

//__________________________________________________________________________

void 
AliTOFcalibHisto::LoadHisto(TFile * const file, TH1D **histo, const Char_t *name) 
{
  /* load histo */
  *histo = (TH1D *)file->Get(name);
  if (!*histo)
    AliWarning(Form("error while getting %s histo", name));
}

//__________________________________________________________________________

void 
AliTOFcalibHisto::CreateHisto(TH1D **histo, const Char_t *name, Int_t size) 
{
  /* create histo */
  *histo = new TH1D(name, Form(";index;%s", name), size, 0, size);
  if (!*histo)
    AliWarning(Form("error while creating %s histo", name));
}

//__________________________________________________________________________

void 
AliTOFcalibHisto::WriteHisto(TFile *file, TH1D *histo) 
{
  /* write histo */
  if (!file || !file->IsOpen() || !histo)
    return;
  file->cd(); 
  histo->Write();
}

//__________________________________________________________________________

void
AliTOFcalibHisto::SetHisto(TH1D *histo, Int_t index, Double_t value)
{
  /* set histo */
  if (!histo)
    return;
  histo->SetBinContent(index + 1, value);
}

//__________________________________________________________________________

Double_t
AliTOFcalibHisto::GetHisto(TH1D *histo, Int_t index)
{
  /* get histo */
  if (!histo) {
    AliWarning("cannot get histo");
    return 0.;
  }
  return histo->GetBinContent(index + 1);
}

//__________________________________________________________________________

void
AliTOFcalibHisto::LoadCalibHisto()
{
  /* load calib histo */

  if (fgCalibHistoFile && fgCalibHistoFile->IsOpen())
    AliWarning("calib histo file already open: reloading"); 

  /* open input file */
  TFile *fileIn = TFile::Open(GetCalibHistoFileName());
  if (!fileIn || !fileIn->IsOpen()) {
    AliFatal(Form("cannot open input file %s", GetCalibHistoFileName()));
    return;
  }

  /* set calib histo file */
  fgCalibHistoFile = fileIn;

  /* load consts */
  for (Int_t iConst = 0; iConst < kNcalibConsts; iConst++)
    LoadHisto(fileIn, &fCalibConst[iConst], fgkCalibConstName[iConst].Data());
  /* load maps */
  for (Int_t iMap = 0; iMap < kNcalibMaps; iMap++)
    LoadHisto(fileIn, &fCalibMap[iMap], fgkCalibMapName[iMap].Data());
}

//__________________________________________________________________________

void
AliTOFcalibHisto::LoadCalibPar()
{
  /* load calib par */

  if (fgCalibParFile && fgCalibParFile->IsOpen())
    AliWarning("calib par file already open: reloading"); 

  /* load calib histo */
  LoadCalibHisto();

  /* open input file */
  TFile *fileIn = TFile::Open(GetCalibParFileName());
  if (!fileIn || !fileIn->IsOpen()) {
    AliError(Form("cannot open input file %s", GetCalibParFileName()));
    return;
  }

  /* set calib par file */
  fgCalibParFile = fileIn;

  /* load pars */
  for (Int_t i = 0; i < kNcalibPars; i++)
    LoadHisto(fileIn, &fCalibPar[i], fgkCalibParName[i].Data());

}

//__________________________________________________________________________

void
AliTOFcalibHisto::LoadCalibStat()
{
  /* load calib stat */

  if (fgCalibStatFile && fgCalibStatFile->IsOpen())
    AliWarning("calib par file already open: reloading"); 

  /* load calib histo */
  LoadCalibHisto();

  /* open input file */
  TFile *fileIn = TFile::Open(GetCalibStatFileName());
  if (!fileIn || !fileIn->IsOpen()) {
    AliError(Form("cannot open input file %s", GetCalibStatFileName()));
    return;
  }

  /* set calib par file */
  fgCalibStatFile = fileIn;

  /* load pars */
  for (Int_t i = 0; i < kNcalibStats; i++)
    LoadHisto(fileIn, &fCalibStat[i], fgkCalibStatName[i].Data());

}

//__________________________________________________________________________

void
AliTOFcalibHisto::WriteCalibHisto()
{
  /* write calib histo */

  /* open output file */
  TFile *fileOut = TFile::Open(GetCalibHistoFileName(), "RECREATE");
  if (!fileOut || !fileOut->IsOpen()) {
    AliFatal(Form("cannot open output file %s", GetCalibHistoFileName()));
    return;
  }

  /* create consts */
  for (Int_t iConst = 0; iConst < kNcalibConsts; iConst++)
    CreateHisto(&fCalibConst[iConst], fgkCalibConstName[iConst].Data(), 1);
  /* create maps */
  for (Int_t iMap = 0; iMap < kNcalibMaps; iMap++)
    if (iMap == kIndex)
      CreateHisto(&fCalibMap[iMap], fgkCalibMapName[iMap].Data(), fgkNchannelsEO);
    else
      CreateHisto(&fCalibMap[iMap], fgkCalibMapName[iMap].Data(), fgkNchannels);

  /*** SETUP CONSTS ***/

  SetHisto(fCalibConst[kLHCperiod], 0, fgkLHCperiod);
  SetHisto(fCalibConst[kAmphenolCableDelay], 0, fgkAmphenolCableDelay);
  SetHisto(fCalibConst[kFlatCableDelay], 0, fgkFlatCableDelay);
  SetHisto(fCalibConst[kInterfaceCardDelay], 0, fgkInterfaceCardDelay);
  
  /***  SETUP MAPS  ***/

  AliTOFRawStream rawStream;
  Int_t indexEO, det[5], dummy, index, sector, plate, strip, sectorStrip, padz, padx, pad, icIndex;

  /* temporarly disable warnings */
  AliLog::EType_t logLevel = (AliLog::EType_t)AliLog::GetGlobalLogLevel();
  AliLog::SetGlobalLogLevel(AliLog::kError);

  /* loop over electronics oriented (EO) indices */
  for (Int_t ddl = 0; ddl < 72; ddl++)
    for (Int_t trm = 0; trm < 10; trm++)
      for (Int_t chain = 0; chain < 2; chain++)
	for (Int_t tdc = 0; tdc < 15; tdc++)
	  for (Int_t channel = 0; channel < 8; channel++) {
	    
	    /* compute index EO */
	    indexEO = GetIndexEO(ddl, trm, chain, tdc, channel);

	    /* convert EO indices into detector oriented (DO) indices
	       (this call causes some warnings because the loop includes
	       EO indices which are not connected to physical channels) */
	    rawStream.EquipmentId2VolumeId(ddl, trm + 3, chain, tdc, channel, det);
	    
	    /* swap det[3] and det[4] */
	    dummy = det[3]; det[3] = det[4]; det[4] = dummy;
	    
	    /* check detector indices */
	    if (det[0] < 0 || det[0] > 17 ||
		det[1] < 0 || det[1] > 4 ||
		det[2] < 0 || det[2] > 18 ||
		det[3] < 0 || det[3] > 1 ||
		det[4] < 0 || det[4] > 47) {
	      SetHisto(fCalibMap[kIndex], indexEO, -1);
	      continue;
	    }
	    
	    /* setup information */
	    index = AliTOFGeometry::GetIndex(det);
	    sector = det[0];
	    plate = det[1];
	    strip = det[2];
	    sectorStrip = plate < 3 ? plate * 19 + strip : plate * 19 - 4 + strip;
	    padz = det[3];
	    padx = det[4];
	    pad = padz + 2 * padx;
	    icIndex = pad < 48 ? pad : 95 - pad;

	    /* set maps */

	    /* main index */
	    SetHisto(fCalibMap[kIndex], indexEO, index);
	    /* EO indices */
	    SetHisto(fCalibMap[kDDL], index, ddl);
	    SetHisto(fCalibMap[kTRM], index, trm);
	    SetHisto(fCalibMap[kChain], index, chain);
	    SetHisto(fCalibMap[kTDC], index, tdc);
	    SetHisto(fCalibMap[kChannel], index, channel);
	    /* DO indices */
	    SetHisto(fCalibMap[kSector], index, sector);
	    SetHisto(fCalibMap[kPlate], index, plate);
	    SetHisto(fCalibMap[kStrip], index, strip);
	    SetHisto(fCalibMap[kSectorStrip], index, sectorStrip);
	    SetHisto(fCalibMap[kPadZ], index, padz);
	    SetHisto(fCalibMap[kPadX], index, padx);
	    SetHisto(fCalibMap[kPad], index, pad);
	    SetHisto(fCalibMap[kInterfaceCardIndex], index, icIndex);
	    /* calib constants */
	    SetHisto(fCalibMap[kDDLBCshift], index, fgkDDLBCshift[ddl]);
	    SetHisto(fCalibMap[kFlatCableLength], index, fgkFlatCableLength[sectorStrip]);
	    SetHisto(fCalibMap[kInterfaceCardLength], index, fgkInterfaceCardLength[icIndex]);
	    SetHisto(fCalibMap[kAmphenolCableLength], index, AliTOFCableLengthMap::GetCableLength(ddl, trm + 3, chain, tdc));
	    
	  } /* loop over electronics oriented (EO) indices */

  /* re-enable warnings */
  AliLog::SetGlobalLogLevel(logLevel);

  /* write consts */
  for (Int_t iConst = 0; iConst < kNcalibConsts; iConst++)
    WriteHisto(fileOut, fCalibConst[iConst]);
  /* write maps */
  for (Int_t iMap = 0; iMap < kNcalibMaps; iMap++)
    WriteHisto(fileOut, fCalibMap[iMap]);

  /* close output file */
  fileOut->Close();
}

//__________________________________________________________________________

void
AliTOFcalibHisto::WriteCalibStat()
{
  /* write calib stat */

  /* open output file */
  TFile *fileOut = TFile::Open(GetCalibStatFileName(), "RECREATE");
  if (!fileOut || !fileOut->IsOpen()) {
    AliFatal(Form("cannot open output file %s", GetCalibStatFileName()));
    return;
  }

  /* create stats */
  for (Int_t iStat = 0; iStat < kNcalibStats; iStat++)
    CreateHisto(&fCalibStat[iStat], fgkCalibStatName[iStat].Data(), fgkNchannels);

  /***  SETUP STATS  ***/

  Int_t sector, sectorStrip;

  /* load calib histo */
  LoadCalibHisto();

  /* loop over channels */
  for (Int_t index = 0; index < fgkNchannels; index++) {
    sector = (Int_t)GetCalibMap(kSector, index);
    sectorStrip = (Int_t)GetCalibMap(kSectorStrip, index);
    /* strip stat */
    SetHisto(fCalibStat[kStripStat], index, (Double_t)fgkStripStat[sector][sectorStrip]);
  } /* loop over channels */

  /* write stats */
  for (Int_t iStat = 0; iStat < kNcalibStats; iStat++)
    WriteHisto(fileOut, fCalibStat[iStat]);

  /* close output file */
  fileOut->Close();
}

//__________________________________________________________________________

Double_t
AliTOFcalibHisto::GetCorrection(Int_t corr, Int_t index, Double_t tot)
{
  /* apply correction */

  Int_t ddl, chain, tdc, channel, hptdc, pbCh, feaIndex, sector, plate, padx, trm, icIndex, sectorStrip;
  Double_t slewing;
  
  switch (corr) {
  case kDDLBCcorr:
    return -GetCalibConst(kLHCperiod) * GetCalibMap(kDDLBCshift, index);
  case kAmphenolCableCorr:
    return GetCalibConst(kAmphenolCableDelay) * GetCalibMap(kAmphenolCableLength, index);
  case kFlatCableCorr:
    return GetCalibConst(kFlatCableDelay) * GetCalibMap(kFlatCableLength, index);
  case kInterfaceCardCorr:
    return GetCalibConst(kInterfaceCardDelay) * GetCalibMap(kInterfaceCardLength, index);
  case kDDLdelayCorr:
    ddl = (Int_t)GetCalibMap(kDDL, index);
    return GetCalibPar(kDDLdelayPar, ddl);
  case kHPTDCdelayCorr:
    chain = (Int_t)GetCalibMap(kChain, index);
    tdc = (Int_t)GetCalibMap(kTDC, index);
    hptdc = tdc + 15 * chain;
    return GetCalibPar(kHPTDCdelayPar, hptdc);
  case kFEAchDelayCorr:
    ddl = (Int_t)GetCalibMap(kDDL, index);
    tdc = (Int_t)GetCalibMap(kTDC, index);
    channel = (Int_t)GetCalibMap(kChannel, index);
    pbCh = channel + 8 * (tdc % 3);
    if (ddl % 2 == 0)
      return GetCalibPar(kRightFEAchDelayPar, pbCh);
    else
      return GetCalibPar(kLeftFEAchDelayPar, pbCh);
  case kFEAdelayCorr:
    sector = (Int_t)GetCalibMap(kSector, index);
    plate = (Int_t)GetCalibMap(kPlate, index);
    sectorStrip = (Int_t)GetCalibMap(kSectorStrip, index);
    padx = (Int_t)GetCalibMap(kPadX, index);
    feaIndex = padx / 12 + 4 * sectorStrip + 364 * sector;      
    return GetCalibPar(kFEAdelayPar, feaIndex);
  case kTRMdelayCorr:
    ddl = (Int_t)GetCalibMap(kDDL, index);
    trm = (Int_t)GetCalibMap(kTRM, index);
    return GetCalibPar(kTRMdelayPar, trm + 10 * ddl);
  case kICdelayCorr:
    icIndex = (Int_t)GetCalibMap(kInterfaceCardIndex, index);
    return GetCalibPar(kICdelayPar, icIndex);
  case kStripDelayCorr:
    sector = (Int_t)GetCalibMap(kSector, index);
    sectorStrip = (Int_t)GetCalibMap(kSectorStrip, index);
    return GetCalibPar(kStripDelayPar, sectorStrip + 91 * sector);
  case kIndexDelayCorr:
    return GetCalibPar(kIndexDelayPar, index);
  case kTimeSlewingCorr:
    tot = tot < SLEW_TOTMIN ? SLEW_TOTMIN : tot;
    tot = tot > SLEW_TOTMAX ? SLEW_TOTMAX : tot;
    slewing = 0.;
    for (Int_t i = 0; i < fCalibPar[kTimeSlewingPar]->GetNbinsX(); i++)
      slewing += GetCalibPar(kTimeSlewingPar, i) * TMath::Power(tot, i);
    return slewing;
  default:
    AliWarning(Form("unknown correction flag (%d)", corr));
    return 0.;
  }
}

//__________________________________________________________________________

Double_t
AliTOFcalibHisto::GetNominalCorrection(Int_t index)
{
  /* get nominal correction */
  Double_t corr = 0;
  for (Int_t iCorr = 0; iCorr < kNcorrections; iCorr++)
    corr += GetCorrection(iCorr, index);
  return corr;
}

//__________________________________________________________________________

void
AliTOFcalibHisto::ApplyNominalCorrection(AliESDtrack *track)
{
  /* apply nominal correction */
  
  Double_t rawTime = track->GetTOFsignalRaw();
  Int_t index = track->GetTOFCalChannel();
  Double_t time = rawTime - 1.e3 * GetNominalCorrection(index);
  track->SetTOFsignal(time);
}

//__________________________________________________________________________

Double_t
AliTOFcalibHisto::GetCableCorrection(Int_t index)
{
  /* get cable correction */
  Double_t corr = 0;
  for (Int_t iCorr = 0; iCorr < kNcorrections; iCorr++)
    if (fgCableCorrectionFlag[iCorr])
      corr += GetCorrection(iCorr, index);
  return corr;
}

//__________________________________________________________________________

Double_t
AliTOFcalibHisto::GetFullCorrection(Int_t index, Double_t tot)
{
  /* get full correction */
  Double_t corr = 0;
  for (Int_t iCorr = 0; iCorr < kNcorrections; iCorr++)
    if (fgFullCorrectionFlag[iCorr]) {
      corr += GetCorrection(iCorr, index, tot);
    }
  return corr;
}

//__________________________________________________________________________

Bool_t
AliTOFcalibHisto::GetStatus(Int_t index)
{
  /* get status */

  Bool_t status = kTRUE;

  for (Int_t iStat = 0; iStat < kNcalibStats; iStat++)
    status &= GetCalibStat(iStat, index);

  return status;
}
 AliTOFcalibHisto.cxx:1
 AliTOFcalibHisto.cxx:2
 AliTOFcalibHisto.cxx:3
 AliTOFcalibHisto.cxx:4
 AliTOFcalibHisto.cxx:5
 AliTOFcalibHisto.cxx:6
 AliTOFcalibHisto.cxx:7
 AliTOFcalibHisto.cxx:8
 AliTOFcalibHisto.cxx:9
 AliTOFcalibHisto.cxx:10
 AliTOFcalibHisto.cxx:11
 AliTOFcalibHisto.cxx:12
 AliTOFcalibHisto.cxx:13
 AliTOFcalibHisto.cxx:14
 AliTOFcalibHisto.cxx:15
 AliTOFcalibHisto.cxx:16
 AliTOFcalibHisto.cxx:17
 AliTOFcalibHisto.cxx:18
 AliTOFcalibHisto.cxx:19
 AliTOFcalibHisto.cxx:20
 AliTOFcalibHisto.cxx:21
 AliTOFcalibHisto.cxx:22
 AliTOFcalibHisto.cxx:23
 AliTOFcalibHisto.cxx:24
 AliTOFcalibHisto.cxx:25
 AliTOFcalibHisto.cxx:26
 AliTOFcalibHisto.cxx:27
 AliTOFcalibHisto.cxx:28
 AliTOFcalibHisto.cxx:29
 AliTOFcalibHisto.cxx:30
 AliTOFcalibHisto.cxx:31
 AliTOFcalibHisto.cxx:32
 AliTOFcalibHisto.cxx:33
 AliTOFcalibHisto.cxx:34
 AliTOFcalibHisto.cxx:35
 AliTOFcalibHisto.cxx:36
 AliTOFcalibHisto.cxx:37
 AliTOFcalibHisto.cxx:38
 AliTOFcalibHisto.cxx:39
 AliTOFcalibHisto.cxx:40
 AliTOFcalibHisto.cxx:41
 AliTOFcalibHisto.cxx:42
 AliTOFcalibHisto.cxx:43
 AliTOFcalibHisto.cxx:44
 AliTOFcalibHisto.cxx:45
 AliTOFcalibHisto.cxx:46
 AliTOFcalibHisto.cxx:47
 AliTOFcalibHisto.cxx:48
 AliTOFcalibHisto.cxx:49
 AliTOFcalibHisto.cxx:50
 AliTOFcalibHisto.cxx:51
 AliTOFcalibHisto.cxx:52
 AliTOFcalibHisto.cxx:53
 AliTOFcalibHisto.cxx:54
 AliTOFcalibHisto.cxx:55
 AliTOFcalibHisto.cxx:56
 AliTOFcalibHisto.cxx:57
 AliTOFcalibHisto.cxx:58
 AliTOFcalibHisto.cxx:59
 AliTOFcalibHisto.cxx:60
 AliTOFcalibHisto.cxx:61
 AliTOFcalibHisto.cxx:62
 AliTOFcalibHisto.cxx:63
 AliTOFcalibHisto.cxx:64
 AliTOFcalibHisto.cxx:65
 AliTOFcalibHisto.cxx:66
 AliTOFcalibHisto.cxx:67
 AliTOFcalibHisto.cxx:68
 AliTOFcalibHisto.cxx:69
 AliTOFcalibHisto.cxx:70
 AliTOFcalibHisto.cxx:71
 AliTOFcalibHisto.cxx:72
 AliTOFcalibHisto.cxx:73
 AliTOFcalibHisto.cxx:74
 AliTOFcalibHisto.cxx:75
 AliTOFcalibHisto.cxx:76
 AliTOFcalibHisto.cxx:77
 AliTOFcalibHisto.cxx:78
 AliTOFcalibHisto.cxx:79
 AliTOFcalibHisto.cxx:80
 AliTOFcalibHisto.cxx:81
 AliTOFcalibHisto.cxx:82
 AliTOFcalibHisto.cxx:83
 AliTOFcalibHisto.cxx:84
 AliTOFcalibHisto.cxx:85
 AliTOFcalibHisto.cxx:86
 AliTOFcalibHisto.cxx:87
 AliTOFcalibHisto.cxx:88
 AliTOFcalibHisto.cxx:89
 AliTOFcalibHisto.cxx:90
 AliTOFcalibHisto.cxx:91
 AliTOFcalibHisto.cxx:92
 AliTOFcalibHisto.cxx:93
 AliTOFcalibHisto.cxx:94
 AliTOFcalibHisto.cxx:95
 AliTOFcalibHisto.cxx:96
 AliTOFcalibHisto.cxx:97
 AliTOFcalibHisto.cxx:98
 AliTOFcalibHisto.cxx:99
 AliTOFcalibHisto.cxx:100
 AliTOFcalibHisto.cxx:101
 AliTOFcalibHisto.cxx:102
 AliTOFcalibHisto.cxx:103
 AliTOFcalibHisto.cxx:104
 AliTOFcalibHisto.cxx:105
 AliTOFcalibHisto.cxx:106
 AliTOFcalibHisto.cxx:107
 AliTOFcalibHisto.cxx:108
 AliTOFcalibHisto.cxx:109
 AliTOFcalibHisto.cxx:110
 AliTOFcalibHisto.cxx:111
 AliTOFcalibHisto.cxx:112
 AliTOFcalibHisto.cxx:113
 AliTOFcalibHisto.cxx:114
 AliTOFcalibHisto.cxx:115
 AliTOFcalibHisto.cxx:116
 AliTOFcalibHisto.cxx:117
 AliTOFcalibHisto.cxx:118
 AliTOFcalibHisto.cxx:119
 AliTOFcalibHisto.cxx:120
 AliTOFcalibHisto.cxx:121
 AliTOFcalibHisto.cxx:122
 AliTOFcalibHisto.cxx:123
 AliTOFcalibHisto.cxx:124
 AliTOFcalibHisto.cxx:125
 AliTOFcalibHisto.cxx:126
 AliTOFcalibHisto.cxx:127
 AliTOFcalibHisto.cxx:128
 AliTOFcalibHisto.cxx:129
 AliTOFcalibHisto.cxx:130
 AliTOFcalibHisto.cxx:131
 AliTOFcalibHisto.cxx:132
 AliTOFcalibHisto.cxx:133
 AliTOFcalibHisto.cxx:134
 AliTOFcalibHisto.cxx:135
 AliTOFcalibHisto.cxx:136
 AliTOFcalibHisto.cxx:137
 AliTOFcalibHisto.cxx:138
 AliTOFcalibHisto.cxx:139
 AliTOFcalibHisto.cxx:140
 AliTOFcalibHisto.cxx:141
 AliTOFcalibHisto.cxx:142
 AliTOFcalibHisto.cxx:143
 AliTOFcalibHisto.cxx:144
 AliTOFcalibHisto.cxx:145
 AliTOFcalibHisto.cxx:146
 AliTOFcalibHisto.cxx:147
 AliTOFcalibHisto.cxx:148
 AliTOFcalibHisto.cxx:149
 AliTOFcalibHisto.cxx:150
 AliTOFcalibHisto.cxx:151
 AliTOFcalibHisto.cxx:152
 AliTOFcalibHisto.cxx:153
 AliTOFcalibHisto.cxx:154
 AliTOFcalibHisto.cxx:155
 AliTOFcalibHisto.cxx:156
 AliTOFcalibHisto.cxx:157
 AliTOFcalibHisto.cxx:158
 AliTOFcalibHisto.cxx:159
 AliTOFcalibHisto.cxx:160
 AliTOFcalibHisto.cxx:161
 AliTOFcalibHisto.cxx:162
 AliTOFcalibHisto.cxx:163
 AliTOFcalibHisto.cxx:164
 AliTOFcalibHisto.cxx:165
 AliTOFcalibHisto.cxx:166
 AliTOFcalibHisto.cxx:167
 AliTOFcalibHisto.cxx:168
 AliTOFcalibHisto.cxx:169
 AliTOFcalibHisto.cxx:170
 AliTOFcalibHisto.cxx:171
 AliTOFcalibHisto.cxx:172
 AliTOFcalibHisto.cxx:173
 AliTOFcalibHisto.cxx:174
 AliTOFcalibHisto.cxx:175
 AliTOFcalibHisto.cxx:176
 AliTOFcalibHisto.cxx:177
 AliTOFcalibHisto.cxx:178
 AliTOFcalibHisto.cxx:179
 AliTOFcalibHisto.cxx:180
 AliTOFcalibHisto.cxx:181
 AliTOFcalibHisto.cxx:182
 AliTOFcalibHisto.cxx:183
 AliTOFcalibHisto.cxx:184
 AliTOFcalibHisto.cxx:185
 AliTOFcalibHisto.cxx:186
 AliTOFcalibHisto.cxx:187
 AliTOFcalibHisto.cxx:188
 AliTOFcalibHisto.cxx:189
 AliTOFcalibHisto.cxx:190
 AliTOFcalibHisto.cxx:191
 AliTOFcalibHisto.cxx:192
 AliTOFcalibHisto.cxx:193
 AliTOFcalibHisto.cxx:194
 AliTOFcalibHisto.cxx:195
 AliTOFcalibHisto.cxx:196
 AliTOFcalibHisto.cxx:197
 AliTOFcalibHisto.cxx:198
 AliTOFcalibHisto.cxx:199
 AliTOFcalibHisto.cxx:200
 AliTOFcalibHisto.cxx:201
 AliTOFcalibHisto.cxx:202
 AliTOFcalibHisto.cxx:203
 AliTOFcalibHisto.cxx:204
 AliTOFcalibHisto.cxx:205
 AliTOFcalibHisto.cxx:206
 AliTOFcalibHisto.cxx:207
 AliTOFcalibHisto.cxx:208
 AliTOFcalibHisto.cxx:209
 AliTOFcalibHisto.cxx:210
 AliTOFcalibHisto.cxx:211
 AliTOFcalibHisto.cxx:212
 AliTOFcalibHisto.cxx:213
 AliTOFcalibHisto.cxx:214
 AliTOFcalibHisto.cxx:215
 AliTOFcalibHisto.cxx:216
 AliTOFcalibHisto.cxx:217
 AliTOFcalibHisto.cxx:218
 AliTOFcalibHisto.cxx:219
 AliTOFcalibHisto.cxx:220
 AliTOFcalibHisto.cxx:221
 AliTOFcalibHisto.cxx:222
 AliTOFcalibHisto.cxx:223
 AliTOFcalibHisto.cxx:224
 AliTOFcalibHisto.cxx:225
 AliTOFcalibHisto.cxx:226
 AliTOFcalibHisto.cxx:227
 AliTOFcalibHisto.cxx:228
 AliTOFcalibHisto.cxx:229
 AliTOFcalibHisto.cxx:230
 AliTOFcalibHisto.cxx:231
 AliTOFcalibHisto.cxx:232
 AliTOFcalibHisto.cxx:233
 AliTOFcalibHisto.cxx:234
 AliTOFcalibHisto.cxx:235
 AliTOFcalibHisto.cxx:236
 AliTOFcalibHisto.cxx:237
 AliTOFcalibHisto.cxx:238
 AliTOFcalibHisto.cxx:239
 AliTOFcalibHisto.cxx:240
 AliTOFcalibHisto.cxx:241
 AliTOFcalibHisto.cxx:242
 AliTOFcalibHisto.cxx:243
 AliTOFcalibHisto.cxx:244
 AliTOFcalibHisto.cxx:245
 AliTOFcalibHisto.cxx:246
 AliTOFcalibHisto.cxx:247
 AliTOFcalibHisto.cxx:248
 AliTOFcalibHisto.cxx:249
 AliTOFcalibHisto.cxx:250
 AliTOFcalibHisto.cxx:251
 AliTOFcalibHisto.cxx:252
 AliTOFcalibHisto.cxx:253
 AliTOFcalibHisto.cxx:254
 AliTOFcalibHisto.cxx:255
 AliTOFcalibHisto.cxx:256
 AliTOFcalibHisto.cxx:257
 AliTOFcalibHisto.cxx:258
 AliTOFcalibHisto.cxx:259
 AliTOFcalibHisto.cxx:260
 AliTOFcalibHisto.cxx:261
 AliTOFcalibHisto.cxx:262
 AliTOFcalibHisto.cxx:263
 AliTOFcalibHisto.cxx:264
 AliTOFcalibHisto.cxx:265
 AliTOFcalibHisto.cxx:266
 AliTOFcalibHisto.cxx:267
 AliTOFcalibHisto.cxx:268
 AliTOFcalibHisto.cxx:269
 AliTOFcalibHisto.cxx:270
 AliTOFcalibHisto.cxx:271
 AliTOFcalibHisto.cxx:272
 AliTOFcalibHisto.cxx:273
 AliTOFcalibHisto.cxx:274
 AliTOFcalibHisto.cxx:275
 AliTOFcalibHisto.cxx:276
 AliTOFcalibHisto.cxx:277
 AliTOFcalibHisto.cxx:278
 AliTOFcalibHisto.cxx:279
 AliTOFcalibHisto.cxx:280
 AliTOFcalibHisto.cxx:281
 AliTOFcalibHisto.cxx:282
 AliTOFcalibHisto.cxx:283
 AliTOFcalibHisto.cxx:284
 AliTOFcalibHisto.cxx:285
 AliTOFcalibHisto.cxx:286
 AliTOFcalibHisto.cxx:287
 AliTOFcalibHisto.cxx:288
 AliTOFcalibHisto.cxx:289
 AliTOFcalibHisto.cxx:290
 AliTOFcalibHisto.cxx:291
 AliTOFcalibHisto.cxx:292
 AliTOFcalibHisto.cxx:293
 AliTOFcalibHisto.cxx:294
 AliTOFcalibHisto.cxx:295
 AliTOFcalibHisto.cxx:296
 AliTOFcalibHisto.cxx:297
 AliTOFcalibHisto.cxx:298
 AliTOFcalibHisto.cxx:299
 AliTOFcalibHisto.cxx:300
 AliTOFcalibHisto.cxx:301
 AliTOFcalibHisto.cxx:302
 AliTOFcalibHisto.cxx:303
 AliTOFcalibHisto.cxx:304
 AliTOFcalibHisto.cxx:305
 AliTOFcalibHisto.cxx:306
 AliTOFcalibHisto.cxx:307
 AliTOFcalibHisto.cxx:308
 AliTOFcalibHisto.cxx:309
 AliTOFcalibHisto.cxx:310
 AliTOFcalibHisto.cxx:311
 AliTOFcalibHisto.cxx:312
 AliTOFcalibHisto.cxx:313
 AliTOFcalibHisto.cxx:314
 AliTOFcalibHisto.cxx:315
 AliTOFcalibHisto.cxx:316
 AliTOFcalibHisto.cxx:317
 AliTOFcalibHisto.cxx:318
 AliTOFcalibHisto.cxx:319
 AliTOFcalibHisto.cxx:320
 AliTOFcalibHisto.cxx:321
 AliTOFcalibHisto.cxx:322
 AliTOFcalibHisto.cxx:323
 AliTOFcalibHisto.cxx:324
 AliTOFcalibHisto.cxx:325
 AliTOFcalibHisto.cxx:326
 AliTOFcalibHisto.cxx:327
 AliTOFcalibHisto.cxx:328
 AliTOFcalibHisto.cxx:329
 AliTOFcalibHisto.cxx:330
 AliTOFcalibHisto.cxx:331
 AliTOFcalibHisto.cxx:332
 AliTOFcalibHisto.cxx:333
 AliTOFcalibHisto.cxx:334
 AliTOFcalibHisto.cxx:335
 AliTOFcalibHisto.cxx:336
 AliTOFcalibHisto.cxx:337
 AliTOFcalibHisto.cxx:338
 AliTOFcalibHisto.cxx:339
 AliTOFcalibHisto.cxx:340
 AliTOFcalibHisto.cxx:341
 AliTOFcalibHisto.cxx:342
 AliTOFcalibHisto.cxx:343
 AliTOFcalibHisto.cxx:344
 AliTOFcalibHisto.cxx:345
 AliTOFcalibHisto.cxx:346
 AliTOFcalibHisto.cxx:347
 AliTOFcalibHisto.cxx:348
 AliTOFcalibHisto.cxx:349
 AliTOFcalibHisto.cxx:350
 AliTOFcalibHisto.cxx:351
 AliTOFcalibHisto.cxx:352
 AliTOFcalibHisto.cxx:353
 AliTOFcalibHisto.cxx:354
 AliTOFcalibHisto.cxx:355
 AliTOFcalibHisto.cxx:356
 AliTOFcalibHisto.cxx:357
 AliTOFcalibHisto.cxx:358
 AliTOFcalibHisto.cxx:359
 AliTOFcalibHisto.cxx:360
 AliTOFcalibHisto.cxx:361
 AliTOFcalibHisto.cxx:362
 AliTOFcalibHisto.cxx:363
 AliTOFcalibHisto.cxx:364
 AliTOFcalibHisto.cxx:365
 AliTOFcalibHisto.cxx:366
 AliTOFcalibHisto.cxx:367
 AliTOFcalibHisto.cxx:368
 AliTOFcalibHisto.cxx:369
 AliTOFcalibHisto.cxx:370
 AliTOFcalibHisto.cxx:371
 AliTOFcalibHisto.cxx:372
 AliTOFcalibHisto.cxx:373
 AliTOFcalibHisto.cxx:374
 AliTOFcalibHisto.cxx:375
 AliTOFcalibHisto.cxx:376
 AliTOFcalibHisto.cxx:377
 AliTOFcalibHisto.cxx:378
 AliTOFcalibHisto.cxx:379
 AliTOFcalibHisto.cxx:380
 AliTOFcalibHisto.cxx:381
 AliTOFcalibHisto.cxx:382
 AliTOFcalibHisto.cxx:383
 AliTOFcalibHisto.cxx:384
 AliTOFcalibHisto.cxx:385
 AliTOFcalibHisto.cxx:386
 AliTOFcalibHisto.cxx:387
 AliTOFcalibHisto.cxx:388
 AliTOFcalibHisto.cxx:389
 AliTOFcalibHisto.cxx:390
 AliTOFcalibHisto.cxx:391
 AliTOFcalibHisto.cxx:392
 AliTOFcalibHisto.cxx:393
 AliTOFcalibHisto.cxx:394
 AliTOFcalibHisto.cxx:395
 AliTOFcalibHisto.cxx:396
 AliTOFcalibHisto.cxx:397
 AliTOFcalibHisto.cxx:398
 AliTOFcalibHisto.cxx:399
 AliTOFcalibHisto.cxx:400
 AliTOFcalibHisto.cxx:401
 AliTOFcalibHisto.cxx:402
 AliTOFcalibHisto.cxx:403
 AliTOFcalibHisto.cxx:404
 AliTOFcalibHisto.cxx:405
 AliTOFcalibHisto.cxx:406
 AliTOFcalibHisto.cxx:407
 AliTOFcalibHisto.cxx:408
 AliTOFcalibHisto.cxx:409
 AliTOFcalibHisto.cxx:410
 AliTOFcalibHisto.cxx:411
 AliTOFcalibHisto.cxx:412
 AliTOFcalibHisto.cxx:413
 AliTOFcalibHisto.cxx:414
 AliTOFcalibHisto.cxx:415
 AliTOFcalibHisto.cxx:416
 AliTOFcalibHisto.cxx:417
 AliTOFcalibHisto.cxx:418
 AliTOFcalibHisto.cxx:419
 AliTOFcalibHisto.cxx:420
 AliTOFcalibHisto.cxx:421
 AliTOFcalibHisto.cxx:422
 AliTOFcalibHisto.cxx:423
 AliTOFcalibHisto.cxx:424
 AliTOFcalibHisto.cxx:425
 AliTOFcalibHisto.cxx:426
 AliTOFcalibHisto.cxx:427
 AliTOFcalibHisto.cxx:428
 AliTOFcalibHisto.cxx:429
 AliTOFcalibHisto.cxx:430
 AliTOFcalibHisto.cxx:431
 AliTOFcalibHisto.cxx:432
 AliTOFcalibHisto.cxx:433
 AliTOFcalibHisto.cxx:434
 AliTOFcalibHisto.cxx:435
 AliTOFcalibHisto.cxx:436
 AliTOFcalibHisto.cxx:437
 AliTOFcalibHisto.cxx:438
 AliTOFcalibHisto.cxx:439
 AliTOFcalibHisto.cxx:440
 AliTOFcalibHisto.cxx:441
 AliTOFcalibHisto.cxx:442
 AliTOFcalibHisto.cxx:443
 AliTOFcalibHisto.cxx:444
 AliTOFcalibHisto.cxx:445
 AliTOFcalibHisto.cxx:446
 AliTOFcalibHisto.cxx:447
 AliTOFcalibHisto.cxx:448
 AliTOFcalibHisto.cxx:449
 AliTOFcalibHisto.cxx:450
 AliTOFcalibHisto.cxx:451
 AliTOFcalibHisto.cxx:452
 AliTOFcalibHisto.cxx:453
 AliTOFcalibHisto.cxx:454
 AliTOFcalibHisto.cxx:455
 AliTOFcalibHisto.cxx:456
 AliTOFcalibHisto.cxx:457
 AliTOFcalibHisto.cxx:458
 AliTOFcalibHisto.cxx:459
 AliTOFcalibHisto.cxx:460
 AliTOFcalibHisto.cxx:461
 AliTOFcalibHisto.cxx:462
 AliTOFcalibHisto.cxx:463
 AliTOFcalibHisto.cxx:464
 AliTOFcalibHisto.cxx:465
 AliTOFcalibHisto.cxx:466
 AliTOFcalibHisto.cxx:467
 AliTOFcalibHisto.cxx:468
 AliTOFcalibHisto.cxx:469
 AliTOFcalibHisto.cxx:470
 AliTOFcalibHisto.cxx:471
 AliTOFcalibHisto.cxx:472
 AliTOFcalibHisto.cxx:473
 AliTOFcalibHisto.cxx:474
 AliTOFcalibHisto.cxx:475
 AliTOFcalibHisto.cxx:476
 AliTOFcalibHisto.cxx:477
 AliTOFcalibHisto.cxx:478
 AliTOFcalibHisto.cxx:479
 AliTOFcalibHisto.cxx:480
 AliTOFcalibHisto.cxx:481
 AliTOFcalibHisto.cxx:482
 AliTOFcalibHisto.cxx:483
 AliTOFcalibHisto.cxx:484
 AliTOFcalibHisto.cxx:485
 AliTOFcalibHisto.cxx:486
 AliTOFcalibHisto.cxx:487
 AliTOFcalibHisto.cxx:488
 AliTOFcalibHisto.cxx:489
 AliTOFcalibHisto.cxx:490
 AliTOFcalibHisto.cxx:491
 AliTOFcalibHisto.cxx:492
 AliTOFcalibHisto.cxx:493
 AliTOFcalibHisto.cxx:494
 AliTOFcalibHisto.cxx:495
 AliTOFcalibHisto.cxx:496
 AliTOFcalibHisto.cxx:497
 AliTOFcalibHisto.cxx:498
 AliTOFcalibHisto.cxx:499
 AliTOFcalibHisto.cxx:500
 AliTOFcalibHisto.cxx:501
 AliTOFcalibHisto.cxx:502
 AliTOFcalibHisto.cxx:503
 AliTOFcalibHisto.cxx:504
 AliTOFcalibHisto.cxx:505
 AliTOFcalibHisto.cxx:506
 AliTOFcalibHisto.cxx:507
 AliTOFcalibHisto.cxx:508
 AliTOFcalibHisto.cxx:509
 AliTOFcalibHisto.cxx:510
 AliTOFcalibHisto.cxx:511
 AliTOFcalibHisto.cxx:512
 AliTOFcalibHisto.cxx:513
 AliTOFcalibHisto.cxx:514
 AliTOFcalibHisto.cxx:515
 AliTOFcalibHisto.cxx:516
 AliTOFcalibHisto.cxx:517
 AliTOFcalibHisto.cxx:518
 AliTOFcalibHisto.cxx:519
 AliTOFcalibHisto.cxx:520
 AliTOFcalibHisto.cxx:521
 AliTOFcalibHisto.cxx:522
 AliTOFcalibHisto.cxx:523
 AliTOFcalibHisto.cxx:524
 AliTOFcalibHisto.cxx:525
 AliTOFcalibHisto.cxx:526
 AliTOFcalibHisto.cxx:527
 AliTOFcalibHisto.cxx:528
 AliTOFcalibHisto.cxx:529
 AliTOFcalibHisto.cxx:530
 AliTOFcalibHisto.cxx:531
 AliTOFcalibHisto.cxx:532
 AliTOFcalibHisto.cxx:533
 AliTOFcalibHisto.cxx:534
 AliTOFcalibHisto.cxx:535
 AliTOFcalibHisto.cxx:536
 AliTOFcalibHisto.cxx:537
 AliTOFcalibHisto.cxx:538
 AliTOFcalibHisto.cxx:539
 AliTOFcalibHisto.cxx:540
 AliTOFcalibHisto.cxx:541
 AliTOFcalibHisto.cxx:542
 AliTOFcalibHisto.cxx:543
 AliTOFcalibHisto.cxx:544
 AliTOFcalibHisto.cxx:545
 AliTOFcalibHisto.cxx:546
 AliTOFcalibHisto.cxx:547
 AliTOFcalibHisto.cxx:548
 AliTOFcalibHisto.cxx:549
 AliTOFcalibHisto.cxx:550
 AliTOFcalibHisto.cxx:551
 AliTOFcalibHisto.cxx:552
 AliTOFcalibHisto.cxx:553
 AliTOFcalibHisto.cxx:554
 AliTOFcalibHisto.cxx:555
 AliTOFcalibHisto.cxx:556
 AliTOFcalibHisto.cxx:557
 AliTOFcalibHisto.cxx:558
 AliTOFcalibHisto.cxx:559
 AliTOFcalibHisto.cxx:560
 AliTOFcalibHisto.cxx:561
 AliTOFcalibHisto.cxx:562
 AliTOFcalibHisto.cxx:563
 AliTOFcalibHisto.cxx:564
 AliTOFcalibHisto.cxx:565
 AliTOFcalibHisto.cxx:566
 AliTOFcalibHisto.cxx:567
 AliTOFcalibHisto.cxx:568
 AliTOFcalibHisto.cxx:569
 AliTOFcalibHisto.cxx:570
 AliTOFcalibHisto.cxx:571
 AliTOFcalibHisto.cxx:572
 AliTOFcalibHisto.cxx:573
 AliTOFcalibHisto.cxx:574
 AliTOFcalibHisto.cxx:575
 AliTOFcalibHisto.cxx:576
 AliTOFcalibHisto.cxx:577
 AliTOFcalibHisto.cxx:578
 AliTOFcalibHisto.cxx:579
 AliTOFcalibHisto.cxx:580
 AliTOFcalibHisto.cxx:581
 AliTOFcalibHisto.cxx:582
 AliTOFcalibHisto.cxx:583
 AliTOFcalibHisto.cxx:584
 AliTOFcalibHisto.cxx:585
 AliTOFcalibHisto.cxx:586
 AliTOFcalibHisto.cxx:587
 AliTOFcalibHisto.cxx:588
 AliTOFcalibHisto.cxx:589
 AliTOFcalibHisto.cxx:590
 AliTOFcalibHisto.cxx:591
 AliTOFcalibHisto.cxx:592
 AliTOFcalibHisto.cxx:593
 AliTOFcalibHisto.cxx:594
 AliTOFcalibHisto.cxx:595
 AliTOFcalibHisto.cxx:596
 AliTOFcalibHisto.cxx:597
 AliTOFcalibHisto.cxx:598
 AliTOFcalibHisto.cxx:599
 AliTOFcalibHisto.cxx:600
 AliTOFcalibHisto.cxx:601
 AliTOFcalibHisto.cxx:602
 AliTOFcalibHisto.cxx:603
 AliTOFcalibHisto.cxx:604
 AliTOFcalibHisto.cxx:605
 AliTOFcalibHisto.cxx:606
 AliTOFcalibHisto.cxx:607
 AliTOFcalibHisto.cxx:608
 AliTOFcalibHisto.cxx:609
 AliTOFcalibHisto.cxx:610
 AliTOFcalibHisto.cxx:611
 AliTOFcalibHisto.cxx:612
 AliTOFcalibHisto.cxx:613
 AliTOFcalibHisto.cxx:614
 AliTOFcalibHisto.cxx:615
 AliTOFcalibHisto.cxx:616
 AliTOFcalibHisto.cxx:617
 AliTOFcalibHisto.cxx:618
 AliTOFcalibHisto.cxx:619
 AliTOFcalibHisto.cxx:620
 AliTOFcalibHisto.cxx:621
 AliTOFcalibHisto.cxx:622
 AliTOFcalibHisto.cxx:623
 AliTOFcalibHisto.cxx:624
 AliTOFcalibHisto.cxx:625
 AliTOFcalibHisto.cxx:626
 AliTOFcalibHisto.cxx:627
 AliTOFcalibHisto.cxx:628
 AliTOFcalibHisto.cxx:629
 AliTOFcalibHisto.cxx:630
 AliTOFcalibHisto.cxx:631
 AliTOFcalibHisto.cxx:632
 AliTOFcalibHisto.cxx:633
 AliTOFcalibHisto.cxx:634
 AliTOFcalibHisto.cxx:635
 AliTOFcalibHisto.cxx:636
 AliTOFcalibHisto.cxx:637
 AliTOFcalibHisto.cxx:638
 AliTOFcalibHisto.cxx:639
 AliTOFcalibHisto.cxx:640
 AliTOFcalibHisto.cxx:641
 AliTOFcalibHisto.cxx:642
 AliTOFcalibHisto.cxx:643
 AliTOFcalibHisto.cxx:644
 AliTOFcalibHisto.cxx:645
 AliTOFcalibHisto.cxx:646
 AliTOFcalibHisto.cxx:647
 AliTOFcalibHisto.cxx:648
 AliTOFcalibHisto.cxx:649
 AliTOFcalibHisto.cxx:650
 AliTOFcalibHisto.cxx:651
 AliTOFcalibHisto.cxx:652
 AliTOFcalibHisto.cxx:653
 AliTOFcalibHisto.cxx:654
 AliTOFcalibHisto.cxx:655
 AliTOFcalibHisto.cxx:656
 AliTOFcalibHisto.cxx:657
 AliTOFcalibHisto.cxx:658
 AliTOFcalibHisto.cxx:659
 AliTOFcalibHisto.cxx:660
 AliTOFcalibHisto.cxx:661
 AliTOFcalibHisto.cxx:662
 AliTOFcalibHisto.cxx:663
 AliTOFcalibHisto.cxx:664
 AliTOFcalibHisto.cxx:665
 AliTOFcalibHisto.cxx:666
 AliTOFcalibHisto.cxx:667
 AliTOFcalibHisto.cxx:668
 AliTOFcalibHisto.cxx:669
 AliTOFcalibHisto.cxx:670
 AliTOFcalibHisto.cxx:671
 AliTOFcalibHisto.cxx:672
 AliTOFcalibHisto.cxx:673
 AliTOFcalibHisto.cxx:674
 AliTOFcalibHisto.cxx:675
 AliTOFcalibHisto.cxx:676
 AliTOFcalibHisto.cxx:677
 AliTOFcalibHisto.cxx:678
 AliTOFcalibHisto.cxx:679
 AliTOFcalibHisto.cxx:680
 AliTOFcalibHisto.cxx:681
 AliTOFcalibHisto.cxx:682
 AliTOFcalibHisto.cxx:683
 AliTOFcalibHisto.cxx:684
 AliTOFcalibHisto.cxx:685
 AliTOFcalibHisto.cxx:686
 AliTOFcalibHisto.cxx:687
 AliTOFcalibHisto.cxx:688
 AliTOFcalibHisto.cxx:689
 AliTOFcalibHisto.cxx:690
 AliTOFcalibHisto.cxx:691
 AliTOFcalibHisto.cxx:692
 AliTOFcalibHisto.cxx:693
 AliTOFcalibHisto.cxx:694
 AliTOFcalibHisto.cxx:695
 AliTOFcalibHisto.cxx:696
 AliTOFcalibHisto.cxx:697
 AliTOFcalibHisto.cxx:698
 AliTOFcalibHisto.cxx:699
 AliTOFcalibHisto.cxx:700
 AliTOFcalibHisto.cxx:701
 AliTOFcalibHisto.cxx:702
 AliTOFcalibHisto.cxx:703
 AliTOFcalibHisto.cxx:704
 AliTOFcalibHisto.cxx:705
 AliTOFcalibHisto.cxx:706
 AliTOFcalibHisto.cxx:707
 AliTOFcalibHisto.cxx:708
 AliTOFcalibHisto.cxx:709
 AliTOFcalibHisto.cxx:710
 AliTOFcalibHisto.cxx:711
 AliTOFcalibHisto.cxx:712
 AliTOFcalibHisto.cxx:713
 AliTOFcalibHisto.cxx:714
 AliTOFcalibHisto.cxx:715
 AliTOFcalibHisto.cxx:716
 AliTOFcalibHisto.cxx:717
 AliTOFcalibHisto.cxx:718
 AliTOFcalibHisto.cxx:719
 AliTOFcalibHisto.cxx:720
 AliTOFcalibHisto.cxx:721
 AliTOFcalibHisto.cxx:722
 AliTOFcalibHisto.cxx:723
 AliTOFcalibHisto.cxx:724
 AliTOFcalibHisto.cxx:725
 AliTOFcalibHisto.cxx:726
 AliTOFcalibHisto.cxx:727
 AliTOFcalibHisto.cxx:728
 AliTOFcalibHisto.cxx:729
 AliTOFcalibHisto.cxx:730
 AliTOFcalibHisto.cxx:731
 AliTOFcalibHisto.cxx:732
 AliTOFcalibHisto.cxx:733
 AliTOFcalibHisto.cxx:734
 AliTOFcalibHisto.cxx:735
 AliTOFcalibHisto.cxx:736
 AliTOFcalibHisto.cxx:737
 AliTOFcalibHisto.cxx:738
 AliTOFcalibHisto.cxx:739
 AliTOFcalibHisto.cxx:740
 AliTOFcalibHisto.cxx:741
 AliTOFcalibHisto.cxx:742
 AliTOFcalibHisto.cxx:743
 AliTOFcalibHisto.cxx:744
 AliTOFcalibHisto.cxx:745
 AliTOFcalibHisto.cxx:746
 AliTOFcalibHisto.cxx:747
 AliTOFcalibHisto.cxx:748
 AliTOFcalibHisto.cxx:749
 AliTOFcalibHisto.cxx:750
 AliTOFcalibHisto.cxx:751
 AliTOFcalibHisto.cxx:752
 AliTOFcalibHisto.cxx:753
 AliTOFcalibHisto.cxx:754
 AliTOFcalibHisto.cxx:755
 AliTOFcalibHisto.cxx:756
 AliTOFcalibHisto.cxx:757
 AliTOFcalibHisto.cxx:758
 AliTOFcalibHisto.cxx:759
 AliTOFcalibHisto.cxx:760
 AliTOFcalibHisto.cxx:761
 AliTOFcalibHisto.cxx:762
 AliTOFcalibHisto.cxx:763
 AliTOFcalibHisto.cxx:764
 AliTOFcalibHisto.cxx:765
 AliTOFcalibHisto.cxx:766
 AliTOFcalibHisto.cxx:767
 AliTOFcalibHisto.cxx:768
 AliTOFcalibHisto.cxx:769
 AliTOFcalibHisto.cxx:770
 AliTOFcalibHisto.cxx:771
 AliTOFcalibHisto.cxx:772
 AliTOFcalibHisto.cxx:773
 AliTOFcalibHisto.cxx:774
 AliTOFcalibHisto.cxx:775
 AliTOFcalibHisto.cxx:776
 AliTOFcalibHisto.cxx:777
 AliTOFcalibHisto.cxx:778
 AliTOFcalibHisto.cxx:779
 AliTOFcalibHisto.cxx:780
 AliTOFcalibHisto.cxx:781
 AliTOFcalibHisto.cxx:782
 AliTOFcalibHisto.cxx:783
 AliTOFcalibHisto.cxx:784
 AliTOFcalibHisto.cxx:785
 AliTOFcalibHisto.cxx:786
 AliTOFcalibHisto.cxx:787
 AliTOFcalibHisto.cxx:788
 AliTOFcalibHisto.cxx:789
 AliTOFcalibHisto.cxx:790
 AliTOFcalibHisto.cxx:791
 AliTOFcalibHisto.cxx:792
 AliTOFcalibHisto.cxx:793