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

/* 
 * author: Roberto Preghenella (R+), Roberto.Preghenella@bo.infn.it
 */

//////////////////////////////////////////////////////////////////////
//                                                                  //
//                                                                  //
//   This class provides the TOF FEE reader.                        //
//                                                                  //
//                                                                  //
//////////////////////////////////////////////////////////////////////

#include <TSystem.h>
#include "AliTOFFEEReader.h"
#include "AliTOFFEEConfig.h"
#include "AliTOFFEElightConfig.h"
#include "AliTOFRawStream.h"
#include "AliTOFGeometry.h"
#include "AliTOFcalibHisto.h"
#include "AliLog.h"
#include <fstream>

ClassImp(AliTOFFEEReader)

//_______________________________________________________________

AliTOFFEEReader::AliTOFFEEReader() :
  TObject(),
  fFEEConfig(new AliTOFFEEConfig()),
  fFEElightConfig(new AliTOFFEElightConfig()),
  fChannelEnabled(),
  fMatchingWindow(),
  fLatencyWindow()
{
  /* 
   * 
   * default constructor 
   *
   */

  Reset();
}

//_______________________________________________________________

AliTOFFEEReader::AliTOFFEEReader(const AliTOFFEEReader &source) :
  TObject(source),
  fFEEConfig(new AliTOFFEEConfig()),
  fFEElightConfig(new AliTOFFEElightConfig())
{
  /* 
   * 
   * copy constructor 
   *
   */

  Reset();
  memcpy(fFEEConfig, source.fFEEConfig, sizeof(AliTOFFEEConfig));
  memcpy(fFEElightConfig, source.fFEElightConfig, sizeof(AliTOFFEElightConfig));
}

//_______________________________________________________________

AliTOFFEEReader &
AliTOFFEEReader::operator=(const AliTOFFEEReader &source)
{
  /* 
   * 
   * operator = 
   * 
   */

  TObject::operator=(source);
  memcpy(fFEEConfig, source.fFEEConfig, sizeof(AliTOFFEEConfig));
  memcpy(fFEElightConfig, source.fFEElightConfig, sizeof(AliTOFFEElightConfig));
  return *this;
}

//_______________________________________________________________

AliTOFFEEReader::~AliTOFFEEReader()
{
  /* 
   *
   * default destructor 
   *
   */

  delete fFEEConfig;
  delete fFEElightConfig;
}

//_______________________________________________________________

void
AliTOFFEEReader::ResetChannelEnabledArray()
{
  /*
   *
   * reset channel enabled array
   *
   */

  for (Int_t iIndex = 0; iIndex < GetNumberOfIndexes(); iIndex++)
    fChannelEnabled[iIndex] = kFALSE;
}

//_______________________________________________________________

void
AliTOFFEEReader::ResetTriggerMaskArray()
{
  /*
   *
   * reset trigger mask array
   *
   */

  for (Int_t iddl = 0; iddl < GetNumberOfDDLs(); iddl++)
    fTriggerMask[iddl] = 0x0;
}

//_______________________________________________________________

void
AliTOFFEEReader::Reset()
{
  /*
   *
   * reset 
   *
   */

  for (Int_t iIndex = 0; iIndex < GetNumberOfIndexes(); iIndex++) {
    fChannelEnabled[iIndex] = kFALSE;
    fMatchingWindow[iIndex] = 0;
    fLatencyWindow[iIndex] = 0;
  }

  for (Int_t iddl = 0; iddl < GetNumberOfDDLs(); iddl++)
    fTriggerMask[iddl] = 0x0;
}

//_______________________________________________________________

void
AliTOFFEEReader::LoadFEEConfig(const Char_t *FileName) const
{
  /*
   *
   * load FEE config
   *
   */

  Char_t *expandedFileName = gSystem->ExpandPathName(FileName);
  std::ifstream is;
  is.open(expandedFileName, std::ios::binary);
  is.read((Char_t *)fFEEConfig, sizeof(AliTOFFEEConfig));
  is.close();
}

//_______________________________________________________________

void
AliTOFFEEReader::LoadFEElightConfig(const Char_t *FileName) const
{
  /*
   *
   * load FEElight config
   *
   */

  Char_t *expandedFileName = gSystem->ExpandPathName(FileName);
  std::ifstream is;
  is.open(expandedFileName, std::ios::binary);
  is.read((Char_t *)fFEElightConfig, sizeof(AliTOFFEElightConfig));
  is.close();
}

//_______________________________________________________________

Int_t
AliTOFFEEReader::ParseFEEConfig()
{
  /* 
   *
   * parse FEE config
   *
   * loops over all FEE channels, checks whether they are enabled
   * and sets channel enabled 
   *
   */

  AliInfo("parsing TOF FEE config");

  AliTOFRawStream rawStream;
  Int_t nEnabled = 0;
  Int_t volume[5], index;
  Int_t temp;

  Reset();

  /* loop over all FEE channels */
  for (Int_t iDDL = 0; iDDL < GetNumberOfDDLs(); iDDL++)
    for (Int_t iTRM = 0; iTRM < GetNumberOfTRMs(); iTRM++)
      for (Int_t iChain = 0; iChain < GetNumberOfChains(); iChain++)
	for (Int_t iTDC = 0; iTDC < GetNumberOfTDCs(); iTDC++)
	  for (Int_t iChannel = 0; iChannel < GetNumberOfChannels(); iChannel++)
	    /* check whether FEE channel is enabled */
	    if (IsChannelEnabled(iDDL, iTRM + 3, iChain, iTDC, iChannel)) {
	      /* convert FEE channel indexes into detector indexes */
	      rawStream.EquipmentId2VolumeId(iDDL, iTRM + 3, iChain, iTDC, iChannel, volume);
	      /* swap padx and padz to fit AliTOFGeometry::GetIndex behaviour */
	      temp = volume[4]; volume[4] = volume[3]; volume[3] = temp; 
	      /* check if index is ok */
	      if (volume[0] < 0 || volume[0] > 17 ||
		  volume[1] < 0 || volume[1] > 4 ||
		  volume[2] < 0 || volume[2] > 18 ||
		  volume[3] < 0 || volume[3] > 1 ||
		  volume[4] < 0 || volume[4] > 47)
		continue;
	      /* convert detector indexes into calibration index */
	      index = AliTOFGeometry::GetIndex(volume);
	      /* check calibration index */
	      if (index != -1 && index < GetNumberOfIndexes()) {
		/* set calibration channel enabled */
		fChannelEnabled[index] = kTRUE;
		fMatchingWindow[index] = GetMatchingWindow(iDDL, iTRM + 3, iChain, iTDC, iChannel);
		nEnabled++;
	      }
	    }
  return nEnabled;
}

//_______________________________________________________________

Int_t
AliTOFFEEReader::ParseFEElightConfig()
{
  /* 
   *
   * parse FEElight config
   *
   * loops over all FEE channels, checks whether they are enabled
   * and sets channel enabled 
   *
   */

  AliInfo("parsing TOF FEElight config");

  Reset();

  AliTOFcalibHisto calibHisto;
  calibHisto.LoadCalibHisto();

  Int_t nEnabled = 0, index;
  AliTOFFEEchannelConfig *channelConfig = NULL;
  for (Int_t i = 0; i < GetNumberOfIndexesEO(); i++) {
    channelConfig = fFEElightConfig->GetChannelConfig(i);
    if (!channelConfig->IsEnabled()) continue;
    /* get index DO from index EO */
    index = (Int_t)calibHisto.GetCalibMap(AliTOFcalibHisto::kIndex, i);
    if (index == -1) continue;
    nEnabled++;
    fChannelEnabled[index] = channelConfig->IsEnabled();
    fMatchingWindow[index] = channelConfig->GetMatchingWindow();
    fLatencyWindow[index] = channelConfig->GetLatencyWindow();
  }

  AliTOFFEEtriggerConfig *triggerConfig = NULL;
  for (Int_t iddl = 0; iddl < GetNumberOfDDLs(); iddl++) {
    triggerConfig = fFEElightConfig->GetTriggerConfig(iddl);
    fTriggerMask[iddl] = triggerConfig->GetStatusMap();
  }
 
  return nEnabled;
}

//_______________________________________________________________

Bool_t 
AliTOFFEEReader::IsChannelEnabled(Int_t iDDL, Int_t iTRM, Int_t iChain, Int_t iTDC, Int_t iChannel) const
{
  /*
   *
   * is channel enabled
   *
   * checks whether a FEE channel is enabled using the
   * TOF FEE config object.
   *
   */

  AliTOFFEEConfig *feeConfig;
  AliTOFCrateConfig *crateConfig;
  AliTOFTRMConfig *trmConfig;
  Int_t maskPB, maskTDC, activeChip;
  
  /* get and check fee config */
  if (!(feeConfig = GetFEEConfig()))
    return kFALSE;
  
  /* get and check crate config */
  if (!(crateConfig = feeConfig->GetCrateConfig(iDDL)))
    return kFALSE;
  
  /* get and check TRM config */
  if (!(trmConfig = crateConfig->GetTRMConfig(iTRM - 3)))
    return kFALSE;

  /* check DRM enabled */
  if (!crateConfig->IsDRMEnabled())
    return kFALSE;

  /* check TRM enabled */
  if (!crateConfig->IsTRMEnabled(iTRM - 3))
    return kFALSE;

  /* switch chain */
  switch (iChain) {
    /* chain A */
  case 0:
    /* check chain enabled */
    if (trmConfig->GetChainAFlag() != 1)
      return kFALSE;
    /* get active chip mask */
    activeChip = trmConfig->GetActiveChipA();
    /* switch TDC */
    switch (iTDC) {
    case 0: case 1: case 2:
      maskPB = trmConfig->GetMaskPB0();
      break;
    case 3: case 4: case 5:
      maskPB = trmConfig->GetMaskPB1();
      break;
    case 6: case 7: case 8:
      maskPB = trmConfig->GetMaskPB2();
      break;
    case 9: case 10: case 11:
      maskPB = trmConfig->GetMaskPB3();
      break;
    case 12: case 13: case 14:
      maskPB = trmConfig->GetMaskPB4();
      break;
    default:
      return kFALSE;
      break;  
    } /* switch TDC */
    break; /* chain A */
    /* chain B */
  case 1:
    /* check chain enabled */
    if (trmConfig->GetChainBFlag() != 1)
      return kFALSE;
    /* get active chip mask */
    activeChip = trmConfig->GetActiveChipB();
    /* switch TDC */
    switch (iTDC) {
    case 0: case 1: case 2:
      maskPB = trmConfig->GetMaskPB5();
      break;
    case 3: case 4: case 5:
      maskPB = trmConfig->GetMaskPB6();
      break;
    case 6: case 7: case 8:
      maskPB = trmConfig->GetMaskPB7();
      break;
    case 9: case 10: case 11:
      maskPB = trmConfig->GetMaskPB8();
      break;
    case 12: case 13: case 14:
      maskPB = trmConfig->GetMaskPB9();
      break;
    default:
      return kFALSE;
      break;  
    } /* switch TDC */
    break; /* chain B */
  default:
    return kFALSE;
    break;
  } /* switch chain */

  /* check chip enabled */
  if (!(activeChip & (0x1 << iTDC)))
    return kFALSE;

  /* check channel enabled */
  maskTDC = (maskPB & (0xFF << ((iTDC % 3) * 8))) >> ((iTDC % 3) * 8);
  if (maskTDC & (0x1 << iChannel))
    return kTRUE;
  else
    return kFALSE;
  
}

//_______________________________________________________________

Int_t 
AliTOFFEEReader::GetMatchingWindow(Int_t iDDL, Int_t iTRM, Int_t, Int_t, Int_t) const
{
  /*
   *
   * get matching window
   *
   * checks whether a FEE channel is enabled using the
   * TOF FEE config object and return the associated
   * matching window
   *
   */
  
  AliTOFFEEConfig *feeConfig;
  AliTOFCrateConfig *crateConfig;
  AliTOFTRMConfig *trmConfig;

  /* get and check fee config */
  if (!(feeConfig = GetFEEConfig()))
    return 0;
  
  /* get and check crate config */
  if (!(crateConfig = feeConfig->GetCrateConfig(iDDL)))
    return 0;
  
  /* get and check TRM config */
  if (!(trmConfig = crateConfig->GetTRMConfig(iTRM - 3)))
    return 0;

  /* check DRM enabled */
  if (!crateConfig->IsDRMEnabled())
    return 0;

  /* check TRM enabled */
  if (!crateConfig->IsTRMEnabled(iTRM - 3))
    return 0;

  return trmConfig->GetMatchingWindow();
}


void
AliTOFFEEReader::DumpFEEConfig()
{
  /*
   * 
   * dump FEE config
   *
   */

  AliTOFFEEConfig *feeConfig = GetFEEConfig();
  AliTOFCrateConfig *crateConfig;
  AliTOFDRMConfig *drmConfig;
  AliTOFLTMConfig *ltmConfig;
  AliTOFTRMConfig *trmConfig;

  AliInfo("-------------------------------------");
  AliInfo("dumping TOF FEE config");
  AliInfo("-------------------------------------");
  AliInfo(Form("version: %d", feeConfig->GetVersion()));
  AliInfo(Form("dump time: %d", (Int_t)feeConfig->GetDumpTime()));
  AliInfo(Form("run number: %d", feeConfig->GetRunNumber()));
  AliInfo(Form("run type: %d", feeConfig->GetRunType()));
  AliInfo("-------------------------------------");
  
  /* loop over crates */
  for (Int_t iCrate = 0; iCrate < AliTOFFEEConfig::GetNumberOfCrates(); iCrate++) {
    crateConfig = feeConfig->GetCrateConfig(iCrate);
    
    /* check crate config */
    if (!crateConfig)
      continue;
    
    /* check DRM enabled */
    if (!crateConfig->IsDRMEnabled())
    continue;

    AliInfo(Form("crate id: %02d", iCrate));

    /* dump DRM config */
    drmConfig = crateConfig->GetDRMConfig();
    AliInfo(Form("DRM is enabled: drmId=%d, slotMask=%03x", drmConfig->GetDRMId(), drmConfig->GetSlotMask()));

    /* dump LTM config if enabled */
    if (crateConfig->IsLTMEnabled()) {
      ltmConfig = crateConfig->GetLTMConfig();
      AliInfo(Form("LTM is enabled: threshold=%d", ltmConfig->GetThreshold()));
    }
    
    /* dump CPDM config if enabled */
    if (crateConfig->IsCPDMEnabled()) {
      AliInfo(Form("CPDM is enabled"));
    }
    
    /* loop over TRMs */
    for (Int_t iTRM = 0; iTRM < AliTOFCrateConfig::GetNumberOfTRMs(); iTRM++) {

      trmConfig = crateConfig->GetTRMConfig(iTRM);

      /* check TRM config */
      if (!trmConfig)
	continue;
      
      /* check TRM enabled */
      if (!crateConfig->IsTRMEnabled(iTRM))
	continue;

      /* dump TRM config */
      AliInfo(Form("TRM%02d is enabled: matchWin=%d, latWin=%d, packFlag=%d", iTRM + 3, trmConfig->GetMatchingWindow(), trmConfig->GetLatencyWindow(), trmConfig->GetPackingFlag()));
      
      /* check TRM chain A flag */
      if (trmConfig->GetChainAFlag() == 1) {
	AliInfo(Form("TRM%02d chainA is enabled: activeChip=%04X, PB0=%06X, PB1=%06X, PB2=%06X, PB3=%06X, PB4=%06X", iTRM + 3, trmConfig->GetActiveChipA(), trmConfig->GetMaskPB0(), trmConfig->GetMaskPB1(), trmConfig->GetMaskPB2(), trmConfig->GetMaskPB3(), trmConfig->GetMaskPB4()));
      }

      /* check TRM chain B flag */
      if (trmConfig->GetChainBFlag() == 1) {
	AliInfo(Form("TRM%02d chainB is enabled: activeChip=%04X, PB5=%06X, PB6=%06X, PB7=%06X, PB8=%06X, PB9=%06X", iTRM + 3, trmConfig->GetActiveChipB(), trmConfig->GetMaskPB5(), trmConfig->GetMaskPB6(), trmConfig->GetMaskPB7(), trmConfig->GetMaskPB8(), trmConfig->GetMaskPB9()));
      }
      

      
    } /* loop over TRMs */
    AliInfo("-------------------------------------");
  } /* loop over crates */
}

//_______________________________________________________________

void
AliTOFFEEReader::CreateFEElightConfig(const Char_t *filename)
{
  /*
   *
   * create FEElight config 
   *
   */

  AliTOFFEElightConfig lightConfig;

  for (Int_t i = 0; i < GetNumberOfIndexes(); i++) {
    if (fChannelEnabled[i]) {
      lightConfig.GetChannelConfig(i)->SetStatus(AliTOFFEEchannelConfig::kStatusEnabled);
      lightConfig.GetChannelConfig(i)->SetMatchingWindow(fMatchingWindow[i]);
      lightConfig.GetChannelConfig(i)->SetLatencyWindow(fLatencyWindow[i]);
    }
    else {
      lightConfig.GetChannelConfig(i)->SetStatus(0x0);
      lightConfig.GetChannelConfig(i)->SetMatchingWindow(0);
      lightConfig.GetChannelConfig(i)->SetLatencyWindow(0);
    }
  }

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