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

/*
$Log: AliTOFLvHvDataPoints.cxx,v $
*/  

// AliTOFLvHvDataPoints class
// main aim to introduce the aliases for the TOF LV and HV DCS
// data points to be then
// stored in the OCDB, and to process them. 
// Process() method called by TOF preprocessor

#include "TString.h"
#include "TTimeStamp.h"
#include "TMap.h"
#include "TMath.h"
#include "TH1C.h"

#include "AliDCSValue.h"
#include "AliLog.h"
#include "AliBitPacking.h"

#include "AliTOFGeometry.h"
#include "AliTOFDCSmaps.h"
#include "AliTOFLvHvDataPoints.h"

class AliCDBMetaData;
class TDatime;

ClassImp(AliTOFLvHvDataPoints)

//---------------------------------------------------------------
AliTOFLvHvDataPoints::AliTOFLvHvDataPoints():
  TObject(),
  fRun(0),
  fStartTime(0),
  fEndTime(0),
  fStartTimeDCSQuery(0),
  fEndTimeDCSQuery(0),
  fIsProcessed(kFALSE),
  fFDR(kFALSE),
  fNumberOfLVdataPoints(0),
  fNumberOfHVdataPoints(0),
  fNumberOfHVandLVmaps(0),
  fStartingLVmap(0x0),
  fStartingHVmap(0x0),
  fHisto(0x0),
  fNSecondsBeforeEOR(60)
{
  // main constructor 

  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fLVDataPoints[ii]= 0x0;
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fHVDataPoints[ii]= 0x0;
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fMap[ii]= 0x0;

}

//---------------------------------------------------------------
AliTOFLvHvDataPoints::AliTOFLvHvDataPoints(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t startTimeDCSQuery, UInt_t endTimeDCSQuery):
  TObject(),
  fRun(nRun),
  fStartTime(startTime),
  fEndTime(endTime),
  fStartTimeDCSQuery(startTimeDCSQuery),
  fEndTimeDCSQuery(endTimeDCSQuery),
  fIsProcessed(kFALSE),
  fFDR(kFALSE),
  fNumberOfLVdataPoints(0),
  fNumberOfHVdataPoints(0),
  fNumberOfHVandLVmaps(0),
  fStartingLVmap(new AliTOFDCSmaps()),
  fStartingHVmap(new AliTOFDCSmaps()),
  fHisto(new TH1C("histo","",kNpads,-0.5,kNpads-0.5)),
  fNSecondsBeforeEOR(60)
{

  // constructor with arguments

  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fLVDataPoints[ii]= 0x0;
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fHVDataPoints[ii]= 0x0;
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fMap[ii]= 0x0;

  AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s \n\tStartTime DCS Query %s \n\tEndTime DCS Query %s", nRun,
	       TTimeStamp(startTime).AsString(),
	       TTimeStamp(endTime).AsString(), 
	       TTimeStamp(startTimeDCSQuery).AsString(), 
	       TTimeStamp(endTimeDCSQuery).AsString()));

  Init();

}

//---------------------------------------------------------------

AliTOFLvHvDataPoints::AliTOFLvHvDataPoints(const AliTOFLvHvDataPoints & data):
  TObject(data), 
  fRun(data.fRun),
  fStartTime(data.fStartTime),
  fEndTime(data.fEndTime),
  fStartTimeDCSQuery(data.fStartTimeDCSQuery),
  fEndTimeDCSQuery(data.fEndTimeDCSQuery),
  fIsProcessed(data.fIsProcessed),
  fFDR(data.fFDR),
  fNumberOfLVdataPoints(data.fNumberOfLVdataPoints),
  fNumberOfHVdataPoints(data.fNumberOfHVdataPoints),
  fNumberOfHVandLVmaps(data.fNumberOfHVandLVmaps),
  fStartingLVmap(data.fStartingLVmap),
  fStartingHVmap(data.fStartingHVmap),
  fHisto(data.fHisto),
  fNSecondsBeforeEOR(data.fNSecondsBeforeEOR)
{

  // copy constructor

  for(int i=0;i<kNddl;i++)
    fAliasNamesXLVmap[i]=data.fAliasNamesXLVmap[i];
    
  for(int i=0;i<kNsectors;i++)
    for(int j=0;j<kNplates;j++)
      fAliasNamesXHVmap[i][j]=data.fAliasNamesXHVmap[i][j];

  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fLVDataPoints[ii]= data.fLVDataPoints[ii];
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fHVDataPoints[ii]= data.fLVDataPoints[ii];
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fMap[ii]= data.fMap[ii];

}
//---------------------------------------------------------------

AliTOFLvHvDataPoints& AliTOFLvHvDataPoints:: operator=(const AliTOFLvHvDataPoints & data) { 

  // assignment operator

  if (this == &data)
    return *this;

  TObject::operator=(data);
  fRun=data.GetRun();
  fStartTime=data.GetStartTime();
  fEndTime=data.GetEndTime();
  fStartTimeDCSQuery=data.GetStartTimeDCSQuery();
  fEndTimeDCSQuery=data.GetEndTimeDCSQuery();

  fNumberOfLVdataPoints=data.fNumberOfLVdataPoints;
  fNumberOfHVdataPoints=data.fNumberOfHVdataPoints;
  fNumberOfHVandLVmaps=data.fNumberOfHVandLVmaps;

  fStartingLVmap=data.fStartingLVmap;
  fStartingHVmap=data.fStartingHVmap;

  for(int i=0;i<kNddl;i++)
    fAliasNamesXLVmap[i]=data.fAliasNamesXLVmap[i];

  for(int i=0;i<kNsectors;i++)
    for(int j=0;j<kNplates;j++)
      fAliasNamesXHVmap[i][j]=data.fAliasNamesXHVmap[i][j];

  fHisto=data.fHisto;

  fNSecondsBeforeEOR=data.fNSecondsBeforeEOR;

  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fLVDataPoints[ii]= data.fLVDataPoints[ii];
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fHVDataPoints[ii]= data.fLVDataPoints[ii];
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) fMap[ii]= data.fMap[ii];

  return *this;
}
//---------------------------------------------------------------
AliTOFLvHvDataPoints::~AliTOFLvHvDataPoints() {

  // destructor

  delete fStartingLVmap;
  delete fStartingHVmap;

  for (Int_t ii=0; ii<kNmaxDataPoints; ii++)
    if (fLVDataPoints[ii]) fLVDataPoints[ii]->Delete();
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++)
    if (fHVDataPoints[ii]) fHVDataPoints[ii]->Delete();
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++)
    if (fMap[ii]) fMap[ii]->Delete();

}

//---------------------------------------------------------------
Bool_t AliTOFLvHvDataPoints::ProcessData(TMap& aliasMap) {
  //
  // method to process the data
  //

  if(!(fAliasNamesXHVmap[0][0]) || !(fAliasNamesXLVmap[0])) Init();

  AliInfo(Form(" Start Time = %i",fStartTime));
  AliInfo(Form(" End Time = %i",fEndTime));
  AliInfo(Form(" Start Time DCS Query= %i",fStartTimeDCSQuery));
  AliInfo(Form(" End Time DCS Query= %i",fEndTimeDCSQuery));

  if (fEndTime==fStartTime){
    AliError(Form(" Run with null time length: start time = %d = end time = %d",fStartTime,fEndTime));
    return kFALSE;
  }


  if (!ReadLVDataPoints(aliasMap)) return kFALSE;
  AliDebug(1,Form(" Number of LV dp value changes = %d",fNumberOfLVdataPoints));

  if (!ReadHVDataPoints(aliasMap)) return kFALSE;
  AliDebug(1,Form(" Number of HV dp value changes = %d",fNumberOfHVdataPoints));

  if (!MergeLVmap()) return kFALSE;

  if (!MergeHVmap()) return kFALSE;

  if (!MergeMaps()) return kFALSE;

  fIsProcessed=kTRUE;

  return kTRUE;

}

//---------------------------------------------------------------
Bool_t AliTOFLvHvDataPoints::MergeMaps() {
  //
  // Merge together LV and HV maps
  //

  Int_t timeMaps[kNmaxDataPoints];
  for (Int_t ii=0; ii<kNmaxDataPoints; ii++) timeMaps[ii]=0;

  for (Int_t ii=0; ii<fNumberOfHVdataPoints; ii++) {
    AliDebug(1,Form(" fNumberOfHVandLVmaps = %d (HV=%d, LV=%d) - time=%d",fNumberOfHVandLVmaps,fNumberOfHVdataPoints,fNumberOfLVdataPoints,timeMaps[fNumberOfHVandLVmaps]));
    timeMaps[fNumberOfHVandLVmaps++]=fHVDataPoints[ii]->GetTime();
  }

  AliDebug(1,Form(" fNumberOfHVandLVmaps = %d (HV=%d) ",fNumberOfHVandLVmaps,fNumberOfHVdataPoints));

  Bool_t check = kTRUE;
  for (Int_t jj=0; jj<fNumberOfLVdataPoints; jj++) {
    check = kTRUE;
    for (Int_t ii=0; ii<fNumberOfHVdataPoints; ii++)
      check=check&&(fLVDataPoints[jj]->GetTime()!=timeMaps[ii]);

    if (check) {
      AliDebug(1,Form(" fNumberOfHVandLVmaps = %d (HV=%d, LV=%d) - time=%d",fNumberOfHVandLVmaps,fNumberOfHVdataPoints,fNumberOfLVdataPoints,timeMaps[fNumberOfHVandLVmaps]));
      timeMaps[fNumberOfHVandLVmaps++]=fLVDataPoints[jj]->GetTime();
    }
  }

  AliInfo(Form(" TOF HV dps = %d; TOF LV dps = %d; TOF HVandLV dps %d",
	       fNumberOfHVdataPoints, fNumberOfLVdataPoints, fNumberOfHVandLVmaps));


  Int_t *controller = new Int_t[sizeof(Int_t)*fNumberOfHVandLVmaps]; // fix for coverity
  for (Int_t ii=0; ii<fNumberOfHVandLVmaps; ii++) controller[ii]=-1;
  TMath::Sort(fNumberOfHVandLVmaps,timeMaps,controller,kFALSE); // increasing order

  for (Int_t ii=0; ii<fNumberOfHVandLVmaps; ii++)
    AliDebug(1, Form(" Time Order - time[controller[%d]] = %d", ii, timeMaps[controller[ii]]));

  Short_t array[kNpads];
  for (Int_t iPad=0; iPad<kNpads; iPad++) array[iPad]=-1;
  Int_t time = 0;

  // HVandLV status map during run
  for (Int_t index=0; index<fNumberOfHVandLVmaps; index++) {
    time = timeMaps[controller[index]];

    AliDebug(2, Form(" Time Order - time[controller[%d]] = %d", index, timeMaps[controller[index]]));

    for (Int_t ii=0; ii<fNumberOfHVdataPoints; ii++)
      for (Int_t jj=0; jj<fNumberOfLVdataPoints; jj++) {

	AliDebug(2,Form(" time=%d --- HVdp_time[%d]=%d, LVdp_time[%d]=%d",
			time,
			ii,fHVDataPoints[ii]->GetTime(),
			jj,fLVDataPoints[jj]->GetTime()));

	if ( (fHVDataPoints[ii]->GetTime()==time && fLVDataPoints[jj]->GetTime()<=time) ||
	     (fLVDataPoints[jj]->GetTime()==time && fHVDataPoints[ii]->GetTime()<=time) ) {

	  AliDebug(2,Form(" HVdp_time[%d]=%d, LVdp_time[%d]=%d",
			  ii,fHVDataPoints[ii]->GetTime(),
			  jj,fLVDataPoints[jj]->GetTime()));
	  for (Int_t iPad=0; iPad<kNpads; iPad++)
	    array[iPad] = fHVDataPoints[ii]->GetCellValue(iPad)*fLVDataPoints[jj]->GetCellValue(iPad);
	  AliTOFDCSmaps *object = new AliTOFDCSmaps(time,array);
	  fMap[index]= object;
	  break;

	}
	else if ( fHVDataPoints[ii]->GetTime()==time && fLVDataPoints[jj]->GetTime()>time ) {

	  AliDebug(2,Form(" HVdp_time[%d]=%d, (no LVdp)",ii,fHVDataPoints[ii]->GetTime()));
	  for (Int_t iPad=0; iPad<kNpads; iPad++)
	    array[iPad] = fHVDataPoints[ii]->GetCellValue(iPad);
	  AliTOFDCSmaps *object = new AliTOFDCSmaps(time,array);
	  fMap[index]= object;
	  break;

	} else if ( fLVDataPoints[jj]->GetTime()==time && fHVDataPoints[ii]->GetTime()>time ) {

	  AliDebug(2,Form(" LVdp_time[%d]=%d, (no HVdp)",jj,fLVDataPoints[jj]->GetTime()));
	  for (Int_t iPad=0; iPad<kNpads; iPad++)
	    array[iPad] = fLVDataPoints[jj]->GetCellValue(iPad);
	  AliTOFDCSmaps *object = new AliTOFDCSmaps(time,array);
	  fMap[index]= object;
	  break;

	}

      }

  }

  delete [] controller;

  for (Int_t ii=0; ii<fNumberOfHVandLVmaps; ii++)
    AliDebug(1,Form(" fMap[%d]->GetTime() = %d ",ii,fMap[ii]->GetTime()));

  return kTRUE;

}

//---------------------------------------------------------------
Bool_t AliTOFLvHvDataPoints::MergeHVmap() {
  //
  // Create HV maps from HV dps
  //

  Bool_t check= kFALSE;

  if (fNumberOfHVdataPoints==0)
    return check;
  else {

    // first map construction
    for (Int_t iPad=0; iPad<kNpads; iPad++) {
      if (fHVDataPoints[0]->GetCellValue(iPad)==-1)
	fHVDataPoints[0]->SetCellValue(iPad,fStartingHVmap->GetCellValue(iPad));
      //else
      //fHVDataPoints[0]->SetCellValue(iPad,fHVDataPoints[0]->GetCellValue(iPad)*fStartingHVmap->GetCellValue(iPad));

      if (iPad%(96*91)==0)
	AliDebug(2,Form("HVdp0: channel=%6d -> %1d",iPad,fHVDataPoints[0]->GetCellValue(iPad)));
    }

    // other maps construction
    for (Int_t ii=1; ii<fNumberOfHVdataPoints; ii++) {
      for (Int_t iPad=0; iPad<kNpads; iPad++) {
	if (fHVDataPoints[ii]->GetCellValue(iPad)==-1)
	  fHVDataPoints[ii]->SetCellValue(iPad,fHVDataPoints[ii-1]->GetCellValue(iPad));

	if (iPad%(96*91)==0)
	  AliDebug(2,Form("HVdp%d: channel=%6d -> %1d",ii,iPad,fHVDataPoints[ii]->GetCellValue(iPad)));
      }
    }

    check=kTRUE;
  }

  return kTRUE;

}

//---------------------------------------------------------------
Bool_t AliTOFLvHvDataPoints::MergeLVmap() {
  //
  // Create LV maps from LV dps
  //

  Bool_t check= kFALSE;

  if (fNumberOfLVdataPoints==0)
    return check;
  else {

    // first map construction
    for (Int_t iPad=0; iPad<kNpads; iPad++) {
      if (fLVDataPoints[0]->GetCellValue(iPad)==-1)
	fLVDataPoints[0]->SetCellValue(iPad,fStartingLVmap->GetCellValue(iPad));
      //else
      //fLVDataPoints[0]->SetCellValue(iPad,fLVDataPoints[0]->GetCellValue(iPad)*fStartingLVmap->GetCellValue(iPad));

      if (iPad%(96*91)==0)
	AliDebug(2,Form("LVdp0: channel=%6d -> %1d",iPad,fLVDataPoints[0]->GetCellValue(iPad)));
    }

    // other maps construction
    for (Int_t ii=1; ii<fNumberOfLVdataPoints; ii++) {
      for (Int_t iPad=0; iPad<kNpads; iPad++) {
	if (fLVDataPoints[ii]->GetCellValue(iPad)==-1)
	  fLVDataPoints[ii]->SetCellValue(iPad,fLVDataPoints[ii-1]->GetCellValue(iPad));

	if (iPad%(96*91)==0)
	  AliDebug(2,Form("LVdp%d: channel=%6d -> %1d",ii,iPad,fLVDataPoints[ii]->GetCellValue(iPad)));
      }
    }

    check=kTRUE;
  }

  return check;

}

//---------------------------------------------------------------
Bool_t AliTOFLvHvDataPoints::ReadHVDataPoints(TMap& aliasMap) {
  //
  // Read HV dps
  //

  TObjArray *aliasArr;
  AliDCSValue* aValue;
  AliDCSValue* aValuePrev;
  Int_t val = 0;
  Int_t time = 0;
  Int_t nEntries = 0;

  Short_t dummy[kNpads];

  for (Int_t iBin=0; iBin<kNpads; iBin++) dummy[iBin]=-1;
  // starting loop on aliases
  for (int i=0; i<kNsectors; i++)
    for (int j=0; j<kNplates; j++) {
      aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNamesXHVmap[i][j].Data());
      if (!aliasArr) {
	AliError(Form("Alias %s not found!", fAliasNamesXHVmap[i][j].Data()));
	if (!fFDR)
	  return kFALSE;    // returning only in case we are not in a FDR run
	else
	  continue;
      }

      nEntries = aliasArr->GetEntries();
    
      if (nEntries<2) AliDebug(1, Form(" NB: number of values for dp %s %d (less than 2)",fAliasNamesXHVmap[i][j].Data(),nEntries));

      if (nEntries==0) {
	AliError(Form("Alias %s has no entries! Nothing will be stored",
		      fAliasNamesXHVmap[i][j].Data()));
	continue;
      }
      else {

	// read the first value
	for (Int_t iBin=0; iBin<kNpads; iBin++) dummy[iBin]=-1;
	aValue = (AliDCSValue*) aliasArr->At(0);
	val = aValue->GetInt();
	time = aValue->GetTimeStamp();
	AliDebug(1, Form(" at t=%d, 1st value for dp %s = %d", time, fAliasNamesXHVmap[i][j].Data(), val));
	FillHVarrayPerDataPoint(i,j,val,dummy);
	AliTOFDCSmaps *object0 = new AliTOFDCSmaps(time,dummy);
	if (InsertHVDataPoint(object0)!=0) return kTRUE; // to be verified

	// read the values from the second one
	for (Int_t iEntry=1; iEntry<nEntries; iEntry++) {
	  for (Int_t iBin=0; iBin<kNpads; iBin++) dummy[iBin]=-1;
	  aValue = (AliDCSValue*) aliasArr->At(iEntry);
	  val = aValue->GetInt();
	  time = aValue->GetTimeStamp();
	  AliDebug(2, Form(" at t=%d, %dth value for dp %s = %d", time, iEntry+1, fAliasNamesXHVmap[i][j].Data(), val));
	  aValuePrev = (AliDCSValue*) aliasArr->At(iEntry-1);
	  if (aValuePrev->GetInt()!=val) {
	    AliDebug(1, Form(" CHANGE - at t=%d, %dth value for dp %s = %d", time, iEntry+1, fAliasNamesXHVmap[i][j].Data(), val));
	    FillHVarrayPerDataPoint(i,j,val,dummy);
	    AliTOFDCSmaps *object = new AliTOFDCSmaps(time,dummy);
	    if (InsertHVDataPoint(object)!=0) return kTRUE; // to be verified
	  }

	}
      }
    }

  if (fNumberOfHVdataPoints==0) {
    AliInfo("Valid HV dps not found. By default all HV TOF channels (except the ones in the PHOS holes) switched ON, at SOR.");
    if (InsertHVDataPoint(fStartingHVmap)!=0) return kTRUE; // to be verified
  }

  return kTRUE;

}

//---------------------------------------------------------------
Bool_t AliTOFLvHvDataPoints::ReadLVDataPoints(TMap& aliasMap) {
  //
  // Read LV dps
  //

  TObjArray *aliasArr;
  AliDCSValue* aValue;
  AliDCSValue* aValuePrev;
  Int_t val = 0;
  Int_t time = 0;
  Int_t nEntries = 0;

  Short_t dummy[kNpads];

  for (Int_t iBin=0; iBin<kNpads; iBin++) dummy[iBin]=-1;
  // starting loop on aliases
  for (int i=0; i<kNddl; i++) {
    aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNamesXLVmap[i].Data());
    if (!aliasArr) {
      AliError(Form("Alias %s not found!", fAliasNamesXLVmap[i].Data()));
      if (!fFDR)
	return kFALSE;    // returning only in case we are not in a FDR run
      else
	continue;
    }

    nEntries = aliasArr->GetEntries();
    
    if (nEntries<2) AliDebug(1, Form(" NB: number of values for dp %s %d (less than 2)",fAliasNamesXLVmap[i].Data(),nEntries));
    
    if (nEntries==0) {
      AliError(Form("Alias %s has no entries! Nothing will be stored",
		    fAliasNamesXLVmap[i].Data()));
      continue;
    }
    else {

      // read the first value
      for (Int_t iBin=0; iBin<kNpads; iBin++) dummy[iBin]=-1;
      aValue = (AliDCSValue*) aliasArr->At(0);
      val = aValue->GetInt();
      time = aValue->GetTimeStamp();
      AliDebug(1, Form(" at t=%d, 1st value for dp %s = %d", time, fAliasNamesXLVmap[i].Data(), val));
      FillLVarrayPerDataPoint(i,val,dummy);
      AliTOFDCSmaps *object0 = new AliTOFDCSmaps(time,dummy);
      if (InsertLVDataPoint(object0)!=0) return kTRUE; // to be verified

      // read the values from the second one
      for (Int_t iEntry=1; iEntry<nEntries; iEntry++) {
	for (Int_t iBin=0; iBin<kNpads; iBin++) dummy[iBin]=-1;
	aValue = (AliDCSValue*) aliasArr->At(iEntry);
	val = aValue->GetInt();
	time = aValue->GetTimeStamp();
	AliDebug(2, Form(" at t=%d, %dth value for dp %s = %d", time, iEntry+1, fAliasNamesXLVmap[i].Data(), val));
	aValuePrev = (AliDCSValue*) aliasArr->At(iEntry-1);
	if (aValuePrev->GetInt()!=val) {
	  AliDebug(1, Form(" CHANGE - at t=%d, %dth value for dp %s = %d", time, iEntry+1, fAliasNamesXLVmap[i].Data(), val));
	  FillLVarrayPerDataPoint(i,val,dummy);
	  AliTOFDCSmaps *object = new AliTOFDCSmaps(time,dummy);
	  if (InsertLVDataPoint(object)!=0) return kTRUE; // to be verified
	}

      }
    }
  }

  if (fNumberOfLVdataPoints==0) {
    AliInfo("Valid LV dps not found. By default all LV TOF channels switched ON, at SOR.");
    if (InsertLVDataPoint(fStartingLVmap)!=0) return kTRUE; // to be verified
  }

  return kTRUE;

}

//---------------------------------------------------------------
Int_t AliTOFLvHvDataPoints::InsertHVDataPoint(AliTOFDCSmaps *object)
{
  //
  // Insert HV dp in the HV dps array.
  // The HV dps array is sorted according to increasing dp timeStamp value
  //

  if (fNumberOfHVdataPoints==kNmaxDataPoints) {
    AliError("Too many HV data points!");
    return 1;
  }

  if (fNumberOfHVdataPoints==0) {
    fHVDataPoints[fNumberOfHVdataPoints++] = object;
    return 0;
  }

  for (Int_t index=0; index<fNumberOfHVdataPoints; index++) {
    if (object->GetTime()==fHVDataPoints[index]->GetTime()) {
      fHVDataPoints[index]->Update(object);
      return 0;
    }
  }

  Int_t ii = FindHVdpIndex(object->GetTime());
  memmove(fHVDataPoints+ii+1 ,fHVDataPoints+ii,(fNumberOfHVdataPoints-ii)*sizeof(AliTOFDCSmaps*));
  fHVDataPoints[ii] = object;
  fNumberOfHVdataPoints++;
  
  return 0;

}

//_________________________________________________________________________
Int_t AliTOFLvHvDataPoints::FindHVdpIndex(Int_t z) const {
  //
  // This function returns the index of the nearest HV DP in time
  //

  if (fNumberOfHVdataPoints==0) return 0;
  if (z <= fHVDataPoints[0]->GetTime()) return 0;
  if (z > fHVDataPoints[fNumberOfHVdataPoints-1]->GetTime()) return fNumberOfHVdataPoints;
  Int_t b = 0, e = fNumberOfHVdataPoints-1, m = (b+e)/2;
  for (; b<e; m=(b+e)/2) {
    if (z > fHVDataPoints[m]->GetTime()) b=m+1;
    else e=m;
  }

  return m;

}

//---------------------------------------------------------------
Int_t AliTOFLvHvDataPoints::InsertLVDataPoint(AliTOFDCSmaps *object)
{
  //
  // Insert LV dp in the LV dps array.
  // The LV dps array is sorted according to increasing dp timeStamp value
  //

  if (fNumberOfLVdataPoints==kNmaxDataPoints) {
    AliError("Too many LV data points!");
    return 1;
  }

  if (fNumberOfLVdataPoints==0) {
    fLVDataPoints[fNumberOfLVdataPoints++] = object;
    return 0;
  }

  for (Int_t index=0; index<fNumberOfLVdataPoints; index++) {
    if (object->GetTime()==fLVDataPoints[index]->GetTime()) {
      fLVDataPoints[index]->Update(object);
      return 0;
    }
  }

  Int_t ii = FindLVdpIndex(object->GetTime());
  memmove(fLVDataPoints+ii+1 ,fLVDataPoints+ii,(fNumberOfLVdataPoints-ii)*sizeof(AliTOFDCSmaps*));
  fLVDataPoints[ii] = object;
  fNumberOfLVdataPoints++;
  
  return 0;

}

//_________________________________________________________________________
Int_t AliTOFLvHvDataPoints::FindLVdpIndex(Int_t z) const {
  //
  // This function returns the index of the nearest LV DP in time
  //

  if (fNumberOfLVdataPoints==0) return 0;
  if (z <= fLVDataPoints[0]->GetTime()) return 0;
  if (z > fLVDataPoints[fNumberOfLVdataPoints-1]->GetTime()) return fNumberOfLVdataPoints;
  Int_t b = 0, e = fNumberOfLVdataPoints-1, m = (b+e)/2;
  for (; b<e; m=(b+e)/2) {
    if (z > fLVDataPoints[m]->GetTime()) b=m+1;
    else e=m;
  }

  return m;

}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::Init(){
  //
  // Initialize aliases and DCS data
  //

  TString sindex;
  for(int i=0;i<kNsectors;i++)
    for(int j=0;j<kNplates;j++) {
      fAliasNamesXHVmap[i][j] = "TOF_HVSTATUS_";
      sindex.Form("SM%02dMOD%1d",i,j);
      fAliasNamesXHVmap[i][j] += sindex;
    }


  for(int i=0;i<kNddl;i++) {
    fAliasNamesXLVmap[i] = "TOF_FEACSTATUS_";
    sindex.Form("%02d",i);
    fAliasNamesXLVmap[i] += sindex;
  }

  fStartingLVmap->SetTime(0);
  for (Int_t iPad=0; iPad<kNpads; iPad++)
    fStartingLVmap->SetCellValue(iPad,1);

  fStartingHVmap->SetTime(0);
  for (Int_t iPad=0; iPad<kNpads; iPad++) {
    Int_t vol[5] = {-1,-1,-1,-1,-1};
    AliTOFGeometry::GetVolumeIndices(iPad,vol);
    if ( (vol[0]==13 || vol[0]==14 || vol[0]==15) &&
	 vol[1]==2)
      fStartingHVmap->SetCellValue(iPad,0);
    else
      fStartingHVmap->SetCellValue(iPad,1);
  }

}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::FillHVarrayPerDataPoint(Int_t sector, Int_t plate, UInt_t baseWord, Short_t *array) const
{
  //
  // Set the status of the TOF pads connected to the HV dp
  // labelled by sector and plate numbers
  //

  Int_t det[5] = {sector, plate, -1, -1, -1};
  UInt_t checkBit = 0;

  Int_t channel = -1;

  for (Int_t iStrip=0; iStrip<AliTOFGeometry::NStrip(plate); iStrip++) {
    checkBit = AliBitPacking::UnpackWord(baseWord,iStrip,iStrip);
    for (Int_t iPadZ=0; iPadZ<AliTOFGeometry::NpadZ(); iPadZ++)
      for (Int_t iPadX=0; iPadX<AliTOFGeometry::NpadX(); iPadX++) {
	det[2] = iStrip;
	det[3] = iPadZ;
	det[4] = iPadX;
	channel = AliTOFGeometry::GetIndex(det);
	array[channel]=checkBit;
    }
  }


}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::FillLVarrayPerDataPoint(Int_t nDDL, UInt_t baseWord, Short_t *array) const 
{
  //
  // Set the status of the TOF pads connected to the LV dp
  // labelled by TOF crate number
  //

  Int_t det[5] = {nDDL/4, -1, -1, -1, -1};
  UInt_t checkBit = 0;

  Int_t iStripXsm[6] = {-1,-1,-1,-1,-1,-1};
  Int_t firstPadX = -1;
  Int_t lastPadX = -1;
  Int_t plate = -1;
  Int_t strip = -1;

  Int_t channel = -1;

  for (Int_t nFEAC=0; nFEAC<8; nFEAC++) {
    checkBit = AliBitPacking::UnpackWord(baseWord,nFEAC,nFEAC);
    firstPadX = -1;
    lastPadX = -1;
    GetStripsConnectedToFEAC(nDDL, nFEAC, iStripXsm, firstPadX,lastPadX);
    for (Int_t index=0; index<6; index++) {
      if (iStripXsm[index]==-1) continue;

      for (Int_t iPadZ=0; iPadZ<AliTOFGeometry::NpadZ(); iPadZ++)
	for (Int_t iPadX=firstPadX; iPadX<=lastPadX; iPadX++) {
	  AliTOFGeometry::GetStripAndModule(iStripXsm[index],plate,strip);
	  det[1] = plate;
	  det[2] = strip;
	  det[3] = iPadZ;
	  det[4] = iPadX;
	  channel = AliTOFGeometry::GetIndex(det);
	  array[channel]=checkBit;
	}
    }
  }


}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::GetStripsConnectedToFEAC(Int_t nDDL, Int_t nFEAC, Int_t *iStrip, Int_t &firstPadX, Int_t &lastPadX) const
{
  //
  // FEAC-strip mapping:
  // return the strips and first PadX numbers
  // connected to the FEAC number nFEAC in the crate number nDDL
  //

  for (Int_t ii=0; ii<6; ii++) iStrip[ii]=-1;

  if (nDDL<0 || nDDL>=kNddl || nFEAC<0 || nFEAC>=8) return;

  switch (nDDL%4) {
  case 0:
    firstPadX =  0;
    lastPadX  = AliTOFGeometry::NpadX()/2-1;

    if (nFEAC<=2)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC;
    else if (nFEAC==3)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=ii+6*nFEAC;
    else if (nFEAC==4)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC-1;
    else if (nFEAC==5)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=ii+6*nFEAC-1;
    else if (nFEAC==6)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC-2;
    else if (nFEAC==7)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=ii+6*nFEAC-2;

    break; 
  case 1:
    firstPadX = AliTOFGeometry::NpadX()/2;
    lastPadX  = AliTOFGeometry::NpadX()-1;

    if (nFEAC<=2)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC;
    else if (nFEAC==3)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=ii+6*nFEAC;
    else if (nFEAC==4)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC-1;
    else if (nFEAC==5)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC-1;
    else if (nFEAC==6)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=ii+6*nFEAC-1;
    else if (nFEAC==7)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=ii+6*nFEAC-2;

    break;
  case 2:
    firstPadX = AliTOFGeometry::NpadX()/2;
    lastPadX  = AliTOFGeometry::NpadX()-1;

    if (nFEAC<=2)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC);
    else if (nFEAC==3)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=90-(ii+6*nFEAC);
    else if (nFEAC==4)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC-1);
    else if (nFEAC==5)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=90-(ii+6*nFEAC-1);
    else if (nFEAC==6)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC-2);
    else if (nFEAC==7)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=90-(ii+6*nFEAC-2);

    break;
  case 3:
    firstPadX =  0;
    lastPadX  = AliTOFGeometry::NpadX()/2-1;

    if (nFEAC<=2)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC);
    else if (nFEAC==3)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=90-(ii+6*nFEAC);
    else if (nFEAC==4)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC-1);
    else if (nFEAC==5)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC-1);
    else if (nFEAC==6)
      for (Int_t ii=0; ii<5; ii++) iStrip[ii]=90-(ii+6*nFEAC-1);
    else if (nFEAC==7)
      for (Int_t ii=0; ii<6; ii++) iStrip[ii]=90-(ii+6*nFEAC-2);

    break;
 }

}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::Draw(const Option_t* /*option*/)
{
  //
  // Draw all histos and graphs
  //

  if(!fIsProcessed) return;
  /*
  TCanvas *ch;
  TString canvasHistoName="Histos";
  ch = new TCanvas(canvasHistoName,canvasHistoName,20,20,600,600);
  ch->cd();
  */
  // to be implemented

}


//---------------------------------------------------------------
void AliTOFLvHvDataPoints::DrawHVandLVMap(Int_t index)
{
  //
  // Draw HV+LV map labelled as index
  //

  const Int_t kSize = 100;

  if(!fIsProcessed) return;

  if (index>=fNumberOfHVandLVmaps) return;

  AliTOFDCSmaps *mappa=(AliTOFDCSmaps*)GetHVandLVmap(index);

  char title[kSize];
  if (index==0) snprintf(title,kSize,"HVandLV map at time %d (%dst map)",mappa->GetTime(),index+1);
  else if (index==1) snprintf(title,kSize,"HVandLV map at time %d (%dnd map)",mappa->GetTime(),index+1);
  else if (index==2) snprintf(title,kSize,"HVandLV map at time %d (%drd map)",mappa->GetTime(),index+1);
  else if (index>=3) snprintf(title,kSize,"HVandLV map at time %d (%dth map)",mappa->GetTime(),index+1);
  fHisto->Delete();
  fHisto = new TH1C("histo","",kNpads,-0.5,kNpads-0.5);
  //fHisto->Clear();
  fHisto->SetTitle(title);

  for (Int_t ii=0; ii<kNpads; ii++)
    fHisto->SetBinContent(ii+1,mappa->GetCellValue(ii));

  fHisto->Draw();

}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::DrawLVMap(Int_t index)
{
  //
  // Draw LV map labelled as index
  //

  const Int_t kSize = 100;

  if(!fIsProcessed) return;

  if (index>=fNumberOfLVdataPoints) return;

  AliTOFDCSmaps *mappa=(AliTOFDCSmaps*)GetLVmap(index);

  char title[kSize];
  if (index==0) snprintf(title,kSize,"LV map at time %d (%dst map)",mappa->GetTime(),index+1);
  else if (index==1) snprintf(title,kSize,"LV map at time %d (%dnd map)",mappa->GetTime(),index+1);
  else if (index==2) snprintf(title,kSize,"LV map at time %d (%drd map)",mappa->GetTime(),index+1);
  else if (index>=3) snprintf(title,kSize,"LV map at time %d (%dth map)",mappa->GetTime(),index+1);
  fHisto->Delete();
  fHisto = new TH1C("histo","",kNpads,-0.5,kNpads-0.5);
  //fHisto->Clear();
  fHisto->SetTitle(title);

  for (Int_t ii=0; ii<kNpads; ii++)
    fHisto->SetBinContent(ii+1,mappa->GetCellValue(ii));

  fHisto->Draw();

}

//---------------------------------------------------------------
void AliTOFLvHvDataPoints::DrawHVMap(Int_t index)
{
  //
  // Draw HV map labelled as index
  //

  const Int_t kSize = 100;

  if(!fIsProcessed) return;

  if (index>=fNumberOfHVdataPoints) return;

  AliTOFDCSmaps *mappa=(AliTOFDCSmaps*)GetHVmap(index);

  char title[kSize];
  if (index==0) snprintf(title,kSize,"HV map at time %d (%dst map)",mappa->GetTime(),index+1);
  else if (index==1) snprintf(title,kSize,"HV map at time %d (%dnd map)",mappa->GetTime(),index+1);
  else if (index==2) snprintf(title,kSize,"HV map at time %d (%drd map)",mappa->GetTime(),index+1);
  else if (index>=3) snprintf(title,kSize,"HV map at time %d (%dth map)",mappa->GetTime(),index+1);
  fHisto->Delete();
  fHisto = new TH1C("histo","",kNpads,-0.5,kNpads-0.5);
  //fHisto->Clear();
  fHisto->SetTitle(title);

  for (Int_t ii=0; ii<kNpads; ii++)
    fHisto->SetBinContent(ii+1,mappa->GetCellValue(ii));

  fHisto->Draw();

}

//---------------------------------------------------------------
AliTOFDCSmaps *AliTOFLvHvDataPoints::GetHVandLVmapAtEOR()
{
  //
  // Returns HVandLV status map at EOR.
  // If the end-of-run has been caused by TOF self,
  // the second-last value of HVandLV status map
  // will be taken into account, i.e. the value immediately before
  // the change that caused EOR.
  // This last condition is true
  // if the time interval between the last map value and the EOR
  // is less than 60s.
  // If the run ended correctly, last map value will be take into account.
  // If nothing changed during the run, the SOR map will be take into account.
  //

  AliTOFDCSmaps * lvANDhvMap = 0;

  if (fNumberOfHVandLVmaps==1) { // nothing changed during the run

    AliInfo(Form("Nothing changed in the TOF channels LV and HV status during the run number %d",fRun));

    lvANDhvMap = fMap[fNumberOfHVandLVmaps-1];

  }
  else {

    if ( (fEndTimeDCSQuery-fMap[fNumberOfHVandLVmaps-1]->GetTime()<=fNSecondsBeforeEOR) ||
	 (fEndTime-fMap[fNumberOfHVandLVmaps-1]->GetTime()<=fNSecondsBeforeEOR) ) {
      lvANDhvMap = (AliTOFDCSmaps*)fMap[fNumberOfHVandLVmaps-2];
      AliInfo(Form("Probably, TOF caused the EOR (EOR-t(last map))<%d).For run number %d the second-last HVandLV map will be take into account.",fNSecondsBeforeEOR,fRun));
    }
    else {
      lvANDhvMap = (AliTOFDCSmaps*)fMap[fNumberOfHVandLVmaps-1];
      AliInfo(Form("The run number %d ended correctly. The last HVandLV map will be take into account.",fRun));
    }

  }

  return lvANDhvMap;

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