ROOT logo
/**		@file Altro.C
 *	@brief The Altro class implements the Altro digital Chain in C++
 *
 *	This Class represents a C++ version of the ALTRO. For a complete Documentation of the Altro
 *	Look at : http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/altro_chip.htm\n
 *	Due to the fact that the real ALTRO constantly samples in between the recorded events,
 *	it has the knowledge on what happened in the period. This affects the BSL1, TCF and BSL2 module.
 *	In the BSL1 the ALTRO follows slow baseline drifts e.g. temperature change, the TCF has a infinite
 *	(IIR Filter) memory of "old samples" i.e. a cluster at the start of a readout cycle will be treated
 *	differently, and the BSL2 has a 8 step pipeline. The ALTRO Class can't emulate this behavior,
 *	since the data is not recorded.\n
 *
 *	@author Roland Bramm
 *	@version $LastChangedRevision: 688 $
 *	@date    $LastChangedDate: 2005-12-16 14:07:11 +0100 (Fri, 16 Dec 2005) $
 *
 *	\verbinclude Altro/Altro.C.log
 *
 */

/////////////////////////////////////////////////////////////////////////////////////////////////////
//     Class for emulation of the ALTRO chip (Altro digital Chain) in C++                          //
//     Author: Roland Bramm                                                                        //
//                                                                                                 //
//     NOTE: This class has been modified to be conform with the coding conventions of the         //
//           ALICE Off-line Project. Keywords for setting the mode of BSC1 were modified           //
//           and are shown in the header file ...                                                  //
//                           Stefan Rossegger, 8th february 2008                                   //
/////////////////////////////////////////////////////////////////////////////////////////////////////

#include <AliTPCAltroEmulator.h>
#include <TH1F.h>
#include <TMath.h>
#include <TSystem.h>
#include <AliDAQ.h>
#include <AliRawReader.h>
#include <AliRawVEvent.h>
#include <AliRawData.h>
#include <AliRawVEquipment.h>
#include <AliRawEquipmentHeader.h>
#include <AliTPCRawStreamV3.h>
#include <TCanvas.h>
#include <AliRawDataHeader.h>
#include <AliRawDataHeaderV3.h>

/**	@brief Consturctor of Altro Class
 *
 *	Consturctor of Altro Class, some variables are set.\n
 *	The input Data is altered, so after running the complete emulation you have the
 *	Altro Processed Data in the Channel Pointer.\n
 *
 *	@param timebins an <tt> int </tt> sets the length of the input Data (Channel)
 *	@param Channel an <tt> short* </tt> Pointer to a 1d Short_tArray with the input Data
 */


ClassImp(AliTPCAltroEmulator)

AliTPCAltroEmulator::AliTPCAltroEmulator(Int_t timebins, short* Channel) : 
  TNamed(),
  ftimebins(timebins),
//  fChannelIn(Channel),
  fChannelShort(Channel), 
  fADCkeep(0),     
  fOnBSL1(0), 
  fOnTCF(0),  
  fOnBSL2(0), 
  fOnClip(0), 
  fOnZSU(0),  

  fConfiguredAltro(0),   // ConfiguredAltro
  fConfiguredBSL1(0),    // ConfiguredBSL1
  fConfiguredTCF(0),     // ConfiguredTCF
  fConfiguredTCFraw(0),     // ConfiguredTCF
  fConfiguredBSL2(0),    // ConfiguredBSL2
  fConfiguredZSU(0),     // ConfiguredZSU
  fBSL1mode(0),          // BSL1mode
  fBSL1ValuePeDestal(0), // BSL1ValuePeDestal
  fBSL1PedestalMem(0),   // BSL1PedestalMem
  fBSL1polarity(0),      // BSL1polarity

  fTCFK1(0), // K1
  fTCFK2(0), // K2
  fTCFK3(0), // K3
  fTCFL1(0), // L1
  fTCFL2(0), // L2
  fTCFL3(0), // L3

  fTCFK1Int(0), // K1Int
  fTCFK2Int(0), // K2Int
  fTCFK3Int(0), // K3Int
  fTCFL1Int(0), // L1Int
  fTCFL2Int(0), // L2Int
  fTCFL3Int(0), // L3Int

  fBSL2HighThreshold(0), // BSL2HighThreshold
  fBSL2LowThreshold(0),  // BSL2LowThreshold
  fBSL2Offset(0),        // BSL2Offset
  fBSL2Presamples(0),    // BSL2Presamples(0),
  fBSL2Postsamples(0),   // BSL2Postsamples

  fZSUThreshold(0),      // ZSUThreshold

  fZSUMinSamplesaboveThreshold(0), // ZSUMinSamplesaboveThreshold
  fZSUPresamples(0),     // ZSUPresamples
  fZSUPostsamples(0),     // ZSUPostsamples
  
  fReader(0),           // for Altro Emulation on Raw Reader
  fDecoder(0),
  fRunNumber(0), 
  fDDLFolderName("./"),
  fOutputDateFileName("./tmpRaw.date"),
  fOutputRootFileName("./tmpRaw.root"),
  fIsRandom(kTRUE),
  fChannels(0),
  fCDHs(0),
  fADCs(0),
  fTrailers(0),
  fRawData(0) {
  //
  // Constructor of Altro Class
  //

  fADCkeep = new Short_t[1024]; 

  fTCFK1IntROC[0]=0; fTCFK1IntROC[1]=0; // dummy defaults
  fTCFK2IntROC[0]=0; fTCFK2IntROC[1]=0; // dummy defaults
  fTCFK3IntROC[0]=0; fTCFK3IntROC[1]=0; // dummy defaults
  fTCFL1IntROC[0]=0; fTCFL1IntROC[1]=0; // dummy defaults
  fTCFL2IntROC[0]=0; fTCFL2IntROC[1]=0; // dummy defaults
  fTCFL3IntROC[0]=0; fTCFL3IntROC[1]=0; // dummy defaults

}



/**	@brief Destructor of Altro Class
 *
 *	Destructor of Altro Class\n
 */
AliTPCAltroEmulator::~AliTPCAltroEmulator() {
  //
  // Destructor of Altro Class
  //

  //  if(fConfiguredZSU == 1)
  delete[] fADCkeep;

  delete[] fChannels;
  delete[] fCDHs    ;
  delete[] fADCs    ;
  delete[] fTrailers;
  delete[] fRawData ;
  delete fDecoder   ;

}


/**  @brief Configures which modules of the Altro should be on.
 *
 *	Configures which modules of the Altro should be on. Each of the modules
 *	which are configured to be on, have to be configured later before running
 *	the emulation!\n
 *
 *	@param ONBaselineCorrection1 an <tt> Int_t </tt> Switch (0,1) to turn on the Base Line Correction 1 (BSL1) Module
 *	@param ONTailcancellation an <tt> Int_t </tt> Switch (0,1) to turn on the Tail Cancellation Filter (TCF) Module
 *	@param ONBaselineCorrection2 an <tt> Int_t </tt> Switch (0,1) to turn on the Moving Average Filter (BSL2) Module
 *	@param ONClipping an <tt> Int_t </tt> Switch (0,1) to turn on the Clipping Module. This is not possible in the real Altro, there it is always on.
 *	@param ONZerosuppression an <tt> Int_t </tt> Switch (0,1) to turn on the Zero Suppression (ZSU) Module
 *	@param ONDataFormatting an <tt> Int_t </tt> Switch (0,1) to turn on the Data Formatting on (not implemented)
 */
void AliTPCAltroEmulator::ConfigAltro(Int_t ONBaselineCorrection1, Int_t ONTailcancellation, Int_t ONBaselineCorrection2, Int_t ONClipping, Int_t ONZerosuppression, Int_t ONDataFormatting){
  //
  // Configures which modules of the Altro should be on 
  //
  fOnBSL1 = InRange(ONBaselineCorrection1,0,1,"AliTPCAltroEmulator::ConfigAltro","ONBaselineCorrection1");
  fOnTCF  = InRange(ONTailcancellation,0,1,"AliTPCAltroEmulator::ConfigAltro","ONTailcancellation");
  fOnBSL2 = InRange(ONBaselineCorrection2,0,1,"AliTPCAltroEmulator::ConfigAltro","ONBaselineCorrection2");
  fOnClip = InRange(ONClipping,0,1,"AliTPCAltroEmulator::ConfigAltro","ONClipping");
  fOnZSU = InRange(ONZerosuppression,0,1,"AliTPCAltroEmulator::ConfigAltro","ONZerosuppression");
  fConfiguredAltro = 1;
  if (!fConfiguredAltro) { //dummy code to avoid warning
    printf("%d\n",ONDataFormatting); // does not have to be checked
  }
}

/**  @brief Configures the Base Line Correction 1 (BSL1) Module
 *
 *	Configures the Base Line Correction 1 (BSL1) Module. You dont have to build a proper pedestalMemory
 *	array, a pointer of the correct type is enough, of course you are not allowed to use Basline
 *	Correction Modes which need then the array ...\n
 *	All configurable values are "Range checked" and if out of the Range set to the nearest extreme.
 *	So the Emulation will work, but the result is maybe not the expected one.
 *
 *	@param mode an <tt> Int_t </tt> sets the mode of the Baseline Correction. See the Altro manual for a description
 *	@param ValuePeDestal an <tt> Int_t </tt> this is the baseline of the Channel.
 *	@param PedestalMem an <tt> *Int_t </tt> Pointer to a 1d Short_t Array with the pedestal memory Data
 *	@param polarity an <tt> Int_t </tt> Switch (0,1) for the polarity
 */
void AliTPCAltroEmulator::ConfigBaselineCorrection1(Int_t mode, Int_t ValuePeDestal, Int_t *PedestalMem, Int_t polarity){
  //
  // Configures the Base Line Correction 1 (BSL1) Module
  //
  fBSL1mode          = InRange(mode,0,16,"AliTPCAltroEmulator::ConfigBaselineCorrection1","mode");
  fBSL1ValuePeDestal = InRange(ValuePeDestal,0,1023,"AliTPCAltroEmulator::BaselineCorrection1","ValuePeDestal");
  fBSL1PedestalMem = PedestalMem;
  fBSL1polarity = InRange(polarity,0,1,"AliTPCAltroEmulator::BaselineCorrection1","polarity");
  fConfiguredBSL1 = 1;
}

/**  @brief Configures the Tail Cancellation Filter (TCF) Module
 *
 *	Configures the Tail Cancellation Filter (TCF) Module. You have to set the coefficients in the
 *	Integer version.\n
 *	To convert from Int_t to Float_t use (int)*(pow(2,-16)-1)
 *	To convert from Float_t to Int_t usw (Float_t)*(pow(2,16)-1)
 *	All configurable values are "Range checked" and if out of the Range set to the nearest extreme.
 *	So the Emulation will work, but the result is maybe not the expected one.
 *
 *	@param K1 an <tt> Int_t </tt> sets the K1 coeeficient of the TCF
 *	@param K2 an <tt> Int_t </tt> sets the K2 coeeficient of the TCF
 *	@param K3 an <tt> Int_t </tt> sets the K3 coeeficient of the TCF
 *	@param L1 an <tt> Int_t </tt> sets the L1 coeeficient of the TCF
 *	@param L2 an <tt> Int_t </tt> sets the L2 coeeficient of the TCF
 *	@param L3 an <tt> Int_t </tt> sets the L3 coeeficient of the TCF
 */
void AliTPCAltroEmulator::ConfigTailCancellationFilter(Int_t K1, Int_t K2, Int_t K3, Int_t L1, Int_t L2, Int_t L3){
  //
  // Configures the Tail Cancellation Filter (TCF) Module
  //
  // conf from Int_t to fp:  (int)*(pow(2,-16)-1)
  //             backway:  (Float_t)*(pow(2,16)-1)
  fTCFK1Int = InRange(K1,0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K1");
  fTCFK2Int = InRange(K2,0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K2");
  fTCFK3Int = InRange(K3,0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K3");
  
  fTCFL1Int = InRange(L1,0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L1");
  fTCFL2Int = InRange(L2,0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L2");
  fTCFL3Int = InRange(L3,0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L3");
  fConfiguredTCF = 1;
}
void AliTPCAltroEmulator::ConfigTailCancellationFilterForRAWfiles(const Int_t *K1, const Int_t *K2, const Int_t *K3, 
								  const Int_t *L1, const Int_t *L2, const Int_t *L3){
  //
  // Configures the Tail Cancellation Filter (TCF) Module - Different settings for IROC and OROC
  //
  // conf from Int_t to fp:  (int)*(pow(2,-16)-1)
  //             backway:  (Float_t)*(pow(2,16)-1)

  // IROC
  fTCFK1IntROC[0] = InRange(K1[0],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K1[0]");
  fTCFK2IntROC[0] = InRange(K2[0],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K2[0]");
  fTCFK3IntROC[0] = InRange(K3[0],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K3[0]");
  fTCFL1IntROC[0] = InRange(L1[0],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L1[0]");
  fTCFL2IntROC[0] = InRange(L2[0],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L2[0]");
  fTCFL3IntROC[0] = InRange(L3[0],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L3[0]");
  // OROC
  fTCFK1IntROC[1] = InRange(K1[1],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K1[1]");
  fTCFK2IntROC[1] = InRange(K2[1],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K2[1]");
  fTCFK3IntROC[1] = InRange(K3[1],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","K3[1]");
  fTCFL1IntROC[1] = InRange(L1[1],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L1[1]");
  fTCFL2IntROC[1] = InRange(L2[1],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L2[1]");
  fTCFL3IntROC[1] = InRange(L3[1],0,65535,"AliTPCAltroEmulator::ConfigTailCancellationFilter","L3[1]");


  fConfiguredTCFraw = 1;
}


/**  @brief Configures the Moving Average Filter (BSL2) Module
 *
 *	Configures the Moving Average Filter (BSL2) Module.
 *	All configurable values are "Range checked" and if out of the Range set to the nearest extreme.
 *	So the Emulation will work, but the result is maybe not the expected one.
 *
 *	@param HighThreshold an <tt> Int_t </tt> sets the high Threshold
 *	@param LowThreshold an <tt> Int_t </tt> sets the low Theshold
 *	@param Offset an <tt> Int_t </tt> sets the the offset which is added to the Signal
 *	@param Presamples an <tt> Int_t </tt> sets the number of pre samples excluded from the moving average caclulation
 *	@param Postsamples an <tt> Int_t </tt> sets the number of post samples excluded from the moving average caclulation
 */
void AliTPCAltroEmulator::ConfigBaselineCorrection2(Int_t HighThreshold, Int_t LowThreshold, Int_t Offset, Int_t Presamples, Int_t Postsamples){
  //
  // Configures the Moving Average Filter (BSL2) Module
  //
  fBSL2HighThreshold = InRange(HighThreshold,0,1023,"AliTPCAltroEmulator::ConfigBaselineCorrection2","HighThreshold");
  fBSL2LowThreshold  = InRange(LowThreshold,0,1023,"AliTPCAltroEmulator::ConfigBaselineCorrection2","LowThreshold");
  fBSL2Offset        = InRange(Offset,0,1023,"AliTPCAltroEmulator::ConfigBaselineCorrection2","Offset");
  fBSL2Presamples    = InRange(Presamples,0,3,"AliTPCAltroEmulator::ConfigBaselineCorrection2","Presamples");
  fBSL2Postsamples   = InRange(Postsamples,0,15,"AliTPCAltroEmulator::ConfigBaselineCorrection2","Postsamples");
  fConfiguredBSL2 = 1;
}

/**  @brief Configures the Zero Suppression Module (ZSU)
 *
 *	Configures the Zero Suppression Module (ZSU).
 *	All configurable values are "Range checked" and if out of the Range set to the nearest extreme.
 *	So the Emulation will work, but the result is maybe not the expected one.
 *
 *	@param Threshold an <tt> Int_t </tt> sets the Threshold
 *	@param MinSamplesaboveThreshold an <tt> Int_t </tt> sets the minimum number of samples which have to be greater than the threshold
 *	@param Presamples an <tt> Int_t </tt> sets the number of pre samples which are kept
 *	@param Postsamples an <tt> Int_t </tt> sets the number of post samples which are kept
 */
void AliTPCAltroEmulator::ConfigZerosuppression(Int_t Threshold, Int_t MinSamplesaboveThreshold, Int_t Presamples, Int_t Postsamples){
  //
  // Configures the Zero Suppression Module (ZSU)
  //
  fZSUThreshold                = InRange(Threshold,0,1023,"AliTPCAltroEmulator::BaselineCorrection1","Threshold");
  fZSUMinSamplesaboveThreshold = InRange(MinSamplesaboveThreshold,1,3,"AliTPCAltroEmulator::BaselineCorrection1","MinSamplesaboveThreshold");
  fZSUPresamples               = InRange(Presamples,0,3,"AliTPCAltroEmulator::BaselineCorrection1","Presamples");
  fZSUPostsamples              = InRange(Postsamples,0,7,"AliTPCAltroEmulator::BaselineCorrection1","Postsamples");
  
  for(Int_t i = 0; i < ftimebins; i++){
    fADCkeep[i] = 0;
  }
  fConfiguredZSU = 1;
}

/**  @brief Prints the set Parameters, if module is configured
 *
 *	Prints the set Parameters, if module is configured.
 */
void AliTPCAltroEmulator::PrintParameters(){
  //
  // Prints the set Parameters, if module is configured
  //
  cout << "+-------------------------------------------+" << endl;
  cout << "| Configured Parameters of the Altro Module |" << endl;
  cout << "+-------------------------------------------+" << endl << endl;
  
  cout << "Parameters set in the Altro Modules:" << endl << endl;
  cout << "ONBaselineCorrection1: " << fOnBSL1 << endl;
  cout << "ONTailcancellation   : " << fOnTCF << endl;
  cout << "ONBaselineCorrection2: " << fOnBSL2 << endl;
  cout << "ONClipping           : " << fOnClip << endl;
  cout << "ONZerosuppression    : " << fOnZSU << endl << endl << endl;
  if(fConfiguredBSL1 == 1){
    cout << "Parameters set in the BSL1 (Baseline Correction 1) Module:" << endl << endl;
    cout << "mode                 : " << fBSL1mode << endl;
    cout << "ValuePeDestal        : " << fBSL1ValuePeDestal << endl;
    cout << "polarity             : " << fBSL1ValuePeDestal << endl << endl << endl;
  }else{
    cout << "BSL1 (Baseline Correction 1) Module not configured!" << endl << endl << endl;
  }
  if(fConfiguredTCF == 1){
    cout << "Parameters set in the TCF (TailCancellation Filter) Module:" << endl << endl;
    cout << "K1       (int|Float_t) : " << fTCFK1Int << " | " << fTCFK1Int/(Float_t)((1<<16)-1) << endl;
    cout << "K2       (int|Float_t) : " << fTCFK2Int << " | " << fTCFK2Int/(Float_t)((1<<16)-1) << endl;
    cout << "K3       (int|Float_t) : " << fTCFK3Int << " | " << fTCFK3Int/(Float_t)((1<<16)-1) << endl;
    cout << "L1       (int|Float_t) : " << fTCFL1Int << " | " << fTCFL1Int/(Float_t)((1<<16)-1) << endl;
    cout << "L2       (int|Float_t) : " << fTCFL2Int << " | " << fTCFL2Int/(Float_t)((1<<16)-1) << endl;
    cout << "L3       (int|Float_t) : " << fTCFL3Int << " | " << fTCFL3Int/(Float_t)((1<<16)-1) << endl << endl << endl;
  }else{
    cout << "TCF (TailCancellation Filter) Module not configured!" << endl << endl << endl;
  }
  if(fConfiguredBSL2 == 1){
    cout << "Parameters set in the BSL2 (Baseline Correction 2) Module:" << endl << endl;
    cout << "HighThreshold        : " << fBSL2HighThreshold << endl;
    cout << "LowThreshold         : " << fBSL2LowThreshold << endl;
    cout << "Offset               : " << fBSL2Offset << endl;
    cout << "Presamples           : " << fBSL2Presamples << endl;
    cout << "Postsamples          : " << fBSL2Postsamples << endl << endl << endl;
  }else{
    cout << "BSL2 (Baseline Correction 2) Module not configured!" << endl << endl << endl;
  }
  if(fConfiguredZSU == 1){
    cout << "Parameters set in the ZSU (Zero Suppression Unit) Module:" << endl << endl;
    cout << "Threshold            : " << fZSUThreshold << endl;
    cout << "MinSampaboveThreshold: " << fZSUMinSamplesaboveThreshold << endl;
    cout << "Presamples           : " << fZSUPresamples << endl;
    cout << "Postsamples          : " << fZSUPostsamples << endl << endl << endl;
  }else{
    cout << "ZSU (Zero Suppression Unit) Module not configured!" << endl << endl << endl;
  }
}


void AliTPCAltroEmulator::SetChannelData(Int_t timebins, Short_t* channelData) {
  //
  // Set channel data, for example a new channel
  //

  ftimebins = timebins;
  fChannelShort = channelData;

}
 

/**  @brief Runs the emulation of all configured Modules.
 *
 *	Runs the emulation of all configured Modules. This changes then the content of the
 *	input Array
 */
void AliTPCAltroEmulator::RunEmulation(Int_t roc){
  //
  // Runs the emulation of all configured Modules.
  //

  if (!fChannelShort) {
    printf("ERROR cant run Altro Emulation: Channel input not set.\nUse for example: SetChannelData(Int_t timebins, Short_t* Channel)\n");
    return;
  }

  //cout << "AliTPCAltroEmulator::RunEmulation | start" << endl;
  if(fConfiguredAltro == 0){
    cout << "ERROR cant run Altro Emulation because not configured" << endl;
    return;
  }
  
  //cout << "AliTPCAltroEmulator::RunEmulation | start BSL1 on: " << fOnBSL1 << " configures: " << fConfiguredBSL1 << endl;
  if(fOnBSL1 == 1){
    if(fConfiguredBSL1 == 1){
      BaselineCorrection1(fBSL1mode, fBSL1ValuePeDestal, fBSL1PedestalMem, fBSL1polarity);
    }else{
      cout << "ERROR cant run Baseline Correction 1 because not configured" << endl;
      return;
    }
  }
  
  //cout << "AliTPCAltroEmulator::RunEmulation | start TCF on: " << fOnTCF << " configures: " << fConfiguredTCF << endl;
  if(fOnTCF == 1){
    if (roc==-1) { // use one set of TCF params
      if(fConfiguredTCF == 1){
	TailCancellationFilterFixedPoint(fTCFK1Int, fTCFK2Int, fTCFK3Int, fTCFL1Int, fTCFL2Int, fTCFL3Int);
      }else{
	cout << "ERROR cant run Tail Cancellation Filter because not configured" << endl;
	return;
      }
    } else { // use different TCF params for IROC and OROC
      if(fConfiguredTCFraw == 1){
	if (roc==0)      //IROC
	  TailCancellationFilterFixedPoint(fTCFK1IntROC[0], fTCFK2IntROC[0], fTCFK3IntROC[0], 
					   fTCFL1IntROC[0], fTCFL2IntROC[0], fTCFL3IntROC[0]);
	else if (roc==1) // OROC
	  TailCancellationFilterFixedPoint(fTCFK1IntROC[1], fTCFK2IntROC[1], fTCFK3IntROC[1], 
					   fTCFL1IntROC[1], fTCFL2IntROC[1], fTCFL3IntROC[1]);
	else
	  cout << "ERROR cant run Tail Cancellation Filter because TCF settings for ROC not found" << endl;
      } else {
	cout << "ERROR cant run Tail Cancellation Filter because not configured (for RAW data files!)" << endl;
	return;
      }

    }
  }
  
  //cout << "AliTPCAltroEmulator::RunEmulation | start BSL2 on: " << fOnBSL2 << " configures: " << fConfiguredBSL2 << endl;
  if(fOnBSL2 == 1){
    if(fConfiguredBSL2 == 1){
      BaselineCorrection2RTL(fBSL2HighThreshold, fBSL2LowThreshold, fBSL2Offset, fBSL2Presamples, fBSL2Postsamples);
    }else{
      cout << "ERROR cant run Baseline Correction 2 because not configured" << endl;
      return;
    }
  }
  //cout << "AliTPCAltroEmulator::RunEmulation | start CLIP on: " << fOnClip << endl;
  if(fOnClip == 1){
    Clipping();
  }
  //cout << "AliTPCAltroEmulator::RunEmulation | start ZSU on: " << fOnZSU << " configures: " << fConfiguredZSU << endl;
  if(fOnZSU == 1){
    if(fConfiguredZSU == 1){
      Zerosuppression(fZSUThreshold,fZSUMinSamplesaboveThreshold,fZSUPresamples,fZSUPostsamples);
    }else{
      cout << "ERROR cant run Zero Suppression Unit because not configured" << endl;
      return;
    }
  }

  

}

void AliTPCAltroEmulator::BaselineCorrection1(Int_t mode, Int_t ValuePeDestal, Int_t *PedestalMem, Int_t polarity){
  //
  // BaselineCorrection1
  //

  //VPD == 0 !!
  Int_t fixedPeDestal = 0;

  // take first and last bins to calculate a mean pedestal value
  Int_t window = 3;
  Int_t meanPeDestal = 0;
  if (mode == kDINxMPD && ftimebins>=6) {
    for(Int_t i = 0; i < window; i++) {
      meanPeDestal += fChannelShort[i];
      meanPeDestal += fChannelShort[ftimebins-1-i];
    }
    meanPeDestal /= (window*2);
  }
    
  if(polarity ==1){
    for(Int_t i = 0; i < ftimebins; i++){
      fChannelShort[i]  = 1023 - fChannelShort[i];
    }
  }
  
  switch(mode) {
  case kDINxFPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - fixedPeDestal;
    break;
  case kDINxFT:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - PedestalMem[i];
    break;
  case kDINxFDIN:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - PedestalMem[ fChannelShort[i] ];
    break;
  case kDINxFDINxVPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - PedestalMem[ fChannelShort[i] - ValuePeDestal];
    break;
  case kDINxVPDxFPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - ValuePeDestal - fixedPeDestal;
    break;
  case kDINxVPDxFT:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - ValuePeDestal - PedestalMem[i];
    break;
  case kDINxVPDxFDIN:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - ValuePeDestal - PedestalMem[ fChannelShort[i] ];
    break;
  case kDINxVPDxFDINxVPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i]  - ValuePeDestal - PedestalMem[ fChannelShort[i] - ValuePeDestal ];
    break;
  case kFDINxFPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = PedestalMem[ fChannelShort[i] ] - fixedPeDestal;
    break;
  case kFDINxVPDxFPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = PedestalMem[ fChannelShort[i] - ValuePeDestal ] - fixedPeDestal;
    break;
  case kFTxFPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = PedestalMem[i] - fixedPeDestal;
    break;
  case kDINxMPD:
    for(Int_t i = 0; i < ftimebins; i++)
      fChannelShort[i]  = fChannelShort[i] - meanPeDestal;
    break;
  }
}

Int_t AliTPCAltroEmulator::Multiply36(Int_t P, Int_t N){
  //
  // multiply function to emulate the 36 bit fixed point multiplication of the Altro.
  //
  long long retval =0;
  long long temp = 0;
  long long vAX = 0;
  temp = (long long)P*(long long)N;
  vAX = (( Mask(temp,35,18) + ((long long)(-P)<<18) ) + Mask(temp,17,0));
  if ( Maskandshift(N,17,17) == 1){
    retval = ((Maskandshift(vAX,35,35)<<17) + Maskandshift(vAX,32,16));
  }else{
    retval = Maskandshift(temp,32,16);
  }
  return retval;
}
long long AliTPCAltroEmulator::Mask(long long in, Int_t left, Int_t right){
  //
  // mask
  //
  long long retval;
  long long pattern;
  long long length = abs(left - right)+1;
  pattern = ((((long long)1)<<length)-1)<<right;
  retval = in&pattern;
  return retval;
}

long long AliTPCAltroEmulator::Maskandshift(long long in, Int_t left, Int_t right){
  //
  // maskandshift
  //
  long long retval;
  long long pattern;
  long long length = abs(left - right)+1;
  pattern = ((((long long)1)<<length)-1);
  retval = (in>>right)&pattern;
  return retval;
}

void AliTPCAltroEmulator::TailCancellationFilterFixedPoint(Int_t K1, Int_t K2, Int_t K3, Int_t L1, Int_t L2, Int_t L3){
  //
  // TailCancellationFilterFixedPoint
  //
  Int_t c1n = 0, c2n = 0, c3n = 0;
  Int_t c1o = 0, c2o = 0, c3o = 0;
  Int_t d1  = 0, d2  = 0;
  Int_t dout = 0;
  Int_t din = 0;
  Int_t bit = 0;

  //  printf("%5d %5d %5d %5d %5d %5d\n",K1,K2,K3,L1,L2,L3);

  for(Int_t i = 0; i < ftimebins; i++){
    din = fChannelShort[i];
    
    din = (din<<2);
    c1n             = Mask( (Mask(din,17,0) + Multiply36(K1,Mask(c1o,17,0)) ) ,17,0);
    d1              = Mask( (Mask(c1n,17,0) - Multiply36(L1,Mask(c1o,17,0)) ) ,17,0);
    //d1              = Mask( (Mask(c1n,17,0) + Mask(~Multiply36(L1,Mask(c1o,17,0))+1,17,0) ) ,17,0);
    
    c2n             = Mask( (Mask(d1 ,17,0) + Multiply36(K2,Mask(c2o,17,0)) ) ,17,0);
    d2              = Mask( (Mask(c2n,17,0) - Multiply36(L2,Mask(c2o,17,0)) ) ,17,0);
    //d2              = Mask( (Mask(c2n,17,0) + Mask(~Multiply36(L2,Mask(c2o,17,0))+1,17,0) ) ,17,0);
    
    c3n             = Mask( (Mask(d2 ,17,0) + Multiply36(K3,Mask(c3o,17,0)) ) ,17,0);
    dout            = Mask( (Mask(c3n,17,0) - Multiply36(L3,Mask(c3o,17,0)) ) ,17,0);
    //dout            = Mask( (Mask(c3n,17,0) + Mask(~Multiply36(L3,Mask(c3o,17,0))+1,17,0) ) ,17,0);
    
    if( (Maskandshift(dout,2,2) == 1) || (Maskandshift(dout,1,1) == 1)){
      bit = 1;
    }else{
      bit = 0;
    }
    
    dout = ((dout>>3)<<1) + bit;
    if(Maskandshift(dout,15,15) == 1){
      //is needed to get the correct coding when getting negative results
      dout = -Mask((-Mask(dout,9,0)),9,0);
    }else{
      dout = Mask(dout,9,0);
    }
    
    fChannelShort[i] = (short) dout;
    c1o = c1n;
    c2o = c2n;
    c3o = c3n;
  }
}

void AliTPCAltroEmulator::BaselineCorrection2RTL(Int_t HighThreshold, Int_t LowThreshold, Int_t Offset, Int_t Presamples, Int_t Postsamples){
  //
  // BaselineCorrection2RTL
  //

  //cout << "Altro::BaselineCorrection2RTL | HighThreshold: " << HighThreshold << " LowThreshold: " << LowThreshold << " Offset: " << Offset << " Presamples: " << Presamples << " Postsamples: " << Postsamples << endl;
  //more or less direct "translation" of the hdl code.
  //Input signals
  Int_t din;
  Int_t dout;
  Int_t edges[6]; // = Postsamples*4 + Presamples;
  Int_t offset = Offset;
  Int_t thrlo = LowThreshold;//called thr_mau[19] ...
  Int_t thrhi = HighThreshold;
  
  // Variables
  Int_t fOld[4]; //flag pipe
  Int_t fNew[4]; //flag pipe
  Int_t dOld[4]; //data pipe
  Int_t dNew[4]; //data pipe
  Int_t dxOld;
  Int_t dxNew;
  Int_t pstscnt; // Counter for Postsamples
  Int_t zOld[9]; // Filter stages
  Int_t zNew[9]; // Filter stages
  Int_t zxOld; //Accumulator stage
  Int_t zxNew; //Accumulator stage
  Int_t valcntOld; //Valid sample counter
  Int_t valcntNew = 0; //Valid sample counter
  
  Int_t valid; //Valid flag
  Int_t fx; //postsample flag
  //Int_t s07; // differentiator result
  Int_t s8; // Acc + Diff result
  Int_t flag;
  //Int_t bsth; //baseline threshold
  //Int_t din_p; //Data input strictly positive
  Int_t bsl;
  //Int_t dx_bsls; // dx -bsl
  //Int_t dx_clip; // dxbsl clipped
  //Int_t bsl_of = 0;
  
  //initialisation
  for(Int_t i = 0; i < 9 ; i++)
    zOld[i] = 0;
  for(Int_t i = 0; i < 4 ; i++){
    fOld[i] = 0;
    dOld[i] = 0;
  }
  dxOld= 0;
  pstscnt = 0;
  zxOld = 0;
  valcntOld = 0;
  valid = 0;
  for(Int_t i = 0; i < 2 ; i++){
    edges[i] = (Presamples&(1<<i))>>i;
  }
  for(Int_t i = 0; i < 4 ; i++){
    edges[(3-i)+2] = (Postsamples&(1<<i))>>i;
  }
  /*cout << "edges :";
    for(Int_t i = 0; i < 6 ; i++)
    cout << edges[i] << ":";
    cout << " Presamples: " << Presamples << " Postsamples: " << Postsamples << endl;*/
  
  //Loop
  //cout << "AliTPCAltroEmulator::BaselineCorrection2_RTL | starting Loop" << endl;
  for(Int_t timebin = -12; timebin < ftimebins+10; timebin++){
    //cout << "AliTPCAltroEmulator::BaselineCorrection2_RTL | in Loop timebin: " << timebin << endl;
    din = GetElement(fChannelShort,timebin);
    
    s8 = zxOld + (zOld[8] - zOld[0]);
    
    if(valid == 1)
      bsl = s8>>3;// ...
    else
      bsl = 0;
    
    //assign flag = (din_p > thrhi) | (thrlo > din_p);	// Signal samples between thresholds
    if( (din <= (bsl + thrhi)) && (din >= (bsl - thrlo)) )
      flag = 0;
    else
      flag = 1;
    
    if(pstscnt == 0)
      fx = 0;
    else
      fx = 1;
    
    if(valcntOld >= 12)
      valid = 1;
    else
      valid = 0;
    
    fNew[3] = flag;
    
    if( (fOld[3] == 1) || ( (flag == 1) && ( (edges[0] == 1) || (edges[1] == 1) ) ) ) //f[2] =  f[3] | (flag&(edges[0]|edges[1]));
      fNew[2] = 1;
    else
      fNew[2] = 0;
    
    if( (fOld[2] == 1) || ( (edges[1] == 1) && (flag == 1) ) ) //		f[1] =  f[2] | (edges[1] & flag);
      fNew[1] = 1;
    else
      fNew[1] = 0;
    
    if( ( (fOld[1] == 1) || ( (flag == 1) && (edges[0] == 1) && (edges[1] == 1) )  || (fx==1) ) && (valid==1) ) //		f[0] = (f[1] | (edges[1] & edges[0] & flag) | fx) & valid;
      fNew[0] = 1;
    else
      fNew[0] = 0;
    
    dxNew = dOld[0];
    for(Int_t i = 0; i < 3; i++)
      dNew[i] = dOld[i+1];
    dNew[3] = din;
    
    if( (fOld[1]==1) && (fOld[2]==0) )
      pstscnt = Postsamples;
    else if(fx == 1)
      pstscnt--;
    
    if(fOld[0] == 0){
      if(valid == 0)
	valcntNew =  ++valcntOld;
      
      zxNew = s8;
      for(Int_t i = 0; i < 8; i++)
	zNew[i] = zOld[i+1];
      zNew[8] = dOld[0];
    }else{
      zxNew = zxOld;
      for(Int_t i = 0; i < 9; i++)
	zNew[i] = zOld[i];
    }
    dout = dxOld - (bsl - offset);
    //if(dout <0)
    //	dout = 0;
    
    SetElement(fChannelShort,timebin-5,(short)dout);
    //sim clockschange
    for(Int_t i = 0; i < 9 ; i++)
      zOld[i] = zNew[i];
    zxOld = zxNew;
    for(Int_t i = 0; i < 4 ; i++){
      fOld[i] = fNew[i];
      dOld[i] = dNew[i];
    }
    dxOld = dxNew;
    valcntOld = valcntNew;
  }
}

void AliTPCAltroEmulator::Clipping(){ 
  //
  // implement if no BC2 clipping has to run
  //
  for(Int_t i = 0; i < ftimebins; i++){
    if(fChannelShort[i] < -1)
      fChannelShort[i] = -1;
  }
}

void AliTPCAltroEmulator::Zerosuppression(Int_t Threshold, Int_t MinSamplesaboveThreshold, Int_t Presamples, Int_t Postsamples){
  //
  // add again altro feature
  //

  //TODO: Implement "Altro zsu merging"
  //Int_t Postsamplecounter = 0;
  //Int_t setPostsample = 0;

  for(Int_t i = 0; i < ftimebins; i++){
    if(fChannelShort[i] >= Threshold)
      fADCkeep[i] = 1;
    else
      fADCkeep[i] = 0;
  }

  Int_t startofclustersequence = -1;
  Int_t endofClustersInSequence = -1;
  
  for(Int_t i = 0; i < ftimebins; i++){
    if( (fADCkeep[i] == 1) && (GetElement(fADCkeep,i-1) == 0) ){
      startofclustersequence = i;
    }
    if( (fADCkeep[i] == 1) && (GetElement(fADCkeep,i+1) == 0) ){
      endofClustersInSequence = i;
    }
    //cout << i << " startofclustersequence: " << startofclustersequence << " endofClustersInSequence: " << endofClustersInSequence;
    if( (startofclustersequence != -1) && (endofClustersInSequence != -1) ){
      //cout << " found! " <<  (endofClustersInSequence - startofclustersequence + 1);
      if ( (endofClustersInSequence - startofclustersequence + 1) < MinSamplesaboveThreshold ){
	for(Int_t j = startofclustersequence; j <= endofClustersInSequence ; j++){
	  fADCkeep[j] = 0;
	}
      }
      startofclustersequence = -1;
      endofClustersInSequence = -1;
    }
    //cout << endl;
  }
  
  /*for(Int_t i = 0; i < ftimebins; i++){
    if( (GetElement(fADCkeep,i-1) == 1) && (GetElement(fADCkeep,i) == 0) && (GetElement(fADCkeep,i+1) == 1) ){
    SetElement(fADCkeep,i,1);
    }
    }*/
  
  for(Int_t i = 0; i < ftimebins; i++){
    if( (fADCkeep[i] == 1) && (GetElement(fADCkeep,i-1) == 0) ){
      for(Int_t j = i-Presamples ; j <= i; j++){
	SetElement(fADCkeep,j,1);
      }
    }
  }
  for(Int_t i = ftimebins; i >= 0; i--){
    if( (fADCkeep[i] == 1) && (GetElement(fADCkeep,i+1) == 0) ){
      for(Int_t j = i ; j <= i+Postsamples; j++){
	SetElement(fADCkeep,j,1);
      }
    }
  }
  /*cout << " Postsamplecounter: " << Postsamplecounter;
    for(Int_t j = i+1 ; j <= i+Postsamples; j++){
    SetElement(fADCkeep,j,1);
    i+=Postsamples;
    }
    cout << endl;
    }
    cout << i << " ADCK: " << GetElement(fADCkeep,i);
    cout << " Postsam: " << Postsamplecounter << " ADCK: " << GetElement(fADCkeep,i);*/
  
  for(Int_t i = 0; i < ftimebins; i++){
    if( (fADCkeep[i] == 1) && (GetElement(fADCkeep,i+1) == 0) && ( (GetElement(fADCkeep,i+3) == 1) || (GetElement(fADCkeep,i+2) == 1) ) ){
      SetElement(fADCkeep,i+1,1);
      SetElement(fADCkeep,i+2,1);
    }
  }

  for(Int_t i = 0; i < ftimebins; i++){
    if( !GetKeepChannel(i) ) {
      SetElement(fChannelShort,i,-1); // set non relevant data to -1
    }
  }


}

/**  @brief formats the data like the ALTRO. Result is a 64 bit array
 *
 *	formats the data like the ALTRO. Result is a 64 bit array
 *
 */

void AliTPCAltroEmulator::DataFormater(){
  //
  // formats the data like the ALTRO. Result is a 64 bit array
  //


}


/**  @brief calculates the compression out of the bitmask
 *
 *	calculates the compression out of the bitmask with the set adc values
 *
 * 	@return \c Float_t consisting of the compression factor
 */
Float_t AliTPCAltroEmulator::CalculateCompression() {
  //
  // calculates the compression out of the bitmask
  //

  // calculation is based on altro 10 bit words ..
  Int_t sample = 0;
  Int_t cluster = 0;
  Int_t data = 0;
  Float_t retval = 0.0;
  
  for(Int_t i = 0; i < ftimebins; i++){
    if(fADCkeep[i] == 1){
      sample++;
    }
    if( (fADCkeep[i] == 1) && (GetElement(fADCkeep,i+1) == 0) ){
      cluster++;
    }
  }
  data = sample + cluster*2;
  data = data + data%4 + 4;
  if(data >0){
    retval = ftimebins / (Float_t)data;//num of timebins is equal to max number of samples
  }else{
    retval = 1.0;
  }
  return retval;
}

Short_t AliTPCAltroEmulator::GetElement(short* Array,Int_t index){
  //
  // GetElement of array
  //
  if (index < 0)
    return 0;
  else if(index >= ftimebins)
    return 0;
  else
    return Array[index];
}

void AliTPCAltroEmulator::SetElement(short* Array,Int_t index,Short_t value){
  //
  // SetElement of array
  //
  if (index < 0)
    return;
  else if(index >= ftimebins)
    return;
  else
    Array[index] = value;
}

Int_t AliTPCAltroEmulator::InBand(Int_t ADC,Int_t bsl, Int_t LowThreshold, Int_t HighThreshold){
  //
  // check if it's within the band of search
  //
  Int_t fLow = bsl - LowThreshold;
  Int_t fHigh = bsl + HighThreshold;
  if( (ADC <= fHigh) && (ADC >= fLow) )
    return 1;
  else
    return 0;
}

Int_t AliTPCAltroEmulator::InRange(Int_t parameter,Int_t Low,Int_t High,const char *Module,const char *ParameterName){
  //
  // checks it it's within the range
  //

  char out[255];
  Int_t retval;
  if(parameter > High){
    snprintf(out,255,"Error | %s | Parameter %s is to big, has to be %d <= %s <= %d, is %d, now set to %d",Module,ParameterName,Low,ParameterName,High,parameter,High);
    cout << out << endl;
    retval = High;
  }else if(parameter < Low){
    snprintf(out,255,"Error | %s | Parameter %s is to small, has to be %d <= %s <= %d, is %d, now set to %d",Module,ParameterName,Low,ParameterName,High,parameter,Low);
    cout << out << endl;
    retval = Low;
  }else{
    retval = parameter;
  }
  return retval;
}

Short_t AliTPCAltroEmulator::GetShortChannel(Int_t i){
  //
  // GetElement of channel
  //
  return GetElement(fChannelShort,i);
}

Short_t AliTPCAltroEmulator::GetKeepChannel(Int_t i){
  //
  // GetElement of Keep Channel
  //
  return GetElement(fADCkeep,i);
}

Bool_t AliTPCAltroEmulator::WriteEvent(Int_t ievent) {
  //
  // Write event to the DDL data folders
  //

  for (Int_t ddlID=0;ddlID<216;++ddlID) {
    Bool_t  *channelsDDL=fChannels+ddlID*4096     ;
    Short_t *adcsDDL    =fADCs    +ddlID*4096*1024;
    UInt_t  *cdhDDL     =fCDHs    +ddlID*8        ;
    UInt_t  *trailerDDL =fTrailers+ddlID*9        ;
    
    FILE *file=fopen(Form("%s/raw%d/TPC_%03d.ddl",
			  fDDLFolderName.Data(),ievent,768+ddlID),
		     "wb");
    if (!file) {
      return kFALSE;
    } else { 
      Int_t i32;
      // write CDH (first word to be altered later)
      for (i32=0;i32<8;++i32)
	fRawData[i32]=cdhDDL[i32];
      
      // process payload
      for (Int_t hwaddr=0;hwaddr<4096;++hwaddr) if (channelsDDL[hwaddr]) {
	Short_t *adcsChannel=adcsDDL+hwaddr*1024;
	// merge custers
	// TODO: acqusition window
	for (Int_t it=0;it<1024-3;++it) {
	  if (adcsChannel[it]>=0&&adcsChannel[it+3]>=0) {
	    if (adcsChannel[it+1]<0) {
	      //	    printf("merge");
	      adcsChannel[it+1]=0;
	    }
	    if (adcsChannel[it+2]<0) {
	      //	    printf("merge");
	      adcsChannel[it+2]=0;
	    }
	  }
	}
	Int_t i10=3;
	Int_t icw=0;
	Int_t its=1;
	Int_t cw =0;
	Int_t ts =0;
	for (Int_t it=1023;it>=0;--it) {
	  Short_t w10=adcsChannel[it];
	  if (w10>=0) {
	    if (cw<0) {
	      icw=i10++;
	      its=i10++;
	      cw =0    ;
	      ts=it    ;
	    }
	    fRawData[i32+i10/3]|=w10<<(10*(2-i10%3));
	    ++i10;
	    ++cw;
	  }
	  else {
	    if (cw>=0) {
	      cw+=2;
	      fRawData[i32+icw/3]|=cw <<(10*(2-icw%3));
	      fRawData[i32+its/3]|=ts <<(10*(2-its%3));
	      cw=-1;
	    }
	  }
	}
	fRawData[i32]=0x1<<30|(i10-3)<<16|hwaddr;
	i32+=(i10+2)/3;
	
	// clean up
	for (Int_t i=0;i<1024;++i) adcsChannel[i]=-1;
	channelsDDL[hwaddr]=kFALSE;
      }
      
      // write RCU trailer
      fRawData[i32]=0x2<<30|(i32-8);i32++;
      for (Int_t i=0;i<8;++i)
	fRawData[i32++]=trailerDDL[i];
      
      // write first word of CDH
      fRawData[0]=i32*4;
      
      Int_t nwritten=fwrite(fRawData,sizeof(UInt_t),i32,file);
      fclose(file);

      if (nwritten!=i32) return kFALSE;
      
      // clean up
      do {fRawData[--i32]=0;} while (i32>0);
    }
  }
  return kTRUE;
}

Bool_t AliTPCAltroEmulator::GDC2DDLs(AliRawVEvent *gdc,Int_t ievent) {
  //
  // Converte GDC data to DDL format
  //
  for(Int_t iLDC=0;iLDC<gdc->GetNSubEvents();++iLDC) {
    AliRawVEvent *ldc=gdc->GetSubEvent(iLDC);
    for(Int_t iEq=0;iEq<ldc->GetNEquipments();++iEq) {
      AliRawVEquipment *eq=ldc->GetEquipment(iEq);
      AliRawEquipmentHeader *eqHeader=eq->GetEquipmentHeader();
      Int_t eqSize=eqHeader->GetEquipmentSize();
      if (eqSize>0) {
	Int_t ddlIndex;
	Int_t detId=AliDAQ::DetectorIDFromDdlID(eqHeader->GetId(),ddlIndex);
	Int_t nwritten=0;
	FILE *ddlFile=fopen(Form("%s/raw%d/%s",
				 fDDLFolderName.Data(),
				 ievent,
				 AliDAQ::DdlFileName(detId,ddlIndex)),
			    "wb");
	AliRawData *rawData=eq->GetRawData();
	if (ddlFile) {
	  nwritten=fwrite(rawData->GetBuffer(),1,rawData->GetSize(),ddlFile);
	  fclose(ddlFile);
	}
	if (nwritten<rawData->GetSize()) return kFALSE;
      }
    }
  }
  return kTRUE;
}


Bool_t AliTPCAltroEmulator::ConvertRawFilesToDate(Int_t nevents) {
  //
  //  Convertes Raw files to Date format
  //
  
  // from $ALICE_ROOT/STEER/AliSimulation.cxx
  
  char command[100];
  FILE *pipe;

  printf(" RAW to DATE CONVERSION: Run Number %d\n",fRunNumber);

  if (fRunNumber>0)
    pipe=gSystem->OpenPipe(Form("dateStream -c -s -D -o %s -C -# %d -run %d", 
				fOutputDateFileName.Data(),
				nevents,
				fRunNumber),
			   "w");
  else
    pipe=gSystem->OpenPipe(Form("dateStream -c -s -D -o %s -C -# %d", 
				fOutputDateFileName.Data(),
				nevents),
			   "w");
  if (!pipe) {
    fprintf(stderr,"error: cannot execute command: %s",command);
    return kFALSE;
  }

  for (Int_t ievent=0;ievent<nevents;++ievent) {
    UInt_t detectorPattern = 0xFFFFFFFF;
    fprintf(pipe, "GDC DetectorPattern %u\n", detectorPattern);

    Float_t ldc = 0;
    Int_t prevLDC = -1;
  
    // loop over detectors and DDLs
    for (Int_t iDet = 0; iDet < AliDAQ::kNDetectors; iDet++) {
      if (!(iDet<=5 || iDet==17 )) continue;
      for (Int_t iDDL = 0; iDDL < AliDAQ::NumberOfDdls(iDet); iDDL++) {
	//	printf("iDet=%d, iDDL=%d, filenmae=%s\n",iDet,iDDL,filename);
	Int_t ddlID = AliDAQ::DdlID(iDet,iDDL);
	Int_t ldcID = Int_t(ldc + 0.0001);
	ldc += AliDAQ::NumberOfLdcs(iDet) / AliDAQ::NumberOfDdls(iDet);

	// check existence and size of raw data file
	FILE* file = fopen(Form("%s/raw%d/%s",
				fDDLFolderName.Data(),
				ievent,
				AliDAQ::DdlFileName(iDet,iDDL)),
			   "rb");
	if (!file) continue;
	fseek(file, 0, SEEK_END);
	unsigned long size = ftell(file);
	fclose(file);
	if (!size) continue;

	if (ldcID != prevLDC) {
	  fprintf(pipe, " LDC Id %d\n", ldcID);
	  prevLDC = ldcID;
   	}
	fprintf(pipe,"  Equipment Id %d Payload %s/raw%d/%s\n",
			  ddlID,
			  fDDLFolderName.Data(),
			  ievent,
			  (char*)AliDAQ::DdlFileName(iDet,iDDL) );
      }
    }
  }
  Int_t result = gSystem->ClosePipe(pipe);
  return (result == 0);
}

void AliTPCAltroEmulator::InitBuffers() {
  // 
  // Initialization of the Buffers
  //
  if (!fChannels) fChannels=new Bool_t [216*4096     ];
  if (!fCDHs    ) fCDHs    =new UInt_t [216*8        ];
  if (!fADCs    ) fADCs    =new Short_t[216*4096*1024];
  if (!fTrailers) fTrailers=new UInt_t [216*9        ];
  if (!fRawData ) fRawData =new UInt_t [  1*4096*1024]; // be save...

  for (Int_t i=0;i<216*4096     ;++i) fChannels[i]=kFALSE;
  // no need to init CDHs
  for (Int_t i=0;i<216*4096*1024;++i) fADCs    [i]=-1    ;
  // no need to init trailers
  for (Int_t i=0;i<  1*4096*1024;++i) fRawData [i]= 0    ;
}

Bool_t AliTPCAltroEmulator::ConvertDateToRoot() {
  //
  // convert a DATE file to a root file with the program "alimdc"
  //

  // from $ALICE_ROOT/STEER/AliSimulation.cxx

  printf(" DATE to ROOT CONVERSION: Run Number %d\n",fRunNumber);

  // ALIMDC setup
  const Int_t kDBSize    = 2000000000; //2GB
  const Int_t kTagDBSize = 1000000000;
  const Bool_t kFilter = kFALSE;
  const Int_t kCompression = 1;

  //  AliInfo(Form("converting DATE file %s to root file %s", 
  //               dateFileName, rootFileName));

  const char* rawDBFS[2] = { "/tmp/mdc1", "/tmp/mdc2" };
  const char* tagDBFS    = "/tmp/mdc1/tags";

  // User defined file system locations
  if (gSystem->Getenv("ALIMDC_RAWDB1")) 
    rawDBFS[0] = gSystem->Getenv("ALIMDC_RAWDB1");
  if (gSystem->Getenv("ALIMDC_RAWDB2")) 
    rawDBFS[1] = gSystem->Getenv("ALIMDC_RAWDB2");
  if (gSystem->Getenv("ALIMDC_TAGDB")) 
    tagDBFS = gSystem->Getenv("ALIMDC_TAGDB");

  gSystem->Exec(Form("rm -rf %s",rawDBFS[0]));
  gSystem->Exec(Form("rm -rf %s",rawDBFS[1]));
  gSystem->Exec(Form("rm -rf %s",tagDBFS));

  gSystem->Exec(Form("mkdir %s",rawDBFS[0]));
  gSystem->Exec(Form("mkdir %s",rawDBFS[1]));
  gSystem->Exec(Form("mkdir %s",tagDBFS));

  Int_t result = gSystem->Exec(Form("alimdc %d %d %d %d %s", 
				    kDBSize, kTagDBSize, kFilter, kCompression, fOutputDateFileName.Data()));
  gSystem->Exec(Form("mv %s/*.root %s", rawDBFS[0],fOutputRootFileName.Data()));

  gSystem->Exec(Form("rm -rf %s",rawDBFS[0]));
  gSystem->Exec(Form("rm -rf %s",rawDBFS[1]));
  gSystem->Exec(Form("rm -rf %s",tagDBFS));

  return (result == 0);
}

void AliTPCAltroEmulator::RunEmulationOnRAWdata(AliRawReader *reader, Int_t plotFlag) {
  //
  // Run the Altro Emulation on a full Raw data set (AliRawReader)
  // plus write the outcome in a RAW data format
  //

  if (!reader) {
    printf("ERROR cant run Altro Emulation: AliRawReader is zero. No RAW data file.\n");
    return;
  }

  fReader=reader;
  if (fDecoder) delete fDecoder;
  fDecoder=new AliTPCRawStreamV3(reader);

  InitBuffers();
  
  Int_t chanCount=0;
  TH1F hisO("DINO","DINO",1024,0,1024); 
  TH1F his("DIN","DIN",1024,0,1024); 
  his.GetYaxis()->SetRangeUser(-20,90);
  Short_t *data = new Short_t[1024]; 
  TCanvas *c1 =0;
  if (plotFlag) {
    c1 = new TCanvas("c1","c1");
    c1->SetGridx(); c1->SetGridy();
  }

  // event loop
  Int_t ievent=0;
  while (fReader->NextEvent()) {
    
    if (fReader->GetRunNumber()>0) fRunNumber=fReader->GetRunNumber();
    gSystem->Exec(Form("mkdir -p %s/raw%d/",fDDLFolderName.Data(),ievent));
    GDC2DDLs(const_cast<AliRawVEvent*>(fReader->GetEvent()),ievent);
    
    Int_t ddlC =0;
    while (fDecoder->NextDDL()) {
      Int_t ddlID=fDecoder->GetDDLNumber();
      printf("ddl: %d (%d/216)\n",ddlID,++ddlC);
     
      Bool_t  *channelsDDL=fChannels+ddlID*4096      ;
      Short_t *adcsDDL    =fADCs    +ddlID*4096*1024 ;
      UInt_t  *cdhDDL     =fCDHs    +ddlID*8         ;
      UInt_t  *trailerDDL =fTrailers+ddlID*9         ;
      
      // CDH 
      const AliRawDataHeader * cdh = fReader->GetDataHeader();
      const AliRawDataHeaderV3 * cdhV3 = fReader->GetDataHeaderV3();
      for (Int_t i=0;i<8;++i) {
      	// just to show how ugly it is...
	if (cdh)
	  cdhDDL[i]=reinterpret_cast<UInt_t*>(const_cast<AliRawDataHeader*>(cdh))[i]; 
	if (cdhV3)
	  cdhDDL[i]=reinterpret_cast<UInt_t*>(const_cast<AliRawDataHeaderV3*>(cdhV3))[i]; 
      }
      // PAYLOAD
      while (fDecoder->NextChannel()) {
	Int_t hwaddr=fDecoder->GetHWAddress();
	Int_t sector=fDecoder->GetSector();
	Int_t row=fDecoder->GetRow();
	Int_t pad=fDecoder->GetPad();
	Short_t *adcsChannel=adcsDDL+hwaddr*1024;
	while (fDecoder->NextBunch()) {
	  UInt_t          ts     =fDecoder->GetStartTimeBin();
	  Int_t           cw     =fDecoder->GetBunchLength() ;
	  const UShort_t *signals=fDecoder->GetSignals()     ;
	  for (Int_t ci=0;ci<cw;++ci) {
	    Short_t s=signals[ci];
	    Int_t   t=ts-ci;
	    // TODO aqcuisition window
	    if (0<=t&&t<(1024-3)) {
	      channelsDDL[hwaddr]=kTRUE;
	      if (adcsChannel[t]<0)
		adcsChannel[t]=s;
	      else
		adcsChannel[t]+=s;
	      if (adcsChannel[t]>0x3ff)
		adcsChannel[t]=0x3ff;
	    }
	  }
	}

	// search start of aquisition
	Int_t t0 = 0; 	 while (adcsChannel[t0]==-1) t0++;
	// search end of aquisition
	Int_t tE = 1024; while (adcsChannel[tE]==-1) tE--;
	
	// channel is complete - Perform Altro Emulation
	if (plotFlag!=0 && !(chanCount%plotFlag) ) {
	  for (Int_t t=0; t<1024; t++) {
	    his.SetBinContent(t+1,adcsChannel[t]);
	  }
	  his.SetTitle(Form("sig_sec%d_row%d_pad%d",sector,row,pad));
	  his.SetStats(0); his.GetXaxis()->SetTitle("timebin"); 
	  his.DrawCopy();
	}

	// FEED THE ALTRO EMULATOR WITH CLEAN SIGNAL (no aquisition-window ghosts)
	Int_t timebins = tE-t0+1;
	for (Int_t t=t0;t<(t0+timebins);t++)
	  data[t-t0]=adcsChannel[t];
	SetChannelData(timebins,data);
	
	Int_t roc = (sector%36)>=18; // 0 for IROC, 1 for OROC
	RunEmulation(roc); 
	for (Int_t t=t0;t<(t0+timebins);t++) 
	  adcsChannel[t]=data[t-t0];
	  
	if (plotFlag!=0 && !(chanCount%plotFlag) ) {
	  for (Int_t t=0; t<1024; t++)
	    hisO.SetBinContent(t+1,adcsChannel[t]);
	  hisO.SetStats(0); hisO.SetLineColor(2);
	  hisO.DrawCopy("same");
	    
	  c1->SaveAs(Form("%s/sig_sec%02d_row%02d_pad%03d_%s_%d%d%d%d%d.png",
			  fDDLFolderName.Data(),sector,row,pad,
			  fOutputRootFileName.Data(),
			  fOnBSL1,fOnTCF,fOnBSL2,fOnClip,fOnZSU));
	    
	  his.Reset();
	  hisO.Reset();

	}
	chanCount++;

      }
      
      // TRAILER 
      UChar_t *rcuTrailer;
      fDecoder->GetRCUTrailerData(rcuTrailer);
      for (Int_t i=0;i<= /* (!) */ fDecoder->GetRCUTrailerSize()/4;++i)
      	trailerDDL[i]=reinterpret_cast<UInt_t*>(rcuTrailer)[i]; // again: UGLY!
      
    }
            
    if (ddlC>0) WriteEvent(ievent++);
  }

  delete[] data; // free space

  // convert to date and back
  ConvertRawFilesToDate(ievent);
  ConvertDateToRoot();


}
 AliTPCAltroEmulator.cxx:1
 AliTPCAltroEmulator.cxx:2
 AliTPCAltroEmulator.cxx:3
 AliTPCAltroEmulator.cxx:4
 AliTPCAltroEmulator.cxx:5
 AliTPCAltroEmulator.cxx:6
 AliTPCAltroEmulator.cxx:7
 AliTPCAltroEmulator.cxx:8
 AliTPCAltroEmulator.cxx:9
 AliTPCAltroEmulator.cxx:10
 AliTPCAltroEmulator.cxx:11
 AliTPCAltroEmulator.cxx:12
 AliTPCAltroEmulator.cxx:13
 AliTPCAltroEmulator.cxx:14
 AliTPCAltroEmulator.cxx:15
 AliTPCAltroEmulator.cxx:16
 AliTPCAltroEmulator.cxx:17
 AliTPCAltroEmulator.cxx:18
 AliTPCAltroEmulator.cxx:19
 AliTPCAltroEmulator.cxx:20
 AliTPCAltroEmulator.cxx:21
 AliTPCAltroEmulator.cxx:22
 AliTPCAltroEmulator.cxx:23
 AliTPCAltroEmulator.cxx:24
 AliTPCAltroEmulator.cxx:25
 AliTPCAltroEmulator.cxx:26
 AliTPCAltroEmulator.cxx:27
 AliTPCAltroEmulator.cxx:28
 AliTPCAltroEmulator.cxx:29
 AliTPCAltroEmulator.cxx:30
 AliTPCAltroEmulator.cxx:31
 AliTPCAltroEmulator.cxx:32
 AliTPCAltroEmulator.cxx:33
 AliTPCAltroEmulator.cxx:34
 AliTPCAltroEmulator.cxx:35
 AliTPCAltroEmulator.cxx:36
 AliTPCAltroEmulator.cxx:37
 AliTPCAltroEmulator.cxx:38
 AliTPCAltroEmulator.cxx:39
 AliTPCAltroEmulator.cxx:40
 AliTPCAltroEmulator.cxx:41
 AliTPCAltroEmulator.cxx:42
 AliTPCAltroEmulator.cxx:43
 AliTPCAltroEmulator.cxx:44
 AliTPCAltroEmulator.cxx:45
 AliTPCAltroEmulator.cxx:46
 AliTPCAltroEmulator.cxx:47
 AliTPCAltroEmulator.cxx:48
 AliTPCAltroEmulator.cxx:49
 AliTPCAltroEmulator.cxx:50
 AliTPCAltroEmulator.cxx:51
 AliTPCAltroEmulator.cxx:52
 AliTPCAltroEmulator.cxx:53
 AliTPCAltroEmulator.cxx:54
 AliTPCAltroEmulator.cxx:55
 AliTPCAltroEmulator.cxx:56
 AliTPCAltroEmulator.cxx:57
 AliTPCAltroEmulator.cxx:58
 AliTPCAltroEmulator.cxx:59
 AliTPCAltroEmulator.cxx:60
 AliTPCAltroEmulator.cxx:61
 AliTPCAltroEmulator.cxx:62
 AliTPCAltroEmulator.cxx:63
 AliTPCAltroEmulator.cxx:64
 AliTPCAltroEmulator.cxx:65
 AliTPCAltroEmulator.cxx:66
 AliTPCAltroEmulator.cxx:67
 AliTPCAltroEmulator.cxx:68
 AliTPCAltroEmulator.cxx:69
 AliTPCAltroEmulator.cxx:70
 AliTPCAltroEmulator.cxx:71
 AliTPCAltroEmulator.cxx:72
 AliTPCAltroEmulator.cxx:73
 AliTPCAltroEmulator.cxx:74
 AliTPCAltroEmulator.cxx:75
 AliTPCAltroEmulator.cxx:76
 AliTPCAltroEmulator.cxx:77
 AliTPCAltroEmulator.cxx:78
 AliTPCAltroEmulator.cxx:79
 AliTPCAltroEmulator.cxx:80
 AliTPCAltroEmulator.cxx:81
 AliTPCAltroEmulator.cxx:82
 AliTPCAltroEmulator.cxx:83
 AliTPCAltroEmulator.cxx:84
 AliTPCAltroEmulator.cxx:85
 AliTPCAltroEmulator.cxx:86
 AliTPCAltroEmulator.cxx:87
 AliTPCAltroEmulator.cxx:88
 AliTPCAltroEmulator.cxx:89
 AliTPCAltroEmulator.cxx:90
 AliTPCAltroEmulator.cxx:91
 AliTPCAltroEmulator.cxx:92
 AliTPCAltroEmulator.cxx:93
 AliTPCAltroEmulator.cxx:94
 AliTPCAltroEmulator.cxx:95
 AliTPCAltroEmulator.cxx:96
 AliTPCAltroEmulator.cxx:97
 AliTPCAltroEmulator.cxx:98
 AliTPCAltroEmulator.cxx:99
 AliTPCAltroEmulator.cxx:100
 AliTPCAltroEmulator.cxx:101
 AliTPCAltroEmulator.cxx:102
 AliTPCAltroEmulator.cxx:103
 AliTPCAltroEmulator.cxx:104
 AliTPCAltroEmulator.cxx:105
 AliTPCAltroEmulator.cxx:106
 AliTPCAltroEmulator.cxx:107
 AliTPCAltroEmulator.cxx:108
 AliTPCAltroEmulator.cxx:109
 AliTPCAltroEmulator.cxx:110
 AliTPCAltroEmulator.cxx:111
 AliTPCAltroEmulator.cxx:112
 AliTPCAltroEmulator.cxx:113
 AliTPCAltroEmulator.cxx:114
 AliTPCAltroEmulator.cxx:115
 AliTPCAltroEmulator.cxx:116
 AliTPCAltroEmulator.cxx:117
 AliTPCAltroEmulator.cxx:118
 AliTPCAltroEmulator.cxx:119
 AliTPCAltroEmulator.cxx:120
 AliTPCAltroEmulator.cxx:121
 AliTPCAltroEmulator.cxx:122
 AliTPCAltroEmulator.cxx:123
 AliTPCAltroEmulator.cxx:124
 AliTPCAltroEmulator.cxx:125
 AliTPCAltroEmulator.cxx:126
 AliTPCAltroEmulator.cxx:127
 AliTPCAltroEmulator.cxx:128
 AliTPCAltroEmulator.cxx:129
 AliTPCAltroEmulator.cxx:130
 AliTPCAltroEmulator.cxx:131
 AliTPCAltroEmulator.cxx:132
 AliTPCAltroEmulator.cxx:133
 AliTPCAltroEmulator.cxx:134
 AliTPCAltroEmulator.cxx:135
 AliTPCAltroEmulator.cxx:136
 AliTPCAltroEmulator.cxx:137
 AliTPCAltroEmulator.cxx:138
 AliTPCAltroEmulator.cxx:139
 AliTPCAltroEmulator.cxx:140
 AliTPCAltroEmulator.cxx:141
 AliTPCAltroEmulator.cxx:142
 AliTPCAltroEmulator.cxx:143
 AliTPCAltroEmulator.cxx:144
 AliTPCAltroEmulator.cxx:145
 AliTPCAltroEmulator.cxx:146
 AliTPCAltroEmulator.cxx:147
 AliTPCAltroEmulator.cxx:148
 AliTPCAltroEmulator.cxx:149
 AliTPCAltroEmulator.cxx:150
 AliTPCAltroEmulator.cxx:151
 AliTPCAltroEmulator.cxx:152
 AliTPCAltroEmulator.cxx:153
 AliTPCAltroEmulator.cxx:154
 AliTPCAltroEmulator.cxx:155
 AliTPCAltroEmulator.cxx:156
 AliTPCAltroEmulator.cxx:157
 AliTPCAltroEmulator.cxx:158
 AliTPCAltroEmulator.cxx:159
 AliTPCAltroEmulator.cxx:160
 AliTPCAltroEmulator.cxx:161
 AliTPCAltroEmulator.cxx:162
 AliTPCAltroEmulator.cxx:163
 AliTPCAltroEmulator.cxx:164
 AliTPCAltroEmulator.cxx:165
 AliTPCAltroEmulator.cxx:166
 AliTPCAltroEmulator.cxx:167
 AliTPCAltroEmulator.cxx:168
 AliTPCAltroEmulator.cxx:169
 AliTPCAltroEmulator.cxx:170
 AliTPCAltroEmulator.cxx:171
 AliTPCAltroEmulator.cxx:172
 AliTPCAltroEmulator.cxx:173
 AliTPCAltroEmulator.cxx:174
 AliTPCAltroEmulator.cxx:175
 AliTPCAltroEmulator.cxx:176
 AliTPCAltroEmulator.cxx:177
 AliTPCAltroEmulator.cxx:178
 AliTPCAltroEmulator.cxx:179
 AliTPCAltroEmulator.cxx:180
 AliTPCAltroEmulator.cxx:181
 AliTPCAltroEmulator.cxx:182
 AliTPCAltroEmulator.cxx:183
 AliTPCAltroEmulator.cxx:184
 AliTPCAltroEmulator.cxx:185
 AliTPCAltroEmulator.cxx:186
 AliTPCAltroEmulator.cxx:187
 AliTPCAltroEmulator.cxx:188
 AliTPCAltroEmulator.cxx:189
 AliTPCAltroEmulator.cxx:190
 AliTPCAltroEmulator.cxx:191
 AliTPCAltroEmulator.cxx:192
 AliTPCAltroEmulator.cxx:193
 AliTPCAltroEmulator.cxx:194
 AliTPCAltroEmulator.cxx:195
 AliTPCAltroEmulator.cxx:196
 AliTPCAltroEmulator.cxx:197
 AliTPCAltroEmulator.cxx:198
 AliTPCAltroEmulator.cxx:199
 AliTPCAltroEmulator.cxx:200
 AliTPCAltroEmulator.cxx:201
 AliTPCAltroEmulator.cxx:202
 AliTPCAltroEmulator.cxx:203
 AliTPCAltroEmulator.cxx:204
 AliTPCAltroEmulator.cxx:205
 AliTPCAltroEmulator.cxx:206
 AliTPCAltroEmulator.cxx:207
 AliTPCAltroEmulator.cxx:208
 AliTPCAltroEmulator.cxx:209
 AliTPCAltroEmulator.cxx:210
 AliTPCAltroEmulator.cxx:211
 AliTPCAltroEmulator.cxx:212
 AliTPCAltroEmulator.cxx:213
 AliTPCAltroEmulator.cxx:214
 AliTPCAltroEmulator.cxx:215
 AliTPCAltroEmulator.cxx:216
 AliTPCAltroEmulator.cxx:217
 AliTPCAltroEmulator.cxx:218
 AliTPCAltroEmulator.cxx:219
 AliTPCAltroEmulator.cxx:220
 AliTPCAltroEmulator.cxx:221
 AliTPCAltroEmulator.cxx:222
 AliTPCAltroEmulator.cxx:223
 AliTPCAltroEmulator.cxx:224
 AliTPCAltroEmulator.cxx:225
 AliTPCAltroEmulator.cxx:226
 AliTPCAltroEmulator.cxx:227
 AliTPCAltroEmulator.cxx:228
 AliTPCAltroEmulator.cxx:229
 AliTPCAltroEmulator.cxx:230
 AliTPCAltroEmulator.cxx:231
 AliTPCAltroEmulator.cxx:232
 AliTPCAltroEmulator.cxx:233
 AliTPCAltroEmulator.cxx:234
 AliTPCAltroEmulator.cxx:235
 AliTPCAltroEmulator.cxx:236
 AliTPCAltroEmulator.cxx:237
 AliTPCAltroEmulator.cxx:238
 AliTPCAltroEmulator.cxx:239
 AliTPCAltroEmulator.cxx:240
 AliTPCAltroEmulator.cxx:241
 AliTPCAltroEmulator.cxx:242
 AliTPCAltroEmulator.cxx:243
 AliTPCAltroEmulator.cxx:244
 AliTPCAltroEmulator.cxx:245
 AliTPCAltroEmulator.cxx:246
 AliTPCAltroEmulator.cxx:247
 AliTPCAltroEmulator.cxx:248
 AliTPCAltroEmulator.cxx:249
 AliTPCAltroEmulator.cxx:250
 AliTPCAltroEmulator.cxx:251
 AliTPCAltroEmulator.cxx:252
 AliTPCAltroEmulator.cxx:253
 AliTPCAltroEmulator.cxx:254
 AliTPCAltroEmulator.cxx:255
 AliTPCAltroEmulator.cxx:256
 AliTPCAltroEmulator.cxx:257
 AliTPCAltroEmulator.cxx:258
 AliTPCAltroEmulator.cxx:259
 AliTPCAltroEmulator.cxx:260
 AliTPCAltroEmulator.cxx:261
 AliTPCAltroEmulator.cxx:262
 AliTPCAltroEmulator.cxx:263
 AliTPCAltroEmulator.cxx:264
 AliTPCAltroEmulator.cxx:265
 AliTPCAltroEmulator.cxx:266
 AliTPCAltroEmulator.cxx:267
 AliTPCAltroEmulator.cxx:268
 AliTPCAltroEmulator.cxx:269
 AliTPCAltroEmulator.cxx:270
 AliTPCAltroEmulator.cxx:271
 AliTPCAltroEmulator.cxx:272
 AliTPCAltroEmulator.cxx:273
 AliTPCAltroEmulator.cxx:274
 AliTPCAltroEmulator.cxx:275
 AliTPCAltroEmulator.cxx:276
 AliTPCAltroEmulator.cxx:277
 AliTPCAltroEmulator.cxx:278
 AliTPCAltroEmulator.cxx:279
 AliTPCAltroEmulator.cxx:280
 AliTPCAltroEmulator.cxx:281
 AliTPCAltroEmulator.cxx:282
 AliTPCAltroEmulator.cxx:283
 AliTPCAltroEmulator.cxx:284
 AliTPCAltroEmulator.cxx:285
 AliTPCAltroEmulator.cxx:286
 AliTPCAltroEmulator.cxx:287
 AliTPCAltroEmulator.cxx:288
 AliTPCAltroEmulator.cxx:289
 AliTPCAltroEmulator.cxx:290
 AliTPCAltroEmulator.cxx:291
 AliTPCAltroEmulator.cxx:292
 AliTPCAltroEmulator.cxx:293
 AliTPCAltroEmulator.cxx:294
 AliTPCAltroEmulator.cxx:295
 AliTPCAltroEmulator.cxx:296
 AliTPCAltroEmulator.cxx:297
 AliTPCAltroEmulator.cxx:298
 AliTPCAltroEmulator.cxx:299
 AliTPCAltroEmulator.cxx:300
 AliTPCAltroEmulator.cxx:301
 AliTPCAltroEmulator.cxx:302
 AliTPCAltroEmulator.cxx:303
 AliTPCAltroEmulator.cxx:304
 AliTPCAltroEmulator.cxx:305
 AliTPCAltroEmulator.cxx:306
 AliTPCAltroEmulator.cxx:307
 AliTPCAltroEmulator.cxx:308
 AliTPCAltroEmulator.cxx:309
 AliTPCAltroEmulator.cxx:310
 AliTPCAltroEmulator.cxx:311
 AliTPCAltroEmulator.cxx:312
 AliTPCAltroEmulator.cxx:313
 AliTPCAltroEmulator.cxx:314
 AliTPCAltroEmulator.cxx:315
 AliTPCAltroEmulator.cxx:316
 AliTPCAltroEmulator.cxx:317
 AliTPCAltroEmulator.cxx:318
 AliTPCAltroEmulator.cxx:319
 AliTPCAltroEmulator.cxx:320
 AliTPCAltroEmulator.cxx:321
 AliTPCAltroEmulator.cxx:322
 AliTPCAltroEmulator.cxx:323
 AliTPCAltroEmulator.cxx:324
 AliTPCAltroEmulator.cxx:325
 AliTPCAltroEmulator.cxx:326
 AliTPCAltroEmulator.cxx:327
 AliTPCAltroEmulator.cxx:328
 AliTPCAltroEmulator.cxx:329
 AliTPCAltroEmulator.cxx:330
 AliTPCAltroEmulator.cxx:331
 AliTPCAltroEmulator.cxx:332
 AliTPCAltroEmulator.cxx:333
 AliTPCAltroEmulator.cxx:334
 AliTPCAltroEmulator.cxx:335
 AliTPCAltroEmulator.cxx:336
 AliTPCAltroEmulator.cxx:337
 AliTPCAltroEmulator.cxx:338
 AliTPCAltroEmulator.cxx:339
 AliTPCAltroEmulator.cxx:340
 AliTPCAltroEmulator.cxx:341
 AliTPCAltroEmulator.cxx:342
 AliTPCAltroEmulator.cxx:343
 AliTPCAltroEmulator.cxx:344
 AliTPCAltroEmulator.cxx:345
 AliTPCAltroEmulator.cxx:346
 AliTPCAltroEmulator.cxx:347
 AliTPCAltroEmulator.cxx:348
 AliTPCAltroEmulator.cxx:349
 AliTPCAltroEmulator.cxx:350
 AliTPCAltroEmulator.cxx:351
 AliTPCAltroEmulator.cxx:352
 AliTPCAltroEmulator.cxx:353
 AliTPCAltroEmulator.cxx:354
 AliTPCAltroEmulator.cxx:355
 AliTPCAltroEmulator.cxx:356
 AliTPCAltroEmulator.cxx:357
 AliTPCAltroEmulator.cxx:358
 AliTPCAltroEmulator.cxx:359
 AliTPCAltroEmulator.cxx:360
 AliTPCAltroEmulator.cxx:361
 AliTPCAltroEmulator.cxx:362
 AliTPCAltroEmulator.cxx:363
 AliTPCAltroEmulator.cxx:364
 AliTPCAltroEmulator.cxx:365
 AliTPCAltroEmulator.cxx:366
 AliTPCAltroEmulator.cxx:367
 AliTPCAltroEmulator.cxx:368
 AliTPCAltroEmulator.cxx:369
 AliTPCAltroEmulator.cxx:370
 AliTPCAltroEmulator.cxx:371
 AliTPCAltroEmulator.cxx:372
 AliTPCAltroEmulator.cxx:373
 AliTPCAltroEmulator.cxx:374
 AliTPCAltroEmulator.cxx:375
 AliTPCAltroEmulator.cxx:376
 AliTPCAltroEmulator.cxx:377
 AliTPCAltroEmulator.cxx:378
 AliTPCAltroEmulator.cxx:379
 AliTPCAltroEmulator.cxx:380
 AliTPCAltroEmulator.cxx:381
 AliTPCAltroEmulator.cxx:382
 AliTPCAltroEmulator.cxx:383
 AliTPCAltroEmulator.cxx:384
 AliTPCAltroEmulator.cxx:385
 AliTPCAltroEmulator.cxx:386
 AliTPCAltroEmulator.cxx:387
 AliTPCAltroEmulator.cxx:388
 AliTPCAltroEmulator.cxx:389
 AliTPCAltroEmulator.cxx:390
 AliTPCAltroEmulator.cxx:391
 AliTPCAltroEmulator.cxx:392
 AliTPCAltroEmulator.cxx:393
 AliTPCAltroEmulator.cxx:394
 AliTPCAltroEmulator.cxx:395
 AliTPCAltroEmulator.cxx:396
 AliTPCAltroEmulator.cxx:397
 AliTPCAltroEmulator.cxx:398
 AliTPCAltroEmulator.cxx:399
 AliTPCAltroEmulator.cxx:400
 AliTPCAltroEmulator.cxx:401
 AliTPCAltroEmulator.cxx:402
 AliTPCAltroEmulator.cxx:403
 AliTPCAltroEmulator.cxx:404
 AliTPCAltroEmulator.cxx:405
 AliTPCAltroEmulator.cxx:406
 AliTPCAltroEmulator.cxx:407
 AliTPCAltroEmulator.cxx:408
 AliTPCAltroEmulator.cxx:409
 AliTPCAltroEmulator.cxx:410
 AliTPCAltroEmulator.cxx:411
 AliTPCAltroEmulator.cxx:412
 AliTPCAltroEmulator.cxx:413
 AliTPCAltroEmulator.cxx:414
 AliTPCAltroEmulator.cxx:415
 AliTPCAltroEmulator.cxx:416
 AliTPCAltroEmulator.cxx:417
 AliTPCAltroEmulator.cxx:418
 AliTPCAltroEmulator.cxx:419
 AliTPCAltroEmulator.cxx:420
 AliTPCAltroEmulator.cxx:421
 AliTPCAltroEmulator.cxx:422
 AliTPCAltroEmulator.cxx:423
 AliTPCAltroEmulator.cxx:424
 AliTPCAltroEmulator.cxx:425
 AliTPCAltroEmulator.cxx:426
 AliTPCAltroEmulator.cxx:427
 AliTPCAltroEmulator.cxx:428
 AliTPCAltroEmulator.cxx:429
 AliTPCAltroEmulator.cxx:430
 AliTPCAltroEmulator.cxx:431
 AliTPCAltroEmulator.cxx:432
 AliTPCAltroEmulator.cxx:433
 AliTPCAltroEmulator.cxx:434
 AliTPCAltroEmulator.cxx:435
 AliTPCAltroEmulator.cxx:436
 AliTPCAltroEmulator.cxx:437
 AliTPCAltroEmulator.cxx:438
 AliTPCAltroEmulator.cxx:439
 AliTPCAltroEmulator.cxx:440
 AliTPCAltroEmulator.cxx:441
 AliTPCAltroEmulator.cxx:442
 AliTPCAltroEmulator.cxx:443
 AliTPCAltroEmulator.cxx:444
 AliTPCAltroEmulator.cxx:445
 AliTPCAltroEmulator.cxx:446
 AliTPCAltroEmulator.cxx:447
 AliTPCAltroEmulator.cxx:448
 AliTPCAltroEmulator.cxx:449
 AliTPCAltroEmulator.cxx:450
 AliTPCAltroEmulator.cxx:451
 AliTPCAltroEmulator.cxx:452
 AliTPCAltroEmulator.cxx:453
 AliTPCAltroEmulator.cxx:454
 AliTPCAltroEmulator.cxx:455
 AliTPCAltroEmulator.cxx:456
 AliTPCAltroEmulator.cxx:457
 AliTPCAltroEmulator.cxx:458
 AliTPCAltroEmulator.cxx:459
 AliTPCAltroEmulator.cxx:460
 AliTPCAltroEmulator.cxx:461
 AliTPCAltroEmulator.cxx:462
 AliTPCAltroEmulator.cxx:463
 AliTPCAltroEmulator.cxx:464
 AliTPCAltroEmulator.cxx:465
 AliTPCAltroEmulator.cxx:466
 AliTPCAltroEmulator.cxx:467
 AliTPCAltroEmulator.cxx:468
 AliTPCAltroEmulator.cxx:469
 AliTPCAltroEmulator.cxx:470
 AliTPCAltroEmulator.cxx:471
 AliTPCAltroEmulator.cxx:472
 AliTPCAltroEmulator.cxx:473
 AliTPCAltroEmulator.cxx:474
 AliTPCAltroEmulator.cxx:475
 AliTPCAltroEmulator.cxx:476
 AliTPCAltroEmulator.cxx:477
 AliTPCAltroEmulator.cxx:478
 AliTPCAltroEmulator.cxx:479
 AliTPCAltroEmulator.cxx:480
 AliTPCAltroEmulator.cxx:481
 AliTPCAltroEmulator.cxx:482
 AliTPCAltroEmulator.cxx:483
 AliTPCAltroEmulator.cxx:484
 AliTPCAltroEmulator.cxx:485
 AliTPCAltroEmulator.cxx:486
 AliTPCAltroEmulator.cxx:487
 AliTPCAltroEmulator.cxx:488
 AliTPCAltroEmulator.cxx:489
 AliTPCAltroEmulator.cxx:490
 AliTPCAltroEmulator.cxx:491
 AliTPCAltroEmulator.cxx:492
 AliTPCAltroEmulator.cxx:493
 AliTPCAltroEmulator.cxx:494
 AliTPCAltroEmulator.cxx:495
 AliTPCAltroEmulator.cxx:496
 AliTPCAltroEmulator.cxx:497
 AliTPCAltroEmulator.cxx:498
 AliTPCAltroEmulator.cxx:499
 AliTPCAltroEmulator.cxx:500
 AliTPCAltroEmulator.cxx:501
 AliTPCAltroEmulator.cxx:502
 AliTPCAltroEmulator.cxx:503
 AliTPCAltroEmulator.cxx:504
 AliTPCAltroEmulator.cxx:505
 AliTPCAltroEmulator.cxx:506
 AliTPCAltroEmulator.cxx:507
 AliTPCAltroEmulator.cxx:508
 AliTPCAltroEmulator.cxx:509
 AliTPCAltroEmulator.cxx:510
 AliTPCAltroEmulator.cxx:511
 AliTPCAltroEmulator.cxx:512
 AliTPCAltroEmulator.cxx:513
 AliTPCAltroEmulator.cxx:514
 AliTPCAltroEmulator.cxx:515
 AliTPCAltroEmulator.cxx:516
 AliTPCAltroEmulator.cxx:517
 AliTPCAltroEmulator.cxx:518
 AliTPCAltroEmulator.cxx:519
 AliTPCAltroEmulator.cxx:520
 AliTPCAltroEmulator.cxx:521
 AliTPCAltroEmulator.cxx:522
 AliTPCAltroEmulator.cxx:523
 AliTPCAltroEmulator.cxx:524
 AliTPCAltroEmulator.cxx:525
 AliTPCAltroEmulator.cxx:526
 AliTPCAltroEmulator.cxx:527
 AliTPCAltroEmulator.cxx:528
 AliTPCAltroEmulator.cxx:529
 AliTPCAltroEmulator.cxx:530
 AliTPCAltroEmulator.cxx:531
 AliTPCAltroEmulator.cxx:532
 AliTPCAltroEmulator.cxx:533
 AliTPCAltroEmulator.cxx:534
 AliTPCAltroEmulator.cxx:535
 AliTPCAltroEmulator.cxx:536
 AliTPCAltroEmulator.cxx:537
 AliTPCAltroEmulator.cxx:538
 AliTPCAltroEmulator.cxx:539
 AliTPCAltroEmulator.cxx:540
 AliTPCAltroEmulator.cxx:541
 AliTPCAltroEmulator.cxx:542
 AliTPCAltroEmulator.cxx:543
 AliTPCAltroEmulator.cxx:544
 AliTPCAltroEmulator.cxx:545
 AliTPCAltroEmulator.cxx:546
 AliTPCAltroEmulator.cxx:547
 AliTPCAltroEmulator.cxx:548
 AliTPCAltroEmulator.cxx:549
 AliTPCAltroEmulator.cxx:550
 AliTPCAltroEmulator.cxx:551
 AliTPCAltroEmulator.cxx:552
 AliTPCAltroEmulator.cxx:553
 AliTPCAltroEmulator.cxx:554
 AliTPCAltroEmulator.cxx:555
 AliTPCAltroEmulator.cxx:556
 AliTPCAltroEmulator.cxx:557
 AliTPCAltroEmulator.cxx:558
 AliTPCAltroEmulator.cxx:559
 AliTPCAltroEmulator.cxx:560
 AliTPCAltroEmulator.cxx:561
 AliTPCAltroEmulator.cxx:562
 AliTPCAltroEmulator.cxx:563
 AliTPCAltroEmulator.cxx:564
 AliTPCAltroEmulator.cxx:565
 AliTPCAltroEmulator.cxx:566
 AliTPCAltroEmulator.cxx:567
 AliTPCAltroEmulator.cxx:568
 AliTPCAltroEmulator.cxx:569
 AliTPCAltroEmulator.cxx:570
 AliTPCAltroEmulator.cxx:571
 AliTPCAltroEmulator.cxx:572
 AliTPCAltroEmulator.cxx:573
 AliTPCAltroEmulator.cxx:574
 AliTPCAltroEmulator.cxx:575
 AliTPCAltroEmulator.cxx:576
 AliTPCAltroEmulator.cxx:577
 AliTPCAltroEmulator.cxx:578
 AliTPCAltroEmulator.cxx:579
 AliTPCAltroEmulator.cxx:580
 AliTPCAltroEmulator.cxx:581
 AliTPCAltroEmulator.cxx:582
 AliTPCAltroEmulator.cxx:583
 AliTPCAltroEmulator.cxx:584
 AliTPCAltroEmulator.cxx:585
 AliTPCAltroEmulator.cxx:586
 AliTPCAltroEmulator.cxx:587
 AliTPCAltroEmulator.cxx:588
 AliTPCAltroEmulator.cxx:589
 AliTPCAltroEmulator.cxx:590
 AliTPCAltroEmulator.cxx:591
 AliTPCAltroEmulator.cxx:592
 AliTPCAltroEmulator.cxx:593
 AliTPCAltroEmulator.cxx:594
 AliTPCAltroEmulator.cxx:595
 AliTPCAltroEmulator.cxx:596
 AliTPCAltroEmulator.cxx:597
 AliTPCAltroEmulator.cxx:598
 AliTPCAltroEmulator.cxx:599
 AliTPCAltroEmulator.cxx:600
 AliTPCAltroEmulator.cxx:601
 AliTPCAltroEmulator.cxx:602
 AliTPCAltroEmulator.cxx:603
 AliTPCAltroEmulator.cxx:604
 AliTPCAltroEmulator.cxx:605
 AliTPCAltroEmulator.cxx:606
 AliTPCAltroEmulator.cxx:607
 AliTPCAltroEmulator.cxx:608
 AliTPCAltroEmulator.cxx:609
 AliTPCAltroEmulator.cxx:610
 AliTPCAltroEmulator.cxx:611
 AliTPCAltroEmulator.cxx:612
 AliTPCAltroEmulator.cxx:613
 AliTPCAltroEmulator.cxx:614
 AliTPCAltroEmulator.cxx:615
 AliTPCAltroEmulator.cxx:616
 AliTPCAltroEmulator.cxx:617
 AliTPCAltroEmulator.cxx:618
 AliTPCAltroEmulator.cxx:619
 AliTPCAltroEmulator.cxx:620
 AliTPCAltroEmulator.cxx:621
 AliTPCAltroEmulator.cxx:622
 AliTPCAltroEmulator.cxx:623
 AliTPCAltroEmulator.cxx:624
 AliTPCAltroEmulator.cxx:625
 AliTPCAltroEmulator.cxx:626
 AliTPCAltroEmulator.cxx:627
 AliTPCAltroEmulator.cxx:628
 AliTPCAltroEmulator.cxx:629
 AliTPCAltroEmulator.cxx:630
 AliTPCAltroEmulator.cxx:631
 AliTPCAltroEmulator.cxx:632
 AliTPCAltroEmulator.cxx:633
 AliTPCAltroEmulator.cxx:634
 AliTPCAltroEmulator.cxx:635
 AliTPCAltroEmulator.cxx:636
 AliTPCAltroEmulator.cxx:637
 AliTPCAltroEmulator.cxx:638
 AliTPCAltroEmulator.cxx:639
 AliTPCAltroEmulator.cxx:640
 AliTPCAltroEmulator.cxx:641
 AliTPCAltroEmulator.cxx:642
 AliTPCAltroEmulator.cxx:643
 AliTPCAltroEmulator.cxx:644
 AliTPCAltroEmulator.cxx:645
 AliTPCAltroEmulator.cxx:646
 AliTPCAltroEmulator.cxx:647
 AliTPCAltroEmulator.cxx:648
 AliTPCAltroEmulator.cxx:649
 AliTPCAltroEmulator.cxx:650
 AliTPCAltroEmulator.cxx:651
 AliTPCAltroEmulator.cxx:652
 AliTPCAltroEmulator.cxx:653
 AliTPCAltroEmulator.cxx:654
 AliTPCAltroEmulator.cxx:655
 AliTPCAltroEmulator.cxx:656
 AliTPCAltroEmulator.cxx:657
 AliTPCAltroEmulator.cxx:658
 AliTPCAltroEmulator.cxx:659
 AliTPCAltroEmulator.cxx:660
 AliTPCAltroEmulator.cxx:661
 AliTPCAltroEmulator.cxx:662
 AliTPCAltroEmulator.cxx:663
 AliTPCAltroEmulator.cxx:664
 AliTPCAltroEmulator.cxx:665
 AliTPCAltroEmulator.cxx:666
 AliTPCAltroEmulator.cxx:667
 AliTPCAltroEmulator.cxx:668
 AliTPCAltroEmulator.cxx:669
 AliTPCAltroEmulator.cxx:670
 AliTPCAltroEmulator.cxx:671
 AliTPCAltroEmulator.cxx:672
 AliTPCAltroEmulator.cxx:673
 AliTPCAltroEmulator.cxx:674
 AliTPCAltroEmulator.cxx:675
 AliTPCAltroEmulator.cxx:676
 AliTPCAltroEmulator.cxx:677
 AliTPCAltroEmulator.cxx:678
 AliTPCAltroEmulator.cxx:679
 AliTPCAltroEmulator.cxx:680
 AliTPCAltroEmulator.cxx:681
 AliTPCAltroEmulator.cxx:682
 AliTPCAltroEmulator.cxx:683
 AliTPCAltroEmulator.cxx:684
 AliTPCAltroEmulator.cxx:685
 AliTPCAltroEmulator.cxx:686
 AliTPCAltroEmulator.cxx:687
 AliTPCAltroEmulator.cxx:688
 AliTPCAltroEmulator.cxx:689
 AliTPCAltroEmulator.cxx:690
 AliTPCAltroEmulator.cxx:691
 AliTPCAltroEmulator.cxx:692
 AliTPCAltroEmulator.cxx:693
 AliTPCAltroEmulator.cxx:694
 AliTPCAltroEmulator.cxx:695
 AliTPCAltroEmulator.cxx:696
 AliTPCAltroEmulator.cxx:697
 AliTPCAltroEmulator.cxx:698
 AliTPCAltroEmulator.cxx:699
 AliTPCAltroEmulator.cxx:700
 AliTPCAltroEmulator.cxx:701
 AliTPCAltroEmulator.cxx:702
 AliTPCAltroEmulator.cxx:703
 AliTPCAltroEmulator.cxx:704
 AliTPCAltroEmulator.cxx:705
 AliTPCAltroEmulator.cxx:706
 AliTPCAltroEmulator.cxx:707
 AliTPCAltroEmulator.cxx:708
 AliTPCAltroEmulator.cxx:709
 AliTPCAltroEmulator.cxx:710
 AliTPCAltroEmulator.cxx:711
 AliTPCAltroEmulator.cxx:712
 AliTPCAltroEmulator.cxx:713
 AliTPCAltroEmulator.cxx:714
 AliTPCAltroEmulator.cxx:715
 AliTPCAltroEmulator.cxx:716
 AliTPCAltroEmulator.cxx:717
 AliTPCAltroEmulator.cxx:718
 AliTPCAltroEmulator.cxx:719
 AliTPCAltroEmulator.cxx:720
 AliTPCAltroEmulator.cxx:721
 AliTPCAltroEmulator.cxx:722
 AliTPCAltroEmulator.cxx:723
 AliTPCAltroEmulator.cxx:724
 AliTPCAltroEmulator.cxx:725
 AliTPCAltroEmulator.cxx:726
 AliTPCAltroEmulator.cxx:727
 AliTPCAltroEmulator.cxx:728
 AliTPCAltroEmulator.cxx:729
 AliTPCAltroEmulator.cxx:730
 AliTPCAltroEmulator.cxx:731
 AliTPCAltroEmulator.cxx:732
 AliTPCAltroEmulator.cxx:733
 AliTPCAltroEmulator.cxx:734
 AliTPCAltroEmulator.cxx:735
 AliTPCAltroEmulator.cxx:736
 AliTPCAltroEmulator.cxx:737
 AliTPCAltroEmulator.cxx:738
 AliTPCAltroEmulator.cxx:739
 AliTPCAltroEmulator.cxx:740
 AliTPCAltroEmulator.cxx:741
 AliTPCAltroEmulator.cxx:742
 AliTPCAltroEmulator.cxx:743
 AliTPCAltroEmulator.cxx:744
 AliTPCAltroEmulator.cxx:745
 AliTPCAltroEmulator.cxx:746
 AliTPCAltroEmulator.cxx:747
 AliTPCAltroEmulator.cxx:748
 AliTPCAltroEmulator.cxx:749
 AliTPCAltroEmulator.cxx:750
 AliTPCAltroEmulator.cxx:751
 AliTPCAltroEmulator.cxx:752
 AliTPCAltroEmulator.cxx:753
 AliTPCAltroEmulator.cxx:754
 AliTPCAltroEmulator.cxx:755
 AliTPCAltroEmulator.cxx:756
 AliTPCAltroEmulator.cxx:757
 AliTPCAltroEmulator.cxx:758
 AliTPCAltroEmulator.cxx:759
 AliTPCAltroEmulator.cxx:760
 AliTPCAltroEmulator.cxx:761
 AliTPCAltroEmulator.cxx:762
 AliTPCAltroEmulator.cxx:763
 AliTPCAltroEmulator.cxx:764
 AliTPCAltroEmulator.cxx:765
 AliTPCAltroEmulator.cxx:766
 AliTPCAltroEmulator.cxx:767
 AliTPCAltroEmulator.cxx:768
 AliTPCAltroEmulator.cxx:769
 AliTPCAltroEmulator.cxx:770
 AliTPCAltroEmulator.cxx:771
 AliTPCAltroEmulator.cxx:772
 AliTPCAltroEmulator.cxx:773
 AliTPCAltroEmulator.cxx:774
 AliTPCAltroEmulator.cxx:775
 AliTPCAltroEmulator.cxx:776
 AliTPCAltroEmulator.cxx:777
 AliTPCAltroEmulator.cxx:778
 AliTPCAltroEmulator.cxx:779
 AliTPCAltroEmulator.cxx:780
 AliTPCAltroEmulator.cxx:781
 AliTPCAltroEmulator.cxx:782
 AliTPCAltroEmulator.cxx:783
 AliTPCAltroEmulator.cxx:784
 AliTPCAltroEmulator.cxx:785
 AliTPCAltroEmulator.cxx:786
 AliTPCAltroEmulator.cxx:787
 AliTPCAltroEmulator.cxx:788
 AliTPCAltroEmulator.cxx:789
 AliTPCAltroEmulator.cxx:790
 AliTPCAltroEmulator.cxx:791
 AliTPCAltroEmulator.cxx:792
 AliTPCAltroEmulator.cxx:793
 AliTPCAltroEmulator.cxx:794
 AliTPCAltroEmulator.cxx:795
 AliTPCAltroEmulator.cxx:796
 AliTPCAltroEmulator.cxx:797
 AliTPCAltroEmulator.cxx:798
 AliTPCAltroEmulator.cxx:799
 AliTPCAltroEmulator.cxx:800
 AliTPCAltroEmulator.cxx:801
 AliTPCAltroEmulator.cxx:802
 AliTPCAltroEmulator.cxx:803
 AliTPCAltroEmulator.cxx:804
 AliTPCAltroEmulator.cxx:805
 AliTPCAltroEmulator.cxx:806
 AliTPCAltroEmulator.cxx:807
 AliTPCAltroEmulator.cxx:808
 AliTPCAltroEmulator.cxx:809
 AliTPCAltroEmulator.cxx:810
 AliTPCAltroEmulator.cxx:811
 AliTPCAltroEmulator.cxx:812
 AliTPCAltroEmulator.cxx:813
 AliTPCAltroEmulator.cxx:814
 AliTPCAltroEmulator.cxx:815
 AliTPCAltroEmulator.cxx:816
 AliTPCAltroEmulator.cxx:817
 AliTPCAltroEmulator.cxx:818
 AliTPCAltroEmulator.cxx:819
 AliTPCAltroEmulator.cxx:820
 AliTPCAltroEmulator.cxx:821
 AliTPCAltroEmulator.cxx:822
 AliTPCAltroEmulator.cxx:823
 AliTPCAltroEmulator.cxx:824
 AliTPCAltroEmulator.cxx:825
 AliTPCAltroEmulator.cxx:826
 AliTPCAltroEmulator.cxx:827
 AliTPCAltroEmulator.cxx:828
 AliTPCAltroEmulator.cxx:829
 AliTPCAltroEmulator.cxx:830
 AliTPCAltroEmulator.cxx:831
 AliTPCAltroEmulator.cxx:832
 AliTPCAltroEmulator.cxx:833
 AliTPCAltroEmulator.cxx:834
 AliTPCAltroEmulator.cxx:835
 AliTPCAltroEmulator.cxx:836
 AliTPCAltroEmulator.cxx:837
 AliTPCAltroEmulator.cxx:838
 AliTPCAltroEmulator.cxx:839
 AliTPCAltroEmulator.cxx:840
 AliTPCAltroEmulator.cxx:841
 AliTPCAltroEmulator.cxx:842
 AliTPCAltroEmulator.cxx:843
 AliTPCAltroEmulator.cxx:844
 AliTPCAltroEmulator.cxx:845
 AliTPCAltroEmulator.cxx:846
 AliTPCAltroEmulator.cxx:847
 AliTPCAltroEmulator.cxx:848
 AliTPCAltroEmulator.cxx:849
 AliTPCAltroEmulator.cxx:850
 AliTPCAltroEmulator.cxx:851
 AliTPCAltroEmulator.cxx:852
 AliTPCAltroEmulator.cxx:853
 AliTPCAltroEmulator.cxx:854
 AliTPCAltroEmulator.cxx:855
 AliTPCAltroEmulator.cxx:856
 AliTPCAltroEmulator.cxx:857
 AliTPCAltroEmulator.cxx:858
 AliTPCAltroEmulator.cxx:859
 AliTPCAltroEmulator.cxx:860
 AliTPCAltroEmulator.cxx:861
 AliTPCAltroEmulator.cxx:862
 AliTPCAltroEmulator.cxx:863
 AliTPCAltroEmulator.cxx:864
 AliTPCAltroEmulator.cxx:865
 AliTPCAltroEmulator.cxx:866
 AliTPCAltroEmulator.cxx:867
 AliTPCAltroEmulator.cxx:868
 AliTPCAltroEmulator.cxx:869
 AliTPCAltroEmulator.cxx:870
 AliTPCAltroEmulator.cxx:871
 AliTPCAltroEmulator.cxx:872
 AliTPCAltroEmulator.cxx:873
 AliTPCAltroEmulator.cxx:874
 AliTPCAltroEmulator.cxx:875
 AliTPCAltroEmulator.cxx:876
 AliTPCAltroEmulator.cxx:877
 AliTPCAltroEmulator.cxx:878
 AliTPCAltroEmulator.cxx:879
 AliTPCAltroEmulator.cxx:880
 AliTPCAltroEmulator.cxx:881
 AliTPCAltroEmulator.cxx:882
 AliTPCAltroEmulator.cxx:883
 AliTPCAltroEmulator.cxx:884
 AliTPCAltroEmulator.cxx:885
 AliTPCAltroEmulator.cxx:886
 AliTPCAltroEmulator.cxx:887
 AliTPCAltroEmulator.cxx:888
 AliTPCAltroEmulator.cxx:889
 AliTPCAltroEmulator.cxx:890
 AliTPCAltroEmulator.cxx:891
 AliTPCAltroEmulator.cxx:892
 AliTPCAltroEmulator.cxx:893
 AliTPCAltroEmulator.cxx:894
 AliTPCAltroEmulator.cxx:895
 AliTPCAltroEmulator.cxx:896
 AliTPCAltroEmulator.cxx:897
 AliTPCAltroEmulator.cxx:898
 AliTPCAltroEmulator.cxx:899
 AliTPCAltroEmulator.cxx:900
 AliTPCAltroEmulator.cxx:901
 AliTPCAltroEmulator.cxx:902
 AliTPCAltroEmulator.cxx:903
 AliTPCAltroEmulator.cxx:904
 AliTPCAltroEmulator.cxx:905
 AliTPCAltroEmulator.cxx:906
 AliTPCAltroEmulator.cxx:907
 AliTPCAltroEmulator.cxx:908
 AliTPCAltroEmulator.cxx:909
 AliTPCAltroEmulator.cxx:910
 AliTPCAltroEmulator.cxx:911
 AliTPCAltroEmulator.cxx:912
 AliTPCAltroEmulator.cxx:913
 AliTPCAltroEmulator.cxx:914
 AliTPCAltroEmulator.cxx:915
 AliTPCAltroEmulator.cxx:916
 AliTPCAltroEmulator.cxx:917
 AliTPCAltroEmulator.cxx:918
 AliTPCAltroEmulator.cxx:919
 AliTPCAltroEmulator.cxx:920
 AliTPCAltroEmulator.cxx:921
 AliTPCAltroEmulator.cxx:922
 AliTPCAltroEmulator.cxx:923
 AliTPCAltroEmulator.cxx:924
 AliTPCAltroEmulator.cxx:925
 AliTPCAltroEmulator.cxx:926
 AliTPCAltroEmulator.cxx:927
 AliTPCAltroEmulator.cxx:928
 AliTPCAltroEmulator.cxx:929
 AliTPCAltroEmulator.cxx:930
 AliTPCAltroEmulator.cxx:931
 AliTPCAltroEmulator.cxx:932
 AliTPCAltroEmulator.cxx:933
 AliTPCAltroEmulator.cxx:934
 AliTPCAltroEmulator.cxx:935
 AliTPCAltroEmulator.cxx:936
 AliTPCAltroEmulator.cxx:937
 AliTPCAltroEmulator.cxx:938
 AliTPCAltroEmulator.cxx:939
 AliTPCAltroEmulator.cxx:940
 AliTPCAltroEmulator.cxx:941
 AliTPCAltroEmulator.cxx:942
 AliTPCAltroEmulator.cxx:943
 AliTPCAltroEmulator.cxx:944
 AliTPCAltroEmulator.cxx:945
 AliTPCAltroEmulator.cxx:946
 AliTPCAltroEmulator.cxx:947
 AliTPCAltroEmulator.cxx:948
 AliTPCAltroEmulator.cxx:949
 AliTPCAltroEmulator.cxx:950
 AliTPCAltroEmulator.cxx:951
 AliTPCAltroEmulator.cxx:952
 AliTPCAltroEmulator.cxx:953
 AliTPCAltroEmulator.cxx:954
 AliTPCAltroEmulator.cxx:955
 AliTPCAltroEmulator.cxx:956
 AliTPCAltroEmulator.cxx:957
 AliTPCAltroEmulator.cxx:958
 AliTPCAltroEmulator.cxx:959
 AliTPCAltroEmulator.cxx:960
 AliTPCAltroEmulator.cxx:961
 AliTPCAltroEmulator.cxx:962
 AliTPCAltroEmulator.cxx:963
 AliTPCAltroEmulator.cxx:964
 AliTPCAltroEmulator.cxx:965
 AliTPCAltroEmulator.cxx:966
 AliTPCAltroEmulator.cxx:967
 AliTPCAltroEmulator.cxx:968
 AliTPCAltroEmulator.cxx:969
 AliTPCAltroEmulator.cxx:970
 AliTPCAltroEmulator.cxx:971
 AliTPCAltroEmulator.cxx:972
 AliTPCAltroEmulator.cxx:973
 AliTPCAltroEmulator.cxx:974
 AliTPCAltroEmulator.cxx:975
 AliTPCAltroEmulator.cxx:976
 AliTPCAltroEmulator.cxx:977
 AliTPCAltroEmulator.cxx:978
 AliTPCAltroEmulator.cxx:979
 AliTPCAltroEmulator.cxx:980
 AliTPCAltroEmulator.cxx:981
 AliTPCAltroEmulator.cxx:982
 AliTPCAltroEmulator.cxx:983
 AliTPCAltroEmulator.cxx:984
 AliTPCAltroEmulator.cxx:985
 AliTPCAltroEmulator.cxx:986
 AliTPCAltroEmulator.cxx:987
 AliTPCAltroEmulator.cxx:988
 AliTPCAltroEmulator.cxx:989
 AliTPCAltroEmulator.cxx:990
 AliTPCAltroEmulator.cxx:991
 AliTPCAltroEmulator.cxx:992
 AliTPCAltroEmulator.cxx:993
 AliTPCAltroEmulator.cxx:994
 AliTPCAltroEmulator.cxx:995
 AliTPCAltroEmulator.cxx:996
 AliTPCAltroEmulator.cxx:997
 AliTPCAltroEmulator.cxx:998
 AliTPCAltroEmulator.cxx:999
 AliTPCAltroEmulator.cxx:1000
 AliTPCAltroEmulator.cxx:1001
 AliTPCAltroEmulator.cxx:1002
 AliTPCAltroEmulator.cxx:1003
 AliTPCAltroEmulator.cxx:1004
 AliTPCAltroEmulator.cxx:1005
 AliTPCAltroEmulator.cxx:1006
 AliTPCAltroEmulator.cxx:1007
 AliTPCAltroEmulator.cxx:1008
 AliTPCAltroEmulator.cxx:1009
 AliTPCAltroEmulator.cxx:1010
 AliTPCAltroEmulator.cxx:1011
 AliTPCAltroEmulator.cxx:1012
 AliTPCAltroEmulator.cxx:1013
 AliTPCAltroEmulator.cxx:1014
 AliTPCAltroEmulator.cxx:1015
 AliTPCAltroEmulator.cxx:1016
 AliTPCAltroEmulator.cxx:1017
 AliTPCAltroEmulator.cxx:1018
 AliTPCAltroEmulator.cxx:1019
 AliTPCAltroEmulator.cxx:1020
 AliTPCAltroEmulator.cxx:1021
 AliTPCAltroEmulator.cxx:1022
 AliTPCAltroEmulator.cxx:1023
 AliTPCAltroEmulator.cxx:1024
 AliTPCAltroEmulator.cxx:1025
 AliTPCAltroEmulator.cxx:1026
 AliTPCAltroEmulator.cxx:1027
 AliTPCAltroEmulator.cxx:1028
 AliTPCAltroEmulator.cxx:1029
 AliTPCAltroEmulator.cxx:1030
 AliTPCAltroEmulator.cxx:1031
 AliTPCAltroEmulator.cxx:1032
 AliTPCAltroEmulator.cxx:1033
 AliTPCAltroEmulator.cxx:1034
 AliTPCAltroEmulator.cxx:1035
 AliTPCAltroEmulator.cxx:1036
 AliTPCAltroEmulator.cxx:1037
 AliTPCAltroEmulator.cxx:1038
 AliTPCAltroEmulator.cxx:1039
 AliTPCAltroEmulator.cxx:1040
 AliTPCAltroEmulator.cxx:1041
 AliTPCAltroEmulator.cxx:1042
 AliTPCAltroEmulator.cxx:1043
 AliTPCAltroEmulator.cxx:1044
 AliTPCAltroEmulator.cxx:1045
 AliTPCAltroEmulator.cxx:1046
 AliTPCAltroEmulator.cxx:1047
 AliTPCAltroEmulator.cxx:1048
 AliTPCAltroEmulator.cxx:1049
 AliTPCAltroEmulator.cxx:1050
 AliTPCAltroEmulator.cxx:1051
 AliTPCAltroEmulator.cxx:1052
 AliTPCAltroEmulator.cxx:1053
 AliTPCAltroEmulator.cxx:1054
 AliTPCAltroEmulator.cxx:1055
 AliTPCAltroEmulator.cxx:1056
 AliTPCAltroEmulator.cxx:1057
 AliTPCAltroEmulator.cxx:1058
 AliTPCAltroEmulator.cxx:1059
 AliTPCAltroEmulator.cxx:1060
 AliTPCAltroEmulator.cxx:1061
 AliTPCAltroEmulator.cxx:1062
 AliTPCAltroEmulator.cxx:1063
 AliTPCAltroEmulator.cxx:1064
 AliTPCAltroEmulator.cxx:1065
 AliTPCAltroEmulator.cxx:1066
 AliTPCAltroEmulator.cxx:1067
 AliTPCAltroEmulator.cxx:1068
 AliTPCAltroEmulator.cxx:1069
 AliTPCAltroEmulator.cxx:1070
 AliTPCAltroEmulator.cxx:1071
 AliTPCAltroEmulator.cxx:1072
 AliTPCAltroEmulator.cxx:1073
 AliTPCAltroEmulator.cxx:1074
 AliTPCAltroEmulator.cxx:1075
 AliTPCAltroEmulator.cxx:1076
 AliTPCAltroEmulator.cxx:1077
 AliTPCAltroEmulator.cxx:1078
 AliTPCAltroEmulator.cxx:1079
 AliTPCAltroEmulator.cxx:1080
 AliTPCAltroEmulator.cxx:1081
 AliTPCAltroEmulator.cxx:1082
 AliTPCAltroEmulator.cxx:1083
 AliTPCAltroEmulator.cxx:1084
 AliTPCAltroEmulator.cxx:1085
 AliTPCAltroEmulator.cxx:1086
 AliTPCAltroEmulator.cxx:1087
 AliTPCAltroEmulator.cxx:1088
 AliTPCAltroEmulator.cxx:1089
 AliTPCAltroEmulator.cxx:1090
 AliTPCAltroEmulator.cxx:1091
 AliTPCAltroEmulator.cxx:1092
 AliTPCAltroEmulator.cxx:1093
 AliTPCAltroEmulator.cxx:1094
 AliTPCAltroEmulator.cxx:1095
 AliTPCAltroEmulator.cxx:1096
 AliTPCAltroEmulator.cxx:1097
 AliTPCAltroEmulator.cxx:1098
 AliTPCAltroEmulator.cxx:1099
 AliTPCAltroEmulator.cxx:1100
 AliTPCAltroEmulator.cxx:1101
 AliTPCAltroEmulator.cxx:1102
 AliTPCAltroEmulator.cxx:1103
 AliTPCAltroEmulator.cxx:1104
 AliTPCAltroEmulator.cxx:1105
 AliTPCAltroEmulator.cxx:1106
 AliTPCAltroEmulator.cxx:1107
 AliTPCAltroEmulator.cxx:1108
 AliTPCAltroEmulator.cxx:1109
 AliTPCAltroEmulator.cxx:1110
 AliTPCAltroEmulator.cxx:1111
 AliTPCAltroEmulator.cxx:1112
 AliTPCAltroEmulator.cxx:1113
 AliTPCAltroEmulator.cxx:1114
 AliTPCAltroEmulator.cxx:1115
 AliTPCAltroEmulator.cxx:1116
 AliTPCAltroEmulator.cxx:1117
 AliTPCAltroEmulator.cxx:1118
 AliTPCAltroEmulator.cxx:1119
 AliTPCAltroEmulator.cxx:1120
 AliTPCAltroEmulator.cxx:1121
 AliTPCAltroEmulator.cxx:1122
 AliTPCAltroEmulator.cxx:1123
 AliTPCAltroEmulator.cxx:1124
 AliTPCAltroEmulator.cxx:1125
 AliTPCAltroEmulator.cxx:1126
 AliTPCAltroEmulator.cxx:1127
 AliTPCAltroEmulator.cxx:1128
 AliTPCAltroEmulator.cxx:1129
 AliTPCAltroEmulator.cxx:1130
 AliTPCAltroEmulator.cxx:1131
 AliTPCAltroEmulator.cxx:1132
 AliTPCAltroEmulator.cxx:1133
 AliTPCAltroEmulator.cxx:1134
 AliTPCAltroEmulator.cxx:1135
 AliTPCAltroEmulator.cxx:1136
 AliTPCAltroEmulator.cxx:1137
 AliTPCAltroEmulator.cxx:1138
 AliTPCAltroEmulator.cxx:1139
 AliTPCAltroEmulator.cxx:1140
 AliTPCAltroEmulator.cxx:1141
 AliTPCAltroEmulator.cxx:1142
 AliTPCAltroEmulator.cxx:1143
 AliTPCAltroEmulator.cxx:1144
 AliTPCAltroEmulator.cxx:1145
 AliTPCAltroEmulator.cxx:1146
 AliTPCAltroEmulator.cxx:1147
 AliTPCAltroEmulator.cxx:1148
 AliTPCAltroEmulator.cxx:1149
 AliTPCAltroEmulator.cxx:1150
 AliTPCAltroEmulator.cxx:1151
 AliTPCAltroEmulator.cxx:1152
 AliTPCAltroEmulator.cxx:1153
 AliTPCAltroEmulator.cxx:1154
 AliTPCAltroEmulator.cxx:1155
 AliTPCAltroEmulator.cxx:1156
 AliTPCAltroEmulator.cxx:1157
 AliTPCAltroEmulator.cxx:1158
 AliTPCAltroEmulator.cxx:1159
 AliTPCAltroEmulator.cxx:1160
 AliTPCAltroEmulator.cxx:1161
 AliTPCAltroEmulator.cxx:1162
 AliTPCAltroEmulator.cxx:1163
 AliTPCAltroEmulator.cxx:1164
 AliTPCAltroEmulator.cxx:1165
 AliTPCAltroEmulator.cxx:1166
 AliTPCAltroEmulator.cxx:1167
 AliTPCAltroEmulator.cxx:1168
 AliTPCAltroEmulator.cxx:1169
 AliTPCAltroEmulator.cxx:1170
 AliTPCAltroEmulator.cxx:1171
 AliTPCAltroEmulator.cxx:1172
 AliTPCAltroEmulator.cxx:1173
 AliTPCAltroEmulator.cxx:1174
 AliTPCAltroEmulator.cxx:1175
 AliTPCAltroEmulator.cxx:1176
 AliTPCAltroEmulator.cxx:1177
 AliTPCAltroEmulator.cxx:1178
 AliTPCAltroEmulator.cxx:1179
 AliTPCAltroEmulator.cxx:1180
 AliTPCAltroEmulator.cxx:1181
 AliTPCAltroEmulator.cxx:1182
 AliTPCAltroEmulator.cxx:1183
 AliTPCAltroEmulator.cxx:1184
 AliTPCAltroEmulator.cxx:1185
 AliTPCAltroEmulator.cxx:1186
 AliTPCAltroEmulator.cxx:1187
 AliTPCAltroEmulator.cxx:1188
 AliTPCAltroEmulator.cxx:1189
 AliTPCAltroEmulator.cxx:1190
 AliTPCAltroEmulator.cxx:1191
 AliTPCAltroEmulator.cxx:1192
 AliTPCAltroEmulator.cxx:1193
 AliTPCAltroEmulator.cxx:1194
 AliTPCAltroEmulator.cxx:1195
 AliTPCAltroEmulator.cxx:1196
 AliTPCAltroEmulator.cxx:1197
 AliTPCAltroEmulator.cxx:1198
 AliTPCAltroEmulator.cxx:1199
 AliTPCAltroEmulator.cxx:1200
 AliTPCAltroEmulator.cxx:1201
 AliTPCAltroEmulator.cxx:1202
 AliTPCAltroEmulator.cxx:1203
 AliTPCAltroEmulator.cxx:1204
 AliTPCAltroEmulator.cxx:1205
 AliTPCAltroEmulator.cxx:1206
 AliTPCAltroEmulator.cxx:1207
 AliTPCAltroEmulator.cxx:1208
 AliTPCAltroEmulator.cxx:1209
 AliTPCAltroEmulator.cxx:1210
 AliTPCAltroEmulator.cxx:1211
 AliTPCAltroEmulator.cxx:1212
 AliTPCAltroEmulator.cxx:1213
 AliTPCAltroEmulator.cxx:1214
 AliTPCAltroEmulator.cxx:1215
 AliTPCAltroEmulator.cxx:1216
 AliTPCAltroEmulator.cxx:1217
 AliTPCAltroEmulator.cxx:1218
 AliTPCAltroEmulator.cxx:1219
 AliTPCAltroEmulator.cxx:1220
 AliTPCAltroEmulator.cxx:1221
 AliTPCAltroEmulator.cxx:1222
 AliTPCAltroEmulator.cxx:1223
 AliTPCAltroEmulator.cxx:1224
 AliTPCAltroEmulator.cxx:1225
 AliTPCAltroEmulator.cxx:1226
 AliTPCAltroEmulator.cxx:1227
 AliTPCAltroEmulator.cxx:1228
 AliTPCAltroEmulator.cxx:1229
 AliTPCAltroEmulator.cxx:1230
 AliTPCAltroEmulator.cxx:1231
 AliTPCAltroEmulator.cxx:1232
 AliTPCAltroEmulator.cxx:1233
 AliTPCAltroEmulator.cxx:1234
 AliTPCAltroEmulator.cxx:1235
 AliTPCAltroEmulator.cxx:1236
 AliTPCAltroEmulator.cxx:1237
 AliTPCAltroEmulator.cxx:1238
 AliTPCAltroEmulator.cxx:1239
 AliTPCAltroEmulator.cxx:1240
 AliTPCAltroEmulator.cxx:1241
 AliTPCAltroEmulator.cxx:1242
 AliTPCAltroEmulator.cxx:1243
 AliTPCAltroEmulator.cxx:1244
 AliTPCAltroEmulator.cxx:1245
 AliTPCAltroEmulator.cxx:1246
 AliTPCAltroEmulator.cxx:1247
 AliTPCAltroEmulator.cxx:1248
 AliTPCAltroEmulator.cxx:1249
 AliTPCAltroEmulator.cxx:1250
 AliTPCAltroEmulator.cxx:1251
 AliTPCAltroEmulator.cxx:1252
 AliTPCAltroEmulator.cxx:1253
 AliTPCAltroEmulator.cxx:1254
 AliTPCAltroEmulator.cxx:1255
 AliTPCAltroEmulator.cxx:1256
 AliTPCAltroEmulator.cxx:1257
 AliTPCAltroEmulator.cxx:1258
 AliTPCAltroEmulator.cxx:1259
 AliTPCAltroEmulator.cxx:1260
 AliTPCAltroEmulator.cxx:1261
 AliTPCAltroEmulator.cxx:1262
 AliTPCAltroEmulator.cxx:1263
 AliTPCAltroEmulator.cxx:1264
 AliTPCAltroEmulator.cxx:1265
 AliTPCAltroEmulator.cxx:1266
 AliTPCAltroEmulator.cxx:1267
 AliTPCAltroEmulator.cxx:1268
 AliTPCAltroEmulator.cxx:1269
 AliTPCAltroEmulator.cxx:1270
 AliTPCAltroEmulator.cxx:1271
 AliTPCAltroEmulator.cxx:1272
 AliTPCAltroEmulator.cxx:1273
 AliTPCAltroEmulator.cxx:1274
 AliTPCAltroEmulator.cxx:1275
 AliTPCAltroEmulator.cxx:1276
 AliTPCAltroEmulator.cxx:1277
 AliTPCAltroEmulator.cxx:1278
 AliTPCAltroEmulator.cxx:1279
 AliTPCAltroEmulator.cxx:1280
 AliTPCAltroEmulator.cxx:1281
 AliTPCAltroEmulator.cxx:1282
 AliTPCAltroEmulator.cxx:1283
 AliTPCAltroEmulator.cxx:1284
 AliTPCAltroEmulator.cxx:1285
 AliTPCAltroEmulator.cxx:1286
 AliTPCAltroEmulator.cxx:1287
 AliTPCAltroEmulator.cxx:1288
 AliTPCAltroEmulator.cxx:1289
 AliTPCAltroEmulator.cxx:1290
 AliTPCAltroEmulator.cxx:1291
 AliTPCAltroEmulator.cxx:1292
 AliTPCAltroEmulator.cxx:1293
 AliTPCAltroEmulator.cxx:1294
 AliTPCAltroEmulator.cxx:1295
 AliTPCAltroEmulator.cxx:1296
 AliTPCAltroEmulator.cxx:1297
 AliTPCAltroEmulator.cxx:1298
 AliTPCAltroEmulator.cxx:1299
 AliTPCAltroEmulator.cxx:1300
 AliTPCAltroEmulator.cxx:1301
 AliTPCAltroEmulator.cxx:1302
 AliTPCAltroEmulator.cxx:1303
 AliTPCAltroEmulator.cxx:1304
 AliTPCAltroEmulator.cxx:1305
 AliTPCAltroEmulator.cxx:1306
 AliTPCAltroEmulator.cxx:1307
 AliTPCAltroEmulator.cxx:1308
 AliTPCAltroEmulator.cxx:1309
 AliTPCAltroEmulator.cxx:1310
 AliTPCAltroEmulator.cxx:1311
 AliTPCAltroEmulator.cxx:1312
 AliTPCAltroEmulator.cxx:1313
 AliTPCAltroEmulator.cxx:1314
 AliTPCAltroEmulator.cxx:1315
 AliTPCAltroEmulator.cxx:1316
 AliTPCAltroEmulator.cxx:1317
 AliTPCAltroEmulator.cxx:1318
 AliTPCAltroEmulator.cxx:1319
 AliTPCAltroEmulator.cxx:1320
 AliTPCAltroEmulator.cxx:1321
 AliTPCAltroEmulator.cxx:1322
 AliTPCAltroEmulator.cxx:1323
 AliTPCAltroEmulator.cxx:1324
 AliTPCAltroEmulator.cxx:1325
 AliTPCAltroEmulator.cxx:1326
 AliTPCAltroEmulator.cxx:1327
 AliTPCAltroEmulator.cxx:1328
 AliTPCAltroEmulator.cxx:1329
 AliTPCAltroEmulator.cxx:1330
 AliTPCAltroEmulator.cxx:1331
 AliTPCAltroEmulator.cxx:1332
 AliTPCAltroEmulator.cxx:1333
 AliTPCAltroEmulator.cxx:1334
 AliTPCAltroEmulator.cxx:1335
 AliTPCAltroEmulator.cxx:1336
 AliTPCAltroEmulator.cxx:1337
 AliTPCAltroEmulator.cxx:1338
 AliTPCAltroEmulator.cxx:1339
 AliTPCAltroEmulator.cxx:1340
 AliTPCAltroEmulator.cxx:1341
 AliTPCAltroEmulator.cxx:1342
 AliTPCAltroEmulator.cxx:1343
 AliTPCAltroEmulator.cxx:1344
 AliTPCAltroEmulator.cxx:1345
 AliTPCAltroEmulator.cxx:1346
 AliTPCAltroEmulator.cxx:1347
 AliTPCAltroEmulator.cxx:1348
 AliTPCAltroEmulator.cxx:1349
 AliTPCAltroEmulator.cxx:1350
 AliTPCAltroEmulator.cxx:1351
 AliTPCAltroEmulator.cxx:1352
 AliTPCAltroEmulator.cxx:1353
 AliTPCAltroEmulator.cxx:1354
 AliTPCAltroEmulator.cxx:1355
 AliTPCAltroEmulator.cxx:1356
 AliTPCAltroEmulator.cxx:1357
 AliTPCAltroEmulator.cxx:1358
 AliTPCAltroEmulator.cxx:1359
 AliTPCAltroEmulator.cxx:1360
 AliTPCAltroEmulator.cxx:1361
 AliTPCAltroEmulator.cxx:1362
 AliTPCAltroEmulator.cxx:1363
 AliTPCAltroEmulator.cxx:1364
 AliTPCAltroEmulator.cxx:1365
 AliTPCAltroEmulator.cxx:1366
 AliTPCAltroEmulator.cxx:1367
 AliTPCAltroEmulator.cxx:1368
 AliTPCAltroEmulator.cxx:1369
 AliTPCAltroEmulator.cxx:1370
 AliTPCAltroEmulator.cxx:1371
 AliTPCAltroEmulator.cxx:1372
 AliTPCAltroEmulator.cxx:1373
 AliTPCAltroEmulator.cxx:1374
 AliTPCAltroEmulator.cxx:1375
 AliTPCAltroEmulator.cxx:1376
 AliTPCAltroEmulator.cxx:1377
 AliTPCAltroEmulator.cxx:1378
 AliTPCAltroEmulator.cxx:1379
 AliTPCAltroEmulator.cxx:1380
 AliTPCAltroEmulator.cxx:1381
 AliTPCAltroEmulator.cxx:1382
 AliTPCAltroEmulator.cxx:1383
 AliTPCAltroEmulator.cxx:1384
 AliTPCAltroEmulator.cxx:1385
 AliTPCAltroEmulator.cxx:1386
 AliTPCAltroEmulator.cxx:1387
 AliTPCAltroEmulator.cxx:1388
 AliTPCAltroEmulator.cxx:1389
 AliTPCAltroEmulator.cxx:1390
 AliTPCAltroEmulator.cxx:1391
 AliTPCAltroEmulator.cxx:1392
 AliTPCAltroEmulator.cxx:1393
 AliTPCAltroEmulator.cxx:1394
 AliTPCAltroEmulator.cxx:1395
 AliTPCAltroEmulator.cxx:1396
 AliTPCAltroEmulator.cxx:1397
 AliTPCAltroEmulator.cxx:1398
 AliTPCAltroEmulator.cxx:1399
 AliTPCAltroEmulator.cxx:1400
 AliTPCAltroEmulator.cxx:1401
 AliTPCAltroEmulator.cxx:1402
 AliTPCAltroEmulator.cxx:1403
 AliTPCAltroEmulator.cxx:1404
 AliTPCAltroEmulator.cxx:1405
 AliTPCAltroEmulator.cxx:1406
 AliTPCAltroEmulator.cxx:1407
 AliTPCAltroEmulator.cxx:1408
 AliTPCAltroEmulator.cxx:1409
 AliTPCAltroEmulator.cxx:1410
 AliTPCAltroEmulator.cxx:1411
 AliTPCAltroEmulator.cxx:1412
 AliTPCAltroEmulator.cxx:1413
 AliTPCAltroEmulator.cxx:1414
 AliTPCAltroEmulator.cxx:1415
 AliTPCAltroEmulator.cxx:1416
 AliTPCAltroEmulator.cxx:1417
 AliTPCAltroEmulator.cxx:1418
 AliTPCAltroEmulator.cxx:1419
 AliTPCAltroEmulator.cxx:1420