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

////////////////////////////////////////////////////////////////////////////
//                                                                        //
// This class is a first implementation for the TRD.                      //
// It takes data from HLT and computes the parameters                     //
// and stores both reference data and online calibration                  //
// parameters in the CDB                                                  //
// It alsotakes DCS data, does spline fits                                //
// and stores both reference data and spline fits results                 //
// in the CDB                                                             //
//                                                                        //
// Authors:                                                               //
//   R. Bailhache (R.Bailhache@gsi.de)                                    //
//   J. Book (jbook@ikf.uni-frankfurt.de)                                 //
//   W. Monange   (w.monange@gsi.de)                                      //
//   F. Kramer    (kramer@ikf.uni-frankfurt.de)                           //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include <fstream>

#include <TFile.h>
#include <TProfile2D.h>
#include <TObjString.h>
#include <TString.h>
#include <TList.h>
#include <TSAXParser.h>

#include "AliCDBMetaData.h"
#include "AliLog.h"

#include "AliTRDPreprocessor.h"
#include "AliTRDSensorArray.h"
#include "AliTRDCalibraFit.h"
#include "AliTRDCalibraMode.h"
#include "AliTRDCalibPadStatus.h"
#include "AliTRDSaxHandler.h"
#include "AliTRDgeometry.h"
#include "AliTRDCalibChamberStatus.h"
#include "Cal/AliTRDCalPad.h"
#include "Cal/AliTRDCalPadStatus.h"
#include "Cal/AliTRDCalDCSv2.h"
#include "Cal/AliTRDCalSingleChamberStatus.h"
#include "Cal/AliTRDCalChamberStatus.h"
#include "Cal/AliTRDCalROC.h"

ClassImp(AliTRDPreprocessor)

//______________________________________________________________________________________________
AliTRDPreprocessor::AliTRDPreprocessor(AliShuttleInterface *shuttle)
  :AliPreprocessor("TRD", shuttle)
  ,fCalDCSObjSOR(0)
  ,fCalDCSObjEOR(0)
  ,fVdriftHLT(0)
{
  //
  // Constructor
  //


  AddRunType("PHYSICS");
  AddRunType("STANDALONE");
  AddRunType("PEDESTAL");
  AddRunType("DAQ");
  
  
}
//______________________________________________________________________________________________
 AliTRDPreprocessor::AliTRDPreprocessor(const AliTRDPreprocessor&  ) :
   AliPreprocessor("TRD",0),
   fCalDCSObjSOR(0),
   fCalDCSObjEOR(0),
   fVdriftHLT(0)
{
  
  Fatal("AliTRDPreprocessor", "copy constructor not implemented");
  
}
//______________________________________________________________________________________________
AliTRDPreprocessor::~AliTRDPreprocessor()
{
  //
  // Destructor
  //

  if (fCalDCSObjSOR ) delete fCalDCSObjSOR;
  if (fCalDCSObjEOR ) delete fCalDCSObjEOR;

}
//______________________________________________________________________________________________
AliTRDPreprocessor& AliTRDPreprocessor::operator = (const AliTRDPreprocessor& )
{
  Fatal("operator =", "assignment operator not implemented");
  return *this;
}
//______________________________________________________________________________________________
void AliTRDPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
{
  //
  // Initialization routine for the TRD preprocessor
  //

  AliPreprocessor::Initialize(run,startTime,endTime);
  
}

//______________________________________________________________________________________________
UInt_t AliTRDPreprocessor::Process(TMap* dcsAliasMap)
{
  //
  // Process DCS and calibration part for HLT
  //

  TString runType = GetRunType();
  Log(Form("runtype %s\n",runType.Data()));
  
  // always process the configuration data
  Int_t dCSConfigReturn = ProcessDCSConfigData();
  if(dCSConfigReturn) return dCSConfigReturn; 

  if (runType=="PEDESTAL"){
    if(ExtractPedestals()) return 1;
    return 0;
  } 

  if ((runType=="PHYSICS") || (runType=="STANDALONE") || (runType=="DAQ")){
    // DCS
    if(ProcessDCS(dcsAliasMap)) return 1;
    /*
    if(runType=="PHYSICS"){
      // HLT if On
      //TString runPar = GetRunParameter("HLTStatus");
      //if(runPar=="1") {
      if(GetHLTStatus()) {
	//if(ExtractHLT()) return 1; // for testing!
	ExtractHLT();
      } 
      // DAQ if HLT failed
      if(!fVdriftHLT) {
	//if(ExtractDriftVelocityDAQ()) return 1; 
	ExtractDriftVelocityDAQ(); // for testing!
      }
    }
    */
   
  }
  
  return 0;  
  
}
//______________________________________________________________________________
Bool_t AliTRDPreprocessor::ProcessDCS()
{
  //
  // Default process DCS method
  //

  TString runType = GetRunType();
  if ((runType == "PHYSICS") || (runType == "STANDALONE")) {
    return kTRUE;
  }
  return kFALSE;

}

//______________________________________________________________________________
Bool_t AliTRDPreprocessor::ProcessDCS(TMap *dcsAliasMap)
{
  //
  // Process DCS method
  //

  Bool_t error = kFALSE;

  AliCDBMetaData metaData;
  metaData.SetBeamPeriod(0);
  metaData.SetResponsible("Wilfried Monange/Raphaelle Bailhache");
  metaData.SetComment("TRD calib test");

  Log("****** DCS ******\n");
	
  TObjArray * list=AliTRDSensorArray::GetList();
	
  if (list == 0x0) {
    Log ("Error during AliTRDSensorArray::GetList");
    Log ("DCS will not be processing");
    return kTRUE;
  }

  Int_t nEntries = list->GetEntries ();
  Log (Form ("%d alias loaded", nEntries));
		
  Bool_t * results=new Bool_t [nEntries];
  Int_t  * nGraph=new Int_t [nEntries];
		
  for (Int_t iAlias = 0; iAlias < nEntries; iAlias++) {
			
    AliTRDSensorArray * oneTRDDCS = (AliTRDSensorArray *)list->At (iAlias);
			
    oneTRDDCS->SetStartTime (TTimeStamp (fStartTime));
    oneTRDDCS->SetEndTime (TTimeStamp (fEndTime));
			
    Log(Form("Processing DCS : \"%s\"", oneTRDDCS->GetStoreName ().Data ()));
			
    TMap * map;

    map=oneTRDDCS->ExtractDCS (dcsAliasMap);
		
    nGraph [iAlias] = map->GetEntries ();
		
    if (nGraph [iAlias] == 0) {
      Log("No TGraph for this dcsDatapointAlias : not stored");
      results [iAlias] = kFALSE;
      //error  = kTRUE;
      continue;
    }
		
    oneTRDDCS->SetGraph(map);
    results[iAlias]=Store("Calib", oneTRDDCS->GetStoreName().Data(), oneTRDDCS, &metaData, 0, kFALSE); 
    delete map;		

    //results [iAlias] = StoreReferenceData("Calib", oneTRDDCS->GetStoreName ().Data (), oneTRDDCS, &metaData); 

    if (!results[iAlias]) {
      AliError("Problem during StoreRef DCS");
      //error=kTRUE;
    }

    //BEGIN TEST (should not be removed ...)
    /*
    oneTRDDCS->ClearGraph();
    oneTRDDCS->ClearFit();
    oneTRDDCS->SetDiffCut2 (0.1);
    map=oneTRDDCS->ExtractDCS (dcsAliasMap);
    oneTRDDCS->SetGraph (map);
    Store("Calib", ("cut_"+oneTRDDCS->GetStoreName()).Data(), oneTRDDCS, &metaData, 0, kTRUE); 
    delete map;


    if(iAlias==1 || iAlias==19) continue;
    
    oneTRDDCS->ClearGraph();
    oneTRDDCS->ClearFit();
    oneTRDDCS->SetDiffCut2(0);
    map=oneTRDDCS->ExtractDCS(dcsAliasMap);
    oneTRDDCS->MakeSplineFit(map);
    Store("Calib", ("fit_"+oneTRDDCS->GetStoreName()).Data() , oneTRDDCS, &metaData, 0, kTRUE); 
    delete map;

     
    oneTRDDCS->ClearGraph(); 
    oneTRDDCS->ClearFit();
    oneTRDDCS->SetDiffCut2 (0.1);
    map=oneTRDDCS->ExtractDCS (dcsAliasMap);
    oneTRDDCS->MakeSplineFit(map);
    Store("Calib", ("cutfit_"+oneTRDDCS->GetStoreName()).Data() , oneTRDDCS, &metaData, 0, kTRUE); 
    delete map;
    */    
    //END TEST

  }

  // Check errors
  Int_t nbCount = 0;
  for (Int_t iAlias = 0; iAlias < nEntries; iAlias++) {
    if (results[iAlias]) {
      nbCount++;
    }
  }
  if(nbCount == 0) error = kTRUE;

		
  Log ("         Summury of DCS :\n");
  Log (Form("%30s %10s %10s", "dcsDatapointAlias", "Stored ?", "# graph"));
  for (Int_t iAlias = 0; iAlias < nEntries; iAlias++) {
    AliTRDSensorArray * oneTRDDCS = (AliTRDSensorArray *)list->At (iAlias);
    Log (Form ("%30s %10s %4d", 
	       oneTRDDCS->GetStoreName ().Data (),
	       results[iAlias] ? "ok" : "X",
	       nGraph [iAlias]));
  }
  Log ("*********** End of DCS **********");
  
  delete [] results;
  delete [] nGraph;

  return error;

}
//______________________________________________________________________________________________
Bool_t AliTRDPreprocessor::ExtractHalfChamberStatusDAQ()
{
  //
  // Half chamber status algorithm running on DAQ
  //

  Bool_t error = kFALSE;

  AliCDBMetaData metaData;
  metaData.SetBeamPeriod(0);
  metaData.SetResponsible("Raphaelle Bailhache");
  metaData.SetComment("TRD calib test");
  
  // Take the output of the DA on DAQ
  TList * listpad = GetFileSources(kDAQ,"HALFCHAMBERSTATUS");
  if (!listpad) {
    Log("No list found for the HalfChamberStatus");
    return kTRUE;
  }

  AliTRDCalibChamberStatus *calPed = 0x0;
    
  // loop through all files (only one normally)
  UInt_t index = 0;
  while (listpad->At(index)!=NULL) {
    TObjString* fileNameEntry = (TObjString*) listpad->At(index);
    if (fileNameEntry != NULL)
      {
        TString fileName = GetFile(kDAQ, "HALFCHAMBERSTATUS",
				   fileNameEntry->GetString().Data());
	if(fileName.Length() ==0){
	  Log(Form("Error by retrieving the file %d for the halfchamberstatus",(Int_t)index));
	  delete listpad;
	  return kTRUE;
	}
	
	TFile *f = TFile::Open(fileName);
	f->GetObject("calibchamberstatus",calPed);
	
	if(calPed) {
	  
	  // store as reference data
	  TString name("HalfChamberStatus");
	  if(!StoreReferenceData("DAQData",(const char *)name,(TObject *) calPed,&metaData)){
	    Log(Form("Error storing AliTRDCalibPadStatus object %d as reference data",(Int_t)index));
	    error = kTRUE;
	  }
	} // calPed
	else Log(Form("Error getting AliTRDCalibChamberStatus onject from file"));
		 
      } // fileNameEntry
    ++index;
  }// while (list)

  Log(Form("%d elements found in the list for the halfchamberstatus",(Int_t)index));
  if(index!=1){
    delete listpad;
    return kTRUE;
  }

  //
  // Produce the AliTRDCalChamberStatus  name calHalfChamberStatus
  //
  AliTRDCalChamberStatus *calHalfChamberStatus = 0x0;
  if(calPed) {
    //calPed->AnalyseHisto();   // check number of events, create calHalfChamberStatus (done on DAQ)
    if(fCalDCSObjEOR) {
      calPed->CheckEORStatus((AliTRDCalDCSv2 *)fCalDCSObjEOR);
    }
    calHalfChamberStatus=(AliTRDCalChamberStatus *)calPed->GetCalChamberStatus();
  }

  //
  // Store  
  //  

  AliCDBMetaData md3; 
  md3.SetObjectClassName("AliTRDCalChamberStatus");
  md3.SetResponsible("Raphaelle Bailhache");
  md3.SetBeamPeriod(1);
  md3.SetComment("TRD calib test");
  if(!Store("Calib","ChamberStatus"    ,(TObject *)calHalfChamberStatus, &md3, 0, kTRUE)){
    Log("Error storing the pedestal");
    delete listpad;
    return kTRUE;
  }
  
  delete listpad;
  return error; 
  
}
//______________________________________________________________________________________________
Bool_t AliTRDPreprocessor::ExtractPedestals()
{
  //
  // Pedestal running on LDCs at the DAQ
  //

  //
  // The reference data are stored in:
  // PadStatus1 for sm-00-01-02-09-10-11
  // PadStatus2 for sm-03-04-05-12-13-14
  // PadStatus3 for sm-06-07-08-15-16-17
  // PadStatus0 if nothing found..means problems
  //

  Bool_t error = kFALSE;

  // Init a AliTRDCalibPadStatus
  AliTRDCalibPadStatus calPedSum = AliTRDCalibPadStatus();

  AliCDBMetaData metaData;
  metaData.SetBeamPeriod(0);
  metaData.SetResponsible("Raphaelle Bailhache");
  metaData.SetComment("TRD calib test");
  
  // Sum the contributions of the LDCs
  TList * listpad = GetFileSources(kDAQ,"PADSTATUS");
  if (!listpad) {
    Log("No list found for the PEDESTRAL Run");
    return kTRUE;
  }
  
  // loop through all files from LDCs  
  UInt_t index = 0;
  while (listpad->At(index)!=NULL) {
    TObjString* fileNameEntry = (TObjString*) listpad->At(index);
    if (fileNameEntry != NULL)
      {
        TString fileName = GetFile(kDAQ, "PADSTATUS",
				   fileNameEntry->GetString().Data());
	if(fileName.Length() ==0){
	  Log(Form("Error by retrieving the file %d for the pedestal",(Int_t)index));
	  delete listpad;
	  return kTRUE;
	}
	
	TFile *f = TFile::Open(fileName);
	AliTRDCalibPadStatus *calPed;
	f->GetObject("calibpadstatus",calPed);
	
	if(calPed){
	  
	  // analyse
	  //calPed->AnalyseHisto();
	    	  
	  // Add to the calPedSum
	  for (Int_t idet=0; idet<540; idet++) {
	    AliTRDCalROC *rocMean  = calPed->GetCalRocMean(idet, kFALSE);
	    if ( rocMean )  {
	      calPedSum.SetCalRocMean(rocMean,idet);
	    }
	    AliTRDCalROC *rocRMS = calPed->GetCalRocRMS(idet, kFALSE);
	    if ( rocRMS )  {
	      calPedSum.SetCalRocRMS(rocRMS,idet);
	    }
	    AliTRDCalROC *rocMeand  = calPed->GetCalRocMeand(idet, kFALSE);
	    if ( rocMeand )  {
	      calPedSum.SetCalRocMeand(rocMeand,idet);
	    }
	    AliTRDCalROC *rocRMSd = calPed->GetCalRocRMSd(idet, kFALSE);
	    if ( rocRMSd )  {
	      calPedSum.SetCalRocRMSd(rocRMSd,idet);
	    }
	  }// det loop

	  // store as reference data
	  TString name("PadStatus");
	  name += index;
	  if(!StoreReferenceData("DAQData",(const char *)name,(TObject *) calPed,&metaData)){
	    Log(Form("Error storing AliTRDCalibPadStatus object %d as reference data",(Int_t)index));
	    error = kTRUE;
	  }

	} // calPed
      } // fileNameEntry
    ++index;
  }// while (list)

  Log(Form("%d elements found in the list for the pedestal",(Int_t)index));
  if(index==0){
    delete listpad;
    return kTRUE;
  }

  //
  // Create pedestal 
  //
    
  // Create Pad Status
  AliTRDCalPadStatus *calPadStatus = calPedSum.CreateCalPadStatus();
  // Create Noise 
  //Make the AliTRDCalPad
  AliTRDCalPad *calPad2 = calPedSum.CreateCalPad();
  //Make the AliTRDCalDet correspondant
  AliTRDCalDet *calDet = calPedSum.CreateCalDet();
 
  //
  // Take the noise and Pad status from the previous OCDB
  //

  AliTRDCalPad *calPadPrevious=0;
  AliCDBEntry* entry = GetFromOCDB("Calib", "PadNoise");
  if (entry) calPadPrevious = (AliTRDCalPad*)entry->GetObject();
  if ( calPadPrevious==NULL ) {
     Log("AliTRDPreprocsessor: No previous TRD pad noise entry available.\n");
     calPadPrevious = new AliTRDCalPad("PadNoise", "PadNoise");
  }

  AliTRDCalPadStatus *calPadStatusPrevious=0;
  entry = GetFromOCDB("Calib", "PadStatus");
  if (entry) calPadStatusPrevious = (AliTRDCalPadStatus*)entry->GetObject();
  if ( calPadStatusPrevious==NULL ) {
    Log("AliTRDPreprocsessor: No previous TRD pad status entry available.\n");
    calPadStatusPrevious = new AliTRDCalPadStatus("padstatus", "padstatus");
    for (Int_t idet=0; idet<540; ++idet)
      {
	AliTRDCalSingleChamberStatus *calROC = calPadStatusPrevious->GetCalROC(idet);
	for(Int_t k = 0; k < calROC->GetNchannels(); k++){
	  calROC->SetStatus(k,AliTRDCalPadStatus::kMasked);
	}
      }
  }

  
  // Loop over detectors for check
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)  {
    
    // noise
    AliTRDCalROC *calROCPreviousNoise = calPadPrevious->GetCalROC(det);
    AliTRDCalROC *calROCNoise         = calPad2->GetCalROC(det);

    // padstatus
    AliTRDCalSingleChamberStatus *calROCPreviousStatus = calPadStatusPrevious->GetCalROC(det);
    AliTRDCalSingleChamberStatus *calROCStatus         = calPadStatus->GetCalROC(det);
    
    
    // loop over first half and second half chamber
    for(Int_t half = 0; half < 2; half++){

      Bool_t data         = AreThereDataPedestal(calROCStatus,(Bool_t)half);
      //printf("There are data for the detector %d the half %d: %d\n",det,half,data);
      if(!data){
	// look if data in the OCDB
	Bool_t dataPrevious = AreThereDataPedestal(calROCPreviousStatus,(Bool_t)half);
	// if no data at all, set to default value
	if(!dataPrevious){
	  SetDefaultStatus(*calROCStatus,(Bool_t)half);
	  SetDefaultNoise(*calROCNoise,(Bool_t)half);
	}
	else{
	  // if data, set to previous value
	  SetStatus(*calROCStatus,calROCPreviousStatus,(Bool_t)half);
	  SetNoise(*calROCNoise,calROCPreviousNoise,(Bool_t)half);
	}
      }
    }
  }
  
  //
  // Store  
  //  

  AliCDBMetaData md3; 
  md3.SetObjectClassName("AliTRDCalPadStatus");
  md3.SetResponsible("Raphaelle Bailhache");
  md3.SetBeamPeriod(1);
  md3.SetComment("TRD calib test");
  if(!Store("Calib","PadStatus"    ,(TObject *)calPadStatus, &md3, 0, kTRUE)){
    Log("Error storing the pedestal");
    delete listpad;
    return kTRUE;
  }

  AliCDBMetaData md4; 
  md4.SetObjectClassName("AliTRDCalPad");
  md4.SetResponsible("Raphaelle Bailhache");
  md4.SetBeamPeriod(1);
  md4.SetComment("TRD calib test");
  if(!Store("Calib","PadNoise"    ,(TObject *)calPad2, &md4, 0, kTRUE)){
    Log("Error storing the pedestal");
    delete listpad;
    return kTRUE;
  }
  
  AliCDBMetaData md5; 
  md5.SetObjectClassName("AliTRDCalDet");
  md5.SetResponsible("Raphaelle Bailhache");
  md5.SetBeamPeriod(1);
  md5.SetComment("TRD calib test");
  if(!Store("Calib","DetNoise"    ,(TObject *)calDet, &md5, 0, kTRUE)){
    Log("Error storing the pedestal");
    delete listpad;
    return kTRUE;
  }  

  delete listpad;
  return error; 
  
}

//__________________________________________________________________
Bool_t AliTRDPreprocessor::AreThereDataPedestal(const AliTRDCalSingleChamberStatus * const calROCStatus
                                              , Bool_t second)
{

  //
  // Data for this half chamber
  //

  Bool_t data         = kFALSE;
  Int_t nCols         = calROCStatus->GetNcols();
  Int_t nCol0         = 0;
  Int_t nColE         = (Int_t) nCols/2 - 2;
  if(second) {
    nCol0 = nColE + 4;
    nColE = nCols;
  }

  Int_t totalnumberofpads = 0;
  Int_t totalnumberofdata = 0; 

  for(Int_t col = nCol0; col < nColE; col++){
    for(Int_t row = 0; row < calROCStatus->GetNrows(); row++){
      totalnumberofpads++;
      //printf("ismasked %d\n",(Int_t)calROCStatus->IsMasked(col,row));
      if(!calROCStatus->GetStatus(col,row)) {
	data = kTRUE;
	totalnumberofdata++;
      }
    }
  }
  if(totalnumberofdata < (Int_t)(totalnumberofpads/2)) data = kFALSE;

  return data;
  
}
//__________________________________________________________________
void AliTRDPreprocessor::SetDefaultStatus(AliTRDCalSingleChamberStatus &calROCStatus, Bool_t second){

  //
  // default status for this half chamber
  //

  Int_t nCols         = calROCStatus.GetNcols();
  Int_t nCol0         = 0;
  Int_t nColE         = (Int_t) nCols/2;
  if(second) {
    nCol0 = nColE;
    nColE = nCols;
  }
  for(Int_t col = nCol0; col < nColE; col++){
    for(Int_t row = 0; row < calROCStatus.GetNrows(); row++){
      calROCStatus.SetStatus(col,row,0);
    }
  }
}
//__________________________________________________________________
void AliTRDPreprocessor::SetStatus(AliTRDCalSingleChamberStatus &calROCStatus, AliTRDCalSingleChamberStatus *calROCStatusPrevious,Bool_t second){

  //
  // previous status for this half chamber
  //

  Int_t nCols         = calROCStatus.GetNcols();
  Int_t nCol0         = 0;
  Int_t nColE         = (Int_t) nCols/2;
  if(second) {
    nCol0 = nColE;
    nColE = nCols;
  }
  for(Int_t col = nCol0; col < nColE; col++){
    for(Int_t row = 0; row < calROCStatus.GetNrows(); row++){
      calROCStatus.SetStatus(col,row,calROCStatusPrevious->GetStatus(col,row));
    }
  }
}
//__________________________________________________________________
void AliTRDPreprocessor::SetDefaultNoise(AliTRDCalROC &calROCNoise, Bool_t second){

  //
  // default noise for this half chamber
  //

  Int_t nCols         = calROCNoise.GetNcols();
  Int_t nCol0         = 0;
  Int_t nColE         = (Int_t) nCols/2;
  if(second) {
    nCol0 = nColE;
    nColE = nCols;
  }
  for(Int_t col = nCol0; col < nColE; col++){
    for(Int_t row = 0; row < calROCNoise.GetNrows(); row++){
      calROCNoise.SetValue(col,row,0.12);
    }
  }
}
//__________________________________________________________________
void AliTRDPreprocessor::SetNoise(AliTRDCalROC &calROCNoise, AliTRDCalROC *calROCNoisePrevious, Bool_t second){

  //
  // previous noise for this half chamber
  //

  Int_t nCols         = calROCNoise.GetNcols();
  Int_t nCol0         = 0;
  Int_t nColE         = (Int_t) nCols/2;
  if(second) {
    nCol0 = nColE;
    nColE = nCols;
  }
  for(Int_t col = nCol0; col < nColE; col++){
    for(Int_t row = 0; row < calROCNoise.GetNrows(); row++){
      calROCNoise.SetValue(col,row,calROCNoisePrevious->GetValue(col,row));
    }
  }
}
//______________________________________________________________________________________________
Bool_t AliTRDPreprocessor::ExtractDriftVelocityDAQ()
{
  //
  // Drift velocity DA running on monitoring servers at the DAQ
  //

  Bool_t error = kFALSE; 

  // Objects for HLT and DAQ zusammen
  AliTRDCalibraFit *calibra = AliTRDCalibraFit::Instance();
  AliCDBMetaData metaData;
  metaData.SetBeamPeriod(0);
  metaData.SetResponsible("Raphaelle Bailhache");
  metaData.SetComment("TRD calib test");
  // Store the infos for the detector
  AliCDBMetaData md1; 
  md1.SetObjectClassName("AliTRDCalDet");
  md1.SetResponsible("Raphaelle Bailhache");
  md1.SetBeamPeriod(0);
  md1.SetComment("TRD calib test");
  // Store the infos for the pads
  AliCDBMetaData md2; 
  md2.SetObjectClassName("AliTRDCalPad");
  md2.SetResponsible("Raphaelle Bailhache");
  md2.SetBeamPeriod(0);
  md2.SetComment("TRD calib test");

  // Take the file from the DAQ file exchange server
  TList *listdaq = GetFileSources(kDAQ,"VDRIFT");
  if (!listdaq) {
    Log("No list found for vdrift (DAQ)");
    return kTRUE;
  }
  
  if(listdaq->GetSize() !=1){
    Log(Form("Problem on the size of the list: %d (DAQ)",listdaq->GetSize()));
    delete listdaq;
    return kTRUE;
  }
  
  TObjString* fileNameEntry = (TObjString*) listdaq->At(0);
  if(fileNameEntry != NULL){
    TString fileName = GetFile(kDAQ, "VDRIFT",
			       fileNameEntry->GetString().Data());
    if(fileName.Length() ==0){
      Log("Error retrieving the file vdrift (DAQ)");
      delete listdaq;
      return kTRUE;
    }
    TFile *filedaq = TFile::Open(fileName);
    TProfile2D *histodriftvelocity = (TProfile2D *) filedaq->Get("PH2d");
    if (histodriftvelocity) {
      
      // store as reference data
      if(!StoreReferenceData("DAQData","VdriftT0",(TObject *) histodriftvelocity,&metaData)){
	Log("Error storing 2D Profile for vdrift from the DAQ");
	error = kTRUE;
      }
      
      // analyse
      
      Log("Take the PH reference data. Now we will try to fit\n");
      calibra->SetMinEntries(2000); // If there is less than 2000
      calibra->AnalysePH(histodriftvelocity);
      
      Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
	+ 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
      Int_t nbfit        = calibra->GetNumberFit();
      Int_t nbfitSuccess = calibra->GetNumberFitSuccess();
      Int_t nbE        = calibra->GetNumberEnt();
      
      // if enough statistics store the results
      if ((nbtg >                  0) && 
	  (nbfit        >= 0.5*nbE) && (nbE > 30) && (nbfitSuccess > 30)) {
	// create the cal objects
	calibra->RemoveOutliers(1,kTRUE);
	calibra->PutMeanValueOtherVectorFit(1,kTRUE);
	calibra->RemoveOutliers2(kTRUE);
	calibra->PutMeanValueOtherVectorFit2(1,kTRUE);
	TObjArray object      = calibra->GetVectorFit();
	AliTRDCalDet *objdriftvelocitydet = calibra->CreateDetObjectVdrift(&object,kTRUE);
	//	TObject *objdriftvelocitypad = calibra->CreatePadObjectVdrift();
	object              = calibra->GetVectorFit2();
	AliTRDCalDet *objtime0det         = calibra->CreateDetObjectT0(&object,kTRUE);
	//	TObject *objtime0pad         = calibra->CreatePadObjectT0();
	calibra->ResetVectorFit();
	// store
	 if(!Store("Calib","ChamberVdrift"    ,(TObject *) objdriftvelocitydet,&md1,0,kTRUE)){
	 	  Log("Error storing the calibration object for the chamber vdrift (DAQ)");
	 	  error = kTRUE;
	 	}
	 	if(!Store("Calib","ChamberT0"        ,(TObject *) objtime0det        ,&md1,0,kTRUE)){
	 	  Log("Error storing the calibration object for the chamber t0 (DAQ)");
	 	  error = kTRUE;
	 	}
	// 	if(!Store("Calib","LocalVdrift"      ,(TObject *) objdriftvelocitypad,&md2,0,kTRUE)){
	// 	  Log("Error storing the calibration object for the local drift velocity (DAQ)");
	// 	  error = kTRUE;
	// 	}
	// 	if(!Store("Calib","LocalT0"          ,(TObject *) objtime0pad        ,&md2,0,kTRUE)){
	// 	  Log("Error storing the calibration object for the local time0 (DAQ)");
	// 	  error = kTRUE;
	// 	}
      }
      else{
	Log("Not enough statistics for the average pulse height (DAQ)");
      }
    } // histo here
  }// if fileNameEntry
  
  delete listdaq; 
  return error; 
  
}

//______________________________________________________________________________________________
Bool_t AliTRDPreprocessor::ExtractHLT()
{
  //
  // Gain, vdrift and PRF calibration running on HLT
  // return kTRUE if NULL pointer to the list
  //

  Bool_t error = kFALSE;

  // Objects for HLT and DAQ zusammen
  AliTRDCalibraFit *calibra = AliTRDCalibraFit::Instance();
  AliCDBMetaData metaData;
  metaData.SetBeamPeriod(0);
  metaData.SetResponsible("Raphaelle Bailhache");
  metaData.SetComment("TRD calib test");
  // Store the infos for the detector
  AliCDBMetaData md1; 
  md1.SetObjectClassName("AliTRDCalDet");
  md1.SetResponsible("Raphaelle Bailhache");
  md1.SetBeamPeriod(0);
  md1.SetComment("TRD calib test");
  // Store the infos for the pads
  AliCDBMetaData md2; 
  md2.SetObjectClassName("AliTRDCalPad");
  md2.SetResponsible("Raphaelle Bailhache");
  md2.SetBeamPeriod(0);
  md2.SetComment("TRD calib test");
  
  // Take the file from the HLT file exchange server
  TList *listhlt = GetFileSources(kHLT,"GAINDRIFTPRF");
  if (!listhlt) {
    Log("No list found for the HLT");
    return kTRUE;
  }

  if(listhlt->GetSize() != 1) {
    Log(Form("Problem on the size of the list: %d (HLT)",listhlt->GetSize()));
    delete listhlt;
    return kTRUE;
  }
  
  TObjString* fileNameEntry = (TObjString*) listhlt->At(0);
  if(fileNameEntry != NULL){
    TString fileName = GetFile(kHLT, "GAINDRIFTPRF",
			       fileNameEntry->GetString().Data());
    if(fileName.Length() ==0){
      Log("Error retrieving the file (HLT)");
      delete listhlt;
      return kTRUE;
    }
    // Take the file
    TFile *filehlt = TFile::Open(fileName);
    
    // gain
    TH2I *histogain = (TH2I *) filehlt->Get("CH2d");
    if (histogain) {
      histogain->SetDirectory(0);
      // store the reference data
      if(!StoreReferenceData("HLTData","Gain",(TObject *) histogain,&metaData)){
	Log("Error storing 2D histos for gain");
	error = kTRUE;
      }
      // analyse
      Log("Take the CH reference data. Now we will try to fit\n");
      calibra->SetMinEntries(800); // If there is less than 1000 entries in the histo: no fit
      calibra->AnalyseCH(histogain);
      Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(0))
	+ 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(0));
      Int_t nbfit       = calibra->GetNumberFit();
      Int_t nbE         = calibra->GetNumberEnt();
      // enough statistics
      if ((nbtg >                  0) && 
	  (nbfit        >= 0.5*nbE) && (nbE > 30)) {
	// create the cal objects
	calibra->PutMeanValueOtherVectorFit(1,kTRUE);
	TObjArray object           = calibra->GetVectorFit();
	AliTRDCalDet *objgaindet   = calibra->CreateDetObjectGain(&object);
	//	TObject *objgainpad        = calibra->CreatePadObjectGain();
	// store them
	if(!Store("Calib","ChamberGainFactor",(TObject *) objgaindet         ,&md1,0,kTRUE)){
	  Log("Error storing the calibration object for the chamber gain");
	  error = kTRUE;
	}
	// 	if(!Store("Calib","LocalGainFactor"  ,(TObject *) objgainpad         ,&md2,0,kTRUE)){
	// 	  Log("Error storing the calibration object for the local gain factor");
	// 	  error = kTRUE;
	// 	}
      }
      calibra->ResetVectorFit();
    }// if histogain
    
    // vdrift
    fVdriftHLT = kFALSE;
    TProfile2D *histodriftvelocity = (TProfile2D *) filehlt->Get("PH2d");
    if (histodriftvelocity) {
      histodriftvelocity->SetDirectory(0);
      // store the reference data
      if(!StoreReferenceData("HLTData","VdriftT0",(TObject *) histodriftvelocity,&metaData)){
	Log("Error storing 2D Profile for average pulse height (HLT)");
	error = kTRUE;
      }
      // analyse
      Log("Take the PH reference data. Now we will try to fit\n");
      calibra->SetMinEntries(800*20); // If there is less than 20000
      calibra->AnalysePH(histodriftvelocity);
      Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
	+ 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
      Int_t nbfit        = calibra->GetNumberFit();
      Int_t nbfitSuccess = calibra->GetNumberFitSuccess();
      Int_t nbE          = calibra->GetNumberEnt();
      // enough statistics
      if ((nbtg >                  0) && 
	  (nbfit        >= 0.5*nbE) && (nbE > 30) && (nbfitSuccess > 30)) {
	// create the cal objects
	calibra->RemoveOutliers(1,kTRUE);
	calibra->PutMeanValueOtherVectorFit(1,kTRUE);
	calibra->RemoveOutliers2(kTRUE);
	calibra->PutMeanValueOtherVectorFit2(1,kTRUE);
	TObjArray object  = calibra->GetVectorFit();
	AliTRDCalDet *objdriftvelocitydet = calibra->CreateDetObjectVdrift(&object,kTRUE);
	//	TObject *objdriftvelocitypad      = calibra->CreatePadObjectVdrift();
	object              = calibra->GetVectorFit2();
	AliTRDCalDet *objtime0det  = calibra->CreateDetObjectT0(&object,kTRUE);
	//TObject *objtime0pad       = calibra->CreatePadObjectT0();
	// store them
	if(!Store("Calib","ChamberVdrift"    ,(TObject *) objdriftvelocitydet,&md1,0,kTRUE)){
	  Log("Error storing the calibration object for the chamber vdrift (HLT)");
	  error = kTRUE;		
	}
	if(!Store("Calib","ChamberT0"        ,(TObject *) objtime0det        ,&md1,0,kTRUE)){
	  Log("Error storing the calibration object for the chamber t0 (HLT)");
	  error = kTRUE;
	}
	// if(!Store("Calib","LocalVdrift"      ,(TObject *) objdriftvelocitypad,&md2,0,kTRUE)){
	// 	  Log("Error storing the calibration object for the local drift velocity (HLT)");
	// 	  error = kTRUE;
	// 	}
	// 	if(!Store("Calib","LocalT0"          ,(TObject *) objtime0pad        ,&md2,0,kTRUE)){
	// 	  Log("Error storing the calibration object for the local time0 (HLT)");
	// 	  error = kTRUE;
	// 	}
	fVdriftHLT = kTRUE;
      }
      calibra->ResetVectorFit();
    }// if TProfile2D
    
    // prf
    /*
    TProfile2D *histoprf = (TProfile2D *) filehlt->Get("PRF2d");
    if (histoprf) {
      histoprf->SetDirectory(0);    
      // store reference data
      if(!StoreReferenceData("HLTData","PRF",(TObject *) histoprf,&metaData)){
	Log("Error storing the 2D Profile for Pad Response Function");
	error = kTRUE;
      }
      // analyse
      Log("Take the PRF reference data. Now we will try to fit\n");
      calibra->SetMinEntries(600); // If there is less than 20000
      calibra->AnalysePRFMarianFit(histoprf);
      Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(2))
	+ 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(2));
      Int_t nbfit        = calibra->GetNumberFit();
      Int_t nbE          = calibra->GetNumberEnt();
      // enough statistics
      if ((nbtg >                  0) && 
	  (nbfit        >= 0.95*nbE) && (nbE > 30)) {
	// create cal pad objects 
	TObjArray object            = calibra->GetVectorFit();
	TObject *objPRFpad          = calibra->CreatePadObjectPRF(&object);
	// store them
	if(!Store("Calib","PRFWidth"         ,(TObject *) objPRFpad          ,&md2,0,kTRUE)){
	  Log("Error storing the calibration object for the Pad Response Function");
	  error = kTRUE;
	}
      }
      calibra->ResetVectorFit();
    }// if PRF
    */
  }// if fileNameEntry
  
  delete listhlt;
  return error;
  
}

//_____________________________________________________________________________
UInt_t AliTRDPreprocessor::ProcessDCSConfigData()
{
  // process the configuration of FEE, PTR and GTU
  // reteive XML filei(s) from the DCS FXS
  // parse it/them and store TObjArrays in the CDB

  Log("Processing the DCS config summary files.");

  if(fCalDCSObjSOR) delete fCalDCSObjSOR;
  if(fCalDCSObjEOR) delete fCalDCSObjEOR;

  TString xmlFile[2];
  TString esor[2] = {"SOR", "EOR"};
  // get the XML files
  xmlFile[0] = GetFile(kDCS,"CONFIGSUMMARYSOR","");
  xmlFile[1] = GetFile(kDCS,"CONFIGSUMMARYEOR","");


  // check both files
  for (Int_t iFile=0; iFile<2; iFile++) {

    // check if the file are there
    if (xmlFile[iFile].IsNull()) {
      Log(Form("Warning: %s file not found!", esor[iFile].Data()));
      continue;
    }
    Log(Form("%s file found: %s", esor[iFile].Data(), xmlFile[iFile].Data()));

    // test the file
    std::ifstream fileTest;
    fileTest.open(xmlFile[iFile].Data(), std::ios_base::binary | std::ios_base::in);
    if (!fileTest.good() || fileTest.eof() || !fileTest.is_open()) {
      Log(Form("Warning: %s file not valid!", esor[iFile].Data()));
      continue;
    } 
    // check if the file is empty
    fileTest.seekg(0, std::ios_base::end);
    if (static_cast<int>(fileTest.tellg()) < 2) {
      Log(Form("Warning: %s file empty!", esor[iFile].Data()));
      continue;
    }
    Log(Form("%s file is valid.", esor[iFile].Data()));

    // make a robust XML validation
    TSAXParser testParser;
    if (testParser.ParseFile(xmlFile[iFile].Data()) < 0 ) {
      Log(Form("Warning: %s XML content is not well-formed!", esor[iFile].Data()));
      continue;
    }
    Log(Form("%s XML content is well-formed.", esor[iFile].Data()));

    // create parser and parse
    TSAXParser saxParser;
    AliTRDSaxHandler saxHandler;
    saxParser.ConnectToHandler("AliTRDSaxHandler", &saxHandler);
    saxParser.ParseFile(xmlFile[iFile].Data());

    // report errors of the parser if present
    if (saxParser.GetParseCode() != 0) {
      Log(Form("Warning: %s XML file validation failed! Parse code: %d", esor[iFile].Data(), saxParser.GetParseCode()));
      continue;
    }
    Log(Form("%s XML validation OK.", esor[iFile].Data()));

    // report errors of the handler if present
    if (saxHandler.GetHandlerStatus() != 0) {
      Log(Form("Warning: Creating %s calibration object failed! Error code: %d", esor[iFile].Data(), saxHandler.GetHandlerStatus()));
      continue;
    }
    Log(Form("%s SAX handler reports no errors.", esor[iFile].Data()));

    // get the calibration object storing the data from the handler
    AliTRDCalDCSv2 *calDCSObj = (AliTRDCalDCSv2*)saxHandler.GetCalDCSObj()->Clone();
    calDCSObj->EvaluateGlobalParameters();
    calDCSObj->SetRunType(GetRunType());
    calDCSObj->SetStartTime(GetStartTimeDCSQuery());
    calDCSObj->SetEndTime(GetEndTimeDCSQuery());
    if (iFile == 0) fCalDCSObjSOR = calDCSObj;
    if (iFile == 1) fCalDCSObjEOR = calDCSObj;
  }

  if (!fCalDCSObjSOR && !fCalDCSObjEOR) { Log("ERROR: Failed reading both files!"); return 1; }

  // put both objects in one TObjArray to store them
  TObjArray* calObjArray = new TObjArray(2);
  calObjArray->SetOwner();

  if (fCalDCSObjSOR) {
    calObjArray->AddAt(fCalDCSObjSOR,0);
    Log("TRDCalDCS object for SOR created.");
  }
  if (fCalDCSObjEOR) {
    calObjArray->AddAt(fCalDCSObjEOR,1);
    Log("TRDCalDCS object for EOR created.");
  }

  // store the DCS calib data in the CDB
  AliCDBMetaData metaData1;
  metaData1.SetBeamPeriod(0);
  metaData1.SetResponsible("Frederick Kramer");
  metaData1.SetComment("DCS configuration data in two AliTRDCalDCSv2 objects in one TObjArray (0:SOR, 1:EOR).");
  if (!Store("Calib", "DCS", calObjArray, &metaData1, 0, kTRUE)) { Log("ERROR: Storing DCS config data object failed!"); return 1; }

  delete calObjArray;

  Log("SUCCESS: Processing of the DCS config summary file DONE.");  
  return 0;
}

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