ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2000, 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.                  *
 **************************************************************************/

//_________________________________________________________________________//
//                                                                         //
// This is a TTask that makes TOF-Digits out of TOF-SDigits.               //
// The simulation of the detector is performed at sdigits level:           //
// during digitization the unique task is the sum of all sdigits in the    //
// same pad.                                                               //
// Digits are written to TreeD in branch "TOF".                            //
//                                                                         //
// -- Author :  F. Pierella (Bologna University) pierella@bo.infn.it       //
//                                                                         //
//_________________________________________________________________________//

//#include "Riostream.h"

//#include "TFile.h"
#include "TMath.h"
#include "TH1F.h"
#include "TTree.h"
#include "TRandom.h"
#include "TObjArray.h"

#include "AliLoader.h"
#include "AliLog.h"
#include "AliDigitizationInput.h"
#include "AliRunLoader.h"
#include "AliRun.h"

#include "AliTOFcalib.h"
//#include "AliTOFChannelOnlineArray.h"
//#include "AliTOFChannelOnlineStatusArray.h"
//#include "AliTOFChannelOffline.h"
#include "AliTOFDigitizer.h"
#include "AliTOFdigit.h"
#include "AliTOFHitMap.h"
#include "AliTOFGeometry.h"
#include "AliTOFSDigit.h"
#include "AliTOF.h"

extern TRandom *gRandom;

extern AliRun *gAlice;


ClassImp(AliTOFDigitizer)

//___________________________________________
  AliTOFDigitizer::AliTOFDigitizer()  :
    AliDigitizer(),
    fDigits(new TClonesArray("AliTOFdigit",4000)),
    fSDigitsArray(new TClonesArray("AliTOFSDigit",1000)),
  fhitMap(0x0),
  fCalib(new AliTOFcalib())
{
  // Default ctor - don't use it
  InitDecalibration();
}

//___________________________________________
AliTOFDigitizer::AliTOFDigitizer(AliDigitizationInput* digInput): 
  AliDigitizer(digInput), 
  fDigits(new TClonesArray("AliTOFdigit",4000)),
  fSDigitsArray(new TClonesArray("AliTOFSDigit",1000)),
  fhitMap(0x0),
  fCalib(new AliTOFcalib())
{
  //ctor with RunDigitizer
  InitDecalibration();
}

//------------------------------------------------------------------------
AliTOFDigitizer::AliTOFDigitizer(const AliTOFDigitizer &source):
  AliDigitizer(source),
  fDigits(source.fDigits),
  fSDigitsArray(source.fSDigitsArray),
  fhitMap(source.fhitMap),
  fCalib(source.fCalib)
{
  // copy constructor
}

//------------------------------------------------------------------------
  AliTOFDigitizer& AliTOFDigitizer::operator=(const AliTOFDigitizer &source)
{
  // ass. op.
  
  if (this == &source)
    return *this;

  AliDigitizer::operator=(source);
  fDigits=source.fDigits;
  fSDigitsArray=source.fSDigitsArray;
  fhitMap=source.fhitMap;
  fCalib=source.fCalib;
  return *this;

}

//------------------------------------------------------------------------
AliTOFDigitizer::~AliTOFDigitizer()
{
  // Destructor
  delete fCalib;
  if (fDigits){
    fDigits->Delete();
    delete fDigits;
    fDigits=0x0;
  }
  if (fSDigitsArray){
    fSDigitsArray->Delete();
    delete fSDigitsArray;
    fSDigitsArray=0x0;
  }
}

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

void AliTOFDigitizer::Digitize(Option_t* /*option*/)
{
  //
  // Perform digitization and merging.
  // The algorithm is the following:
  // - a hitmap is created to check if a pad is already activated;
  // - an sdigits container is created to collect all sdigits from
  //   different files;
  // - sdigits are summed using the hitmap;
  // - the sdigits container is used to create the array of AliTOFdigit.
  //

  AliDebug(1, "");


  // get the ptr to TOF detector
  AliTOF * tof = (AliTOF *) gAlice->GetDetector("TOF") ;

  //Make branches

  const Int_t kSize = 20;
  char branchname[kSize];
  snprintf(branchname,kSize,"%s", tof->GetName ());
 
  AliRunLoader* outrl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
  if (outrl == 0x0)
   {
     AliError("Can not find Run Loader in output folder.");
     return;
   }
   
  AliLoader* outgime = outrl->GetLoader("TOFLoader");
  if (outgime == 0x0)
   {
     AliError("Can not get TOF Loader from Output Run Loader.");
     return;
   }
  
  TTree* treeD = outgime->TreeD();
  if (treeD == 0x0)
   {
     outgime->MakeTree("D");
     treeD = outgime->TreeD();
   }
  //Make branch for digits (to be created in Init())
  tof->MakeBranchInTree(treeD,branchname,&fDigits,4000);

  // container for all summed sdigits (to be created in Init())
  //fSDigitsArray=new TClonesArray("AliTOFSDigit",1000);
  
  // create hit map (to be created in Init())
  fhitMap = new AliTOFHitMap(fSDigitsArray);
  
  // Loop over files to digitize

  for (Int_t inputFile=0; inputFile<fDigInput->GetNinputs();
       inputFile++) {
    ReadSDigit(inputFile);
   }

  // create digits
  CreateDigits();

  // free used memory for Hit Map in current event
  delete fhitMap;
  fSDigitsArray->Clear();

  treeD->Fill();

  AliDebug(2,"----------------------------------------");
  AliDebug(1,Form("%d digits have been created", fDigits->GetEntriesFast()));
  AliDebug(2,"----------------------------------------");

  outgime->WriteDigits("OVERWRITE");
  outgime->UnloadDigits();
  fDigits->Clear();

}

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

void AliTOFDigitizer::CreateDigits()
{
  // loop on sdigits container to fill the AliTOFdigit TClonesArray
  // start digitizing all the collected sdigits 

  Int_t ndump=0; // dump the first ndump created digits for each event

  // get the total number of collected sdigits
  Int_t ndig = fSDigitsArray->GetEntriesFast();

  Int_t  vol[5]={-1,-1,-1,-1,-1};  // location for a digit
  Int_t  digit[4] = {0,0,0,0};     // TOF digit variables
  Int_t tracknum[AliTOFSDigit::kMAXDIGITS]; // contributing tracks for the current slot
  for (Int_t aa=0; aa<AliTOFSDigit::kMAXDIGITS; aa++) tracknum[aa] = -1;

  for (Int_t k = 0; k < ndig; k++) {
    
    for (Int_t i=0; i<5; i++) vol[i] = -1;
    
    // Get the information for this digit
    AliTOFSDigit *tofsdigit = (AliTOFSDigit *) fSDigitsArray->UncheckedAt(k);
    
    Int_t nslot=tofsdigit->GetNDigits(); // get the number of slots
    // for current sdigit
    
    // TOF sdigit volumes (always the same for all slots)
    Int_t sector    = tofsdigit->GetSector(); // range [0-17]
    Int_t plate     = tofsdigit->GetPlate();  // range [0- 4]
    Int_t strip     = tofsdigit->GetStrip();  // range [0-14/18/19]
    Int_t padz      = tofsdigit->GetPadz();   // range [0- 1]
    Int_t padx      = tofsdigit->GetPadx();   // range [0-47]
    
    vol[0] = sector;
    vol[1] = plate;
    vol[2] = strip;
    vol[3] = padx;
    vol[4] = padz;
    
    //--------------------- QA section ----------------------
    // in the while, I perform QA
    Bool_t isSDigitBad = (sector<0 || sector>17 || plate<0 || plate >4 || padz<0 || padz>1 || padx<0 || padx>47);
    
    if (isSDigitBad)
      AliFatal(Form("strange sdigit found   %2d  %1d  %2d  %1d %2d", sector, plate, strip, padz, padx));
    //-------------------------------------------------------
    
    //------------------- Dump section ----------------------
    if (k<ndump) {
      AliInfo(Form("%2d-th digit: Sector %2d | Plate %1d | Strip %2d | PadZ %1d | PadX %2d ", k, sector, plate, strip, padz, padx));
      AliInfo("----------------------------------------------------");
    }
    // ------------------------------------------------------
    
    // start loop on number of slots for current sdigit
    for (Int_t islot = 0; islot < nslot; islot++) {
      for (Int_t aa=0; aa<4; aa++) digit[aa] = 0; // TOF digit variables
      for (Int_t aa=0; aa<AliTOFSDigit::kMAXDIGITS; aa++) tracknum[aa] = -1;
      
      Int_t tdc=tofsdigit->GetTdc(islot); digit[0]=tdc;
      Int_t adc=tofsdigit->GetAdc(islot); digit[1]=adc;

      //if (tdc>=8192) continue;//AdC

      tracknum[0]=tofsdigit->GetTrack(islot,0);
      tracknum[1]=tofsdigit->GetTrack(islot,1);
      tracknum[2]=tofsdigit->GetTrack(islot,2);
      
      // new with placement must be used
      // adding a TOF digit for each slot
      TClonesArray &aDigits = *fDigits;
      Int_t last=fDigits->GetEntriesFast();
      new (aDigits[last]) AliTOFdigit(tracknum, vol, digit);

    }
    
  } // end loop on sdigits - end digitizing all collected sdigits

  //Insert Decalibration 
  AliDebug(2,"in digitizer, create digits");
  DecalibrateTOFSignal();
}

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

void AliTOFDigitizer::ReadSDigit(Int_t inputFile )
{
  // Read sdigits for current event and inputFile; 
  // store them into the sdigits container
  // and update the hit map
  // SDigits from different files are assumed to
  // be created with the same simulation parameters.
  
  // creating the TClonesArray to store the digits
  static TClonesArray sdigitsClonesArray("AliTOFSDigit",  1000); 
  sdigitsClonesArray.Clear();

  // get the treeS from digInput
  AliRunLoader* rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(inputFile));
  if (rl == 0x0)
   {
     AliError(Form("Can not find Run Loader in input %d folder.",inputFile));
     return;
   }

  AliLoader* gime = rl->GetLoader("TOFLoader");
  if (gime == 0x0)
   {
     AliError(Form("Can not get TOF Loader from Input %d Run Loader.",inputFile));
     return;
   }

  TTree* currentTreeS=gime->TreeS();
  if (currentTreeS == 0x0)
   {
     Int_t retval = gime->LoadSDigits();
     if (retval) 
      {
         AliError(Form("Error occured while loading S. Digits for Input %d",inputFile));
         return;
      }
     currentTreeS=gime->TreeS();
     if (currentTreeS == 0x0)
      {
         AliError(Form("Can not get S. Digits Tree for Input %d",inputFile));
         return;
      }
   } 
  // get the branch TOF inside the treeS
  TClonesArray * sdigitsDummyContainer=&sdigitsClonesArray;
  // check if the branch exist
  TBranch* tofBranch=currentTreeS->GetBranch("TOF");

  if(!tofBranch){
    AliFatal(Form("TOF branch not found for input %d",inputFile));
    return;
  }
  
  tofBranch->SetAddress(&sdigitsDummyContainer);           
  
  Int_t nEntries = (Int_t)tofBranch->GetEntries();                                

  // Loop through all entries in the tree
  Int_t nbytes = 0;
  
  Int_t  vol[5]; // location for a sdigit
  for (Int_t i=0; i<5; i++) vol[i] = -1;

  for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) {
    
    // Import the tree
    nbytes += tofBranch->GetEvent(iEntry);
    
    // Get the number of sdigits
    Int_t ndig = sdigitsDummyContainer->GetEntriesFast();
    
    for (Int_t k=0; k<ndig; k++) {
      AliTOFSDigit *tofSdigit= (AliTOFSDigit*) sdigitsDummyContainer->UncheckedAt(k);
      
      for (Int_t i=0; i<5; i++) vol[i] = -1;

      // check the sdigit volume
      vol[0] = tofSdigit->GetSector();
      vol[1] = tofSdigit->GetPlate();
      vol[2] = tofSdigit->GetStrip();
      vol[3] = tofSdigit->GetPadx();
      vol[4] = tofSdigit->GetPadz();
      
      if (fhitMap->TestHit(vol) != kEmpty) {
	AliTOFSDigit *sdig = static_cast<AliTOFSDigit*>(fhitMap->GetHit(vol));
	sdig->Update(tofSdigit);

      } else {

	CollectSDigit(tofSdigit); // collect the current sdigit
	fhitMap->SetHit(vol);     // update the hitmap for location vol

      } // if (hitMap->TestHit(vol) != kEmpty)
      
    } // for (Int_t k=0; k<ndig; k++)

  } // end loop on entries

}


//_____________________________________________________________________________
void AliTOFDigitizer::CollectSDigit(const AliTOFSDigit * const sdigit)
{
  //
  // Add a TOF sdigit in container
  // new with placement must be used
  TClonesArray &aSDigitsArray = *fSDigitsArray;
  Int_t last=fSDigitsArray->GetEntriesFast();
  // make a copy of the current sdigit and
  // put it into tmp array
  new (aSDigitsArray[last]) AliTOFSDigit(*sdigit);
}

//_____________________________________________________________________________
void AliTOFDigitizer::InitDecalibration() const {
  //
  // Initialize TOF digits decalibration
  //

  fCalib->Init();
  /*
  fCalib->CreateCalArrays();
  fCalib->ReadSimHistoFromCDB("TOF/Calib", -1); // use AliCDBManager's number
  fCalib->ReadParOfflineFromCDB("TOF/Calib", -1); // use AliCDBManager's number
  */
}
//---------------------------------------------------------------------
void AliTOFDigitizer::DecalibrateTOFSignal() {
  //
  // Decalibrate TOF signals according to OCDB parameters
  //

  Double_t time=0., tot=0., corr=0.;
  Int_t deltaBC=0, l0l1=0, tdcBin=0;
  Int_t index = -1;
  Int_t detId[5] ={-1,-1,-1,-1,-1};
  UInt_t timestamp=0;

  Int_t ndigits = fDigits->GetEntriesFast();
  // Loop on TOF Digits
  for (Int_t i=0;i<ndigits;i++){
    AliTOFdigit * dig = (AliTOFdigit*)fDigits->At(i);
    detId[0] = dig->GetSector();
    detId[1] = dig->GetPlate();
    detId[2] = dig->GetStrip();
    detId[3] = dig->GetPadz();
    detId[4] = dig->GetPadx();
    dig->SetTdcND(dig->GetTdc()); // save the non decalibrated time

    index = AliTOFGeometry::GetIndex(detId); // The channel index    

    // Read Calibration parameters from the CDB
    // get digit info
    time = dig->GetTdc() * AliTOFGeometry::TdcBinWidth(); /* ps */
    tot = dig->GetToT() * AliTOFGeometry::ToTBinWidth() * 1.e-3; /* ns */
    deltaBC = 0;//dig->GetDeltaBC();
    l0l1 = 0;//dig->GetL0L1Latency();

    // get correction
    corr = fCalib->GetTimeCorrection(index, tot, deltaBC, l0l1, timestamp); /* ps */
    AliDebug(2, Form("calibrate index %d: time=%f (ps) tot=%f (ns) deltaBC=%d l0l1=%d timestamp=%d corr=%f (ps)",
		     index, time, tot, deltaBC, l0l1, timestamp, corr));

    // apply time correction
    time += corr;

    // convert in TDC bins and set digit
    //tdcBin = (Int_t)(time / AliTOFGeometry::TdcBinWidth()); //the corrected time (tdc counts)
    tdcBin = TMath::Nint(time / AliTOFGeometry::TdcBinWidth()); //the corrected time (tdc counts)
    dig->SetTdc(tdcBin);

  }

  AliDebug(1,"Simulating miscalibrated digits");

  return;
}

//---------------------------------------------------------------------
/*
void AliTOFDigitizer::DecalibrateTOFSignal(){ // Old implementation

  // Read Calibration parameters from the CDB

  TObjArray * calOffline= fCalib->GetTOFCalArrayOffline();

  AliDebug(2,Form("Size of array for Offline Calibration = %i",calOffline->GetEntries()));

  // Initialize Quantities to Simulate ToT Spectra

  TH1F * hToT= fCalib->GetTOFSimToT();
  Int_t nbins = hToT->GetNbinsX();
  Float_t delta = hToT->GetBinWidth(1);
  Float_t maxch = hToT->GetBinLowEdge(nbins)+delta;
  Float_t minch = hToT->GetBinLowEdge(1);
  Float_t max=0,min=0; //maximum and minimum value of the distribution
  Int_t maxbin=0,minbin=0; //maximum and minimum bin of the distribution

  for (Int_t ii=nbins; ii>0; ii--){
    if (hToT->GetBinContent(ii)!= 0) {
      max = maxch - (nbins-ii-1)*delta;
      maxbin = ii; 
      break;}
  }
  for (Int_t j=1; j<nbins; j++){
    if (hToT->GetBinContent(j)!= 0) {
      min = minch + (j-1)*delta;
      minbin = j; 
      break;}
  }

  Float_t maxToT=max;
  Float_t minToT=min;
 
  Float_t maxToTDistr=hToT->GetMaximum();

  AliDebug (1, Form(" The minimum ToT = %f", minToT)); 
  AliDebug (1, Form(" The maximum ToT = %f", maxToT)); 
  AliDebug (1, Form(" The maximum peak in ToT = %f", maxToTDistr)); 
  
  // Loop on TOF Digits

  Bool_t isToTSimulated=kFALSE;
  Bool_t misCalibPars=kFALSE;
  if(hToT->GetEntries()>0)isToTSimulated=kTRUE;  
  Int_t ndigits = fDigits->GetEntriesFast();
  for (Int_t i=0;i<ndigits;i++){
    AliTOFdigit * dig = (AliTOFdigit*)fDigits->At(i);
    Int_t detId[5];
    detId[0] = dig->GetSector();
    detId[1] = dig->GetPlate();
    detId[2] = dig->GetStrip();
    detId[3] = dig->GetPadz();
    detId[4] = dig->GetPadx();
    dig->SetTdcND(dig->GetTdc()); // save the non decalibrated time
    if(isToTSimulated){  

      //A realistic ToT Spectrum was found in input, 
      //decalibrated TOF Digits likely to be simulated....
 
      Int_t index = AliTOFGeometry::GetIndex(detId); // The channel index    
      AliTOFChannelOffline *calChannelOffline = (AliTOFChannelOffline *)calOffline->At(index); //retrieve the info for time slewing 
      Double_t par[6];  // time slewing parameters
  
      //check whether we actually ask for miscalibration

      for (Int_t j = 0; j<6; j++){
	par[j]=(Double_t)calChannelOffline->GetSlewPar(j);
	if(par[j]!=0)misCalibPars=kTRUE;
      }
      AliDebug(2,Form(" Calib Pars = %f (0-th parameter for time slewing + time delay), %f, %f, %f, %f, %f ",par[0],par[1],par[2],par[3],par[4],par[5]));

      // Now generate Realistic ToT distribution from TestBeam Data. 
      // Tot is in ns, assuming a Matching Window of 10 ns.

      Float_t simToT = 0;
      Float_t trix = 0;
      Float_t triy = 0;
      Double_t timeCorr;
      Double_t tToT;
      while (simToT <= triy){
	trix = gRandom->Rndm(i);
	triy = gRandom->Rndm(i);
	trix = (maxToT-minToT)*trix + minToT; 
	triy = maxToTDistr*triy;
	Int_t binx=hToT->FindBin(trix);
	simToT=hToT->GetBinContent(binx);
      }
      // the generated ToT (ns)
      tToT= (Double_t) trix; // to apply slewing we start from ns..
      // transform TOF signal in ns
      AliDebug(2,Form(" The Initial Time (counts): %i: ",dig->GetTdc()));
      AliDebug(2,Form(" Time before miscalibration (ps) %e: ",dig->GetTdc()*(Double_t)AliTOFGeometry::TdcBinWidth()));
      // add slewing effect
      timeCorr=par[0] + tToT*(par[1] +tToT*(par[2] +tToT*(par[3] +tToT*(par[4] +tToT*par[5])))); 
      AliDebug(2,Form(" The Time slewing + delay (ns): %f: ",timeCorr));
      // add global time shift
      //convert to ps
      timeCorr*=1E3;
      Double_t timeMis = (Double_t)(dig->GetTdc())*(Double_t)AliTOFGeometry::TdcBinWidth();
      timeMis = timeMis+timeCorr;
      AliDebug(2,Form(" The Miscalibrated time (ps): %e: ",timeMis));

      // now update the digit info
 
      Int_t tdcCorr= (Int_t)(timeMis/AliTOFGeometry::TdcBinWidth());
      AliDebug(2,Form(" Final Time (counts): %i: ",tdcCorr));
      // Setting Decalibrated Time signal (TDC counts)    
      dig->SetTdc(tdcCorr);   
      // Setting realistic ToT signal (TDC counts) 
      tToT*=1E3; //back to ps  
      Int_t tot=(Int_t)(tToT/AliTOFGeometry::ToTBinWidth());//(factor 1E3 as input ToT is in ns)
      dig->SetToT(tot); 
      AliDebug(2,Form(" Final Time and ToT (counts): %d: , %d:",dig->GetTdc(),dig->GetToT()));
      if(tdcCorr<0){
	AliWarning (Form(" The bad Slewed Time(TDC counts)= %d ", tdcCorr)); 
	AliWarning(Form(" The bad ToT (TDC counts)= %d ", tot)); 
      }
    }
    else{
    // For Data with no Miscalibration, set ToT signal == Adc
      dig->SetToT((Int_t)(dig->GetAdc()/AliTOFGeometry::ToTBinWidth())); //remove the factor 10^3 just to have a reasonable ToT range for raw data simulation even in the case of non-realistic ToT distribution (n.b. fAdc is practically an arbitrary quantity, and ToT has no impact on the TOF reco for non-miscalibrated digits)
    }
  }

  if(!isToTSimulated)
    AliDebug(1,"Standard Production, no miscalibrated digits");
  else
    if(!misCalibPars)
      AliDebug(1,"Standard Production, no miscalibrated digits");
    else
      AliDebug(1,"Simulating miscalibrated digits");

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