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

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Pre-Trigger simulation                                                //
//                                                                        //
//  Authors: F. Reidt (Felix.Reidt@cern.ch)                               //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "TFile.h"
#include "TROOT.h"

#include "TClonesArray.h"

#include "AliRun.h"
#include "AliRunLoader.h"

#include "AliTOFdigit.h"
#include "AliRawReader.h" // needed for AliTOFTrigger's raw digit support
#include "AliTOFTrigger.h"

#include "AliTRDptrgParam.h"

#include "AliTRDptrgTLMU.h"
#include "AliLog.h"

ClassImp(AliTRDptrgTLMU)

//______________________________________________________________________________
AliTRDptrgTLMU::AliTRDptrgTLMU(AliRunLoader *rl) 
  : TObject(),
  fRunLoader(rl),
  fParam(0x0),
  fOperatingMode(AliTRDptrgParam::kDigits),
  fInputMask(0x0),
  fCMatrices(0x0),
  fMultiplicity(0x0),
  fOutput(0x0) 
{
  // default ctor
 
  for (Int_t i = 0; i < 18; i++) {
    this->fTOFinputBits[i] = 0;
  }
  
  this->LoadParams();
}

//______________________________________________________________________________
AliTRDptrgTLMU::AliTRDptrgTLMU(AliRunLoader *rl,  AliTRDptrgParam *param,
                               AliTRDptrgParam::AliTRDptrgOperatingMode_t operatingMode)
  : TObject(),
  fRunLoader(rl),
  fParam(param),
  fOperatingMode(operatingMode),
  fInputMask(0x0),
  fCMatrices(0x0),
  fMultiplicity(0x0),
  fOutput(0x0) 
{
  // recommended ctor
  
  for (Int_t i = 0; i < 18; i++) {
    this->fTOFinputBits[i] = 0;
  }
 
  this->LoadParams();
}

//______________________________________________________________________________
AliTRDptrgTLMU::~AliTRDptrgTLMU() 
{
  // destructor
  
  this->fCMatrices = 0x0;
  this->fMultiplicity = 0x0;
  this->fOutput = 0x0;
}

//______________________________________________________________________________
Int_t* AliTRDptrgTLMU::Simulate() 
{
  // starts a simulation
	
  if (this->fOperatingMode == AliTRDptrgParam::kDigits) {
    this->LoadDigits();
  }	
  else if (this->fOperatingMode == AliTRDptrgParam::kHits) {
    return 0x0; // TODO
  }

  // which super modules are active? - needed for fast coincidence processing:  
  // M(sm | coincidence condition)>=2
  UInt_t temp = 0x1;
  UInt_t sm = 0x0; 
  for (Int_t iSM = 0; iSM < 18; iSM++) {
    if (this->Or(iSM)) {
      sm |= temp;
    }
    temp <<= 1;
  }
  AliDebug(4, Form("Active supermodules: 0x%x", sm));

  // get multiplicity
  UInt_t multiplicity = this->GetMultiplicitySum();
  AliDebug(4, Form("TOF/TLMU multiplicity: %d", multiplicity)); 	

  Int_t* result = new Int_t[9]; 
  result[0] = 8;
  for (Int_t iResult = 0; iResult < 8; iResult++) {
    result[iResult + 1] = 0;

    // coincidence matrix
    if (this->fOutput[iResult][0] != -1) {
      for (Int_t iLine = 0; iLine < 18; iLine++) {
        AliDebug(5, Form("Entry: %d, matrix: %d, line: %d, output: 0x%x", 
                         iResult, this->fOutput[iResult][0], iLine, sm & 
                         this->fCMatrices[this->fOutput[iResult][0]][iLine]));
        if (this->GetBitVectorMultiplicity(
	     sm & this->fCMatrices[this->fOutput[iResult][0]][iLine]) > 1) {
	  result[iResult + 1] = 1;
          break;
	}        
      }
    }
    
    // multiplicity conditions
    if (this->fOutput[iResult][1] != -1) {
      AliDebug(5, Form("Entry: %d, slice: %d", iResult, 
                       this->fOutput[iResult][1]));
      if ((this->fMultiplicity[this->fOutput[iResult][1]][0] < multiplicity) &&
          (this->fMultiplicity[this->fOutput[iResult][1]][1] >= multiplicity)) {
        result[iResult + 1] = 1;
      } 
    }
    AliDebug(4, Form("TLMU result[%d] = %d", iResult, result[iResult + 1]));
  }

  return result;
}

//______________________________________________________________________________
Int_t AliTRDptrgTLMU::LoadDigits()
{
  // loads Digits (for usage with aquired data)
  this->GetInputBits(); // get bits from AliTOFTrigger
  return 0;
}


//______________________________________________________________________________
Bool_t AliTRDptrgTLMU::LoadParams()
{
  // load AliTRDprtgParam content
	
  if (this->fParam == 0x0) {
    // no parameter object assigned
    AliWarning("no parameter object assigned - using default settings!");

    UInt_t* imask = 0x0;
    imask = new UInt_t[18];
    for (Int_t i = 0; i < 18; i++) {
      imask[i] = 0xFFFFFFFF;
    }

    this->fInputMask = imask;
    
    // TLMU Coincidence Matrices
    this->fCMatrices = new UInt_t*[3];
    this->fCMatrices[0] = new UInt_t[18];
    this->fCMatrices[1] = new UInt_t[18];
    this->fCMatrices[2] = new UInt_t[18];    

    // Matrix 0: Back-To-Back
    // Matrix 1: Back-To-Back +/-1
    // Matrix 2: Back-To-Back +/-2
    for (UInt_t iMatrix = 0; iMatrix < 3; iMatrix++) {
      for (UInt_t iSlice = 0; iSlice < 18; iSlice++) {
        if (iMatrix == 0) {
          if (iSlice < 9) {
            this->fCMatrices[iMatrix][iSlice] = 0x201 << iSlice; 
            // Back-To-Back 
            AliDebug(5, Form("fCMatrices[%d][%d]=0x%x",iMatrix,iSlice,
                             this->fCMatrices[iMatrix][iSlice]));
	  }
          // because of symmetrie the other slices are not necessary
        } 
        else if (iMatrix == 1)  {
          // Back-To-Back +/- 1
          if (iSlice < 8) {
            this->fCMatrices[iMatrix][iSlice] = 0x381 << iSlice;
          }
          else if (iSlice == 8) {
            this->fCMatrices[iMatrix][iSlice] = 0x30101;
          }
          else if (iSlice == 9) {
            this->fCMatrices[iMatrix][iSlice] = 0x20203;
          }
          else {
            this->fCMatrices[iMatrix][iSlice] = 0x407 << (iSlice - 10);
          } 
          AliDebug(5, Form("fCMatrices[%d][%d]=0x%x",iMatrix,iSlice,
                           this->fCMatrices[iMatrix][iSlice])); 
        }
        else if (iMatrix == 2) {
          // Back-To-Back +/-2
          if (iSlice < 7 ) {
            this->fCMatrices[iMatrix][iSlice] = 0xF81 << iSlice;
          }
          else if (iSlice == 7) {
            this->fCMatrices[iMatrix][iSlice] = 0x3C081;
          }
          else if (iSlice == 8) {
            this->fCMatrices[iMatrix][iSlice] = 0x38103;
          }
          else if (iSlice == 9) {
            this->fCMatrices[iMatrix][iSlice] = 0x30207;
          }
          else if (iSlice == 10) {
            this->fCMatrices[iMatrix][iSlice] = 0x2040F;
          }
          else {
            this->fCMatrices[iMatrix][iSlice] = 0x81F << (iSlice - 11);
          } 
          AliDebug(5, Form("fCMatrices[%d][%d]=0x%x",iMatrix,iSlice,
                           this->fCMatrices[iMatrix][iSlice]));     
        }
      } 
    }
 
    // Mulitplicity
    this->fMultiplicity = new UInt_t*[9];
    for (Int_t i = 0; i < 9; i++) {
      this->fMultiplicity[i] = new UInt_t[2];
    }
    this->fMultiplicity[0][0] = 0;
    this->fMultiplicity[0][1] = 10;
    this->fMultiplicity[1][0] = 10;
    this->fMultiplicity[1][1] = 25;
    this->fMultiplicity[2][0] = 25;
    this->fMultiplicity[2][1] = 50;
    this->fMultiplicity[3][0] = 50;
    this->fMultiplicity[3][1] = 100;
    this->fMultiplicity[4][0] = 100;
    this->fMultiplicity[4][1] = 200;
    this->fMultiplicity[5][0] = 200;
    this->fMultiplicity[5][1] = 350;
    this->fMultiplicity[6][0] = 350;
    this->fMultiplicity[6][1] = 400;
    this->fMultiplicity[7][0] = 400;
    this->fMultiplicity[7][1] = 576;
    this->fMultiplicity[8][0] = 100;
    this->fMultiplicity[8][1] = 576;
 
    // TLMU output
    this->fOutput = new Int_t*[8];
    for (Int_t i = 0; i < 9; i++) {
      this->fOutput[i] = new Int_t[2];
      this->fOutput[i][0] = -1;
      this->fOutput[i][1] = -1;
    }
    this->fOutput[0][0] = 0;
    this->fOutput[1][0] = 1;
    this->fOutput[2][0] = 2;
    this->fOutput[3][1] = 0;
    this->fOutput[4][1] = 1;
    this->fOutput[5][1] = 2;
    this->fOutput[6][1] = 3;
    this->fOutput[7][1] = 8;


  }
  else {
    // parameter object assigned
    
    this->fInputMask = this->fParam->GetTLMUInputMask(); 
    // input mask for TOF-bits (18x32=576)
    
    this->fCMatrices = this->fParam->GetTLMUcmatrices();
    // get coincidence matrices
 
    this->fMultiplicity = this->fParam->GetTLMUmultiplicity();
    // get multiplicity slices
  
    this->fOutput = this->fParam->GetTLMUoutput();
    // get output signal assignment
  }

  return false;
}

//______________________________________________________________________________
void AliTRDptrgTLMU::GetInputBits() {
  // Gets TOF-to-TRD input bits from AliTOFTrigger as Bool_t array

  AliTOFTrigger *toftrig = new AliTOFTrigger(); // create AliTOFTrigger 
  toftrig->CreateLTMMatrix(); // Generate LTMMatrix from AliTOFdigits 
  
  // prepare map  
  Bool_t** map = 0x0;
  map = new Bool_t*[72];
  for (Int_t i=0; i < 72; i++) 
    map[i] = new Bool_t[8];
  
  // initialise map
  for (Int_t i=0; i < 72; i++)
    for (Int_t j=0; j < 8; j++)
      map[i][j] = kFALSE;

  // get 576 TOF-to-TRD bits
  toftrig->GetTRDmap(map);

  //* DEBUG output 
  // used to determine the correct bit assignment
  AliDebug(5, "AliTOFTrigger->GetTRDmap(map):");
  for (Int_t i=0; i < 72; i++) {
    AliDebug(5, Form("%d %d%d%d%d%d%d%d%d", i, map[i][0], map[i][1], map[i][2],
                      map[i][3], map[i][4], map[i][5], map[i][6], map[i][7]));
  }
  //*/ // end of DEBUG output

  // initialise fTOFinputBits
  for (Int_t i=0; i < 18; i++) {
    this->fTOFinputBits[i] = 0;
  }

 
  // transform Bool_t array to UInt_t bitvectors according to
  // http://www.physi.uni-heidelberg.de/~schicker/cbtof/cbtof_docu.pdf
  // chapter 1.4 and 2.1 to a supermodule based structured 
  // integer (bit) array
  Int_t supermodule = -1;
  UInt_t tempA = 0x00000001;
  UInt_t tempC = 0x00010000;
  for (Int_t iLTM = 0; iLTM < (kNLTM / 2); iLTM++) {
    if (!(iLTM % 2)) { // renew temp vectors, update supermodule
      tempA = 0x00000001;
      tempC = 0x00010000;
      supermodule++;
    }
    // AliDebug(5, Form("(%2d,0x%8x,0x%8x)", iLTM, tempA, tempC));
    for (Int_t iLTMchan = 0; iLTMchan < 8; iLTMchan++) {
      // A-side
      if (map[iLTM][iLTMchan]) {
        this->fTOFinputBits[supermodule] |= tempA;        
      }
      // C-side
      if (map[iLTM + 36][iLTMchan]) {
        this->fTOFinputBits[supermodule] |= tempC;
      }
      // change temp vectors
      tempA <<= 1;
      tempC <<= 1;
    }
  }

  // handle input mask
  for (Int_t iSM = 0; iSM < 18; iSM++) {
    AliDebug(5, Form("fInputTOFinputBits[%d]=0x%x", iSM, 
             this->fTOFinputBits[iSM]));
    this->fTOFinputBits[iSM] &= this->fInputMask[iSM];
  }
}


//______________________________________________________________________________
Int_t AliTRDptrgTLMU::BackToBack(Int_t iSM, Int_t range) {
  // Check whether there is an back-to-back particle trace

  // get the counterpart of supermodule iSM
  Int_t counterPart = -1;
  if (iSM >= 9) { 
    counterPart = iSM - 9;
  }
  else  {
    counterPart = iSM + 9;
  }

  if (this->Or(iSM)) { // is there are active bits in supermodule iSM
    Int_t result = 0;
    for (Int_t i = counterPart - range; i <= counterPart + range; i++) {
      // check whether there are active bits in supermodule i (counterParts)
      if ((i >= 0) && (i < 18)) {
        if (Or(i)) {
          result++;
        }
      }
      else {
	if (i < 0) {
          if (Or(17 - i)) {
            result++;
          }
        }
        if (i > 17) {
          if (Or(i - 18)) {
            result++;
          }
        }
      }
    }
    AliDebug(5, Form("BackToBack of %d and %d+-%d\n: %d", iSM, counterPart, 
                     range, result));
    return result; // return whether there was a possible back-to-back trace
  }    
  else {
    AliDebug(5, Form("BackToBack unsuccessful, not hit in sm%d", iSM));
    return 0; // iSM did not recognize anything
  }
}

//______________________________________________________________________________
Int_t AliTRDptrgTLMU::Coincidence(Int_t iSM1, Int_t iSM2) {
  // checks whether there is an coincidence in iSM1 and iSM2

  if (this->Or(iSM1) && this->Or(iSM2)) {
    return 1;
  }
  else
    return 0;
}

//______________________________________________________________________________
inline Int_t AliTRDptrgTLMU::Or(Int_t  iSM) {
  // returns 1 if one or more bits are active in supermodule iSM
 
  if ((iSM >= 0) && (iSM < 18)) {
    if (this->fTOFinputBits[iSM] > 0)
      return 1;
    else
      return 0; 
  }
  else {
    return -1;
  }
}

//______________________________________________________________________________
Int_t AliTRDptrgTLMU::GetMultiplicity(Int_t iSM) {
  // counts how many bits equal one are in class member fTOFinputBits[iSM]
  // (32bits from TOF to TRD of supermodule iSM)

  UInt_t temp = this->fTOFinputBits[iSM];
  UInt_t mask = 0x01;
  Int_t multiplicity = 0;  
	
  for (int iBit = 0; iBit < 32; iBit++) {
    if ((mask & temp) != 0x0) { // is the bit equal one?
      multiplicity++;
    }
    mask <<= 1; // rotate mask to the left after each iteration
  }
  AliDebug(5, Form("Multiplicity of supermodule %d: %d", iSM, multiplicity));
  return multiplicity;
}

//______________________________________________________________________________
Int_t AliTRDptrgTLMU::GetMultiplicitySum() {
  // returns the multiplicity of the whole detector (all 576bit TOF to TRD bits)
  Int_t sum = 0;
  
  for (Int_t i = 0; i < 18; i++) {
    sum += this->GetMultiplicity(i);
  }
  AliDebug(5, Form("Whole multiplicity: %d", sum));
  return sum;
}

//______________________________________________________________________________
UInt_t AliTRDptrgTLMU::GetBitVectorMultiplicity(UInt_t BitVector) {
  // returns the multiplicity of a given bit vector
  
  UInt_t result = 0;
  UInt_t temp = 0x01;
  for (UInt_t iBit = 0; iBit < 32; iBit++) {
    if (BitVector & temp) {
      result++;
    }
    temp <<= 1;
  }

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