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$ */
/*********************************************************************
 *  T0 reconstruction and filling ESD
 *  - reconstruct mean time (interation time) 
 *  - vertex position
 *  -  multiplicity
 ********************************************************************/

#include <AliESDEvent.h>
#include "AliLog.h"
#include "AliT0RecPoint.h"
#include "AliRawReader.h"
#include "AliT0RawReader.h"
#include "AliT0digit.h"
#include "AliT0Reconstructor.h"
#include "AliT0Parameters.h"
#include "AliT0Calibrator.h"
#include "AliESDfriend.h"
#include "AliESDTZERO.h"
#include "AliESDTZEROfriend.h"
#include "AliLog.h"
#include "AliCDBEntry.h" 
#include "AliCDBManager.h"
#include "AliCTPTimeParams.h"
#include "AliLHCClockPhase.h"
#include "AliT0CalibSeasonTimeShift.h"
#include "AliESDRun.h"

#include <TArrayI.h>
#include <TGraph.h>
#include <TMath.h>
#include <Riostream.h>

ClassImp(AliT0Reconstructor)

  AliT0Reconstructor:: AliT0Reconstructor(): AliReconstructor(),
					     fdZonA(0),
					     fdZonC(0),
					     fZposition(0),
					     fParam(NULL),
					     fAmpLEDrec(),
					     fQTC(0),
					     fAmpLED(0),
                                             fCalib(),
                                             fLatencyHPTDC(9000),
                                             fLatencyL1(0),
                                             fLatencyL1A(0),
                                             fLatencyL1C(0),
					     fGRPdelays(0),
					     fTimeMeanShift(0x0),
					     fTimeSigmaShift(0x0),
                                             fESDTZEROfriend(NULL),
                                             fESDTZERO(NULL),
					     fIsCDFfromGRP(kFALSE)

{
  for (Int_t i=0; i<24; i++)  fTime0vertex[i] =0;

  //constructor
  AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
  if (!entry) AliFatal("CTP timing parameters are not found in OCDB !");
  AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject();
  Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0;

  AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");
  if (!entry1) AliFatal("CTP time-alignment is not found in OCDB !");
  AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject();
  l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0);
 
  AliCDBEntry *entry4 = AliCDBManager::Instance()->Get("GRP/Calib/LHCClockPhase");
  if (!entry4) AliFatal("LHC clock-phase shift is not found in OCDB !");
  AliLHCClockPhase *phase = (AliLHCClockPhase*)entry4->GetObject();
  
  fGRPdelays = l1Delay - phase->GetMeanPhase();
  
  AliCDBEntry *entry5 = AliCDBManager::Instance()->Get("T0/Calib/TimeAdjust");
  if (entry5) {
    AliT0CalibSeasonTimeShift *timeshift = (AliT0CalibSeasonTimeShift*)entry5->GetObject();
    fTimeMeanShift = timeshift->GetT0Means();
    fTimeSigmaShift  = timeshift->GetT0Sigmas();
  }
  else
    AliWarning("Time Adjust is not found in OCDB !");
 
  fParam = AliT0Parameters::Instance();
  fParam->Init();
 
  for (Int_t i=0; i<24; i++){
        TGraph* gr = fParam ->GetAmpLEDRec(i);
	if (gr) fAmpLEDrec.AddAtAndExpand(gr,i) ; 
	  TGraph* gr1 = fParam ->GetAmpLED(i);
	  if (gr1) fAmpLED.AddAtAndExpand(gr1,i) ; 
	  TGraph* gr2 = fParam ->GetQTC(i);
	  if (gr2) fQTC.AddAtAndExpand(gr2,i) ; 	
	  fTime0vertex[i] = fParam->GetCFD(i);
 }
  fLatencyL1 = fParam->GetLatencyL1();
  fLatencyL1A = fParam->GetLatencyL1A(); 
  fLatencyL1C = fParam->GetLatencyL1C();
  fLatencyHPTDC = fParam->GetLatencyHPTDC();
  AliDebug(2,Form(" LatencyL1 %f latencyL1A %f latencyL1C %f latencyHPTDC %f \n",fLatencyL1, fLatencyL1A, fLatencyL1C, fLatencyHPTDC));
 
  for (Int_t i=0; i<24; i++) {
     if( fTime0vertex[i] < 500 || fTime0vertex[i] > 60000)
       { fTime0vertex[i] =( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4;
	 fIsCDFfromGRP=kTRUE;
       }
     AliDebug(2,Form("OCDB mean CFD time %i %f \n",i, fTime0vertex[i]));
  }
  //here real Z position
  fdZonC = TMath::Abs(fParam->GetZPosition("T0/C/PMT1"));
  fdZonA = TMath::Abs(fParam->GetZPosition("T0/A/PMT15"));
  
  fCalib = new AliT0Calibrator();
  fESDTZEROfriend = new AliESDTZEROfriend();
  fESDTZERO  = new AliESDTZERO();
  
 
}

//_____________________________________________________________________________
void AliT0Reconstructor::Reconstruct(TTree*digitsTree, TTree*clustersTree) const
{
  // T0 digits reconstruction
  Int_t refAmp = 0 ; /*Int_t (GetRecoParam()->GetRefAmp());*/
  
  TArrayI * timeCFD = new TArrayI(24); 
  TArrayI * timeLED = new TArrayI(24); 
  TArrayI * chargeQT0 = new TArrayI(24); 
  TArrayI * chargeQT1 = new TArrayI(24); 

 
  Float_t c = 29.9792458; // cm/ns
  Float_t channelWidth = fParam->GetChannelWidth() ;  
  Double32_t vertex = 9999999, meanVertex = 0 ;
  Double32_t timeDiff=999999, meanTime=999999, timeclock=999999;
  
  
  AliDebug(1,Form("Start DIGITS reconstruction "));
  
  Float_t lowAmpThreshold =  GetRecoParam()->GetAmpLowThreshold();  
  Float_t highAmpThreshold =  GetRecoParam()->GetAmpHighThreshold(); 
  printf("Reconstruct(TTree*digitsTree highAmpThreshold %f  lowAmpThreshold %f \n",lowAmpThreshold, highAmpThreshold);

  //shift T0A, T0C , T0AC
  Float_t shiftA = GetRecoParam() -> GetLow(310);  
  Float_t shiftC = GetRecoParam() -> GetLow(311);  
  Float_t shiftAC = GetRecoParam() -> GetLow(312);
  AliDebug(2, Form("Reconstruct(TTree*digitsTree shiftA %f shiftC %f shiftAC %f \n",shiftA, shiftC, shiftAC));
  
  Double32_t besttimeA=9999999;  Double32_t besttimeA_best=9999999;
  Double32_t besttimeC=9999999;  Double32_t besttimeC_best=9999999;
  Int_t timeDelayCFD[24]; 
  Int_t badpmt[24];
  //Bad channel
  for (Int_t i=0; i<24; i++) {
    badpmt[i] = GetRecoParam() -> GetBadChannels(i);
    timeDelayCFD[i] =  Int_t (fParam->GetTimeDelayCFD(i));
  }
  fCalib->SetEq(0);
  TBranch *brDigits=digitsTree->GetBranch("T0");
  AliT0digit *fDigits = new AliT0digit() ;
  if (brDigits) {
    brDigits->SetAddress(&fDigits);
  }else{
    AliError(Form("EXEC Branch T0 digits not found"));
    return;
  }
  
  digitsTree->GetEvent(0);
  digitsTree->GetEntry(0);
  brDigits->GetEntry(0);
  fDigits->GetTimeCFD(*timeCFD);
  fDigits->GetTimeLED(*timeLED);
  fDigits->GetQT0(*chargeQT0);
  fDigits->GetQT1(*chargeQT1);
  Int_t onlineMean =  fDigits->MeanTime();
  
  Bool_t tr[5];
  for (Int_t i=0; i<5; i++) tr[i]=false; 
  
  
  AliT0RecPoint frecpoints;
  AliT0RecPoint * pfrecpoints = &frecpoints;
  clustersTree->Branch( "T0", "AliT0RecPoint" ,&pfrecpoints);
  
  Float_t time[24], adc[24], adcmip[24];
  for (Int_t ipmt=0; ipmt<24; ipmt++) {
    if(timeCFD->At(ipmt)>0 ) {
      Float_t timefull = 0.001*( timeCFD->At(ipmt) - 511 - timeDelayCFD[ipmt])  * channelWidth;
      frecpoints.SetTimeFull(ipmt, 0 ,timefull) ;
      if(( chargeQT1->At(ipmt) - chargeQT0->At(ipmt))>0)  
	adc[ipmt] = chargeQT1->At(ipmt) - chargeQT0->At(ipmt);
      else
	adc[ipmt] = 0;
      
      time[ipmt] = fCalib-> WalkCorrection(refAmp, ipmt, Int_t(adc[ipmt]),  timeCFD->At(ipmt)) ;
      time[ipmt] =   time[ipmt] - 511;   
      Double_t sl = Double_t(timeLED->At(ipmt) - timeCFD->At(ipmt));
      //    time[ipmt] = fCalib-> WalkCorrection( refAmp,ipmt, Int_t(sl),  timeCFD->At(ipmt) ) ;
      AliDebug(5,Form(" ipmt %i QTC  %i , time in chann %i (led-cfd) %i ",
		      ipmt, Int_t(adc[ipmt]) ,Int_t(time[ipmt]),Int_t( sl)));
      
      Double_t ampMip = 0;
      TGraph* ampGraph = (TGraph*)fAmpLED.At(ipmt);
      if (ampGraph) ampMip = ampGraph->Eval(sl);
      Double_t qtMip = 0;
      TGraph* qtGraph = (TGraph*)fQTC.At(ipmt);
      if (qtGraph) qtMip = qtGraph->Eval(adc[ipmt]);
      AliDebug(5,Form("  Amlitude in MIPS LED %f ,  QTC %f in channels %f\n ",ampMip,qtMip, adc[ipmt]));
      frecpoints.SetTime(ipmt, Float_t(time[ipmt]) );
      frecpoints.SetAmpLED(ipmt, Float_t( ampMip)); 
      frecpoints.SetAmp(ipmt, Float_t(qtMip));
      adcmip[ipmt]=qtMip;
      
    }
    else {
      time[ipmt] = -99999;
      adc[ipmt] = 0;
      adcmip[ipmt] = 0;
      
    }
  }
  
  for (Int_t ipmt=0; ipmt<12; ipmt++){
    if(time[ipmt] !=0  && time[ipmt] != -99999
       &&  adcmip[ipmt]>lowAmpThreshold && adcmip[ipmt]<highAmpThreshold )
      {
	if(time[ipmt]<besttimeC) besttimeC=time[ipmt]; //timeC
	if(TMath::Abs(time[ipmt])<TMath::Abs(besttimeC_best)) 
	  besttimeC_best=time[ipmt]; //timeC	     
      }
  }
  for ( Int_t ipmt=12; ipmt<24; ipmt++)
    {
      if(time[ipmt] != 0 && time[ipmt] != -99999
	 && adcmip[ipmt]>lowAmpThreshold && adcmip[ipmt]<highAmpThreshold)
	{
	  if(time[ipmt]<besttimeA) besttimeA=time[ipmt]; 
	  if(TMath::Abs(time[ipmt] ) < TMath::Abs(besttimeA_best)) 
	    besttimeA_best=time[ipmt]; //timeA
	}
    }
  
  if( besttimeA < 999999 && besttimeA!=0) {
    frecpoints.SetTimeBestA((besttimeA_best * channelWidth  - fdZonA/c)  );
    frecpoints.SetTime1stA((besttimeA * channelWidth  - fdZonA/c - shiftA) );
    tr[1]=true;
  }
  
  if( besttimeC < 999999 && besttimeC!=0) {
    frecpoints.SetTimeBestC((besttimeC_best * channelWidth  - fdZonC/c) );
    frecpoints.SetTime1stC((besttimeC * channelWidth  - fdZonC/c - shiftC) );
    tr[2]=true;
  }
  
  AliDebug(5,Form("1stimeA %f , besttimeA %f 1sttimeC %f besttimeC %f ",
		  besttimeA, besttimeA_best,
		  besttimeC, besttimeC_best) );

  if(besttimeA <999999 && besttimeC < 999999 ){
    //    timeDiff = (besttimeC - besttimeA)*channelWidth;
    timeDiff = (besttimeA - besttimeC)*channelWidth;
    meanTime = channelWidth * (besttimeA_best + besttimeC_best)/2. ; 
    timeclock = channelWidth * (besttimeA + besttimeC)/2. - shiftAC ;
    vertex = meanVertex - 0.001* c*(timeDiff)/2.;// + (fdZonA - fdZonC)/2;
    tr[0]=true; 
  }
  frecpoints.SetVertex(vertex);
  frecpoints.SetMeanTime(meanTime );
  frecpoints.SetT0clock(timeclock );
  frecpoints.SetT0Trig(tr);
  
 AliDebug(5,Form("fRecPoints:::  1stimeA %f , besttimeA %f 1sttimeC %f besttimeC %f vertex %f",
		  frecpoints.Get1stTimeA(),  frecpoints.GetBestTimeA(),
		  frecpoints.Get1stTimeC(),  frecpoints.GetBestTimeC(), 
		  vertex ) );
  
  AliDebug(5,Form("T0 triggers %d %d %d %d %d",tr[0],tr[1],tr[2],tr[3],tr[4]));
  
  //online mean
  frecpoints.SetOnlineMean(Int_t(onlineMean));
  AliDebug(10,Form("  timeDiff %f #channel,  meanTime %f #channel, vertex %f cm online mean %i timeclock %f ps",timeDiff, meanTime,vertex, Int_t(onlineMean), timeclock));
  
  clustersTree->Fill();
  
  delete timeCFD;
  delete timeLED;
  delete chargeQT0; 
  delete chargeQT1; 
}


//_______________________________________________________________________

void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) const
{
  // T0 raw ->
  //
  
  Float_t meanOrA = fTime0vertex[0] + 587;
  Float_t meanOrC = fTime0vertex[0] + 678;
  Float_t meanTVDC = fTime0vertex[0] + 2564;
  Float_t meanQT1 = fTime0vertex[0] + 2564;
  Float_t meanQT0 = fTime0vertex[0] + 3564;
  
  Int_t timeDelayCFD[24]; 
  Int_t corridor = GetRecoParam() -> GetCorridor();  
  if(fIsCDFfromGRP) corridor *=5;
  AliDebug(10,Form("fIsCDFfromGRP %i  corridor %i \n",fIsCDFfromGRP, corridor) );
  Int_t badpmt[24];
  //Bad channel
  for (Int_t i=0; i<24; i++) {
    badpmt[i] = GetRecoParam() -> GetBadChannels(i);
    timeDelayCFD[i] =  Int_t (fParam->GetTimeDelayCFD(i));
  }
  Int_t badLEDminCFD = GetRecoParam() -> GetHigh(350);
  Int_t equalize = GetRecoParam() -> GetEq();
  AliDebug(10,Form( "AliT0Reconstructor::Reconstruct::: RecoParam %i LEDminCFD threshold %i \n",equalize, badLEDminCFD) );
  fCalib->SetEq(equalize);
  Int_t low[500], high[500];
  Float_t timefull=-99999;;
  Float_t tvdc  = -99999; Float_t ora = -99999; Float_t orc = -99999;
  
  Int_t allData[110][5];
  
  Int_t timeCFD[24], timeLED[24], chargeQT0[24], chargeQT1[24];
  Float_t time2zero[24]; 
  Double32_t timeDiff, meanTime, timeclock;
  timeDiff =  meanTime = timeclock = 9999999;
  Float_t c = 29.9792458; // cm/ns
  Double32_t vertex = 9999999;
  Int_t onlineMean=0;
  Float_t meanVertex = 0;
  Int_t pedestal[24];
  for (Int_t i0=0; i0<24; i0++) {
    low[i0] = Int_t(fTime0vertex[i0]) - corridor;
    high[i0] = Int_t(fTime0vertex[i0]) + corridor;
    time2zero[i0] = 99999;
    pedestal[i0]=Int_t (GetRecoParam()->GetLow(100+i0) );
  }
  
  for (Int_t i0=0; i0<110; i0++)
    for (Int_t j0=0; j0<5; j0++)  allData[i0][j0]=0; 
  
  Float_t lowAmpThreshold =  GetRecoParam()->GetAmpLowThreshold();  
  Float_t highAmpThreshold =  GetRecoParam()->GetAmpHighThreshold(); 
  
  Double32_t besttimeA=9999999;  Double32_t besttimeA_best=9999999;
  Double32_t besttimeC=9999999;  Double32_t besttimeC_best=9999999;

   Float_t channelWidth = fParam->GetChannelWidth() ;  
	
  AliT0RecPoint frecpoints;
  AliT0RecPoint * pfrecpoints = &frecpoints;
  
  recTree->Branch( "T0", "AliT0RecPoint" ,&pfrecpoints);
   
  AliDebug(10," before read data ");
  AliT0RawReader myrawreader(rawReader);

  UInt_t type =rawReader->GetType();

  if (!myrawreader.Next())
    AliDebug(1,Form(" no raw data found!!"));
  else
    {  
   for (Int_t i=0; i<24; i++)
    {
      timeCFD[i]=0; timeLED[i]=0; chargeQT0[i]=0; chargeQT1[i]=0;
    }
  
      if(type == 7  ) {  //only physics 
	for (Int_t i=0; i<107; i++) {
	for (Int_t iHit=0; iHit<5; iHit++) 
	  {
	    allData[i][iHit] = myrawreader.GetData(i,iHit);
	  }
	}
	
	Int_t fBCID=Int_t (rawReader->GetBCID());
	Int_t trmbunch= myrawreader.GetTRMBunchID();
	AliDebug(10,Form(" CDH BC ID %i, TRM BC ID %i \n", fBCID, trmbunch ));
	if( (trmbunch-fBCID)!=37  ) {
	  AliDebug(0,Form("wrong :::: CDH BC ID %i, TRM BC ID %i \n", fBCID, trmbunch ));
	  //	  type = -1;
	}
	for (Int_t in=0; in<12; in++)  
	  {
	    for (Int_t iHit=0; iHit<5; iHit++) 
	      {
		if(allData[in+1][iHit] > low[in] && 
		   allData[in+1][iHit] < high[in])
		  {
		    timeCFD[in] = allData[in+1][iHit] ; 
 		    break;
		  }
	      }
	    for (Int_t iHit=0; iHit<5; iHit++) 
	      {
		if(allData[in+1+56][iHit] > low[in+12] && 
		   allData[in+1+56][iHit] < high[in+12])
		  {
		    timeCFD[in+12] = allData[in+56+1][iHit] ;
		    break;
		  }
	      }
	    timeLED[in+12] = allData[in+68+1][0] ;
	    timeLED[in] = allData[in+12+1][0] ;
	    AliDebug(50, Form(" readed i %i cfdC %i cfdA %i ledC %i ledA%i ",
			      in, timeCFD[in],timeCFD[in+12],timeLED[in], 
			     timeLED[in+12]));   
	    
	  }
	
	for (Int_t in=0; in<12;  in++)
	  {
	    for (Int_t iHit=0; iHit<5; iHit++) 
	      {
                if (allData[2*in+26][iHit] > fTime0vertex[0]+2000 &&  
		    allData[2*in+26][iHit] <fTime0vertex[0]+3000 ) {
		    chargeQT1[in]=allData[2*in+26][0];
		    break;
		}
	      }

	    for (Int_t iHit=0; iHit<5; iHit++) 
	      {
		if( (allData[2*in+25][iHit] -  chargeQT1[in])>800 
		    &&  chargeQT1[in]>0)		
		  {
		    chargeQT0[in]=allData[2*in+25][0];
		    AliDebug(25, Form(" readed Raw %i %i %i",
				      in, chargeQT0[in],chargeQT1[in]));
		    break;
		  }
		}
	  }	
	for (Int_t in=12; in<24;  in++)
	  {
     	    for (Int_t iHit=0; iHit<5; iHit++) 
	      {
		if (allData[2*in+58][iHit] > fTime0vertex[0]+2000 &&  
		    allData[2*in+58][iHit] <fTime0vertex[0]+3000 )
		  {
		    chargeQT1[in]=allData[2*in+58][0];
		    break;
		  }
	      }
    	    for (Int_t iHit=0; iHit<5; iHit++) 
	      {
		if( (allData[2*in+57][iHit] -  chargeQT1[in])>800 && 
		    chargeQT1[in]>0 )
		  {
		    chargeQT0[in]=allData[2*in+57][0];
		    AliDebug(25, Form(" readed Raw %i %i %i",
				      in, chargeQT0[in],chargeQT1[in]));
		    break;
		  }
	      }
	  }
	
	onlineMean = allData[49][0];
	
	Double32_t time[24], adc[24], adcmip[24], noncalibtime[24];
	for (Int_t ipmt=0; ipmt<24; ipmt++) {
	  if(timeCFD[ipmt] >  0 && (chargeQT0[ipmt] - chargeQT1[ipmt])> 0 &&
	  (timeLED[ipmt]-timeCFD[ipmt])<badLEDminCFD){
	   //for simulated data
	     //for physics  data
	   adc[ipmt] = chargeQT0[ipmt] - chargeQT1[ipmt];
	   Int_t refAmp = Int_t (fTime0vertex[ipmt]);
	   time[ipmt] = fCalib-> WalkCorrection( refAmp, ipmt, Int_t(adc[ipmt]), timeCFD[ipmt] ) ;
      	   Double_t sl = timeLED[ipmt] - timeCFD[ipmt];
	   // time[ipmt] = fCalib-> WalkCorrection( refAmp,ipmt, Int_t(sl), timeCFD[ipmt] ) ;
	   AliDebug(5,Form(" ipmt %i QTC %i , time in chann %i (led-cfd) %i ",
			    ipmt, Int_t(adc[ipmt]) ,Int_t(time[ipmt]),Int_t( sl)));
	   Double_t ampMip = 0;
	   TGraph * ampGraph =  (TGraph*)fAmpLED.At(ipmt);
	   if (ampGraph) ampMip = ampGraph->Eval(sl);
	   Double_t qtMip = 0;
	   TGraph * qtGraph = (TGraph*)fQTC.At(ipmt);
	   if (qtGraph) qtMip = qtGraph->Eval(adc[ipmt]);
	   AliDebug(10,Form("  Amlitude in MIPS LED %f ; QTC %f;  in channels %f\n ",ampMip,qtMip, adc[ipmt]));
	   if( equalize  ==0 ) 
	     frecpoints.SetTime(ipmt, Float_t(time[ipmt]) );
	   else 
	     frecpoints.SetTime(ipmt, Float_t(time[ipmt] + fTime0vertex[ipmt]) );
	   // frecpoints.SetTime(ipmt, Float_t(time[ipmt] ) );
	   if(qtMip<0) qtMip=0;
	   frecpoints.SetAmp(ipmt, Double32_t( qtMip)); 
	   adcmip[ipmt]=qtMip;
	   frecpoints.SetAmpLED(ipmt, Double32_t(ampMip));	     
	   noncalibtime[ipmt]= Double32_t (timeCFD[ipmt]);
	  }
	  else {
	   time[ipmt] = -9999;
	   adc[ipmt] = 0;
	   adcmip[ipmt] = 0;
	   noncalibtime[ipmt] = -9999;
	  }
       }
       fESDTZEROfriend->SetT0timeCorr(noncalibtime) ; 
    
       for (Int_t ipmt=0; ipmt<12; ipmt++){
	 if(time[ipmt] !=0 &&  time[ipmt] > -9000 
	    /*&& badpmt[ipmt]==0 */
	    &&  adcmip[ipmt]>lowAmpThreshold )
	   {
	     if(time[ipmt]<besttimeC) besttimeC=time[ipmt]; //timeC
	     if(TMath::Abs(time[ipmt])<TMath::Abs(besttimeC_best)) 
	       besttimeC_best=time[ipmt]; //timeC	     
	   }
       }
       for ( Int_t ipmt=12; ipmt<24; ipmt++)
	 {
	   if(time[ipmt] != 0 &&  time[ipmt] > -9000 
	      /* && badpmt[ipmt]==0*/ 
	      && adcmip[ipmt]>lowAmpThreshold )
	     {
	       if(time[ipmt]<besttimeA) besttimeA=time[ipmt]; 
	       if(TMath::Abs(time[ipmt] ) < TMath::Abs(besttimeA_best)) 
		 besttimeA_best=time[ipmt]; //timeA
	     }
	 }
       
       if(besttimeA < 999999 && besttimeA!=0 ) {
	 if( equalize  ==0 ) 
	   frecpoints.SetTime1stA((besttimeA * channelWidth)- 1000.*fLatencyHPTDC + 1000.*fLatencyL1A - 1000.*fGRPdelays - fTimeMeanShift[1] ); 
	 else
	   {
	     frecpoints.SetTimeBestA((besttimeA_best * channelWidth )); 
	     frecpoints.SetTime1stA((besttimeA * channelWidth - fTimeMeanShift[1])); 
	   }
       }
       if( besttimeC < 999999 && besttimeC!=0) {
	 if( equalize  ==0 ) 
	   frecpoints.SetTime1stC((besttimeC * channelWidth)- 1000.*fLatencyHPTDC +1000.*fLatencyL1C - 1000.*fGRPdelays - fTimeMeanShift[2]);
	 else
	   {
	     frecpoints.SetTimeBestC((besttimeC_best * channelWidth ));
	     frecpoints.SetTime1stC((besttimeC * channelWidth - fTimeMeanShift[2]));
	   }
       }
       AliDebug(5,Form("1stimeA %f , besttimeA %f 1sttimeC %f besttimeC %f ",
		       besttimeA, besttimeA_best,
		       besttimeC, besttimeC_best) );
       AliDebug(5,Form("fRecPoints:::  1stimeA %f , besttimeA %f 1sttimeC %f besttimeC %f shiftA %f shiftC %f ",
		       frecpoints.Get1stTimeA(),  frecpoints.GetBestTimeA(),
		       frecpoints.Get1stTimeC(),  frecpoints.GetBestTimeC(), 
		       fTimeMeanShift[1],fTimeMeanShift[2] ) );
       if( besttimeC < 999999 &&  besttimeA < 999999) { 
	 if(equalize  ==0 )
	   timeclock = (channelWidth*(besttimeC + besttimeA)/2.- 1000.*fLatencyHPTDC +1000.*fLatencyL1 - 1000.*fGRPdelays - fTimeMeanShift[0]);
	 else
	   {
	     timeclock = channelWidth * Float_t( besttimeA+besttimeC)/2. - fTimeMeanShift[0];
	     meanTime = channelWidth * Float_t(besttimeA_best + besttimeC_best )/2.;
	   }
	 timeDiff = ( besttimeA - besttimeC)* 0.001* channelWidth ;
	 vertex =  meanVertex - c*(timeDiff)/2. ; //+ (fdZonA - fdZonC)/2; 
       }
       
      }  //if phys event       
       AliDebug(1,Form("  timeDiff %f #channel,  meanTime %f #ps, TOFmean%f  vertex %f cm meanVertex %f  \n",timeDiff, meanTime,timeclock, vertex,meanVertex));
       frecpoints.SetT0clock(timeclock);
       frecpoints.SetVertex(vertex);
       frecpoints.SetMeanTime(meanTime);
       frecpoints.SetOnlineMean(Int_t(onlineMean));
      
      // Set triggers
      Bool_t tr[5];
      Int_t trchan[5] = {50,51,52,55,56};
      Float_t lowtr[5] = {meanTVDC-700, meanOrA-700, meanOrC-700, meanOrC-1000, meanOrC-1000 };
      Float_t hightr[5] = {meanTVDC+700, meanOrA+700, meanOrC+700, meanOrC+1000, meanOrC+1000};
      
      for (Int_t i=0; i<5; i++) tr[i] = false; 
      for (Int_t itr=0; itr<5; itr++) {
 	for (Int_t iHit=0; iHit<1; iHit++) 
	  {
	    Int_t trr=trchan[itr];
	    if( allData[trr][iHit] > lowtr[itr] && allData[trr][iHit] < hightr[itr])  tr[itr]=true;
	    
	    AliDebug(15,Form("Reconstruct :::  T0 triggers iHit %i tvdc %d orA %d orC %d centr %d semicentral %d",iHit, tr[0],tr[1],tr[2],tr[3],tr[4]));
	  }	  
      }
      frecpoints.SetT0Trig(tr);
      
      // all times with amplitude correction 
      Float_t timecent;
      for (Int_t iHit=0; iHit<5; iHit++) 
	{
	  timefull = timecent = -9999; 
	  tvdc = ora = orc = -9999;
	  if(allData[50][iHit]>0) 
	    tvdc = (Float_t(allData[50][iHit]) - meanTVDC) * channelWidth* 0.001; 
	  if(allData[51][iHit]>0)
	    ora = (Float_t(allData[51][iHit]) - meanOrA) * channelWidth* 0.001;
	  
	  if(allData[52][iHit]>0) 
	    orc = (Float_t(allData[52][iHit]) - meanOrC) * channelWidth* 0.001;
	  
	  frecpoints.SetOrC( iHit, orc);
	  frecpoints.SetOrA( iHit, ora);
	  frecpoints.SetTVDC( iHit, tvdc);
	  for (Int_t i0=0; i0<12; i0++) {
	    if (equalize  ==0 )  
	      timecent = fTime0vertex[i0] + timeDelayCFD[i0];
	    else
	      timecent = fTime0vertex[i0];
	    timefull = -9999; 
	    if(allData[i0+1][iHit]>1) 
	      timefull = (Float_t(allData[i0+1][iHit]) - timecent)* channelWidth* 0.001;
	    frecpoints.SetTimeFull(i0, iHit,timefull) ;
	    //	    if(allData[i0+1][iHit]>1)  printf("i0 %d iHit %d data %d fTime0vertex %f timefull %f \n",i0, iHit, allData[i0+1][iHit], fTime0vertex[i0], timefull);
	    
	  }
	  
	  for (Int_t i0=12; i0<24; i0++) {
	    timefull = -9999; 
	    if (equalize  ==0 )  
	      timecent = fTime0vertex[i0] + timeDelayCFD[i0];
	    else
	      timecent = fTime0vertex[i0];
	    if(allData[i0+45][iHit]>1) {
	      timefull = (Float_t(allData[i0+45][iHit]) - timecent)* channelWidth* 0.001;
	    }
	    //  if(allData[i0+45][iHit]>1)  printf("i0 %d iHit %d data %d fTime0vertex %f timefull %f \n",i0, iHit, allData[i0+45][iHit], fTime0vertex[i0], timefull);
	    frecpoints.SetTimeFull(i0, iHit, timefull) ;
	  }
	}
      
      
      //Set MPD
      Float_t mpda_start=0, mpdc_start=0;
      for (Int_t iHit=0; iHit<5; iHit++) 
	{
	  if (allData[54][iHit] > fTime0vertex[0]+2000 &&  
	      allData[54][iHit] <fTime0vertex[0]+3000 ) {
	    mpda_start=Float_t(allData[54][iHit]);
	    AliDebug(15,Form("Reconstruct :::  T0 MPD iHit %i MPDA start %f",iHit, mpda_start ));

	    break;
	  }
	}
      for (Int_t iHit=0; iHit<5; iHit++) 
	{
	  if(allData[53][iHit] > fTime0vertex[0]+3000 && 
	     (allData[53][iHit]-mpda_start)>800 && mpda_start>0 && tr[1]) {
	    frecpoints.SetMultA(Float_t(allData[53][iHit] - mpda_start) );
	    AliDebug(15,Form("Reconstruct :::  T0 MPD iHit %i MPDA stop %i MPD %f",iHit, allData[53][iHit],Float_t(allData[53][iHit] - mpda_start) ));
	    break;
	  }
	}
      for (Int_t iHit=0; iHit<5; iHit++) 
	{
	  if (allData[106][iHit] > fTime0vertex[0]+2000 &&  
	      allData[106][iHit] <fTime0vertex[0]+3000 ) {
	    mpdc_start=allData[54][iHit];
	    AliDebug(15,Form("Reconstruct :::  T0 MPD iHit %i MPDC start %f ",iHit, mpdc_start));
	    break;
	  }
	}
      for (Int_t iHit=0; iHit<5; iHit++) 
	{
	  if(allData[105][iHit] > fTime0vertex[0]+3000 && 
	     (allData[105][iHit]-mpdc_start)>800 && mpdc_start>0 && tr[2]) {
	    frecpoints.SetMultC(Float_t(allData[105][iHit] - mpdc_start) );
	    AliDebug(15,Form("Reconstruct :::  T0 MPD iHit %i MPDC stop %i MPD %f",iHit, allData[105][iHit],Float_t(allData[105][iHit] - mpdc_start) ));
	    break;
	  }
	}
    } // if (else )raw data
  recTree->Fill();
}
  
  
//____________________________________________________________
  
  void AliT0Reconstructor::FillESD(TTree */*digitsTree*/, TTree *clustersTree, AliESDEvent *pESD) const
  {

  /***************************************************
  Resonstruct digits to vertex position
  ****************************************************/
  
  AliDebug(1,Form("Start FillESD T0"));
  if(!pESD) {
    AliError("No ESD Event");
    return;
  }
  pESD ->SetT0spread(fTimeSigmaShift);
 

  Float_t channelWidth = fParam->GetChannelWidth() ;  
  Float_t c = 0.0299792458; // cm/ps
  Float_t currentVertex=0, shift=0;
  Int_t ncont=-1;
  const AliESDVertex* vertex = pESD->GetPrimaryVertex();
  if (!vertex)        vertex = pESD->GetPrimaryVertexSPD();
  if (!vertex)        vertex = pESD->GetPrimaryVertexTPC();
  if (!vertex)        vertex = pESD->GetVertex();

  if (vertex) {
    AliDebug(2, Form("Got %s (%s) from ESD: %f", 
		    vertex->GetName(), vertex->GetTitle(), vertex->GetZ()));
    currentVertex = vertex->GetZ();
    
    ncont = vertex->GetNContributors();
    if(ncont>0 ) {
      shift = currentVertex/c;
    }
  }
  TTree *treeR = clustersTree;
  
  AliT0RecPoint frecpoints;
  AliT0RecPoint * pfrecpoints = &frecpoints;
  
  AliDebug(1,Form("Start FillESD T0"));
  TBranch *brRec = treeR->GetBranch("T0");
  if (brRec) {
    brRec->SetAddress(&pfrecpoints);
  }else{
    AliError(Form("EXEC Branch T0 rec not found"));
    return;
  } 
  
  brRec->GetEntry(0);
  Double32_t amp[24], time[24], ampQTC[24], timecorr[24];  
  Double32_t* tcorr;
  for(Int_t i=0; i<24; i++) 
    amp[i]=time[i]=ampQTC[i]=timecorr[i]=0;

  //1st time 
  Double32_t timeClock[3];
  Double32_t zPosition = frecpoints.GetVertex();

  timeClock[0] = frecpoints.GetT0clock() ;
  timeClock[1] = frecpoints.Get1stTimeA() + shift;
  timeClock[2] = frecpoints.Get1stTimeC() - shift;
  //best time
  Double32_t timemean[3];
  timemean[0] = frecpoints.GetMeanTime();
  timemean[1] = frecpoints.GetBestTimeA() + shift;
  timemean[2] = frecpoints.GetBestTimeC() - shift;

  for(Int_t i=0; i<3; i++) {
    fESDTZERO->SetT0TOF(i,timeClock[i]);   // interaction time (ns) 
    fESDTZERO->SetT0TOFbest(i,timemean[i]);   // interaction time (ns) 
  }
  for ( Int_t i=0; i<24; i++) {
    time[i] =  frecpoints.GetTime(i); // ps to ns
    if ( time[i] != 0 && time[i]>-9999) {
      ampQTC[i] = frecpoints.GetAmp(i);
      amp[i] = frecpoints.AmpLED(i);
      AliDebug(1,Form("T0: %i  time %f  ampQTC %f ampLED %f \n", i, time[i], ampQTC[i], amp[i]));
   }
  }
  fESDTZERO->SetT0time(time);         // best TOF on each PMT 
  fESDTZERO->SetT0amplitude(ampQTC);     // number of particles(MIPs) on each PMT
  Int_t trig= frecpoints.GetT0Trig();
  frecpoints.PrintTriggerSignals( trig);
  //  printf(" !!!!! FillESD trigger %i \n",trig);
  fESDTZERO->SetT0Trig(trig);
  fESDTZERO->SetT0zVertex(zPosition); //vertex Z position 

  Double32_t multA=frecpoints.GetMultA();
  Double32_t multC=frecpoints.GetMultC();
  fESDTZERO->SetMultA(multA); // for backward compatubility
  fESDTZERO->SetMultC(multC); // for backward compatubility


  for (Int_t iHit =0; iHit<5; iHit++ ) {
       AliDebug(10,Form("FillESD ::: iHit %i tvdc %f orA %f orC %f\n", iHit,
	   frecpoints.GetTVDC(iHit),
	   frecpoints.GetOrA(iHit),
		       frecpoints.GetOrC(iHit) ));
    fESDTZERO->SetTVDC(iHit,frecpoints.GetTVDC(iHit));
    fESDTZERO->SetOrA(iHit,frecpoints.GetOrA(iHit));
    fESDTZERO->SetOrC(iHit,frecpoints.GetOrC(iHit));
    
    for (Int_t i0=0; i0<24; i0++) {
      //  if(frecpoints.GetTimeFull(i0,iHit)>0){
      //      	printf("FillESD ::: iHit %i cfd %i time %f \n", iHit, i0, frecpoints.GetTimeFull(i0,iHit));
	fESDTZERO->SetTimeFull(i0, iHit,frecpoints.GetTimeFull(i0,iHit));
	// }
	
    }	     	     
  }
  
  AliDebug(1,Form("T0: SPDshift %f Vertex %f (T0A+T0C)/2 best %f #ps T0signal %f ps OrA %f ps OrC %f ps T0trig %i\n",shift, zPosition, timemean[0], timeClock[0], timeClock[1], timeClock[2], trig));

  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  // background flags
  Bool_t background = BackgroundFlag();
  fESDTZERO->SetBackgroundFlag(background);
  Bool_t pileup =  PileupFlag();
  fESDTZERO->SetPileupFlag(pileup);
  for (Int_t i=0; i<5; i++) {
    fESDTZERO->SetPileupTime(i, frecpoints.GetTVDC(i) ) ;
    //   printf("!!!!!! FillESD :: pileup %i %f %f \n", i,fESDTZERO->GetPileupTime(i), frecpoints.GetTVDC(i));
  }
  Bool_t sat  = SatelliteFlag();
  fESDTZERO->SetSatelliteFlag(sat);
  
  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  if (pESD) {
    
    AliESDfriend *fr = (AliESDfriend*)pESD->FindListObject("AliESDfriend");
    if (fr) {
      AliDebug(10, Form("Writing TZERO friend data to ESD tree"));

      //     if (ncont>2) {
	tcorr = fESDTZEROfriend->GetT0timeCorr();
	for ( Int_t i=0; i<24; i++) {
  	  if(i<12 && time[i]>1) timecorr[i] = tcorr[i] -  shift/channelWidth;
	  if(i>11 && time[i]>1) timecorr[i] = tcorr[i] +  shift/channelWidth;
	  if(time[i]>1)	  AliDebug(10,Form("T0 friend : %i time %f  ampQTC %f ampLED %f \n", i, timecorr[i], ampQTC[i], amp[i]));
	}
	fESDTZEROfriend->SetT0timeCorr( timecorr) ;
	fESDTZEROfriend->SetT0ampLEDminCFD(amp);
	fESDTZEROfriend->SetT0ampQTC(ampQTC);
 	fr->SetTZEROfriend(fESDTZEROfriend);
	//      }//
    }

    pESD->SetTZEROData(fESDTZERO);
  }

} // vertex in 3 sigma

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 //____________________________________________________________
  
Bool_t AliT0Reconstructor::PileupFlag() const
{
  //
  Bool_t pileup = false;
  Float_t tvdc[5];
  for (Int_t ih=0; ih<5; ih++) 
    {
      tvdc[ih] =  fESDTZERO->GetTVDC(ih);
      
     if(  tvdc[0] !=0 &&  tvdc[0]> -10 && tvdc[0]< 10 )
       if(ih>0 && tvdc[ih]>20 ) 	pileup = true; 
     if( tvdc[0] >20 || (tvdc[0] < -20  &&  tvdc[0] > -9000) ) pileup =true;
     //    if (pileup) printf(" !!!!! pile up %i  tvdc %f \n",ih,  tvdc[ih]); 
    }


  return pileup;

}

 //____________________________________________________________
  
Bool_t AliT0Reconstructor::BackgroundFlag() const
{
 
  Bool_t background = false;
  /*  
      Float_t orA = fESDTZERO->GetOrA(0);
      Float_t orC = fESDTZERO->GetOrC(0);
      Float_t tvdc =  fESDTZERO->GetTVDC(ih);
      
      if ( (orA > -5 && orA <5) && (orC > -5 && orC <5) && (tvdc < -5 || tvdc > 5)) {
      background = true;
      //   printf(" orA %f orC %f tvdc %f\n", orA, orC, tvdc);
      } 
  */ 
  return background;


}


 //____________________________________________________________
  
Bool_t  AliT0Reconstructor::SatelliteFlag() const
{

 Float_t satelliteLow = GetRecoParam() -> GetLowSatelliteThreshold();
  Float_t satelliteHigh = GetRecoParam() -> GetHighSatelliteThreshold();
  Bool_t satellite = false;
  for (Int_t i0=0; i0<24; i0++) {
    Float_t timefull =  fESDTZERO -> GetTimeFull(i0,0);
    if( timefull > satelliteLow && timefull < satelliteHigh)  satellite=true;
  }
	
  return satellite;

}
 AliT0Reconstructor.cxx:1
 AliT0Reconstructor.cxx:2
 AliT0Reconstructor.cxx:3
 AliT0Reconstructor.cxx:4
 AliT0Reconstructor.cxx:5
 AliT0Reconstructor.cxx:6
 AliT0Reconstructor.cxx:7
 AliT0Reconstructor.cxx:8
 AliT0Reconstructor.cxx:9
 AliT0Reconstructor.cxx:10
 AliT0Reconstructor.cxx:11
 AliT0Reconstructor.cxx:12
 AliT0Reconstructor.cxx:13
 AliT0Reconstructor.cxx:14
 AliT0Reconstructor.cxx:15
 AliT0Reconstructor.cxx:16
 AliT0Reconstructor.cxx:17
 AliT0Reconstructor.cxx:18
 AliT0Reconstructor.cxx:19
 AliT0Reconstructor.cxx:20
 AliT0Reconstructor.cxx:21
 AliT0Reconstructor.cxx:22
 AliT0Reconstructor.cxx:23
 AliT0Reconstructor.cxx:24
 AliT0Reconstructor.cxx:25
 AliT0Reconstructor.cxx:26
 AliT0Reconstructor.cxx:27
 AliT0Reconstructor.cxx:28
 AliT0Reconstructor.cxx:29
 AliT0Reconstructor.cxx:30
 AliT0Reconstructor.cxx:31
 AliT0Reconstructor.cxx:32
 AliT0Reconstructor.cxx:33
 AliT0Reconstructor.cxx:34
 AliT0Reconstructor.cxx:35
 AliT0Reconstructor.cxx:36
 AliT0Reconstructor.cxx:37
 AliT0Reconstructor.cxx:38
 AliT0Reconstructor.cxx:39
 AliT0Reconstructor.cxx:40
 AliT0Reconstructor.cxx:41
 AliT0Reconstructor.cxx:42
 AliT0Reconstructor.cxx:43
 AliT0Reconstructor.cxx:44
 AliT0Reconstructor.cxx:45
 AliT0Reconstructor.cxx:46
 AliT0Reconstructor.cxx:47
 AliT0Reconstructor.cxx:48
 AliT0Reconstructor.cxx:49
 AliT0Reconstructor.cxx:50
 AliT0Reconstructor.cxx:51
 AliT0Reconstructor.cxx:52
 AliT0Reconstructor.cxx:53
 AliT0Reconstructor.cxx:54
 AliT0Reconstructor.cxx:55
 AliT0Reconstructor.cxx:56
 AliT0Reconstructor.cxx:57
 AliT0Reconstructor.cxx:58
 AliT0Reconstructor.cxx:59
 AliT0Reconstructor.cxx:60
 AliT0Reconstructor.cxx:61
 AliT0Reconstructor.cxx:62
 AliT0Reconstructor.cxx:63
 AliT0Reconstructor.cxx:64
 AliT0Reconstructor.cxx:65
 AliT0Reconstructor.cxx:66
 AliT0Reconstructor.cxx:67
 AliT0Reconstructor.cxx:68
 AliT0Reconstructor.cxx:69
 AliT0Reconstructor.cxx:70
 AliT0Reconstructor.cxx:71
 AliT0Reconstructor.cxx:72
 AliT0Reconstructor.cxx:73
 AliT0Reconstructor.cxx:74
 AliT0Reconstructor.cxx:75
 AliT0Reconstructor.cxx:76
 AliT0Reconstructor.cxx:77
 AliT0Reconstructor.cxx:78
 AliT0Reconstructor.cxx:79
 AliT0Reconstructor.cxx:80
 AliT0Reconstructor.cxx:81
 AliT0Reconstructor.cxx:82
 AliT0Reconstructor.cxx:83
 AliT0Reconstructor.cxx:84
 AliT0Reconstructor.cxx:85
 AliT0Reconstructor.cxx:86
 AliT0Reconstructor.cxx:87
 AliT0Reconstructor.cxx:88
 AliT0Reconstructor.cxx:89
 AliT0Reconstructor.cxx:90
 AliT0Reconstructor.cxx:91
 AliT0Reconstructor.cxx:92
 AliT0Reconstructor.cxx:93
 AliT0Reconstructor.cxx:94
 AliT0Reconstructor.cxx:95
 AliT0Reconstructor.cxx:96
 AliT0Reconstructor.cxx:97
 AliT0Reconstructor.cxx:98
 AliT0Reconstructor.cxx:99
 AliT0Reconstructor.cxx:100
 AliT0Reconstructor.cxx:101
 AliT0Reconstructor.cxx:102
 AliT0Reconstructor.cxx:103
 AliT0Reconstructor.cxx:104
 AliT0Reconstructor.cxx:105
 AliT0Reconstructor.cxx:106
 AliT0Reconstructor.cxx:107
 AliT0Reconstructor.cxx:108
 AliT0Reconstructor.cxx:109
 AliT0Reconstructor.cxx:110
 AliT0Reconstructor.cxx:111
 AliT0Reconstructor.cxx:112
 AliT0Reconstructor.cxx:113
 AliT0Reconstructor.cxx:114
 AliT0Reconstructor.cxx:115
 AliT0Reconstructor.cxx:116
 AliT0Reconstructor.cxx:117
 AliT0Reconstructor.cxx:118
 AliT0Reconstructor.cxx:119
 AliT0Reconstructor.cxx:120
 AliT0Reconstructor.cxx:121
 AliT0Reconstructor.cxx:122
 AliT0Reconstructor.cxx:123
 AliT0Reconstructor.cxx:124
 AliT0Reconstructor.cxx:125
 AliT0Reconstructor.cxx:126
 AliT0Reconstructor.cxx:127
 AliT0Reconstructor.cxx:128
 AliT0Reconstructor.cxx:129
 AliT0Reconstructor.cxx:130
 AliT0Reconstructor.cxx:131
 AliT0Reconstructor.cxx:132
 AliT0Reconstructor.cxx:133
 AliT0Reconstructor.cxx:134
 AliT0Reconstructor.cxx:135
 AliT0Reconstructor.cxx:136
 AliT0Reconstructor.cxx:137
 AliT0Reconstructor.cxx:138
 AliT0Reconstructor.cxx:139
 AliT0Reconstructor.cxx:140
 AliT0Reconstructor.cxx:141
 AliT0Reconstructor.cxx:142
 AliT0Reconstructor.cxx:143
 AliT0Reconstructor.cxx:144
 AliT0Reconstructor.cxx:145
 AliT0Reconstructor.cxx:146
 AliT0Reconstructor.cxx:147
 AliT0Reconstructor.cxx:148
 AliT0Reconstructor.cxx:149
 AliT0Reconstructor.cxx:150
 AliT0Reconstructor.cxx:151
 AliT0Reconstructor.cxx:152
 AliT0Reconstructor.cxx:153
 AliT0Reconstructor.cxx:154
 AliT0Reconstructor.cxx:155
 AliT0Reconstructor.cxx:156
 AliT0Reconstructor.cxx:157
 AliT0Reconstructor.cxx:158
 AliT0Reconstructor.cxx:159
 AliT0Reconstructor.cxx:160
 AliT0Reconstructor.cxx:161
 AliT0Reconstructor.cxx:162
 AliT0Reconstructor.cxx:163
 AliT0Reconstructor.cxx:164
 AliT0Reconstructor.cxx:165
 AliT0Reconstructor.cxx:166
 AliT0Reconstructor.cxx:167
 AliT0Reconstructor.cxx:168
 AliT0Reconstructor.cxx:169
 AliT0Reconstructor.cxx:170
 AliT0Reconstructor.cxx:171
 AliT0Reconstructor.cxx:172
 AliT0Reconstructor.cxx:173
 AliT0Reconstructor.cxx:174
 AliT0Reconstructor.cxx:175
 AliT0Reconstructor.cxx:176
 AliT0Reconstructor.cxx:177
 AliT0Reconstructor.cxx:178
 AliT0Reconstructor.cxx:179
 AliT0Reconstructor.cxx:180
 AliT0Reconstructor.cxx:181
 AliT0Reconstructor.cxx:182
 AliT0Reconstructor.cxx:183
 AliT0Reconstructor.cxx:184
 AliT0Reconstructor.cxx:185
 AliT0Reconstructor.cxx:186
 AliT0Reconstructor.cxx:187
 AliT0Reconstructor.cxx:188
 AliT0Reconstructor.cxx:189
 AliT0Reconstructor.cxx:190
 AliT0Reconstructor.cxx:191
 AliT0Reconstructor.cxx:192
 AliT0Reconstructor.cxx:193
 AliT0Reconstructor.cxx:194
 AliT0Reconstructor.cxx:195
 AliT0Reconstructor.cxx:196
 AliT0Reconstructor.cxx:197
 AliT0Reconstructor.cxx:198
 AliT0Reconstructor.cxx:199
 AliT0Reconstructor.cxx:200
 AliT0Reconstructor.cxx:201
 AliT0Reconstructor.cxx:202
 AliT0Reconstructor.cxx:203
 AliT0Reconstructor.cxx:204
 AliT0Reconstructor.cxx:205
 AliT0Reconstructor.cxx:206
 AliT0Reconstructor.cxx:207
 AliT0Reconstructor.cxx:208
 AliT0Reconstructor.cxx:209
 AliT0Reconstructor.cxx:210
 AliT0Reconstructor.cxx:211
 AliT0Reconstructor.cxx:212
 AliT0Reconstructor.cxx:213
 AliT0Reconstructor.cxx:214
 AliT0Reconstructor.cxx:215
 AliT0Reconstructor.cxx:216
 AliT0Reconstructor.cxx:217
 AliT0Reconstructor.cxx:218
 AliT0Reconstructor.cxx:219
 AliT0Reconstructor.cxx:220
 AliT0Reconstructor.cxx:221
 AliT0Reconstructor.cxx:222
 AliT0Reconstructor.cxx:223
 AliT0Reconstructor.cxx:224
 AliT0Reconstructor.cxx:225
 AliT0Reconstructor.cxx:226
 AliT0Reconstructor.cxx:227
 AliT0Reconstructor.cxx:228
 AliT0Reconstructor.cxx:229
 AliT0Reconstructor.cxx:230
 AliT0Reconstructor.cxx:231
 AliT0Reconstructor.cxx:232
 AliT0Reconstructor.cxx:233
 AliT0Reconstructor.cxx:234
 AliT0Reconstructor.cxx:235
 AliT0Reconstructor.cxx:236
 AliT0Reconstructor.cxx:237
 AliT0Reconstructor.cxx:238
 AliT0Reconstructor.cxx:239
 AliT0Reconstructor.cxx:240
 AliT0Reconstructor.cxx:241
 AliT0Reconstructor.cxx:242
 AliT0Reconstructor.cxx:243
 AliT0Reconstructor.cxx:244
 AliT0Reconstructor.cxx:245
 AliT0Reconstructor.cxx:246
 AliT0Reconstructor.cxx:247
 AliT0Reconstructor.cxx:248
 AliT0Reconstructor.cxx:249
 AliT0Reconstructor.cxx:250
 AliT0Reconstructor.cxx:251
 AliT0Reconstructor.cxx:252
 AliT0Reconstructor.cxx:253
 AliT0Reconstructor.cxx:254
 AliT0Reconstructor.cxx:255
 AliT0Reconstructor.cxx:256
 AliT0Reconstructor.cxx:257
 AliT0Reconstructor.cxx:258
 AliT0Reconstructor.cxx:259
 AliT0Reconstructor.cxx:260
 AliT0Reconstructor.cxx:261
 AliT0Reconstructor.cxx:262
 AliT0Reconstructor.cxx:263
 AliT0Reconstructor.cxx:264
 AliT0Reconstructor.cxx:265
 AliT0Reconstructor.cxx:266
 AliT0Reconstructor.cxx:267
 AliT0Reconstructor.cxx:268
 AliT0Reconstructor.cxx:269
 AliT0Reconstructor.cxx:270
 AliT0Reconstructor.cxx:271
 AliT0Reconstructor.cxx:272
 AliT0Reconstructor.cxx:273
 AliT0Reconstructor.cxx:274
 AliT0Reconstructor.cxx:275
 AliT0Reconstructor.cxx:276
 AliT0Reconstructor.cxx:277
 AliT0Reconstructor.cxx:278
 AliT0Reconstructor.cxx:279
 AliT0Reconstructor.cxx:280
 AliT0Reconstructor.cxx:281
 AliT0Reconstructor.cxx:282
 AliT0Reconstructor.cxx:283
 AliT0Reconstructor.cxx:284
 AliT0Reconstructor.cxx:285
 AliT0Reconstructor.cxx:286
 AliT0Reconstructor.cxx:287
 AliT0Reconstructor.cxx:288
 AliT0Reconstructor.cxx:289
 AliT0Reconstructor.cxx:290
 AliT0Reconstructor.cxx:291
 AliT0Reconstructor.cxx:292
 AliT0Reconstructor.cxx:293
 AliT0Reconstructor.cxx:294
 AliT0Reconstructor.cxx:295
 AliT0Reconstructor.cxx:296
 AliT0Reconstructor.cxx:297
 AliT0Reconstructor.cxx:298
 AliT0Reconstructor.cxx:299
 AliT0Reconstructor.cxx:300
 AliT0Reconstructor.cxx:301
 AliT0Reconstructor.cxx:302
 AliT0Reconstructor.cxx:303
 AliT0Reconstructor.cxx:304
 AliT0Reconstructor.cxx:305
 AliT0Reconstructor.cxx:306
 AliT0Reconstructor.cxx:307
 AliT0Reconstructor.cxx:308
 AliT0Reconstructor.cxx:309
 AliT0Reconstructor.cxx:310
 AliT0Reconstructor.cxx:311
 AliT0Reconstructor.cxx:312
 AliT0Reconstructor.cxx:313
 AliT0Reconstructor.cxx:314
 AliT0Reconstructor.cxx:315
 AliT0Reconstructor.cxx:316
 AliT0Reconstructor.cxx:317
 AliT0Reconstructor.cxx:318
 AliT0Reconstructor.cxx:319
 AliT0Reconstructor.cxx:320
 AliT0Reconstructor.cxx:321
 AliT0Reconstructor.cxx:322
 AliT0Reconstructor.cxx:323
 AliT0Reconstructor.cxx:324
 AliT0Reconstructor.cxx:325
 AliT0Reconstructor.cxx:326
 AliT0Reconstructor.cxx:327
 AliT0Reconstructor.cxx:328
 AliT0Reconstructor.cxx:329
 AliT0Reconstructor.cxx:330
 AliT0Reconstructor.cxx:331
 AliT0Reconstructor.cxx:332
 AliT0Reconstructor.cxx:333
 AliT0Reconstructor.cxx:334
 AliT0Reconstructor.cxx:335
 AliT0Reconstructor.cxx:336
 AliT0Reconstructor.cxx:337
 AliT0Reconstructor.cxx:338
 AliT0Reconstructor.cxx:339
 AliT0Reconstructor.cxx:340
 AliT0Reconstructor.cxx:341
 AliT0Reconstructor.cxx:342
 AliT0Reconstructor.cxx:343
 AliT0Reconstructor.cxx:344
 AliT0Reconstructor.cxx:345
 AliT0Reconstructor.cxx:346
 AliT0Reconstructor.cxx:347
 AliT0Reconstructor.cxx:348
 AliT0Reconstructor.cxx:349
 AliT0Reconstructor.cxx:350
 AliT0Reconstructor.cxx:351
 AliT0Reconstructor.cxx:352
 AliT0Reconstructor.cxx:353
 AliT0Reconstructor.cxx:354
 AliT0Reconstructor.cxx:355
 AliT0Reconstructor.cxx:356
 AliT0Reconstructor.cxx:357
 AliT0Reconstructor.cxx:358
 AliT0Reconstructor.cxx:359
 AliT0Reconstructor.cxx:360
 AliT0Reconstructor.cxx:361
 AliT0Reconstructor.cxx:362
 AliT0Reconstructor.cxx:363
 AliT0Reconstructor.cxx:364
 AliT0Reconstructor.cxx:365
 AliT0Reconstructor.cxx:366
 AliT0Reconstructor.cxx:367
 AliT0Reconstructor.cxx:368
 AliT0Reconstructor.cxx:369
 AliT0Reconstructor.cxx:370
 AliT0Reconstructor.cxx:371
 AliT0Reconstructor.cxx:372
 AliT0Reconstructor.cxx:373
 AliT0Reconstructor.cxx:374
 AliT0Reconstructor.cxx:375
 AliT0Reconstructor.cxx:376
 AliT0Reconstructor.cxx:377
 AliT0Reconstructor.cxx:378
 AliT0Reconstructor.cxx:379
 AliT0Reconstructor.cxx:380
 AliT0Reconstructor.cxx:381
 AliT0Reconstructor.cxx:382
 AliT0Reconstructor.cxx:383
 AliT0Reconstructor.cxx:384
 AliT0Reconstructor.cxx:385
 AliT0Reconstructor.cxx:386
 AliT0Reconstructor.cxx:387
 AliT0Reconstructor.cxx:388
 AliT0Reconstructor.cxx:389
 AliT0Reconstructor.cxx:390
 AliT0Reconstructor.cxx:391
 AliT0Reconstructor.cxx:392
 AliT0Reconstructor.cxx:393
 AliT0Reconstructor.cxx:394
 AliT0Reconstructor.cxx:395
 AliT0Reconstructor.cxx:396
 AliT0Reconstructor.cxx:397
 AliT0Reconstructor.cxx:398
 AliT0Reconstructor.cxx:399
 AliT0Reconstructor.cxx:400
 AliT0Reconstructor.cxx:401
 AliT0Reconstructor.cxx:402
 AliT0Reconstructor.cxx:403
 AliT0Reconstructor.cxx:404
 AliT0Reconstructor.cxx:405
 AliT0Reconstructor.cxx:406
 AliT0Reconstructor.cxx:407
 AliT0Reconstructor.cxx:408
 AliT0Reconstructor.cxx:409
 AliT0Reconstructor.cxx:410
 AliT0Reconstructor.cxx:411
 AliT0Reconstructor.cxx:412
 AliT0Reconstructor.cxx:413
 AliT0Reconstructor.cxx:414
 AliT0Reconstructor.cxx:415
 AliT0Reconstructor.cxx:416
 AliT0Reconstructor.cxx:417
 AliT0Reconstructor.cxx:418
 AliT0Reconstructor.cxx:419
 AliT0Reconstructor.cxx:420
 AliT0Reconstructor.cxx:421
 AliT0Reconstructor.cxx:422
 AliT0Reconstructor.cxx:423
 AliT0Reconstructor.cxx:424
 AliT0Reconstructor.cxx:425
 AliT0Reconstructor.cxx:426
 AliT0Reconstructor.cxx:427
 AliT0Reconstructor.cxx:428
 AliT0Reconstructor.cxx:429
 AliT0Reconstructor.cxx:430
 AliT0Reconstructor.cxx:431
 AliT0Reconstructor.cxx:432
 AliT0Reconstructor.cxx:433
 AliT0Reconstructor.cxx:434
 AliT0Reconstructor.cxx:435
 AliT0Reconstructor.cxx:436
 AliT0Reconstructor.cxx:437
 AliT0Reconstructor.cxx:438
 AliT0Reconstructor.cxx:439
 AliT0Reconstructor.cxx:440
 AliT0Reconstructor.cxx:441
 AliT0Reconstructor.cxx:442
 AliT0Reconstructor.cxx:443
 AliT0Reconstructor.cxx:444
 AliT0Reconstructor.cxx:445
 AliT0Reconstructor.cxx:446
 AliT0Reconstructor.cxx:447
 AliT0Reconstructor.cxx:448
 AliT0Reconstructor.cxx:449
 AliT0Reconstructor.cxx:450
 AliT0Reconstructor.cxx:451
 AliT0Reconstructor.cxx:452
 AliT0Reconstructor.cxx:453
 AliT0Reconstructor.cxx:454
 AliT0Reconstructor.cxx:455
 AliT0Reconstructor.cxx:456
 AliT0Reconstructor.cxx:457
 AliT0Reconstructor.cxx:458
 AliT0Reconstructor.cxx:459
 AliT0Reconstructor.cxx:460
 AliT0Reconstructor.cxx:461
 AliT0Reconstructor.cxx:462
 AliT0Reconstructor.cxx:463
 AliT0Reconstructor.cxx:464
 AliT0Reconstructor.cxx:465
 AliT0Reconstructor.cxx:466
 AliT0Reconstructor.cxx:467
 AliT0Reconstructor.cxx:468
 AliT0Reconstructor.cxx:469
 AliT0Reconstructor.cxx:470
 AliT0Reconstructor.cxx:471
 AliT0Reconstructor.cxx:472
 AliT0Reconstructor.cxx:473
 AliT0Reconstructor.cxx:474
 AliT0Reconstructor.cxx:475
 AliT0Reconstructor.cxx:476
 AliT0Reconstructor.cxx:477
 AliT0Reconstructor.cxx:478
 AliT0Reconstructor.cxx:479
 AliT0Reconstructor.cxx:480
 AliT0Reconstructor.cxx:481
 AliT0Reconstructor.cxx:482
 AliT0Reconstructor.cxx:483
 AliT0Reconstructor.cxx:484
 AliT0Reconstructor.cxx:485
 AliT0Reconstructor.cxx:486
 AliT0Reconstructor.cxx:487
 AliT0Reconstructor.cxx:488
 AliT0Reconstructor.cxx:489
 AliT0Reconstructor.cxx:490
 AliT0Reconstructor.cxx:491
 AliT0Reconstructor.cxx:492
 AliT0Reconstructor.cxx:493
 AliT0Reconstructor.cxx:494
 AliT0Reconstructor.cxx:495
 AliT0Reconstructor.cxx:496
 AliT0Reconstructor.cxx:497
 AliT0Reconstructor.cxx:498
 AliT0Reconstructor.cxx:499
 AliT0Reconstructor.cxx:500
 AliT0Reconstructor.cxx:501
 AliT0Reconstructor.cxx:502
 AliT0Reconstructor.cxx:503
 AliT0Reconstructor.cxx:504
 AliT0Reconstructor.cxx:505
 AliT0Reconstructor.cxx:506
 AliT0Reconstructor.cxx:507
 AliT0Reconstructor.cxx:508
 AliT0Reconstructor.cxx:509
 AliT0Reconstructor.cxx:510
 AliT0Reconstructor.cxx:511
 AliT0Reconstructor.cxx:512
 AliT0Reconstructor.cxx:513
 AliT0Reconstructor.cxx:514
 AliT0Reconstructor.cxx:515
 AliT0Reconstructor.cxx:516
 AliT0Reconstructor.cxx:517
 AliT0Reconstructor.cxx:518
 AliT0Reconstructor.cxx:519
 AliT0Reconstructor.cxx:520
 AliT0Reconstructor.cxx:521
 AliT0Reconstructor.cxx:522
 AliT0Reconstructor.cxx:523
 AliT0Reconstructor.cxx:524
 AliT0Reconstructor.cxx:525
 AliT0Reconstructor.cxx:526
 AliT0Reconstructor.cxx:527
 AliT0Reconstructor.cxx:528
 AliT0Reconstructor.cxx:529
 AliT0Reconstructor.cxx:530
 AliT0Reconstructor.cxx:531
 AliT0Reconstructor.cxx:532
 AliT0Reconstructor.cxx:533
 AliT0Reconstructor.cxx:534
 AliT0Reconstructor.cxx:535
 AliT0Reconstructor.cxx:536
 AliT0Reconstructor.cxx:537
 AliT0Reconstructor.cxx:538
 AliT0Reconstructor.cxx:539
 AliT0Reconstructor.cxx:540
 AliT0Reconstructor.cxx:541
 AliT0Reconstructor.cxx:542
 AliT0Reconstructor.cxx:543
 AliT0Reconstructor.cxx:544
 AliT0Reconstructor.cxx:545
 AliT0Reconstructor.cxx:546
 AliT0Reconstructor.cxx:547
 AliT0Reconstructor.cxx:548
 AliT0Reconstructor.cxx:549
 AliT0Reconstructor.cxx:550
 AliT0Reconstructor.cxx:551
 AliT0Reconstructor.cxx:552
 AliT0Reconstructor.cxx:553
 AliT0Reconstructor.cxx:554
 AliT0Reconstructor.cxx:555
 AliT0Reconstructor.cxx:556
 AliT0Reconstructor.cxx:557
 AliT0Reconstructor.cxx:558
 AliT0Reconstructor.cxx:559
 AliT0Reconstructor.cxx:560
 AliT0Reconstructor.cxx:561
 AliT0Reconstructor.cxx:562
 AliT0Reconstructor.cxx:563
 AliT0Reconstructor.cxx:564
 AliT0Reconstructor.cxx:565
 AliT0Reconstructor.cxx:566
 AliT0Reconstructor.cxx:567
 AliT0Reconstructor.cxx:568
 AliT0Reconstructor.cxx:569
 AliT0Reconstructor.cxx:570
 AliT0Reconstructor.cxx:571
 AliT0Reconstructor.cxx:572
 AliT0Reconstructor.cxx:573
 AliT0Reconstructor.cxx:574
 AliT0Reconstructor.cxx:575
 AliT0Reconstructor.cxx:576
 AliT0Reconstructor.cxx:577
 AliT0Reconstructor.cxx:578
 AliT0Reconstructor.cxx:579
 AliT0Reconstructor.cxx:580
 AliT0Reconstructor.cxx:581
 AliT0Reconstructor.cxx:582
 AliT0Reconstructor.cxx:583
 AliT0Reconstructor.cxx:584
 AliT0Reconstructor.cxx:585
 AliT0Reconstructor.cxx:586
 AliT0Reconstructor.cxx:587
 AliT0Reconstructor.cxx:588
 AliT0Reconstructor.cxx:589
 AliT0Reconstructor.cxx:590
 AliT0Reconstructor.cxx:591
 AliT0Reconstructor.cxx:592
 AliT0Reconstructor.cxx:593
 AliT0Reconstructor.cxx:594
 AliT0Reconstructor.cxx:595
 AliT0Reconstructor.cxx:596
 AliT0Reconstructor.cxx:597
 AliT0Reconstructor.cxx:598
 AliT0Reconstructor.cxx:599
 AliT0Reconstructor.cxx:600
 AliT0Reconstructor.cxx:601
 AliT0Reconstructor.cxx:602
 AliT0Reconstructor.cxx:603
 AliT0Reconstructor.cxx:604
 AliT0Reconstructor.cxx:605
 AliT0Reconstructor.cxx:606
 AliT0Reconstructor.cxx:607
 AliT0Reconstructor.cxx:608
 AliT0Reconstructor.cxx:609
 AliT0Reconstructor.cxx:610
 AliT0Reconstructor.cxx:611
 AliT0Reconstructor.cxx:612
 AliT0Reconstructor.cxx:613
 AliT0Reconstructor.cxx:614
 AliT0Reconstructor.cxx:615
 AliT0Reconstructor.cxx:616
 AliT0Reconstructor.cxx:617
 AliT0Reconstructor.cxx:618
 AliT0Reconstructor.cxx:619
 AliT0Reconstructor.cxx:620
 AliT0Reconstructor.cxx:621
 AliT0Reconstructor.cxx:622
 AliT0Reconstructor.cxx:623
 AliT0Reconstructor.cxx:624
 AliT0Reconstructor.cxx:625
 AliT0Reconstructor.cxx:626
 AliT0Reconstructor.cxx:627
 AliT0Reconstructor.cxx:628
 AliT0Reconstructor.cxx:629
 AliT0Reconstructor.cxx:630
 AliT0Reconstructor.cxx:631
 AliT0Reconstructor.cxx:632
 AliT0Reconstructor.cxx:633
 AliT0Reconstructor.cxx:634
 AliT0Reconstructor.cxx:635
 AliT0Reconstructor.cxx:636
 AliT0Reconstructor.cxx:637
 AliT0Reconstructor.cxx:638
 AliT0Reconstructor.cxx:639
 AliT0Reconstructor.cxx:640
 AliT0Reconstructor.cxx:641
 AliT0Reconstructor.cxx:642
 AliT0Reconstructor.cxx:643
 AliT0Reconstructor.cxx:644
 AliT0Reconstructor.cxx:645
 AliT0Reconstructor.cxx:646
 AliT0Reconstructor.cxx:647
 AliT0Reconstructor.cxx:648
 AliT0Reconstructor.cxx:649
 AliT0Reconstructor.cxx:650
 AliT0Reconstructor.cxx:651
 AliT0Reconstructor.cxx:652
 AliT0Reconstructor.cxx:653
 AliT0Reconstructor.cxx:654
 AliT0Reconstructor.cxx:655
 AliT0Reconstructor.cxx:656
 AliT0Reconstructor.cxx:657
 AliT0Reconstructor.cxx:658
 AliT0Reconstructor.cxx:659
 AliT0Reconstructor.cxx:660
 AliT0Reconstructor.cxx:661
 AliT0Reconstructor.cxx:662
 AliT0Reconstructor.cxx:663
 AliT0Reconstructor.cxx:664
 AliT0Reconstructor.cxx:665
 AliT0Reconstructor.cxx:666
 AliT0Reconstructor.cxx:667
 AliT0Reconstructor.cxx:668
 AliT0Reconstructor.cxx:669
 AliT0Reconstructor.cxx:670
 AliT0Reconstructor.cxx:671
 AliT0Reconstructor.cxx:672
 AliT0Reconstructor.cxx:673
 AliT0Reconstructor.cxx:674
 AliT0Reconstructor.cxx:675
 AliT0Reconstructor.cxx:676
 AliT0Reconstructor.cxx:677
 AliT0Reconstructor.cxx:678
 AliT0Reconstructor.cxx:679
 AliT0Reconstructor.cxx:680
 AliT0Reconstructor.cxx:681
 AliT0Reconstructor.cxx:682
 AliT0Reconstructor.cxx:683
 AliT0Reconstructor.cxx:684
 AliT0Reconstructor.cxx:685
 AliT0Reconstructor.cxx:686
 AliT0Reconstructor.cxx:687
 AliT0Reconstructor.cxx:688
 AliT0Reconstructor.cxx:689
 AliT0Reconstructor.cxx:690
 AliT0Reconstructor.cxx:691
 AliT0Reconstructor.cxx:692
 AliT0Reconstructor.cxx:693
 AliT0Reconstructor.cxx:694
 AliT0Reconstructor.cxx:695
 AliT0Reconstructor.cxx:696
 AliT0Reconstructor.cxx:697
 AliT0Reconstructor.cxx:698
 AliT0Reconstructor.cxx:699
 AliT0Reconstructor.cxx:700
 AliT0Reconstructor.cxx:701
 AliT0Reconstructor.cxx:702
 AliT0Reconstructor.cxx:703
 AliT0Reconstructor.cxx:704
 AliT0Reconstructor.cxx:705
 AliT0Reconstructor.cxx:706
 AliT0Reconstructor.cxx:707
 AliT0Reconstructor.cxx:708
 AliT0Reconstructor.cxx:709
 AliT0Reconstructor.cxx:710
 AliT0Reconstructor.cxx:711
 AliT0Reconstructor.cxx:712
 AliT0Reconstructor.cxx:713
 AliT0Reconstructor.cxx:714
 AliT0Reconstructor.cxx:715
 AliT0Reconstructor.cxx:716
 AliT0Reconstructor.cxx:717
 AliT0Reconstructor.cxx:718
 AliT0Reconstructor.cxx:719
 AliT0Reconstructor.cxx:720
 AliT0Reconstructor.cxx:721
 AliT0Reconstructor.cxx:722
 AliT0Reconstructor.cxx:723
 AliT0Reconstructor.cxx:724
 AliT0Reconstructor.cxx:725
 AliT0Reconstructor.cxx:726
 AliT0Reconstructor.cxx:727
 AliT0Reconstructor.cxx:728
 AliT0Reconstructor.cxx:729
 AliT0Reconstructor.cxx:730
 AliT0Reconstructor.cxx:731
 AliT0Reconstructor.cxx:732
 AliT0Reconstructor.cxx:733
 AliT0Reconstructor.cxx:734
 AliT0Reconstructor.cxx:735
 AliT0Reconstructor.cxx:736
 AliT0Reconstructor.cxx:737
 AliT0Reconstructor.cxx:738
 AliT0Reconstructor.cxx:739
 AliT0Reconstructor.cxx:740
 AliT0Reconstructor.cxx:741
 AliT0Reconstructor.cxx:742
 AliT0Reconstructor.cxx:743
 AliT0Reconstructor.cxx:744
 AliT0Reconstructor.cxx:745
 AliT0Reconstructor.cxx:746
 AliT0Reconstructor.cxx:747
 AliT0Reconstructor.cxx:748
 AliT0Reconstructor.cxx:749
 AliT0Reconstructor.cxx:750
 AliT0Reconstructor.cxx:751
 AliT0Reconstructor.cxx:752
 AliT0Reconstructor.cxx:753
 AliT0Reconstructor.cxx:754
 AliT0Reconstructor.cxx:755
 AliT0Reconstructor.cxx:756
 AliT0Reconstructor.cxx:757
 AliT0Reconstructor.cxx:758
 AliT0Reconstructor.cxx:759
 AliT0Reconstructor.cxx:760
 AliT0Reconstructor.cxx:761
 AliT0Reconstructor.cxx:762
 AliT0Reconstructor.cxx:763
 AliT0Reconstructor.cxx:764
 AliT0Reconstructor.cxx:765
 AliT0Reconstructor.cxx:766
 AliT0Reconstructor.cxx:767
 AliT0Reconstructor.cxx:768
 AliT0Reconstructor.cxx:769
 AliT0Reconstructor.cxx:770
 AliT0Reconstructor.cxx:771
 AliT0Reconstructor.cxx:772
 AliT0Reconstructor.cxx:773
 AliT0Reconstructor.cxx:774
 AliT0Reconstructor.cxx:775
 AliT0Reconstructor.cxx:776
 AliT0Reconstructor.cxx:777
 AliT0Reconstructor.cxx:778
 AliT0Reconstructor.cxx:779
 AliT0Reconstructor.cxx:780
 AliT0Reconstructor.cxx:781
 AliT0Reconstructor.cxx:782
 AliT0Reconstructor.cxx:783
 AliT0Reconstructor.cxx:784
 AliT0Reconstructor.cxx:785
 AliT0Reconstructor.cxx:786
 AliT0Reconstructor.cxx:787
 AliT0Reconstructor.cxx:788
 AliT0Reconstructor.cxx:789
 AliT0Reconstructor.cxx:790
 AliT0Reconstructor.cxx:791
 AliT0Reconstructor.cxx:792
 AliT0Reconstructor.cxx:793
 AliT0Reconstructor.cxx:794
 AliT0Reconstructor.cxx:795
 AliT0Reconstructor.cxx:796
 AliT0Reconstructor.cxx:797
 AliT0Reconstructor.cxx:798
 AliT0Reconstructor.cxx:799
 AliT0Reconstructor.cxx:800
 AliT0Reconstructor.cxx:801
 AliT0Reconstructor.cxx:802
 AliT0Reconstructor.cxx:803
 AliT0Reconstructor.cxx:804
 AliT0Reconstructor.cxx:805
 AliT0Reconstructor.cxx:806
 AliT0Reconstructor.cxx:807
 AliT0Reconstructor.cxx:808
 AliT0Reconstructor.cxx:809
 AliT0Reconstructor.cxx:810
 AliT0Reconstructor.cxx:811
 AliT0Reconstructor.cxx:812
 AliT0Reconstructor.cxx:813
 AliT0Reconstructor.cxx:814
 AliT0Reconstructor.cxx:815
 AliT0Reconstructor.cxx:816
 AliT0Reconstructor.cxx:817
 AliT0Reconstructor.cxx:818
 AliT0Reconstructor.cxx:819
 AliT0Reconstructor.cxx:820
 AliT0Reconstructor.cxx:821
 AliT0Reconstructor.cxx:822
 AliT0Reconstructor.cxx:823
 AliT0Reconstructor.cxx:824
 AliT0Reconstructor.cxx:825
 AliT0Reconstructor.cxx:826
 AliT0Reconstructor.cxx:827
 AliT0Reconstructor.cxx:828
 AliT0Reconstructor.cxx:829
 AliT0Reconstructor.cxx:830
 AliT0Reconstructor.cxx:831
 AliT0Reconstructor.cxx:832
 AliT0Reconstructor.cxx:833
 AliT0Reconstructor.cxx:834
 AliT0Reconstructor.cxx:835
 AliT0Reconstructor.cxx:836
 AliT0Reconstructor.cxx:837
 AliT0Reconstructor.cxx:838
 AliT0Reconstructor.cxx:839
 AliT0Reconstructor.cxx:840
 AliT0Reconstructor.cxx:841
 AliT0Reconstructor.cxx:842
 AliT0Reconstructor.cxx:843
 AliT0Reconstructor.cxx:844
 AliT0Reconstructor.cxx:845
 AliT0Reconstructor.cxx:846
 AliT0Reconstructor.cxx:847
 AliT0Reconstructor.cxx:848
 AliT0Reconstructor.cxx:849
 AliT0Reconstructor.cxx:850
 AliT0Reconstructor.cxx:851
 AliT0Reconstructor.cxx:852
 AliT0Reconstructor.cxx:853
 AliT0Reconstructor.cxx:854
 AliT0Reconstructor.cxx:855
 AliT0Reconstructor.cxx:856
 AliT0Reconstructor.cxx:857
 AliT0Reconstructor.cxx:858
 AliT0Reconstructor.cxx:859
 AliT0Reconstructor.cxx:860
 AliT0Reconstructor.cxx:861
 AliT0Reconstructor.cxx:862
 AliT0Reconstructor.cxx:863
 AliT0Reconstructor.cxx:864
 AliT0Reconstructor.cxx:865
 AliT0Reconstructor.cxx:866
 AliT0Reconstructor.cxx:867
 AliT0Reconstructor.cxx:868
 AliT0Reconstructor.cxx:869
 AliT0Reconstructor.cxx:870
 AliT0Reconstructor.cxx:871
 AliT0Reconstructor.cxx:872
 AliT0Reconstructor.cxx:873
 AliT0Reconstructor.cxx:874
 AliT0Reconstructor.cxx:875
 AliT0Reconstructor.cxx:876
 AliT0Reconstructor.cxx:877
 AliT0Reconstructor.cxx:878
 AliT0Reconstructor.cxx:879
 AliT0Reconstructor.cxx:880
 AliT0Reconstructor.cxx:881
 AliT0Reconstructor.cxx:882
 AliT0Reconstructor.cxx:883
 AliT0Reconstructor.cxx:884
 AliT0Reconstructor.cxx:885
 AliT0Reconstructor.cxx:886
 AliT0Reconstructor.cxx:887
 AliT0Reconstructor.cxx:888
 AliT0Reconstructor.cxx:889
 AliT0Reconstructor.cxx:890
 AliT0Reconstructor.cxx:891
 AliT0Reconstructor.cxx:892
 AliT0Reconstructor.cxx:893
 AliT0Reconstructor.cxx:894
 AliT0Reconstructor.cxx:895
 AliT0Reconstructor.cxx:896
 AliT0Reconstructor.cxx:897
 AliT0Reconstructor.cxx:898
 AliT0Reconstructor.cxx:899
 AliT0Reconstructor.cxx:900
 AliT0Reconstructor.cxx:901
 AliT0Reconstructor.cxx:902
 AliT0Reconstructor.cxx:903
 AliT0Reconstructor.cxx:904
 AliT0Reconstructor.cxx:905
 AliT0Reconstructor.cxx:906
 AliT0Reconstructor.cxx:907