ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
/* $Id: AliCaloCalibSignal.cxx $ */

//________________________________________________________________________
//
// A help class for monitoring and calibration tools: MOOD, AMORE etc.,
// It can be created and used a la (ctor):
/*
  //Create the object for making the histograms
  fSignals = new AliCaloCalibSignal( fDetType );
  // AliCaloCalibSignal knows how many modules we have for PHOS or EMCAL
  fNumModules = fSignals->GetModules();
*/
// fed an event:
//  fSignals->ProcessEvent(fCaloRawStream,fRawEventHeaderBase);
// get some info:
//  fSignals->GetXXX..()
// etc.
//________________________________________________________________________
#include <string>
#include <sstream>
#include <fstream>

#include "TProfile.h"
#include "TFile.h"

#include "AliRawReader.h"
#include "AliCaloRawStreamV3.h"

#include "AliCaloConstants.h"
#include "AliCaloBunchInfo.h"
#include "AliCaloFitResults.h"
#include "AliCaloRawAnalyzer.h"
#include "AliCaloRawAnalyzerFactory.h"

//The include file
#include "AliCaloCalibSignal.h"

ClassImp(AliCaloCalibSignal)

using namespace std;

// variables for TTree filling; not sure if they should be static or not
static int fChannelNum = 0; // for regular towers
static int fRefNum = 0; // for LED
static double fAmp = 0;
static double fAvgAmp = 0;
static double fRMS = 0;

// ctor; initialize everything in order to avoid compiler warnings
// put some reasonable defaults
AliCaloCalibSignal::AliCaloCalibSignal(kDetType detectorType) :  
  TObject(),
  fDetType(kNone),
  fColumns(0),
  fRows(0),
  fLEDRefs(0),
  fModules(0),
  fCaloString(),
  fMapping(NULL),
  fFittingAlgorithm(0),  
  fRawAnalyzer(0),
  fRunNumber(-1),
  fStartTime(0),
  fAmpCut(40), // min. 40 ADC counts as default
  fReqFractionAboveAmpCutVal(0.6), // 60% in a strip, per default
  fReqFractionAboveAmp(kTRUE),
  fAmpCutLEDRef(100), // min. 100 ADC counts as default
  fReqLEDRefAboveAmpCutVal(kTRUE),
  fHour(0),
  fLatestHour(0),
  fUseAverage(kTRUE),
  fSecInAverage(1800), 
  fDownscale(10), 
  fNEvents(0),
  fNAcceptedEvents(0),
  fTreeAmpVsTime(NULL),
  fTreeAvgAmpVsTime(NULL),
  fTreeLEDAmpVsTime(NULL),
  fTreeLEDAvgAmpVsTime(NULL)
{
  //Default constructor. First we set the detector-type related constants.
  if (detectorType == kPhos) {
    fColumns = fgkPhosCols;
    fRows = fgkPhosRows;
    fLEDRefs = fgkPhosLEDRefs;
    fModules = fgkPhosModules;
    fCaloString = "PHOS";
  } 
  else {
    //We'll just trust the enum to keep everything in line, so that if detectorType
    //isn't kPhos then it is kEmCal. Note, however, that this is not necessarily the
    //case, if someone intentionally gives another number
    fColumns = AliEMCALGeoParams::fgkEMCALCols;
    fRows = AliEMCALGeoParams::fgkEMCALRows;
    fLEDRefs = AliEMCALGeoParams::fgkEMCALLEDRefs;
    fModules = AliEMCALGeoParams::fgkEMCALModules;
    fCaloString = "EMCAL";
  }

  fDetType = detectorType;
  SetFittingAlgorithm(Algo::kStandard);
  ResetInfo(); // trees and counters
} 

// dtor
//_____________________________________________________________________
AliCaloCalibSignal::~AliCaloCalibSignal()
{
  DeleteTrees();
}

//_____________________________________________________________________
void AliCaloCalibSignal::DeleteTrees()
{
  // delete what was created in the ctor (TTrees)
  if (fTreeAmpVsTime) delete fTreeAmpVsTime;
  if (fTreeAvgAmpVsTime) delete fTreeAvgAmpVsTime;
  if (fTreeLEDAmpVsTime) delete fTreeLEDAmpVsTime;
  if (fTreeLEDAvgAmpVsTime) delete fTreeLEDAvgAmpVsTime;
  // and reset pointers
  fTreeAmpVsTime = NULL;
  fTreeAvgAmpVsTime = NULL;
  fTreeLEDAmpVsTime = NULL;
  fTreeLEDAvgAmpVsTime = NULL;

  return;
}

// copy ctor
//_____________________________________________________________________
//AliCaloCalibSignal::AliCaloCalibSignal(const AliCaloCalibSignal &sig) :
//  TObject(sig),
//  fDetType(sig.GetDetectorType()),
//  fColumns(sig.GetColumns()),
//  fRows(sig.GetRows()),
//  fLEDRefs(sig.GetLEDRefs()),
//  fModules(sig.GetModules()),
//  fCaloString(sig.GetCaloString()),
//  fMapping(), //! note that we are not copying the map info
//  fRunNumber(sig.GetRunNumber()),
//  fStartTime(sig.GetStartTime()),
//  fAmpCut(sig.GetAmpCut()),
//  fReqFractionAboveAmpCutVal(sig.GetReqFractionAboveAmpCutVal()),
//  fReqFractionAboveAmp(sig.GetReqFractionAboveAmp()),
//  fAmpCutLEDRef(sig.GetAmpCutLEDRef()),
//  fReqLEDRefAboveAmpCutVal(sig.GetReqLEDRefAboveAmpCutVal()),
//  fHour(sig.GetHour()),
//  fLatestHour(sig.GetLatestHour()),
//  fUseAverage(sig.GetUseAverage()),
//  fSecInAverage(sig.GetSecInAverage()),
//  fDownscale(sig.GetDownscale()),
//  fNEvents(sig.GetNEvents()),
//  fNAcceptedEvents(sig.GetNAcceptedEvents()),
//  fTreeAmpVsTime(),
//  fTreeAvgAmpVsTime(),
//  fTreeLEDAmpVsTime(),
//  fTreeLEDAvgAmpVsTime()
//{
//  // also the TTree contents
//  AddInfo(&sig);
//  for (Int_t i = 0; i<fgkMaxTowers; i++) {
//      fNHighGain[i] = sig.fNHighGain[i];
//      fNLowGain[i]  = sig.fNLowGain[i]; 
//  }
//  for (Int_t i = 0; i<(2*fgkMaxRefs); i++) {
//    fNRef[i] = sig.fNRef[i]; 
//  }
//  
//  
//}
//
// assignment operator; use copy ctor to make life easy..
//_____________________________________________________________________
//AliCaloCalibSignal& AliCaloCalibSignal::operator = (const AliCaloCalibSignal &source)
//{
//  // assignment operator; use copy ctor
//  if (&source == this) return *this;
//
//  new (this) AliCaloCalibSignal(source);
//  return *this;
//}

//_____________________________________________________________________
void AliCaloCalibSignal::CreateTrees()
{
  // initialize trees
  // first, regular version
  fTreeAmpVsTime = new TTree("fTreeAmpVsTime","Amplitude vs. Time Tree Variables");

  fTreeAmpVsTime->Branch("fChannelNum", &fChannelNum, "fChannelNum/I");
  fTreeAmpVsTime->Branch("fHour", &fHour, "fHour/D");
  fTreeAmpVsTime->Branch("fAmp", &fAmp, "fAmp/D");

  // then, average version
  fTreeAvgAmpVsTime = new TTree("fTreeAvgAmpVsTime","Average Amplitude vs. Time Tree Variables");

  fTreeAvgAmpVsTime->Branch("fChannelNum", &fChannelNum, "fChannelNum/I");
  fTreeAvgAmpVsTime->Branch("fHour", &fHour, "fHour/D");
  fTreeAvgAmpVsTime->Branch("fAvgAmp", &fAvgAmp, "fAvgAmp/D");
  fTreeAvgAmpVsTime->Branch("fRMS", &fRMS, "fRMS/D");

  // then same for LED..
  fTreeLEDAmpVsTime = new TTree("fTreeLEDAmpVsTime","LED Amplitude vs. Time Tree Variables");
  fTreeLEDAmpVsTime->Branch("fRefNum", &fRefNum, "fRefNum/I");
  fTreeLEDAmpVsTime->Branch("fHour", &fHour, "fHour/D");
  fTreeLEDAmpVsTime->Branch("fAmp", &fAmp, "fAmp/D");

  fTreeLEDAvgAmpVsTime = new TTree("fTreeLEDAvgAmpVsTime","Average LED Amplitude vs. Time Tree Variables");
  fTreeLEDAvgAmpVsTime->Branch("fRefNum", &fRefNum, "fRefNum/I");
  fTreeLEDAvgAmpVsTime->Branch("fHour", &fHour, "fHour/D");
  fTreeLEDAvgAmpVsTime->Branch("fAvgAmp", &fAvgAmp, "fAvgAmp/D");
  fTreeLEDAvgAmpVsTime->Branch("fRMS", &fRMS, "fRMS/D");

  return;
}

//_____________________________________________________________________
void AliCaloCalibSignal::ResetInfo()
{ // reset trees and counters
  Zero(); // set all counters to 0
  DeleteTrees(); // delete previous stuff
  CreateTrees(); // and create some new ones
  return;
}

//_____________________________________________________________________
void AliCaloCalibSignal::Zero()
{
  // set all counters to 0; not cuts etc. though
  fHour = 0;
  fLatestHour = 0;
  fNEvents = 0;
  fNAcceptedEvents = 0;

  // Set the number of points for each tower: Amp vs. Time
  memset(fNHighGain, 0, sizeof(fNHighGain));
  memset(fNLowGain, 0, sizeof(fNLowGain));
  // and LED reference
  memset(fNRef, 0, sizeof(fNRef));

  return;
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::CheckFractionAboveAmp(const int *iAmpVal, 
						 int resultArray[]) const
{ // check fraction of towers, per column, that are above amplitude cut
  Bool_t returnCode = false;
    
  int iTowerNum = 0;
  double fraction = 0;
  for (int i = 0; i<fModules; i++) {
    for (int j = 0; j<fColumns; j++) {
      int nAbove = 0;
      for (int k = 0; k<fRows; k++) {
	iTowerNum = GetTowerNum(i,j,k);
	if (iAmpVal[iTowerNum] > fAmpCut) { 
	  nAbove++;
	}
      }
      resultArray[i*fColumns +j] = 0; // init. to denied
      if (nAbove > 0) {
	fraction = (1.0*nAbove) / fRows;
	/*
	printf("DS mod %d col %d nAbove %d fraction %3.2f\n",
	       i, j, nAbove, fraction);
	*/
	if (fraction > fReqFractionAboveAmpCutVal) {
	  resultArray[i*fColumns + j] = nAbove;
	  returnCode = true;
	}  
      }
    }
  } // modules loop
  
  return returnCode;
}


//_____________________________________________________________________
Bool_t AliCaloCalibSignal::CheckLEDRefAboveAmp(const int *iAmpVal, 
					       int resultArray[]) const
{ // check which LEDRef/Mon strips are above amplitude cut
  Bool_t returnCode = false;
    
  int iRefNum = 0;
  int gain = 1; // look at high gain; this should be rather saturated usually..
  for (int i = 0; i<fModules; i++) {
    for (int j = 0; j<fLEDRefs; j++) {
      iRefNum = GetRefNum(i, j, gain);
      if (iAmpVal[iRefNum] > fAmpCutLEDRef) { 
	resultArray[i*fLEDRefs +j] = 1; // enough signal
	returnCode = true;
      }
      else {
	resultArray[i*fLEDRefs +j] = 0; // not enough signal
      }
      
      /*
      printf("DS mod %d LEDRef %d ampVal %d\n",
	     i, j, iAmpVal[iRefNum]);
      */
    } // LEDRefs
  } // modules loop
  
  return returnCode;
}

// Parameter/cut handling
//_____________________________________________________________________
void AliCaloCalibSignal::SetParametersFromFile(const char *parameterFile)
{ // set parameters from file
  static const string delimitor("::");
	
  // open, check input file
  ifstream in( parameterFile );
  if( !in ) {
    printf("in AliCaloCalibSignal::SetParametersFromFile - Using default/run_time parameters.\n");
    return;
  } 

  // Note: this method is a bit more complicated than it really has to be
  // - allowing for multiple entries per line, arbitrary order of the
  // different variables etc. But I wanted to try and do this in as
  // correct a C++ way as I could (as an exercise).

  // read in
  char readline[1024];
  while ((in.rdstate() & ios::failbit) == 0 ) {
    
    // Read into the raw char array and then construct a string
    // to do the searching
    in.getline(readline, 1024);
    istringstream s(readline);		
		
    while ( ( s.rdstate() & ios::failbit ) == 0 ) {
			
      string keyValue; 
      s >> keyValue;
      
      // check stream status
      if( ( s.rdstate() & ios::failbit ) == ios::failbit ) break;
			
      // skip rest of line if comments found
      if( keyValue.substr( 0, 2 ) == "//" ) break;
			
      // look for "::" in keyValue pair
      size_t position = keyValue.find( delimitor );
      if( position == string::npos ) {
	printf("wrong format for key::value pair: %s\n", keyValue.c_str());
      }
				
      // split keyValue pair
      string key( keyValue.substr( 0, position ) );
      string value( keyValue.substr( position+delimitor.size(), 
				      keyValue.size()-delimitor.size() ) );
			
      // check value does not contain a new delimitor
      if( value.find( delimitor ) != string::npos ) {
	printf("wrong format for key::value pair: %s\n", keyValue.c_str());
      }
      
      // debug: check key value pair
      // printf("AliCaloCalibSignal::SetParametersFromFile - key %s value %s\n", key.c_str(), value.c_str());

      // if the key matches with something we expect, we assign the new value
      if ( (key == "fAmpCut") || (key == "fReqFractionAboveAmpCutVal") ||
	   (key == "fAmpCutLEDRef") || (key == "fSecInAverage") || 
	   (key == "fFittingAlgorithm") || (key == "fDownscale") ) {
	istringstream iss(value);
	printf("AliCaloCalibSignal::SetParametersFromFile - key %s value %s\n", key.c_str(), value.c_str());

	if (key == "fAmpCut") { 
	  iss >> fAmpCut; 
	}
	else if (key == "fReqFractionAboveAmpCutVal") { 
	  iss >> fReqFractionAboveAmpCutVal; 
	}
	else if (key == "fAmpCutLEDRef") { 
	  iss >> fAmpCutLEDRef; 
	}
	else if (key == "fSecInAverage") { 
	  iss >> fSecInAverage; 
	}
	else if (key == "fFittingAlgorithm") { 
	  iss >> fFittingAlgorithm;
	  SetFittingAlgorithm( fFittingAlgorithm );
	}
	else if (key == "fDownscale") { 
	  iss >> fDownscale; 
	}
      } // some match found/expected

    }		
  }

  in.close();
  return;	
}

//_____________________________________________________________________
void AliCaloCalibSignal::WriteParametersToFile(const char *parameterFile)
{ // write parameters to file
  static const string delimitor("::");
  ofstream out( parameterFile );
  out << "// " << parameterFile << endl;
  out << "fAmpCut" << "::" << fAmpCut << endl;
  out << "fReqFractionAboveAmpCutVal" << "::" << fReqFractionAboveAmpCutVal << endl;
  out << "fAmpCutLEDRef" << "::" << fAmpCutLEDRef << endl;
  out << "fSecInAverage" << "::" << fSecInAverage << endl;
  out << "fFittingAlgorithm" << "::" << fFittingAlgorithm << endl;
  out << "fDownscale" << "::" << fDownscale << endl;

  out.close();
  return;
}

//_____________________________________________________________________
void AliCaloCalibSignal::SetFittingAlgorithm(Int_t fitAlgo)              
{ // select which fitting algo should be used
  fFittingAlgorithm = fitAlgo;
  delete fRawAnalyzer; // delete doesn't do anything if the pointer is 0x0
  fRawAnalyzer = AliCaloRawAnalyzerFactory::CreateAnalyzer( fitAlgo );
  fRawAnalyzer->SetIsZeroSuppressed(true); // TMP - should use stream->IsZeroSuppressed(), or altro cfg registers later
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::AddInfo(const AliCaloCalibSignal *sig)
{ 
  // note/FIXME: we are not yet adding correctly the info for fN{HighGain,LowGain,Ref} here - but consider this a feature for now (20080905): we'll do Analyze() unless entries were found for a tower in this original object.

  // add info from sig's TTrees to ours..
  TTree *sigAmp = sig->GetTreeAmpVsTime();
  TTree *sigAvgAmp = sig->GetTreeAvgAmpVsTime();

  // we could try some merging via TList or what also as a more elegant approach
  // but I wanted with the stupid/simple and hopefully safe approach of looping
  // over what we want to add..

  // associate variables for sigAmp and sigAvgAmp:
  sigAmp->SetBranchAddress("fChannelNum",&fChannelNum);
  sigAmp->SetBranchAddress("fHour",&fHour);
  sigAmp->SetBranchAddress("fAmp",&fAmp);

  // loop over the trees.. note that since we use the same variables we should not need
  // to do any assignments between the getting and filling
  for (int i=0; i<sigAmp->GetEntries(); i++) {
    sigAmp->GetEntry(i);
    fTreeAmpVsTime->Fill();
  }

  sigAvgAmp->SetBranchAddress("fChannelNum",&fChannelNum);
  sigAvgAmp->SetBranchAddress("fHour",&fHour);
  sigAvgAmp->SetBranchAddress("fAvgAmp",&fAvgAmp);
  sigAvgAmp->SetBranchAddress("fRMS",&fRMS);

  for (int i=0; i<sigAvgAmp->GetEntries(); i++) {
    sigAvgAmp->GetEntry(i);
    fTreeAvgAmpVsTime->Fill();
  }

  // also LED.. 
  TTree *sigLEDAmp = sig->GetTreeLEDAmpVsTime();
  TTree *sigLEDAvgAmp = sig->GetTreeLEDAvgAmpVsTime();

  // associate variables for sigAmp and sigAvgAmp:
  sigLEDAmp->SetBranchAddress("fRefNum",&fRefNum);
  sigLEDAmp->SetBranchAddress("fHour",&fHour);
  sigLEDAmp->SetBranchAddress("fAmp",&fAmp);

  // loop over the trees.. note that since we use the same variables we should not need
  // to do any assignments between the getting and filling
  for (int i=0; i<sigLEDAmp->GetEntries(); i++) {
    sigLEDAmp->GetEntry(i);
    fTreeLEDAmpVsTime->Fill();
  }

  sigLEDAvgAmp->SetBranchAddress("fRefNum",&fRefNum);
  sigLEDAvgAmp->SetBranchAddress("fHour",&fHour);
  sigLEDAvgAmp->SetBranchAddress("fAvgAmp",&fAvgAmp);
  sigLEDAvgAmp->SetBranchAddress("fRMS",&fRMS);

  for (int i=0; i<sigLEDAvgAmp->GetEntries(); i++) {
    sigLEDAvgAmp->GetEntry(i);
    fTreeLEDAvgAmpVsTime->Fill();
  }

  // We should also copy other pieces of info: counters and parameters 
  // (not number of columns and rows etc which should be the same)
  // note that I just assign them here rather than Add them, but we
  // normally just Add (e.g. in Preprocessor) one object so this should be fine.
  fRunNumber = sig->GetRunNumber();
  fStartTime = sig->GetStartTime();
  fAmpCut = sig->GetAmpCut();
  fReqFractionAboveAmpCutVal = sig->GetReqFractionAboveAmpCutVal();
  fReqFractionAboveAmp = sig->GetReqFractionAboveAmp();
  fAmpCutLEDRef = sig->GetAmpCutLEDRef();
  fReqLEDRefAboveAmpCutVal = sig->GetReqLEDRefAboveAmpCutVal();
  fHour = sig->GetHour();
  fLatestHour = sig->GetLatestHour();
  fUseAverage = sig->GetUseAverage();
  fSecInAverage = sig->GetSecInAverage();
  fDownscale = sig->GetDownscale();
  fNEvents = sig->GetNEvents();
  fNAcceptedEvents = sig->GetNAcceptedEvents();

  return kTRUE;//We hopefully succesfully added info from the supplied object
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::ProcessEvent(AliRawReader *rawReader)
{
  // if fMapping is NULL the rawstream will crate its own mapping
  AliCaloRawStreamV3 rawStream(rawReader, fCaloString, (AliAltroMapping**)fMapping);  
  if (fDetType == kEmCal) {
    rawReader->Select("EMCAL", 0, AliEMCALGeoParams::fgkLastAltroDDL) ; //select EMCAL DDL range 
  }

  return ProcessEvent( &rawStream, rawReader->GetTimestamp() );
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::ProcessEvent(AliCaloRawStreamV3 *in, UInt_t Timestamp)
{ 
  // Method to process=analyze one event in the data stream
  if (!in) return kFALSE; //Return right away if there's a null pointer
  
  fNEvents++; // one more event

  if ( (fNEvents%fDownscale)!=0 ) return kFALSE; // mechanism to skip some of the input events, if we want

  // use maximum numbers to set array sizes
  int iAmpValHighGain[fgkMaxTowers];
  int iAmpValLowGain[fgkMaxTowers];
  memset(iAmpValHighGain, 0, sizeof(iAmpValHighGain));
  memset(iAmpValLowGain, 0, sizeof(iAmpValLowGain));

  // also for LED reference
  int iLEDAmpVal[fgkMaxRefs * 2]; // factor 2 is for the two gain values
  memset(iLEDAmpVal, 0, sizeof(iLEDAmpVal));

  int gain = 0; // high or low gain
  
  // Number of Low and High gain, and LED Ref, channels for this event:
  int nLowChan = 0; 
  int nHighChan = 0; 
  int nLEDRefChan = 0;

  int iTowerNum = 0; // array index for regular towers
  int iRefNum = 0; // array index for LED references

  // loop first to get the fraction of channels with amplitudes above cut

  while (in->NextDDL()) {
    while (in->NextChannel()) {

      vector<AliCaloBunchInfo> bunchlist; 
      while (in->NextBunch()) {
	bunchlist.push_back( AliCaloBunchInfo(in->GetStartTimeBin(), in->GetBunchLength(), in->GetSignals() ) );
      } 
      if (bunchlist.size() == 0) continue;

      gain = -1; // init to not valid value
      //If we're here then we're done with this tower
      if ( in->IsLowGain() ) {
	gain = 0;
      }
      else if ( in->IsHighGain() ) {
	gain = 1;
      }
      else if ( in->IsLEDMonData() ) {
	gain = in->GetRow(); // gain coded in (in RCU/Altro mapping) as Row info for LED refs..
      }
      else { continue; } // don't try to fit TRU..

      // it should be enough to check the SuperModule info for each DDL really, but let's keep it here for now
      int arrayPos = in->GetModule(); //The modules are numbered starting from 0
      //Debug
      if (arrayPos < 0 || arrayPos >= fModules) {
	printf("AliCaloCalibSignal::ProcessEvent = Oh no: arrayPos = %i.\n", arrayPos); 
	return kFALSE;
      }

      AliCaloFitResults res =  fRawAnalyzer->Evaluate( bunchlist, in->GetAltroCFG1(), in->GetAltroCFG2());  
      if ( in->IsHighGain() || in->IsLowGain() ) { // regular tower
	// get tower number for AmpVal array
	iTowerNum = GetTowerNum(arrayPos, in->GetColumn(), in->GetRow()); 

	if (gain == 0) {
	  // fill amplitude into the array	   
	  iAmpValLowGain[iTowerNum]  = (int) res.GetAmp();
	  nLowChan++;
	} 
	else if (gain==1) {//fill the high gain ones
	  // fill amplitude into the array
	  iAmpValHighGain[iTowerNum] = (int) res.GetAmp();
	  nHighChan++;
	}//end if gain
      } // regular tower
      else if ( in->IsLEDMonData() ) { // LED ref.; 
	// strip # is coded is 'column' in the channel maps 
	iRefNum = GetRefNum(arrayPos, in->GetColumn(), gain); 
	iLEDAmpVal[iRefNum] = (int) res.GetAmp();
	nLEDRefChan++;
      } // end of LED ref

    } // end while over channel 
   
  }//end while over DDL's, of input stream
  
  in->Reset(); // just in case the next customer forgets to check if the stream was reset..

  // now check if it was an LED event, using the LED Reference info per strip

  // by default all columns are accepted (init check to > 0)
  int checkResultArray[AliEMCALGeoParams::fgkEMCALModules * AliEMCALGeoParams::fgkEMCALCols];
  for (int ia=0; ia<(AliEMCALGeoParams::fgkEMCALModules * AliEMCALGeoParams::fgkEMCALCols); ia++) { 
    checkResultArray[ia] = 1; 
  }
  if (fReqFractionAboveAmp) {
    bool ok = false;
    if (nHighChan > 0) { 
      ok = CheckFractionAboveAmp(iAmpValHighGain, checkResultArray); 
    }
    if (!ok) return false; // skip event
  }

  // by default all columns are accepted (init check to > 0)
  int checkResultArrayLEDRef[AliEMCALGeoParams::fgkEMCALModules * AliEMCALGeoParams::fgkEMCALLEDRefs];
  for (int ia=0; ia<(AliEMCALGeoParams::fgkEMCALModules * AliEMCALGeoParams::fgkEMCALLEDRefs); ia++) { 
    checkResultArrayLEDRef[ia] = 1; 
  }
  if (fReqLEDRefAboveAmpCutVal) {
    bool ok = false;
    if (nLEDRefChan > 0) { 
      ok = CheckLEDRefAboveAmp(iLEDAmpVal, checkResultArrayLEDRef); 
    }
    if (!ok) return false; // skip event
  }

  fNAcceptedEvents++; // one more event accepted

  if (fStartTime == 0) { // if start-timestamp wasn't set,we'll pick it up from the first event we encounter
    fStartTime = Timestamp;
  }

  fHour = (Timestamp - fStartTime)/(double)fgkNumSecInHr;
  if (fLatestHour < fHour) {
    fLatestHour = fHour; 
  }
  
  // it is a led event, now fill TTree
  // We also do the activity check for LEDRefs/Strips, but need to translate between column
  // and strip indices for that; based on these relations: 
  // iStrip = AliEMCALGeoParams::GetStripModule(iSM, iCol);
  // iStrip = (iSM%2==0) ? iCol/2 : AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - iCol/2;
  // which leads to
  // iColFirst = (iSM%2==0) ? iStrip*2 : (AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - iStrip)*2;

  for(int i=0; i<fModules; i++){
    for(int j=0; j<fColumns; j++) {
      int iStrip = (i%2==0) ? j/2 : AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - j/2;
      if (checkResultArray[i*fColumns + j]>0  && checkResultArrayLEDRef[i*fLEDRefs + iStrip]>0) { // column passed check 
      for(int k=0; k<fRows; k++){
	
	iTowerNum = GetTowerNum(i, j, k); 

	if(iAmpValHighGain[iTowerNum]) {
	  fAmp = iAmpValHighGain[iTowerNum];
	  fChannelNum = GetChannelNum(i,j,k,1);
	  fTreeAmpVsTime->Fill();//fChannelNum,fHour,AmpValHighGain[iTowerNum]);
	  fNHighGain[iTowerNum]++;
	}
	if(iAmpValLowGain[iTowerNum]) {
	  fAmp = iAmpValLowGain[iTowerNum];
	  fChannelNum = GetChannelNum(i,j,k,0);
	  fTreeAmpVsTime->Fill();//fChannelNum,fHour,AmpValLowGain[iTowerNum]);
	  fNLowGain[iTowerNum]++;
	}
      } // rows
      } // column passed check, and LED Ref for strip passed check (if any)
    } // columns

    // also LED refs
    for(int j=0; j<fLEDRefs; j++){
      int iColFirst = (i%2==0) ? j*2 : (AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - j)*2; //CHECKME!!!
      if ( ((checkResultArray[i*fColumns + iColFirst]>0) || (checkResultArray[i*fColumns + iColFirst + 1]>0)) && // at least one column in strip passed check 
	   (checkResultArrayLEDRef[i*fLEDRefs + j]>0) ) { // and LED Ref passed checks
	for (gain=0; gain<2; gain++) {
	  fRefNum = GetRefNum(i, j, gain); 
	  if (iLEDAmpVal[fRefNum]) {
	    fAmp = iLEDAmpVal[fRefNum];
	    fTreeLEDAmpVsTime->Fill();//fRefNum,fHour,fAmp);
	    fNRef[fRefNum]++;
	  }
	} // gain
      } // at least one column in strip passed check, and LED Ref passed check (if any) 
    }

  } // modules
  
  return kTRUE;
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::Save(TString fileName)
{
  //Saves all the TTrees to the designated file
  
  TFile destFile(fileName, "recreate");
  
  if (destFile.IsZombie()) {
    return kFALSE;
  }
  
  destFile.cd();

  // save the trees
  fTreeAmpVsTime->Write();
  fTreeLEDAmpVsTime->Write();
  if (fUseAverage) { 
    Analyze(); // get the latest and greatest averages
    fTreeAvgAmpVsTime->Write();
    fTreeLEDAvgAmpVsTime->Write();
  }

  destFile.Close();
  
  return kTRUE;
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::Analyze()
{
  // Fill the tree holding the average values
  if (!fUseAverage) { return kFALSE; }

  // Reset the average TTree if Analyze has already been called earlier,
  // meaning that the TTree could have been partially filled
  if (fTreeAvgAmpVsTime->GetEntries() > 0) {
    fTreeAvgAmpVsTime->Reset();
  }

  //0: setup variables for the TProfile plots that we'll use to do the averages
  int numProfBins = 0;
  double timeMin = 0;
  double timeMax = 0;
  if (fSecInAverage > 0) {
    numProfBins = (int)( (fLatestHour*fgkNumSecInHr)/fSecInAverage + 1 ); // round-off
  }
  numProfBins += 2; // add extra buffer : first and last
  double binSize = 1.0*fSecInAverage / fgkNumSecInHr;
  timeMin = - binSize;
  timeMax = timeMin + numProfBins*binSize;

  //1: set up TProfiles for the towers that had data
  TProfile * profile[fgkMaxTowers*2]; // *2 is since we include both high and low gains
  memset(profile, 0, sizeof(profile));
  const Int_t buffersize = 200;
  char name[buffersize]; // for profile id and title
  int iTowerNum = 0;

  for (int i = 0; i<fModules; i++) {
    for (int ic=0; ic<fColumns; ic++){
      for (int ir=0; ir<fRows; ir++) {

	iTowerNum = GetTowerNum(i, ic, ir);
	// high gain
	if (fNHighGain[iTowerNum] > 0) {
	  fChannelNum = GetChannelNum(i, ic, ir, 1); 
	  snprintf(name,buffersize,"profileChan%d", fChannelNum);
	  profile[fChannelNum] = new TProfile(name, name, numProfBins, timeMin, timeMax, "s");
	}

	// same for low gain
	if (fNLowGain[iTowerNum] > 0) {
	  fChannelNum = GetChannelNum(i, ic, ir, 0); 
	  snprintf(name,buffersize,"profileChan%d", fChannelNum);
	  profile[fChannelNum] = new TProfile(name, name, numProfBins, timeMin, timeMax, "s");
	}

      } // rows
    } // columns
  } // modules

  //2: fill profiles by looping over tree
  // Set addresses for tree-readback also
  fTreeAmpVsTime->SetBranchAddress("fChannelNum", &fChannelNum);
  fTreeAmpVsTime->SetBranchAddress("fHour", &fHour);
  fTreeAmpVsTime->SetBranchAddress("fAmp", &fAmp);

  for (int ient=0; ient<fTreeAmpVsTime->GetEntries(); ient++) {
    fTreeAmpVsTime->GetEntry(ient);
    if (profile[fChannelNum]) { 
      // profile should always have been created above, for active channels
      profile[fChannelNum]->Fill(fHour, fAmp);
    }
  }

  // re-associating the branch addresses here seems to be needed for OK 'average' storage	    
  fTreeAvgAmpVsTime->SetBranchAddress("fChannelNum", &fChannelNum);
  fTreeAvgAmpVsTime->SetBranchAddress("fHour", &fHour);
  fTreeAvgAmpVsTime->SetBranchAddress("fAvgAmp", &fAvgAmp);
  fTreeAvgAmpVsTime->SetBranchAddress("fRMS", &fRMS);

  //3: fill avg tree by looping over the profiles
  for (fChannelNum = 0; fChannelNum<(fgkMaxTowers*2); fChannelNum++) {
    if (profile[fChannelNum]) { // profile was created
      if (profile[fChannelNum]->GetEntries() > 0) { // profile had some entries
	for(int it=0; it<numProfBins; it++) {
	  if (profile[fChannelNum]->GetBinEntries(it+1) > 0) {
	    fAvgAmp = profile[fChannelNum]->GetBinContent(it+1);
	    fHour = profile[fChannelNum]->GetBinCenter(it+1);
	    fRMS = profile[fChannelNum]->GetBinError(it+1);
	    fTreeAvgAmpVsTime->Fill();
	  } // some entries for this bin
	} // loop over bins
      } // some entries for this profile
    } // profile exists  
  } // loop over all possible channels


  // and finally, go through same exercise for LED also.. 

  //1: set up TProfiles for the towers that had data
  TProfile * profileLED[fgkMaxRefs*2]; // *2 is since we include both high and low gains
  memset(profileLED, 0, sizeof(profileLED));

  for (int i = 0; i<fModules; i++) {
    for(int j=0; j<fLEDRefs; j++){
      for (int gain=0; gain<2; gain++) {
	fRefNum = GetRefNum(i, j, gain);
	if (fNRef[fRefNum] > 0) { 
	  snprintf(name, buffersize, "profileLEDRef%d", fRefNum);
	  profileLED[fRefNum] = new TProfile(name, name, numProfBins, timeMin, timeMax, "s");
	} 
      }// gain
    } 
  } // modules

  //2: fill profiles by looping over tree
  // Set addresses for tree-readback also
  fTreeLEDAmpVsTime->SetBranchAddress("fRefNum", &fRefNum);
  fTreeLEDAmpVsTime->SetBranchAddress("fHour", &fHour);
  fTreeLEDAmpVsTime->SetBranchAddress("fAmp", &fAmp);

  for (int ient=0; ient<fTreeLEDAmpVsTime->GetEntries(); ient++) {
    fTreeLEDAmpVsTime->GetEntry(ient);
    if (profileLED[fRefNum]) { 
      // profile should always have been created above, for active channels
      profileLED[fRefNum]->Fill(fHour, fAmp);
    }
  }

  // re-associating the branch addresses here seems to be needed for OK 'average' storage	    
  fTreeLEDAvgAmpVsTime->SetBranchAddress("fRefNum", &fRefNum);
  fTreeLEDAvgAmpVsTime->SetBranchAddress("fHour", &fHour);
  fTreeLEDAvgAmpVsTime->SetBranchAddress("fAvgAmp", &fAvgAmp);
  fTreeLEDAvgAmpVsTime->SetBranchAddress("fRMS", &fRMS);

  //3: fill avg tree by looping over the profiles
  for (fRefNum = 0; fRefNum<(fgkMaxRefs*2); fRefNum++) {
    if (profileLED[fRefNum]) { // profile was created
      if (profileLED[fRefNum]->GetEntries() > 0) { // profile had some entries
	for(int it=0; it<numProfBins; it++) {
	  if (profileLED[fRefNum]->GetBinEntries(it+1) > 0) {
	    fAvgAmp = profileLED[fRefNum]->GetBinContent(it+1);
	    fHour = profileLED[fRefNum]->GetBinCenter(it+1);
	    fRMS = profileLED[fRefNum]->GetBinError(it+1);
	    fTreeLEDAvgAmpVsTime->Fill();
	  } // some entries for this bin
	} // loop over bins
      } // some entries for this profile
    } // profile exists  
  } // loop over all possible channels

  // OK, we're done..

  return kTRUE;
}

//_____________________________________________________________________
Bool_t AliCaloCalibSignal::DecodeChannelNum(const int chanId, 
					    int *imod, int *icol, int *irow, int *igain) const  
{ // return the module, column, row, and gain for a given channel number
  *igain = chanId/(fModules*fColumns*fRows);
  *imod = (chanId/(fColumns*fRows)) % fModules;
  *icol = (chanId/fRows) % fColumns;
  *irow = chanId % fRows;
  return kTRUE;
} 

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