ROOT logo
//************************************************************************
// Copyright(c) 2004, 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$ */
/**
 * @file    AliFMDDigitizer.cxx
 * 
 * @author  Christian Holm Christensen <cholm@nbi.dk>
 * @date    Mon Mar 27 12:38:26 2006
 * @brief   FMD Digitizers implementation
 *
 * @ingroup FMD_sim
 */
//////////////////////////////////////////////////////////////////////////////
//
//  This class contains the procedures simulation ADC  signal for the
//  Forward Multiplicity detector  : SDigits->Digits
// 
//  Digits consists of
//   - Detector #
//   - Ring ID                                             
//   - Sector #     
//   - Strip #
//   - ADC count in this channel                                  
//
//  Digits consists of
//   - Detector #
//   - Ring ID                                             
//   - Sector #     
//   - Strip #
//   - Total energy deposited in the strip
//   - ADC count in this channel                                  
//
// As the Digits and SDigits have so much in common, the classes
// AliFMDDigitizer and AliFMDSDigitizer are implemented via a base
// class AliFMDBaseDigitizer.
//
//                 +---------------------+
//                 | AliFMDBaseDigitizer |
//                 +---------------------+
//                           ^
//                           |
//                +----------+---------+
//                |                    |
//      +-----------------+     +------------------+
//      | AliFMDDigitizer |	| AliFMDSDigitizer |
//      +-----------------+	+------------------+
//                |
//     +-------------------+
//     | AliFMDSSDigitizer |
//     +-------------------+
//
// These classes has several paramters: 
//
//     fPedestal
//     fPedestalWidth
//         (Only AliFMDDigitizer)
//         Mean and width of the pedestal.  The pedestal is simulated
//         by a Guassian, but derived classes my override MakePedestal
//         to simulate it differently (or pick it up from a database).
//
//     fVA1MipRange
//         The dymamic MIP range of the VA1_ALICE pre-amplifier chip 
//
//     fAltroChannelSize
//         The largest number plus one that can be stored in one
//         channel in one time step in the ALTRO ADC chip. 
//
//     fSampleRate
//         How many times the ALTRO ADC chip samples the VA1_ALICE
//         pre-amplifier signal.   The VA1_ALICE chip is read-out at
//         10MHz, while it's possible to drive the ALTRO chip at
//         25MHz.  That means, that the ALTRO chip can have time to
//         sample each VA1_ALICE signal up to 2 times.  Although it's
//         not certain this feature will be used in the production,
//         we'd like have the option, and so it should be reflected in
//         the code.
//
//
// The shaping function of the VA1_ALICE is generally given by 
//
//      f(x) = A(1 - exp(-Bx))
//
// where A is the total charge collected in the pre-amp., and B is a
// paramter that depends on the shaping time of the VA1_ALICE circut.
// 
// When simulating the shaping function of the VA1_ALICe
// pre-amp. chip, we have to take into account, that the shaping
// function depends on the previous value of read from the pre-amp. 
//
// That results in the following algorithm:
//
//    last = 0;
//    FOR charge IN pre-amp. charge train DO 
//      IF last < charge THEN 
//        f(t) = (charge - last) * (1 - exp(-B * t)) + last
//      ELSE
//        f(t) = (last - charge) * exp(-B * t) + charge)
//      ENDIF
//      FOR i IN # samples DO 
//        adc_i = f(i / (# samples))
//      DONE
//      last = charge
//   DONE
//
// Here, 
//
//   pre-amp. charge train 
//       is a series of 128 charges read from the VA1_ALICE chip
//
//   # samples
//       is the number of times the ALTRO ADC samples each of the 128
//       charges from the pre-amp. 
//
// Where Q is the total charge collected by the VA1_ALICE
// pre-amplifier.   Q is then given by 
//
//           E S 
//      Q =  - -
//           e R
//
// where E is the total energy deposited in a silicon strip, R is the
// dynamic range of the VA1_ALICE pre-amp (fVA1MipRange), e is the
// energy deposited by a single MIP, and S ALTRO channel size in each
// time step (fAltroChannelSize).  
//
// The energy deposited per MIP is given by 
//
//      e = M * rho * w 
//
// where M is the universal number 1.664, rho is the density of
// silicon, and w is the depth of the silicon sensor. 
//
// The final ADC count is given by 
//
//      C' = C + P
//
// where P is the (randomized) pedestal (see MakePedestal)
//
// This class uses the class template AliFMDMap<Type> to make an
// internal cache of the energy deposted of the hits.  The class
// template is instantasized as 
//
//  typedef AliFMDMap<std::pair<Float_t, UShort_t> > AliFMDEdepMap;
//
// The first member of the values is the summed energy deposition in a
// given strip, while the second member of the values is the number of
// hits in a given strip.  Using the second member, it's possible to
// do some checks on just how many times a strip got hit, and what
// kind of error we get in our reconstructed hits.  Note, that this
// information is currently not written to the digits tree.  I think a
// QA (Quality Assurance) digit tree is better suited for that task.
// However, the information is there to be used in the future. 
//
//
// Latest changes by Christian Holm Christensen
//
//////////////////////////////////////////////////////////////////////////////

//      /1
//      |           A(-1 + B + exp(-B))
//      | f(x) dx = ------------------- = 1
//      |                    B
//      / 0
//
// and B is the a parameter defined by the shaping time (fShapingTime).  
//
// Solving the above equation, for A gives
//
//                 B
//      A = ----------------
//          -1 + B + exp(-B)
//
// So, if we define the function g: [0,1] -> [0:1] by 
//
//               / v
//               |              Bu + exp(-Bu) - Bv - exp(-Bv) 
//      g(u,v) = | f(x) dx = -A -----------------------------
//               |                            B
//               / u
//
// we can evaluate the ALTRO sample of the VA1_ALICE pre-amp between
// any two times (u, v), by 
//       
//
//                                B	    Bu + exp(-Bu) - Bv - exp(-Bv)
//      C = Q g(u,v) = - Q ---------------- -----------------------------
//		           -1 + B + exp(-B)              B	            
//
//               Bu + exp(-Bu) - Bv - exp(-Bv) 
//        = -  Q -----------------------------
//                    -1 + B + exp(-B)
//

#include <TTree.h>		// ROOT_TTree
#include <TFile.h>
#include "AliFMDDebug.h" 	// Better debug macros
#include "AliFMDDigitizer.h"	// ALIFMDSSDIGITIZER_H
#include "AliFMD.h"		// ALIFMD_H
#include "AliFMDSDigit.h"	// ALIFMDDIGIT_H
#include "AliFMDDigit.h"	// ALIFMDDIGIT_H
#include "AliFMDParameters.h"   // ALIFMDPARAMETERS_H
#include <AliDigitizationInput.h>	// ALIRUNDIGITIZER_H
#include <AliRun.h>		// ALIRUN_H
#include <AliLoader.h>		// ALILOADER_H
#include <AliRunLoader.h>	// ALIRUNLOADER_H
    
//====================================================================
ClassImp(AliFMDDigitizer)
#if 0
;
#endif

//____________________________________________________________________
Bool_t
AliFMDDigitizer::Init()
{
  // 
  // Initialisation
  // 
  if (!AliFMDBaseDigitizer::Init()) return kFALSE;
  
#if 0
  // Get the AliRun object 
  AliRun* run = fRunLoader->GetAliRun();
  if (!run) { 
    AliWarning("Loading gAlice");
    fRunLoader->LoadgAlice();
    if (!run) { 
      AliError("Can not get Run from Run Loader");
      return kFALSE;
    }
  }
  
  // Get the AliFMD object 
  fFMD = static_cast<AliFMD*>(run->GetDetector("FMD"));
  if (!fFMD) {
    AliError("Can not get FMD from gAlice");
    return kFALSE;
  }  
#endif
  return kTRUE;
}


//____________________________________________________________________
void
AliFMDDigitizer::Digitize(Option_t*)
{
  // 
  // Execute this digitizer.  
  // This member function will be called once per event by the passed
  // AliDigitizationInput* digInput object. 
  // 
  // Parameters:
  //    options Not used 
  //
  if (!fDigInput) { 
    AliError("No digitisation input defined");
    return;
  }

  // Clear array of deposited energies 
  fEdep.Reset();

  AliRunLoader* runLoader = 0;
  if (!gAlice) { 
    TString folderName(fDigInput->GetInputFolderName(0));
    runLoader = AliRunLoader::GetRunLoader(folderName.Data());
    if (!runLoader) { 
      AliError(Form("Failed at getting run loader from %s",
		    folderName.Data()));
      return;
    }
    if (!runLoader->GetAliRun()) runLoader->LoadgAlice();
    runLoader->GetAliRun();
  }
  if (!gAlice) { 
    AliError("Can not get Run from Run Loader");
    return;
  }
  
  // Get the AliFMD object 
  fFMD = static_cast<AliFMD*>(gAlice->GetDetector("FMD"));
  if (!fFMD) {
    AliError("Can not get FMD from gAlice");
    return;
  }  


  // Loop over input files
  Int_t nFiles= fDigInput->GetNinputs();
  AliFMDDebug(1, (" Digitizing event number %d, got %d inputs",
		  fDigInput->GetOutputEventNr(), nFiles));
  for (Int_t inputFile = 0; inputFile < nFiles; inputFile++) {
    AliFMDDebug(5, ("Now reading input # %d", inputFile));
    // Get the current loader 
    AliRunLoader* currentLoader = 
      AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(inputFile));
    if (!currentLoader) { 
      Error("Exec", "no run loader for input file # %d", inputFile);
      continue;
    }

    // Cache contriutions 
    AliFMDDebug(5, ("Now summing the contributions from input # %d",inputFile));

    // Get the FMD loader 
    AliLoader* inFMD = currentLoader->GetLoader("FMDLoader");
    // And load the summable digits
    inFMD->LoadSDigits("READ");
  
    // Get the tree of summable digits
    TTree* sdigitsTree = inFMD->TreeS();
    if (!sdigitsTree)  {
      AliError("No sdigit tree from input");
      continue;
    }
    if (AliLog::GetDebugLevel("FMD","") >= 10) {
      TFile* file = sdigitsTree->GetCurrentFile();
      if (!file) {
	AliWarning("Input tree has no file!");
      }
      else { 
	AliFMDDebug(10, ("Input tree file %s content:", file->GetName()));
	file->ls();
      }
      // AliFMDDebug(5, ("Input tree %s file structure:", 
      //                 sdigitsTree->GetName()));
      // sdigitsTree->Print();
    }

    // Get the FMD branch 
    TBranch* sdigitsBranch = sdigitsTree->GetBranch("FMD");
    if (!sdigitsBranch) {
      AliError("Failed to get sdigit branch");
      return;
    }

    // Set the branch addresses 
    fFMD->SetTreeAddress();

    // Sum contributions from the sdigits
    AliFMDDebug(3, ("Will now sum contributions from SDigits"));
    SumContributions(sdigitsBranch);

    // Unload the sdigits
    inFMD->UnloadSDigits();
  }  

  TString       outFolder(fDigInput->GetOutputFolderName());
  AliRunLoader* out    = AliRunLoader::GetRunLoader(outFolder.Data());
  AliLoader*    outFMD = out->GetLoader("FMDLoader");
  if (!outFMD) { 
    AliError("Cannot get the FMDLoader output folder");
    return;
  }
  TTree* outTree = MakeOutputTree(outFMD);
  if (!outTree) { 
    AliError("Failed to get output tree");
    return;
  }
  // Set the branch address 
  fFMD->SetTreeAddress();
  
  // And digitize the cached data 
  DigitizeHits();
  
  // Fill the tree
  Int_t write = outTree->Fill();
  AliFMDDebug(5, ("Wrote %d bytes to digit tree", write));
  
  // Store the digits
  StoreDigits(outFMD);
}

//____________________________________________________________________
void
AliFMDDigitizer::SumContributions(TBranch* sdigitsBranch) 
{
  // 
  // Sum contributions from SDigits 
  // 
  // Parameters:
  //    sdigitsBranch Branch of SDigit data 
  //
  AliFMDDebug(3, ("Runnin our version of SumContributions"));

  // Get a list of hits from the FMD manager 
  TClonesArray *fmdSDigits = fFMD->SDigits();
  
  // Get number of entries in the tree 
  Int_t nevents  = Int_t(sdigitsBranch->GetEntries());
  
  Int_t read = 0;
  // Loop over the events in the 
  for (Int_t event = 0; event < nevents; event++)  {
    // Read in entry number `event' 
    read += sdigitsBranch->GetEntry(event);
    
    // Get the number of sdigits 
    Int_t nsdigits = fmdSDigits->GetEntries ();
    AliFMDDebug(3, ("Got %5d SDigits", nsdigits));
    for (Int_t sdigit = 0; sdigit < nsdigits; sdigit++) {
      // Get the sdigit number `sdigit'
      AliFMDSDigit* fmdSDigit = 
	static_cast<AliFMDSDigit*>(fmdSDigits->UncheckedAt(sdigit));

      AliFMDDebug(5, ("Adding contribution of %d tracks", 
		      fmdSDigit->GetNTrack()));
      AliFMDDebug(15, ("Contrib from FMD%d%c[%2d,%3d] (%s) from track %d", 
		       fmdSDigit->Detector(),
		       fmdSDigit->Ring(),
		       fmdSDigit->Sector(),
		       fmdSDigit->Strip(),
		       fmdSDigit->GetName(), 
		       fmdSDigit->GetTrack(0)));
      
      // Extract parameters 
      AddContribution(fmdSDigit->Detector(),
		      fmdSDigit->Ring(),
		      fmdSDigit->Sector(),
		      fmdSDigit->Strip(),
		      fmdSDigit->Edep(), 
		      kTRUE,
		      fmdSDigit->GetNTrack(),
		      fmdSDigit->GetTracks());
    }  // sdigit loop
  } // event loop


  AliFMDDebug(3, ("Size of cache: %d bytes, read %d bytes", 
		  int(sizeof(fEdep)), read));
}

//____________________________________________________________________
//
// EOF
// 




 AliFMDDigitizer.cxx:1
 AliFMDDigitizer.cxx:2
 AliFMDDigitizer.cxx:3
 AliFMDDigitizer.cxx:4
 AliFMDDigitizer.cxx:5
 AliFMDDigitizer.cxx:6
 AliFMDDigitizer.cxx:7
 AliFMDDigitizer.cxx:8
 AliFMDDigitizer.cxx:9
 AliFMDDigitizer.cxx:10
 AliFMDDigitizer.cxx:11
 AliFMDDigitizer.cxx:12
 AliFMDDigitizer.cxx:13
 AliFMDDigitizer.cxx:14
 AliFMDDigitizer.cxx:15
 AliFMDDigitizer.cxx:16
 AliFMDDigitizer.cxx:17
 AliFMDDigitizer.cxx:18
 AliFMDDigitizer.cxx:19
 AliFMDDigitizer.cxx:20
 AliFMDDigitizer.cxx:21
 AliFMDDigitizer.cxx:22
 AliFMDDigitizer.cxx:23
 AliFMDDigitizer.cxx:24
 AliFMDDigitizer.cxx:25
 AliFMDDigitizer.cxx:26
 AliFMDDigitizer.cxx:27
 AliFMDDigitizer.cxx:28
 AliFMDDigitizer.cxx:29
 AliFMDDigitizer.cxx:30
 AliFMDDigitizer.cxx:31
 AliFMDDigitizer.cxx:32
 AliFMDDigitizer.cxx:33
 AliFMDDigitizer.cxx:34
 AliFMDDigitizer.cxx:35
 AliFMDDigitizer.cxx:36
 AliFMDDigitizer.cxx:37
 AliFMDDigitizer.cxx:38
 AliFMDDigitizer.cxx:39
 AliFMDDigitizer.cxx:40
 AliFMDDigitizer.cxx:41
 AliFMDDigitizer.cxx:42
 AliFMDDigitizer.cxx:43
 AliFMDDigitizer.cxx:44
 AliFMDDigitizer.cxx:45
 AliFMDDigitizer.cxx:46
 AliFMDDigitizer.cxx:47
 AliFMDDigitizer.cxx:48
 AliFMDDigitizer.cxx:49
 AliFMDDigitizer.cxx:50
 AliFMDDigitizer.cxx:51
 AliFMDDigitizer.cxx:52
 AliFMDDigitizer.cxx:53
 AliFMDDigitizer.cxx:54
 AliFMDDigitizer.cxx:55
 AliFMDDigitizer.cxx:56
 AliFMDDigitizer.cxx:57
 AliFMDDigitizer.cxx:58
 AliFMDDigitizer.cxx:59
 AliFMDDigitizer.cxx:60
 AliFMDDigitizer.cxx:61
 AliFMDDigitizer.cxx:62
 AliFMDDigitizer.cxx:63
 AliFMDDigitizer.cxx:64
 AliFMDDigitizer.cxx:65
 AliFMDDigitizer.cxx:66
 AliFMDDigitizer.cxx:67
 AliFMDDigitizer.cxx:68
 AliFMDDigitizer.cxx:69
 AliFMDDigitizer.cxx:70
 AliFMDDigitizer.cxx:71
 AliFMDDigitizer.cxx:72
 AliFMDDigitizer.cxx:73
 AliFMDDigitizer.cxx:74
 AliFMDDigitizer.cxx:75
 AliFMDDigitizer.cxx:76
 AliFMDDigitizer.cxx:77
 AliFMDDigitizer.cxx:78
 AliFMDDigitizer.cxx:79
 AliFMDDigitizer.cxx:80
 AliFMDDigitizer.cxx:81
 AliFMDDigitizer.cxx:82
 AliFMDDigitizer.cxx:83
 AliFMDDigitizer.cxx:84
 AliFMDDigitizer.cxx:85
 AliFMDDigitizer.cxx:86
 AliFMDDigitizer.cxx:87
 AliFMDDigitizer.cxx:88
 AliFMDDigitizer.cxx:89
 AliFMDDigitizer.cxx:90
 AliFMDDigitizer.cxx:91
 AliFMDDigitizer.cxx:92
 AliFMDDigitizer.cxx:93
 AliFMDDigitizer.cxx:94
 AliFMDDigitizer.cxx:95
 AliFMDDigitizer.cxx:96
 AliFMDDigitizer.cxx:97
 AliFMDDigitizer.cxx:98
 AliFMDDigitizer.cxx:99
 AliFMDDigitizer.cxx:100
 AliFMDDigitizer.cxx:101
 AliFMDDigitizer.cxx:102
 AliFMDDigitizer.cxx:103
 AliFMDDigitizer.cxx:104
 AliFMDDigitizer.cxx:105
 AliFMDDigitizer.cxx:106
 AliFMDDigitizer.cxx:107
 AliFMDDigitizer.cxx:108
 AliFMDDigitizer.cxx:109
 AliFMDDigitizer.cxx:110
 AliFMDDigitizer.cxx:111
 AliFMDDigitizer.cxx:112
 AliFMDDigitizer.cxx:113
 AliFMDDigitizer.cxx:114
 AliFMDDigitizer.cxx:115
 AliFMDDigitizer.cxx:116
 AliFMDDigitizer.cxx:117
 AliFMDDigitizer.cxx:118
 AliFMDDigitizer.cxx:119
 AliFMDDigitizer.cxx:120
 AliFMDDigitizer.cxx:121
 AliFMDDigitizer.cxx:122
 AliFMDDigitizer.cxx:123
 AliFMDDigitizer.cxx:124
 AliFMDDigitizer.cxx:125
 AliFMDDigitizer.cxx:126
 AliFMDDigitizer.cxx:127
 AliFMDDigitizer.cxx:128
 AliFMDDigitizer.cxx:129
 AliFMDDigitizer.cxx:130
 AliFMDDigitizer.cxx:131
 AliFMDDigitizer.cxx:132
 AliFMDDigitizer.cxx:133
 AliFMDDigitizer.cxx:134
 AliFMDDigitizer.cxx:135
 AliFMDDigitizer.cxx:136
 AliFMDDigitizer.cxx:137
 AliFMDDigitizer.cxx:138
 AliFMDDigitizer.cxx:139
 AliFMDDigitizer.cxx:140
 AliFMDDigitizer.cxx:141
 AliFMDDigitizer.cxx:142
 AliFMDDigitizer.cxx:143
 AliFMDDigitizer.cxx:144
 AliFMDDigitizer.cxx:145
 AliFMDDigitizer.cxx:146
 AliFMDDigitizer.cxx:147
 AliFMDDigitizer.cxx:148
 AliFMDDigitizer.cxx:149
 AliFMDDigitizer.cxx:150
 AliFMDDigitizer.cxx:151
 AliFMDDigitizer.cxx:152
 AliFMDDigitizer.cxx:153
 AliFMDDigitizer.cxx:154
 AliFMDDigitizer.cxx:155
 AliFMDDigitizer.cxx:156
 AliFMDDigitizer.cxx:157
 AliFMDDigitizer.cxx:158
 AliFMDDigitizer.cxx:159
 AliFMDDigitizer.cxx:160
 AliFMDDigitizer.cxx:161
 AliFMDDigitizer.cxx:162
 AliFMDDigitizer.cxx:163
 AliFMDDigitizer.cxx:164
 AliFMDDigitizer.cxx:165
 AliFMDDigitizer.cxx:166
 AliFMDDigitizer.cxx:167
 AliFMDDigitizer.cxx:168
 AliFMDDigitizer.cxx:169
 AliFMDDigitizer.cxx:170
 AliFMDDigitizer.cxx:171
 AliFMDDigitizer.cxx:172
 AliFMDDigitizer.cxx:173
 AliFMDDigitizer.cxx:174
 AliFMDDigitizer.cxx:175
 AliFMDDigitizer.cxx:176
 AliFMDDigitizer.cxx:177
 AliFMDDigitizer.cxx:178
 AliFMDDigitizer.cxx:179
 AliFMDDigitizer.cxx:180
 AliFMDDigitizer.cxx:181
 AliFMDDigitizer.cxx:182
 AliFMDDigitizer.cxx:183
 AliFMDDigitizer.cxx:184
 AliFMDDigitizer.cxx:185
 AliFMDDigitizer.cxx:186
 AliFMDDigitizer.cxx:187
 AliFMDDigitizer.cxx:188
 AliFMDDigitizer.cxx:189
 AliFMDDigitizer.cxx:190
 AliFMDDigitizer.cxx:191
 AliFMDDigitizer.cxx:192
 AliFMDDigitizer.cxx:193
 AliFMDDigitizer.cxx:194
 AliFMDDigitizer.cxx:195
 AliFMDDigitizer.cxx:196
 AliFMDDigitizer.cxx:197
 AliFMDDigitizer.cxx:198
 AliFMDDigitizer.cxx:199
 AliFMDDigitizer.cxx:200
 AliFMDDigitizer.cxx:201
 AliFMDDigitizer.cxx:202
 AliFMDDigitizer.cxx:203
 AliFMDDigitizer.cxx:204
 AliFMDDigitizer.cxx:205
 AliFMDDigitizer.cxx:206
 AliFMDDigitizer.cxx:207
 AliFMDDigitizer.cxx:208
 AliFMDDigitizer.cxx:209
 AliFMDDigitizer.cxx:210
 AliFMDDigitizer.cxx:211
 AliFMDDigitizer.cxx:212
 AliFMDDigitizer.cxx:213
 AliFMDDigitizer.cxx:214
 AliFMDDigitizer.cxx:215
 AliFMDDigitizer.cxx:216
 AliFMDDigitizer.cxx:217
 AliFMDDigitizer.cxx:218
 AliFMDDigitizer.cxx:219
 AliFMDDigitizer.cxx:220
 AliFMDDigitizer.cxx:221
 AliFMDDigitizer.cxx:222
 AliFMDDigitizer.cxx:223
 AliFMDDigitizer.cxx:224
 AliFMDDigitizer.cxx:225
 AliFMDDigitizer.cxx:226
 AliFMDDigitizer.cxx:227
 AliFMDDigitizer.cxx:228
 AliFMDDigitizer.cxx:229
 AliFMDDigitizer.cxx:230
 AliFMDDigitizer.cxx:231
 AliFMDDigitizer.cxx:232
 AliFMDDigitizer.cxx:233
 AliFMDDigitizer.cxx:234
 AliFMDDigitizer.cxx:235
 AliFMDDigitizer.cxx:236
 AliFMDDigitizer.cxx:237
 AliFMDDigitizer.cxx:238
 AliFMDDigitizer.cxx:239
 AliFMDDigitizer.cxx:240
 AliFMDDigitizer.cxx:241
 AliFMDDigitizer.cxx:242
 AliFMDDigitizer.cxx:243
 AliFMDDigitizer.cxx:244
 AliFMDDigitizer.cxx:245
 AliFMDDigitizer.cxx:246
 AliFMDDigitizer.cxx:247
 AliFMDDigitizer.cxx:248
 AliFMDDigitizer.cxx:249
 AliFMDDigitizer.cxx:250
 AliFMDDigitizer.cxx:251
 AliFMDDigitizer.cxx:252
 AliFMDDigitizer.cxx:253
 AliFMDDigitizer.cxx:254
 AliFMDDigitizer.cxx:255
 AliFMDDigitizer.cxx:256
 AliFMDDigitizer.cxx:257
 AliFMDDigitizer.cxx:258
 AliFMDDigitizer.cxx:259
 AliFMDDigitizer.cxx:260
 AliFMDDigitizer.cxx:261
 AliFMDDigitizer.cxx:262
 AliFMDDigitizer.cxx:263
 AliFMDDigitizer.cxx:264
 AliFMDDigitizer.cxx:265
 AliFMDDigitizer.cxx:266
 AliFMDDigitizer.cxx:267
 AliFMDDigitizer.cxx:268
 AliFMDDigitizer.cxx:269
 AliFMDDigitizer.cxx:270
 AliFMDDigitizer.cxx:271
 AliFMDDigitizer.cxx:272
 AliFMDDigitizer.cxx:273
 AliFMDDigitizer.cxx:274
 AliFMDDigitizer.cxx:275
 AliFMDDigitizer.cxx:276
 AliFMDDigitizer.cxx:277
 AliFMDDigitizer.cxx:278
 AliFMDDigitizer.cxx:279
 AliFMDDigitizer.cxx:280
 AliFMDDigitizer.cxx:281
 AliFMDDigitizer.cxx:282
 AliFMDDigitizer.cxx:283
 AliFMDDigitizer.cxx:284
 AliFMDDigitizer.cxx:285
 AliFMDDigitizer.cxx:286
 AliFMDDigitizer.cxx:287
 AliFMDDigitizer.cxx:288
 AliFMDDigitizer.cxx:289
 AliFMDDigitizer.cxx:290
 AliFMDDigitizer.cxx:291
 AliFMDDigitizer.cxx:292
 AliFMDDigitizer.cxx:293
 AliFMDDigitizer.cxx:294
 AliFMDDigitizer.cxx:295
 AliFMDDigitizer.cxx:296
 AliFMDDigitizer.cxx:297
 AliFMDDigitizer.cxx:298
 AliFMDDigitizer.cxx:299
 AliFMDDigitizer.cxx:300
 AliFMDDigitizer.cxx:301
 AliFMDDigitizer.cxx:302
 AliFMDDigitizer.cxx:303
 AliFMDDigitizer.cxx:304
 AliFMDDigitizer.cxx:305
 AliFMDDigitizer.cxx:306
 AliFMDDigitizer.cxx:307
 AliFMDDigitizer.cxx:308
 AliFMDDigitizer.cxx:309
 AliFMDDigitizer.cxx:310
 AliFMDDigitizer.cxx:311
 AliFMDDigitizer.cxx:312
 AliFMDDigitizer.cxx:313
 AliFMDDigitizer.cxx:314
 AliFMDDigitizer.cxx:315
 AliFMDDigitizer.cxx:316
 AliFMDDigitizer.cxx:317
 AliFMDDigitizer.cxx:318
 AliFMDDigitizer.cxx:319
 AliFMDDigitizer.cxx:320
 AliFMDDigitizer.cxx:321
 AliFMDDigitizer.cxx:322
 AliFMDDigitizer.cxx:323
 AliFMDDigitizer.cxx:324
 AliFMDDigitizer.cxx:325
 AliFMDDigitizer.cxx:326
 AliFMDDigitizer.cxx:327
 AliFMDDigitizer.cxx:328
 AliFMDDigitizer.cxx:329
 AliFMDDigitizer.cxx:330
 AliFMDDigitizer.cxx:331
 AliFMDDigitizer.cxx:332
 AliFMDDigitizer.cxx:333
 AliFMDDigitizer.cxx:334
 AliFMDDigitizer.cxx:335
 AliFMDDigitizer.cxx:336
 AliFMDDigitizer.cxx:337
 AliFMDDigitizer.cxx:338
 AliFMDDigitizer.cxx:339
 AliFMDDigitizer.cxx:340
 AliFMDDigitizer.cxx:341
 AliFMDDigitizer.cxx:342
 AliFMDDigitizer.cxx:343
 AliFMDDigitizer.cxx:344
 AliFMDDigitizer.cxx:345
 AliFMDDigitizer.cxx:346
 AliFMDDigitizer.cxx:347
 AliFMDDigitizer.cxx:348
 AliFMDDigitizer.cxx:349
 AliFMDDigitizer.cxx:350
 AliFMDDigitizer.cxx:351
 AliFMDDigitizer.cxx:352
 AliFMDDigitizer.cxx:353
 AliFMDDigitizer.cxx:354
 AliFMDDigitizer.cxx:355
 AliFMDDigitizer.cxx:356
 AliFMDDigitizer.cxx:357
 AliFMDDigitizer.cxx:358
 AliFMDDigitizer.cxx:359
 AliFMDDigitizer.cxx:360
 AliFMDDigitizer.cxx:361
 AliFMDDigitizer.cxx:362
 AliFMDDigitizer.cxx:363
 AliFMDDigitizer.cxx:364
 AliFMDDigitizer.cxx:365
 AliFMDDigitizer.cxx:366
 AliFMDDigitizer.cxx:367
 AliFMDDigitizer.cxx:368
 AliFMDDigitizer.cxx:369
 AliFMDDigitizer.cxx:370
 AliFMDDigitizer.cxx:371
 AliFMDDigitizer.cxx:372
 AliFMDDigitizer.cxx:373
 AliFMDDigitizer.cxx:374
 AliFMDDigitizer.cxx:375
 AliFMDDigitizer.cxx:376
 AliFMDDigitizer.cxx:377
 AliFMDDigitizer.cxx:378
 AliFMDDigitizer.cxx:379
 AliFMDDigitizer.cxx:380
 AliFMDDigitizer.cxx:381
 AliFMDDigitizer.cxx:382
 AliFMDDigitizer.cxx:383
 AliFMDDigitizer.cxx:384
 AliFMDDigitizer.cxx:385
 AliFMDDigitizer.cxx:386
 AliFMDDigitizer.cxx:387
 AliFMDDigitizer.cxx:388
 AliFMDDigitizer.cxx:389
 AliFMDDigitizer.cxx:390
 AliFMDDigitizer.cxx:391
 AliFMDDigitizer.cxx:392
 AliFMDDigitizer.cxx:393
 AliFMDDigitizer.cxx:394
 AliFMDDigitizer.cxx:395
 AliFMDDigitizer.cxx:396
 AliFMDDigitizer.cxx:397
 AliFMDDigitizer.cxx:398
 AliFMDDigitizer.cxx:399
 AliFMDDigitizer.cxx:400
 AliFMDDigitizer.cxx:401
 AliFMDDigitizer.cxx:402
 AliFMDDigitizer.cxx:403
 AliFMDDigitizer.cxx:404
 AliFMDDigitizer.cxx:405
 AliFMDDigitizer.cxx:406
 AliFMDDigitizer.cxx:407
 AliFMDDigitizer.cxx:408
 AliFMDDigitizer.cxx:409
 AliFMDDigitizer.cxx:410
 AliFMDDigitizer.cxx:411
 AliFMDDigitizer.cxx:412
 AliFMDDigitizer.cxx:413
 AliFMDDigitizer.cxx:414
 AliFMDDigitizer.cxx:415
 AliFMDDigitizer.cxx:416
 AliFMDDigitizer.cxx:417
 AliFMDDigitizer.cxx:418
 AliFMDDigitizer.cxx:419
 AliFMDDigitizer.cxx:420
 AliFMDDigitizer.cxx:421
 AliFMDDigitizer.cxx:422
 AliFMDDigitizer.cxx:423
 AliFMDDigitizer.cxx:424
 AliFMDDigitizer.cxx:425
 AliFMDDigitizer.cxx:426
 AliFMDDigitizer.cxx:427
 AliFMDDigitizer.cxx:428
 AliFMDDigitizer.cxx:429
 AliFMDDigitizer.cxx:430
 AliFMDDigitizer.cxx:431
 AliFMDDigitizer.cxx:432
 AliFMDDigitizer.cxx:433
 AliFMDDigitizer.cxx:434
 AliFMDDigitizer.cxx:435
 AliFMDDigitizer.cxx:436
 AliFMDDigitizer.cxx:437
 AliFMDDigitizer.cxx:438
 AliFMDDigitizer.cxx:439
 AliFMDDigitizer.cxx:440
 AliFMDDigitizer.cxx:441
 AliFMDDigitizer.cxx:442
 AliFMDDigitizer.cxx:443
 AliFMDDigitizer.cxx:444
 AliFMDDigitizer.cxx:445
 AliFMDDigitizer.cxx:446
 AliFMDDigitizer.cxx:447
 AliFMDDigitizer.cxx:448
 AliFMDDigitizer.cxx:449
 AliFMDDigitizer.cxx:450
 AliFMDDigitizer.cxx:451
 AliFMDDigitizer.cxx:452
 AliFMDDigitizer.cxx:453
 AliFMDDigitizer.cxx:454