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

/* $Id$ */

//_______________________________________________________________________
//
// AliDigitizationInput.cxx
// RS: Created from former AliDigitizationInput. It does not anymore manage digitization:
// (now it is steared by the AliSimulation) but just provides input info for 
// AliDetector::SDigits2Ditits.
//
// Manager object for merging/digitization
//
// Instance of this class manages the digitization and/or merging of
// Sdigits into Digits. 
//
// Only one instance of this class is created in the macro:
//   AliDigitizationInput * manager = 
//      new AliDigitizationInput(nInputStreams,SPERB);
// where nInputStreams is number of input streams and SPERB is
// signals per background variable, which determines how combinations
// of signal and background events are generated.
// Then instances of specific detector digitizers are created:
//   AliMUONDigitizer *dMUON  = new AliMUONDigitizer(manager)
// and the I/O configured (you have to specify input files 
// and an output file). The manager connects appropriate trees from 
// the input files according a combination returned by AliMergeCombi 
// class. It creates TreeD in the output and runs once per 
// event Digitize method of all existing AliDetDigitizers 
// (without any option). AliDetDigitizers ask manager
// for a TTree with input (manager->GetInputTreeS(Int_t i),
// merge all inputs, digitize it, and save it in the TreeD 
// obtained by manager->GetTreeD(). Output events are stored with 
// numbers from 0, this default can be changed by 
// manager->SetFirstOutputEventNr(Int_t) method. The particle numbers
// in the output are shifted by MASK, which is taken from manager.
//
// The default output is to the signal file (stream 0). This can be 
// changed with the SetOutputFile(TString fn)  method.
//
// Single input file is permitted. Maximum MAXSTREAMSTOMERGE can be merged.
// Input from the memory (on-the-fly merging) is not yet 
// supported, as well as access to the input data by invoking methods
// on the output data.
//
// Access to the some data is via gAlice for now (supposing the 
// same geometry in all input files), gAlice is taken from the first 
// input file on the first stream.
//
// Example with MUON digitizer, no merging, just digitization
//
//  AliDigitizationInput * manager = new AliDigitizationInput(1,1);
//  manager->SetInputStream(0,"galice.root");
//  AliMUONDigitizer *dMUON  = new AliMUONDigitizer(manager);
//  manager->Exec("");
//
// Example with MUON digitizer, merge all events from 
//   galice.root (signal) file with events from bgr.root 
//   (background) file. Number of merged events is
//   min(number of events in galice.root, number of events in bgr.root)
//
//  AliDigitizationInput * manager = new AliDigitizationInput(2,1);
//  manager->SetInputStream(0,"galice.root");
//  manager->SetInputStream(1,"bgr.root");
//  AliMUONDigitizer *dMUON  = new AliMUONDigitizer(manager);
//  manager->Exec("");
//
// Example with MUON digitizer, save digits in a new file digits.root,
//   process only 1 event
//
//  AliDigitizationInput * manager = new AliDigitizationInput(2,1);
//  manager->SetInputStream(0,"galice.root");
//  manager->SetInputStream(1,"bgr.root");
//  manager->SetOutputFile("digits.root");
//  AliMUONDigitizer *dMUON  = new AliMUONDigitizer(manager);
//  manager->SetNrOfEventsToWrite(1);
//  manager->Exec("");
//
//_______________________________________________________________________ 

// system includes

// ROOT includes

class TList;
#include <Riostream.h>
#include <TTree.h>

// AliROOT includes

#include "AliLog.h"
#include "AliDigitizer.h"
#include "AliHeader.h"
#include "AliLoader.h"
#include "AliMergeCombi.h"
#include "AliRun.h"
#include "AliDigitizationInput.h"
#include "AliRunLoader.h"

ClassImp(AliDigitizationInput)

const TString AliDigitizationInput::fgkDefOutFolderName("Output");
const TString AliDigitizationInput::fgkBaseInFolderName("Input");


//_______________________________________________________________________
AliDigitizationInput::AliDigitizationInput(): TNamed("AliDigitizationInput","The manager for Merging"),
 fkMASKSTEP(0),
 fOutputFileName(0),
 fOutputDirName(0),
 fEvent(0),
 fNrOfEventsToWrite(0),
 fNrOfEventsWritten(0),
 fCopyTreesFromInput(0),
 fNinputs(0),
 fNinputsGiven(0),
 fRegionOfInterest(kFALSE),
 fInputStreams(0x0),
 fOutRunLoader(0x0),
 fOutputInitialized(kFALSE),
 fCombi(0),
 fCombination(0),
 fCombinationFileName(0)
{
  //
  // root requires default ctor, where no new objects can be created
  // do not use this ctor, it is supplied only for root needs
  for (Int_t i=0; i<MAXSTREAMSTOMERGE; ++i) fkMASK[i]=0;
}

//_______________________________________________________________________
AliDigitizationInput::AliDigitizationInput(Int_t nInputStreams, Int_t sperb):
 TNamed("AliDigitizationInput","The manager for Merging"),
 fkMASKSTEP(10000000),
 fOutputFileName(""),
 fOutputDirName("."),
 fEvent(0),
 fNrOfEventsToWrite(-1),
 fNrOfEventsWritten(0),
 fCopyTreesFromInput(-1),
 fNinputs(nInputStreams),
 fNinputsGiven(0),
 fRegionOfInterest(kFALSE),
 fInputStreams(new TClonesArray("AliStream",nInputStreams)),
 fOutRunLoader(0x0),
 fOutputInitialized(kFALSE),
 fCombi(new AliMergeCombi(nInputStreams,sperb)),
 fCombination(MAXSTREAMSTOMERGE),
 fCombinationFileName(0)

{
  //
  // ctor which should be used to create 
  // a manager for merging/digitization
  //
  if (nInputStreams == 0) 
   {//kidding
    AliFatal("Specify nr of input streams");
    return;
   }
  Int_t i;
  
  fkMASK[0] = 0;
  
  for (i=1;i<MAXSTREAMSTOMERGE;i++) 
   {
    fkMASK[i] = fkMASK[i-1] + fkMASKSTEP;
   }
  
  TClonesArray &lInputStreams = *fInputStreams;
  
  new(lInputStreams[0]) AliStream(fgkBaseInFolderName+(Long_t)0,"UPDATE");
  for (i=1;i<nInputStreams;i++) {
    new(lInputStreams[i]) AliStream(fgkBaseInFolderName+(Long_t)i,"READ");
  }
}
//_______________________________________________________________________

void AliDigitizationInput::Copy(TObject&) const
{
  //
  // Non implemented copy function
  //
  AliFatal("Not installed");
}

//_______________________________________________________________________

AliDigitizationInput::~AliDigitizationInput() 
{
  //
  // dtor
  //
  delete fInputStreams;
  delete fCombi;
  delete fOutRunLoader;
}

//_______________________________________________________________________
void AliDigitizationInput::SetInputStream(Int_t i, const char *inputFile, TString foldername)
{
//
// Sets the name of the input file
//
  if (i > fInputStreams->GetLast()) {
    AliError("Input stream number too high");
    return;
  }
  AliStream * stream = static_cast<AliStream*>(fInputStreams->At(i)) ; 
  if ( !foldername.IsNull() ) {
    if ( i > 0 ) 
      foldername += i ; // foldername should stay unchanged for the default output 
    stream->SetFolderName(foldername) ;
  } 
  stream->AddFile(inputFile);
}

//_______________________________________________________________________
Bool_t AliDigitizationInput::ConnectInputTrees()
{
  //
  // loads events 
  //
  Int_t eventNr[MAXSTREAMSTOMERGE], delta[MAXSTREAMSTOMERGE];
  fCombi->Combination(eventNr, delta);
  for (Int_t i=0;i<fNinputs;i++) 
   {
    if (delta[i] == 1)
     {
      AliStream *iStream = static_cast<AliStream*>(fInputStreams->At(i));//gets the "i" defined  in combination
      if (!iStream->NextEventInStream()) return kFALSE; //sets serial number
     } 
    else if (delta[i] != 0) 
     {
      AliError("Only delta 0 or 1 is implemented");
      return kFALSE;
     }
   }

  return kTRUE;
}


//_______________________________________________________________________

void AliDigitizationInput::SetOutputFile(TString fn)
{
  //
  // The output will be to separate file, 
  // not to the signal file here should be protection 
  //to avoid setting the same file as any input 
  //
  AliInfo(Form("Setting Output File Name %s ",fn.Data()));
  fOutputFileName = fn;
  // InitOutputGlobal();
}

//_______________________________________________________________________
Bool_t AliDigitizationInput::InitOutputGlobal()
{
  //
  // Creates the output file, called by InitEvent()
  // Needs to be called after all inputs are opened  
  //
  if (fOutputInitialized) return kTRUE;
  
  if ( !fOutputFileName.IsNull())
   {
    fOutRunLoader = AliRunLoader::Open(fOutputFileName,fgkDefOutFolderName,"recreate");
    
    if (fOutRunLoader == 0x0)
     {
       AliError("Can not open output");
       return kFALSE;
     }
    Info("InitOutputGlobal", " 1 %s = ", GetInputFolderName(0).Data()) ; 
    AliRunLoader* inrl = AliRunLoader::GetRunLoader(GetInputFolderName(0));
    if (inrl == 0x0)
     {
       AliError("Can not get Run Loader Input 0. Maybe yet not initialized?");
       return kFALSE;
     }
    AliDebug(2, Form(" 2 %p = ", inrl)) ; 

    //Copy all detector loaders from input 0 to output
    const TObjArray* inloaders = inrl->GetArrayOfLoaders();
    TIter next(inloaders);
    AliLoader *loader;
    while((loader = (AliLoader*)next()))
     {
       AliLoader* cloneloader = (AliLoader*)loader->Clone();
       cloneloader->Register(fOutRunLoader->GetEventFolder());//creates folders for this loader in Output Folder Structure
       GetOutRunLoader()->AddLoader(cloneloader);//adds a loader for output
     }

    fOutRunLoader->MakeTree("E");
    
    AliDebug(3,Form("file %s was opened.",fOutputFileName.Data()));
   }
  fOutputInitialized = kTRUE; 
  return kTRUE;
}
//_______________________________________________________________________

void AliDigitizationInput::InitEvent()
{
  //
  // redirects output properly
  //
  AliDebug(3,Form("fEvent = %d",fEvent));
  AliDebug(3,Form("fOutputFileName \"%s\"",fOutputFileName.Data()));
  if (fOutputInitialized == kFALSE) InitOutputGlobal();
  
  // if fOutputFileName was not given, write output to signal directory
}
//_______________________________________________________________________

void AliDigitizationInput::FinishEvent()
{
  //
  // called at the end of loop over digitizers
  //
  
  if (GetOutRunLoader() == 0x0)
   {
     AliError("fOutRunLoader is null");
     return;
   }
  
  fEvent++;
  fNrOfEventsWritten++;
  
  if (fOutRunLoader)
  {
     AliRunLoader* inrl = AliRunLoader::GetRunLoader(GetInputFolderName(0));
     AliHeader* outheader = fOutRunLoader->GetHeader();
     AliHeader* inheader = inrl->GetHeader();
     if (inheader == 0x0)
     {
       inrl->LoadHeader();
       inheader = inrl->GetHeader();
       if (inheader == 0x0) AliFatal("Can not get header from input 0");
     }
     
     outheader->SetNprimary(inheader->GetNprimary());
     outheader->SetNtrack(inheader->GetNtrack());
     outheader->SetEvent(inheader->GetEvent());
     outheader->SetEventNrInRun(inheader->GetEventNrInRun());
     outheader->SetNvertex(inheader->GetNvertex());
     fOutRunLoader->TreeE()->Fill();
  }
      
  if (fCopyTreesFromInput > -1) 
   {
    //this is sensless since no information would be coherent in case of merging
    //
    AliWarning("Copy trees from input: Copy or link files manually");
    return;
   }
}
//_______________________________________________________________________

void AliDigitizationInput::FinishGlobal()
{
  //
  // called at the end of Exec
  // save unique objects to the output file
  //
  if (GetOutRunLoader() == 0x0)
   {
     AliError("Can not get RunLoader from Output Stream folder");
     return;
   }
  GetOutRunLoader()->CdGAFile();
  this->Write(NULL, TObject::kOverwrite);
  if (fOutRunLoader)
   {
     fOutRunLoader->WriteHeader("OVERWRITE");
     fOutRunLoader->WriteRunLoader("OVERWRITE");
     TFolder* outfolder = fOutRunLoader->GetEventFolder();
     if (outfolder == 0x0)
     {
       AliError("Can not get Event Folder");
       return;
     }    
  
     AliRunLoader* inRN = AliRunLoader::GetRunLoader(GetInputFolderName(0));
     outfolder->Add(inRN->GetAliRun());
     fOutRunLoader->WriteAliRun("OVERWRITE");
   }
   
  if (fCopyTreesFromInput > -1) 
   {
     //copy files manually
   }
}
//_______________________________________________________________________

Int_t  AliDigitizationInput::GetNParticles(Int_t event) const
{
// return number of particles in all input files for a given
// event (as numbered in the output file)
// return -1 if some file cannot be accessed

  Int_t sum = 0;
  Int_t sumI;
  for (Int_t i = 0; i < fNinputs; i++) {
    sumI = GetNParticles(GetInputEventNumber(event,i), i);
    if (sumI < 0) return -1;
    sum += sumI;
  }
  return sum;
}
//_______________________________________________________________________

Int_t  AliDigitizationInput::GetNParticles(Int_t /*event*/, Int_t /*input*/) const
{
// return number of particles in input file input for a given
// event (as numbered in this input file)
// return -1 if some error

// Must be revised in the version with AliStream

  return -1;

}

//_______________________________________________________________________
Int_t* AliDigitizationInput::GetInputEventNumbers(Int_t event) const
{
// return pointer to an int array with input event numbers which were
// merged in the output event event

// simplified for now, implement later
  Int_t * a = new Int_t[MAXSTREAMSTOMERGE];
  for (Int_t i = 0; i < fNinputs; i++) {
    a[i] = event;
  }
  return a;
}
//_______________________________________________________________________
Int_t AliDigitizationInput::GetInputEventNumber(Int_t event, Int_t /*input*/) const
{
// return an event number of an eventInput from input file input
// which was merged to create output event event

// simplified for now, implement later
  return event;
}
//_______________________________________________________________________
TParticle* AliDigitizationInput::GetParticle(Int_t i, Int_t event) const
{
// return pointer to particle with index i (index with mask)

// decode the MASK
  Int_t input = i/fkMASKSTEP;
  return GetParticle(i,input,GetInputEventNumber(event,input));
}

//_______________________________________________________________________
TParticle* AliDigitizationInput::GetParticle(Int_t /*i*/, Int_t /*input*/, Int_t /*event*/) const
{
// return pointer to particle with index i in the input file input
// (index without mask)
// event is the event number in the file input
// return 0 i fit does not exist

// Must be revised in the version with AliStream

  return 0;
}

//_______________________________________________________________________
const TString& AliDigitizationInput::GetInputFolderName(Int_t i) const
{
  //
  // Get the input Folder Name
  //
  AliStream* stream = dynamic_cast<AliStream*>(fInputStreams->At(i));
  if (stream == 0x0)
    AliFatal(Form("Can not get the input stream. Index = %d. Exiting",i));
  return stream->GetFolderName();
}
//_______________________________________________________________________

const char* AliDigitizationInput::GetOutputFolderName()
{
  //
  // Get output folder name
  //
  return GetOutRunLoader()->GetEventFolder()->GetName();
}
//_______________________________________________________________________

AliRunLoader* AliDigitizationInput::GetOutRunLoader()
{
  //
  // Returns Run Loader
  //
  if (fOutRunLoader) return fOutRunLoader;
  
  if ( fOutputFileName.IsNull() )
   {//guard that sombody calls it without settting file name
    AliDebug(1,"Output file name is empty. Using Input 0 for output");
    return AliRunLoader::GetRunLoader(GetInputFolderName(0));
   }
//  InitOutputGlobal();
  return fOutRunLoader;
}
//_______________________________________________________________________

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