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

/* History of cvs commits:
 *
 * $Log: AliPHOSDigitizer.cxx,v $
 * Revision 1.104  2007/12/18 09:08:18  hristov
 * Splitting of the QA maker into simulation and reconstruction dependent parts (Yves)
 *
 * Revision 1.103  2007/11/07 11:25:06  schutz
 * Comment out the QA checking before starting digitization
 *
 * Revision 1.102  2007/10/19 18:04:29  schutz
 * The standalone QA data maker is called from AliSimulation and AliReconstruction outside the event loop; i.e. re-reading the data. The QA data making in the event loop has been commented out.
 *
 * Revision 1.101  2007/10/14 21:08:10  schutz
 * Introduced the checking of QA results from previous step before entering the event loop
 *
 * Revision 1.100  2007/10/10 09:05:10  schutz
 * Changing name QualAss to QA
 *
 * Revision 1.99  2007/09/30 17:08:20  schutz
 * Introducing the notion of QA data acquisition cycle (needed by online)
 *
 * Revision 1.98  2007/09/26 14:22:17  cvetan
 * Important changes to the reconstructor classes. Complete elimination of the run-loaders, which are now steered only from AliReconstruction. Removal of the corresponding Reconstruct() and FillESD() methods.
 *
 * Revision 1.97  2007/08/07 14:12:03  kharlov
 * Quality assurance added (Yves Schutz)
 *
 * Revision 1.96  2007/04/28 10:43:36  policheh
 * Dead channels simulation: digit energy sets to 0.
 *
 * Revision 1.95  2007/04/10 07:20:52  kharlov
 * Decalibration should use the same CDB as calibration in AliPHOSClusterizerv1
 *
 * Revision 1.94  2007/02/01 10:34:47  hristov
 * Removing warnings on Solaris x86
 *
 * Revision 1.93  2006/10/17 13:17:01  kharlov
 * Replace AliInfo by AliDebug
 *
 * Revision 1.92  2006/08/28 10:01:56  kharlov
 * Effective C++ warnings fixed (Timur Pocheptsov)
 *
 * Revision 1.91  2006/04/29 20:25:30  hristov
 * Decalibration is implemented (Yu.Kharlov)
 *
 * Revision 1.90  2006/04/22 10:30:17  hristov
 * Add fEnergy to AliPHOSDigit and operate with EMC amplitude in energy units (Yu.Kharlov)
 *
 * Revision 1.89  2006/04/11 15:22:59  hristov
 * run number in query set to -1: forces AliCDBManager to use its run number (A.Colla)
 *
 * Revision 1.88  2006/03/13 14:05:43  kharlov
 * Calibration objects for EMC and CPV
 *
 * Revision 1.87  2005/08/24 15:33:49  kharlov
 * Calibration data for raw digits
 *
 * Revision 1.86  2005/07/12 20:07:35  hristov
 * Changes needed to run simulation and reconstrruction in the same AliRoot session
 *
 * Revision 1.85  2005/05/28 14:19:04  schutz
 * Compilation warnings fixed by T.P.
 *
 */

//_________________________________________________________________________
//*-- Author :  Dmitri Peressounko (SUBATECH & Kurchatov Institute) 
//////////////////////////////////////////////////////////////////////////////
// This class performs digitization of Summable digits (in the PHOS case it is just
// the sum of contributions from all primary particles into a given cell). 
// In addition it performs mixing of summable digits from different events.
// The name of the class is also the title of the branch that will contain 
// the created SDigits
// The title of the class is the name of the file that contains the hits from
// which the SDigits are created
//
// For each event two branches are created in TreeD:
//   "PHOS" - list of digits
//   "AliPHOSDigitizer" - AliPHOSDigitizer with all parameters used in digitization
//
// Note, that one can set a title for new digits branch, and repeat digitization with
// another set of parameters.
//
// Use case:
// root[0] AliPHOSDigitizer * d = new AliPHOSDigitizer() ;
// root[1] d->Digitize()             
// Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
//                       //Digitizes SDigitis in all events found in file galice.root 
//
// root[2] AliPHOSDigitizer * d1 = new AliPHOSDigitizer("galice1.root") ;  
//                       // Will read sdigits from galice1.root
// root[3] d1->MixWith("galice2.root")       
// Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
//                       // Reads another set of sdigits from galice2.root
// root[3] d1->MixWith("galice3.root")       
//                       // Reads another set of sdigits from galice3.root
// root[4] d->Digitize("deb timing")    
//                       // Reads SDigits from files galice1.root, galice2.root ....
//                       // mixes them and stores produced Digits in file galice1.root          
//                       // deb - prints number of produced digits
//                       // deb all - prints list of produced digits
//                       // timing  - prints time used for digitization
//

// --- ROOT system ---
#include "TTree.h"
#include "TSystem.h"
#include "TBenchmark.h"
#include "TRandom.h"
#include "TMath.h"

// --- Standard library ---

// --- AliRoot header files ---
#include <TGeoManager.h>                                                                                                                   
#include "AliLog.h"
#include "AliDigitizationInput.h"
#include "AliPHOSDigit.h"
#include "AliPHOSDigitizer.h"
#include "AliPHOSGeometry.h"
#include "AliPHOSTick.h"
#include "AliPHOSSimParam.h"
#include "AliPHOSCalibData.h"
#include "AliRunLoader.h"
#include "AliPHOSLoader.h"
#include "AliPHOSPulseGenerator.h"

ClassImp(AliPHOSDigitizer)


//____________________________________________________________________________ 
AliPHOSDigitizer::AliPHOSDigitizer() :
  AliDigitizer("",""),
  fDefaultInit(kTRUE),
  fDigitsInRun(0),
  fInit(kFALSE),
  fInput(0),
  fInputFileNames(0x0),
  fEventNames(0x0),
  fEmcCrystals(0),
  fEventFolderName(""),
  fFirstEvent(0),
  fLastEvent(0), 
  fcdb(0x0),
  fEventCounter(0),
  fPulse(0),
  fADCValuesLG(0),
  fADCValuesHG(0)
{
  // ctor
  InitParameters() ; 
  fDigInput = 0 ;                     // We work in the standalong mode
}

//____________________________________________________________________________ 
AliPHOSDigitizer::AliPHOSDigitizer(TString alirunFileName, 
				   TString eventFolderName):
  AliDigitizer("PHOSDigitizer", alirunFileName), 
  fDefaultInit(kFALSE),
  fDigitsInRun(0),
  fInit(kFALSE),
  fInput(0),
  fInputFileNames(0x0),
  fEventNames(0x0),
  fEmcCrystals(0),
  fEventFolderName(eventFolderName),
  fFirstEvent(0),
  fLastEvent(0), 
  fcdb(0x0),
  fEventCounter(0),
  fPulse(0),
  fADCValuesLG(0),
  fADCValuesHG(0)
{
  // ctor
  InitParameters() ; 
  Init() ;
  fDefaultInit = kFALSE ; 
  fDigInput = 0 ;                     // We work in the standalone mode
  fcdb = new AliPHOSCalibData(-1);
}

//____________________________________________________________________________ 
AliPHOSDigitizer::AliPHOSDigitizer(AliDigitizationInput * rd) :
  AliDigitizer(rd,"PHOSDigitizer"),
  fDefaultInit(kFALSE),
  fDigitsInRun(0),
  fInit(kFALSE),
  fInput(0),
  fInputFileNames(0x0),
  fEventNames(0x0),
  fEmcCrystals(0),
  fEventFolderName(fDigInput->GetInputFolderName(0)),
  fFirstEvent(0),
  fLastEvent(0), 
  fcdb (0x0), 
  fEventCounter(0),
  fPulse(0),
  fADCValuesLG(0),
  fADCValuesHG(0)

{
  // ctor Init() is called by RunDigitizer
  fDigInput = rd ; 
  SetTitle(static_cast<AliStream*>(fDigInput->GetInputStream(0))->GetFileName(0));
  InitParameters() ; 
  fDefaultInit = kFALSE ; 
  fcdb = new AliPHOSCalibData(-1);
}

//____________________________________________________________________________ 
  AliPHOSDigitizer::~AliPHOSDigitizer()
{
  // dtor  
  delete [] fInputFileNames ; 
  delete [] fEventNames ; 

  delete fPulse;
  delete [] fADCValuesLG;
  delete [] fADCValuesHG;

  if(fcdb){ delete fcdb ; fcdb=0;} 

}

//____________________________________________________________________________
void AliPHOSDigitizer::Digitize(Int_t event) 
{ 
  
  // Makes the digitization of the collected summable digits.
  //  It first creates the array of all PHOS modules
  //  filled with noise (different for EMC, and CPV) and
  //  then adds contributions from SDigits. 
  // This design avoids scanning over the list of digits to add 
  // contribution to new SDigits only.

  Bool_t toMakeNoise = kTRUE ; //Do not create noisy digits if merge with real data

  //First stream 
  AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));

  Int_t readEvent = event ; 
  if (fDigInput) 
    readEvent = static_cast<AliStream*>(fDigInput->GetInputStream(0))->GetCurrentEventNumber() ; 
  AliDebug(1,Form("Adding event %d from input stream 0 %s %s", 
		  readEvent, GetTitle(), fEventFolderName.Data())) ; 
  rl->GetEvent(readEvent) ;
  phosLoader->CleanSDigits() ; 
  phosLoader->LoadSDigits("READ") ;

  //Prepare Output
  TClonesArray * digits = phosLoader->Digits() ;
  if( !digits ) {
    phosLoader->MakeDigitsArray() ; 
    digits = phosLoader->Digits() ;
  }
 
  digits->Clear() ;

  //
  const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;
  //Making digits with noise, first EMC
  //Check which PHOS modules are present
  Bool_t isPresent[5] ;
  TString volpath ;
  Int_t nmod=0 ;
  for(Int_t i=0; i<5; i++){
    volpath = "/ALIC_1/PHOS_";
    volpath += i+1;
    if (gGeoManager->CheckPath(volpath.Data())) {
      isPresent[i]=1 ;
      nmod++ ;
    }
    else{
      isPresent[i]=0 ;
    }
  }

  Int_t nEMC = nmod*geom->GetNPhi()*geom->GetNZ();
  
  Int_t nCPV ;
  Int_t absID ;
  
  //check if CPV exists
  Bool_t isCPVpresent=0 ;
  for(Int_t i=1; i<=5 && !isCPVpresent; i++){
    volpath = "/ALIC_1/PHOS_";
    volpath += i;
    volpath += "/PCPV_1";
    if (gGeoManager->CheckPath(volpath.Data())) 
      isCPVpresent=1 ;
  } 
  
  if(isCPVpresent){
    nCPV = nEMC + geom->GetNumberOfCPVPadsZ() * geom->GetNumberOfCPVPadsPhi() * nmod ;
  }
  else{
     nCPV = nEMC ;
  }  

  digits->Expand(nCPV) ;

  //take all the inputs to add together and load the SDigits
  TObjArray * sdigArray = new TObjArray(fInput) ;
  sdigArray->AddAt(phosLoader->SDigits(), 0) ;
 
  for(Int_t i = 1 ; i < fInput ; i++){
    TString tempo(fEventNames[i]) ; 
    tempo += i ;
    AliRunLoader* rl2 = AliRunLoader::GetRunLoader(tempo) ;
    if(!rl2){ 
      rl2 = AliRunLoader::Open(fInputFileNames[i], tempo) ;
      if (!rl2) {
        Fatal("AliPHOSDigitizer", "Could not find the Run Loader for %s - %s",fInputFileNames[i].Data(), tempo.Data()) ;
        return ;
      }
      rl2->LoadHeader();
    }
    AliPHOSLoader * phosLoader2 = static_cast<AliPHOSLoader*>(rl2->GetLoader("PHOSLoader"));
 
    if(fDigInput){ 
      readEvent = static_cast<AliStream*>(fDigInput->GetInputStream(i))->GetCurrentEventNumber() ; 
    }
    TClonesArray * digs ;
    if(AliPHOSSimParam::GetInstance()->IsStreamDigits(i)){ //This is Digits Stream
      AliInfo(Form("Adding event %d from input stream %d %s %s", 
		 readEvent, i, fInputFileNames[i].Data(), tempo.Data())) ; 
       rl2->GetEvent(readEvent) ;
       phosLoader2->CleanDigits() ;
       phosLoader2->LoadDigits("READ") ;
       digs = phosLoader2->Digits() ;
       toMakeNoise=0 ; //Do not add noise, it is already in stream
    }
    else{
      AliInfo(Form("Adding event %d (SDigits) from input stream %d %s %s",
                 readEvent, i, fInputFileNames[i].Data(), tempo.Data())) ;
       rl2->GetEvent(readEvent) ;
       phosLoader2->CleanSDigits() ; 
       phosLoader2->LoadSDigits("READ") ;
       digs = phosLoader2->SDigits() ;
    } 
    sdigArray->AddAt(digs, i) ;
  }

  //Find the first crystal with signal
  Int_t nextSig = 200000 ; 
  TClonesArray * sdigits ;  
  for(Int_t i = 0 ; i < fInput ; i++){
    sdigits = static_cast<TClonesArray *>(sdigArray->At(i)) ;
    if ( !sdigits->GetEntriesFast() )
      continue ; 
    Int_t curNext = static_cast<AliPHOSDigit *>(sdigits->At(0))->GetId() ;
    if(curNext < nextSig) 
      nextSig = curNext ;
  }
  
  TArrayI index(fInput) ;
  index.Reset() ;  //Set all indexes to zero
  
  AliPHOSDigit * digit ;
  AliPHOSDigit * curSDigit ;
  
//  TClonesArray * ticks = new TClonesArray("AliPHOSTick",1000) ;
  
  //Put Noise contribution
  Double_t apdNoise = 0. ;
  if(toMakeNoise)
     apdNoise = AliPHOSSimParam::GetInstance()->GetAPDNoise() ; 

  Int_t emcpermod=geom->GetNPhi()*geom->GetNZ();
  Int_t idigit= 0;
  for(Int_t imod=0; imod<5; imod++){
    if(!isPresent[imod])
      continue ;
    Int_t firstAbsId=imod*emcpermod+1 ;
    Int_t lastAbsId =(imod+1)*emcpermod ; 
    for(absID = firstAbsId ; absID <= lastAbsId ; absID++){
      Float_t noise = gRandom->Gaus(0.,apdNoise) ; 
      new((*digits)[idigit]) AliPHOSDigit( -1, absID, noise, TimeOfNoise() ) ;
      //look if we have to add signal?
      digit = static_cast<AliPHOSDigit *>(digits->At(idigit)) ;
      idigit++ ;
    
      if(absID==nextSig){
      //Add SDigits from all inputs 
//      ticks->Clear() ;
//      Int_t contrib = 0 ;

//New Timing model is necessary
//      Float_t a = digit->GetEnergy() ;
//      Float_t b = TMath::Abs( a / fTimeSignalLength) ;
//      //Mark the beginning of the signal
//      new((*ticks)[contrib++]) AliPHOSTick(digit->GetTime(),0, b);  
//      //Mark the end of the signal     
//      new((*ticks)[contrib++]) AliPHOSTick(digit->GetTime()+fTimeSignalLength, -a, -b); 

// Calculate time as time of the largest digit
        Float_t time = digit->GetTime() ;
        Float_t eTime= digit->GetEnergy() ;
      
        //loop over inputs
        for(Int_t i = 0 ; i < fInput ; i++){
  	  if( static_cast<TClonesArray *>(sdigArray->At(i))->GetEntriesFast() > index[i] ){
  	    curSDigit = static_cast<AliPHOSDigit*>(static_cast<TClonesArray *>(sdigArray->At(i))->At(index[i])) ; 	
            if(AliPHOSSimParam::GetInstance()->IsStreamDigits(i)){ //This is Digits Stream
              curSDigit->SetEnergy(Calibrate(curSDigit->GetEnergy(),curSDigit->GetId())) ;
              curSDigit->SetTime(CalibrateT(curSDigit->GetTime(),curSDigit->GetId())) ;
            }
          }
	  else
	    curSDigit = 0 ;
	  //May be several digits will contribute from the same input
	  while(curSDigit && curSDigit->GetId() == absID){	   
	    //Shift primary to separate primaries belonging different inputs
	    Int_t primaryoffset ;
	    if(fDigInput)
	      primaryoffset = fDigInput->GetMask(i) ; 
	    else
	      primaryoffset = 10000000*i ;
	    curSDigit->ShiftPrimary(primaryoffset) ;
	  
//New Timing model is necessary
//	  a = curSDigit->GetEnergy() ;
//	  b = a /fTimeSignalLength ;
//	  new((*ticks)[contrib++]) AliPHOSTick(curSDigit->GetTime(),0, b);  
//	  new((*ticks)[contrib++]) AliPHOSTick(curSDigit->GetTime()+fTimeSignalLength, -a, -b); 
          if(curSDigit->GetEnergy()>eTime){
            eTime=curSDigit->GetEnergy() ;
            time=curSDigit->GetTime() ;
          }
	    *digit += *curSDigit ;  //add energies

	    index[i]++ ;
	    if( static_cast<TClonesArray *>(sdigArray->At(i))->GetEntriesFast() > index[i] )
	      curSDigit = static_cast<AliPHOSDigit*>(static_cast<TClonesArray *>(sdigArray->At(i))->At(index[i])) ; 	
	    else
	      curSDigit = 0 ;
	  }
        }
      
        //calculate and set time
//New Timing model is necessary
//      Float_t time = FrontEdgeTime(ticks) ;
        digit->SetTime(time) ;
      
        //Find next signal module
        nextSig = 200000 ;
        for(Int_t i = 0 ; i < fInput ; i++){
	  sdigits = static_cast<TClonesArray *>(sdigArray->At(i)) ;
	  Int_t curNext = nextSig ;
	  if(sdigits->GetEntriesFast() > index[i] ){
	    curNext = static_cast<AliPHOSDigit *>(sdigits->At(index[i]))->GetId() ;
	  }
	  if(curNext < nextSig) nextSig = curNext ;
        }
      }
    }
  }


  //Apply non-linearity
  if(AliPHOSSimParam::GetInstance()->IsCellNonlinearityOn()){ //Apply non-lineairyt on cell level
    const Double_t aNL = AliPHOSSimParam::GetInstance()->GetCellNonLineairyA() ;
    const Double_t bNL = AliPHOSSimParam::GetInstance()->GetCellNonLineairyB() ;
    const Double_t cNL = AliPHOSSimParam::GetInstance()->GetCellNonLineairyC() ;
    for(Int_t i = 0 ; i < nEMC ; i++){
      digit = static_cast<AliPHOSDigit*>( digits->At(i) ) ;
      Double_t e= digit->GetEnergy() ;
      // version(1)      digit->SetEnergy(e*(1+a*TMath::Exp(-e/b))) ;
      digit->SetEnergy(e*cNL*(1.+aNL*TMath::Exp(-e*e/2./bNL/bNL))) ; //Better agreement with data...
    }  
  }


  //distretize energy if necessary
  if(AliPHOSSimParam::GetInstance()->IsEDigitizationOn()){
    Float_t adcW=AliPHOSSimParam::GetInstance()->GetADCchannelW() ;
    for(Int_t i = 0 ; i < nEMC ; i++){                                                                                                       
      digit = static_cast<AliPHOSDigit*>( digits->At(i) ) ;
      digit->SetEnergy(adcW*ceil(digit->GetEnergy()/adcW)) ;
    } 
  }
 
  //Apply decalibration if necessary
  for(Int_t i = 0 ; i < nEMC ; i++){
    digit = static_cast<AliPHOSDigit*>( digits->At(i) ) ;
    Decalibrate(digit) ;
  }
  
//  ticks->Delete() ;
//  delete ticks ;
  
  //Now CPV digits (different noise and no timing)
  Int_t cpvpermod = geom->GetNumberOfCPVPadsZ() * geom->GetNumberOfCPVPadsPhi() ;
  Int_t nEMCtotal=emcpermod*5 ;
  Float_t cpvNoise = AliPHOSSimParam::GetInstance()->GetCPVNoise() ;
  if(isCPVpresent){  //CPV is present in current geometry
    for(Int_t imod=0; imod<5; imod++){ //module is present in current geometry
      if(!isPresent[imod])
        continue ;
      Int_t firstAbsId=nEMCtotal+imod*cpvpermod+1 ;
      Int_t lastAbsId =nEMCtotal+(imod+1)*cpvpermod ;
      for(absID = firstAbsId; absID <= lastAbsId; absID++){
        Float_t noise = gRandom->Gaus(0., cpvNoise) ; 
        new((*digits)[idigit]) AliPHOSDigit( -1,absID,noise, TimeOfNoise() ) ;
        idigit++ ;
        //look if we have to add signal?
        if(absID==nextSig){
          digit = static_cast<AliPHOSDigit *>(digits->At(idigit-1)) ;
          //Add SDigits from all inputs
          for(Int_t i = 0 ; i < fInput ; i++){
	     if( static_cast<TClonesArray *>(sdigArray->At(i))->GetEntriesFast() > index[i] )
	       curSDigit = static_cast<AliPHOSDigit*>( static_cast<TClonesArray *>(sdigArray->At(i))->At(index[i])) ; 	
	     else
	       curSDigit = 0 ;

	     //May be several digits will contribute from the same input
	     while(curSDigit && curSDigit->GetId() == absID){	   
	       //Shift primary to separate primaries belonging different inputs
	       Int_t primaryoffset ;
	       if(fDigInput)
	         primaryoffset = fDigInput->GetMask(i) ; 
	       else
	         primaryoffset = 10000000*i ;
	       curSDigit->ShiftPrimary(primaryoffset) ;

	       //add energies
	       *digit += *curSDigit ;  
	       index[i]++ ;
	       if( static_cast<TClonesArray *>(sdigArray->At(i))->GetEntriesFast() > index[i] )
	         curSDigit = static_cast<AliPHOSDigit*>( static_cast<TClonesArray *>(sdigArray->At(i))->At(index[i]) ) ; 	
	       else
	         curSDigit = 0 ;
	     }
          }

          //Find next signal module
          nextSig = 200000 ;
          for(Int_t i = 0 ; i < fInput ; i++){
	    sdigits = static_cast<TClonesArray *>(sdigArray->At(i)) ;
	    Int_t curNext = nextSig ;
	    if(sdigits->GetEntriesFast() > index[i] )
	      curNext = static_cast<AliPHOSDigit *>( sdigits->At(index[i]) )->GetId() ;
	    if(curNext < nextSig) nextSig = curNext ;
          }
      
        }
      }
    }
  }

  delete sdigArray ; //We should not delete its contents 
  
  Int_t relId[4];

  //set amplitudes in bad channels to zero

  for(Int_t i = 0 ; i <digits->GetEntriesFast(); i++){
    digit = static_cast<AliPHOSDigit*>( digits->At(i) ) ;
    geom->AbsToRelNumbering(digit->GetId(),relId);
    if(relId[1] == 0) // Emc
      if(fcdb->IsBadChannelEmc(relId[0],relId[3],relId[2])) digit->SetEnergy(0.); 
  }

  //remove digits below thresholds
  Float_t emcThreshold = AliPHOSSimParam::GetInstance()->GetEmcDigitsThreshold() ;
  for(Int_t i = 0 ; i < nEMC ; i++){
    digit = static_cast<AliPHOSDigit*>( digits->At(i) ) ;

    if(digit->GetEnergy() < emcThreshold){
      digits->RemoveAt(i) ;
      continue ;
    }

    geom->AbsToRelNumbering(digit->GetId(),relId);

//    digit->SetEnergy(TMath::Ceil(digit->GetEnergy())-0.9999) ;

    Float_t tres = TimeResolution(digit->GetEnergy()) ; 
    digit->SetTime(gRandom->Gaus(digit->GetTime(), tres) ) ;

    fPulse->Reset();
    fPulse->SetAmplitude(digit->GetEnergy()/
			 fcdb->GetADCchannelEmc(relId[0],relId[3],relId[2]));
    fPulse->SetTZero(digit->GetTimeR());
    fPulse->MakeSamples();
    fPulse->GetSamples(fADCValuesHG, fADCValuesLG) ; 
    Int_t nSamples = fPulse->GetRawFormatTimeBins();
    digit->SetALTROSamplesHG(nSamples,fADCValuesHG);
    digit->SetALTROSamplesLG(nSamples,fADCValuesLG);
  }

  Float_t cpvDigitThreshold = AliPHOSSimParam::GetInstance()->GetCpvDigitsThreshold() ;
  for(Int_t i = nEMC; i < nCPV ; i++){
    if( static_cast<AliPHOSDigit*>(digits->At(i))->GetEnergy() < cpvDigitThreshold )
      digits->RemoveAt(i) ;
  } 
    
  digits->Compress() ;  
  Int_t ndigits = digits->GetEntriesFast() ;
  
  //Set indexes in list of digits and make true digitization of the energy
  for (Int_t i = 0 ; i < ndigits ; i++) { 
    digit = static_cast<AliPHOSDigit*>( digits->At(i) ) ; 
    digit->SetIndexInList(i) ;     
    if(digit->GetId() > fEmcCrystals){ //digitize CPV only
      digit->SetAmp(DigitizeCPV(digit->GetEnergy(),digit->GetId()) ) ;
    }
  }

}
//____________________________________________________________________________
Float_t AliPHOSDigitizer::Calibrate(Float_t amp,Int_t absId){
  //Apply calibration
  const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;

  //Determine rel.position of the cell absolute ID
  Int_t relId[4];
  geom->AbsToRelNumbering(absId,relId);
  Int_t module=relId[0];
  Int_t row   =relId[2];
  Int_t column=relId[3];
  if(relId[1]==0){ //This Is EMC
    Float_t calibration = fcdb->GetADCchannelEmc(module,column,row);
    return amp*calibration ;
  }
  return 0 ;
}
//____________________________________________________________________________
void AliPHOSDigitizer::Decalibrate(AliPHOSDigit *digit)
{
  // Decalibrate EMC digit, i.e. change its energy by a factor read from CDB

  const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;

  //Determine rel.position of the cell absolute ID
  Int_t relId[4];
  geom->AbsToRelNumbering(digit->GetId(),relId);
  Int_t module=relId[0];
  Int_t row   =relId[2];
  Int_t column=relId[3];
  if(relId[1]==0){ //This Is EMC
    Float_t decalib     = fcdb->GetADCchannelEmcDecalib(module,column,row); // O(1)
    Float_t calibration = fcdb->GetADCchannelEmc(module,column,row)*decalib;
    Float_t energy = digit->GetEnergy()/calibration;
    digit->SetEnergy(energy); //Now digit measures E in ADC counts
    Float_t time = digit->GetTime() ;
    time-=fcdb->GetTimeShiftEmc(module,column,row);
    digit->SetTime(time) ;
  }
}
//____________________________________________________________________________
Float_t AliPHOSDigitizer::CalibrateT(Float_t time,Int_t absId){
  //Apply time calibration
  const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;

  //Determine rel.position of the cell absolute ID
  Int_t relId[4];
  geom->AbsToRelNumbering(absId,relId);
  Int_t module=relId[0];
  Int_t row   =relId[2];
  Int_t column=relId[3];
  time += fcdb->GetTimeShiftEmc(module,column,row);
  return time ;
}
//____________________________________________________________________________
Int_t AliPHOSDigitizer::DigitizeCPV(Float_t charge, Int_t absId)
{
  // Returns digitized value of the CPV charge in a pad absId

  const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;

  //Determine rel.position of the cell absId
  Int_t relId[4];
  geom->AbsToRelNumbering(absId,relId);
  Int_t module=relId[0];
  Int_t row   =relId[2];
  Int_t column=relId[3];
  
  Int_t channel = 0;
  
  if(absId > fEmcCrystals){ //digitize CPV only

    //reading calibration data for cell absId.
    Float_t adcPedestalCpv = fcdb->GetADCpedestalCpv(module,column,row);
    Float_t adcChanelCpv   = fcdb->GetADCchannelCpv( module,column,row);

    channel = (Int_t) TMath::Ceil((charge - adcPedestalCpv)/adcChanelCpv) ;       
    Int_t nMax = AliPHOSSimParam::GetInstance()->GetNADCcpv() ;
    if(channel > nMax ) channel = nMax ;
  }
  return channel ;
}

//____________________________________________________________________________
void AliPHOSDigitizer::Digitize(Option_t *option) 
{ 
  // Steering method to process digitization for events
  // in the range from fFirstEvent to fLastEvent.
  // This range is optionally set by SetEventRange().
  // if fLastEvent=-1, then process events until the end.
  // by default fLastEvent = fFirstEvent (process only one event)

  if (!fInit) { // to prevent overwrite existing file
    AliError(Form("Give a version name different from %s", 
		  fEventFolderName.Data() )) ;
    return ;
  }   

  if (strstr(option,"print")) {
    Print();
    return ; 
  }
  
 if(strstr(option,"tim"))
     gBenchmark->Start("PHOSDigitizer");
  
  AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
  
  if (fLastEvent == -1) 
    fLastEvent = rl->GetNumberOfEvents() - 1 ;
  else if (fDigInput) 
    fLastEvent = fFirstEvent ; 
 
  Int_t nEvents   = fLastEvent - fFirstEvent + 1;
  
  Int_t ievent ;

  for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
    fEventCounter++ ; 

    Digitize(ievent) ; //Add prepared SDigits to digits and add the noise

    WriteDigits() ;

    if(strstr(option,"deb"))
      PrintDigits(option);
    
    //increment the total number of Digits per run 
    fDigitsInRun += phosLoader->Digits()->GetEntriesFast() ;  
 }
 
  if(strstr(option,"tim")){
    gBenchmark->Stop("PHOSDigitizer");
    TString message ; 
    message = "  took %f seconds for Digitizing %f seconds per event\n" ; 
    AliInfo(Form( message.Data(), 
	 gBenchmark->GetCpuTime("PHOSDigitizer"), 
	 gBenchmark->GetCpuTime("PHOSDigitizer")/nEvents )); 
  } 
}
//____________________________________________________________________________ 
Float_t AliPHOSDigitizer::TimeResolution(Float_t e){
  //calculate TOF resolution using beam-test resutls
  Float_t a=AliPHOSSimParam::GetInstance()->GetTOFa() ;
  Float_t b=AliPHOSSimParam::GetInstance()->GetTOFb() ;
  return TMath::Sqrt(a*a+b*b/e) ;
}

////____________________________________________________________________________ 
//Float_t AliPHOSDigitizer::FrontEdgeTime(TClonesArray * ticks) const
//{
//  // Returns the shortest time among all time ticks
//
//  ticks->Sort() ; //Sort in accordance with times of ticks
//  TIter it(ticks) ;
//  AliPHOSTick * ctick = (AliPHOSTick *) it.Next() ;
//  Float_t time = ctick->CrossingTime(fTimeThreshold) ;    
//
//  AliPHOSTick * t ;  
//  while((t=(AliPHOSTick*) it.Next())){
//    if(t->GetTime() < time)  //This tick starts before crossing
//      *ctick+=*t ;
//    else
//      return time ;
//
//    time = ctick->CrossingTime(fTimeThreshold) ;    
//  }
//  return time ;
//}

//____________________________________________________________________________ 
Bool_t AliPHOSDigitizer::Init()
{
  // Makes all memory allocations
  fInit = kTRUE ; 

  AliPHOSGeometry *geom;
  if (!(geom = AliPHOSGeometry::GetInstance())) 
        geom = AliPHOSGeometry::GetInstance("IHEP","");
//   const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;

  fEmcCrystals = geom->GetNModules() * geom->GetNCristalsInModule() ;
  
  fFirstEvent = 0 ; 
  fLastEvent = fFirstEvent ; 
  if (fDigInput) 
    fInput = fDigInput->GetNinputs() ; 
  else 
    fInput           = 1 ;
  
  fInputFileNames  = new TString[fInput] ; 
  fEventNames      = new TString[fInput] ; 
  fInputFileNames[0] = GetTitle() ; 
  fEventNames[0]     = fEventFolderName.Data() ; 
  Int_t index ; 
  for (index = 1 ; index < fInput ; index++) {
    fInputFileNames[index] = static_cast<AliStream*>(fDigInput->GetInputStream(index))->GetFileName(0); 
    TString tempo = fDigInput->GetInputFolderName(index) ;
    fEventNames[index] = tempo.Remove(tempo.Length()-1) ; // strip of the stream number added by fDigInput
  }

  //to prevent cleaning of this object while GetEvent is called
  AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
  if(!rl){
    AliRunLoader::Open(GetTitle(), fEventFolderName) ; 
  }
  return fInit ; 
}

//____________________________________________________________________________ 
void AliPHOSDigitizer::InitParameters()
{
  // Set initial parameters Digitizer

  fDigitsInRun  = 0 ; 
  SetEventRange(0,-1) ;
  fPulse = new AliPHOSPulseGenerator();
  fADCValuesLG = new Int_t[fPulse->GetRawFormatTimeBins()];
  fADCValuesHG = new Int_t[fPulse->GetRawFormatTimeBins()];
    
}

//__________________________________________________________________
void AliPHOSDigitizer::Print(const Option_t *)const 
{
  // Print Digitizer's parameters
  AliInfo(Form("\n------------------- %s -------------", GetName() )) ; 
  if( strcmp(fEventFolderName.Data(), "") != 0 ){
    printf(" Writing Digits to branch with title  %s\n", fEventFolderName.Data()) ;
    
    Int_t nStreams ; 
    if (fDigInput) 
      nStreams =  GetNInputStreams() ;
    else 
      nStreams = fInput ; 
    
    Int_t index = 0 ;  
    for (index = 0 ; index < nStreams ; index++) {  
      TString tempo(fEventNames[index]) ; 
      tempo += index ;
      printf ("Adding SDigits from %s \n", fInputFileNames[index].Data()) ; 
    }
    
 //   printf("\nWith following parameters:\n") ;
 //   printf("  Electronics noise in EMC (fPinNoise)    = %f GeV\n", fPinNoise ) ; 
 //   printf("  Threshold  in EMC  (fEMCDigitThreshold) = %f GeV\n", fEMCDigitThreshold ) ;  
 //   printf("  Noise in CPV (fCPVNoise)                = %f aux units\n", fCPVNoise ) ; 
 //   printf("  Threshold in CPV (fCPVDigitThreshold)   = %f aux units\n",fCPVDigitThreshold ) ;  
    printf(" ---------------------------------------------------\n") ;   
  }
  else
    AliInfo(Form("AliPHOSDigitizer not initialized" )) ;
  
}

//__________________________________________________________________
 void AliPHOSDigitizer::PrintDigits(Option_t * option)
{
  // Print a table of digits
  

  AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
  TClonesArray * digits = phosLoader->Digits() ; 
  const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;
  
  AliInfo(Form("%d", digits->GetEntriesFast())) ; 
  printf("\nevent %d", gAlice->GetEvNumber()) ;
  printf("\n       Number of entries in Digits list %d", digits->GetEntriesFast() )  ;  

 
  if(strstr(option,"all")||strstr(option,"EMC")){  
    //loop over digits
    AliPHOSDigit * digit;
    printf("\nEMC digits (with primaries):\n")  ;
    printf("\n   Id  Amplitude    Time          Index Nprim: Primaries list \n") ;    
    Int_t maxEmc = geom->GetNModules()*geom->GetNCristalsInModule() ;
    Int_t index ;
    for (index = 0 ; (index < digits->GetEntriesFast()) && 
	   (static_cast<AliPHOSDigit *>(digits->At(index))->GetId() <= maxEmc) ; index++) {
      digit = (AliPHOSDigit * )  digits->At(index) ;
      if(digit->GetNprimary() == 0) 
	continue;
//       printf("%6d  %8d    %6.5e %4d      %2d :",
// 	      digit->GetId(), digit->GetAmp(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;  // YVK
      printf("%6d  %.4f    %6.5e %4d      %2d :",
	      digit->GetId(), digit->GetEnergy(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;  
      Int_t iprimary;
      for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
	printf("%d ",digit->GetPrimary(iprimary+1) ) ; 
      }    
      printf("\n") ;
    }
  }
  
  if(strstr(option,"all")||strstr(option,"CPV")){
    
    //loop over CPV digits
    AliPHOSDigit * digit;
    printf("\nCPV digits (with primaries):\n")  ;
    printf("\n   Id  Amplitude    Time          Index Nprim: Primaries list \n") ;    
    Int_t maxEmc = geom->GetNModules()*geom->GetNCristalsInModule() ;
    Int_t index ;
    for (index = 0 ; index < digits->GetEntriesFast(); index++) {
      digit = (AliPHOSDigit * )  digits->At(index) ;
      if(digit->GetId() > maxEmc){
	printf("%6d  %8d    %4d      %2d :",
		digit->GetId(), digit->GetAmp(), digit->GetIndexInList(), digit->GetNprimary()) ;  
	Int_t iprimary;
	for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
	  printf("%d ",digit->GetPrimary(iprimary+1) ) ; 
	}    
	printf("\n") ;
      }
    }
  }

}

//__________________________________________________________________
Float_t AliPHOSDigitizer::TimeOfNoise(void) const
{  // Calculates the time signal generated by noise
  //PH  Info("TimeOfNoise", "Change me") ; 
  return gRandom->Rndm() * 1.28E-5;
}

//__________________________________________________________________
void AliPHOSDigitizer::Unload() 
{  
  
  Int_t i ; 
  for(i = 1 ; i < fInput ; i++){
    TString tempo(fEventNames[i]) ; 
    tempo += i ;
    AliRunLoader* rl = AliRunLoader::GetRunLoader(tempo) ; 
    AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
    phosLoader->UnloadSDigits() ; 
  }
  
  AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
  phosLoader->UnloadDigits() ; 
}

//____________________________________________________________________________
void AliPHOSDigitizer::WriteDigits()
{

  // Makes TreeD in the output file. 
  // Check if branch already exists: 
  //   if yes, exit without writing: ROOT TTree does not support overwriting/updating of 
  //      already existing branches. 
  //   else creates branch with Digits, named "PHOS", title "...",
  //      and branch "AliPHOSDigitizer", with the same title to keep all the parameters
  //      and names of files, from which digits are made.

  AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
 
  const TClonesArray * digits = phosLoader->Digits() ; 
  TTree * treeD = phosLoader->TreeD();
  if(!treeD){
    phosLoader->MakeTree("D");
    treeD = phosLoader->TreeD();
  }
  
  // -- create Digits branch
  Int_t bufferSize = 32000 ;    
  TBranch * digitsBranch = treeD->Branch("PHOS","TClonesArray",&digits,bufferSize);
  digitsBranch->SetTitle(fEventFolderName);
  digitsBranch->Fill() ;
  
  phosLoader->WriteDigits("OVERWRITE");

  Unload() ; 

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