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

/* $Id$ */

/*
  Class for creating of the sumable digits and digits from MC data
  //
  The input :  ideal signals (Hits->Diffusion->Attachment -Ideal signal)
  The output:  "raw digits"

  Effect implemented:
  1. Pad by pad gain map
  2. Noise map  
  3. The dead channels identified  - zerro noise for corresponding pads
     In this case the outpu equal zerro
     
*/




#include <stdlib.h>
#include <TTree.h> 
#include <TObjArray.h>
#include <TFile.h>
#include <TDirectory.h>
#include <Riostream.h>
#include <TParameter.h>

#include "AliTPCDigitizer.h"

#include "AliTPC.h"
#include "AliTPCParam.h"
#include "AliTPCParamSR.h" 
#include "AliRun.h"
#include "AliLoader.h"
#include "AliPDG.h"
#include "AliDigitizationInput.h"
#include "AliSimDigits.h"
#include "AliLog.h"

#include "AliTPCcalibDB.h"
#include "AliTPCCalPad.h"
#include "AliTPCCalROC.h"
#include "TTreeStream.h"
#include "AliTPCReconstructor.h"
#include <TGraphErrors.h>

using std::cout;
using std::cerr;
using std::endl;
ClassImp(AliTPCDigitizer)

//___________________________________________
  AliTPCDigitizer::AliTPCDigitizer() :AliDigitizer(),fDebug(0), fDebugStreamer(0)
{
  //
// Default ctor - don't use it
//
  
}

//___________________________________________
AliTPCDigitizer::AliTPCDigitizer(AliDigitizationInput* digInput) 
  :AliDigitizer(digInput),fDebug(0), fDebugStreamer(0)
{
  //
// ctor which should be used
//  
  AliDebug(2,"(AliDigitizationInput* digInput) was processed");
  if (AliTPCReconstructor::StreamLevel()>0)  fDebugStreamer = new TTreeSRedirector("TPCDigitDebug.root","recreate");

}

//------------------------------------------------------------------------
AliTPCDigitizer::~AliTPCDigitizer()
{
// Destructor
  if (fDebugStreamer) delete fDebugStreamer;
}



//------------------------------------------------------------------------
Bool_t AliTPCDigitizer::Init()
{
// Initialization 
    
 return kTRUE;
}


//------------------------------------------------------------------------
void AliTPCDigitizer::Digitize(Option_t* option)
{
  //DigitizeFast(option);  
  DigitizeWithTailAndCrossTalk(option);
  
}
//------------------------------------------------------------------------
void AliTPCDigitizer::DigitizeFast(Option_t* option)
{
  
  // merge input tree's with summable digits
  //output stored in TreeTPCD
  char s[100]; 
  char ss[100];
  TString optionString = option;
  if (!strcmp(optionString.Data(),"deb")) {
    cout<<"AliTPCDigitizer:::DigitizeFast called with option deb "<<endl;
    fDebug = 3;
  }
  //get detector and geometry


  AliRunLoader *rl, *orl;
  AliLoader *gime, *ogime;
  
  if (gAlice == 0x0)
   {
     Warning("DigitizeFast","gAlice is NULL. Loading from input 0");
     rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(0));
     if (rl == 0x0)
      {
        Error("DigitizeFast","Can not find Run Loader for input 0. Can not proceed.");
        return;
      }
     rl->LoadgAlice();
     rl->GetAliRun();
   }
  AliTPC *pTPC  = (AliTPC *) gAlice->GetModule("TPC");
  AliTPCParam * param = pTPC->GetParam();
  
  //sprintf(s,param->GetTitle());
  snprintf(s,100,"%s",param->GetTitle());
  //sprintf(ss,"75x40_100x60");
  snprintf(ss,100,"75x40_100x60");
  if(strcmp(s,ss)==0){
    printf("2 pad-length geom hits with 3 pad-lenght geom digits...\n");
    delete param;
    param=new AliTPCParamSR();
  }
  else{
    //sprintf(ss,"75x40_100x60_150x60");
    snprintf(ss,100,"75x40_100x60_150x60");
   if(strcmp(s,ss)!=0) {
     printf("No TPC parameters found...\n");
     exit(2); 
   }
  }
  
  pTPC->GenerNoise(500000); //create table with noise
  //
  Int_t nInputs = fDigInput->GetNinputs();
  Int_t * masks = new Int_t[nInputs];
  for (Int_t i=0; i<nInputs;i++)
    masks[i]= fDigInput->GetMask(i);
  Short_t **pdig= new Short_t*[nInputs];   //pointers to the expanded digits array
  Int_t **ptr=  new Int_t*[nInputs];       //pointers to the expanded tracks array
  Bool_t *active=  new Bool_t[nInputs];    //flag for active input segments
  Char_t phname[100];
  
  //create digits array for given sectors
  // make indexes
  //
  //create branch's in TPC treeD
  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
  ogime = orl->GetLoader("TPCLoader");
  TTree * tree  = ogime->TreeD();
  AliSimDigits * digrow = new AliSimDigits;  

  if (tree == 0x0)
   {
     ogime->MakeTree("D");
     tree  = ogime->TreeD();
   }
  tree->Branch("Segment","AliSimDigits",&digrow);
  //  
  AliSimDigits ** digarr = new AliSimDigits*[nInputs]; 
  for (Int_t i1=0;i1<nInputs; i1++)
    {
      digarr[i1]=0;
     //    intree[i1]
      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i1));
      gime = rl->GetLoader("TPCLoader");
      gime->LoadSDigits("read");
      TTree * treear =  gime->TreeS();
     
      if (!treear) 
       {
        cerr<<"AliTPCDigitizer: Input tree with SDigits not found in"
            <<" input "<< i1<<endl;
        for (Int_t i2=0;i2<i1+1; i2++){ 
          
          if(digarr[i2])  delete digarr[i2];
	}
        delete [] digarr;
        delete [] active;
        delete []masks;
        delete []pdig;
        delete []ptr;
        return;
       }

      //sprintf(phname,"lhcphase%d",i1);
      snprintf(phname,100,"lhcphase%d",i1);
      TParameter<float> *ph = (TParameter<float>*)treear->GetUserInfo()
	                       ->FindObject("lhcphase0");
      if(!ph){
        cerr<<"AliTPCDigitizer: LHC phase  not found in"
            <<" input "<< i1<<endl;
        for (Int_t i2=0;i2<i1+1; i2++){ 
          if(digarr[i2])  delete digarr[i2];
	}
        delete [] digarr;
        delete [] active;
        delete []masks;
        delete []pdig;
        delete []ptr;
        return;
      }
      tree->GetUserInfo()->Add(new TParameter<float>(phname,ph->GetVal()));
	      //
      if (treear->GetIndex()==0)  
	treear->BuildIndex("fSegmentID","fSegmentID");
      treear->GetBranch("Segment")->SetAddress(&digarr[i1]);
    }




  //

  param->SetZeroSup(2);

  Int_t zerosup = param->GetZeroSup(); 
  AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetDedxGainFactor(); 
  AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise(); 
  //
  //Loop over segments of the TPC
    
  for (Int_t segmentID=0; segmentID<param->GetNRowsTotal(); segmentID++) 
   {
    Int_t sector, padRow;
    if (!param->AdjustSectorRow(segmentID,sector,padRow)) 
     {
      cerr<<"AliTPC warning: invalid segment ID ! "<<segmentID<<endl;
      continue;
     }
    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sector);  // pad gains per given sector
    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sector);  // noise per given sector
    digrow->SetID(segmentID);

    Int_t nTimeBins = 0;
    Int_t nPads = 0;

    Bool_t digitize = kFALSE;
    for (Int_t i=0;i<nInputs; i++) 
     { 

      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i));
      gime = rl->GetLoader("TPCLoader");
      
      if (gime->TreeS()->GetEntryWithIndex(segmentID,segmentID) >= 0) {
	digarr[i]->ExpandBuffer();
	digarr[i]->ExpandTrackBuffer();
        nTimeBins = digarr[i]->GetNRows();
        nPads = digarr[i]->GetNCols();
	active[i] = kTRUE;
	if (!GetRegionOfInterest() || (i == 0)) digitize = kTRUE;
      } else {
	active[i] = kFALSE;
      }
      if (GetRegionOfInterest() && !digitize) break;
     }   
    if (!digitize) continue;

    digrow->Allocate(nTimeBins,nPads);
    digrow->AllocateTrack(3);

    Float_t q=0;
    Int_t label[1000]; //stack for 300 events 
    Int_t labptr = 0;

    Int_t nElems = nTimeBins*nPads;     
 
    for (Int_t i=0;i<nInputs; i++)
     if (active[i]) { 
       pdig[i] = digarr[i]->GetDigits();
       ptr[i]  = digarr[i]->GetTracks();
      }
     
    Short_t *pdig1= digrow->GetDigits();
    Int_t   *ptr1= digrow->GetTracks() ;

    

    for (Int_t elem=0;elem<nElems; elem++)
     {    

       q=0;
       labptr=0;
       // looop over digits 
        for (Int_t i=0;i<nInputs; i++) if (active[i]) 
         { 
          //          q  += digarr[i]->GetDigitFast(rows,col);
            q  += *(pdig[i]);
         
           for (Int_t tr=0;tr<3;tr++) 
            {
             //             Int_t lab = digarr[i]->GetTrackIDFast(rows,col,tr);
             Int_t lab = ptr[i][tr*nElems];
             if ( (lab > 1) && *(pdig[i])>zerosup) 
              {
                label[labptr]=lab+masks[i];
                labptr++;
              }          
            }
           pdig[i]++;
           ptr[i]++;
         }
        q/=16.;  //conversion factor
	Float_t gain = gainROC->GetValue(padRow,elem/nTimeBins);  // get gain for given - pad-row pad
	//if (gain<0.5){
	  //printf("problem\n");
	//}
	q*= gain;
	Float_t noisePad = noiseROC->GetValue(padRow,elem/nTimeBins);
        //       Float_t noise  = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());  
        Float_t noise  = pTPC->GetNoise();
        q+=noise*noisePad;
        q=TMath::Nint(q);
        if (q > zerosup)
         { 
          if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
          //digrow->SetDigitFast((Short_t)q,rows,col);  
          *pdig1 =Short_t(q);
          for (Int_t tr=0;tr<3;tr++)
           {
            if (tr<labptr) 
             ptr1[tr*nElems] = label[tr];
           }
          }
        pdig1++;
        ptr1++;
     }
    //
    //  glitch filter
    //
    digrow->GlitchFilter();
    //
    digrow->CompresBuffer(1,zerosup);
    digrow->CompresTrackBuffer(1);
    tree->Fill();
    if (fDebug>0) cerr<<sector<<"\t"<<padRow<<"\n";  
   } //for (Int_t n=0; n<param->GetNRowsTotal(); n++) 
  

  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
  ogime = orl->GetLoader("TPCLoader");
  ogime->WriteDigits("OVERWRITE");
  
  //fDigInput->GetTreeDTPC()->Write(0,TObject::kOverwrite);
  
  delete digrow;     
  for (Int_t i1=0;i1<nInputs; i1++) delete digarr[i1];
  delete []masks;
  delete []pdig;
  delete []ptr;
  delete []active;
  delete []digarr;  
}



//------------------------------------------------------------------------
void AliTPCDigitizer::DigitizeSave(Option_t* option)
{
  //
  // Merge input tree's with summable digits
  // Output digits stored in TreeTPCD
  // 
  // Not active for long time.
  // Before adding modification (for ion tail calucation and for the crorsstalk) it should be 
  //  checked one by one with currenlty used AliTPCDigitizer::DigitizeFast
  //
  TString optionString = option;
  if (!strcmp(optionString.Data(),"deb")) {
    cout<<"AliTPCDigitizer::Digitize: called with option deb "<<endl;
    fDebug = 3;
  }
  //get detector and geometry 
  AliRunLoader *rl, *orl;
  AliLoader *gime, *ogime;

  
  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
  ogime = orl->GetLoader("TPCLoader");
  
  rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(0));
  //gime = rl->GetLoader("TPCLoader");
  rl->GetLoader("TPCLoader");
  rl->LoadgAlice();
  AliRun* alirun = rl->GetAliRun();
  
  AliTPC *pTPC  = (AliTPC *) alirun->GetModule("TPC");
  AliTPCParam * param = pTPC->GetParam();
  pTPC->GenerNoise(500000); //create teble with noise
  printf("noise %f \n",  param->GetNoise()*param->GetNoiseNormFac());
  //
  Int_t nInputs = fDigInput->GetNinputs();
  // stupid protection...
  if (nInputs <= 0) return;
  //
  Int_t * masks = new Int_t[nInputs];
  for (Int_t i=0; i<nInputs;i++)
    masks[i]= fDigInput->GetMask(i);

  AliSimDigits ** digarr = new AliSimDigits*[nInputs]; 
  for(Int_t ii=0;ii<nInputs;ii++) digarr[ii]=0;

  for (Int_t i1=0;i1<nInputs; i1++)
   {
     //digarr[i1]=0;
    //    intree[i1]
    rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i1));
    gime = rl->GetLoader("TPCLoader");

    TTree * treear =  gime->TreeS();
    //
    if (!treear) {      
      cerr<<" TPC -  not existing input = \n"<<i1<<" "; 
      delete [] masks;  
      for(Int_t i=0; i<nInputs; i++) delete digarr[i];
      delete [] digarr;
      return;   
    } 
    //
    TBranch * br = treear->GetBranch("fSegmentID");
    if (br) br->GetFile()->cd();
    treear->GetBranch("Segment")->SetAddress(&digarr[i1]);
   }
  
  rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(0));
  gime = rl->GetLoader("TPCLoader");
  Stat_t nentries = gime->TreeS()->GetEntries();
  

  //create branch's in TPC treeD
  AliSimDigits * digrow = new AliSimDigits;
  TTree * tree  = ogime->TreeD();

  tree->Branch("Segment","AliSimDigits",&digrow);
  param->SetZeroSup(2);

  Int_t zerosup = param->GetZeroSup();
  //Loop over segments of the TPC
    
  AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetDedxGainFactor();
  AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise();
  for (Int_t n=0; n<nentries; n++) {
    rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(0));
    gime = rl->GetLoader("TPCLoader");
    gime->TreeS()->GetEvent(n);

    digarr[0]->ExpandBuffer();
    digarr[0]->ExpandTrackBuffer();


    for (Int_t i=1;i<nInputs; i++){ 
//      fDigInput->GetInputTreeTPCS(i)->GetEntryWithIndex(digarr[0]->GetID(),digarr[0]->GetID());      
      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i));
      gime = rl->GetLoader("TPCLoader");
      gime->TreeS()->GetEntryWithIndex(digarr[0]->GetID(),digarr[0]->GetID());  
      digarr[i]->ExpandBuffer();
      digarr[i]->ExpandTrackBuffer();
      if ((digarr[0]->GetID()-digarr[i]->GetID())>0) 
       printf("problem\n");
    
    }   
    
    Int_t sector, padRow;
    if (!param->AdjustSectorRow(digarr[0]->GetID(),sector,padRow)) {
      cerr<<"AliTPC warning: invalid segment ID ! "<<digarr[0]->GetID()<<endl;
      continue;
    }

    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sector);  // pad gains per given sector
    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sector);  // noise per given sector
    digrow->SetID(digarr[0]->GetID());

    Int_t nTimeBins = digarr[0]->GetNRows();
    Int_t nPads = digarr[0]->GetNCols();
    digrow->Allocate(nTimeBins,nPads);
    digrow->AllocateTrack(3);

    Float_t q=0;
    Int_t label[1000]; //stack for 300 events 
    Int_t labptr = 0;

    

    for (Int_t iTimeBin=0;iTimeBin<nTimeBins; iTimeBin++){   // iTimeBin
      for (Int_t iPad=0;iPad<nPads; iPad++){    // pad
    
       q=0;
       labptr=0;
       // looop over digits 
        for (Int_t i=0;i<nInputs; i++){ 
         q  += digarr[i]->GetDigitFast(iTimeBin,iPad);
          //q  += *(pdig[i]);
         
          for (Int_t tr=0;tr<3;tr++) {
           Int_t lab = digarr[i]->GetTrackIDFast(iTimeBin,iPad,tr);
           //Int_t lab = ptr[i][tr*nElems];
            if ( (lab > 1) ) {
              label[labptr]=lab+masks[i];
              labptr++;
            }          
          }
         // pdig[i]++;
         //ptr[i]++;
         
        }
       q/=16.;  //conversion factor
       //       Float_t noise  = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());  
       Float_t gain = gainROC->GetValue(padRow,iPad);
       q*= gain;
       Float_t noisePad = noiseROC->GetValue(padRow, iPad);

       Float_t noise  = pTPC->GetNoise();
       q+=noise*noisePad;
       //
       // here we can get digits from past and add signal
       //
       //
       //for (Int_t jTimeBin=0; jTimeBin<iTimeBin; jTimeBin++)
       //  q+=ionTail
       //

        q=TMath::Nint(q);
        if (q > zerosup){ 
         
         if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
         digrow->SetDigitFast((Short_t)q,iTimeBin,iPad);  
         // *pdig1 =Short_t(q);
         for (Int_t tr=0;tr<3;tr++){
           if (tr<labptr) 
             ((AliSimDigits*)digrow)->SetTrackIDFast(label[tr],iTimeBin,iPad,tr);
           //ptr1[tr*nElems] = label[tr];
           //else
             //           ((AliSimDigits*)digrow)->SetTrackIDFast(-1,iTimeBin,iPad,tr);          
           //  ptr1[tr*nElems] = 1;
         }
       }
       //pdig1++;
       //ptr1++;
    }
    }
    
    digrow->CompresBuffer(1,zerosup);
    digrow->CompresTrackBuffer(1);
    tree->Fill();
    if (fDebug>0) cerr<<sector<<"\t"<<padRow<<"\n";  
  } 
//  printf("end TPC merging - end -Tree %s\t%p\n",fDigInput->GetInputTreeH(0)->GetName(),fDigInput->GetInputTreeH(0)->GetListOfBranches()->At(3));
  //fDigInput->GetTreeDTPC()->Write(0,TObject::kOverwrite);
    ogime->WriteDigits("OVERWRITE");

    for (Int_t i=1;i<nInputs; i++) 
     { 
      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i));
      gime = rl->GetLoader("TPCLoader");
      gime->UnloadSDigits();
     }
    ogime->UnloadDigits();
    
  delete digrow;     
  for (Int_t i1=0;i1<nInputs; i1++) delete digarr[i1];
  delete [] masks;
  delete [] digarr;  
}







//------------------------------------------------------------------------
void AliTPCDigitizer::DigitizeWithTailAndCrossTalk(Option_t* option) 
{
  // Modified version of the digitization function
  // Modification: adding the ion tail and crosstalk:
  //
  // pcstream used in order to visually inspect data
  //
  //
  // Crosstalk simulation:
  //   1.) Calculate per time bin mean charge (per pad)  within anode wire segment 
  //   2.) Subsract for the clusters at given time bin fraction of (mean charge) normalized by add hoc constant
  //       AliTPCRecoParam::GetCrosstalkCorrection() (0 if not crosstalk, 1 if ideal crosstalk)
  //       for simplicity we are assuming that wire segents are related to pad-rows
  //       Wire segmentationn is obtatined from the      
  //       AliTPCParam::GetWireSegment(Int_t sector, Int_t row); // to be implemented
  //       AliTPCParam::GetNPadsPerSegment(Int_t segmentID); // to be implemented
  //   3.) Substract form the signal contribution from the previous tracks - Ion tail in case speified in the AliTPCRecoParam
  //        AliTPCRecoParam::GetUseIonTailCorrection()
  //
  // Ion tail simulation:
  //    1.) Needs signal from pad+-1, taking signal from history
  // merge input tree's with summable digits
  // output stored in TreeTPCD
  //  
  AliTPCcalibDB* const calib=AliTPCcalibDB::Instance();
  AliTPCRecoParam *recoParam = calib->GetRecoParam(0); 
  AliDebug(1, Form(" recoParam->GetCrosstalkCorrection()  =   %f", recoParam->GetCrosstalkCorrection())); 
  AliDebug(1,Form(" recoParam->GetUseIonTailCorrection() =  %d ", recoParam->GetUseIonTailCorrection()));
  Int_t nROCs = 72;
  char s[100]; 
  char ss[100];
  TString optionString = option;
  if (!strcmp(optionString.Data(),"deb")) {
    cout<<"AliTPCDigitizer:::DigitizeFast called with option deb "<<endl;
    fDebug = 3;
  }

  // ======== get detector and geometry =======

  AliRunLoader *rl, *orl;
  AliLoader *gime, *ogime;

  if (gAlice == 0x0)
  {
    Warning("DigitizeFast","gAlice is NULL. Loading from input 0");
    rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(0));
    if (rl == 0x0)
    {
      Error("DigitizeFast","Can not find Run Loader for input 0. Can not proceed.");
      return;
    }
    rl->LoadgAlice();
    rl->GetAliRun();
  }
  AliTPC *pTPC  = (AliTPC *) gAlice->GetModule("TPC");
  AliTPCParam * param = pTPC->GetParam();

  //sprintf(s,param->GetTitle());
  snprintf(s,100,"%s",param->GetTitle());
  //sprintf(ss,"75x40_100x60");
  snprintf(ss,100,"75x40_100x60");
  if(strcmp(s,ss)==0){
    printf("2 pad-length geom hits with 3 pad-lenght geom digits...\n");
    delete param;
    param=new AliTPCParamSR();
  } else {
    //sprintf(ss,"75x40_100x60_150x60");
    snprintf(ss,100,"75x40_100x60_150x60");
    if(strcmp(s,ss)!=0) {
      printf("No TPC parameters found...\n");
      exit(2); 
    }
  }

  pTPC->GenerNoise(500000); //create table with noise
  //
  Int_t nInputs = fDigInput->GetNinputs();
  Int_t * masks = new Int_t[nInputs];
  for (Int_t i=0; i<nInputs;i++)
    masks[i]= fDigInput->GetMask(i);
  Short_t **pdig= new Short_t*[nInputs];   //pointers to the expanded digits array
  Int_t **ptr=  new Int_t*[nInputs];       //pointers to the expanded tracks array
  Bool_t *active=  new Bool_t[nInputs];    //flag for active input segments
  Char_t phname[100];

  //create digits array for given sectors
  // make indexes
  //
  //create branch's in TPC treeD
  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
  ogime = orl->GetLoader("TPCLoader");
  TTree * tree  = ogime->TreeD();
  AliSimDigits * digrow = new AliSimDigits;  

  if (tree == 0x0)
  {
    ogime->MakeTree("D");
    tree  = ogime->TreeD();
  }
  tree->Branch("Segment","AliSimDigits",&digrow);
  //  
  AliSimDigits ** digarr = new AliSimDigits*[nInputs]; 
  for (Int_t i1=0;i1<nInputs; i1++)
  {
    digarr[i1]=0;
    //    intree[i1]
    rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i1));
    gime = rl->GetLoader("TPCLoader");
    gime->LoadSDigits("read");
    TTree * treear =  gime->TreeS();

    if (!treear) 
    {
      cerr<<"AliTPCDigitizer: Input tree with SDigits not found in"
        <<" input "<< i1<<endl;
      for (Int_t i2=0;i2<i1+1; i2++){ 

        if(digarr[i2])  delete digarr[i2];
      }
      delete [] digarr;
      delete [] active;
      delete []masks;
      delete []pdig;
      delete []ptr;
      return;
    }

    //sprintf(phname,"lhcphase%d",i1);
    snprintf(phname,100,"lhcphase%d",i1);
    TParameter<float> *ph = (TParameter<float>*)treear->GetUserInfo()
      ->FindObject("lhcphase0");
    if(!ph)
    {
      cerr<<"AliTPCDigitizer: LHC phase  not found in"
        <<" input "<< i1<<endl;
      for (Int_t i2=0;i2<i1+1; i2++){ 
        if(digarr[i2])  delete digarr[i2];
      }
      delete [] digarr;
      delete [] active;
      delete []masks;
      delete []pdig;
      delete []ptr;
      return;
    }
    tree->GetUserInfo()->Add(new TParameter<float>(phname,ph->GetVal()));
    //
    if (treear->GetIndex()==0)  
      treear->BuildIndex("fSegmentID","fSegmentID");
    treear->GetBranch("Segment")->SetAddress(&digarr[i1]);
  }




  //
  // zero supp, take gain and noise map of TPC from OCDB 
  param->SetZeroSup(2);
  Int_t zerosup = param->GetZeroSup(); 
  AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetDedxGainFactor(); 
  AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise(); 

 
  // 
  // Cache the ion tail objects form OCDB
  //      
 
  TObjArray *ionTailArr = (TObjArray*)AliTPCcalibDB::Instance()->GetIonTailArray();
  if (!ionTailArr) {AliFatal("TPC - Missing IonTail OCDB object");}
 //  TObject *rocFactorIROC  = ionTailArr->FindObject("factorIROC");
//   TObject *rocFactorOROC  = ionTailArr->FindObject("factorOROC");
//   Float_t factorIROC      = (atof(rocFactorIROC->GetTitle()));
//   Float_t factorOROC      = (atof(rocFactorOROC->GetTitle()));
  Int_t nIonTailBins =0;
  TObjArray timeResFunc(nROCs); 
  for (Int_t isec = 0;isec<nROCs;isec++){        //loop overs sectors
    // Array of TGraphErrors for a given sector
    TGraphErrors ** graphRes   = new TGraphErrors *[20];
    Float_t * trfIndexArr    = new Float_t[20];
    for (Int_t icache=0; icache<20; icache++)
    {
      graphRes[icache]       = NULL;
      trfIndexArr[icache] = 0;
    }
    if (!AliTPCcalibDB::Instance()->GetTailcancelationGraphs(isec,graphRes,trfIndexArr)) continue;
    
    // fill all TGraphErrors of trfs (time response function) of a given sector to a TObjArray
    TObjArray *timeResArr = new TObjArray(20);  timeResArr -> SetOwner(kTRUE); 
    for (Int_t ires = 0;ires<20;ires++) timeResArr->AddAt(graphRes[ires],ires);
    timeResFunc.AddAt(timeResArr,isec); // Fill all trfs into a single TObjArray 
    nIonTailBins = graphRes[3]->GetN();
  }

  //
  // 1.) Make first loop to calculate mean amplitude per pad per segment for cross talk 
  //
  
  TObjArray   crossTalkSignalArray(nROCs);  // for 36 sectors 
  TVectorD  * qTotSectorOld  = new TVectorD(nROCs);
  Float_t qTotTPC = 0.;
  Float_t qTotPerSector = 0.;
  Int_t nTimeBinsAll = 1100;
  Int_t nWireSegments=11;
  // 1.a) crorstalk matrix initialization
  for (Int_t sector=0; sector<nROCs; sector++){
    TMatrixD *pcrossTalkSignal = new TMatrixD(nWireSegments,nTimeBinsAll);
    for (Int_t imatrix = 0; imatrix<11; imatrix++)
      for (Int_t jmatrix = 0; jmatrix<nTimeBinsAll; jmatrix++){
	(*pcrossTalkSignal)[imatrix][jmatrix]=0.;
      }
    crossTalkSignalArray.AddAt(pcrossTalkSignal,sector);
  }
  //  
  // main loop over rows of whole TPC
  for (Int_t globalRowID=0; globalRowID<param->GetNRowsTotal(); globalRowID++) {
    Int_t sector, padRow;
    if (!param->AdjustSectorRow(globalRowID,sector,padRow)) {
      cerr<<"AliTPC warning: invalid segment ID ! "<<globalRowID<<endl;
      continue;
    }
    // Calculate number of pads in a anode wire segment for normalization
    Int_t wireSegmentID    = param->GetWireSegment(sector,padRow);
    Float_t nPadsPerSegment = (Float_t)(param->GetNPadsPerSegment(wireSegmentID));
    // structure with mean signal per pad to be filled for each timebin in first loop (11 anodeWireSegment and 1100 timebin)
    TMatrixD &crossTalkSignal =  *((TMatrixD*)crossTalkSignalArray.At(sector));
    AliTPCCalROC * gainROC = gainTPC->GetCalROC(sector);  // pad gains per given sector
    //  digrow->SetID(globalRowID);
    Int_t nTimeBins = 0;
    Int_t nPads = 0;
    Bool_t digitize = kFALSE;
    for (Int_t i=0;i<nInputs; i++){   //here we can have more than one input  - merging of separate events, signal1+signal2+background 
      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i));
      gime = rl->GetLoader("TPCLoader");
      if (gime->TreeS()->GetEntryWithIndex(globalRowID,globalRowID) >= 0) {
        digarr[i]->ExpandBuffer();
        digarr[i]->ExpandTrackBuffer();
        nTimeBins = digarr[i]->GetNRows();
        nPads = digarr[i]->GetNCols();
        active[i] = kTRUE;
        if (!GetRegionOfInterest() || (i == 0)) digitize = kTRUE;
      } else {
        active[i] = kFALSE;
      }
      if (GetRegionOfInterest() && !digitize) break;
    }   
    if (!digitize) continue;
    //digrow->Allocate(nTimeBins,nPads);
    Float_t q    = 0;
    Int_t labptr = 0;
    Int_t nElems = nTimeBins*nPads; // element is a unit of a given row's pad-timebin space        
    for (Int_t i=0;i<nInputs; i++)
      if (active[i]) { 
        pdig[i] = digarr[i]->GetDigits();
      }
    //    
    // loop over elements i.e pad-timebin space of a row, "padNumber=elem/nTimeBins", "timeBin=elem%nTimeBins"
    // 
    for (Int_t elem=0;elem<nElems; elem++) {    
      q=0;
      labptr=0;
      // looop over digits 
      for (Int_t i=0;i<nInputs; i++) if (active[i])       { 
        q  += *(pdig[i]);
        pdig[i]++;
      }
      if (q<=0) continue;   
      Int_t padNumber = elem/nTimeBins;
      Int_t timeBin   = elem%nTimeBins;      
      Float_t gain = gainROC->GetValue(padRow,padNumber);  // get gain for given - pad-row pad
      q*= gain;
      crossTalkSignal[wireSegmentID][timeBin]+= q/nPadsPerSegment;        // Qtot per segment for a given timebin
      qTotSectorOld -> GetMatrixArray()[sector] += q;                      // Qtot for each sector
      qTotTPC += q;                                                        // Qtot for whole TPC       
    } // end of q loop
  } // end of global row loop

  //
  // 1.b) Dump the content of the crossTalk signal to the debug stremer - to be corealted later with the same crosstalk correction
  //      assumed during reconstruction 
  //
  if (AliTPCReconstructor::StreamLevel()==1) {
    //
    // dump the crosstalk matrices to tree for further investigation
    //     a.) to estimate fluctuation of pedestal in indiviula wire segments
    //     b.) to check correlation between regions
    //     c.) to check relative conribution of signal below threshold to crosstalk
    for (Int_t isector=0; isector<nROCs; isector++){  //set all ellemts of crosstalk matrix to 0
      TMatrixD * crossTalkMatrix = (TMatrixD*)crossTalkSignalArray.At(isector);
      //TMatrixD * crossTalkMatrixBelow = (TMatrixD*)fCrossTalkSignalArray->At(isector+nROCs);
      TVectorD vecAll(crossTalkMatrix->GetNrows());
      //TVectorD vecBelow(crossTalkMatrix->GetNrows());
      //
      for (Int_t itime=0; itime<crossTalkMatrix->GetNcols(); itime++){
	for (Int_t iwire=0; iwire<crossTalkMatrix->GetNrows(); iwire++){
	  vecAll[iwire]=(*crossTalkMatrix)(iwire,itime);
	  //vecBelow[iwire]=(*crossTalkMatrixBelow)(iwire,itime);
	}
	(*fDebugStreamer)<<"crosstalkMatrix"<<
	  "sector="<<isector<<
	  "itime="<<itime<<
	  "vecAll.="<<&vecAll<<                // crosstalk charge + charge below threshold
	  //"vecBelow.="<<&vecBelow<<            // crosstalk contribution from signal below threshold
	  "\n";
      }
    }
  }




  //
  // 2.) Loop over segments (padrows) of the TPC 
  //  
  for (Int_t globalRowID=0; globalRowID<param->GetNRowsTotal(); globalRowID++) {
    Int_t sector, padRow;
    if (!param->AdjustSectorRow(globalRowID,sector,padRow)) {
      cerr<<"AliTPC warning: invalid segment ID ! "<<globalRowID<<endl;
      continue;
    }
    TObjArray *arrTRF = (TObjArray*)timeResFunc.At(sector);  
    //    TGraphErrors  *graphTRF = (TGraphErrors*)arrTRF->At(1);
    Int_t wireSegmentID    = param->GetWireSegment(sector,padRow);
    Float_t nPadsPerSegment = (Float_t)(param->GetNPadsPerSegment(wireSegmentID));
    //    const Float_t ampfactor = (sector<36)?factorIROC:factorOROC;      // factor for the iontail which is ROC type dependent
    AliTPCCalROC * gainROC  = gainTPC->GetCalROC(sector);  // pad gains per given sector
    AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sector);  // noise per given sector
    digrow->SetID(globalRowID);
    Int_t nTimeBins = 0;
    Int_t nPads = 0;
    Bool_t digitize = kFALSE;
    for (Int_t i=0;i<nInputs; i++) {   //here we can have more than one input  - merging of separate events, signal1+signal2+background
      rl = AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(i));
      gime = rl->GetLoader("TPCLoader");
      if (gime->TreeS()->GetEntryWithIndex(globalRowID,globalRowID) >= 0) {
        digarr[i]->ExpandBuffer();
        digarr[i]->ExpandTrackBuffer();
        nTimeBins = digarr[i]->GetNRows();
        nPads = digarr[i]->GetNCols();
        active[i] = kTRUE;
        if (!GetRegionOfInterest() || (i == 0)) digitize = kTRUE;
      } else {
        active[i] = kFALSE;
      }
      if (GetRegionOfInterest() && !digitize) break;
    }   
    if (!digitize) continue;
    
    digrow->Allocate(nTimeBins,nPads);
    digrow->AllocateTrack(3);
    
    Int_t localPad = 0;
    Float_t q    = 0.;
    Float_t qXtalk   = 0.;
    Float_t qIonTail = 0.;
    Float_t qOrig = 0.;
    Int_t label[1000]; //stack for 300 events 
    Int_t labptr = 0;
    Int_t nElems = nTimeBins*nPads; // element is a unit of a given row's pad-timebin space    
    for (Int_t i=0;i<nInputs; i++)
      if (active[i]) { 
        pdig[i] = digarr[i]->GetDigits();
        ptr[i]  = digarr[i]->GetTracks();
      }
    Short_t *pdig1= digrow->GetDigits();
    Int_t   *ptr1= digrow->GetTracks() ;
    // loop over elements i.e pad-timebin space of a row
    for (Int_t elem=0;elem<nElems; elem++)     {     
      q=0; 
      labptr=0;
      // looop over digits 
      for (Int_t i=0;i<nInputs; i++) if (active[i]){ 
        q  += *(pdig[i]);
        for (Int_t tr=0;tr<3;tr++)         {
          Int_t lab = ptr[i][tr*nElems];
          if ( (lab > 1) && *(pdig[i])>zerosup) {
            label[labptr]=lab+masks[i];
            labptr++;
          }          
        }
        pdig[i]++;
        ptr[i]++;
      }
      Int_t padNumber = elem/nTimeBins;
      Int_t timeBin   = elem%nTimeBins;
      localPad = padNumber-nPads/2;
      
      Float_t gain = gainROC->GetValue(padRow,padNumber);  // get gain for given - pad-row pad
      //if (gain<0.5){
      //printf("problem\n");
      //}
      q*= gain;
      qOrig = q;
      Float_t noisePad = noiseROC->GetValue(padRow,padNumber);
      Float_t noise  = pTPC->GetNoise()*noisePad;
      if ( (q/16.+noise)> zerosup){
	// Crosstalk correction 
	qXtalk = (*(TMatrixD*)crossTalkSignalArray.At(sector))[wireSegmentID][timeBin];
	qTotPerSector = qTotSectorOld -> GetMatrixArray()[sector];    
	
	// Ion tail correction: being elem=padNumber*nTimeBins+timeBin;
	Int_t lowerElem=elem-nIonTailBins;    
	Int_t zeroElem =(elem/nTimeBins)*nTimeBins;
	if (zeroElem<0) zeroElem=0;
	if (lowerElem<zeroElem) lowerElem=zeroElem;
	// 
	qIonTail=0;
	if (q>0 && recoParam->GetUseIonTailCorrection()){
	  for (Int_t i=0;i<nInputs; i++) if (active[i]){ 
	    Short_t *pdigC= digarr[i]->GetDigits();
	    if (padNumber==0) continue;
	    if (padNumber>=nPads-1) continue;
	    for (Int_t dpad=-1; dpad<=1; dpad++){          // calculate iontail due signals from neigborhood pads
	      for (Int_t celem=elem-1; celem>lowerElem; celem--){
		Int_t celemPad=celem+dpad*nTimeBins;
		Double_t qCElem=pdigC[celemPad];
		if ( qCElem<=0) continue;
		//here we substract ion tail	
		Double_t COG=0;
		if (celemPad-nTimeBins>nTimeBins && celemPad+nTimeBins<nElems){   // COG calculation in respect to current pad in pad units
		  Double_t sumAmp=pdigC[celemPad-nTimeBins]+pdigC[celemPad]+pdigC[celemPad+nTimeBins];
		  COG=(-1.0*pdigC[celemPad-nTimeBins]+pdigC[celemPad+nTimeBins])/sumAmp;
		}
		Int_t indexTRFPRF = (TMath::Nint(TMath::Abs(COG*10.))%20);
		TGraphErrors  *graphTRFPRF = (TGraphErrors*)arrTRF->At(indexTRFPRF);
		if (graphTRFPRF==NULL) continue;
		// here we should get index and point of TRF corresponding to given COG position
		if (graphTRFPRF->GetY()[elem-celem]<0)qIonTail+=qCElem*graphTRFPRF->GetY()[elem-celem];
	      }
	    }
	  }
	}
      }
      //
      q -= qXtalk*recoParam->GetCrosstalkCorrection();
      q+=qIonTail;
      q/=16.;                                              //conversion factor
      q+=noise;	
      q=TMath::Nint(q);  // round to the nearest integer
      
      
      // fill info for degugging
      if (AliTPCReconstructor::StreamLevel()==1 && qOrig > zerosup ) {
        TTreeSRedirector &cstream = *fDebugStreamer;
	UInt_t uid = AliTPCROC::GetTPCUniqueID(sector, padRow, padNumber);
        cstream <<"ionTailXtalk"<<
	  "uid="<<uid<<                        // globla unique identifier
	  "sector="<< sector<<   
	  "globalRowID="<<globalRowID<<
	  "padRow="<< padRow<<                 //pad row
	  "wireSegmentID="<< wireSegmentID<<   //wire segment 0-11, 0-3 in IROC 4-10 in OROC 
	  "localPad="<<localPad<<              // pad number -npads/2 .. npads/2
	  "padNumber="<<padNumber<<            // pad number 0..npads 
	  "timeBin="<< timeBin<<               // time bin 
	  "nPadsPerSegment="<<nPadsPerSegment<<// number of pads per wire segment	  
	  "qTotPerSector="<<qTotPerSector<<    // total charge in sector 
	  //
	  "qTotTPC="<<qTotTPC<<                // acumulated charge without crosstalk and ion tail in full TPC
	  "qOrig="<< qOrig<<                   // charge in given pad-row,pad,time-bin
	  "q="<<q<<                            // q=qOrig-qXtalk-qIonTail - to check sign of the effects
	  "qXtalk="<<qXtalk<<                  // crosstal contribtion at given position
	  "qIonTail="<<qIonTail<<              // ion tail cotribution from past signal
	  "\n";
      }// dump the results to the debug streamer if in debug mode
      
      if (q > zerosup){ 
        if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
        //digrow->SetDigitFast((Short_t)q,rows,col);  
        *pdig1 =Short_t(q);
        for (Int_t tr=0;tr<3;tr++)
	  {
          if (tr<labptr) 
            ptr1[tr*nElems] = label[tr];
        }
      }
      pdig1++;
      ptr1++;
    }
     
   if (AliTPCReconstructor::StreamLevel()==1 && qOrig > zerosup ) { 
      cout << " sector = " << sector  << " row = " << padRow << " localPad = " << localPad << " SegmentID = " << wireSegmentID << " nPadsPerSegment = " <<  nPadsPerSegment << endl;
      cout << " qXtalk =   " <<  qXtalk ;
      cout << " qOrig = " <<  qOrig ;
      cout << " q = "    <<  q ;
      cout << " qsec = " <<  qTotPerSector ;
      cout << " qTotTPC "<<  qTotTPC << endl;
   }
    //
    //  glitch filter
    //
    digrow->GlitchFilter();
    //
    digrow->CompresBuffer(1,zerosup);
    digrow->CompresTrackBuffer(1);
    tree->Fill();
    if (fDebug>0) cerr<<sector<<"\t"<<padRow<<"\n";  
  } //for (Int_t n=0; n<param->GetNRowsTotal(); n++) 


  orl = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
  ogime = orl->GetLoader("TPCLoader");
  ogime->WriteDigits("OVERWRITE");

  //fDigInput->GetTreeDTPC()->Write(0,TObject::kOverwrite);

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