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: AliReconstruction.cxx 63911 2013-08-19 16:46:41Z hristov $ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// class for running the reconstruction                                      //
//                                                                           //
// Clusters and tracks are created for all detectors and all events by       //
// typing:                                                                   //
//                                                                           //
//   AliReconstruction rec;                                                  //
//   rec.Run();                                                              //
//                                                                           //
// The Run method returns kTRUE in case of successful execution.             //
//                                                                           //
// If the input to the reconstruction are not simulated digits but raw data, //
// this can be specified by an argument of the Run method or by the method   //
//                                                                           //
//   rec.SetInput("...");                                                    //
//                                                                           //
// The input formats and the corresponding argument are:                     //
// - DDL raw data files: directory name, ends with "/"                       //
// - raw data root file: root file name, extension ".root"                   //
// - raw data DATE file: DATE file name, any other non-empty string          //
// - MC root files     : empty string, default                               //
//                                                                           //
// By default all events are reconstructed. The reconstruction can be        //
// limited to a range of events by giving the index of the first and the     //
// last event as an argument to the Run method or by calling                 //
//                                                                           //
//   rec.SetEventRange(..., ...);                                            //
//                                                                           //
// The index -1 (default) can be used for the last event to indicate no      //
// upper limit of the event range.                                           //
//                                                                           //
// In case of raw-data reconstruction the user can modify the default        //
// number of events per digits/clusters/tracks file. In case the option      //
// is not used the number is set 1. In case the user provides 0, than        //
// the number of events is equal to the number of events inside the          //
// raw-data file (i.e. one digits/clusters/tracks file):                     //
//                                                                           //
//   rec.SetNumberOfEventsPerFile(...);                                      //
//                                                                           //
//                                                                           //
// The name of the galice file can be changed from the default               //
// "galice.root" by passing it as argument to the AliReconstruction          //
// constructor or by                                                         //
//                                                                           //
//   rec.SetGAliceFile("...");                                               //
//                                                                           //
// The local reconstruction can be switched on or off for individual         //
// detectors by                                                              //
//                                                                           //
//   rec.SetRunLocalReconstruction("...");                                   //
//                                                                           //
// The argument is a (case sensitive) string with the names of the           //
// detectors separated by a space. The special string "ALL" selects all      //
// available detectors. This is the default.                                 //
//                                                                           //
// The reconstruction of the primary vertex position can be switched off by  //
//                                                                           //
//   rec.SetRunVertexFinder(kFALSE);                                         //
//                                                                           //
// The tracking and the creation of ESD tracks can be switched on for        //
// selected detectors by                                                     //
//                                                                           //
//   rec.SetRunTracking("...");                                              //
//                                                                           //
// Uniform/nonuniform field tracking switches (default: uniform field)       //
//                                                                           //
//   rec.SetUniformFieldTracking(); ( rec.SetUniformFieldTracking(kFALSE); ) //
//                                                                           //
// The filling of additional ESD information can be steered by               //
//                                                                           //
//   rec.SetFillESD("...");                                                  //
//                                                                           //
// Again, for both methods the string specifies the list of detectors.       //
// The default is "ALL".                                                     //
//                                                                           //
// The call of the shortcut method                                           //
//                                                                           //
//   rec.SetRunReconstruction("...");                                        //
//                                                                           //
// is equivalent to calling SetRunLocalReconstruction, SetRunTracking and    //
// SetFillESD with the same detector selecting string as argument.           //
//                                                                           //
// The reconstruction requires digits or raw data as input. For the creation //
// of digits and raw data have a look at the class AliSimulation.            //
//                                                                           //
// The input data of a detector can be replaced by the corresponding HLT     //
// data by calling (usual detector string)                                   //
// SetUseHLTData("...");                                                     //
//                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TArrayD.h>
#include <TArrayF.h>
#include <TArrayS.h>
#include <TChain.h>
#include <TFile.h>
#include <TGeoGlobalMagField.h>
#include <TGeoManager.h>
#include <TList.h>
#include <TLorentzVector.h>
#include <TMap.h>
#include <TObjArray.h>
#include <TPRegexp.h>
#include <TParameter.h>
#include <TPluginManager.h>
#include <TProof.h>
#include <TProofOutputFile.h>
#include <TROOT.h>
#include <TSystem.h>
#include <THashTable.h>
#include <TGrid.h>
#include <TMessage.h>
#include <TUrl.h>
#include <TRandom.h>
#include <THashList.h>

#include "AliAlignObj.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCTPRawStream.h"
#include "AliCascadeVertexer.h"
#include "AliCentralTrigger.h"
#include "AliCodeTimer.h"
#include "AliDAQ.h"
#include "AliDetectorRecoParam.h"
#include "AliESDCaloCells.h"
#include "AliESDCaloCluster.h"
#include "AliESDEvent.h"
#include "AliESDMuonTrack.h"
#include "AliESDPmdTrack.h"
#include "AliESDTagCreator.h"
#include "AliESDVertex.h"
#include "AliESDcascade.h"
#include "AliESDfriend.h"
#include "AliESDkink.h"
#include "AliESDpid.h"
#include "AliESDtrack.h"
#include "AliESDtrack.h"
#include "AliEventInfo.h"
#include "AliGRPObject.h"
#include "AliGRPRecoParam.h"
#include "AliGenEventHeader.h"
#include "AliGeomManager.h"
#include "AliGlobalQADataMaker.h" 
#include "AliHeader.h"
#include "AliLog.h"
#include "AliMagF.h"
#include "AliMultiplicity.h"
#include "AliPID.h"
#include "AliPlaneEff.h"
#include "AliQAv1.h"
#include "AliQADataMakerRec.h" 
#include "AliQAManager.h"
#include "AliRawVEvent.h"
#include "AliRawEventHeaderBase.h"
#include "AliRawHLTManager.h"
#include "AliRawReaderDate.h"
#include "AliRawReaderFile.h"
#include "AliRawReaderRoot.h"
#include "AliRecoInputHandler.h"
#include "AliReconstruction.h"
#include "AliReconstructor.h"
#include "AliRun.h"
#include "AliRunInfo.h"
#include "AliRunLoader.h"
#include "AliSysInfo.h" // memory snapshots
#include "AliTrackPointArray.h"
#include "AliTracker.h"
#include "AliTriggerClass.h"
#include "AliTriggerCluster.h"
#include "AliTriggerIR.h"
#include "AliTriggerConfiguration.h"
#include "AliV0vertexer.h"
#include "AliVertexer.h"
#include "AliTrackleter.h"
#include "AliVertexerTracks.h"
#include "AliTriggerRunScalers.h"
#include "AliCTPTimeParams.h" 
#include "AliESDHLTDecision.h"
#include "AliTriggerInput.h"
#include "AliLHCData.h"
#include "ARVersion.h"
#include <RVersion.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/resource.h>
ClassImp(AliReconstruction)

using std::endl;

//_____________________________________________________________________________
const char* AliReconstruction::fgkStopEvFName = "_stopEvent_";
const char* AliReconstruction::fgkDetectorName[AliReconstruction::kNDetectors] = {"ITS", "TPC", "TRD",
"TOF", "PHOS", 
"HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE","AD","FIT","MFT", "HLT"};

//_____________________________________________________________________________
AliReconstruction::AliReconstruction(const char* gAliceFilename) :
  TSelector(),
  fRunVertexFinder(kTRUE),
  fRunVertexFinderTracks(kTRUE),
  fRunMuonTracking(kFALSE),
  fRunMFTTrackingMU(kFALSE),
  fRunV0Finder(kTRUE),
  fRunCascadeFinder(kTRUE),
  fRunMultFinder(kTRUE),
  fStopOnError(kTRUE),
  fStopOnMissingTriggerFile(kTRUE),
  fWriteAlignmentData(kFALSE),
  fWriteESDfriend(kFALSE),
  fFillTriggerESD(kTRUE),

  fCleanESD(kTRUE),
  fV0DCAmax(3.),
  fV0CsPmin(0.),
  fDmax(50.),
  fZmax(50.),

  fRunLocalReconstruction("ALL"),
  fRunTracking("ALL"),
  fFillESD("ALL"),
  fDeleteRecPoints(""),
  fDeleteDigits(""),
  fLoadCDB(""),
  fUseTrackingErrorsForAlignment(""),
  fGAliceFileName(gAliceFilename),
  fRawInput(""),
  fESDOutput(""),
  fProofOutputFileName(""),
  fProofOutputLocation(""),
  fProofOutputDataset(kFALSE),
  fProofOutputArchive(""),
  fEquipIdMap(""),
  fFirstEvent(0),
  fLastEvent(-1),
  fNumberOfEventsPerFile((UInt_t)-1),
  fFractionFriends(0.04),
  fOptions(),
  fLoadAlignFromCDB(kTRUE),
  fLoadAlignData("ALL"),
  fUseHLTData(),
  fRunInfo(NULL),
  fEventInfo(),
  fRunScalers(NULL),
  fCTPTimeParams(NULL),  
  fCTPTimeAlign(NULL),  

  fRunLoader(NULL),
  fRawReader(NULL),
  fParentRawReader(NULL),

  fRecoParam(),

  fSPDTrackleter(NULL),

  fDiamondProfileSPD(NULL),
  fDiamondProfile(NULL),
  fDiamondProfileTPC(NULL),
  fListOfCosmicTriggers(NULL),
  
  fGRPData(NULL),

  fAlignObjArray(NULL),
  fCDBUri(),
  fQARefUri(),
  fSpecCDBUri(), 
  fCheckRecoCDBvsSimuCDB(),
  fInitCDBCalled(kFALSE),
  fCDBSnapshotMode(kFALSE),
  fSetRunNumberFromDataCalled(kFALSE),
  fQADetectors("ALL"), 
  fQATasks("ALL"), 
  fRunQA(kTRUE),  
  fRunGlobalQA(kTRUE),
  fSameQACycle(kFALSE),
  fInitQACalled(kFALSE), 
  fWriteQAExpertData(kTRUE), 
  fRunPlaneEff(kFALSE),

  fESDpid(NULL),

  fesd(NULL),
  fhltesd(NULL),
  fesdf(NULL),
  ffile(NULL),
  ffileF(NULL),
  ftree(NULL),
  ftreeF(NULL),
  fhlttree(NULL),
  ftVertexer(NULL),
  fIsNewRunLoader(kFALSE),
  fRunAliEVE(kFALSE),
  fChain(NULL),
  fNall(0),
  fNspecie(0),
  fSspecie(0),
  fNhighPt(0),
  fShighPt(0),
  //
  fTreeBuffSize(30000000),
  fMemCountESD(0),
  fMemCountESDF(0),
  fMemCountESDHLT(0),
  //
  fUpgradeModule(""),
  fAnalysisMacro(),
  fAnalysis(0),
  fRecoHandler(0),
  fDeclTriggerClasses(""),
  fStopped(kFALSE),
  fMaxRSS(0),
  fMaxVMEM(0)
{
// create reconstruction object with default parameters
  AliGeomManager::Destroy();
  
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    fReconstructor[iDet] = NULL;
    fUpgradeMask[iDet]=kFALSE;
    fLoader[iDet] = NULL;
    fTracker[iDet] = NULL;
  }
  for (Int_t iDet = 0; iDet < AliQAv1::kNDET; iDet++) {
    fQACycles[iDet] = 999999 ;
    fQAWriteExpert[iDet] = kFALSE ; 
  }
  fBeamInt[0][0]=fBeamInt[0][1]=fBeamInt[1][0]=fBeamInt[1][1] = -1;
  //
  AddCheckRecoCDBvsSimuCDB("TPC/Calib/RecoParam"); // check for similarity in the sim and rec
  //
  AliPID pid;
}

//_____________________________________________________________________________
AliReconstruction::AliReconstruction(const AliReconstruction& rec) :
  TSelector(),
  fRunVertexFinder(rec.fRunVertexFinder),
  fRunVertexFinderTracks(rec.fRunVertexFinderTracks),
  fRunMuonTracking(rec.fRunMuonTracking),
  fRunMFTTrackingMU(rec.fRunMFTTrackingMU),
  fRunV0Finder(rec.fRunV0Finder),
  fRunCascadeFinder(rec.fRunCascadeFinder),
  fRunMultFinder(rec.fRunMultFinder),
  fStopOnError(rec.fStopOnError),
  fStopOnMissingTriggerFile(rec.fStopOnMissingTriggerFile),
  fWriteAlignmentData(rec.fWriteAlignmentData),
  fWriteESDfriend(rec.fWriteESDfriend),
  fFillTriggerESD(rec.fFillTriggerESD),

  fCleanESD(rec.fCleanESD),
  fV0DCAmax(rec.fV0DCAmax),
  fV0CsPmin(rec.fV0CsPmin),
  fDmax(rec.fDmax),
  fZmax(rec.fZmax),

  fRunLocalReconstruction(rec.fRunLocalReconstruction),
  fRunTracking(rec.fRunTracking),
  fFillESD(rec.fFillESD),
  fDeleteRecPoints(""),
  fDeleteDigits(""),
  fLoadCDB(rec.fLoadCDB),
  fUseTrackingErrorsForAlignment(rec.fUseTrackingErrorsForAlignment),
  fGAliceFileName(rec.fGAliceFileName),
  fRawInput(rec.fRawInput),
  fESDOutput(rec.fESDOutput),
  fProofOutputFileName(rec.fProofOutputFileName),
  fProofOutputLocation(rec.fProofOutputLocation),
  fProofOutputDataset(rec.fProofOutputDataset),
  fProofOutputArchive(rec.fProofOutputArchive),
  fEquipIdMap(rec.fEquipIdMap),
  fFirstEvent(rec.fFirstEvent),
  fLastEvent(rec.fLastEvent),
  fNumberOfEventsPerFile(rec.fNumberOfEventsPerFile),
  fFractionFriends(rec.fFractionFriends),
  fOptions(),
  fLoadAlignFromCDB(rec.fLoadAlignFromCDB),
  fLoadAlignData(rec.fLoadAlignData),
  fUseHLTData(rec.fUseHLTData),
  fRunInfo(NULL),
  fEventInfo(),
  fRunScalers(NULL),
  fCTPTimeParams(NULL),
  fCTPTimeAlign(NULL),

  fRunLoader(NULL),
  fRawReader(NULL),
  fParentRawReader(NULL),

  fRecoParam(rec.fRecoParam),

  fSPDTrackleter(NULL),

  fDiamondProfileSPD(rec.fDiamondProfileSPD),
  fDiamondProfile(rec.fDiamondProfile),
  fDiamondProfileTPC(rec.fDiamondProfileTPC),
  fListOfCosmicTriggers(NULL),
  
  fGRPData(NULL),

  fAlignObjArray(rec.fAlignObjArray),
  fCDBUri(rec.fCDBUri),
  fQARefUri(rec.fQARefUri),
  fSpecCDBUri(), 
  fCheckRecoCDBvsSimuCDB(),
  fInitCDBCalled(rec.fInitCDBCalled),
  fCDBSnapshotMode(rec.fCDBSnapshotMode),
  fSetRunNumberFromDataCalled(rec.fSetRunNumberFromDataCalled),
  fQADetectors(rec.fQADetectors), 
  fQATasks(rec.fQATasks), 
  fRunQA(rec.fRunQA),  
  fRunGlobalQA(rec.fRunGlobalQA),
  fSameQACycle(rec.fSameQACycle),
  fInitQACalled(rec.fInitQACalled),
  fWriteQAExpertData(rec.fWriteQAExpertData), 
  fRunPlaneEff(rec.fRunPlaneEff),

  fESDpid(NULL),

  fesd(NULL),
  fhltesd(NULL),
  fesdf(NULL),
  ffile(NULL),
  ffileF(NULL),
  ftree(NULL),
  ftreeF(NULL),
  fhlttree(NULL),
  ftVertexer(NULL),
  fIsNewRunLoader(rec.fIsNewRunLoader),
  fRunAliEVE(kFALSE),
  fChain(NULL),
  fNall(0),
  fNspecie(0),
  fSspecie(0),
  fNhighPt(0),
  fShighPt(0),
  //
  fTreeBuffSize(rec.fTreeBuffSize),
  fMemCountESD(0),
  fMemCountESDF(0),
  fMemCountESDHLT(0),
  //
  fUpgradeModule(""),
  fAnalysisMacro(rec.fAnalysisMacro),
  fAnalysis(0),
  fRecoHandler(0),
  fDeclTriggerClasses(rec.fDeclTriggerClasses),
  fStopped(kFALSE),
  fMaxRSS(0),
  fMaxVMEM(0)
{
// copy constructor

  for (Int_t i = 0; i < rec.fOptions.GetEntriesFast(); i++) {
    if (rec.fOptions[i]) fOptions.Add(rec.fOptions[i]->Clone());
  }
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    fReconstructor[iDet] = NULL;
    fUpgradeMask[iDet] = kFALSE;
    fLoader[iDet] = NULL;
    fTracker[iDet] = NULL;
  }  
  
  for (Int_t iDet = 0; iDet < AliQAv1::kNDET; iDet++) {
    fQACycles[iDet] = rec.fQACycles[iDet];
    fQAWriteExpert[iDet] = rec.fQAWriteExpert[iDet] ; 
  }

  for (Int_t i = 0; i < rec.fSpecCDBUri.GetEntriesFast(); i++) {
    if (rec.fSpecCDBUri[i]) fSpecCDBUri.Add(rec.fSpecCDBUri[i]->Clone());
  }

  for (Int_t i = 0; i < rec.fCheckRecoCDBvsSimuCDB.GetEntriesFast(); i++) {
    if (rec.fCheckRecoCDBvsSimuCDB[i]) fCheckRecoCDBvsSimuCDB.AddLast(rec.fCheckRecoCDBvsSimuCDB[i]->Clone());
  }

  for (int i=2;i--;) for (int j=2;j--;) fBeamInt[i][j] = rec.fBeamInt[i][j];

}

//_____________________________________________________________________________
AliReconstruction& AliReconstruction::operator = (const AliReconstruction& rec)
{
// assignment operator
// Used in PROOF mode
// Be very careful while modifing it!
// Simple rules to follow:
// for persistent data members - use their assignment operators
// for non-persistent ones - do nothing or take the default values from constructor
// TSelector members should not be touched
  if(&rec == this) return *this;

  fRunVertexFinder       = rec.fRunVertexFinder;
  fRunVertexFinderTracks = rec.fRunVertexFinderTracks;
  fRunMuonTracking       = rec.fRunMuonTracking;
  fRunMFTTrackingMU      = rec.fRunMFTTrackingMU;
  fRunV0Finder           = rec.fRunV0Finder;
  fRunCascadeFinder      = rec.fRunCascadeFinder;
  fRunMultFinder         = rec.fRunMultFinder;
  fStopOnError           = rec.fStopOnError;
  fStopOnMissingTriggerFile = rec.fStopOnMissingTriggerFile;
  fWriteAlignmentData    = rec.fWriteAlignmentData;
  fWriteESDfriend        = rec.fWriteESDfriend;
  fFillTriggerESD        = rec.fFillTriggerESD;

  fCleanESD  = rec.fCleanESD;
  fV0DCAmax  = rec.fV0DCAmax;
  fV0CsPmin  = rec.fV0CsPmin;
  fDmax      = rec.fDmax;
  fZmax      = rec.fZmax;

  fRunLocalReconstruction        = rec.fRunLocalReconstruction;
  fRunTracking                   = rec.fRunTracking;
  fFillESD                       = rec.fFillESD;
  fDeleteRecPoints               = rec.fDeleteRecPoints;
  fDeleteDigits                  = rec.fDeleteDigits;
  fLoadCDB                       = rec.fLoadCDB;
  fUseTrackingErrorsForAlignment = rec.fUseTrackingErrorsForAlignment;
  fGAliceFileName                = rec.fGAliceFileName;
  fRawInput                      = rec.fRawInput;
  fESDOutput                     = rec.fESDOutput;
  fProofOutputFileName           = rec.fProofOutputFileName;
  fProofOutputLocation           = rec.fProofOutputLocation;
  fProofOutputDataset            = rec.fProofOutputDataset;
  fProofOutputArchive            = rec.fProofOutputArchive;
  fEquipIdMap                    = rec.fEquipIdMap;
  fFirstEvent                    = rec.fFirstEvent;
  fLastEvent                     = rec.fLastEvent;
  fNumberOfEventsPerFile         = rec.fNumberOfEventsPerFile;
  fFractionFriends               = rec.fFractionFriends;

  for (Int_t i = 0; i < rec.fOptions.GetEntriesFast(); i++) {
    if (rec.fOptions[i]) fOptions.Add(rec.fOptions[i]->Clone());
  }

  fLoadAlignFromCDB              = rec.fLoadAlignFromCDB;
  fLoadAlignData                 = rec.fLoadAlignData;
  fUseHLTData                    = rec.fUseHLTData;

  delete fRunInfo; fRunInfo = NULL;
  if (rec.fRunInfo) fRunInfo = new AliRunInfo(*rec.fRunInfo);

  fEventInfo                     = rec.fEventInfo;

  delete fRunScalers; fRunScalers = NULL;
  if (rec.fRunScalers) fRunScalers = new AliTriggerRunScalers(*rec.fRunScalers); 

  delete fCTPTimeParams; fCTPTimeParams = NULL;
  if (rec.fCTPTimeParams) fCTPTimeParams = new AliCTPTimeParams(*rec.fCTPTimeParams);
  delete fCTPTimeAlign; fCTPTimeAlign = NULL;
  if (rec.fCTPTimeAlign) fCTPTimeAlign = new AliCTPTimeParams(*rec.fCTPTimeAlign);

  fRunLoader       = NULL;
  fRawReader       = NULL;
  fParentRawReader = NULL;

  fRecoParam = rec.fRecoParam;

  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    fUpgradeMask[iDet] = kFALSE;
    delete fReconstructor[iDet]; fReconstructor[iDet] = NULL;
    delete fLoader[iDet]; fLoader[iDet] = NULL;
    delete fTracker[iDet]; fTracker[iDet] = NULL;
  }
  
  for (Int_t iDet = 0; iDet < AliQAv1::kNDET; iDet++) {
    fQACycles[iDet] = rec.fQACycles[iDet];
    fQAWriteExpert[iDet] = rec.fQAWriteExpert[iDet] ;
  } 

  delete fSPDTrackleter; fSPDTrackleter = NULL;
    
  delete fDiamondProfileSPD; fDiamondProfileSPD = NULL;
  if (rec.fDiamondProfileSPD) fDiamondProfileSPD = new AliESDVertex(*rec.fDiamondProfileSPD);
  delete fDiamondProfile; fDiamondProfile = NULL;
  if (rec.fDiamondProfile) fDiamondProfile = new AliESDVertex(*rec.fDiamondProfile);
  delete fDiamondProfileTPC; fDiamondProfileTPC = NULL;
  if (rec.fDiamondProfileTPC) fDiamondProfileTPC = new AliESDVertex(*rec.fDiamondProfileTPC);

  delete fListOfCosmicTriggers; fListOfCosmicTriggers = NULL;
  if (rec.fListOfCosmicTriggers) fListOfCosmicTriggers = (THashTable*)((rec.fListOfCosmicTriggers)->Clone());

  delete fGRPData; fGRPData = NULL;
  //  if (rec.fGRPData) fGRPData = (TMap*)((rec.fGRPData)->Clone());
  if (rec.fGRPData) fGRPData = (AliGRPObject*)((rec.fGRPData)->Clone());

  delete fAlignObjArray; fAlignObjArray = NULL;

  fCDBUri        = "";
  fQARefUri      = rec.fQARefUri;
  fSpecCDBUri.Delete();
  fCheckRecoCDBvsSimuCDB.Delete();
  //
  for (Int_t i = 0; i < rec.fCheckRecoCDBvsSimuCDB.GetEntriesFast(); i++) {
    if (rec.fCheckRecoCDBvsSimuCDB[i]) fCheckRecoCDBvsSimuCDB.AddLast(rec.fCheckRecoCDBvsSimuCDB[i]->Clone());
  }
  //
  fInitCDBCalled               = rec.fInitCDBCalled;
  fCDBSnapshotMode             = rec.fCDBSnapshotMode;
  fSetRunNumberFromDataCalled  = rec.fSetRunNumberFromDataCalled;
  fQADetectors                 = rec.fQADetectors;
  fQATasks                     = rec.fQATasks; 
  fRunQA                       = rec.fRunQA;  
  fRunGlobalQA                 = rec.fRunGlobalQA;
  fSameQACycle                 = rec.fSameQACycle;
  fInitQACalled                = rec.fInitQACalled;
  fWriteQAExpertData           = rec.fWriteQAExpertData;
  fRunPlaneEff                 = rec.fRunPlaneEff;
  for (int i=2;i--;) for (int j=2;j--;) fBeamInt[i][j] = rec.fBeamInt[i][j];
  fESDpid  = NULL;
  fesd     = NULL;
  fhltesd  = NULL;
  fesdf    = NULL;
  ffile    = NULL;
  ffileF   = NULL;
  ftree    = NULL;
  ftreeF   = NULL;
  fhlttree = NULL;
  ftVertexer = NULL;
  fIsNewRunLoader = rec.fIsNewRunLoader;
  fRunAliEVE = kFALSE;
  fChain = NULL;
  fNall = 0;
  fNspecie = 0;
  fSspecie = 0;
  fNhighPt = 0;
  fShighPt = 0;
  //
  fTreeBuffSize = rec.fTreeBuffSize;
  fMemCountESD = 0;
  fMemCountESDF = 0;
  fMemCountESDHLT = 0;
  //
  fUpgradeModule="";
  fAnalysisMacro = rec.fAnalysisMacro;
  fAnalysis = 0;
  fRecoHandler = 0;
  fDeclTriggerClasses = rec.fDeclTriggerClasses;

  return *this;
}

//_____________________________________________________________________________
AliReconstruction::~AliReconstruction()
{
// clean up

  CleanUp();
  if (fListOfCosmicTriggers) {
    fListOfCosmicTriggers->Delete();
    delete fListOfCosmicTriggers;
  }
  delete fGRPData;
  delete fRunScalers;
  delete fCTPTimeParams;
  delete fCTPTimeAlign;
  fOptions.Delete();
  if (fAlignObjArray) {
    fAlignObjArray->Delete();
    delete fAlignObjArray;
  }
  fSpecCDBUri.Delete();
  fCheckRecoCDBvsSimuCDB.Delete();
  AliCodeTimer::Instance()->Print();
}

//_____________________________________________________________________________
void AliReconstruction::InitQA()
{
  //Initialize the QA and start of cycle 
  AliCodeTimerAuto("",0);
  
  if (fInitQACalled) return;
  fInitQACalled = kTRUE;
  
  if (fGRPData) AliQADataMaker::SetCloningRequest( fGRPData->GetQATrigClasses(), fGRPData->GetQACloningRequest());


  AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kRECMODE) ; 
  qam->SetSaveData(kTRUE); 
  qam->SetCycleLength(AliQAv1::kITS, 5) ; 
  if (fWriteQAExpertData)
    qam->SetWriteExpert() ; 
 
  if (qam->IsDefaultStorageSet()) {
    AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    AliWarning("Default QA reference storage has been already set !");
    AliWarning(Form("Ignoring the default storage declared in AliReconstruction: %s",fQARefUri.Data()));
    AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    fQARefUri = qam->GetDefaultStorage()->GetURI();
  } else {
    if (fQARefUri.Length() > 0) {
    	AliDebug(2,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    	AliDebug(2, Form("Default QA reference storage is set to: %s", fQARefUri.Data()));
    	AliDebug(2, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      } else {
        fQARefUri="local://$ALICE_ROOT/QAref";
        AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        AliWarning("Default QA refeference storage not yet set !!!!");
        AliWarning(Form("Setting it now to: %s", fQARefUri.Data()));
        AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    		
      }
    qam->SetDefaultStorage(fQARefUri);
  }
  
  if (fRunQA) {
  qam->SetActiveDetectors(fQADetectors) ;
  qam->SetActiveOnlineDetectors(fRunInfo->GetActiveDetectors());
    
  for (Int_t det = 0 ; det < AliQAv1::kNDET ; det++) {
    qam->SetCycleLength(AliQAv1::DETECTORINDEX_t(det), fQACycles[det]) ;  
    qam->SetWriteExpert(AliQAv1::DETECTORINDEX_t(det)) ;
  }
  if (!fRawReader && !fInput && IsInTasks(AliQAv1::kRAWS))
    fQATasks.ReplaceAll(Form("%d",AliQAv1::kRAWS), "") ;
  qam->SetTasks(fQATasks) ; 
  qam->InitQADataMaker(AliCDBManager::Instance()->GetRun()) ; 
  }
  if (fRunGlobalQA) {
    Bool_t sameCycle = kFALSE ;
    AliQADataMaker *qadm = qam->GetQADataMaker(AliQAv1::kGLOBAL);
    AliInfo(Form("Initializing the global QA data maker"));
    if (IsInTasks(AliQAv1::kRECPOINTS)) {
      qadm->StartOfCycle(AliQAv1::kRECPOINTS, AliCDBManager::Instance()->GetRun(), sameCycle) ; 
      TObjArray **arr=qadm->Init(AliQAv1::kRECPOINTS);
      AliTracker::SetResidualsArray(arr);
      sameCycle = kTRUE ; 
    }
    if (IsInTasks(AliQAv1::kESDS)) {
      qadm->StartOfCycle(AliQAv1::kESDS, AliCDBManager::Instance()->GetRun(), sameCycle) ; 
      qadm->Init(AliQAv1::kESDS);
    }
  }
    AliSysInfo::AddStamp("InitQA") ; 
}

//_____________________________________________________________________________
void AliReconstruction::MergeQA(const char *fileName)
{
  //Initialize the QA and start of cycle 
  AliCodeTimerAuto("",0) ;
  AliQAManager::QAManager()->Merge(AliCDBManager::Instance()->GetRun(),fileName) ; 
  AliSysInfo::AddStamp("MergeQA") ; 
}
  
//_____________________________________________________________________________
void AliReconstruction::InitCDB()
{
// activate a default CDB storage
// First check if we have any CDB storage set, because it is used 
// to retrieve the calibration and alignment constants
  AliCodeTimerAuto("",0);

  if (fInitCDBCalled) return;
  fInitCDBCalled = kTRUE;

  AliCDBManager* man = AliCDBManager::Instance();
  if (man->IsDefaultStorageSet())
  {
    AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    AliWarning("Default CDB storage has been already set !");
    AliWarning(Form("Ignoring the default storage declared in AliReconstruction: %s",fCDBUri.Data()));
    AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    fCDBUri = man->GetDefaultStorage()->GetURI();
  }
  else {
    if (fCDBUri.Length() > 0) 
    {
    	AliDebug(2,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    	AliDebug(2, Form("Default CDB storage is set to: %s", fCDBUri.Data()));
    	AliDebug(2, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
	man->SetDefaultStorage(fCDBUri);
    } 
    else if (!man->GetRaw()){
	fCDBUri="local://$ALICE_ROOT/OCDB";
    	AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    	AliWarning("Default CDB storage not yet set !!!!");
    	AliWarning(Form("Setting it now to: %s", fCDBUri.Data()));
    	AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
	man->SetDefaultStorage(fCDBUri);
    }
    else {    
    	AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
	AliWarning("Default storage will be set after setting the Run Number!!!");
    	AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");    		
    }
  }

  // Now activate the detector specific CDB storage locations
  for (Int_t i = 0; i < fSpecCDBUri.GetEntriesFast(); i++) {
    TObject* obj = fSpecCDBUri[i];
    if (!obj) continue;
    AliDebug(2, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    AliDebug(2, Form("Specific CDB storage for %s is set to: %s",obj->GetName(),obj->GetTitle()));
    AliDebug(2, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    man->SetSpecificStorage(obj->GetName(), obj->GetTitle());
  }
  AliSysInfo::AddStamp("InitCDB");
}

//_____________________________________________________________________________
void AliReconstruction::SetCDBSnapshotMode(const char* snapshotFileName) {
    fCDBSnapshotMode = kTRUE;
    AliCDBManager::Instance()->SetSnapshotMode(snapshotFileName);
}

//_____________________________________________________________________________
void AliReconstruction::SetDefaultStorage(const char* uri) {
// Store the desired default CDB storage location
// Activate it later within the Run() method

  fCDBUri = uri;

}

//_____________________________________________________________________________
void AliReconstruction::SetQARefDefaultStorage(const char* uri) {
  // Store the desired default CDB storage location
  // Activate it later within the Run() method
  
  fQARefUri = uri;
  AliQAv1::SetQARefStorage(fQARefUri.Data()) ;
  
}

//_____________________________________________________________________________
void AliReconstruction::SetSpecificStorage(const char* calibType, const char* uri) {
// Store a detector-specific CDB storage location
// Activate it later within the Run() method

  AliCDBPath aPath(calibType);
  if(!aPath.IsValid()){
	// if calibType is not wildcard but it is a valid detector, add "/*" to make it a valid path
	for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
		if(!strcmp(calibType, fgkDetectorName[iDet])) {
			aPath.SetPath(Form("%s/*", calibType));
			AliInfo(Form("Path for specific storage set to %s", aPath.GetPath().Data()));
			break;
		}
        }
	if(!aPath.IsValid()){
  		AliError(Form("Not a valid path or detector: %s", calibType));
  		return;
	}
  }

//  // check that calibType refers to a "valid" detector name
//  Bool_t isDetector = kFALSE;
//  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
//    TString detName = fgkDetectorName[iDet];
//    if(aPath.GetLevel0() == detName) {
//    	isDetector = kTRUE;
//	break;
//    }
//  }
//
//  if(!isDetector) {
//	AliError(Form("Not a valid detector: %s", aPath.GetLevel0().Data()));
//	return;
//  }

  TObject* obj = fSpecCDBUri.FindObject(aPath.GetPath().Data());
  if (obj) fSpecCDBUri.Remove(obj);
  fSpecCDBUri.Add(new TNamed(aPath.GetPath().Data(), uri));

}

//_____________________________________________________________________________
void AliReconstruction::AddCheckRecoCDBvsSimuCDB(const char* cdbpath,const char* comment) 
{
  // require the cdb item to be the same in the rec as in the sim
  // Activate it later within the Run() method
  TString newent = cdbpath;
  if (newent.IsNull()) return;
  TIter nextit(&fCheckRecoCDBvsSimuCDB);
  TNamed* cdbent=0;
  while ((cdbent=(TNamed*)nextit())) {
    TString str = cdbent->GetName();
    if (str==newent) {
      AliInfo(Form("%s is already in the list to check",cdbpath));
      return;
    }
  }
  fCheckRecoCDBvsSimuCDB.AddLast(new TNamed(cdbpath,comment));
  //
}

//_____________________________________________________________________________
void AliReconstruction::RemCheckRecoCDBvsSimuCDB(const char* cdbpath) 
{
  // require the cdb item to be the same in the rec as in the sim
  // Activate it later within the Run() method
  TString newent = cdbpath;
  if (newent.IsNull()) return;
  TIter nextit(&fCheckRecoCDBvsSimuCDB);
  TNamed* cdbent=0;
  while ((cdbent=(TNamed*)nextit())) {
    TString str = cdbent->GetName();
    if (str==newent) {
      AliInfo(Form("Removing %s from the list to check",cdbpath));
      delete fCheckRecoCDBvsSimuCDB.Remove(cdbent);
      fCheckRecoCDBvsSimuCDB.Compress();
      return;
    }
  }
  AliInfo(Form("%s is not in the list to check",cdbpath));
  //
}

//_____________________________________________________________________________
Bool_t AliReconstruction::SetRunNumberFromData()
{
  // The method is called in Run() in order
  // to set a correct run number.
  // In case of raw data reconstruction the
  // run number is taken from the raw data header

  if (fSetRunNumberFromDataCalled) return kTRUE;
  fSetRunNumberFromDataCalled = kTRUE;
  
  AliCDBManager* man = AliCDBManager::Instance();
 
  if(fRawReader) {
    if(fRawReader->NextEvent()) {
      if(man->GetRun() > 0) {
  	AliWarning("Run number is taken from raw-event header! Ignoring settings in AliCDBManager!");
      } 
      man->SetRun(fRawReader->GetRunNumber());
      GetEventInfo();
      fRawReader->RewindEvents();
    }
    else {
      if(man->GetRun() > 0) {
	AliWarning("No raw-data events are found ! Using settings in AliCDBManager !");
      }
      else {
	AliWarning("Neither raw events nor settings in AliCDBManager are found !");
	return kFALSE;
      }
    }
  }
  else {
    AliRunLoader *rl = AliRunLoader::Open(fGAliceFileName.Data());
    if (!rl) {
      AliError(Form("No run loader found in file %s", fGAliceFileName.Data()));
      return kFALSE;
    }
    else {
      rl->LoadHeader();
      // read run number from gAlice
      if(rl->GetHeader()) {
	man->SetRun(rl->GetHeader()->GetRun());
	rl->UnloadHeader();
	delete rl;
      }
      else {
	AliError("Neither run-loader header nor RawReader objects are found !");
	delete rl;
	return kFALSE;
      }
    }
  }

  man->Print();  
  
  return kTRUE;
}

//_____________________________________________________________________________
void AliReconstruction::SetCDBLock() {
  // Set CDB lock: from now on it is forbidden to reset the run number
  // or the default storage or to activate any further storage!
  
  AliCDBManager::Instance()->SetLock(1);
}

//_____________________________________________________________________________
void AliReconstruction::MatchUpgradeDetector() {
  // Translates detector name in a boolean.
  // The boolean is used in GetReconstructor to load the 
  // upgrade reconstructor instead of the standard one.
   for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if(fUpgradeModule.Contains(fgkDetectorName[iDet])) fUpgradeMask[iDet]=kTRUE;
   }
}
//_____________________________________________________________________________
Bool_t AliReconstruction::MisalignGeometry(const TString& detectors)
{
  // Read the alignment objects from CDB.
  // Each detector is supposed to have the
  // alignment objects in DET/Align/Data CDB path.
  // All the detector objects are then collected,
  // sorted by geometry level (starting from ALIC) and
  // then applied to the TGeo geometry.
  // Finally an overlaps check is performed.

  // Load alignment data from CDB and fill fAlignObjArray 
  if(fLoadAlignFromCDB){
  	
    TString detStr = detectors;
    TString loadAlObjsListOfDets = "";
    
    for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      if(!IsSelected(fgkDetectorName[iDet], detStr)) continue;
      if(!strcmp(fgkDetectorName[iDet],"HLT")) continue;
      
      if(AliGeomManager::GetNalignable(fgkDetectorName[iDet]) != 0)
      {
	loadAlObjsListOfDets += fgkDetectorName[iDet];
	loadAlObjsListOfDets += " ";
      }
    } // end loop over detectors
    
    if(AliGeomManager::GetNalignable("GRP") != 0)
      loadAlObjsListOfDets.Prepend("GRP "); //add alignment objects for non-sensitive modules
    AliGeomManager::ApplyAlignObjsFromCDB(loadAlObjsListOfDets.Data());
  }else{
    // Check if the array with alignment objects was
    // provided by the user. If yes, apply the objects
    // to the present TGeo geometry
    if (fAlignObjArray) {
      if (gGeoManager && gGeoManager->IsClosed()) {
	if (AliGeomManager::ApplyAlignObjsToGeom(*fAlignObjArray) == kFALSE) {
	  AliError("The misalignment of one or more volumes failed!"
		   "Compare the list of simulated detectors and the list of detector alignment data!");
	  return kFALSE;
	}
      }
      else {
	AliError("Can't apply the misalignment! gGeoManager doesn't exist or it is still opened!");
	return kFALSE;
      }
    }
  }
  
  if (fAlignObjArray) {
    fAlignObjArray->Delete();
    delete fAlignObjArray; fAlignObjArray=NULL;
  }

  return kTRUE;
}

//_____________________________________________________________________________
void AliReconstruction::SetGAliceFile(const char* fileName)
{
// set the name of the galice file

  fGAliceFileName = fileName;
}

//_____________________________________________________________________________
void AliReconstruction::SetInput(const char* input) 
{
  // In case the input string starts with 'mem://', we run in an online mode
  // and AliRawReaderDateOnline object is created. In all other cases a raw-data
  // file is assumed. One can give as an input:
  // mem://: - events taken from DAQ monitoring libs online
  //  or
  // mem://<filename> - emulation of the above mode (via DATE monitoring libs)
  if (input) fRawInput = input;
}

//_____________________________________________________________________________
void AliReconstruction::SetOutput(const char* output) 
{
  // Set the output ESD filename
  // 'output' is a normalt ROOT url
  // The method is used in case of raw-data reco with PROOF
  if (output) fESDOutput = output;
}

//_____________________________________________________________________________
void AliReconstruction::SetOption(const char* detector, const char* option)
{
// set options for the reconstruction of a detector

  TObject* obj = fOptions.FindObject(detector);
  if (obj) fOptions.Remove(obj);
  fOptions.Add(new TNamed(detector, option));
}

//_____________________________________________________________________________
void AliReconstruction::SetRecoParam(const char* detector, AliDetectorRecoParam *par)
{
  // Set custom reconstruction parameters for a given detector
  // Single set of parameters for all the events

  // First check if the reco-params are global
  if(!strcmp(detector, "GRP")) {
    par->SetAsDefault();
    fRecoParam.AddDetRecoParam(kNDetectors,par);
    return;
  }

  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if(!strcmp(detector, fgkDetectorName[iDet])) {
      par->SetAsDefault();
      fRecoParam.AddDetRecoParam(iDet,par);
      break;
    }
  }

}

//_____________________________________________________________________________
Bool_t AliReconstruction::InitGRP() {
  //------------------------------------
  // Initialization of the GRP entry 
  //------------------------------------
  AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");

  if (entry) {

    TMap* m = dynamic_cast<TMap*>(entry->GetObject());  // old GRP entry

    if (m) {
       AliInfo("Found a TMap in GRP/GRP/Data, converting it into an AliGRPObject");
       m->Print();
       fGRPData = new AliGRPObject();
       fGRPData->ReadValuesFromMap(m);
    }

    else {
       AliInfo("Found an AliGRPObject in GRP/GRP/Data, reading it");
       fGRPData = dynamic_cast<AliGRPObject*>(entry->GetObject());  // new GRP entry
       entry->SetOwner(0);
    }

    //    FIX ME: The unloading of GRP entry is temporarily disabled
    //    because ZDC and VZERO are using it in order to initialize
    //    their reconstructor objects. In the future one has to think
    //    of propagating AliRunInfo to the reconstructors.
    //    AliCDBManager::Instance()->UnloadFromCache("GRP/GRP/Data");
  }

  if (!fGRPData) {
     AliError("No GRP entry found in OCDB!");
     return kFALSE;
  }

  TString lhcState = fGRPData->GetLHCState();
  if (lhcState==AliGRPObject::GetInvalidString()) {
    AliError("GRP/GRP/Data entry:  missing value for the LHC state ! Using UNKNOWN");
    lhcState = "UNKNOWN";
  }

  TString beamType = fGRPData->GetBeamType();
  if (beamType==AliGRPObject::GetInvalidString()) {
    AliError("GRP/GRP/Data entry:  missing value for the beam type ! Using UNKNOWN");
    beamType = "UNKNOWN";
  }

  Float_t beamEnergy = fGRPData->GetBeamEnergy();
  if (beamEnergy==AliGRPObject::GetInvalidFloat()) {
    AliError("GRP/GRP/Data entry:  missing value for the beam energy ! Using 0");
    beamEnergy = 0;
  }

  TString runType = fGRPData->GetRunType();
  if (runType==AliGRPObject::GetInvalidString()) {
    AliError("GRP/GRP/Data entry:  missing value for the run type ! Using UNKNOWN");
    runType = "UNKNOWN";
  }

  Int_t activeDetectors = fGRPData->GetDetectorMask();
  if (activeDetectors==AliGRPObject::GetInvalidUInt()) {
    AliError("GRP/GRP/Data entry:  missing value for the detector mask ! Using 1074790399");
    activeDetectors = 1074790399;
  }
  AliDebug(1, Form("activeDetectors = %d", activeDetectors));

  fRunInfo = new AliRunInfo(lhcState, beamType, beamEnergy, runType, activeDetectors);
  fRunInfo->Dump();


  // Process the list of active detectors
  if (activeDetectors) {
    UInt_t detMask = activeDetectors;
    AliDebug(1, Form("Detector List = %s", fRunLocalReconstruction.Data()));
    fRunLocalReconstruction = MatchDetectorList(fRunLocalReconstruction,detMask);
    AliDebug(1, Form("Detector List = %s", fRunLocalReconstruction.Data()));
    fRunTracking = MatchDetectorList(fRunTracking,detMask);
    fFillESD = MatchDetectorList(fFillESD,detMask);
    fQADetectors = MatchDetectorList(fQADetectors,detMask);
    AliInfo(Form("fQADetectors=%s",fQADetectors.Data()));
    fDeleteRecPoints = MatchDetectorList(fDeleteRecPoints,detMask);
    fDeleteDigits    = MatchDetectorList(fDeleteDigits,detMask);
    fLoadCDB.Form("%s %s %s %s",
		  fRunLocalReconstruction.Data(),
		  fRunTracking.Data(),
		  fFillESD.Data(),
		  fQADetectors.Data());
    fLoadCDB = MatchDetectorList(fLoadCDB,detMask);
    if (!((detMask >> AliDAQ::DetectorID("ITSSPD")) & 0x1) &&
	!((detMask >> AliDAQ::DetectorID("ITSSDD")) & 0x1) &&
	!((detMask >> AliDAQ::DetectorID("ITSSSD")) & 0x1) ) {
      // switch off the vertexer
      AliInfo("SPD,SDD,SSD is not in the list of active detectors. Vertexer and Trackleter are switched off.");
      fRunVertexFinder = kFALSE;
      fRunMultFinder = kFALSE;
    }
    if (!((detMask >> AliDAQ::DetectorID("TRG")) & 0x1)) {
      // switch off the reading of CTP raw-data payload
      if (fFillTriggerESD) {
	AliInfo("CTP is not in the list of active detectors. CTP data reading switched off.");
	fFillTriggerESD = kFALSE;
      }
    }
  }

  AliInfo("===================================================================================");
  AliInfo(Form("Running local reconstruction for detectors: %s",fRunLocalReconstruction.Data()));
  AliInfo(Form("Running tracking for detectors: %s",fRunTracking.Data()));
  AliInfo(Form("Filling ESD for detectors: %s",fFillESD.Data()));
  AliInfo(Form("Quality assurance is active for detectors: %s",fQADetectors.Data()));
  AliInfo(Form("CDB and reconstruction parameters are loaded for detectors: %s",fLoadCDB.Data()));
  AliInfo("===================================================================================");

  //*** Dealing with the magnetic field map
  if ( TGeoGlobalMagField::Instance()->IsLocked() ) {
    if (TGeoGlobalMagField::Instance()->GetField()->TestBit(AliMagF::kOverrideGRP)) {
      AliInfo("ExpertMode!!! GRP information will be ignored !");
      AliInfo("ExpertMode!!! Running with the externally locked B field !");
    }
    else {
      AliInfo("Destroying existing B field instance!");
      delete TGeoGlobalMagField::Instance();
    }    
  }
  if ( !TGeoGlobalMagField::Instance()->IsLocked() ) {
    // Construct the field map out of the information retrieved from GRP.
    Bool_t ok = kTRUE;
    // L3
    Float_t l3Current = fGRPData->GetL3Current((AliGRPObject::Stats)0);
    if (l3Current == AliGRPObject::GetInvalidFloat()) {
      AliError("GRP/GRP/Data entry:  missing value for the L3 current !");
      ok = kFALSE;
    }
    
    Char_t l3Polarity = fGRPData->GetL3Polarity();
    if (l3Polarity == AliGRPObject::GetInvalidChar()) {
      AliError("GRP/GRP/Data entry:  missing value for the L3 polarity !");
      ok = kFALSE;
    }

    // Dipole
    Float_t diCurrent = fGRPData->GetDipoleCurrent((AliGRPObject::Stats)0);
    if (diCurrent == AliGRPObject::GetInvalidFloat()) {
      AliError("GRP/GRP/Data entry:  missing value for the dipole current !");
      ok = kFALSE;
    }

    Char_t diPolarity = fGRPData->GetDipolePolarity();
    if (diPolarity == AliGRPObject::GetInvalidChar()) {
      AliError("GRP/GRP/Data entry:  missing value for the dipole polarity !");
      ok = kFALSE;
    }

    // read special bits for the polarity convention and map type
    Int_t  polConvention = fGRPData->IsPolarityConventionLHC() ? AliMagF::kConvLHC : AliMagF::kConvDCS2008;
    Bool_t uniformB = fGRPData->IsUniformBMap();

    if (ok) { 
      AliMagF* fld = AliMagF::CreateFieldMap(TMath::Abs(l3Current) * (l3Polarity ? -1:1), 
					     TMath::Abs(diCurrent) * (diPolarity ? -1:1), 
					     polConvention,uniformB,beamEnergy, beamType.Data());
      if (fld) {
	TGeoGlobalMagField::Instance()->SetField( fld );
	TGeoGlobalMagField::Instance()->Lock();
	AliInfo("Running with the B field constructed out of GRP !");
      }
      else AliFatal("Failed to create a B field map !");
    }
    else AliFatal("B field is neither set nor constructed from GRP ! Exitig...");
  }
  
  //*** Get the diamond profiles from OCDB
  entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexSPD");
  if (entry) {
    fDiamondProfileSPD = dynamic_cast<AliESDVertex*> (entry->GetObject());  
  } else {
     AliError("No SPD diamond profile found in OCDB!");
  }

  entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertex");
  if (entry) {
    fDiamondProfile = dynamic_cast<AliESDVertex*> (entry->GetObject());  
  } else {
     AliError("No diamond profile found in OCDB!");
  }

  entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexTPC");
  if (entry) {
    fDiamondProfileTPC = dynamic_cast<AliESDVertex*> (entry->GetObject());  
  } else {
     AliError("No TPC diamond profile found in OCDB!");
  }

  entry = AliCDBManager::Instance()->Get("GRP/Calib/CosmicTriggers");
  if (entry) {
    fListOfCosmicTriggers = dynamic_cast<THashTable*>(entry->GetObject());
    entry->SetOwner(0);
  }

  if (!fListOfCosmicTriggers) {
    AliWarning("Can not get list of cosmic triggers from OCDB! Cosmic event specie will be effectively disabled!");
  }

  return kTRUE;
} 

//_____________________________________________________________________________
Bool_t AliReconstruction::LoadCDB()
{
  // Load CDB entries for all active detectors.
  // By default we load all the entries in <det>/Calib
  // folder.

  AliCodeTimerAuto("",0);

  AliCDBManager::Instance()->Get("GRP/CTP/Config");

  AliCDBManager::Instance()->Get("GRP/Calib/LHCClockPhase");

  TString detStr = fLoadCDB;
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
    AliCDBManager::Instance()->GetAll(Form("%s/Calib/*",fgkDetectorName[iDet]));
    AliCDBManager::Instance()->GetAll(Form("%s/Trigger/*",fgkDetectorName[iDet]));
  }

  // Temporary fix - one has to define the correct policy in order
  // to load the trigger OCDB entries only for the detectors that
  // in the trigger or that are needed in order to put correct
  // information in ESD
  AliCDBManager::Instance()->GetAll("TRIGGER/*/*");
  AliCDBManager::Instance()->GetAll("HLT/*/*");

  return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliReconstruction::LoadTriggerScalersCDB()
{
  // Load CTP scalers from OCDB.
  // The scalers are checked for consistency.

  AliCodeTimerAuto("",0);

  AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/CTP/Scalers");

  if (entry) { 
   
       AliInfo("Found an AliTriggerRunScalers in GRP/CTP/Scalers, reading it");
       fRunScalers = dynamic_cast<AliTriggerRunScalers*> (entry->GetObject());
       entry->SetOwner(0);
       if (fRunScalers && (fRunScalers->CorrectScalersOverflow() == 0)) AliInfo("32bit Trigger counters corrected for overflow");

  }
  return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliReconstruction::LoadCTPTimeParamsCDB()
{
  // Load CTP timing information (alignment)
  // from OCDB.

  AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
  if (!entry) return kFALSE;

  AliInfo("Found an AliCTPTimeParams in GRP/CTP/CTPtiming, reading it");
  fCTPTimeParams = dynamic_cast<AliCTPTimeParams*> (entry->GetObject());
  entry->SetOwner(0);

  AliCDBEntry* entry2 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");
  if (!entry2) return kFALSE;

  AliInfo("Found an AliCTPTimeParams in GRP/CTP/TimeAlign, reading it");
  fCTPTimeAlign = dynamic_cast<AliCTPTimeParams*> (entry2->GetObject());
  entry2->SetOwner(0);

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::ReadIntensityInfoCDB()
{
  // Load LHC DIP data
  AliCDBEntry* entry    = AliCDBManager::Instance()->Get("GRP/GRP/LHCData");
  AliCDBEntry* entryCTP = AliCDBManager::Instance()->Get("GRP/CTP/Config");
  //
  if (!entry || !entryCTP) {
    AliError(Form("Failed to extract CDB objects GRP/GRP/LHCData: %p or GRP/CTP/Config: %p",entry,entryCTP));
    return kFALSE;
  }
  // extract BC masks
  enum {kA,kB,kC,kE,kNMasks};
  AliTriggerConfiguration* conf = (AliTriggerConfiguration*)entryCTP->GetObject();
  const TObjArray& clArr = conf->GetClasses();
  TObjArray masks(kNMasks);
  TIter next(&clArr);
  AliTriggerClass* trClass = 0;
  int nFound = 0;
  masks.SetOwner(kFALSE);
  //
  while ( (trClass=(AliTriggerClass*)next()) ) {
    TString trName = trClass->GetName();
    int ind = trName.Index("-"); // prefix in front of A,B,C,E
    if (ind<1) continue;   // anomaly
    //
    trName = trName.Data() + ind;
    AliTriggerBCMask* bcMask = trClass->GetBCMask();
    if (!bcMask) continue;
    UInt_t which = 0;
    if      (trName.BeginsWith("-A-"))  which |= 0x1<<kA;
    else if (trName.BeginsWith("-B-"))  which |= 0x1<<kB;
    else if (trName.BeginsWith("-C-"))  which |= 0x1<<kC;
    else if (trName.BeginsWith("-E-"))  which |= 0x1<<kE;
    else if (trName.BeginsWith("-AC-")) which |= (0x1<<kA) | (0x1<<kC);
    else if (trName.BeginsWith("-CA-")) which |= (0x1<<kA) | (0x1<<kC);
    else { AliWarning(Form("Unknown trigger type %s\n",trClass->GetName())); continue;}
    //
    for (int ip=kNMasks;ip--;) {
      if ( !(which&(0x1<<ip)) || masks[ip] ) continue; // does not match or already done
      masks[ip] = (TObject*)bcMask;
      nFound++;
    }
    if (nFound==kNMasks) break;
  }  
  //  
  AliInfo("Reading mean bunch intensities from GRP/GRP/LHCData");
  AliLHCData* dipData = dynamic_cast<AliLHCData*> (entry->GetObject());
  //
  for (int ib=2;ib--;) {
    double intI,intNI;
    if (dipData && (dipData->GetMeanIntensity(ib,intI,intNI,&masks)>=0)) {
      fBeamInt[ib][0] = intI;
      fBeamInt[ib][1] = intNI;	
      AliInfo(Form("Mean intensity for beam %d: Interacting:%.2e Non-Interacting:%.2e",ib,intI,intNI));
    }
  }
  return kTRUE;
  //
}


//_____________________________________________________________________________
Bool_t AliReconstruction::Run(const char* input)
{
  // Run Run Run
  AliCodeTimerAuto("",0);

  InitRun(input);
  if (GetAbort() != TSelector::kContinue) return kFALSE;

  TChain *chain = NULL;
  if (fRawReader && (chain = fRawReader->GetChain())) {
    Long64_t nEntries = (fLastEvent < 0) ? (TChain::kBigNumber) : (fLastEvent - fFirstEvent + 1);
    // Proof mode
    if (gProof) {
      // Temporary fix for long raw-data runs (until socket timeout handling in PROOF is revised)
      gProof->Exec("gEnv->SetValue(\"Proof.SocketActivityTimeout\",-1)", kTRUE);

      if (gGrid)
	gProof->Exec("TGrid::Connect(\"alien://\")",kTRUE);

      TMessage::EnableSchemaEvolutionForAll(kTRUE);
      gProof->Exec("TMessage::EnableSchemaEvolutionForAll(kTRUE)",kTRUE);

      gProof->AddInput(this);

      if (!ParseOutput()) return kFALSE;

      gProof->SetParameter("PROOF_MaxSlavesPerNode", 9999);
      chain->SetProof();
      chain->Process("AliReconstruction","",nEntries,fFirstEvent);
    }
    else {
      chain->Process(this,"",nEntries,fFirstEvent);
    }
  }
  else {
    Begin(NULL);
    if (GetAbort() != TSelector::kContinue) return kFALSE;
    SlaveBegin(NULL);
    if (GetAbort() != TSelector::kContinue) return kFALSE;
    //******* The loop over events
    AliInfo("Starting looping over events");
    Int_t iEvent = 0;
    while ((iEvent < fRunLoader->GetNumberOfEvents()) ||
	   (fRawReader && fRawReader->NextEvent())) {
      //
      // check if process has enough resources 
      if (!HasEnoughResources(iEvent)) break;
      if (!ProcessEvent(iEvent)) {
        Abort("ProcessEvent",TSelector::kAbortFile);
        return kFALSE;
      }
      CleanProcessedEvent();
      iEvent++;
    }
    if (!iEvent) AliWarning("No events passed trigger selection");
    SlaveTerminate();
    if (GetAbort() != TSelector::kContinue) return kFALSE;
    Terminate();
    if (GetAbort() != TSelector::kContinue) return kFALSE;
  }

  return kTRUE;
}

//_____________________________________________________________________________
void AliReconstruction::InitRawReader(const char* input)
{
  // Init raw-reader and
  // set the input in case of raw data

  AliCodeTimerAuto("",0);

  if (input) fRawInput = input;
  fRawReader = AliRawReader::Create(fRawInput.Data());
  if (!fRawReader) {
    if (fRawInput.IsNull()) {
      AliInfo("Reconstruction will run over digits");
    }
    else {
      AliFatal("Can not create raw-data reader ! Exiting..."); 
    }
  }

  if (!fEquipIdMap.IsNull() && fRawReader)
    fRawReader->LoadEquipmentIdsMap(fEquipIdMap);

  if (!fUseHLTData.IsNull()) {
    // create the RawReaderHLT which performs redirection of HLT input data for
    // the specified detectors
    AliRawReader* pRawReader=AliRawHLTManager::CreateRawReaderHLT(fRawReader, fUseHLTData.Data());
    if (pRawReader) {
      fParentRawReader=fRawReader;
      fRawReader=pRawReader;
    } else {
      AliError(Form("can not create Raw Reader for HLT input %s", fUseHLTData.Data()));
    }
  }
  AliSysInfo::AddStamp("CreateRawReader");
}

//_____________________________________________________________________________
void AliReconstruction::InitRun(const char* input)
{
  // Initialization of raw-reader,
  // run number, CDB etc.
  AliCodeTimerAuto("",0);
  AliSysInfo::AddStamp("Start");

  // Initialize raw-reader if any
  InitRawReader(input);

  // Initialize the CDB storage
  InitCDB();

  // Set run number in CDBManager (if it is not already set by the user)
  if (!SetRunNumberFromData()) {
    Abort("SetRunNumberFromData", TSelector::kAbortProcess);
    return;
  }

  // Set CDB lock: from now on it is forbidden to reset the run number
  // or the default storage or to activate any further storage!
  SetCDBLock();
  
}

//_____________________________________________________________________________
void AliReconstruction::Begin(TTree *)
{
  // Initialize AlReconstruction before
  // going into the event loop
  // Should follow the TSelector convention
  // i.e. initialize only the object on the client side
  AliCodeTimerAuto("",0);

  AliReconstruction *reco = NULL;
  if (fInput) {
    if ((reco = (AliReconstruction*)fInput->FindObject("AliReconstruction"))) {
      *this = *reco;
    }
    AliSysInfo::AddStamp("ReadInputInBegin");
  }

  // Import ideal TGeo geometry and apply misalignment
  if (!AliGeomManager::GetGeometry()) {
    TString geom(gSystem->DirName(fGAliceFileName));
    geom += "/geometry.root";
    AliGeomManager::LoadGeometry(geom.Data());
    if (!gGeoManager) {
      Abort("LoadGeometry", TSelector::kAbortProcess);
      return;
    }
    AliSysInfo::AddStamp("LoadGeom");
    TString detsToCheck=fRunLocalReconstruction;
    if(!AliGeomManager::CheckSymNamesLUT(detsToCheck.Data())) {
      Abort("CheckSymNamesLUT", TSelector::kAbortProcess);
      return;
    }
    AliSysInfo::AddStamp("CheckGeom");
  }

  Bool_t toCDBSnapshot=kFALSE;
  TString snapshotFileOut(""); // we could use fSnapshotFileName if we are not interested
  // in reading from and writing to a snapshot file at the same time
  if(TString(getenv("OCDB_SNAPSHOT_CREATE")) == TString("kTRUE")){
      toCDBSnapshot=kTRUE;
      //fFromCDBSnapshot=kFALSE;
      TString snapshotFile(getenv("OCDB_SNAPSHOT_FILENAME"));
      if(!(snapshotFile.IsNull() || snapshotFile.IsWhitespace()))
	  snapshotFileOut = snapshotFile;
      else
	  snapshotFileOut="OCDB.root";
  }

  TString detStr(fLoadAlignData);
  if (!toCDBSnapshot) {
    if (!MisalignGeometry(fLoadAlignData)) {
      Abort("MisalignGeometry", TSelector::kAbortProcess);
      return;
    }
  } else {
    // when creating the snapshot, load the CDB alignment objects without applying them to the geometry
    for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
      if (!strcmp(fgkDetectorName[iDet],"HLT")) continue;
      if (AliGeomManager::GetNalignable(fgkDetectorName[iDet]) != 0)
      {
        TString detAlignPath = fgkDetectorName[iDet];
        detAlignPath += "/Align/Data";
        AliCDBManager::Instance()->Get(detAlignPath);
      }
    } // end loop over detectors
    if(AliGeomManager::GetNalignable("GRP") != 0)
      AliCDBManager::Instance()->Get("GRP/Align/Data");
  }

  const TMap* cdbCache = AliCDBManager::Instance()->GetEntryCache();
  if(!toCDBSnapshot) {
    if(cdbCache->Contains("GRP/Geometry/Data"))
      AliCDBManager::Instance()->UnloadFromCache("GRP/Geometry/Data");
    AliCDBManager::Instance()->UnloadFromCache("*/Align/*");
  }
  AliSysInfo::AddStamp("MisalignGeom");

  if (!InitGRP()) {
    Abort("InitGRP", TSelector::kAbortProcess);
    return;
  }
  AliSysInfo::AddStamp("InitGRP");
  if(!toCDBSnapshot)
      if(cdbCache->Contains("GRP/Calib/CosmicTriggers"))
	  AliCDBManager::Instance()->UnloadFromCache("GRP/Calib/CosmicTriggers");

  if(!fCDBSnapshotMode || toCDBSnapshot){
      if (!LoadCDB()) {
	  Abort("LoadCDB", TSelector::kAbortProcess);
	  return;
      }
      AliSysInfo::AddStamp("LoadCDB"); 
  }

  if (!LoadTriggerScalersCDB()) {
    Abort("LoadTriggerScalersCDB", TSelector::kAbortProcess);
    return;
  }
  AliSysInfo::AddStamp("LoadTriggerScalersCDB");

  if (!LoadCTPTimeParamsCDB()) {
    Abort("LoadCTPTimeParamsCDB", TSelector::kAbortProcess);
    return;
  }
  AliSysInfo::AddStamp("LoadCTPTimeParamsCDB");

  if (!ReadIntensityInfoCDB()) {
    Abort("ReadIntensityInfoCDB", TSelector::kAbortProcess);
    return;
  }
  AliSysInfo::AddStamp("ReadIntensityInfoCDB");

  // Read the reconstruction parameters from OCDB
  if (!InitRecoParams()) {
    AliWarning("Not all detectors have correct RecoParam objects initialized");
  }
  AliSysInfo::AddStamp("InitRecoParams");

  if(toCDBSnapshot)
  {
      AliCDBManager::Instance()->DumpToSnapshotFile(snapshotFileOut.Data(),kFALSE);
      exit(0);
  }

  if (fInput && gProof) {
    if (reco) *reco = *this;

    gGeoManager->SetName("Geometry");
    gProof->AddInputData(gGeoManager,kTRUE);
    gGeoManager = NULL;
    gProof->AddInputData(const_cast<TMap*>(AliCDBManager::Instance()->GetEntryCache()),kTRUE);
    fInput->Add(new TParameter<Int_t>("RunNumber",AliCDBManager::Instance()->GetRun()));
    AliMagF *magFieldMap = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
    magFieldMap->SetName("MagneticFieldMap");
    gProof->AddInputData(magFieldMap,kTRUE);
    if (fAnalysis) {
      fAnalysis->SetName("Analysis");
      gProof->AddInputData(fAnalysis,kTRUE);
    }  
  }

}

//_____________________________________________________________________________
void AliReconstruction::SlaveBegin(TTree*)
{
  // Initialization related to run-loader,
  // vertexer, trackers, recontructors
  // In proof mode it is executed on the slave
  AliCodeTimerAuto("",0);

  TProofOutputFile *outProofFile = NULL;
  if (fInput) {
    if (AliDebugLevel() > 0) fInput->Print();
    if (AliDebugLevel() > 10) fInput->Dump();
    if (AliReconstruction *reco = (AliReconstruction*)fInput->FindObject("AliReconstruction")) {
      *this = *reco;
    }
    if (TGeoManager *tgeo = (TGeoManager*)fInput->FindObject("Geometry")) {
      gGeoManager = tgeo;
      AliGeomManager::SetGeometry(tgeo);
    }
    if (TMap *entryCache = (TMap*)fInput->FindObject("CDBEntryCache")) {
      Int_t runNumber = -1;
      if (TProof::GetParameter(fInput,"RunNumber",runNumber) == 0) {
	AliCDBManager *man = AliCDBManager::Instance(entryCache,runNumber);
	man->SetCacheFlag(kTRUE);
	man->SetLock(kTRUE);
	man->Print();
      }
    }
    if (AliMagF *map = (AliMagF*)fInput->FindObject("MagneticFieldMap")) {
      AliMagF *newMap = new AliMagF(*map);
      if (!newMap->LoadParameterization()) {
	Abort("AliMagF::LoadParameterization", TSelector::kAbortProcess);
	return;
      }
      TGeoGlobalMagField::Instance()->SetField(newMap);
      TGeoGlobalMagField::Instance()->Lock();
    }
    if (!fAnalysis) {
       // Attempt to get the analysis manager from the input list
       fAnalysis = (AliAnalysisManager*)fInput->FindObject("Analysis");
       if (fAnalysis) AliInfo("==== Analysis manager retrieved from input list ====");
    }   
    if (TNamed *outputFileName = (TNamed*)fInput->FindObject("PROOF_OUTPUTFILE"))
      fProofOutputFileName = outputFileName->GetTitle();
    if (TNamed *outputLocation = (TNamed*)fInput->FindObject("PROOF_OUTPUTFILE_LOCATION"))
      fProofOutputLocation = outputLocation->GetTitle();
    if (fInput->FindObject("PROOF_OUTPUTFILE_DATASET"))
      fProofOutputDataset = kTRUE;
    if (TNamed *archiveList = (TNamed*)fInput->FindObject("PROOF_OUTPUTFILE_ARCHIVE"))
      fProofOutputArchive = archiveList->GetTitle();
    if (!fProofOutputFileName.IsNull() &&
	!fProofOutputLocation.IsNull() &&
	fProofOutputArchive.IsNull()) {
      if (!fProofOutputDataset) {
	outProofFile = new TProofOutputFile(fProofOutputFileName.Data(),"M");
	outProofFile->SetOutputFileName(Form("%s%s",fProofOutputLocation.Data(),fProofOutputFileName.Data()));
      }
      else {
	outProofFile = new TProofOutputFile(fProofOutputFileName.Data(),"DROV",fProofOutputLocation.Data());
      }
      if (AliDebugLevel() > 0) outProofFile->Dump();
      fOutput->Add(outProofFile);
    }
    AliSysInfo::AddStamp("ReadInputInSlaveBegin");
  }
  // Check if analysis was requested in the reconstruction event loop
  if (!fAnalysis) {
    // Attempt to connect in-memory singleton
    fAnalysis = AliAnalysisManager::GetAnalysisManager();
    if (fAnalysis) AliInfo(Form("==== Analysis manager <%s> found in memory ====", fAnalysis->GetName()));
    // Check if an analysis macro was specified
    if (!fAnalysis && !fAnalysisMacro.IsNull()) {
      // Run specified analysis macro
      gROOT->ProcessLine(Form(".x %s",fAnalysisMacro.Data()));
      fAnalysis = AliAnalysisManager::GetAnalysisManager();
      if (!fAnalysis) AliError(Form("No analysis manager produced by analysis macro %s", fAnalysisMacro.Data()));
      else AliInfo(Form("==== Analysis manager <%s> produced by analysis macro <%s> ====", 
                        fAnalysis->GetName(), fAnalysisMacro.Data()));
    }
  }
  
  // get the run loader
  if (!InitRunLoader()) {
    Abort("InitRunLoader", TSelector::kAbortProcess);
    return;
  }
  AliSysInfo::AddStamp("LoadLoader");
 
  CheckRecoCDBvsSimuCDB();

  ftVertexer = new AliVertexerTracks(AliTracker::GetBz());

  // get trackers
  if (!fRunTracking.IsNull() && !CreateTrackers(fRunTracking)) {
    Abort("CreateTrackers", TSelector::kAbortProcess);
    return;
  }      
  AliSysInfo::AddStamp("CreateTrackers");

  // create the ESD output file and tree
  if (!outProofFile) {
    ffile = TFile::Open("AliESDs.root", "RECREATE");
    ffile->SetCompressionLevel(2);
    if (!ffile->IsOpen()) {
      Abort("OpenESDFile", TSelector::kAbortProcess);
      return;
    }
  }
  else {
    AliInfo(Form("Opening output PROOF file: %s/%s",
		 outProofFile->GetDir(), outProofFile->GetFileName()));
    if (!(ffile = outProofFile->OpenFile("RECREATE"))) {
      Abort(Form("Problems opening output PROOF file: %s/%s",
		 outProofFile->GetDir(), outProofFile->GetFileName()),
	    TSelector::kAbortProcess);
      return;
    }
  }

  ftree = new TTree("esdTree", "Tree with ESD objects");
  fesd = new AliESDEvent();
  fesd->CreateStdContent();
  // add a so far non-std object to the ESD, this will
  // become part of the std content
  fesd->AddObject(new AliESDHLTDecision);

  fesd->WriteToTree(ftree);
  if (fWriteESDfriend) {
    ffileF = TFile::Open("AliESDfriends.root", "RECREATE");
    ftreeF = new TTree("esdFriendTree", "Tree with ESD Friend objects");
    fesdf  = new AliESDfriend();
    ftreeF->Branch("ESDfriend.","AliESDfriend", &fesdf);
    fesd->AddObject(fesdf);
    ffile->cd();
  }
  ftree->GetUserInfo()->Add(fesd);

  fhlttree = new TTree("HLTesdTree", "Tree with HLT ESD objects");
  fhltesd = new AliESDEvent();
  fhltesd->CreateStdContent();
  // read the ESD template from CDB
  // HLT is allowed to put non-std content to its ESD, the non-std
  // objects need to be created before invocation of WriteToTree in
  // order to create all branches. Initialization is done from an
  // ESD layout template in CDB
  AliCDBManager* man = AliCDBManager::Instance();
  AliCDBEntry* hltESDConfig = man->Get("HLT/Calib/esdLayout");
  if(!hltESDConfig){
      AliError(Form("Error getting \"HLT/Calib/esdLayout\""));
      return;
  }
  AliESDEvent* pESDLayout=dynamic_cast<AliESDEvent*>(hltESDConfig->GetObject());
  if (pESDLayout) {
      // init all internal variables from the list of objects
      pESDLayout->GetStdContent();

      // copy content and create non-std objects
      *fhltesd=*pESDLayout;
      fhltesd->Reset();
  } else {
      AliError(Form("error setting hltEsd layout from \"HLT/Calib/esdLayout\": invalid object type"));
  }

  fhltesd->WriteToTree(fhlttree);
  fhlttree->GetUserInfo()->Add(fhltesd);

  ProcInfo_t procInfo;
  gSystem->GetProcInfo(&procInfo);
  AliInfo(Form("Current memory usage %ld %ld", procInfo.fMemResident, procInfo.fMemVirtual));
  
  // PID
  fESDpid = new AliESDpid();

  //QA
  //Initialize the QA and start of cycle 
  if (fRunQA || fRunGlobalQA) 
    InitQA() ; 

  //Initialize the Plane Efficiency framework
  if (fRunPlaneEff && !InitPlaneEff()) {
    Abort("InitPlaneEff", TSelector::kAbortProcess);
    return;
  }

  if (strcmp(gProgName,"alieve") == 0)
    fRunAliEVE = InitAliEVE();
  // If we have an analysis manager, connect the AliRecoInputHandler here  
  if (fAnalysis) {
    if (!dynamic_cast<AliRecoInputHandler*>(fAnalysis->GetInputEventHandler())) {
       AliError("Analysis manager used in reconstruction should use AliRecoInputHandler - \
                 \n  ->Replacing with AliRecoInputHandler instance.");
       delete fAnalysis->GetInputEventHandler();
    }
    // Set the event and other data pointers
    fRecoHandler = new AliRecoInputHandler();
//    fRecoHandler->Init(ftree, "LOCAL");
    fRecoHandler->SetEvent(fesd);
    fRecoHandler->SetESDfriend(fesdf);
    fRecoHandler->SetHLTEvent(fhltesd);
    fRecoHandler->SetHLTTree(fhlttree);
    fAnalysis->SetInputEventHandler(fRecoHandler);
    // Enter external loop mode
    fAnalysis->SetExternalLoop(kTRUE);
    // Initialize analysis
    fAnalysis->SlaveBegin(ftree);
    fAnalysis->StartAnalysis("local", (TTree*)0);
    // Connect ESD tree with the input container
    fAnalysis->GetCommonInputContainer()->SetData(ftree);
  }  
  return;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::Process(Long64_t entry)
{
  // run the reconstruction over a single entry
  // from the chain with raw data
  AliCodeTimerAuto("",0);

  TTree *currTree = fChain->GetTree();
  AliRawVEvent *event = NULL;
  currTree->SetBranchAddress("rawevent",&event);
  currTree->GetEntry(entry);
  fRawReader = new AliRawReaderRoot(event);
  // check if process has enough resources 
  if (!HasEnoughResources(entry)) return kFALSE;
  fStatus = ProcessEvent(fRunLoader->GetNumberOfEvents());
  delete fRawReader;
  fRawReader = NULL;
  delete event;

  return fStatus;
}

//_____________________________________________________________________________
void AliReconstruction::Init(TTree *tree)
{
  // Implementation of TSelector::Init()
  // method
  if (tree == 0) {
    AliError("The input tree is not found!");
    return;
  }
  fChain = tree;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
{
  // run the reconstruction over a single event
  // The event loop is steered in Run method


  static Long_t oldMres=0;
  static Long_t oldMvir=0;
  static Float_t oldCPU=0;
  static Long_t aveDMres=0;
  static Long_t aveDMvir=0;
  static Float_t aveDCPU=0;

  AliCodeTimerAuto("",0);

  AliSysInfo::AddStamp(Form("StartEv_%d",iEvent), 0,0,iEvent);

  if (iEvent >= fRunLoader->GetNumberOfEvents()) {
    fRunLoader->SetEventNumber(iEvent);
    if (fRawReader)
      fRunLoader->GetHeader()->Reset(fRawReader->GetRunNumber(), 
				     iEvent, iEvent);
    fRunLoader->TreeE()->Fill();

    if (fRawReader && fRawReader->UseAutoSaveESD())
      fRunLoader->TreeE()->AutoSave("SaveSelf");
  }

  if ((iEvent < fFirstEvent) || ((fLastEvent >= 0) && (iEvent > fLastEvent))) {
    return kTRUE;
  }


  fRunLoader->GetEvent(iEvent);

  // Fill Event-info object
  GetEventInfo();
  fRecoParam.SetEventSpecie(fRunInfo,fEventInfo,fListOfCosmicTriggers);
  
  ProcInfo_t procInfo;
  if(iEvent==fFirstEvent) {
    gSystem->GetProcInfo(&procInfo);
    oldMres=procInfo.fMemResident;
    oldMvir=procInfo.fMemVirtual;
    oldCPU=procInfo.fCpuUser+procInfo.fCpuSys;
  }
  AliInfo(Form("================================= Processing event %d of type %-10s ==================================", iEvent,fRecoParam.PrintEventSpecie()));

  AliSysInfo::AddStamp(Form("StartReco_%d",iEvent), 0,0,iEvent);

  // Set the reco-params
  {
    TString detStr = fLoadCDB;
    for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
      AliReconstructor *reconstructor = GetReconstructor(iDet);
      if (reconstructor && fRecoParam.GetDetRecoParamArray(iDet)) {
        const AliDetectorRecoParam *par = fRecoParam.GetDetRecoParam(iDet);
        reconstructor->SetRecoParam(par);
	reconstructor->GetPidSettings(fESDpid);
	reconstructor->SetEventInfo(&fEventInfo);
        if (fRunQA) {
          AliQAManager::QAManager()->SetEventInfo(&fEventInfo) ;
          AliQAManager::QAManager()->SetRecoParam(iDet, par) ; 
          if (par) AliQAManager::QAManager()->SetEventSpecie(AliRecoParam::Convert(par->GetEventSpecie())) ;
        }
      }
    }
    //
    if (fRunQA || fRunGlobalQA) AliQADataMaker::SetEventTrigClasses(fEventInfo.GetTriggerClasses()); // RS: select which histo clones are to be filled
    //
    if (fRunQA) {
      const AliDetectorRecoParam *grppar = fRecoParam.GetDetRecoParam(kNDetectors);
      AliQAManager::QAManager()->SetRecoParam(AliQAv1::kGLOBAL, grppar) ; 
      AliQAManager::QAManager()->SetEventSpecie(AliRecoParam::Convert(grppar->GetEventSpecie())) ;
    }
  }

    // QA on single raw 
  if (fRunQA && IsInTasks(AliQAv1::kRAWS)) {
    AliQAManager::QAManager()->SetEventSpecie(fRecoParam.GetEventSpecie()) ;
    AliQAManager::QAManager()->RunOneEvent(fRawReader) ;  
    AliSysInfo::AddStamp(Form("RawQA_%d",iEvent), 0,0,iEvent);
  }

    // fill Event header information from the RawEventHeader
    if (fRawReader){FillRawEventHeaderESD(fesd);}
    if (fRawReader){FillRawEventHeaderESD(fhltesd);}
    if (fRawReader){
      // Store DAQ detector pattern and attributes
      fesd->SetDAQDetectorPattern(fRawReader->GetDetectorPattern()[0]);
      fesd->SetDAQAttributes(fRawReader->GetAttributes()[2]);
    }

    fesd->SetRunNumber(fRunLoader->GetHeader()->GetRun());
    fhltesd->SetRunNumber(fRunLoader->GetHeader()->GetRun());
    
    ((AliESDRun*)fesd->GetESDRun())->SetDetectorsInDAQ(fRunInfo->GetDetectorMask());
    ((AliESDRun*)fhltesd->GetESDRun())->SetDetectorsInDAQ(fRunInfo->GetDetectorMask());
    ((AliESDRun*)fesd->GetESDRun())->SetDetectorsInReco(AliDAQ::DetectorPatternOffline(fFillESD.Data()));
    ((AliESDRun*)fhltesd->GetESDRun())->SetDetectorsInReco(AliDAQ::DetectorPatternOffline(fFillESD.Data()));

    fesd->SetEventNumberInFile(fRunLoader->GetHeader()->GetEventNrInRun());
    fhltesd->SetEventNumberInFile(fRunLoader->GetHeader()->GetEventNrInRun());

    fesd->SetEventSpecie(fRecoParam.GetEventSpecie());
    fhltesd->SetEventSpecie(fRecoParam.GetEventSpecie());
    
    // Set magnetic field from the tracker
    fesd->SetMagneticField(AliTracker::GetBz());
    fhltesd->SetMagneticField(AliTracker::GetBz());
    //
    AliESDRun *esdRun,*esdRunH;
    esdRun  = (AliESDRun*)fesd->GetESDRun();
    esdRunH = (AliESDRun*)fhltesd->GetESDRun();
    esdRun->SetBeamEnergyIsSqrtSHalfGeV();
    esdRunH->SetBeamEnergyIsSqrtSHalfGeV();
    //
    for (int ib=2;ib--;) for (int it=2;it--;) {
	esdRun->SetMeanIntensity(ib,it, fBeamInt[ib][it]); 
	esdRunH->SetMeanIntensity(ib,it, fBeamInt[ib][it]); 
      }
    //
    fesd->SetBeamEnergy(fGRPData->GetBeamEnergy());
    fesd->SetBeamType(fGRPData->GetBeamType().Data());
    fesd->SetBeamParticle(fGRPData->GetSingleBeamType(0).Atoi(),0);
    fesd->SetBeamParticle(fGRPData->GetSingleBeamType(1).Atoi(),1);
    fhltesd->SetBeamEnergy(fGRPData->GetBeamEnergy());
    fhltesd->SetBeamType(fGRPData->GetBeamType().Data());
    fhltesd->SetBeamParticle(fGRPData->GetSingleBeamType(0).Atoi(),0);
    fhltesd->SetBeamParticle(fGRPData->GetSingleBeamType(1).Atoi(),1);
    //
    AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
    if (fld) { // set info needed for field initialization
      fesd->SetCurrentL3(fld->GetCurrentSol());
      fesd->SetCurrentDip(fld->GetCurrentDip());
      fesd->SetUniformBMap(fld->IsUniform());
      fesd->SetBInfoStored();
      //
      fhltesd->SetCurrentL3(fld->GetCurrentSol());
      fhltesd->SetCurrentDip(fld->GetCurrentDip());
      fhltesd->SetUniformBMap(fld->IsUniform());
      fhltesd->SetBInfoStored();
    }

    //
    // run full HLT reconstruction first
    //
    {
      TString detectors=fRunLocalReconstruction;
      if (IsSelected("HLT", detectors) &&
	  !RunLocalEventReconstruction("HLT")) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
      detectors=fFillESD;
      // run HLT on hltesd
      if (IsSelected("HLT", detectors) &&
	  !FillESD(fhltesd, "HLT")) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
    }

    // local single event reconstruction
    if (!fRunLocalReconstruction.IsNull()) {
      TString detectors=fRunLocalReconstruction;
      // the logic for selection and correct sequence of reconstruction relies on the
      // full list of detectors. Keyword 'ALL' should have been replaced at this point.
      if (detectors.Contains("ALL")) {
	AliFatal("Keyword 'ALL' needs to be replaced by the full list of detectors in "
		 "fRunLocalReconstruction. This should have been done by the framework");
      }
      detectors.ReplaceAll("HLT", "");
      if (!RunLocalEventReconstruction(detectors)) {
        if (fStopOnError) {
          CleanUp(); 
          return kFALSE;
        }
      }
    }

  
    //
    // Set most probable pt, for B=0 tracking
    // Get the global reco-params. They are atposition 16 inside the array of detectors in fRecoParam
    const AliGRPRecoParam *grpRecoParam = dynamic_cast<const AliGRPRecoParam*>(fRecoParam.GetDetRecoParam(kNDetectors));
    if (grpRecoParam) AliExternalTrackParam::SetMostProbablePt(grpRecoParam->GetMostProbablePt());
    
    // Fill raw-data error log into the ESD
    if (fRawReader) FillRawDataErrorLog(iEvent,fesd);

    AliSysInfo::AddStamp(Form("FillHeadErrs_%d",iEvent), 0,0,iEvent);

    // vertex finder
    if (fRunVertexFinder) {
      if (!RunVertexFinder(fesd)) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
      AliSysInfo::AddStamp(Form("VtxFinder_%d",iEvent), 0,0,iEvent);
    }

    // For Plane Efficiency: run the SPD trackleter
    if (fRunPlaneEff && fSPDTrackleter) {
      if (!RunSPDTrackleting(fesd)) {
        if (fStopOnError) {CleanUp(); return kFALSE;}
      }
      AliSysInfo::AddStamp(Form("TrackletEff_%d",iEvent), 0,0,iEvent);
    }

    // Muon tracking
    if (!fRunTracking.IsNull()) {
      if (fRunMuonTracking) {
	if (!RunMuonTracking(fesd)) {
	  if (fStopOnError) {CleanUp(); return kFALSE;}
	}
      }
      AliSysInfo::AddStamp(Form("TrackingMUON_%d",iEvent), 0,0,iEvent);      
    }

    //---------------- AU From here...

    // MFT tracking of MUON tracks
    if (!fRunTracking.IsNull()) {
      if (fRunMFTTrackingMU && fRunMuonTracking) {
	if (!RunMFTTrackingMU(fesd)) {
	  if (fStopOnError) {CleanUp(); return kFALSE;}
	}
      }
      AliSysInfo::AddStamp(Form("TrackingMFT_MUON_%d",iEvent), 0,0,iEvent);      
    }

    //---------------- ...to here

    // barrel tracking
    if (!fRunTracking.IsNull()) {
      if (!RunTracking(fesd,*fESDpid)) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
    }

    // fill ESD
    if (!fFillESD.IsNull()) {
      TString detectors=fFillESD;
      // the logic for selection and correct sequence of reconstruction relies on the
      // full list of detectors. Keyword 'ALL' should have been replaced at this point.
      if (detectors.Contains("ALL")) {
	AliFatal("Keyword 'ALL' needs to be replaced by the full list of detectors in "
		 "fFillESD. This should have been done by the framework");
      }
      // remove HLT as this has been executed at the beginning of the event reconstruction
      detectors.ReplaceAll("HLT", "");
      if (!FillESD(fesd, detectors)) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
    }

    ffile->cd();

    //
    // Propagate track to the beam pipe  (if not already done by ITS)
    //
    const Int_t ntracks = fesd->GetNumberOfTracks();
    const Double_t kRadius  = 2.8; //something less than the beam pipe radius

    TObjArray trkArray;
    UShort_t selectedIdx[ntracks];

    for (Int_t itrack=0; itrack<ntracks; itrack++){
      const Double_t kMaxStep = 1;   //max step over the material
      Bool_t ok;

      AliESDtrack *track = fesd->GetTrack(itrack);
      if (!track) continue;

      AliExternalTrackParam *tpcTrack =
           (AliExternalTrackParam *)track->GetTPCInnerParam();
      ok = kFALSE;
      if (tpcTrack)
	ok = AliTracker::
	  PropagateTrackToBxByBz(tpcTrack,kRadius,track->GetMassForTracking(),kMaxStep,kFALSE);

      if (ok) {
	Int_t n=trkArray.GetEntriesFast();
        selectedIdx[n]=track->GetID();
        trkArray.AddLast(tpcTrack);
      }

      //Tracks refitted by ITS should already be at the SPD vertex
      if (track->IsOn(AliESDtrack::kITSrefit)) continue;

      AliTracker::
         PropagateTrackToBxByBz(track,kRadius,track->GetMassForTracking(),kMaxStep,kFALSE);
      Double_t x[3]; track->GetXYZ(x);
      Double_t b[3]; AliTracker::GetBxByBz(x,b);
      track->RelateToVertexBxByBz(fesd->GetPrimaryVertexSPD(), b, kVeryBig);

    }
    AliSysInfo::AddStamp(Form("RelToSPDVtx_%d",iEvent), 0,0,iEvent);      
    //
    // Improve the reconstructed primary vertex position using the tracks
    //
    Bool_t runVertexFinderTracks = fRunVertexFinderTracks;
    if(fesd->GetPrimaryVertexSPD()) {
      TString vtitle = fesd->GetPrimaryVertexSPD()->GetTitle();
      if(vtitle.Contains("cosmics")) {
	runVertexFinderTracks=kFALSE;
      }
    }

    if (runVertexFinderTracks) {
       // TPC + ITS primary vertex
       ftVertexer->SetITSMode();
       ftVertexer->SetConstraintOff();
       // get cuts for vertexer from AliGRPRecoParam
       Bool_t constrSPD=kFALSE;
       if (grpRecoParam) {
	 Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
	 Double_t *cutsVertexer = new Double_t[nCutsVertexer];
	 grpRecoParam->GetVertexerTracksCutsITS(cutsVertexer,nCutsVertexer);
	 ftVertexer->SetCuts(cutsVertexer,nCutsVertexer);
	 delete [] cutsVertexer; cutsVertexer = NULL; 
	 if(grpRecoParam->GetVertexerTracksConstraintITS()) { 
	   if(fDiamondProfile && fDiamondProfile->GetXRes()<kRadius){
	     ftVertexer->SetVtxStart(fDiamondProfile); // apply constraint only if sigmax is smaller than the beam pipe radius 
	   }else{
	     if(fDiamondProfileSPD && fDiamondProfileSPD->GetXRes()<kRadius){
	       ftVertexer->SetVtxStart(fDiamondProfileSPD);
	       constrSPD=kTRUE;
	     }
	   }
	 } 
       }
       AliESDVertex *pvtx=ftVertexer->FindPrimaryVertex(fesd);
       if (pvtx) {
	 if(constrSPD){
	   TString title=pvtx->GetTitle();
	   title.Append("SPD");
	   pvtx->SetTitle(title);
	 }
          if (pvtx->GetStatus()) {
             fesd->SetPrimaryVertexTracks(pvtx);
             for (Int_t i=0; i<ntracks; i++) {
	         AliESDtrack *t = fesd->GetTrack(i);
                 Double_t x[3]; t->GetXYZ(x);
                 Double_t b[3]; AliTracker::GetBxByBz(x,b);
                 t->RelateToVertexBxByBz(pvtx, b, kVeryBig);
             } 
          }
	  delete pvtx; pvtx=NULL;
       }
       AliSysInfo::AddStamp(Form("VtxTrk_%d",iEvent), 0,0,iEvent);      

       // TPC-only primary vertex
       ftVertexer->SetTPCMode();
       ftVertexer->SetConstraintOff();
       // get cuts for vertexer from AliGRPRecoParam
       if (grpRecoParam) {
	 Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
	 Double_t *cutsVertexer = new Double_t[nCutsVertexer];
	 grpRecoParam->GetVertexerTracksCutsTPC(cutsVertexer,nCutsVertexer);
	 ftVertexer->SetCuts(cutsVertexer,nCutsVertexer);
	 delete [] cutsVertexer; cutsVertexer = NULL; 
	 if(fDiamondProfileTPC && grpRecoParam->GetVertexerTracksConstraintTPC()) { 
	   if(fDiamondProfileTPC->GetXRes()<kRadius) ftVertexer->SetVtxStart(fDiamondProfileTPC); // apply constraint only if sigmax is smaller than the beam pipe radius 
	 } 
       }
       pvtx=ftVertexer->FindPrimaryVertex(&trkArray,selectedIdx);
       if (pvtx) {
          if (pvtx->GetStatus()) {
             fesd->SetPrimaryVertexTPC(pvtx);
             for (Int_t i=0; i<ntracks; i++) {
	         AliESDtrack *t = fesd->GetTrack(i);
                 Double_t x[3]; t->GetXYZ(x);
                 Double_t b[3]; AliTracker::GetBxByBz(x,b);
                 t->RelateToVertexTPCBxByBz(pvtx, b, kVeryBig);
             } 
          }
	  delete pvtx; pvtx=NULL;
       }
       AliSysInfo::AddStamp(Form("VtxTPC_%d",iEvent), 0,0,iEvent);      

    }
    
    if(fDiamondProfile && fDiamondProfile->GetXRes()<kRadius) fesd->SetDiamond(fDiamondProfile);
    else fesd->SetDiamond(fDiamondProfileSPD);

    if (fRunV0Finder) {
       // V0 finding
       AliV0vertexer vtxer;
       // get cuts for V0vertexer from AliGRPRecoParam
       if (grpRecoParam) {
	 Int_t nCutsV0vertexer = grpRecoParam->GetVertexerV0NCuts();
	 Double_t cutsV0vertexer[nCutsV0vertexer];
	 grpRecoParam->GetVertexerV0Cuts(cutsV0vertexer);
	 vtxer.SetCuts(cutsV0vertexer);
       }
       vtxer.Tracks2V0vertices(fesd);
       AliSysInfo::AddStamp(Form("V0Finder_%d",iEvent), 0,0,iEvent); 

       if (fRunCascadeFinder) {
          // Cascade finding
          AliCascadeVertexer cvtxer;
	  // get cuts for CascadeVertexer from AliGRPRecoParam
	  if (grpRecoParam) {
	    Int_t nCutsCascadeVertexer = grpRecoParam->GetVertexerCascadeNCuts();
	    Double_t cutsCascadeVertexer[nCutsCascadeVertexer];
	    grpRecoParam->GetVertexerCascadeCuts(cutsCascadeVertexer);
	    cvtxer.SetCuts(cutsCascadeVertexer);
	  }
          cvtxer.V0sTracks2CascadeVertices(fesd);
	  AliSysInfo::AddStamp(Form("CascadeFinder_%d",iEvent), 0,0,iEvent); 
       }
    }

    // AdC+FN
    if (fReconstructor[3])
      GetReconstructor(3)->FillEventTimeWithTOF(fesd,fESDpid);

    // combined PID
    //    fESDpid->MakePID(fesd);

    if (fFillTriggerESD) {
      if (!FillTriggerESD(fesd)) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
    }
    // Always fill scalers
    if (!FillTriggerScalers(fesd)) {
       if (fStopOnError) {CleanUp(); return kFALSE;}
    }

    AliSysInfo::AddStamp(Form("FillVaria_%d",iEvent), 0,0,iEvent); 

    // write ESD
    UInt_t specie = fesd->GetEventSpecie();
    Bool_t keepAll = (specie==AliRecoParam::kCosmic || specie==AliRecoParam::kCalib);
    if (fCleanESD && (!keepAll) ) {
      CleanESD(fesd);
      AliSysInfo::AddStamp(Form("CleanESD_%d",iEvent), 0,0,iEvent); 
    }
    // 
    // RS run updated trackleter: since we want to mark the clusters used by tracks and also mark the 
    // tracks interpreted as primary, this step should be done in the very end, when full 
    // ESD info is available (particulalry, V0s)
    // vertex finder
    if (fRunMultFinder) {
      if (!RunMultFinder(fesd)) {
	if (fStopOnError) {CleanUp(); return kFALSE;}
      }
      AliSysInfo::AddStamp(Form("MultFinder_%d",iEvent), 0,0,iEvent); 
    }

  if (fRunQA && IsInTasks(AliQAv1::kESDS)) {
    AliQAManager::QAManager()->SetEventSpecie(fRecoParam.GetEventSpecie()) ;
    AliQAManager::QAManager()->RunOneEvent(fesd, fhltesd) ; 
    AliSysInfo::AddStamp(Form("RunQA_%d",iEvent), 0,0,iEvent); 
  }
  if (fRunGlobalQA) {
    AliQADataMaker *qadm = AliQAManager::QAManager()->GetQADataMaker(AliQAv1::kGLOBAL);
    if (qadm)
      qadm->SetEventSpecie(fRecoParam.GetEventSpecie()) ;
    if (qadm && IsInTasks(AliQAv1::kESDS))
      qadm->Exec(AliQAv1::kESDS, fesd);
    AliSysInfo::AddStamp(Form("RunGlobQA_%d",iEvent), 0,0,iEvent);     
  }

  // copy HLT decision from HLTesd to esd
  // the most relevant information is stored in a reduced container in the esd,
  // while the full information can be found in the HLTesd
  TObject* pHLTSrc=fhltesd->FindListObject(AliESDHLTDecision::Name());
  TObject* pHLTTgt=fesd->FindListObject(AliESDHLTDecision::Name());
  if (pHLTSrc && pHLTTgt) {
    pHLTSrc->Copy(*pHLTTgt);
  }
  //
  // Perform analysis of this event if requested
  // RS: Should be done before WriteESDfriend, since the latter may clean the esdfriend
  if (fAnalysis) {
    fRecoHandler->BeginEvent(iEvent);
    fAnalysis->ExecAnalysis();
    fRecoHandler->FinishEvent();
    AliSysInfo::AddStamp(Form("Analysis_%d",iEvent), 0,0,iEvent);     
  }  
  //
  if (fWriteESDfriend) {
    fesd->GetESDfriend(fesdf);
    AliSysInfo::AddStamp(Form("CreateFriend_%d",iEvent), 0,0,iEvent);     
  
  }
  //
  Long64_t nbf;
  nbf = ftree->Fill();
  if (fTreeBuffSize>0 && ftree->GetAutoFlush()<0 && (fMemCountESD += nbf)>fTreeBuffSize ) { // default limit is still not reached
    nbf = ftree->GetZipBytes();
    if (nbf>0) nbf = -nbf;
    else       nbf = ftree->GetEntries();
    ftree->SetAutoFlush(nbf);
    AliInfo(Form("Calling ftree->SetAutoFlush(%lld) | W:%lld T:%lld Z:%lld",
		 nbf,fMemCountESD,ftree->GetTotBytes(),ftree->GetZipBytes()));        
  }
  AliSysInfo::AddStamp(Form("ESDFill_%d",iEvent), 0,0,iEvent);     
  //
  if (fWriteESDfriend) {
    WriteESDfriend();
    AliSysInfo::AddStamp(Form("WriteFriend_%d",iEvent), 0,0,iEvent);     
  }
  //
  //
  // Auto-save the ESD tree in case of prompt reco @P2
  if (fRawReader && fRawReader->UseAutoSaveESD()) {
    ftree->AutoSave("SaveSelf");
    if (fWriteESDfriend) ftreeF->AutoSave("SaveSelf");
  }
  // write HLT ESD
  
  nbf = fhlttree->Fill();
  if (fTreeBuffSize>0 && fhlttree->GetAutoFlush()<0 && (fMemCountESDHLT += nbf)>fTreeBuffSize ) { // default limit is still not reached
    nbf = fhlttree->GetZipBytes();
    if (nbf>0) nbf = -nbf;
    else       nbf = fhlttree->GetEntries();
    fhlttree->SetAutoFlush(nbf);
    AliInfo(Form("Calling fhlttree->SetAutoFlush(%lld) | W:%lld T:%lld Z:%lld",
		 nbf,fMemCountESDHLT,fhlttree->GetTotBytes(),fhlttree->GetZipBytes()));        
  }
    
    gSystem->GetProcInfo(&procInfo);
    Long_t dMres=(procInfo.fMemResident-oldMres)/1024;
    Long_t dMvir=(procInfo.fMemVirtual-oldMvir)/1024;
    Float_t dCPU=procInfo.fCpuUser+procInfo.fCpuSys-oldCPU;
    aveDMres+=(dMres-aveDMres)/(iEvent-fFirstEvent+1);
    aveDMvir+=(dMvir-aveDMvir)/(iEvent-fFirstEvent+1);
    aveDCPU+=(dCPU-aveDCPU)/(iEvent-fFirstEvent+1);
    AliInfo(Form("======================= End Event %d: Res %ld(%3ld <%3ld>) Vir %ld(%3ld <%3ld>) CPU %5.2f <%5.2f> ===================",
                iEvent, procInfo.fMemResident/1024, dMres, aveDMres, procInfo.fMemVirtual/1024, dMvir, aveDMvir, dCPU, aveDCPU));
    oldMres=procInfo.fMemResident;
    oldMvir=procInfo.fMemVirtual;
    oldCPU=procInfo.fCpuUser+procInfo.fCpuSys;
  
    
  return kTRUE;
}

void AliReconstruction::CleanProcessedEvent()
{
    //
    fesd->Reset();
    fhltesd->Reset();
    if (fWriteESDfriend) {
      fesdf->~AliESDfriend();
      new (fesdf) AliESDfriend(); // Reset...
    }

    for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      if (fReconstructor[iDet]) fReconstructor[iDet]->FinishEvent();
    }
 
    AliInfo("======================= End Event ===================");
    
    fEventInfo.Reset();
    for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      if (fReconstructor[iDet]) {
	fReconstructor[iDet]->SetRecoParam(NULL);
	fReconstructor[iDet]->SetEventInfo(NULL);
      }
      if (fTracker[iDet]) fTracker[iDet]->SetEventInfo(NULL);
    }
	
  if (fRunQA || fRunGlobalQA) 
    AliQAManager::QAManager()->Increment() ; 

  DeleteRecPoints(fDeleteRecPoints);
  DeleteDigits(fDeleteDigits);
  //

}

//_____________________________________________________________________________
void AliReconstruction::SlaveTerminate()
{
  // Finalize the run on the slave side
  // Called after the exit
  // from the event loop
  AliCodeTimerAuto("",0);
  // If analysis was done during reconstruction, we need to call SlaveTerminate for it
  if (fAnalysis) {
     fAnalysis->PackOutput(fOutput);
     fAnalysis->SetSkipTerminate(kTRUE);
     fAnalysis->Terminate();
  }   

  if (fIsNewRunLoader) { // galice.root didn't exist
    fRunLoader->WriteHeader("OVERWRITE");
    fRunLoader->WriteTrigger("OVERWRITE");
    fRunLoader->CdGAFile();
    fRunLoader->Write(0, TObject::kOverwrite);
  }

  const TMap *cdbMap = AliCDBManager::Instance()->GetStorageMap();	 
  const TList *cdbList = AliCDBManager::Instance()->GetRetrievedIds();	 
	 	 
   TMap *cdbMapCopy = new TMap(cdbMap->GetEntries());	 
   cdbMapCopy->SetOwner(1);	 
   cdbMapCopy->SetName("cdbMap");	 
   TIter iter(cdbMap->GetTable());	 
 	 
   TPair* pair = 0;	 
   while((pair = dynamic_cast<TPair*> (iter.Next()))){	 
         TObjString* keyStr = dynamic_cast<TObjString*> (pair->Key());	 
         TObjString* valStr = dynamic_cast<TObjString*> (pair->Value());
	 if (keyStr && valStr)
	   cdbMapCopy->Add(new TObjString(keyStr->GetName()), new TObjString(valStr->GetName()));	 
   }	 
 	 
   TList *cdbListCopy = new TList();	 
   cdbListCopy->SetOwner(1);	 
   cdbListCopy->SetName("cdbList");	 
 	 
   TIter iter2(cdbList);	 
 	 
	AliCDBId* id=0;
	while((id = dynamic_cast<AliCDBId*> (iter2.Next()))){	 
         cdbListCopy->Add(new TObjString(id->ToString().Data()));	 
   }	 
 	 
   ftree->GetUserInfo()->Add(cdbMapCopy);	 
   ftree->GetUserInfo()->Add(cdbListCopy);

   // Add the AliRoot version that created this file
   TString sVersion("aliroot ");
   sVersion += ALIROOT_BRANCH;
   sVersion += ":";
   sVersion += ALIROOT_REVISION;
   sVersion += "; root ";
#ifdef ROOT_SVN_BRANCH
   sVersion += ROOT_SVN_BRANCH;
#elif defined(ROOT_GIT_BRANCH)
   sVersion += ROOT_GIT_BRANCH;
#else
   sVersion += "?";
#endif
   sVersion += ":";
#ifdef ROOT_SVN_REVSION
   sVersion += ROOT_SVN_REVISION;
#elif defined(ROOT_GIT_COMMIT)
   sVersion += ROOT_GIT_COMMIT;
#else 
   sVersion += "?";
#endif
   sVersion += "; metadata ";
   sVersion += getenv("PRODUCTION_METADATA");
		    

   TNamed * alirootVersion = new TNamed("alirootVersion",sVersion.Data());
   ftree->GetUserInfo()->Add(alirootVersion); // The list becomes owner of alirootVersion

  ffile->cd();

  // we want to have only one tree version number
  ftree->Write(ftree->GetName(),TObject::kOverwrite);
  fhlttree->Write(fhlttree->GetName(),TObject::kOverwrite);

  if (fWriteESDfriend) {
    ffileF->cd();
    ftreeF->Write(ftreeF->GetName(),TObject::kOverwrite);
  }

// Finish with Plane Efficiency evaluation: before of CleanUp !!!
  if (fRunPlaneEff && !FinishPlaneEff()) {
   AliWarning("Finish PlaneEff evaluation failed");
  }

  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (fReconstructor[iDet]) fReconstructor[iDet]->Terminate();
  }
  // End of cycle for the in-loop  

  if (fRunQA || fRunGlobalQA) {
    AliQAManager::QAManager()->EndOfCycle() ;
    if (fInput &&
	!fProofOutputLocation.IsNull() &&
	fProofOutputArchive.IsNull() &&
	!fProofOutputDataset) {
      TString qaOutputFile(Form("%sMerged.%s.Data.root",
				fProofOutputLocation.Data(),
				AliQAv1::GetQADataFileName()));
      TProofOutputFile *qaProofFile = new TProofOutputFile(Form("Merged.%s.Data.root",
								AliQAv1::GetQADataFileName()));
      qaProofFile->SetOutputFileName(qaOutputFile.Data());
      if (AliDebugLevel() > 0) qaProofFile->Dump();
      fOutput->Add(qaProofFile);
      MergeQA(qaProofFile->GetFileName());
    }
    else {
      MergeQA();
    }
  }

  gROOT->cd();
  CleanUp();

  if (fInput) {
    if (!fProofOutputFileName.IsNull() &&
	!fProofOutputLocation.IsNull() &&
	fProofOutputDataset &&
	!fProofOutputArchive.IsNull()) {
      TProofOutputFile *zipProofFile = new TProofOutputFile(fProofOutputFileName.Data(),
							    "DROV",
							    fProofOutputLocation.Data());
      if (AliDebugLevel() > 0) zipProofFile->Dump();
      fOutput->Add(zipProofFile);
      TString fileList(fProofOutputArchive.Data());
      fileList.ReplaceAll(","," ");
      TString command;
#if ROOT_SVN_REVISION >= 30174
      command.Form("zip -n root %s/%s %s",zipProofFile->GetDir(kTRUE),zipProofFile->GetFileName(),fileList.Data());
#else
      command.Form("zip -n root %s/%s %s",zipProofFile->GetDir(),zipProofFile->GetFileName(),fileList.Data());
#endif
      AliInfo(Form("Executing: %s",command.Data()));
      gSystem->Exec(command.Data());
    }
  }
}
    
//_____________________________________________________________________________
void AliReconstruction::Terminate()
{
  // Create tags for the events in the ESD tree (the ESD tree is always present)
  // In case of empty events the tags will contain dummy values
  AliCodeTimerAuto("",0);

  // Do not call the ESD tag creator in case of PROOF-based reconstruction
  if (!fInput) {
    AliESDTagCreator *esdtagCreator = new AliESDTagCreator();
    esdtagCreator->CreateESDTags(fFirstEvent,fLastEvent,fGRPData, AliQAv1::Instance()->GetQA(), AliQAv1::Instance()->GetEventSpecies(), AliQAv1::kNDET, AliRecoParam::kNSpecies);
    delete esdtagCreator;
  }

  // Cleanup of CDB manager: cache and active storages!
  AliCDBManager::Instance()->ClearCache();
}

//_____________________________________________________________________________
Bool_t AliReconstruction::RunLocalEventReconstruction(const TString& detectors)
{
// run the local reconstruction

  static Int_t eventNr=0;
  AliCodeTimerAuto("",0)

  TString detStr = detectors;
  // execute HLT reconstruction first since other detector reconstruction
  // might depend on HLT data
  // key 'HLT' is removed from detStr by IsSelected
  if (IsSelected("HLT", detStr)) {
    AliReconstructor* reconstructor = GetReconstructor(kNDetectors-1);
    if (reconstructor) {
      // there is no AliLoader for HLT, see
      // https://savannah.cern.ch/bugs/?35473
      AliInfo("running reconstruction for HLT");
      if (fRawReader) {
	AliInfo("reconstructor->Reconstruct(fRawReader, NULL)");
        reconstructor->Reconstruct(fRawReader, NULL);
      } 
      else {
	AliInfo("reconstructor->Reconstruct(dummy, NULL)");
        TTree* dummy=NULL;
        reconstructor->Reconstruct(dummy, NULL);
      }
    }
    AliSysInfo::AddStamp(Form("LRecHLT_%d",eventNr), -1,1,eventNr);
  }

  AliInfo(Form("kNDetectors = %d",kNDetectors));

  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
    AliDebug(1, Form("Detector: %s", fgkDetectorName[iDet]));
    AliReconstructor* reconstructor = GetReconstructor(iDet);
    if (!reconstructor) continue;
    AliLoader* loader = fLoader[iDet];
    if (!loader) {
      AliWarning(Form("No loader is defined for %s!",fgkDetectorName[iDet]));
      continue;
    }
    // conversion of digits
    if (fRawReader && reconstructor->HasDigitConversion()) {
      AliInfo(Form("converting raw data digits into root objects for %s", 
		   fgkDetectorName[iDet]));
//      AliCodeTimerAuto(Form("converting raw data digits into root objects for %s", 
//                            fgkDetectorName[iDet]),0);
      loader->LoadDigits("update");
      loader->CleanDigits();
      loader->MakeDigitsContainer();
      TTree* digitsTree = loader->TreeD();
      reconstructor->ConvertDigits(fRawReader, digitsTree);
      loader->WriteDigits("OVERWRITE");
      loader->UnloadDigits();
    }
    // local reconstruction
    AliInfo(Form("running reconstruction for %s", fgkDetectorName[iDet]));
    //AliCodeTimerAuto(Form("running reconstruction for %s", fgkDetectorName[iDet]),0);
    AliDebug(1, "Loading Rec Points");
    loader->LoadRecPoints("update");
    AliDebug(1, "Cleaning Rec Points");
    loader->CleanRecPoints();
    AliDebug(1, "Making Rec Points Container");
    loader->MakeRecPointsContainer();
    TTree* clustersTree = loader->TreeR();
    if (fRawReader && !reconstructor->HasDigitConversion()) {
      reconstructor->Reconstruct(fRawReader, clustersTree);
    } 
    else {
      AliDebug(1, "Loading Digits");
      loader->LoadDigits("read");
      TTree* digitsTree = loader->TreeD();
      AliDebug(1, Form("Digits Tree = %p",digitsTree));
      if (!digitsTree) {
        AliError(Form("Can't get the %s digits tree", fgkDetectorName[iDet]));
        if (fStopOnError) 
          return kFALSE;
      } 
      else {
	AliDebug(1, "Digits -> Clusters");
        reconstructor->Reconstruct(digitsTree, clustersTree);
        if (fRunQA && IsInTasks(AliQAv1::kDIGITSR)) {
          AliQAManager::QAManager()->SetEventSpecie(fRecoParam.GetEventSpecie()) ;
          AliQAManager::QAManager()->RunOneEventInOneDetector(iDet, digitsTree) ; 
        }
      }
      loader->UnloadDigits();
    }
    if (fRunQA && IsInTasks(AliQAv1::kRECPOINTS)) {
      AliQAManager::QAManager()->SetEventSpecie(fRecoParam.GetEventSpecie()) ;
      AliQAManager::QAManager()->RunOneEventInOneDetector(iDet, clustersTree) ; 
    }
    loader->WriteRecPoints("OVERWRITE");
    loader->UnloadRecPoints();
    AliSysInfo::AddStamp(Form("LRec%s_%d",fgkDetectorName[iDet],eventNr), iDet,1,eventNr);
  }
  if (!IsSelected("CTP", detStr)) AliDebug(10,"No CTP");
  if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
    AliError(Form("the following detectors were not found: %s",
                  detStr.Data()));
    if (fStopOnError) 
      return kFALSE;
  }
  eventNr++;
  return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliReconstruction::RunSPDTrackleting(AliESDEvent*& esd)
{
// run the SPD trackleting (for SPD efficiency purpouses)

  AliCodeTimerAuto("",0)

  Double_t vtxPos[3] = {0, 0, 0};
  Double_t vtxErr[3] = {0.0, 0.0, 0.0};
/*
  TArrayF m
/
cVertex(3);
  // if(MC)
  if (fRunLoader->GetHeader() && fRunLoader->GetHeader()->GenEventHeader()) {
    fRunLoader->GetHeader()->GenEventHeader()->PrimaryVertex(mcVertex);
    for (Int_t i = 0; i < 3; i++) vtxPos[i] = mcVertex[i];
  }
*/
  const AliESDVertex *vertex = esd->GetVertex();
  if(!vertex){
    AliWarning("Vertex not found");
    return kFALSE;
  }
  vertex->GetXYZ(vtxPos);
  vertex->GetSigmaXYZ(vtxErr);
  if (fSPDTrackleter) {
    AliInfo("running the SPD Trackleter for Plane Efficiency Evaluation");

    // load clusters
    fLoader[0]->LoadRecPoints("read");
    TTree* tree = fLoader[0]->TreeR();
    if (!tree) {
      AliError("Can't get the ITS cluster tree");
      return kFALSE;
    }
    fSPDTrackleter->LoadClusters(tree);
    fSPDTrackleter->SetVertex(vtxPos, vtxErr);
    // run trackleting
    if (fSPDTrackleter->Clusters2Tracks(esd) != 0) {
      AliWarning("AliITSTrackleterSPDEff Clusters2Tracks failed");
     // fLoader[0]->UnloadRecPoints();
      return kFALSE;
    }
//fSPDTrackleter->UnloadRecPoints();
  } else {
    AliWarning("SPDTrackleter not available");
    return kFALSE;
  }
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::RunVertexFinder(AliESDEvent*& esd)
{
// run the barrel tracking

  AliCodeTimerAuto("",0)

  AliVertexer *vertexer = CreateVertexer();
  if (!vertexer) return kFALSE;

  AliInfo(Form("running the ITS vertex finder: %s",vertexer->ClassName()));
  AliESDVertex* vertex = NULL;
  if (fLoader[0]) {
    fLoader[0]->LoadRecPoints();
    TTree* cltree = fLoader[0]->TreeR();
    if (cltree) {
      if(fDiamondProfileSPD) vertexer->SetVtxStart(fDiamondProfileSPD);
      vertex = vertexer->FindVertexForCurrentEvent(cltree);
    }
    else {
      AliError("Can't get the ITS cluster tree");
    }
    fLoader[0]->UnloadRecPoints();
  }
  else {
    AliError("Can't get the ITS loader");
  }
  if(!vertex){
    AliWarning("Vertex not found");
    vertex = new AliESDVertex();
    vertex->SetName("default");
  }
  else {
    vertex->SetName("reconstructed");
  }

  Double_t vtxPos[3];
  Double_t vtxErr[3];
  vertex->GetXYZ(vtxPos);
  vertex->GetSigmaXYZ(vtxErr);

  esd->SetPrimaryVertexSPD(vertex);
  AliESDVertex *vpileup = NULL;
  Int_t novertices = 0;
  vpileup = vertexer->GetAllVertices(novertices);
  if(novertices>1){
    for (Int_t kk=1; kk<novertices; kk++)esd->AddPileupVertexSPD(&vpileup[kk]);
  }
  /*
  // if SPD multiplicity has been determined, it is stored in the ESD
  AliMultiplicity *mult = vertexer->GetMultiplicity();
  if(mult)esd->SetMultiplicity(mult);
  */
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (fTracker[iDet]) fTracker[iDet]->SetVertex(vtxPos, vtxErr);
  }  
  delete vertex;

  delete vertexer;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::RunMultFinder(AliESDEvent*& esd)
{
  // run the trackleter for multiplicity study

  AliCodeTimerAuto("",0)

  AliTrackleter *trackleter = CreateMultFinder();
  if (!trackleter) return kFALSE;

  AliInfo(Form("running the ITS multiplicity finder: %s",trackleter->ClassName()));

  if (fLoader[0]) {
    fLoader[0]->LoadRecPoints();
    TTree* cltree = fLoader[0]->TreeR();
    if (cltree) {
      trackleter->Reconstruct(esd,cltree);
      AliMultiplicity *mult = trackleter->GetMultiplicity();
      if(mult) esd->SetMultiplicity(mult);
    }
    else {
      AliError("Can't get the ITS cluster tree");
    }
    fLoader[0]->UnloadRecPoints();
  }
  else {
    AliError("Can't get the ITS loader");
  }

  delete trackleter;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::RunMuonTracking(AliESDEvent*& esd)
{
// run the muon spectrometer tracking

  AliCodeTimerAuto("",0)

  if (!fRunLoader) {
    AliError("Missing runLoader!");
    return kFALSE;
  }
  Int_t iDet =  GetDetIndex("MUON"); // for MUON

  // Get a pointer to the MUON reconstructor
  AliReconstructor *reconstructor = GetReconstructor(iDet);
  if (!reconstructor) return kFALSE;

  
  TString detName = fgkDetectorName[iDet];
  AliDebug(1, Form("%s tracking", detName.Data()));
  AliTracker *tracker =  reconstructor->CreateTracker();
  if (!tracker) {
    AliWarning(Form("couldn't create a tracker for %s", detName.Data()));
    return kFALSE;
  }
     
  // read RecPoints
  fLoader[iDet]->LoadRecPoints("read");  

  tracker->LoadClusters(fLoader[iDet]->TreeR());
  
  Int_t rv = tracker->Clusters2Tracks(esd);
  
  fLoader[iDet]->UnloadRecPoints();

  tracker->UnloadClusters();
  
  if ( rv )
  {
    AliError(Form("%s Clusters2Tracks failed", fgkDetectorName[iDet]));
    return kFALSE;
  }
  
  return kTRUE;
}


//_____________________________________________________________________________
Bool_t AliReconstruction::RunMFTTrackingMU(AliESDEvent*& esd) {

  // AU

  // run the global muon tracking: matching the MUON tracks with the MFT clusters

  AliCodeTimerAuto("",0)

  if (!fRunLoader) {
    AliError("Missing runLoader!");
    return kFALSE;
  }
  Int_t iDet = GetDetIndex("MFT"); // for MFT

  // Get a pointer to the MFT reconstructor
  AliReconstructor *reconstructor = GetReconstructor(iDet);
  if (!reconstructor) return kFALSE;
  
  TString detName = fgkDetectorName[iDet];
  AliDebug(1, Form("%s tracking for muon tracks", detName.Data()));
  AliTracker *tracker = reconstructor->CreateTracker();
  if (!tracker) {
    AliWarning(Form("couldn't create a Muon tracker for %s", detName.Data()));
    return kFALSE;
  }
     
  // read RecPoints
  fLoader[iDet]->LoadRecPoints("read");  

  tracker->LoadClusters(fLoader[iDet]->TreeR());
  
  Int_t rv = tracker->Clusters2Tracks(esd);
  
  fLoader[iDet]->UnloadRecPoints();

  tracker->UnloadClusters();
  
  if (rv) {
    AliError(Form("%s Clusters2Tracks failed", fgkDetectorName[iDet]));
    return kFALSE;
  }
  
  return kTRUE;

}

//_____________________________________________________________________________
Bool_t AliReconstruction::RunTracking(AliESDEvent*& esd,AliESDpid &PID)
{
// run the barrel tracking
  static Int_t eventNr=0;
  AliCodeTimerAuto("",0)

  AliInfo("running tracking");

  // Set the event info which is used
  // by the trackers in order to obtain
  // information about read-out detectors,
  // trigger etc.
  AliDebug(1, "Setting event info");
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (!fTracker[iDet]) continue;
    fTracker[iDet]->SetEventInfo(&fEventInfo);
  }

  //Fill the ESD with the T0 info (will be used by the TOF) 
  if (fReconstructor[11] && fLoader[11]) {
    fLoader[11]->LoadRecPoints("READ");
    TTree *treeR = fLoader[11]->TreeR();
    if (treeR) {
      GetReconstructor(11)->FillESD((TTree *)NULL,treeR,esd);
    }
  }

  // pass 1: TPC + ITS inwards
  for (Int_t iDet = 1; iDet >= 0; iDet--) {
    if (!fTracker[iDet]) continue;
    AliDebug(1, Form("%s tracking", fgkDetectorName[iDet]));

    // load clusters
    fLoader[iDet]->LoadRecPoints("read");
    AliSysInfo::AddStamp(Form("RLoadCluster%s_%d",fgkDetectorName[iDet],eventNr),iDet,1, eventNr);
    TTree* tree = fLoader[iDet]->TreeR();
    if (!tree) {
      AliError(Form("Can't get the %s cluster tree", fgkDetectorName[iDet]));
      return kFALSE;
    }
    fTracker[iDet]->LoadClusters(tree);
    AliSysInfo::AddStamp(Form("TLoadCluster%s_%d",fgkDetectorName[iDet],eventNr), iDet,2, eventNr);
    // run tracking
    if (fTracker[iDet]->Clusters2TracksHLT(esd, fhltesd) != 0) {
      AliError(Form("%s Clusters2Tracks failed", fgkDetectorName[iDet]));
      return kFALSE;
    }
    AliSysInfo::AddStamp(Form("Tracking0%s_%d",fgkDetectorName[iDet],eventNr), iDet,3,eventNr);
    // preliminary PID in TPC needed by the ITS tracker
    if (iDet == 1) {
      GetReconstructor(1)->FillESD((TTree*)NULL, (TTree*)NULL, esd);
      PID.MakePIDForTracking(esd);
      AliSysInfo::AddStamp(Form("MakePID0%s_%d",fgkDetectorName[iDet],eventNr), iDet,4,eventNr);
    } 
  }

  // pass 2: ALL backwards

  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (!fTracker[iDet]) continue;
    AliDebug(1, Form("%s back propagation", fgkDetectorName[iDet]));

    // load clusters
    if (iDet > 1) {     // all except ITS, TPC
      TTree* tree = NULL;
      fLoader[iDet]->LoadRecPoints("read");
      AliSysInfo::AddStamp(Form("RLoadCluster0%s_%d",fgkDetectorName[iDet],eventNr), iDet,1, eventNr);
      tree = fLoader[iDet]->TreeR();
      if (!tree) {
        AliError(Form("Can't get the %s cluster tree", fgkDetectorName[iDet]));
        return kFALSE;
      }
      fTracker[iDet]->LoadClusters(tree); 
      AliSysInfo::AddStamp(Form("TLoadCluster0%s_%d",fgkDetectorName[iDet],eventNr), iDet,2, eventNr);
    }

    // run tracking
    if (iDet>1) // start filling residuals for the "outer" detectors
      if (fRunGlobalQA) {
        AliTracker::SetFillResiduals(fRecoParam.GetEventSpecie(), kTRUE);     
        TObjArray ** arr = AliTracker::GetResidualsArray() ; 
	if (arr) {
	  AliRecoParam::EventSpecie_t es=fRecoParam.GetEventSpecie();
	  TObjArray * elem = arr[AliRecoParam::AConvert(es)];
	  if ( elem && (! elem->At(0)) ) {
	    AliQADataMaker *qadm = AliQAManager::QAManager()->GetQADataMaker(AliQAv1::kGLOBAL);
	    if (qadm) qadm->InitRecPointsForTracker() ; 
	  }
	}
	//	AliSysInfo::AddStamp(Form("QAInitResid%s_%d",fgkDetectorName[iDet],eventNr), iDet,0, eventNr);
      }
    if (fTracker[iDet]->PropagateBack(esd) != 0) {
      AliError(Form("%s backward propagation failed", fgkDetectorName[iDet]));
      //      return kFALSE;
    }
    AliSysInfo::AddStamp(Form("Tracking1%s_%d",fgkDetectorName[iDet],eventNr), iDet,3, eventNr);

    // unload clusters
    if (iDet > 3) {     // all except ITS, TPC, TRD and TOF
      fTracker[iDet]->UnloadClusters();
      fLoader[iDet]->UnloadRecPoints();
    }
    // updated PID in TPC needed by the ITS tracker -MI
    if (iDet == 1) {
      //GetReconstructor(1)->FillESD((TTree*)NULL, (TTree*)NULL, esd);
      //AliESDpid::MakePID(esd);
      PID.MakePIDForTracking(esd);
      AliSysInfo::AddStamp(Form("MakePID1%s_%d",fgkDetectorName[iDet],eventNr), iDet,4,eventNr);
    }

  }
  //stop filling residuals for the "outer" detectors
  if (fRunGlobalQA) AliTracker::SetFillResiduals(fRecoParam.GetEventSpecie(), kFALSE);     

  // pass 3: TRD + TPC + ITS refit inwards

  for (Int_t iDet = 2; iDet >= 0; iDet--) {
    if (!fTracker[iDet]) continue;
    AliDebug(1, Form("%s inward refit", fgkDetectorName[iDet]));

    // run tracking
    if (iDet<2) // start filling residuals for TPC and ITS
      if (fRunGlobalQA) {
        AliTracker::SetFillResiduals(fRecoParam.GetEventSpecie(), kTRUE);     
        TObjArray ** arr = AliTracker::GetResidualsArray() ; 
	if (arr) {
	  AliRecoParam::EventSpecie_t es=fRecoParam.GetEventSpecie();
	  TObjArray * elem = arr[AliRecoParam::AConvert(es)];
	  if ( elem && (! elem->At(0)) ) {
	    AliQADataMaker *qadm = AliQAManager::QAManager()->GetQADataMaker(AliQAv1::kGLOBAL);
	    if (qadm) qadm->InitRecPointsForTracker() ; 
	  }
	}
      }
    
    if (fTracker[iDet]->RefitInward(esd) != 0) {
      AliError(Form("%s inward refit failed", fgkDetectorName[iDet]));
      //      return kFALSE;
    }
    // run postprocessing
    if (fTracker[iDet]->PostProcess(esd) != 0) {
      AliError(Form("%s postprocessing failed", fgkDetectorName[iDet]));
      //      return kFALSE;
    }
    AliSysInfo::AddStamp(Form("Tracking2%s_%d",fgkDetectorName[iDet],eventNr), iDet,3, eventNr);
  }

  // write space-points to the ESD in case alignment data output
  // is switched on
  if (fWriteAlignmentData) {
    WriteAlignmentData(esd);
    AliSysInfo::AddStamp(Form("WrtAlignData_%d",eventNr), 0,0, eventNr);
  }
  
  for (Int_t iDet = 3; iDet >= 0; iDet--) {
    if (!fTracker[iDet]) continue;
    // unload clusters
    fTracker[iDet]->UnloadClusters();
    AliSysInfo::AddStamp(Form("TUnloadCluster%s_%d",fgkDetectorName[iDet],eventNr), iDet,4, eventNr);
    fLoader[iDet]->UnloadRecPoints();
    AliSysInfo::AddStamp(Form("RUnloadCluster%s_%d",fgkDetectorName[iDet],eventNr), iDet,5, eventNr);
  }
  // stop filling residuals for TPC and ITS
  if (fRunGlobalQA) AliTracker::SetFillResiduals(fRecoParam.GetEventSpecie(), kFALSE);     

  eventNr++;
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::CleanESD(AliESDEvent *esd){
  //
  // Remove the data which are not needed for the physics analysis.
  //

  Int_t nTracks=esd->GetNumberOfTracks();
  Int_t nV0s=esd->GetNumberOfV0s();
  AliInfo
  (Form("Number of ESD tracks and V0s before cleaning: %d %d",nTracks,nV0s));

  Float_t cleanPars[]={fV0DCAmax,fV0CsPmin,fDmax,fZmax};
  Bool_t rc=esd->Clean(cleanPars);

  nTracks=esd->GetNumberOfTracks();
  nV0s=esd->GetNumberOfV0s();
  AliInfo
  (Form("Number of ESD tracks and V0s after cleaning %d %d",nTracks,nV0s));

  return rc;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::FillESD(AliESDEvent*& esd, const TString& detectors)
{
// fill the event summary data

  AliCodeTimerAuto("",0)
    static Int_t eventNr=0; 
  TString detStr = detectors;
  
  AliSysInfo::AddStamp(Form("FillESDb%d",eventNr), -19,-19, eventNr);
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
  if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
    AliReconstructor* reconstructor = GetReconstructor(iDet);
    if (!reconstructor) continue;
    AliDebug(1, Form("filling ESD for %s", fgkDetectorName[iDet]));
    TTree* clustersTree = NULL;
    if (fLoader[iDet]) {
      fLoader[iDet]->LoadRecPoints("read");
      clustersTree = fLoader[iDet]->TreeR();
      if (!clustersTree) {
	AliError(Form("Can't get the %s clusters tree", 
		      fgkDetectorName[iDet]));
	if (fStopOnError) return kFALSE;
      }
    }
    if (fRawReader && !reconstructor->HasDigitConversion()) {
      reconstructor->FillESD(fRawReader, clustersTree, esd);
    } else {
      TTree* digitsTree = NULL;
      if (fLoader[iDet]) {
	fLoader[iDet]->LoadDigits("read");
	digitsTree = fLoader[iDet]->TreeD();
	if (!digitsTree) {
	  AliError(Form("Can't get the %s digits tree", 
			fgkDetectorName[iDet]));
	  if (fStopOnError) return kFALSE;
	}
      }
      reconstructor->FillESD(digitsTree, clustersTree, esd);
      if (fLoader[iDet]) fLoader[iDet]->UnloadDigits();
    }
    if (fLoader[iDet]) {
      fLoader[iDet]->UnloadRecPoints();
    }
  }
  
  if (!IsSelected("CTP", detStr)) AliDebug(10,"No CTP");
  if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
    AliError(Form("the following detectors were not found: %s", 
                  detStr.Data()));
    if (fStopOnError) return kFALSE;
  }
  AliSysInfo::AddStamp(Form("FillESDe%d",eventNr), -20,-20, eventNr);
  eventNr++;
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::FillTriggerESD(AliESDEvent*& esd)
{
  // Reads the trigger decision which is
  // stored in Trigger.root file and fills
  // the corresponding esd entries

  AliCodeTimerAuto("",0)
  
  AliInfo("Filling trigger information into the ESD");

  if (fRawReader) {
    AliCTPRawStream input(fRawReader);
    if (!input.Next()) {
      AliWarning("No valid CTP (trigger) DDL raw data is found ! The trigger info is taken from the event header!");
    }
    else {
      if (esd->GetTriggerMask() != input.GetClassMask())
	AliError(Form("Invalid trigger pattern found in CTP raw-data: %llx %llx",
		      input.GetClassMask(),esd->GetTriggerMask()));
      if (esd->GetTriggerMaskNext50() != input.GetClassMaskNext50())
	AliError(Form("Invalid trigger pattern found in CTP raw-data Next50: %llx %llx",
		      input.GetClassMaskNext50(),esd->GetTriggerMaskNext50()));
      if (esd->GetOrbitNumber() != input.GetOrbitID())
	AliError(Form("Invalid orbit id found in CTP raw-data: %x %x",
		      input.GetOrbitID(),esd->GetOrbitNumber()));
      if (esd->GetBunchCrossNumber() != input.GetBCID())
	AliError(Form("Invalid bunch-crossing id found in CTP raw-data: %x %x",
		      input.GetBCID(),esd->GetBunchCrossNumber()));
      AliESDHeader* esdheader = esd->GetHeader();
      esdheader->SetL0TriggerInputs(input.GetL0Inputs());
      esdheader->SetL1TriggerInputs(input.GetL1Inputs());
      esdheader->SetL2TriggerInputs(input.GetL2Inputs());
      // IR
      //      UInt_t orbit=input.GetOrbitID();
      for(Int_t i=0 ; i<input.GetNIRs() ; i++ ) {
	esdheader->AddTriggerIR(input.GetIR(i));
      }
       AliCentralTrigger* rlCTP = fRunLoader->GetTrigger();
       if (rlCTP) {
	 rlCTP->SetL0TriggerInputs(input.GetL0Inputs());
	 rlCTP->SetL1TriggerInputs(input.GetL1Inputs());
	 rlCTP->SetL2TriggerInputs(input.GetL2Inputs());
       }
    }
    if (fIsNewRunLoader) fRunLoader->TreeCT()->Fill();
  }
  return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliReconstruction::FillTriggerScalers(AliESDEvent*& esd)
{
  //Scalers
  //fRunScalers->Print();
  if(fRunScalers && fRunScalers->CheckRunScalers()){
     AliTimeStamp* timestamp = new AliTimeStamp(esd->GetOrbitNumber(), esd->GetPeriodNumber(), esd->GetBunchCrossNumber());
     //AliTimeStamp* timestamp = new AliTimeStamp(10308000, 0, (ULong64_t)486238);
     AliESDHeader* esdheader = fesd->GetHeader();
     for(Int_t i=0;i<50;i++){
          if((1ull<<i) & esd->GetTriggerMask()){
          AliTriggerScalersESD* scalesd = fRunScalers->GetScalersForEventClass( timestamp, i+1);
          if(scalesd)esdheader->SetTriggerScalersRecord(scalesd);
        }
     }
     for(Int_t i=0;i<50;i++){
          if((1ull<<i) & esd->GetTriggerMaskNext50()){
          AliTriggerScalersESD* scalesd = fRunScalers->GetScalersForEventClass( timestamp, i+51);
          if(scalesd)esdheader->SetTriggerScalersRecord(scalesd);
        }
     }
     const AliTriggerScalersRecordESD* scalrecEvent = fRunScalers->GetScalersDeltaForEvent( timestamp);
     const AliTriggerScalersRecordESD* scalrecRun = fRunScalers->GetScalersDeltaForRun();
     if (scalrecEvent) esdheader->SetTriggerScalersDeltaEvent(scalrecEvent);
     if (scalrecRun) esdheader->SetTriggerScalersDeltaRun(scalrecRun);
  }
  return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliReconstruction::FillRawEventHeaderESD(AliESDEvent*& esd)
{
  // 
  // Filling information from RawReader Header
  // 

  if (!fRawReader) return kFALSE;

  AliInfo("Filling information from RawReader Header");

  esd->SetBunchCrossNumber(fRawReader->GetBCID());
  esd->SetOrbitNumber(fRawReader->GetOrbitID());
  esd->SetPeriodNumber(fRawReader->GetPeriod());

  esd->SetTimeStamp(fRawReader->GetTimestamp());  
  esd->SetEventType(fRawReader->GetType());

  return kTRUE;
}


//_____________________________________________________________________________
Bool_t AliReconstruction::IsSelected(TString detName, TString& detectors) const
{
// check whether detName is contained in detectors
// if yes, it is removed from detectors

  // check if all detectors are selected
  if ((detectors.CompareTo("ALL") == 0) ||
      detectors.BeginsWith("ALL ") ||
      detectors.EndsWith(" ALL") ||
      detectors.Contains(" ALL ")) {
    detectors = "ALL";
    return kTRUE;
  }

  // search for the given detector
  Bool_t result = kFALSE;
  if ((detectors.CompareTo(detName) == 0) ||
      detectors.BeginsWith(detName+" ") ||
      detectors.EndsWith(" "+detName) ||
      detectors.Contains(" "+detName+" ")) {
    detectors.ReplaceAll(detName, "");
    result = kTRUE;
  }

  // clean up the detectors string
  while (detectors.Contains("  ")) detectors.ReplaceAll("  ", " ");
  while (detectors.BeginsWith(" ")) detectors.Remove(0, 1);
  while (detectors.EndsWith(" ")) detectors.Remove(detectors.Length()-1, 1);

  return result;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::InitRunLoader()
{
// get or create the run loader

  if (gAlice) delete gAlice;
  gAlice = NULL;

  TFile *gafile = TFile::Open(fGAliceFileName.Data());
  //  if (!gSystem->AccessPathName(fGAliceFileName.Data())) { // galice.root exists
  if (gafile) { // galice.root exists
    gafile->Close();
    delete gafile;

    // load all base libraries to get the loader classes
    TString libs = gSystem->GetLibraries();
    for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      TString detName = fgkDetectorName[iDet];
      if (libs.Contains("lib" + detName + "base.so")) continue;
      gSystem->Load("lib" + detName + "base.so");
    }
    fRunLoader = AliRunLoader::Open(fGAliceFileName.Data());
    if (!fRunLoader) {
      AliError(Form("no run loader found in file %s", fGAliceFileName.Data()));
      CleanUp();
      return kFALSE;
    }

    fRunLoader->CdGAFile();
    fRunLoader->LoadgAlice();

    //PH This is a temporary fix to give access to the kinematics
    //PH that is needed for the labels of ITS clusters
    fRunLoader->LoadHeader();
    fRunLoader->LoadKinematics();

  } else {               // galice.root does not exist
    if (!fRawReader) {
      AliError(Form("the file %s does not exist", fGAliceFileName.Data()));
    }
    fRunLoader = AliRunLoader::Open(fGAliceFileName.Data(),
				    AliConfig::GetDefaultEventFolderName(),
				    "recreate");
    if (!fRunLoader) {
      AliError(Form("could not create run loader in file %s", 
		    fGAliceFileName.Data()));
      CleanUp();
      return kFALSE;
    }
    fIsNewRunLoader = kTRUE;
    fRunLoader->MakeTree("E");
    fRunLoader->MakeTree("GG");

    if (fNumberOfEventsPerFile > 0)
      fRunLoader->SetNumberOfEventsPerFile(fNumberOfEventsPerFile);
    else
      fRunLoader->SetNumberOfEventsPerFile((UInt_t)-1);
  }

  return kTRUE;
}

//_____________________________________________________________________________
AliReconstructor* AliReconstruction::GetReconstructor(Int_t iDet)
{
// get the reconstructor object and the loader for a detector

  if (fReconstructor[iDet]) {
    if (fRecoParam.GetDetRecoParamArray(iDet) && !AliReconstructor::GetRecoParam(iDet)) {
      const AliDetectorRecoParam *par = fRecoParam.GetDetRecoParam(iDet);
      fReconstructor[iDet]->SetRecoParam(par);
      fReconstructor[iDet]->SetRunInfo(fRunInfo);
    }
    return fReconstructor[iDet];
  }

  // load the reconstructor object
  TPluginManager* pluginManager = gROOT->GetPluginManager();
  TString detName = fgkDetectorName[iDet];
  TString recName = "Ali" + detName + "Reconstructor";

  if (!fIsNewRunLoader && !fRunLoader->GetLoader(detName+"Loader") && (detName != "HLT")) return NULL;

  AliReconstructor* reconstructor = NULL;
  // first check if a plugin is defined for the reconstructor
  TPluginHandler* pluginHandler = 
    pluginManager->FindHandler("AliReconstructor", detName);
  // if not, add a plugin for it
  if (!pluginHandler) {
    AliDebug(1, Form("defining plugin for %s", recName.Data()));
    TString libs = gSystem->GetLibraries();
    if (libs.Contains("lib" + detName + "base.so") ||
	(gSystem->Load("lib" + detName + "base.so") >= 0)) {
      pluginManager->AddHandler("AliReconstructor", detName, 
				recName, detName + "rec", recName + "()");
    } else {
      pluginManager->AddHandler("AliReconstructor", detName, 
				recName, detName, recName + "()");
    }
    pluginHandler = pluginManager->FindHandler("AliReconstructor", detName);
  }
  if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) {
    reconstructor = (AliReconstructor*) pluginHandler->ExecPlugin(0);
  }

   // check if the upgrade reconstructor should be used instead of the standard one
  if(fUpgradeMask[iDet]) {
    if(reconstructor) delete reconstructor;
    TClass *cl = new TClass(Form("Ali%sUpgradeReconstructor",fgkDetectorName[iDet]));
    reconstructor = (AliReconstructor*)(cl->New());
   }

  if (reconstructor) {
    TObject* obj = fOptions.FindObject(detName.Data());
    if (obj) reconstructor->SetOption(obj->GetTitle());
    reconstructor->SetRunInfo(fRunInfo);
    reconstructor->SetHLTESD(fhltesd);
    reconstructor->Init();
    fReconstructor[iDet] = reconstructor;
  }

  // get or create the loader
  if (detName != "HLT") {
    fLoader[iDet] = fRunLoader->GetLoader(detName + "Loader");
    if (!fLoader[iDet]) {
      AliConfig::Instance()
	->CreateDetectorFolders(fRunLoader->GetEventFolder(), 
				detName, detName);
      // first check if a plugin is defined for the loader
      pluginHandler = 
	pluginManager->FindHandler("AliLoader", detName);
      // if not, add a plugin for it
      if (!pluginHandler) {
	TString loaderName = "Ali" + detName + "Loader";
	AliDebug(1, Form("defining plugin for %s", loaderName.Data()));
	pluginManager->AddHandler("AliLoader", detName, 
				  loaderName, detName + "base", 
				  loaderName + "(const char*, TFolder*)");
	pluginHandler = pluginManager->FindHandler("AliLoader", detName);
      }
      if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) {
	fLoader[iDet] = 
	  (AliLoader*) pluginHandler->ExecPlugin(2, detName.Data(), 
						 fRunLoader->GetEventFolder());
      }
      if (!fLoader[iDet]) {   // use default loader
	fLoader[iDet] = new AliLoader(detName, fRunLoader->GetEventFolder());
      }
      if (!fLoader[iDet]) {
	AliWarning(Form("couldn't get loader for %s", detName.Data()));
	if (fStopOnError) return NULL;
      } else {
	fRunLoader->AddLoader(fLoader[iDet]);
	fRunLoader->CdGAFile();
	if (gFile && !gFile->IsWritable()) gFile->ReOpen("UPDATE");
	fRunLoader->Write(0, TObject::kOverwrite);
      }
    }
  }
      
  if (fRecoParam.GetDetRecoParamArray(iDet) && !AliReconstructor::GetRecoParam(iDet)) {
    const AliDetectorRecoParam *par = fRecoParam.GetDetRecoParam(iDet);
    if (reconstructor) {
      reconstructor->SetRecoParam(par);
      reconstructor->SetRunInfo(fRunInfo);
    }
  }
  return reconstructor;
}

//_____________________________________________________________________________
AliVertexer* AliReconstruction::CreateVertexer()
{
// create the vertexer
// Please note that the caller is the owner of the
// vertexer

  AliVertexer* vertexer = NULL;
  AliReconstructor* itsReconstructor = GetReconstructor(0);
  if (itsReconstructor && ((fRunLocalReconstruction.Contains("ITS")) || 
			   fRunTracking.Contains("ITS") || fFillESD.Contains("ITS") )) {
    vertexer = itsReconstructor->CreateVertexer();
  }
  if (!vertexer) {
    AliWarning("couldn't create a vertexer for ITS");
  }

  return vertexer;
}

//_____________________________________________________________________________
AliTrackleter* AliReconstruction::CreateMultFinder()
{
// create the ITS trackleter for mult. estimation
// Please note that the caller is the owner of the
// trackleter

  AliTrackleter* trackleter = NULL;
  AliReconstructor* itsReconstructor = GetReconstructor(0);
  if (itsReconstructor && ((fRunLocalReconstruction.Contains("ITS")) || 
			   fRunTracking.Contains("ITS") || fFillESD.Contains("ITS") )) {
    trackleter = itsReconstructor->CreateMultFinder();
  }
  else {
    AliWarning("ITS is not in reconstruction, switching off RunMultFinder");
    fRunMultFinder = kFALSE;
  }

  return trackleter;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::CreateTrackers(const TString& detectors)
{
// create the trackers
	AliInfo("Creating trackers");

  TString detStr = detectors;
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
    AliReconstructor* reconstructor = GetReconstructor(iDet);
    if (!reconstructor) continue;
    TString detName = fgkDetectorName[iDet];
    if (detName == "MUON") {
      fRunMuonTracking = kTRUE;
      continue;
    }
    if (detName == "MFT") {           // AU    
      fRunMFTTrackingMU = kTRUE;      // AU
      continue;			      // AU
    }                                 // AU

    fTracker[iDet] = reconstructor->CreateTracker();
    if (!fTracker[iDet] && (iDet < 7)) {
      AliWarning(Form("couldn't create a tracker for %s", detName.Data()));
      if (fStopOnError) return kFALSE;
    }
    AliSysInfo::AddStamp(Form("LTracker%s",fgkDetectorName[iDet]), iDet,0);
  }

  return kTRUE;
}

//_____________________________________________________________________________
void AliReconstruction::CleanUp()
{
// delete trackers and the run loader and close and delete the file
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (fReconstructor[iDet]) fReconstructor[iDet]->SetRecoParam(NULL);
    delete fReconstructor[iDet];
    fReconstructor[iDet] = NULL;
    fLoader[iDet] = NULL;
    delete fTracker[iDet];
    fTracker[iDet] = NULL;
  }

  delete fRunInfo;
  fRunInfo = NULL;

  delete fSPDTrackleter;
  fSPDTrackleter = NULL;

  delete ftVertexer;
  ftVertexer = NULL;
  
  delete fRunLoader;
  fRunLoader = NULL;
  delete fRawReader;
  fRawReader = NULL;
  delete fParentRawReader;
  fParentRawReader=NULL;

  delete fESDpid;
  fESDpid = NULL;

  if (ffile) {
    ffile->Close();
    delete ffile;
    ffile = NULL;
  }

  if (AliQAManager::QAManager())
    AliQAManager::QAManager()->ShowQA() ; 
  //  AliQAManager::Destroy() ;
  delete fAnalysis; 
  fAnalysis = NULL;
}

void AliReconstruction::WriteAlignmentData(AliESDEvent* esd)
{
  // Write space-points which are then used in the alignment procedures
  // For the moment only ITS, TPC, TRD and TOF

  Int_t ntracks = esd->GetNumberOfTracks();
  for (Int_t itrack = 0; itrack < ntracks; itrack++)
    {
      AliESDtrack *track = esd->GetTrack(itrack);
      Int_t nsp = 0;
      Int_t idx[200];
      for (Int_t i=0; i<200; ++i) idx[i] = -1; //PH avoid uninitialized values
      for (Int_t iDet = 5; iDet >= 0; iDet--) {// TOF, TRD, TPC, ITS clusters
          nsp += (iDet==GetDetIndex("TRD")) ? track->GetTRDntracklets():track->GetNcls(iDet);

          if (iDet==GetDetIndex("ITS")) { // ITS "extra" clusters
             track->GetClusters(iDet,idx);
             for (Int_t i=6; i<12; i++) if(idx[i] >= 0) nsp++;
          }  
      }

      if (nsp) {
	AliTrackPointArray *sp = new AliTrackPointArray(nsp);
	track->SetTrackPointArray(sp);
	Int_t isptrack = 0;
	for (Int_t iDet = 5; iDet >= 0; iDet--) {
	  AliTracker *tracker = fTracker[iDet];
	  if (!tracker) continue;
	  Int_t nspdet = (iDet==GetDetIndex("TRD")) ? track->GetTRDtracklets(idx):track->GetClusters(iDet,idx);

	  if (iDet==GetDetIndex("ITS")) // ITS "extra" clusters             
             for (Int_t i=6; i<12; i++) if(idx[i] >= 0) nspdet++;

	  if (nspdet <= 0) continue;
	  AliTrackPoint p;
	  Int_t isp = 0;
	  Int_t isp2 = 0;
	  while (isp2 < nspdet) {
	    Bool_t isvalid=kTRUE;

            Int_t index=idx[isp++];
            if (index < 0) continue;

            TString dets = fgkDetectorName[iDet];
            if ((fUseTrackingErrorsForAlignment.CompareTo(dets) == 0) ||
            fUseTrackingErrorsForAlignment.BeginsWith(dets+" ") ||
            fUseTrackingErrorsForAlignment.EndsWith(" "+dets) ||
            fUseTrackingErrorsForAlignment.Contains(" "+dets+" ")) {
              isvalid = tracker->GetTrackPointTrackingError(index,p,track);
	    } else {
	      isvalid = tracker->GetTrackPoint(index,p); 
	    } 
	    isp2++;
	    if (!isvalid) continue;
	    if (iDet==GetDetIndex("ITS") && (isp-1)>=6) p.SetExtra();
	    sp->AddPoint(isptrack,&p); isptrack++;
	  }
	}	
      }
    }
}

//_____________________________________________________________________________
void AliReconstruction::FillRawDataErrorLog(Int_t iEvent, AliESDEvent* esd)
{
  // The method reads the raw-data error log
  // accumulated within the rawReader.
  // It extracts the raw-data errors related to
  // the current event and stores them into
  // a TClonesArray inside the esd object.

  if (!fRawReader) return;

  for(Int_t i = 0; i < fRawReader->GetNumberOfErrorLogs(); i++) {

    AliRawDataErrorLog *log = fRawReader->GetErrorLog(i);
    if (!log) continue;
    if (iEvent != log->GetEventNumber()) continue;

    esd->AddRawDataErrorLog(log);
  }

}

//_____________________________________________________________________________
// void AliReconstruction::CheckQA()
// {
// check the QA of SIM for this run and remove the detectors 
// with status Fatal
  
//	TString newRunLocalReconstruction ; 
//	TString newRunTracking ;
//	TString newFillESD ;
//	 
//	for (Int_t iDet = 0; iDet < AliQAv1::kNDET; iDet++) {
//		TString detName(AliQAv1::GetDetName(iDet)) ;
//		AliQAv1 * qa = AliQAv1::Instance(AliQAv1::DETECTORINDEX_t(iDet)) ;       
//      if ( qa->IsSet(AliQAv1::DETECTORINDEX_t(iDet), AliQAv1::kSIM, specie, AliQAv1::kFATAL)) {
//        AliInfo(Form("QA status for %s %s in Hits and/or SDIGITS  and/or Digits was Fatal; No reconstruction performed", 
//                   detName.Data(), AliRecoParam::GetEventSpecieName(es))) ;
//			} else {
//			if ( fRunLocalReconstruction.Contains(AliQAv1::GetDetName(iDet)) || 
//					fRunLocalReconstruction.Contains("ALL") )  {
//				newRunLocalReconstruction += detName ; 
//				newRunLocalReconstruction += " " ; 			
//			}
//			if ( fRunTracking.Contains(AliQAv1::GetDetName(iDet)) || 
//					fRunTracking.Contains("ALL") )  {
//				newRunTracking += detName ; 
//				newRunTracking += " " ; 			
//			}
//			if ( fFillESD.Contains(AliQAv1::GetDetName(iDet)) || 
//					fFillESD.Contains("ALL") )  {
//				newFillESD += detName ; 
//				newFillESD += " " ; 			
//			}
//		}
//	}
//	fRunLocalReconstruction = newRunLocalReconstruction ; 
//	fRunTracking            = newRunTracking ; 
//	fFillESD                = newFillESD ; 
// }

//_____________________________________________________________________________
Int_t AliReconstruction::GetDetIndex(const char* detector)
{
  // return the detector index corresponding to detector
  Int_t index = -1 ; 
  for (index = 0; index < kNDetectors ; index++) {
    if ( strcmp(detector, fgkDetectorName[index]) == 0 )
	break ; 
  }	
  return index ; 
}
//_____________________________________________________________________________
Bool_t AliReconstruction::FinishPlaneEff() {
 //
 // Here execute all the necessary operationis, at the end of the tracking phase,
 // in case that evaluation of PlaneEfficiencies was required for some detector.
 // E.g., write into a DataBase file the PlaneEfficiency which have been evaluated.
 //
 // This Preliminary version works only FOR ITS !!!!!
 // other detectors (TOF,TRD, etc. have to develop their specific codes)
 //
 //  Input: none
 //  Return: kTRUE if all operations have been done properly, kFALSE otherwise
 //
 Bool_t ret=kFALSE;
 TString detStr = fLoadCDB;
 //for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
 for (Int_t iDet = 0; iDet < 1; iDet++) { // for the time being only ITS
   if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
   if(fTracker[iDet] && fTracker[iDet]->GetPlaneEff()) {
      AliPlaneEff *planeeff=fTracker[iDet]->GetPlaneEff();
      TString name=planeeff->GetName();
      name+=".root";
      TFile* pefile = TFile::Open(name, "RECREATE");
      ret=(Bool_t)planeeff->Write();
      pefile->Close();
      if(planeeff->GetCreateHistos()) {
        TString hname=planeeff->GetName();
        hname+="Histo.root";
        ret*=planeeff->WriteHistosToFile(hname,"RECREATE");
      }
   }
   if(fSPDTrackleter) {
     AliPlaneEff *planeeff=fSPDTrackleter->GetPlaneEff();
      TString name="AliITSPlaneEffSPDtracklet.root";
      TFile* pefile = TFile::Open(name, "RECREATE");
      ret=(Bool_t)planeeff->Write();
      pefile->Close();
      AliESDEvent *dummy=NULL;
      ret=(Bool_t)fSPDTrackleter->PostProcess(dummy); // take care of writing other files
   }
 }
 return ret;
}
//_____________________________________________________________________________
Bool_t AliReconstruction::InitPlaneEff() {
//
 // Here execute all the necessary operations, before of the tracking phase,
 // for the evaluation of PlaneEfficiencies, in case required for some detectors.
 // E.g., read from a DataBase file a first evaluation of the PlaneEfficiency
 // which should be updated/recalculated.
 //
 // This Preliminary version will work only FOR ITS !!!!!
 // other detectors (TOF,TRD, etc. have to develop their specific codes)
 //
 //  Input: none
 //  Return: kTRUE if all operations have been done properly, kFALSE otherwise
 //

  fSPDTrackleter = NULL;
  TString detStr = fLoadCDB;
  if (IsSelected(fgkDetectorName[0], detStr)) {
    AliReconstructor* itsReconstructor = GetReconstructor(0);
    if (itsReconstructor) {
      fSPDTrackleter = itsReconstructor->CreateTrackleter(); // this is NULL unless required in RecoParam
    }
    if (fSPDTrackleter) {
      AliInfo("Trackleter for SPD has been created");
    }
  }
 return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::InitAliEVE()
{
  // This method should be called only in case 
  // AliReconstruction is run
  // within the alieve environment.
  // It will initialize AliEVE in a way
  // so that it can visualize event processed
  // by AliReconstruction.
  // The return flag shows whenever the
  // AliEVE initialization was successful or not.

  TString macroStr(getenv("ALIEVE_ONLINE_MACRO"));

  if (macroStr.IsNull())
    macroStr.Form("%s/EVE/macros/alieve_online.C",gSystem->ExpandPathName("$ALICE_ROOT"));

  AliInfo(Form("Loading AliEVE macro: %s",macroStr.Data()));

  if (gROOT->LoadMacro(macroStr.Data()) != 0) return kFALSE;

  gROOT->ProcessLine("if (!AliEveEventManager::GetMaster()){new AliEveEventManager();AliEveEventManager::GetMaster()->AddNewEventCommand(\"alieve_online_on_new_event()\");gEve->AddEvent(AliEveEventManager::GetMaster());};");
  gROOT->ProcessLine("alieve_online_init()");

  return kTRUE;
}
  
//_____________________________________________________________________________
void AliReconstruction::RunAliEVE()
{
  // Runs AliEVE visualisation of
  // the current event.
  // Should be executed only after
  // successful initialization of AliEVE.

  AliInfo("Running AliEVE...");
  gROOT->ProcessLine(Form("AliEveEventManager::GetMaster()->SetEvent((AliRunLoader*)%p,(AliRawReader*)%p,(AliESDEvent*)%p,(AliESDfriend*)%p);",fRunLoader,fRawReader,fesd,fesdf));
  gSystem->Run();
}

//_____________________________________________________________________________
Bool_t AliReconstruction::SetRunQA(TString detAndAction) 
{
	// Allows to run QA for a selected set of detectors
	// and a selected set of tasks among RAWS, DIGITSR, RECPOINTS and ESDS
	// all selected detectors run the same selected tasks
	
	if (!detAndAction.Contains(":")) {
		AliError( Form("%s is a wrong syntax, use \"DetectorList:ActionList\" \n", detAndAction.Data()) ) ;
		fRunQA = kFALSE ;
		return kFALSE ; 		
	}
	Int_t colon = detAndAction.Index(":") ; 
	fQADetectors = detAndAction(0, colon) ; 
	fQATasks   = detAndAction(colon+1, detAndAction.Sizeof() ) ; 
	if (fQATasks.Contains("ALL") ) {
		fQATasks = Form("%d %d %d %d", AliQAv1::kRAWS, AliQAv1::kDIGITSR, AliQAv1::kRECPOINTS, AliQAv1::kESDS) ; 
	} else {
		fQATasks.ToUpper() ; 
		TString tempo("") ; 
		if ( fQATasks.Contains("RAW") ) 
			tempo = Form("%d ", AliQAv1::kRAWS) ; 
		if ( fQATasks.Contains("DIGIT") ) 
			tempo += Form("%d ", AliQAv1::kDIGITSR) ; 
		if ( fQATasks.Contains("RECPOINT") ) 
			tempo += Form("%d ", AliQAv1::kRECPOINTS) ; 
		if ( fQATasks.Contains("ESD") ) 
			tempo += Form("%d ", AliQAv1::kESDS) ; 
		fQATasks = tempo ; 
		if (fQATasks.IsNull()) {
			AliInfo("No QA requested\n")  ;
			fRunQA = kFALSE ;
			return kTRUE ; 
		}
	}	
	TString tempo(fQATasks) ; 
	tempo.ReplaceAll(Form("%d", AliQAv1::kRAWS), AliQAv1::GetTaskName(AliQAv1::kRAWS)) 	;
	tempo.ReplaceAll(Form("%d", AliQAv1::kDIGITSR), AliQAv1::GetTaskName(AliQAv1::kDIGITSR)) ;	
	tempo.ReplaceAll(Form("%d", AliQAv1::kRECPOINTS), AliQAv1::GetTaskName(AliQAv1::kRECPOINTS)) ;	
	tempo.ReplaceAll(Form("%d", AliQAv1::kESDS), AliQAv1::GetTaskName(AliQAv1::kESDS)) ; 	
	AliInfo( Form("QA will be done on \"%s\" for \"%s\"\n", fQADetectors.Data(), tempo.Data()) ) ;  
	fRunQA = kTRUE ;
	return kTRUE; 
} 

//_____________________________________________________________________________
Bool_t AliReconstruction::InitRecoParams() 
{
  // The method accesses OCDB and retrieves all
  // the available reco-param objects from there.

  Bool_t isOK = kTRUE;

  if (fRecoParam.GetDetRecoParamArray(kNDetectors)) {
    AliInfo("Using custom GRP reconstruction parameters");
  }
  else {
    AliInfo("Loading GRP reconstruction parameter objects");

    AliCDBPath path("GRP","Calib","RecoParam");
    AliCDBEntry *entry=AliCDBManager::Instance()->Get(path.GetPath());
    if(!entry){ 
      AliWarning("Couldn't find GRP RecoParam entry in OCDB");
      isOK = kFALSE;
    }
    else {
      TObject *recoParamObj = entry->GetObject();
      if (dynamic_cast<TObjArray*>(recoParamObj)) {
	// GRP has a normal TobjArray of AliDetectorRecoParam objects
	// Registering them in AliRecoParam
	fRecoParam.AddDetRecoParamArray(kNDetectors,dynamic_cast<TObjArray*>(recoParamObj));
      }
      else if (dynamic_cast<AliDetectorRecoParam*>(recoParamObj)) {
	// GRP has only onse set of reco parameters
	// Registering it in AliRecoParam
	AliInfo("Single set of GRP reconstruction parameters found");
	dynamic_cast<AliDetectorRecoParam*>(recoParamObj)->SetAsDefault();
	fRecoParam.AddDetRecoParam(kNDetectors,dynamic_cast<AliDetectorRecoParam*>(recoParamObj));
      }
      else {
	AliError("No valid GRP RecoParam object found in the OCDB");
	isOK = kFALSE;
      }
      entry->SetOwner(0);
    }
  }

  TString detStr = fLoadCDB;
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {

    if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;

    if (fRecoParam.GetDetRecoParamArray(iDet)) {
      AliInfo(Form("Using custom reconstruction parameters for detector %s",fgkDetectorName[iDet]));
      continue;
    }

    AliInfo(Form("Loading reconstruction parameter objects for detector %s",fgkDetectorName[iDet]));
  
    AliCDBPath path(fgkDetectorName[iDet],"Calib","RecoParam");
    AliCDBEntry *entry=AliCDBManager::Instance()->Get(path.GetPath());
    if(!entry){ 
      AliWarning(Form("Couldn't find RecoParam entry in OCDB for detector %s",fgkDetectorName[iDet]));
      isOK = kFALSE;
    }
    else {
      TObject *recoParamObj = entry->GetObject();
      if (dynamic_cast<TObjArray*>(recoParamObj)) {
	// The detector has a normal TobjArray of AliDetectorRecoParam objects
	// Registering them in AliRecoParam
	fRecoParam.AddDetRecoParamArray(iDet,dynamic_cast<TObjArray*>(recoParamObj));
      }
      else if (dynamic_cast<AliDetectorRecoParam*>(recoParamObj)) {
	// The detector has only onse set of reco parameters
	// Registering it in AliRecoParam
	AliInfo(Form("Single set of reconstruction parameters found for detector %s",fgkDetectorName[iDet]));
	dynamic_cast<AliDetectorRecoParam*>(recoParamObj)->SetAsDefault();
	fRecoParam.AddDetRecoParam(iDet,dynamic_cast<AliDetectorRecoParam*>(recoParamObj));
      }
      else {
	AliError(Form("No valid RecoParam object found in the OCDB for detector %s",fgkDetectorName[iDet]));
	isOK = kFALSE;
      }
      entry->SetOwner(0);
      //      FIX ME: We have to disable the unloading of reco-param CDB
      //      entries because QA framework is using them. Has to be fix in
      //      a way that the QA takes the objects already constructed in
      //      this method.
      //      AliCDBManager::Instance()->UnloadFromCache(path.GetPath());
    }
  }

  if (AliDebugLevel() > 0) fRecoParam.Print();

  return isOK;
}

//_____________________________________________________________________________
Bool_t AliReconstruction::GetEventInfo() 
{
  // Fill the event info object
  // ...
  AliCodeTimerAuto("",0)

  AliCentralTrigger *aCTP = NULL;
  if (fRawReader) {
    fEventInfo.SetEventType(fRawReader->GetType());

    ULong64_t mask = fRawReader->GetClassMask();
    ULong64_t maskNext50 = fRawReader->GetClassMaskNext50();
    fEventInfo.SetTriggerMask(mask);
    fEventInfo.SetTriggerMaskNext50(maskNext50);
    UInt_t clmask = fRawReader->GetDetectorPattern()[0];
    fEventInfo.SetTriggerCluster(AliDAQ::ListOfTriggeredDetectors(clmask));

    aCTP = new AliCentralTrigger();
    TString configstr("");
    if (!aCTP->LoadConfiguration(configstr)) { // Load CTP config from OCDB
      AliError("No trigger configuration found in OCDB! The trigger configuration information will not be used!");
      delete aCTP;
      return kFALSE;
    }
    aCTP->SetClassMask(mask);
    aCTP->SetClusterMask(clmask);

    if (fRunLoader) {
      AliCentralTrigger* rlCTP = fRunLoader->GetTrigger();
      if (rlCTP) {
	rlCTP->SetClassMask(mask);
	rlCTP->SetClusterMask(clmask);
      }
    }
  }
  else {
    fEventInfo.SetEventType(AliRawEventHeaderBase::kPhysicsEvent);

    if (fRunLoader && (!fRunLoader->LoadTrigger())) {
      aCTP = fRunLoader->GetTrigger();
      fEventInfo.SetTriggerMask(aCTP->GetClassMask());
      fEventInfo.SetTriggerMaskNext50(aCTP->GetClassMaskNext50());
      // get inputs from actp - just get
      AliESDHeader* esdheader = fesd->GetHeader();
      esdheader->SetL0TriggerInputs(aCTP->GetL0TriggerInputs());
      esdheader->SetL1TriggerInputs(aCTP->GetL1TriggerInputs());
      esdheader->SetL2TriggerInputs(aCTP->GetL2TriggerInputs());
      fEventInfo.SetTriggerCluster(AliDAQ::ListOfTriggeredDetectors(aCTP->GetClusterMask()));
    }
    else {
      if (fStopOnMissingTriggerFile) AliFatal("No trigger can be loaded! Stopping reconstruction!");
      AliWarning("No trigger can be loaded! The trigger information will not be used!");
      return kFALSE;
    }
  }

  AliTriggerConfiguration *config = aCTP->GetConfiguration();
  if (!config) {
    AliError("No trigger configuration has been found! The trigger configuration information will not be used!");
    if (fRawReader) delete aCTP;
    return kFALSE;
  }

  // Load trigger aliases and declare the trigger classes included in aliases
  //PH Why do we do it in each event and not only once in the beginning of the chunk??
  //PH Temporary fix for #99725: AliReconstruction::GetEventInfo bug
  fDeclTriggerClasses.Clear();
  AliCDBEntry * entry = AliCDBManager::Instance()->Get("GRP/CTP/Aliases");
  if (entry) {
    THashList * lst = dynamic_cast<THashList*>(entry->GetObject());
    if (lst) {
      lst->Sort(kSortDescending); // to avoid problems with substrungs
      if (fRawReader) fRawReader->LoadTriggerAlias(lst);
      // Now declare all the triggers present in the aliases
      TIter iter(lst);
      TNamed *nmd = 0;
      while((nmd = dynamic_cast<TNamed*>(iter.Next()))){
	fDeclTriggerClasses += " ";
	fDeclTriggerClasses += nmd->GetName();
      }
    }
    else {
      AliError("Cannot cast the object with trigger aliases to THashList!");
    }
  }
  else {
    AliError("No OCDB ebtry for the trigger aliases!");
  }
  // Load trigger classes for this run
  UChar_t clustmask = 0;
  TString trclasses;
  ULong64_t trmask = fEventInfo.GetTriggerMask();
  ULong64_t trmaskNext50 = fEventInfo.GetTriggerMaskNext50();
  const TObjArray& classesArray = config->GetClasses();
  Int_t nclasses = classesArray.GetEntriesFast();
  for( Int_t iclass=0; iclass < nclasses; iclass++ ) {
    AliTriggerClass* trclass = (AliTriggerClass*)classesArray.At(iclass);
    if (trclass && trclass->GetMask()>0) {
      Int_t trindex = TMath::Nint(TMath::Log2(trclass->GetMask()));
      if (fesd) fesd->SetTriggerClass(trclass->GetName(),trindex);
      if (fRawReader) fRawReader->LoadTriggerClass(trclass->GetName(),trindex);
      if (trmask & (1ull << trindex)) {
	trclasses += " ";
	trclasses += trclass->GetName();
	trclasses += " ";
	clustmask |= trclass->GetCluster()->GetClusterMask();
      }
    }
    if (trclass && trclass->GetMaskNext50()>0) {
      Int_t trindex = TMath::Nint(TMath::Log2(trclass->GetMaskNext50()))+50;
      if (fesd) fesd->SetTriggerClass(trclass->GetName(),trindex);
      if (fRawReader) fRawReader->LoadTriggerClass(trclass->GetName(),trindex);
      if (trmaskNext50 & (1ull << (trindex-50))) {
	trclasses += " ";
	trclasses += trclass->GetName();
	trclasses += " ";
	clustmask |= trclass->GetCluster()->GetClusterMask();
      }
    }
  }
  fEventInfo.SetTriggerClasses(trclasses);
  // Now put the declared trigger classes (not present in the run)
  // to 0/false in the event selection
  if (!fDeclTriggerClasses.IsNull()) {
    TObjArray *tokens = fDeclTriggerClasses.Tokenize(" ");
    Int_t ntokens = tokens->GetEntriesFast();
    for (Int_t itoken = 0; itoken < ntokens; ++itoken) {
      if (fRawReader) fRawReader->LoadTriggerClass((((TObjString*)tokens->At(itoken))->String()).Data(),-1);
    }
    delete tokens;
  }

  // Write names of active trigger inputs in ESD Header
  const TObjArray& inputsArray = config->GetInputs(); 
  Int_t ninputs = inputsArray.GetEntriesFast();
  for( Int_t iinput=0; iinput < ninputs; iinput++ ) {
    AliTriggerInput* trginput = (AliTriggerInput*)inputsArray.At(iinput);
    if (trginput && trginput->GetMask()>0) {
      Int_t inputIndex = (Int_t)TMath::Nint(TMath::Log2(trginput->GetMask()));
      AliESDHeader* headeresd = 0x0;
      if (fesd) headeresd = fesd->GetHeader();
      if (headeresd) {
	Int_t trglevel = (Int_t)trginput->GetLevel();
	if (trglevel == 0) headeresd->SetActiveTriggerInputs(trginput->GetInputName(), inputIndex);
	if (trglevel == 1) headeresd->SetActiveTriggerInputs(trginput->GetInputName(), inputIndex+24);
	if (trglevel == 2) headeresd->SetActiveTriggerInputs(trginput->GetInputName(), inputIndex+48);
      }
    }
  }

  // Set the information in ESD
  if (fesd) {
    fesd->SetTriggerMask(trmask);
    fesd->SetTriggerMaskNext50(trmaskNext50);
    fesd->SetTriggerCluster(clustmask);
  }

  if (!aCTP->CheckTriggeredDetectors()) {
    if (fRawReader) delete aCTP;
    return kFALSE;
  }    

  if (fRawReader) delete aCTP;

  // We have to fill also the HLT decision here!!
  // ...

  return kTRUE;
}

const char *AliReconstruction::MatchDetectorList(const char *detectorList, UInt_t detectorMask)
{
  // Match the detector list found in the rec.C or the default 'ALL'
  // to the list found in the GRP (stored there by the shuttle PP which
  // gets the information from ECS)
  static TString resultList;
  TString detList = detectorList;

  resultList = "";

  for(Int_t iDet = 0; iDet < (AliDAQ::kNDetectors-1); iDet++) {
    if ((detectorMask >> iDet) & 0x1) {
      TString det = AliDAQ::OfflineModuleName(iDet);
      if ((detList.CompareTo("ALL") == 0) ||
	  ((detList.BeginsWith("ALL ") ||
	    detList.EndsWith(" ALL") ||
	    detList.Contains(" ALL ")) &&
	   !(detList.BeginsWith("-"+det+" ") ||
	     detList.EndsWith(" -"+det) ||
	     detList.Contains(" -"+det+" "))) ||
	  (detList.CompareTo(det) == 0) ||
	  detList.BeginsWith(det+" ") ||
	  detList.EndsWith(" "+det) ||
	  detList.Contains( " "+det+" " )) {
	if (!resultList.EndsWith(det + " ")) {
	  resultList += det;
	  resultList += " ";
	}
      }	       
    }
  }

  // HLT
  if ((detectorMask >> AliDAQ::kHLTId) & 0x1) {
    TString hltDet = AliDAQ::OfflineModuleName(AliDAQ::kNDetectors-1);
    if ((detList.CompareTo("ALL") == 0) ||
	((detList.BeginsWith("ALL ") ||
	  detList.EndsWith(" ALL") ||
	  detList.Contains(" ALL ")) &&
	 !(detList.BeginsWith("-"+hltDet+" ") ||
	   detList.EndsWith(" -"+hltDet) ||
	   detList.Contains(" -"+hltDet+" "))) ||
	(detList.CompareTo(hltDet) == 0) ||
	detList.BeginsWith(hltDet+" ") ||
	detList.EndsWith(" "+hltDet) ||
	detList.Contains( " "+hltDet+" " )) {
      resultList += hltDet;
    }
  }

  return resultList.Data();

}

//______________________________________________________________________________
void AliReconstruction::Abort(const char *method, EAbort what)
{
  // Abort processing. If what = kAbortProcess, the Process() loop will be
  // aborted. If what = kAbortFile, the current file in a chain will be
  // aborted and the processing will continue with the next file, if there
  // is no next file then Process() will be aborted. Abort() can also  be
  // called from Begin(), SlaveBegin(), Init() and Notify(). After abort
  // the SlaveTerminate() and Terminate() are always called. The abort flag
  // can be checked in these methods using GetAbort().
  //
  // The method is overwritten in AliReconstruction for better handling of
  // reco specific errors 

  if (!fStopOnError) return;

  CleanUp();

  TString whyMess = method;
  whyMess += " failed! Aborting...";

  AliError(whyMess.Data());

  fAbort = what;
  TString mess = "Abort";
  if (fAbort == kAbortProcess)
    mess = "AbortProcess";
  else if (fAbort == kAbortFile)
    mess = "AbortFile";

  Info(mess.Data(), "%s", whyMess.Data());
}

//______________________________________________________________________________
Bool_t AliReconstruction::ProcessEvent(void* event)
{
  // Method that is used in case the event loop
  // is steered from outside, for example by AMORE
  // 'event' is a pointer to the DATE event in the memory

  if (fRawReader) delete fRawReader;
  fRawReader = new AliRawReaderDate(event);
  fStatus = ProcessEvent(fRunLoader->GetNumberOfEvents());  
  delete fRawReader;
  fRawReader = NULL;

  return fStatus;
}

//______________________________________________________________________________
Bool_t AliReconstruction::ParseOutput()
{
  // The method parses the output file
  // location string in order to steer
  // properly the selector

  TPMERegexp re1("(\\w+\\.zip#\\w+\\.root):([,*\\w+\\.root,*]+)@dataset://(\\w++)");
  TPMERegexp re2("(\\w+\\.root)?@?dataset://(\\w++)");

  if (re1.Match(fESDOutput) == 4) {
    // root archive with output files stored and regustered
    // in proof dataset
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE",re1[1].Data()));
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_LOCATION",re1[3].Data()));
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_DATASET",""));
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_ARCHIVE",re1[2].Data()));
    AliInfo(Form("%s files will be stored within %s in dataset %s",
		 re1[2].Data(),
		 re1[1].Data(),
		 re1[3].Data()));
  }
  else if (re2.Match(fESDOutput) == 3) {
    // output file stored and registered
    // in proof dataset
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE",(re2[1].IsNull()) ? "AliESDs.root" : re2[1].Data()));
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_LOCATION",re2[2].Data()));
    gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_DATASET",""));
    AliInfo(Form("%s will be stored in dataset %s",
		 (re2[1].IsNull()) ? "AliESDs.root" : re2[1].Data(),
		 re2[2].Data()));
  }
  else {
    if (fESDOutput.IsNull()) {
      // Output location not given.
      // Assuming xrootd has been already started and
      // the output file has to be sent back
      // to the client machine
      TString esdUrl(Form("root://%s/%s/",
			  TUrl(gSystem->HostName()).GetHostFQDN(),
			  gSystem->pwd()));
      gProof->AddInput(new TNamed("PROOF_OUTPUTFILE","AliESDs.root"));
      gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_LOCATION",esdUrl.Data()));
      AliInfo(Form("AliESDs.root will be stored in %s",
		   esdUrl.Data()));
    }
    else {
      // User specified an output location.
      // Ones has just to parse it here
      TUrl outputUrl(fESDOutput.Data());
      TString outputFile(gSystem->BaseName(outputUrl.GetFile()));
      gProof->AddInput(new TNamed("PROOF_OUTPUTFILE",outputFile.IsNull() ? "AliESDs.root" : outputFile.Data()));
      TString outputLocation(outputUrl.GetUrl());
      outputLocation.ReplaceAll(outputFile.Data(),"");
      gProof->AddInput(new TNamed("PROOF_OUTPUTFILE_LOCATION",outputLocation.Data()));
      AliInfo(Form("%s will be stored in %s",
		   outputFile.IsNull() ? "AliESDs.root" : outputFile.Data(),
		   outputLocation.Data()));
    }
  }

  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliReconstruction::IsHighPt() const {
  // Selection of events containing "high" pT tracks
  // If at least one track is found within 1.5 and 100 GeV (pT)
  // that was reconstructed by both ITS and TPC, the event is accepted

  // Track cuts
  const Double_t pTmin = 1.5;
  const Double_t pTmax = 100;
  ULong_t mask = 0;
  mask |= (AliESDtrack::kITSrefit);
  mask |= (AliESDtrack::kTPCrefit);
  const Double_t pTminCosmic = 5.;
  const Double_t pTmaxCosmic = 100;
  ULong_t maskCosmic = 0;
  Int_t cosmicCount=0;
  maskCosmic |= (AliESDtrack::kTPCrefit);

  Bool_t isOK = kFALSE;

  if (fesd && fesd->GetEventType()==AliRawEventHeaderBase::kPhysicsEvent) {
    // Check if this ia a physics event (code 7)
    Int_t ntrk = fesd->GetNumberOfTracks();
    for (Int_t itrk=0; itrk<ntrk; ++itrk) {
	  
      AliESDtrack * trk = fesd->GetTrack(itrk);
      if (trk 
	  && trk->Pt() > pTmin 
	  && trk->Pt() < pTmax
	  && (trk->GetStatus() & mask) == mask ) {
	
	isOK = kTRUE;
	break;
      }
      if (trk 
	  && trk->GetInnerParam()
	  && trk->GetInnerParam()->Pt() > pTminCosmic 
	  && trk->GetInnerParam()->Pt() < pTmaxCosmic
	  && (trk->GetStatus() & maskCosmic) == maskCosmic ) {
	
	cosmicCount++;
	break;
      }
    }
    if (cosmicCount>1) isOK=kTRUE;
  }
  return isOK;
}

//______________________________________________________________________________
Bool_t AliReconstruction::IsCosmicOrCalibSpecie() const {
  // Select cosmic or calibration events

  Bool_t isOK = kFALSE;

  if (fesd && fesd->GetEventType()==AliRawEventHeaderBase::kPhysicsEvent) {
      // Check if this ia a physics event (code 7)
      
      UInt_t specie = fesd->GetEventSpecie();
      if (specie==AliRecoParam::kCosmic || specie==AliRecoParam::kCalib) {
	isOK = kTRUE;
      }
  }
  return isOK;
}

//______________________________________________________________________________
void AliReconstruction::WriteESDfriend() {
  // Fill the ESD friend in the tree. The required fraction of ESD friends is stored
  // in fFractionFriends. We select events where we store the ESD friends according
  // to the following algorithm:
  // 1. Store all Cosmic or Calibration events within the required fraction
  // 2. Sample "high Pt" events within the remaining fraction after step 1.
  // 3. Sample randomly events if we still have remaining slot

  fNall++;
  Bool_t isSelected = kFALSE;
  //
  // Store all friends for B field OFF 
  if (TMath::Abs(AliTrackerBase::GetBz())<0.5) isSelected=kTRUE;

  if (IsCosmicOrCalibSpecie()) { // Selection of calib or cosmic events
    fNspecie++;

    isSelected = kTRUE;
    fSspecie++;
  }
  
  Double_t remainingFraction = fFractionFriends;
  remainingFraction -= ((Double_t)(fSspecie)/(Double_t)(fNall));
  
  if (IsHighPt())  { // Selection of "high Pt" events
    fNhighPt++;
    Double_t curentHighPtFraction = ((Double_t)(fNhighPt+1))/((Double_t)(fNall+1));
    // "Bayesian" estimate supposing that without events all the events are of the required type
    
    if (!isSelected) {
      Double_t rnd = gRandom->Rndm()*curentHighPtFraction;
      if (rnd<remainingFraction) {
	isSelected = kTRUE;
	fShighPt++;
      }
    }
  }
  remainingFraction -= ((Double_t)(fShighPt)/(Double_t)(fNall));
  
  // Random selection to fill the remaining fraction (if any)
  if (!isSelected) {
    Double_t rnd = gRandom->Rndm();
    if (rnd<remainingFraction) {	
      isSelected = kTRUE;
    }
  }
  
  if (!isSelected) {
    fesdf->~AliESDfriend();
    new (fesdf) AliESDfriend(); // Reset...
    fesdf->SetSkipBit(kTRUE);
  }
  //
  Long64_t nbf = ftreeF->Fill();
  if (fTreeBuffSize>0 && ftreeF->GetAutoFlush()<0 && (fMemCountESDF += nbf)>fTreeBuffSize ) { // default limit is still not reached
    nbf = ftreeF->GetZipBytes();
    if (nbf>0) nbf = -nbf;
    else       nbf = ftreeF->GetEntries();
    ftreeF->SetAutoFlush(nbf);
    AliInfo(Form("Calling ftreeF->SetAutoFlush(%lld) | W:%lld T:%lld Z:%lld",
		 nbf,fMemCountESDF,ftreeF->GetTotBytes(),ftreeF->GetZipBytes()));        
  }
  
}

//_________________________________________________________________
void AliReconstruction::DeleteDigits(const TString& detectors)
{
  // delete requested digit files produced at current event
  static int iEvent = 0;
  if (detectors.IsNull()) return;
  TString detStr = detectors;
  AliInfo(Form("Deleting Digits: %s",detectors.Data()));

  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if(!IsSelected(fgkDetectorName[iDet], detStr)) continue;
    unlink(Form("%s.Digits.root",fgkDetectorName[iDet]));
  }
  AliSysInfo::AddStamp(Form("DelDigits_%d",iEvent), 0,0,iEvent);
  iEvent++;
}

//_________________________________________________________________
void AliReconstruction::DeleteRecPoints(const TString& detectors)
{
  // delete requested recpoint files produced at current event
  static int iEvent = 0;
  if (detectors.IsNull()) return;
  TString detStr = detectors;
  AliInfo(Form("Deleting Recpoints: %s",detectors.Data()));
  //
  for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if(!IsSelected(fgkDetectorName[iDet], detStr)) continue;
    unlink(Form("%s.RecPoints.root",fgkDetectorName[iDet]));
  }
  AliSysInfo::AddStamp(Form("DelRecPoints_%d",iEvent), 0,0,iEvent);
  iEvent++;
}

//_________________________________________________________________
void AliReconstruction::SetStopOnResourcesExcess(Int_t vRSS,Int_t vVMEM)
{
  // require checking the resources left and stopping on excess
  // if 0  : no check is done
  // if >0 : stop reconstruction if exceeds this value
  // if <0 : use as margin to system limits
  //
  const int kKB2MB = 1024;
  const int kInfMem = 9999999;
  //
  struct rlimit r;
  int pgSize = getpagesize();
  //
  if (vRSS>0) {
    fMaxRSS = vRSS;
    AliInfo(Form("Setting max. RSS usage to user value %d MB",fMaxRSS));
  }
  else if (vRSS<0) {
    getrlimit(RLIMIT_RSS,&r);
    fMaxRSS = r.rlim_max==RLIM_INFINITY ? kInfMem : int(r.rlim_max*pgSize/kKB2MB/kKB2MB) + vRSS;
    AliInfo(Form("Setting max. RSS usage to system hard limit %d%s MB (%d margin)",fMaxRSS,r.rlim_max==RLIM_INFINITY ? "(inf)":"",-vRSS));
  }
  else {AliInfo("No check on RSS memory usage will be applied");}
  //
  if (vVMEM>0) {
    fMaxVMEM = vVMEM;
    AliInfo(Form("Setting max. VMEM usage to user value %d MB",fMaxVMEM));
  }
  else if (vVMEM<0) {
    getrlimit(RLIMIT_AS,&r);
    fMaxVMEM = r.rlim_max==RLIM_INFINITY ? kInfMem : int(r.rlim_max*pgSize/kKB2MB/kKB2MB) + vVMEM;
    AliInfo(Form("Setting max. VMEM usage to system hard limit %d%s MB (%d margin)",fMaxVMEM,r.rlim_max==RLIM_INFINITY ? "(inf)":"",-vVMEM));
  }
  else {AliInfo("No check on RSS memory usage will be applied");}
  //  
}

//_________________________________________________________________
Bool_t AliReconstruction::HasEnoughResources(int ev)
{
  // check if process consumed more than allowed resources
  const int kKB2MB = 1024;
  Bool_t res = kTRUE;
  if (!fMaxRSS && !fMaxVMEM) return res;
  //
  ProcInfo_t procInfo;
  gSystem->GetProcInfo(&procInfo);
  if (procInfo.fMemResident/kKB2MB > fMaxRSS)  res = kFALSE;
  if (procInfo.fMemVirtual/kKB2MB  > fMaxVMEM) res = kFALSE;  
  //
  if (!res) {
    AliInfo(Form("Job exceeded allowed limits: RSS:%d (%d) VMEM:%d (%d), will stop",
		 int(procInfo.fMemResident/kKB2MB),fMaxRSS,
		 int(procInfo.fMemVirtual/kKB2MB) ,fMaxVMEM));
    //
    unlink(Form("%s",fgkStopEvFName));
    ofstream outfile(fgkStopEvFName);
    outfile << ev << std::endl;
    outfile.close();
    fStopped = kTRUE;
  }
  return res;
}

Bool_t AliReconstruction::HasNextEventAfter(Int_t eventId)
{
	 return ( (eventId < fRunLoader->GetNumberOfEvents()) ||
	   (fRawReader && fRawReader->NextEvent()) );
}

//_________________________________________________________________
void AliReconstruction::CheckRecoCDBvsSimuCDB()
{
  // if some CDB entries must be the same in the simulation
  // and reconstruction, check here
  int nent = fCheckRecoCDBvsSimuCDB.GetEntriesFast();
  AliInfo(Form("Check %d entries for matching between sim and rec",nent));
  //
  // get simulation CDB
  fRunLoader->CdGAFile();
  TMap*  cdbMapSim  = (TMap*)gDirectory->Get("cdbMap");
  TList* cdbListSim = (TList*)gDirectory->Get("cdbList");
  if (!(cdbMapSim && cdbListSim)) {
    AliInfo(Form("No CDBMap/List found in %s, nothing to check",fGAliceFileName.Data()));
    return;
  }
  // read the requested objects to make sure they will appear in the reco list
  for (Int_t i=0;i<nent;i++) {
    TNamed* cdbent = (TNamed*) fCheckRecoCDBvsSimuCDB[i];
    if (!cdbent) continue;
    AliCDBManager::Instance()->Get(cdbent->GetName());
  }
  // get default path for simulation
  TPair* pair;
  TObjString* stro;
  pair = (TPair*)cdbMapSim->FindObject("default");
  if (!pair) {AliFatal("Did not find default storage used for simulations"); return;}
  TString defSimStore = ((TObjString*)pair->Value())->GetString();
  RectifyCDBurl(defSimStore);
  //
  // get reconstruction CDB
  const TMap *cdbMapRec = AliCDBManager::Instance()->GetStorageMap();	 
  const TList *cdbListRec = AliCDBManager::Instance()->GetRetrievedIds();
  //
  // get default path for reconstruction
  pair = (TPair*)cdbMapRec->FindObject("default");
  if (!pair) {AliFatal("Did not find default storage used for reconstruction"); return;}
  TString defRecStore = ((TObjString*)pair->Value())->GetString();
  RectifyCDBurl(defRecStore);
  //
  for (Int_t i=0;i<nent;i++) {
    TNamed* cdbent = (TNamed*) fCheckRecoCDBvsSimuCDB[i];
    if (!cdbent) continue;
    //
    AliInfo(Form("#%d Checking %s",i,cdbent->GetName()));
    //
    // find cdbID used for sim
    TString idSim="",storSim="";
    TIter nextSim(cdbListSim);
    while ((stro=(TObjString*)nextSim())) {
      if (stro->GetString().Contains(cdbent->GetName())) {
	idSim = stro->GetString();
	break;
      }
    }    
    // find the storage used for sim
    // check in the simuCDB special paths
    pair = (TPair*)cdbMapSim->FindObject(cdbent->GetName());
    if (pair) { // specific path is used
      storSim = ((TObjString*)pair->Value())->GetString();
      RectifyCDBurl(storSim);
    }
    else storSim = defSimStore;  // default storage list is used
    //
    if (!idSim.IsNull()) AliInfo(Form("Sim. used %s from %s",idSim.Data(), storSim.Data()));
    else                 AliInfo("Sim. did not use this object");
    //
    // find cdbID used for rec
    TString idRec="",storRec="";
    TIter nextRec(cdbListRec);
    AliCDBId* id=0;
    while ((id=(AliCDBId*)nextRec())) {
      idRec = id->ToString();
      if (idRec.Contains(cdbent->GetName())) break;
      idRec="";
    }
    //
    // find storage used for the rec
    pair = (TPair*)cdbMapRec->FindObject(cdbent->GetName());
    if (pair) {  // specific path is used
      storRec = ((TObjString*)pair->Value())->GetString();
      RectifyCDBurl(storRec);
    }
    else storRec = defRecStore; // default storage list is used
    //
    if (!idRec.IsNull()) AliInfo(Form("Rec. used %s from %s",idRec.Data(), storRec.Data()));
    else                 AliInfo("Rec. did not use this object");
    //
    if (!idSim.IsNull() && !idRec.IsNull() && ((idSim!=idRec) || (storSim!=storRec)) ) 
      AliFatal("Different objects were used in sim and rec");
  }
  
}

//_________________________________________________________
void AliReconstruction::RectifyCDBurl(TString& url)
{
  // TBD RS
  // remove everything but the url
  TString sbs;
  if (!(sbs=url("\\?User=[^?]*")).IsNull())                url.ReplaceAll(sbs,"");
  if (!(sbs=url("\\?DBFolder=[^?]*")).IsNull())            url.ReplaceAll("?DB","");
  if (!(sbs=url("\\?SE=[^?]*")).IsNull())                  url.ReplaceAll(sbs,"");
  if (!(sbs=url("\\?CacheFolder=[^?]*")).IsNull())         url.ReplaceAll(sbs,"");
  if (!(sbs=url("\\?OperateDisconnected=[^?]*")).IsNull()) url.ReplaceAll(sbs,"");
  if (!(sbs=url("\\?CacheSize=[^?]*")).IsNull())           url.ReplaceAll(sbs,"");  
  if (!(sbs=url("\\?CleanupInterval=[^?]*")).IsNull())     url.ReplaceAll(sbs,"");  
  Bool_t slash=kFALSE,space=kFALSE;
  while ( (slash=url.EndsWith("/")) || (space=url.EndsWith(" ")) ) {
    if (slash) url = url.Strip(TString::kTrailing,'/');
    if (space) url = url.Strip(TString::kTrailing,' ');
  }
  //url.ToLower();
  //
}
 AliReconstruction.cxx:1
 AliReconstruction.cxx:2
 AliReconstruction.cxx:3
 AliReconstruction.cxx:4
 AliReconstruction.cxx:5
 AliReconstruction.cxx:6
 AliReconstruction.cxx:7
 AliReconstruction.cxx:8
 AliReconstruction.cxx:9
 AliReconstruction.cxx:10
 AliReconstruction.cxx:11
 AliReconstruction.cxx:12
 AliReconstruction.cxx:13
 AliReconstruction.cxx:14
 AliReconstruction.cxx:15
 AliReconstruction.cxx:16
 AliReconstruction.cxx:17
 AliReconstruction.cxx:18
 AliReconstruction.cxx:19
 AliReconstruction.cxx:20
 AliReconstruction.cxx:21
 AliReconstruction.cxx:22
 AliReconstruction.cxx:23
 AliReconstruction.cxx:24
 AliReconstruction.cxx:25
 AliReconstruction.cxx:26
 AliReconstruction.cxx:27
 AliReconstruction.cxx:28
 AliReconstruction.cxx:29
 AliReconstruction.cxx:30
 AliReconstruction.cxx:31
 AliReconstruction.cxx:32
 AliReconstruction.cxx:33
 AliReconstruction.cxx:34
 AliReconstruction.cxx:35
 AliReconstruction.cxx:36
 AliReconstruction.cxx:37
 AliReconstruction.cxx:38
 AliReconstruction.cxx:39
 AliReconstruction.cxx:40
 AliReconstruction.cxx:41
 AliReconstruction.cxx:42
 AliReconstruction.cxx:43
 AliReconstruction.cxx:44
 AliReconstruction.cxx:45
 AliReconstruction.cxx:46
 AliReconstruction.cxx:47
 AliReconstruction.cxx:48
 AliReconstruction.cxx:49
 AliReconstruction.cxx:50
 AliReconstruction.cxx:51
 AliReconstruction.cxx:52
 AliReconstruction.cxx:53
 AliReconstruction.cxx:54
 AliReconstruction.cxx:55
 AliReconstruction.cxx:56
 AliReconstruction.cxx:57
 AliReconstruction.cxx:58
 AliReconstruction.cxx:59
 AliReconstruction.cxx:60
 AliReconstruction.cxx:61
 AliReconstruction.cxx:62
 AliReconstruction.cxx:63
 AliReconstruction.cxx:64
 AliReconstruction.cxx:65
 AliReconstruction.cxx:66
 AliReconstruction.cxx:67
 AliReconstruction.cxx:68
 AliReconstruction.cxx:69
 AliReconstruction.cxx:70
 AliReconstruction.cxx:71
 AliReconstruction.cxx:72
 AliReconstruction.cxx:73
 AliReconstruction.cxx:74
 AliReconstruction.cxx:75
 AliReconstruction.cxx:76
 AliReconstruction.cxx:77
 AliReconstruction.cxx:78
 AliReconstruction.cxx:79
 AliReconstruction.cxx:80
 AliReconstruction.cxx:81
 AliReconstruction.cxx:82
 AliReconstruction.cxx:83
 AliReconstruction.cxx:84
 AliReconstruction.cxx:85
 AliReconstruction.cxx:86
 AliReconstruction.cxx:87
 AliReconstruction.cxx:88
 AliReconstruction.cxx:89
 AliReconstruction.cxx:90
 AliReconstruction.cxx:91
 AliReconstruction.cxx:92
 AliReconstruction.cxx:93
 AliReconstruction.cxx:94
 AliReconstruction.cxx:95
 AliReconstruction.cxx:96
 AliReconstruction.cxx:97
 AliReconstruction.cxx:98
 AliReconstruction.cxx:99
 AliReconstruction.cxx:100
 AliReconstruction.cxx:101
 AliReconstruction.cxx:102
 AliReconstruction.cxx:103
 AliReconstruction.cxx:104
 AliReconstruction.cxx:105
 AliReconstruction.cxx:106
 AliReconstruction.cxx:107
 AliReconstruction.cxx:108
 AliReconstruction.cxx:109
 AliReconstruction.cxx:110
 AliReconstruction.cxx:111
 AliReconstruction.cxx:112
 AliReconstruction.cxx:113
 AliReconstruction.cxx:114
 AliReconstruction.cxx:115
 AliReconstruction.cxx:116
 AliReconstruction.cxx:117
 AliReconstruction.cxx:118
 AliReconstruction.cxx:119
 AliReconstruction.cxx:120
 AliReconstruction.cxx:121
 AliReconstruction.cxx:122
 AliReconstruction.cxx:123
 AliReconstruction.cxx:124
 AliReconstruction.cxx:125
 AliReconstruction.cxx:126
 AliReconstruction.cxx:127
 AliReconstruction.cxx:128
 AliReconstruction.cxx:129
 AliReconstruction.cxx:130
 AliReconstruction.cxx:131
 AliReconstruction.cxx:132
 AliReconstruction.cxx:133
 AliReconstruction.cxx:134
 AliReconstruction.cxx:135
 AliReconstruction.cxx:136
 AliReconstruction.cxx:137
 AliReconstruction.cxx:138
 AliReconstruction.cxx:139
 AliReconstruction.cxx:140
 AliReconstruction.cxx:141
 AliReconstruction.cxx:142
 AliReconstruction.cxx:143
 AliReconstruction.cxx:144
 AliReconstruction.cxx:145
 AliReconstruction.cxx:146
 AliReconstruction.cxx:147
 AliReconstruction.cxx:148
 AliReconstruction.cxx:149
 AliReconstruction.cxx:150
 AliReconstruction.cxx:151
 AliReconstruction.cxx:152
 AliReconstruction.cxx:153
 AliReconstruction.cxx:154
 AliReconstruction.cxx:155
 AliReconstruction.cxx:156
 AliReconstruction.cxx:157
 AliReconstruction.cxx:158
 AliReconstruction.cxx:159
 AliReconstruction.cxx:160
 AliReconstruction.cxx:161
 AliReconstruction.cxx:162
 AliReconstruction.cxx:163
 AliReconstruction.cxx:164
 AliReconstruction.cxx:165
 AliReconstruction.cxx:166
 AliReconstruction.cxx:167
 AliReconstruction.cxx:168
 AliReconstruction.cxx:169
 AliReconstruction.cxx:170
 AliReconstruction.cxx:171
 AliReconstruction.cxx:172
 AliReconstruction.cxx:173
 AliReconstruction.cxx:174
 AliReconstruction.cxx:175
 AliReconstruction.cxx:176
 AliReconstruction.cxx:177
 AliReconstruction.cxx:178
 AliReconstruction.cxx:179
 AliReconstruction.cxx:180
 AliReconstruction.cxx:181
 AliReconstruction.cxx:182
 AliReconstruction.cxx:183
 AliReconstruction.cxx:184
 AliReconstruction.cxx:185
 AliReconstruction.cxx:186
 AliReconstruction.cxx:187
 AliReconstruction.cxx:188
 AliReconstruction.cxx:189
 AliReconstruction.cxx:190
 AliReconstruction.cxx:191
 AliReconstruction.cxx:192
 AliReconstruction.cxx:193
 AliReconstruction.cxx:194
 AliReconstruction.cxx:195
 AliReconstruction.cxx:196
 AliReconstruction.cxx:197
 AliReconstruction.cxx:198
 AliReconstruction.cxx:199
 AliReconstruction.cxx:200
 AliReconstruction.cxx:201
 AliReconstruction.cxx:202
 AliReconstruction.cxx:203
 AliReconstruction.cxx:204
 AliReconstruction.cxx:205
 AliReconstruction.cxx:206
 AliReconstruction.cxx:207
 AliReconstruction.cxx:208
 AliReconstruction.cxx:209
 AliReconstruction.cxx:210
 AliReconstruction.cxx:211
 AliReconstruction.cxx:212
 AliReconstruction.cxx:213
 AliReconstruction.cxx:214
 AliReconstruction.cxx:215
 AliReconstruction.cxx:216
 AliReconstruction.cxx:217
 AliReconstruction.cxx:218
 AliReconstruction.cxx:219
 AliReconstruction.cxx:220
 AliReconstruction.cxx:221
 AliReconstruction.cxx:222
 AliReconstruction.cxx:223
 AliReconstruction.cxx:224
 AliReconstruction.cxx:225
 AliReconstruction.cxx:226
 AliReconstruction.cxx:227
 AliReconstruction.cxx:228
 AliReconstruction.cxx:229
 AliReconstruction.cxx:230
 AliReconstruction.cxx:231
 AliReconstruction.cxx:232
 AliReconstruction.cxx:233
 AliReconstruction.cxx:234
 AliReconstruction.cxx:235
 AliReconstruction.cxx:236
 AliReconstruction.cxx:237
 AliReconstruction.cxx:238
 AliReconstruction.cxx:239
 AliReconstruction.cxx:240
 AliReconstruction.cxx:241
 AliReconstruction.cxx:242
 AliReconstruction.cxx:243
 AliReconstruction.cxx:244
 AliReconstruction.cxx:245
 AliReconstruction.cxx:246
 AliReconstruction.cxx:247
 AliReconstruction.cxx:248
 AliReconstruction.cxx:249
 AliReconstruction.cxx:250
 AliReconstruction.cxx:251
 AliReconstruction.cxx:252
 AliReconstruction.cxx:253
 AliReconstruction.cxx:254
 AliReconstruction.cxx:255
 AliReconstruction.cxx:256
 AliReconstruction.cxx:257
 AliReconstruction.cxx:258
 AliReconstruction.cxx:259
 AliReconstruction.cxx:260
 AliReconstruction.cxx:261
 AliReconstruction.cxx:262
 AliReconstruction.cxx:263
 AliReconstruction.cxx:264
 AliReconstruction.cxx:265
 AliReconstruction.cxx:266
 AliReconstruction.cxx:267
 AliReconstruction.cxx:268
 AliReconstruction.cxx:269
 AliReconstruction.cxx:270
 AliReconstruction.cxx:271
 AliReconstruction.cxx:272
 AliReconstruction.cxx:273
 AliReconstruction.cxx:274
 AliReconstruction.cxx:275
 AliReconstruction.cxx:276
 AliReconstruction.cxx:277
 AliReconstruction.cxx:278
 AliReconstruction.cxx:279
 AliReconstruction.cxx:280
 AliReconstruction.cxx:281
 AliReconstruction.cxx:282
 AliReconstruction.cxx:283
 AliReconstruction.cxx:284
 AliReconstruction.cxx:285
 AliReconstruction.cxx:286
 AliReconstruction.cxx:287
 AliReconstruction.cxx:288
 AliReconstruction.cxx:289
 AliReconstruction.cxx:290
 AliReconstruction.cxx:291
 AliReconstruction.cxx:292
 AliReconstruction.cxx:293
 AliReconstruction.cxx:294
 AliReconstruction.cxx:295
 AliReconstruction.cxx:296
 AliReconstruction.cxx:297
 AliReconstruction.cxx:298
 AliReconstruction.cxx:299
 AliReconstruction.cxx:300
 AliReconstruction.cxx:301
 AliReconstruction.cxx:302
 AliReconstruction.cxx:303
 AliReconstruction.cxx:304
 AliReconstruction.cxx:305
 AliReconstruction.cxx:306
 AliReconstruction.cxx:307
 AliReconstruction.cxx:308
 AliReconstruction.cxx:309
 AliReconstruction.cxx:310
 AliReconstruction.cxx:311
 AliReconstruction.cxx:312
 AliReconstruction.cxx:313
 AliReconstruction.cxx:314
 AliReconstruction.cxx:315
 AliReconstruction.cxx:316
 AliReconstruction.cxx:317
 AliReconstruction.cxx:318
 AliReconstruction.cxx:319
 AliReconstruction.cxx:320
 AliReconstruction.cxx:321
 AliReconstruction.cxx:322
 AliReconstruction.cxx:323
 AliReconstruction.cxx:324
 AliReconstruction.cxx:325
 AliReconstruction.cxx:326
 AliReconstruction.cxx:327
 AliReconstruction.cxx:328
 AliReconstruction.cxx:329
 AliReconstruction.cxx:330
 AliReconstruction.cxx:331
 AliReconstruction.cxx:332
 AliReconstruction.cxx:333
 AliReconstruction.cxx:334
 AliReconstruction.cxx:335
 AliReconstruction.cxx:336
 AliReconstruction.cxx:337
 AliReconstruction.cxx:338
 AliReconstruction.cxx:339
 AliReconstruction.cxx:340
 AliReconstruction.cxx:341
 AliReconstruction.cxx:342
 AliReconstruction.cxx:343
 AliReconstruction.cxx:344
 AliReconstruction.cxx:345
 AliReconstruction.cxx:346
 AliReconstruction.cxx:347
 AliReconstruction.cxx:348
 AliReconstruction.cxx:349
 AliReconstruction.cxx:350
 AliReconstruction.cxx:351
 AliReconstruction.cxx:352
 AliReconstruction.cxx:353
 AliReconstruction.cxx:354
 AliReconstruction.cxx:355
 AliReconstruction.cxx:356
 AliReconstruction.cxx:357
 AliReconstruction.cxx:358
 AliReconstruction.cxx:359
 AliReconstruction.cxx:360
 AliReconstruction.cxx:361
 AliReconstruction.cxx:362
 AliReconstruction.cxx:363
 AliReconstruction.cxx:364
 AliReconstruction.cxx:365
 AliReconstruction.cxx:366
 AliReconstruction.cxx:367
 AliReconstruction.cxx:368
 AliReconstruction.cxx:369
 AliReconstruction.cxx:370
 AliReconstruction.cxx:371
 AliReconstruction.cxx:372
 AliReconstruction.cxx:373
 AliReconstruction.cxx:374
 AliReconstruction.cxx:375
 AliReconstruction.cxx:376
 AliReconstruction.cxx:377
 AliReconstruction.cxx:378
 AliReconstruction.cxx:379
 AliReconstruction.cxx:380
 AliReconstruction.cxx:381
 AliReconstruction.cxx:382
 AliReconstruction.cxx:383
 AliReconstruction.cxx:384
 AliReconstruction.cxx:385
 AliReconstruction.cxx:386
 AliReconstruction.cxx:387
 AliReconstruction.cxx:388
 AliReconstruction.cxx:389
 AliReconstruction.cxx:390
 AliReconstruction.cxx:391
 AliReconstruction.cxx:392
 AliReconstruction.cxx:393
 AliReconstruction.cxx:394
 AliReconstruction.cxx:395
 AliReconstruction.cxx:396
 AliReconstruction.cxx:397
 AliReconstruction.cxx:398
 AliReconstruction.cxx:399
 AliReconstruction.cxx:400
 AliReconstruction.cxx:401
 AliReconstruction.cxx:402
 AliReconstruction.cxx:403
 AliReconstruction.cxx:404
 AliReconstruction.cxx:405
 AliReconstruction.cxx:406
 AliReconstruction.cxx:407
 AliReconstruction.cxx:408
 AliReconstruction.cxx:409
 AliReconstruction.cxx:410
 AliReconstruction.cxx:411
 AliReconstruction.cxx:412
 AliReconstruction.cxx:413
 AliReconstruction.cxx:414
 AliReconstruction.cxx:415
 AliReconstruction.cxx:416
 AliReconstruction.cxx:417
 AliReconstruction.cxx:418
 AliReconstruction.cxx:419
 AliReconstruction.cxx:420
 AliReconstruction.cxx:421
 AliReconstruction.cxx:422
 AliReconstruction.cxx:423
 AliReconstruction.cxx:424
 AliReconstruction.cxx:425
 AliReconstruction.cxx:426
 AliReconstruction.cxx:427
 AliReconstruction.cxx:428
 AliReconstruction.cxx:429
 AliReconstruction.cxx:430
 AliReconstruction.cxx:431
 AliReconstruction.cxx:432
 AliReconstruction.cxx:433
 AliReconstruction.cxx:434
 AliReconstruction.cxx:435
 AliReconstruction.cxx:436
 AliReconstruction.cxx:437
 AliReconstruction.cxx:438
 AliReconstruction.cxx:439
 AliReconstruction.cxx:440
 AliReconstruction.cxx:441
 AliReconstruction.cxx:442
 AliReconstruction.cxx:443
 AliReconstruction.cxx:444
 AliReconstruction.cxx:445
 AliReconstruction.cxx:446
 AliReconstruction.cxx:447
 AliReconstruction.cxx:448
 AliReconstruction.cxx:449
 AliReconstruction.cxx:450
 AliReconstruction.cxx:451
 AliReconstruction.cxx:452
 AliReconstruction.cxx:453
 AliReconstruction.cxx:454
 AliReconstruction.cxx:455
 AliReconstruction.cxx:456
 AliReconstruction.cxx:457
 AliReconstruction.cxx:458
 AliReconstruction.cxx:459
 AliReconstruction.cxx:460
 AliReconstruction.cxx:461
 AliReconstruction.cxx:462
 AliReconstruction.cxx:463
 AliReconstruction.cxx:464
 AliReconstruction.cxx:465
 AliReconstruction.cxx:466
 AliReconstruction.cxx:467
 AliReconstruction.cxx:468
 AliReconstruction.cxx:469
 AliReconstruction.cxx:470
 AliReconstruction.cxx:471
 AliReconstruction.cxx:472
 AliReconstruction.cxx:473
 AliReconstruction.cxx:474
 AliReconstruction.cxx:475
 AliReconstruction.cxx:476
 AliReconstruction.cxx:477
 AliReconstruction.cxx:478
 AliReconstruction.cxx:479
 AliReconstruction.cxx:480
 AliReconstruction.cxx:481
 AliReconstruction.cxx:482
 AliReconstruction.cxx:483
 AliReconstruction.cxx:484
 AliReconstruction.cxx:485
 AliReconstruction.cxx:486
 AliReconstruction.cxx:487
 AliReconstruction.cxx:488
 AliReconstruction.cxx:489
 AliReconstruction.cxx:490
 AliReconstruction.cxx:491
 AliReconstruction.cxx:492
 AliReconstruction.cxx:493
 AliReconstruction.cxx:494
 AliReconstruction.cxx:495
 AliReconstruction.cxx:496
 AliReconstruction.cxx:497
 AliReconstruction.cxx:498
 AliReconstruction.cxx:499
 AliReconstruction.cxx:500
 AliReconstruction.cxx:501
 AliReconstruction.cxx:502
 AliReconstruction.cxx:503
 AliReconstruction.cxx:504
 AliReconstruction.cxx:505
 AliReconstruction.cxx:506
 AliReconstruction.cxx:507
 AliReconstruction.cxx:508
 AliReconstruction.cxx:509
 AliReconstruction.cxx:510
 AliReconstruction.cxx:511
 AliReconstruction.cxx:512
 AliReconstruction.cxx:513
 AliReconstruction.cxx:514
 AliReconstruction.cxx:515
 AliReconstruction.cxx:516
 AliReconstruction.cxx:517
 AliReconstruction.cxx:518
 AliReconstruction.cxx:519
 AliReconstruction.cxx:520
 AliReconstruction.cxx:521
 AliReconstruction.cxx:522
 AliReconstruction.cxx:523
 AliReconstruction.cxx:524
 AliReconstruction.cxx:525
 AliReconstruction.cxx:526
 AliReconstruction.cxx:527
 AliReconstruction.cxx:528
 AliReconstruction.cxx:529
 AliReconstruction.cxx:530
 AliReconstruction.cxx:531
 AliReconstruction.cxx:532
 AliReconstruction.cxx:533
 AliReconstruction.cxx:534
 AliReconstruction.cxx:535
 AliReconstruction.cxx:536
 AliReconstruction.cxx:537
 AliReconstruction.cxx:538
 AliReconstruction.cxx:539
 AliReconstruction.cxx:540
 AliReconstruction.cxx:541
 AliReconstruction.cxx:542
 AliReconstruction.cxx:543
 AliReconstruction.cxx:544
 AliReconstruction.cxx:545
 AliReconstruction.cxx:546
 AliReconstruction.cxx:547
 AliReconstruction.cxx:548
 AliReconstruction.cxx:549
 AliReconstruction.cxx:550
 AliReconstruction.cxx:551
 AliReconstruction.cxx:552
 AliReconstruction.cxx:553
 AliReconstruction.cxx:554
 AliReconstruction.cxx:555
 AliReconstruction.cxx:556
 AliReconstruction.cxx:557
 AliReconstruction.cxx:558
 AliReconstruction.cxx:559
 AliReconstruction.cxx:560
 AliReconstruction.cxx:561
 AliReconstruction.cxx:562
 AliReconstruction.cxx:563
 AliReconstruction.cxx:564
 AliReconstruction.cxx:565
 AliReconstruction.cxx:566
 AliReconstruction.cxx:567
 AliReconstruction.cxx:568
 AliReconstruction.cxx:569
 AliReconstruction.cxx:570
 AliReconstruction.cxx:571
 AliReconstruction.cxx:572
 AliReconstruction.cxx:573
 AliReconstruction.cxx:574
 AliReconstruction.cxx:575
 AliReconstruction.cxx:576
 AliReconstruction.cxx:577
 AliReconstruction.cxx:578
 AliReconstruction.cxx:579
 AliReconstruction.cxx:580
 AliReconstruction.cxx:581
 AliReconstruction.cxx:582
 AliReconstruction.cxx:583
 AliReconstruction.cxx:584
 AliReconstruction.cxx:585
 AliReconstruction.cxx:586
 AliReconstruction.cxx:587
 AliReconstruction.cxx:588
 AliReconstruction.cxx:589
 AliReconstruction.cxx:590
 AliReconstruction.cxx:591
 AliReconstruction.cxx:592
 AliReconstruction.cxx:593
 AliReconstruction.cxx:594
 AliReconstruction.cxx:595
 AliReconstruction.cxx:596
 AliReconstruction.cxx:597
 AliReconstruction.cxx:598
 AliReconstruction.cxx:599
 AliReconstruction.cxx:600
 AliReconstruction.cxx:601
 AliReconstruction.cxx:602
 AliReconstruction.cxx:603
 AliReconstruction.cxx:604
 AliReconstruction.cxx:605
 AliReconstruction.cxx:606
 AliReconstruction.cxx:607
 AliReconstruction.cxx:608
 AliReconstruction.cxx:609
 AliReconstruction.cxx:610
 AliReconstruction.cxx:611
 AliReconstruction.cxx:612
 AliReconstruction.cxx:613
 AliReconstruction.cxx:614
 AliReconstruction.cxx:615
 AliReconstruction.cxx:616
 AliReconstruction.cxx:617
 AliReconstruction.cxx:618
 AliReconstruction.cxx:619
 AliReconstruction.cxx:620
 AliReconstruction.cxx:621
 AliReconstruction.cxx:622
 AliReconstruction.cxx:623
 AliReconstruction.cxx:624
 AliReconstruction.cxx:625
 AliReconstruction.cxx:626
 AliReconstruction.cxx:627
 AliReconstruction.cxx:628
 AliReconstruction.cxx:629
 AliReconstruction.cxx:630
 AliReconstruction.cxx:631
 AliReconstruction.cxx:632
 AliReconstruction.cxx:633
 AliReconstruction.cxx:634
 AliReconstruction.cxx:635
 AliReconstruction.cxx:636
 AliReconstruction.cxx:637
 AliReconstruction.cxx:638
 AliReconstruction.cxx:639
 AliReconstruction.cxx:640
 AliReconstruction.cxx:641
 AliReconstruction.cxx:642
 AliReconstruction.cxx:643
 AliReconstruction.cxx:644
 AliReconstruction.cxx:645
 AliReconstruction.cxx:646
 AliReconstruction.cxx:647
 AliReconstruction.cxx:648
 AliReconstruction.cxx:649
 AliReconstruction.cxx:650
 AliReconstruction.cxx:651
 AliReconstruction.cxx:652
 AliReconstruction.cxx:653
 AliReconstruction.cxx:654
 AliReconstruction.cxx:655
 AliReconstruction.cxx:656
 AliReconstruction.cxx:657
 AliReconstruction.cxx:658
 AliReconstruction.cxx:659
 AliReconstruction.cxx:660
 AliReconstruction.cxx:661
 AliReconstruction.cxx:662
 AliReconstruction.cxx:663
 AliReconstruction.cxx:664
 AliReconstruction.cxx:665
 AliReconstruction.cxx:666
 AliReconstruction.cxx:667
 AliReconstruction.cxx:668
 AliReconstruction.cxx:669
 AliReconstruction.cxx:670
 AliReconstruction.cxx:671
 AliReconstruction.cxx:672
 AliReconstruction.cxx:673
 AliReconstruction.cxx:674
 AliReconstruction.cxx:675
 AliReconstruction.cxx:676
 AliReconstruction.cxx:677
 AliReconstruction.cxx:678
 AliReconstruction.cxx:679
 AliReconstruction.cxx:680
 AliReconstruction.cxx:681
 AliReconstruction.cxx:682
 AliReconstruction.cxx:683
 AliReconstruction.cxx:684
 AliReconstruction.cxx:685
 AliReconstruction.cxx:686
 AliReconstruction.cxx:687
 AliReconstruction.cxx:688
 AliReconstruction.cxx:689
 AliReconstruction.cxx:690
 AliReconstruction.cxx:691
 AliReconstruction.cxx:692
 AliReconstruction.cxx:693
 AliReconstruction.cxx:694
 AliReconstruction.cxx:695
 AliReconstruction.cxx:696
 AliReconstruction.cxx:697
 AliReconstruction.cxx:698
 AliReconstruction.cxx:699
 AliReconstruction.cxx:700
 AliReconstruction.cxx:701
 AliReconstruction.cxx:702
 AliReconstruction.cxx:703
 AliReconstruction.cxx:704
 AliReconstruction.cxx:705
 AliReconstruction.cxx:706
 AliReconstruction.cxx:707
 AliReconstruction.cxx:708
 AliReconstruction.cxx:709
 AliReconstruction.cxx:710
 AliReconstruction.cxx:711
 AliReconstruction.cxx:712
 AliReconstruction.cxx:713
 AliReconstruction.cxx:714
 AliReconstruction.cxx:715
 AliReconstruction.cxx:716
 AliReconstruction.cxx:717
 AliReconstruction.cxx:718
 AliReconstruction.cxx:719
 AliReconstruction.cxx:720
 AliReconstruction.cxx:721
 AliReconstruction.cxx:722
 AliReconstruction.cxx:723
 AliReconstruction.cxx:724
 AliReconstruction.cxx:725
 AliReconstruction.cxx:726
 AliReconstruction.cxx:727
 AliReconstruction.cxx:728
 AliReconstruction.cxx:729
 AliReconstruction.cxx:730
 AliReconstruction.cxx:731
 AliReconstruction.cxx:732
 AliReconstruction.cxx:733
 AliReconstruction.cxx:734
 AliReconstruction.cxx:735
 AliReconstruction.cxx:736
 AliReconstruction.cxx:737
 AliReconstruction.cxx:738
 AliReconstruction.cxx:739
 AliReconstruction.cxx:740
 AliReconstruction.cxx:741
 AliReconstruction.cxx:742
 AliReconstruction.cxx:743
 AliReconstruction.cxx:744
 AliReconstruction.cxx:745
 AliReconstruction.cxx:746
 AliReconstruction.cxx:747
 AliReconstruction.cxx:748
 AliReconstruction.cxx:749
 AliReconstruction.cxx:750
 AliReconstruction.cxx:751
 AliReconstruction.cxx:752
 AliReconstruction.cxx:753
 AliReconstruction.cxx:754
 AliReconstruction.cxx:755
 AliReconstruction.cxx:756
 AliReconstruction.cxx:757
 AliReconstruction.cxx:758
 AliReconstruction.cxx:759
 AliReconstruction.cxx:760
 AliReconstruction.cxx:761
 AliReconstruction.cxx:762
 AliReconstruction.cxx:763
 AliReconstruction.cxx:764
 AliReconstruction.cxx:765
 AliReconstruction.cxx:766
 AliReconstruction.cxx:767
 AliReconstruction.cxx:768
 AliReconstruction.cxx:769
 AliReconstruction.cxx:770
 AliReconstruction.cxx:771
 AliReconstruction.cxx:772
 AliReconstruction.cxx:773
 AliReconstruction.cxx:774
 AliReconstruction.cxx:775
 AliReconstruction.cxx:776
 AliReconstruction.cxx:777
 AliReconstruction.cxx:778
 AliReconstruction.cxx:779
 AliReconstruction.cxx:780
 AliReconstruction.cxx:781
 AliReconstruction.cxx:782
 AliReconstruction.cxx:783
 AliReconstruction.cxx:784
 AliReconstruction.cxx:785
 AliReconstruction.cxx:786
 AliReconstruction.cxx:787
 AliReconstruction.cxx:788
 AliReconstruction.cxx:789
 AliReconstruction.cxx:790
 AliReconstruction.cxx:791
 AliReconstruction.cxx:792
 AliReconstruction.cxx:793
 AliReconstruction.cxx:794
 AliReconstruction.cxx:795
 AliReconstruction.cxx:796
 AliReconstruction.cxx:797
 AliReconstruction.cxx:798
 AliReconstruction.cxx:799
 AliReconstruction.cxx:800
 AliReconstruction.cxx:801
 AliReconstruction.cxx:802
 AliReconstruction.cxx:803
 AliReconstruction.cxx:804
 AliReconstruction.cxx:805
 AliReconstruction.cxx:806
 AliReconstruction.cxx:807
 AliReconstruction.cxx:808
 AliReconstruction.cxx:809
 AliReconstruction.cxx:810
 AliReconstruction.cxx:811
 AliReconstruction.cxx:812
 AliReconstruction.cxx:813
 AliReconstruction.cxx:814
 AliReconstruction.cxx:815
 AliReconstruction.cxx:816
 AliReconstruction.cxx:817
 AliReconstruction.cxx:818
 AliReconstruction.cxx:819
 AliReconstruction.cxx:820
 AliReconstruction.cxx:821
 AliReconstruction.cxx:822
 AliReconstruction.cxx:823
 AliReconstruction.cxx:824
 AliReconstruction.cxx:825
 AliReconstruction.cxx:826
 AliReconstruction.cxx:827
 AliReconstruction.cxx:828
 AliReconstruction.cxx:829
 AliReconstruction.cxx:830
 AliReconstruction.cxx:831
 AliReconstruction.cxx:832
 AliReconstruction.cxx:833
 AliReconstruction.cxx:834
 AliReconstruction.cxx:835
 AliReconstruction.cxx:836
 AliReconstruction.cxx:837
 AliReconstruction.cxx:838
 AliReconstruction.cxx:839
 AliReconstruction.cxx:840
 AliReconstruction.cxx:841
 AliReconstruction.cxx:842
 AliReconstruction.cxx:843
 AliReconstruction.cxx:844
 AliReconstruction.cxx:845
 AliReconstruction.cxx:846
 AliReconstruction.cxx:847
 AliReconstruction.cxx:848
 AliReconstruction.cxx:849
 AliReconstruction.cxx:850
 AliReconstruction.cxx:851
 AliReconstruction.cxx:852
 AliReconstruction.cxx:853
 AliReconstruction.cxx:854
 AliReconstruction.cxx:855
 AliReconstruction.cxx:856
 AliReconstruction.cxx:857
 AliReconstruction.cxx:858
 AliReconstruction.cxx:859
 AliReconstruction.cxx:860
 AliReconstruction.cxx:861
 AliReconstruction.cxx:862
 AliReconstruction.cxx:863
 AliReconstruction.cxx:864
 AliReconstruction.cxx:865
 AliReconstruction.cxx:866
 AliReconstruction.cxx:867
 AliReconstruction.cxx:868
 AliReconstruction.cxx:869
 AliReconstruction.cxx:870
 AliReconstruction.cxx:871
 AliReconstruction.cxx:872
 AliReconstruction.cxx:873
 AliReconstruction.cxx:874
 AliReconstruction.cxx:875
 AliReconstruction.cxx:876
 AliReconstruction.cxx:877
 AliReconstruction.cxx:878
 AliReconstruction.cxx:879
 AliReconstruction.cxx:880
 AliReconstruction.cxx:881
 AliReconstruction.cxx:882
 AliReconstruction.cxx:883
 AliReconstruction.cxx:884
 AliReconstruction.cxx:885
 AliReconstruction.cxx:886
 AliReconstruction.cxx:887
 AliReconstruction.cxx:888
 AliReconstruction.cxx:889
 AliReconstruction.cxx:890
 AliReconstruction.cxx:891
 AliReconstruction.cxx:892
 AliReconstruction.cxx:893
 AliReconstruction.cxx:894
 AliReconstruction.cxx:895
 AliReconstruction.cxx:896
 AliReconstruction.cxx:897
 AliReconstruction.cxx:898
 AliReconstruction.cxx:899
 AliReconstruction.cxx:900
 AliReconstruction.cxx:901
 AliReconstruction.cxx:902
 AliReconstruction.cxx:903
 AliReconstruction.cxx:904
 AliReconstruction.cxx:905
 AliReconstruction.cxx:906
 AliReconstruction.cxx:907
 AliReconstruction.cxx:908
 AliReconstruction.cxx:909
 AliReconstruction.cxx:910
 AliReconstruction.cxx:911
 AliReconstruction.cxx:912
 AliReconstruction.cxx:913
 AliReconstruction.cxx:914
 AliReconstruction.cxx:915
 AliReconstruction.cxx:916
 AliReconstruction.cxx:917
 AliReconstruction.cxx:918
 AliReconstruction.cxx:919
 AliReconstruction.cxx:920
 AliReconstruction.cxx:921
 AliReconstruction.cxx:922
 AliReconstruction.cxx:923
 AliReconstruction.cxx:924
 AliReconstruction.cxx:925
 AliReconstruction.cxx:926
 AliReconstruction.cxx:927
 AliReconstruction.cxx:928
 AliReconstruction.cxx:929
 AliReconstruction.cxx:930
 AliReconstruction.cxx:931
 AliReconstruction.cxx:932
 AliReconstruction.cxx:933
 AliReconstruction.cxx:934
 AliReconstruction.cxx:935
 AliReconstruction.cxx:936
 AliReconstruction.cxx:937
 AliReconstruction.cxx:938
 AliReconstruction.cxx:939
 AliReconstruction.cxx:940
 AliReconstruction.cxx:941
 AliReconstruction.cxx:942
 AliReconstruction.cxx:943
 AliReconstruction.cxx:944
 AliReconstruction.cxx:945
 AliReconstruction.cxx:946
 AliReconstruction.cxx:947
 AliReconstruction.cxx:948
 AliReconstruction.cxx:949
 AliReconstruction.cxx:950
 AliReconstruction.cxx:951
 AliReconstruction.cxx:952
 AliReconstruction.cxx:953
 AliReconstruction.cxx:954
 AliReconstruction.cxx:955
 AliReconstruction.cxx:956
 AliReconstruction.cxx:957
 AliReconstruction.cxx:958
 AliReconstruction.cxx:959
 AliReconstruction.cxx:960
 AliReconstruction.cxx:961
 AliReconstruction.cxx:962
 AliReconstruction.cxx:963
 AliReconstruction.cxx:964
 AliReconstruction.cxx:965
 AliReconstruction.cxx:966
 AliReconstruction.cxx:967
 AliReconstruction.cxx:968
 AliReconstruction.cxx:969
 AliReconstruction.cxx:970
 AliReconstruction.cxx:971
 AliReconstruction.cxx:972
 AliReconstruction.cxx:973
 AliReconstruction.cxx:974
 AliReconstruction.cxx:975
 AliReconstruction.cxx:976
 AliReconstruction.cxx:977
 AliReconstruction.cxx:978
 AliReconstruction.cxx:979
 AliReconstruction.cxx:980
 AliReconstruction.cxx:981
 AliReconstruction.cxx:982
 AliReconstruction.cxx:983
 AliReconstruction.cxx:984
 AliReconstruction.cxx:985
 AliReconstruction.cxx:986
 AliReconstruction.cxx:987
 AliReconstruction.cxx:988
 AliReconstruction.cxx:989
 AliReconstruction.cxx:990
 AliReconstruction.cxx:991
 AliReconstruction.cxx:992
 AliReconstruction.cxx:993
 AliReconstruction.cxx:994
 AliReconstruction.cxx:995
 AliReconstruction.cxx:996
 AliReconstruction.cxx:997
 AliReconstruction.cxx:998
 AliReconstruction.cxx:999
 AliReconstruction.cxx:1000
 AliReconstruction.cxx:1001
 AliReconstruction.cxx:1002
 AliReconstruction.cxx:1003
 AliReconstruction.cxx:1004
 AliReconstruction.cxx:1005
 AliReconstruction.cxx:1006
 AliReconstruction.cxx:1007
 AliReconstruction.cxx:1008
 AliReconstruction.cxx:1009
 AliReconstruction.cxx:1010
 AliReconstruction.cxx:1011
 AliReconstruction.cxx:1012
 AliReconstruction.cxx:1013
 AliReconstruction.cxx:1014
 AliReconstruction.cxx:1015
 AliReconstruction.cxx:1016
 AliReconstruction.cxx:1017
 AliReconstruction.cxx:1018
 AliReconstruction.cxx:1019
 AliReconstruction.cxx:1020
 AliReconstruction.cxx:1021
 AliReconstruction.cxx:1022
 AliReconstruction.cxx:1023
 AliReconstruction.cxx:1024
 AliReconstruction.cxx:1025
 AliReconstruction.cxx:1026
 AliReconstruction.cxx:1027
 AliReconstruction.cxx:1028
 AliReconstruction.cxx:1029
 AliReconstruction.cxx:1030
 AliReconstruction.cxx:1031
 AliReconstruction.cxx:1032
 AliReconstruction.cxx:1033
 AliReconstruction.cxx:1034
 AliReconstruction.cxx:1035
 AliReconstruction.cxx:1036
 AliReconstruction.cxx:1037
 AliReconstruction.cxx:1038
 AliReconstruction.cxx:1039
 AliReconstruction.cxx:1040
 AliReconstruction.cxx:1041
 AliReconstruction.cxx:1042
 AliReconstruction.cxx:1043
 AliReconstruction.cxx:1044
 AliReconstruction.cxx:1045
 AliReconstruction.cxx:1046
 AliReconstruction.cxx:1047
 AliReconstruction.cxx:1048
 AliReconstruction.cxx:1049
 AliReconstruction.cxx:1050
 AliReconstruction.cxx:1051
 AliReconstruction.cxx:1052
 AliReconstruction.cxx:1053
 AliReconstruction.cxx:1054
 AliReconstruction.cxx:1055
 AliReconstruction.cxx:1056
 AliReconstruction.cxx:1057
 AliReconstruction.cxx:1058
 AliReconstruction.cxx:1059
 AliReconstruction.cxx:1060
 AliReconstruction.cxx:1061
 AliReconstruction.cxx:1062
 AliReconstruction.cxx:1063
 AliReconstruction.cxx:1064
 AliReconstruction.cxx:1065
 AliReconstruction.cxx:1066
 AliReconstruction.cxx:1067
 AliReconstruction.cxx:1068
 AliReconstruction.cxx:1069
 AliReconstruction.cxx:1070
 AliReconstruction.cxx:1071
 AliReconstruction.cxx:1072
 AliReconstruction.cxx:1073
 AliReconstruction.cxx:1074
 AliReconstruction.cxx:1075
 AliReconstruction.cxx:1076
 AliReconstruction.cxx:1077
 AliReconstruction.cxx:1078
 AliReconstruction.cxx:1079
 AliReconstruction.cxx:1080
 AliReconstruction.cxx:1081
 AliReconstruction.cxx:1082
 AliReconstruction.cxx:1083
 AliReconstruction.cxx:1084
 AliReconstruction.cxx:1085
 AliReconstruction.cxx:1086
 AliReconstruction.cxx:1087
 AliReconstruction.cxx:1088
 AliReconstruction.cxx:1089
 AliReconstruction.cxx:1090
 AliReconstruction.cxx:1091
 AliReconstruction.cxx:1092
 AliReconstruction.cxx:1093
 AliReconstruction.cxx:1094
 AliReconstruction.cxx:1095
 AliReconstruction.cxx:1096
 AliReconstruction.cxx:1097
 AliReconstruction.cxx:1098
 AliReconstruction.cxx:1099
 AliReconstruction.cxx:1100
 AliReconstruction.cxx:1101
 AliReconstruction.cxx:1102
 AliReconstruction.cxx:1103
 AliReconstruction.cxx:1104
 AliReconstruction.cxx:1105
 AliReconstruction.cxx:1106
 AliReconstruction.cxx:1107
 AliReconstruction.cxx:1108
 AliReconstruction.cxx:1109
 AliReconstruction.cxx:1110
 AliReconstruction.cxx:1111
 AliReconstruction.cxx:1112
 AliReconstruction.cxx:1113
 AliReconstruction.cxx:1114
 AliReconstruction.cxx:1115
 AliReconstruction.cxx:1116
 AliReconstruction.cxx:1117
 AliReconstruction.cxx:1118
 AliReconstruction.cxx:1119
 AliReconstruction.cxx:1120
 AliReconstruction.cxx:1121
 AliReconstruction.cxx:1122
 AliReconstruction.cxx:1123
 AliReconstruction.cxx:1124
 AliReconstruction.cxx:1125
 AliReconstruction.cxx:1126
 AliReconstruction.cxx:1127
 AliReconstruction.cxx:1128
 AliReconstruction.cxx:1129
 AliReconstruction.cxx:1130
 AliReconstruction.cxx:1131
 AliReconstruction.cxx:1132
 AliReconstruction.cxx:1133
 AliReconstruction.cxx:1134
 AliReconstruction.cxx:1135
 AliReconstruction.cxx:1136
 AliReconstruction.cxx:1137
 AliReconstruction.cxx:1138
 AliReconstruction.cxx:1139
 AliReconstruction.cxx:1140
 AliReconstruction.cxx:1141
 AliReconstruction.cxx:1142
 AliReconstruction.cxx:1143
 AliReconstruction.cxx:1144
 AliReconstruction.cxx:1145
 AliReconstruction.cxx:1146
 AliReconstruction.cxx:1147
 AliReconstruction.cxx:1148
 AliReconstruction.cxx:1149
 AliReconstruction.cxx:1150
 AliReconstruction.cxx:1151
 AliReconstruction.cxx:1152
 AliReconstruction.cxx:1153
 AliReconstruction.cxx:1154
 AliReconstruction.cxx:1155
 AliReconstruction.cxx:1156
 AliReconstruction.cxx:1157
 AliReconstruction.cxx:1158
 AliReconstruction.cxx:1159
 AliReconstruction.cxx:1160
 AliReconstruction.cxx:1161
 AliReconstruction.cxx:1162
 AliReconstruction.cxx:1163
 AliReconstruction.cxx:1164
 AliReconstruction.cxx:1165
 AliReconstruction.cxx:1166
 AliReconstruction.cxx:1167
 AliReconstruction.cxx:1168
 AliReconstruction.cxx:1169
 AliReconstruction.cxx:1170
 AliReconstruction.cxx:1171
 AliReconstruction.cxx:1172
 AliReconstruction.cxx:1173
 AliReconstruction.cxx:1174
 AliReconstruction.cxx:1175
 AliReconstruction.cxx:1176
 AliReconstruction.cxx:1177
 AliReconstruction.cxx:1178
 AliReconstruction.cxx:1179
 AliReconstruction.cxx:1180
 AliReconstruction.cxx:1181
 AliReconstruction.cxx:1182
 AliReconstruction.cxx:1183
 AliReconstruction.cxx:1184
 AliReconstruction.cxx:1185
 AliReconstruction.cxx:1186
 AliReconstruction.cxx:1187
 AliReconstruction.cxx:1188
 AliReconstruction.cxx:1189
 AliReconstruction.cxx:1190
 AliReconstruction.cxx:1191
 AliReconstruction.cxx:1192
 AliReconstruction.cxx:1193
 AliReconstruction.cxx:1194
 AliReconstruction.cxx:1195
 AliReconstruction.cxx:1196
 AliReconstruction.cxx:1197
 AliReconstruction.cxx:1198
 AliReconstruction.cxx:1199
 AliReconstruction.cxx:1200
 AliReconstruction.cxx:1201
 AliReconstruction.cxx:1202
 AliReconstruction.cxx:1203
 AliReconstruction.cxx:1204
 AliReconstruction.cxx:1205
 AliReconstruction.cxx:1206
 AliReconstruction.cxx:1207
 AliReconstruction.cxx:1208
 AliReconstruction.cxx:1209
 AliReconstruction.cxx:1210
 AliReconstruction.cxx:1211
 AliReconstruction.cxx:1212
 AliReconstruction.cxx:1213
 AliReconstruction.cxx:1214
 AliReconstruction.cxx:1215
 AliReconstruction.cxx:1216
 AliReconstruction.cxx:1217
 AliReconstruction.cxx:1218
 AliReconstruction.cxx:1219
 AliReconstruction.cxx:1220
 AliReconstruction.cxx:1221
 AliReconstruction.cxx:1222
 AliReconstruction.cxx:1223
 AliReconstruction.cxx:1224
 AliReconstruction.cxx:1225
 AliReconstruction.cxx:1226
 AliReconstruction.cxx:1227
 AliReconstruction.cxx:1228
 AliReconstruction.cxx:1229
 AliReconstruction.cxx:1230
 AliReconstruction.cxx:1231
 AliReconstruction.cxx:1232
 AliReconstruction.cxx:1233
 AliReconstruction.cxx:1234
 AliReconstruction.cxx:1235
 AliReconstruction.cxx:1236
 AliReconstruction.cxx:1237
 AliReconstruction.cxx:1238
 AliReconstruction.cxx:1239
 AliReconstruction.cxx:1240
 AliReconstruction.cxx:1241
 AliReconstruction.cxx:1242
 AliReconstruction.cxx:1243
 AliReconstruction.cxx:1244
 AliReconstruction.cxx:1245
 AliReconstruction.cxx:1246
 AliReconstruction.cxx:1247
 AliReconstruction.cxx:1248
 AliReconstruction.cxx:1249
 AliReconstruction.cxx:1250
 AliReconstruction.cxx:1251
 AliReconstruction.cxx:1252
 AliReconstruction.cxx:1253
 AliReconstruction.cxx:1254
 AliReconstruction.cxx:1255
 AliReconstruction.cxx:1256
 AliReconstruction.cxx:1257
 AliReconstruction.cxx:1258
 AliReconstruction.cxx:1259
 AliReconstruction.cxx:1260
 AliReconstruction.cxx:1261
 AliReconstruction.cxx:1262
 AliReconstruction.cxx:1263
 AliReconstruction.cxx:1264
 AliReconstruction.cxx:1265
 AliReconstruction.cxx:1266
 AliReconstruction.cxx:1267
 AliReconstruction.cxx:1268
 AliReconstruction.cxx:1269
 AliReconstruction.cxx:1270
 AliReconstruction.cxx:1271
 AliReconstruction.cxx:1272
 AliReconstruction.cxx:1273
 AliReconstruction.cxx:1274
 AliReconstruction.cxx:1275
 AliReconstruction.cxx:1276
 AliReconstruction.cxx:1277
 AliReconstruction.cxx:1278
 AliReconstruction.cxx:1279
 AliReconstruction.cxx:1280
 AliReconstruction.cxx:1281
 AliReconstruction.cxx:1282
 AliReconstruction.cxx:1283
 AliReconstruction.cxx:1284
 AliReconstruction.cxx:1285
 AliReconstruction.cxx:1286
 AliReconstruction.cxx:1287
 AliReconstruction.cxx:1288
 AliReconstruction.cxx:1289
 AliReconstruction.cxx:1290
 AliReconstruction.cxx:1291
 AliReconstruction.cxx:1292
 AliReconstruction.cxx:1293
 AliReconstruction.cxx:1294
 AliReconstruction.cxx:1295
 AliReconstruction.cxx:1296
 AliReconstruction.cxx:1297
 AliReconstruction.cxx:1298
 AliReconstruction.cxx:1299
 AliReconstruction.cxx:1300
 AliReconstruction.cxx:1301
 AliReconstruction.cxx:1302
 AliReconstruction.cxx:1303
 AliReconstruction.cxx:1304
 AliReconstruction.cxx:1305
 AliReconstruction.cxx:1306
 AliReconstruction.cxx:1307
 AliReconstruction.cxx:1308
 AliReconstruction.cxx:1309
 AliReconstruction.cxx:1310
 AliReconstruction.cxx:1311
 AliReconstruction.cxx:1312
 AliReconstruction.cxx:1313
 AliReconstruction.cxx:1314
 AliReconstruction.cxx:1315
 AliReconstruction.cxx:1316
 AliReconstruction.cxx:1317
 AliReconstruction.cxx:1318
 AliReconstruction.cxx:1319
 AliReconstruction.cxx:1320
 AliReconstruction.cxx:1321
 AliReconstruction.cxx:1322
 AliReconstruction.cxx:1323
 AliReconstruction.cxx:1324
 AliReconstruction.cxx:1325
 AliReconstruction.cxx:1326
 AliReconstruction.cxx:1327
 AliReconstruction.cxx:1328
 AliReconstruction.cxx:1329
 AliReconstruction.cxx:1330
 AliReconstruction.cxx:1331
 AliReconstruction.cxx:1332
 AliReconstruction.cxx:1333
 AliReconstruction.cxx:1334
 AliReconstruction.cxx:1335
 AliReconstruction.cxx:1336
 AliReconstruction.cxx:1337
 AliReconstruction.cxx:1338
 AliReconstruction.cxx:1339
 AliReconstruction.cxx:1340
 AliReconstruction.cxx:1341
 AliReconstruction.cxx:1342
 AliReconstruction.cxx:1343
 AliReconstruction.cxx:1344
 AliReconstruction.cxx:1345
 AliReconstruction.cxx:1346
 AliReconstruction.cxx:1347
 AliReconstruction.cxx:1348
 AliReconstruction.cxx:1349
 AliReconstruction.cxx:1350
 AliReconstruction.cxx:1351
 AliReconstruction.cxx:1352
 AliReconstruction.cxx:1353
 AliReconstruction.cxx:1354
 AliReconstruction.cxx:1355
 AliReconstruction.cxx:1356
 AliReconstruction.cxx:1357
 AliReconstruction.cxx:1358
 AliReconstruction.cxx:1359
 AliReconstruction.cxx:1360
 AliReconstruction.cxx:1361
 AliReconstruction.cxx:1362
 AliReconstruction.cxx:1363
 AliReconstruction.cxx:1364
 AliReconstruction.cxx:1365
 AliReconstruction.cxx:1366
 AliReconstruction.cxx:1367
 AliReconstruction.cxx:1368
 AliReconstruction.cxx:1369
 AliReconstruction.cxx:1370
 AliReconstruction.cxx:1371
 AliReconstruction.cxx:1372
 AliReconstruction.cxx:1373
 AliReconstruction.cxx:1374
 AliReconstruction.cxx:1375
 AliReconstruction.cxx:1376
 AliReconstruction.cxx:1377
 AliReconstruction.cxx:1378
 AliReconstruction.cxx:1379
 AliReconstruction.cxx:1380
 AliReconstruction.cxx:1381
 AliReconstruction.cxx:1382
 AliReconstruction.cxx:1383
 AliReconstruction.cxx:1384
 AliReconstruction.cxx:1385
 AliReconstruction.cxx:1386
 AliReconstruction.cxx:1387
 AliReconstruction.cxx:1388
 AliReconstruction.cxx:1389
 AliReconstruction.cxx:1390
 AliReconstruction.cxx:1391
 AliReconstruction.cxx:1392
 AliReconstruction.cxx:1393
 AliReconstruction.cxx:1394
 AliReconstruction.cxx:1395
 AliReconstruction.cxx:1396
 AliReconstruction.cxx:1397
 AliReconstruction.cxx:1398
 AliReconstruction.cxx:1399
 AliReconstruction.cxx:1400
 AliReconstruction.cxx:1401
 AliReconstruction.cxx:1402
 AliReconstruction.cxx:1403
 AliReconstruction.cxx:1404
 AliReconstruction.cxx:1405
 AliReconstruction.cxx:1406
 AliReconstruction.cxx:1407
 AliReconstruction.cxx:1408
 AliReconstruction.cxx:1409
 AliReconstruction.cxx:1410
 AliReconstruction.cxx:1411
 AliReconstruction.cxx:1412
 AliReconstruction.cxx:1413
 AliReconstruction.cxx:1414
 AliReconstruction.cxx:1415
 AliReconstruction.cxx:1416
 AliReconstruction.cxx:1417
 AliReconstruction.cxx:1418
 AliReconstruction.cxx:1419
 AliReconstruction.cxx:1420
 AliReconstruction.cxx:1421
 AliReconstruction.cxx:1422
 AliReconstruction.cxx:1423
 AliReconstruction.cxx:1424
 AliReconstruction.cxx:1425
 AliReconstruction.cxx:1426
 AliReconstruction.cxx:1427
 AliReconstruction.cxx:1428
 AliReconstruction.cxx:1429
 AliReconstruction.cxx:1430
 AliReconstruction.cxx:1431
 AliReconstruction.cxx:1432
 AliReconstruction.cxx:1433
 AliReconstruction.cxx:1434
 AliReconstruction.cxx:1435
 AliReconstruction.cxx:1436
 AliReconstruction.cxx:1437
 AliReconstruction.cxx:1438
 AliReconstruction.cxx:1439
 AliReconstruction.cxx:1440
 AliReconstruction.cxx:1441
 AliReconstruction.cxx:1442
 AliReconstruction.cxx:1443
 AliReconstruction.cxx:1444
 AliReconstruction.cxx:1445
 AliReconstruction.cxx:1446
 AliReconstruction.cxx:1447
 AliReconstruction.cxx:1448
 AliReconstruction.cxx:1449
 AliReconstruction.cxx:1450
 AliReconstruction.cxx:1451
 AliReconstruction.cxx:1452
 AliReconstruction.cxx:1453
 AliReconstruction.cxx:1454
 AliReconstruction.cxx:1455
 AliReconstruction.cxx:1456
 AliReconstruction.cxx:1457
 AliReconstruction.cxx:1458
 AliReconstruction.cxx:1459
 AliReconstruction.cxx:1460
 AliReconstruction.cxx:1461
 AliReconstruction.cxx:1462
 AliReconstruction.cxx:1463
 AliReconstruction.cxx:1464
 AliReconstruction.cxx:1465
 AliReconstruction.cxx:1466
 AliReconstruction.cxx:1467
 AliReconstruction.cxx:1468
 AliReconstruction.cxx:1469
 AliReconstruction.cxx:1470
 AliReconstruction.cxx:1471
 AliReconstruction.cxx:1472
 AliReconstruction.cxx:1473
 AliReconstruction.cxx:1474
 AliReconstruction.cxx:1475
 AliReconstruction.cxx:1476
 AliReconstruction.cxx:1477
 AliReconstruction.cxx:1478
 AliReconstruction.cxx:1479
 AliReconstruction.cxx:1480
 AliReconstruction.cxx:1481
 AliReconstruction.cxx:1482
 AliReconstruction.cxx:1483
 AliReconstruction.cxx:1484
 AliReconstruction.cxx:1485
 AliReconstruction.cxx:1486
 AliReconstruction.cxx:1487
 AliReconstruction.cxx:1488
 AliReconstruction.cxx:1489
 AliReconstruction.cxx:1490
 AliReconstruction.cxx:1491
 AliReconstruction.cxx:1492
 AliReconstruction.cxx:1493
 AliReconstruction.cxx:1494
 AliReconstruction.cxx:1495
 AliReconstruction.cxx:1496
 AliReconstruction.cxx:1497
 AliReconstruction.cxx:1498
 AliReconstruction.cxx:1499
 AliReconstruction.cxx:1500
 AliReconstruction.cxx:1501
 AliReconstruction.cxx:1502
 AliReconstruction.cxx:1503
 AliReconstruction.cxx:1504
 AliReconstruction.cxx:1505
 AliReconstruction.cxx:1506
 AliReconstruction.cxx:1507
 AliReconstruction.cxx:1508
 AliReconstruction.cxx:1509
 AliReconstruction.cxx:1510
 AliReconstruction.cxx:1511
 AliReconstruction.cxx:1512
 AliReconstruction.cxx:1513
 AliReconstruction.cxx:1514
 AliReconstruction.cxx:1515
 AliReconstruction.cxx:1516
 AliReconstruction.cxx:1517
 AliReconstruction.cxx:1518
 AliReconstruction.cxx:1519
 AliReconstruction.cxx:1520
 AliReconstruction.cxx:1521
 AliReconstruction.cxx:1522
 AliReconstruction.cxx:1523
 AliReconstruction.cxx:1524
 AliReconstruction.cxx:1525
 AliReconstruction.cxx:1526
 AliReconstruction.cxx:1527
 AliReconstruction.cxx:1528
 AliReconstruction.cxx:1529
 AliReconstruction.cxx:1530
 AliReconstruction.cxx:1531
 AliReconstruction.cxx:1532
 AliReconstruction.cxx:1533
 AliReconstruction.cxx:1534
 AliReconstruction.cxx:1535
 AliReconstruction.cxx:1536
 AliReconstruction.cxx:1537
 AliReconstruction.cxx:1538
 AliReconstruction.cxx:1539
 AliReconstruction.cxx:1540
 AliReconstruction.cxx:1541
 AliReconstruction.cxx:1542
 AliReconstruction.cxx:1543
 AliReconstruction.cxx:1544
 AliReconstruction.cxx:1545
 AliReconstruction.cxx:1546
 AliReconstruction.cxx:1547
 AliReconstruction.cxx:1548
 AliReconstruction.cxx:1549
 AliReconstruction.cxx:1550
 AliReconstruction.cxx:1551
 AliReconstruction.cxx:1552
 AliReconstruction.cxx:1553
 AliReconstruction.cxx:1554
 AliReconstruction.cxx:1555
 AliReconstruction.cxx:1556
 AliReconstruction.cxx:1557
 AliReconstruction.cxx:1558
 AliReconstruction.cxx:1559
 AliReconstruction.cxx:1560
 AliReconstruction.cxx:1561
 AliReconstruction.cxx:1562
 AliReconstruction.cxx:1563
 AliReconstruction.cxx:1564
 AliReconstruction.cxx:1565
 AliReconstruction.cxx:1566
 AliReconstruction.cxx:1567
 AliReconstruction.cxx:1568
 AliReconstruction.cxx:1569
 AliReconstruction.cxx:1570
 AliReconstruction.cxx:1571
 AliReconstruction.cxx:1572
 AliReconstruction.cxx:1573
 AliReconstruction.cxx:1574
 AliReconstruction.cxx:1575
 AliReconstruction.cxx:1576
 AliReconstruction.cxx:1577
 AliReconstruction.cxx:1578
 AliReconstruction.cxx:1579
 AliReconstruction.cxx:1580
 AliReconstruction.cxx:1581
 AliReconstruction.cxx:1582
 AliReconstruction.cxx:1583
 AliReconstruction.cxx:1584
 AliReconstruction.cxx:1585
 AliReconstruction.cxx:1586
 AliReconstruction.cxx:1587
 AliReconstruction.cxx:1588
 AliReconstruction.cxx:1589
 AliReconstruction.cxx:1590
 AliReconstruction.cxx:1591
 AliReconstruction.cxx:1592
 AliReconstruction.cxx:1593
 AliReconstruction.cxx:1594
 AliReconstruction.cxx:1595
 AliReconstruction.cxx:1596
 AliReconstruction.cxx:1597
 AliReconstruction.cxx:1598
 AliReconstruction.cxx:1599
 AliReconstruction.cxx:1600
 AliReconstruction.cxx:1601
 AliReconstruction.cxx:1602
 AliReconstruction.cxx:1603
 AliReconstruction.cxx:1604
 AliReconstruction.cxx:1605
 AliReconstruction.cxx:1606
 AliReconstruction.cxx:1607
 AliReconstruction.cxx:1608
 AliReconstruction.cxx:1609
 AliReconstruction.cxx:1610
 AliReconstruction.cxx:1611
 AliReconstruction.cxx:1612
 AliReconstruction.cxx:1613
 AliReconstruction.cxx:1614
 AliReconstruction.cxx:1615
 AliReconstruction.cxx:1616
 AliReconstruction.cxx:1617
 AliReconstruction.cxx:1618
 AliReconstruction.cxx:1619
 AliReconstruction.cxx:1620
 AliReconstruction.cxx:1621
 AliReconstruction.cxx:1622
 AliReconstruction.cxx:1623
 AliReconstruction.cxx:1624
 AliReconstruction.cxx:1625
 AliReconstruction.cxx:1626
 AliReconstruction.cxx:1627
 AliReconstruction.cxx:1628
 AliReconstruction.cxx:1629
 AliReconstruction.cxx:1630
 AliReconstruction.cxx:1631
 AliReconstruction.cxx:1632
 AliReconstruction.cxx:1633
 AliReconstruction.cxx:1634
 AliReconstruction.cxx:1635
 AliReconstruction.cxx:1636
 AliReconstruction.cxx:1637
 AliReconstruction.cxx:1638
 AliReconstruction.cxx:1639
 AliReconstruction.cxx:1640
 AliReconstruction.cxx:1641
 AliReconstruction.cxx:1642
 AliReconstruction.cxx:1643
 AliReconstruction.cxx:1644
 AliReconstruction.cxx:1645
 AliReconstruction.cxx:1646
 AliReconstruction.cxx:1647
 AliReconstruction.cxx:1648
 AliReconstruction.cxx:1649
 AliReconstruction.cxx:1650
 AliReconstruction.cxx:1651
 AliReconstruction.cxx:1652
 AliReconstruction.cxx:1653
 AliReconstruction.cxx:1654
 AliReconstruction.cxx:1655
 AliReconstruction.cxx:1656
 AliReconstruction.cxx:1657
 AliReconstruction.cxx:1658
 AliReconstruction.cxx:1659
 AliReconstruction.cxx:1660
 AliReconstruction.cxx:1661
 AliReconstruction.cxx:1662
 AliReconstruction.cxx:1663
 AliReconstruction.cxx:1664
 AliReconstruction.cxx:1665
 AliReconstruction.cxx:1666
 AliReconstruction.cxx:1667
 AliReconstruction.cxx:1668
 AliReconstruction.cxx:1669
 AliReconstruction.cxx:1670
 AliReconstruction.cxx:1671
 AliReconstruction.cxx:1672
 AliReconstruction.cxx:1673
 AliReconstruction.cxx:1674
 AliReconstruction.cxx:1675
 AliReconstruction.cxx:1676
 AliReconstruction.cxx:1677
 AliReconstruction.cxx:1678
 AliReconstruction.cxx:1679
 AliReconstruction.cxx:1680
 AliReconstruction.cxx:1681
 AliReconstruction.cxx:1682
 AliReconstruction.cxx:1683
 AliReconstruction.cxx:1684
 AliReconstruction.cxx:1685
 AliReconstruction.cxx:1686
 AliReconstruction.cxx:1687
 AliReconstruction.cxx:1688
 AliReconstruction.cxx:1689
 AliReconstruction.cxx:1690
 AliReconstruction.cxx:1691
 AliReconstruction.cxx:1692
 AliReconstruction.cxx:1693
 AliReconstruction.cxx:1694
 AliReconstruction.cxx:1695
 AliReconstruction.cxx:1696
 AliReconstruction.cxx:1697
 AliReconstruction.cxx:1698
 AliReconstruction.cxx:1699
 AliReconstruction.cxx:1700
 AliReconstruction.cxx:1701
 AliReconstruction.cxx:1702
 AliReconstruction.cxx:1703
 AliReconstruction.cxx:1704
 AliReconstruction.cxx:1705
 AliReconstruction.cxx:1706
 AliReconstruction.cxx:1707
 AliReconstruction.cxx:1708
 AliReconstruction.cxx:1709
 AliReconstruction.cxx:1710
 AliReconstruction.cxx:1711
 AliReconstruction.cxx:1712
 AliReconstruction.cxx:1713
 AliReconstruction.cxx:1714
 AliReconstruction.cxx:1715
 AliReconstruction.cxx:1716
 AliReconstruction.cxx:1717
 AliReconstruction.cxx:1718
 AliReconstruction.cxx:1719
 AliReconstruction.cxx:1720
 AliReconstruction.cxx:1721
 AliReconstruction.cxx:1722
 AliReconstruction.cxx:1723
 AliReconstruction.cxx:1724
 AliReconstruction.cxx:1725
 AliReconstruction.cxx:1726
 AliReconstruction.cxx:1727
 AliReconstruction.cxx:1728
 AliReconstruction.cxx:1729
 AliReconstruction.cxx:1730
 AliReconstruction.cxx:1731
 AliReconstruction.cxx:1732
 AliReconstruction.cxx:1733
 AliReconstruction.cxx:1734
 AliReconstruction.cxx:1735
 AliReconstruction.cxx:1736
 AliReconstruction.cxx:1737
 AliReconstruction.cxx:1738
 AliReconstruction.cxx:1739
 AliReconstruction.cxx:1740
 AliReconstruction.cxx:1741
 AliReconstruction.cxx:1742
 AliReconstruction.cxx:1743
 AliReconstruction.cxx:1744
 AliReconstruction.cxx:1745
 AliReconstruction.cxx:1746
 AliReconstruction.cxx:1747
 AliReconstruction.cxx:1748
 AliReconstruction.cxx:1749
 AliReconstruction.cxx:1750
 AliReconstruction.cxx:1751
 AliReconstruction.cxx:1752
 AliReconstruction.cxx:1753
 AliReconstruction.cxx:1754
 AliReconstruction.cxx:1755
 AliReconstruction.cxx:1756
 AliReconstruction.cxx:1757
 AliReconstruction.cxx:1758
 AliReconstruction.cxx:1759
 AliReconstruction.cxx:1760
 AliReconstruction.cxx:1761
 AliReconstruction.cxx:1762
 AliReconstruction.cxx:1763
 AliReconstruction.cxx:1764
 AliReconstruction.cxx:1765
 AliReconstruction.cxx:1766
 AliReconstruction.cxx:1767
 AliReconstruction.cxx:1768
 AliReconstruction.cxx:1769
 AliReconstruction.cxx:1770
 AliReconstruction.cxx:1771
 AliReconstruction.cxx:1772
 AliReconstruction.cxx:1773
 AliReconstruction.cxx:1774
 AliReconstruction.cxx:1775
 AliReconstruction.cxx:1776
 AliReconstruction.cxx:1777
 AliReconstruction.cxx:1778
 AliReconstruction.cxx:1779
 AliReconstruction.cxx:1780
 AliReconstruction.cxx:1781
 AliReconstruction.cxx:1782
 AliReconstruction.cxx:1783
 AliReconstruction.cxx:1784
 AliReconstruction.cxx:1785
 AliReconstruction.cxx:1786
 AliReconstruction.cxx:1787
 AliReconstruction.cxx:1788
 AliReconstruction.cxx:1789
 AliReconstruction.cxx:1790
 AliReconstruction.cxx:1791
 AliReconstruction.cxx:1792
 AliReconstruction.cxx:1793
 AliReconstruction.cxx:1794
 AliReconstruction.cxx:1795
 AliReconstruction.cxx:1796
 AliReconstruction.cxx:1797
 AliReconstruction.cxx:1798
 AliReconstruction.cxx:1799
 AliReconstruction.cxx:1800
 AliReconstruction.cxx:1801
 AliReconstruction.cxx:1802
 AliReconstruction.cxx:1803
 AliReconstruction.cxx:1804
 AliReconstruction.cxx:1805
 AliReconstruction.cxx:1806
 AliReconstruction.cxx:1807
 AliReconstruction.cxx:1808
 AliReconstruction.cxx:1809
 AliReconstruction.cxx:1810
 AliReconstruction.cxx:1811
 AliReconstruction.cxx:1812
 AliReconstruction.cxx:1813
 AliReconstruction.cxx:1814
 AliReconstruction.cxx:1815
 AliReconstruction.cxx:1816
 AliReconstruction.cxx:1817
 AliReconstruction.cxx:1818
 AliReconstruction.cxx:1819
 AliReconstruction.cxx:1820
 AliReconstruction.cxx:1821
 AliReconstruction.cxx:1822
 AliReconstruction.cxx:1823
 AliReconstruction.cxx:1824
 AliReconstruction.cxx:1825
 AliReconstruction.cxx:1826
 AliReconstruction.cxx:1827
 AliReconstruction.cxx:1828
 AliReconstruction.cxx:1829
 AliReconstruction.cxx:1830
 AliReconstruction.cxx:1831
 AliReconstruction.cxx:1832
 AliReconstruction.cxx:1833
 AliReconstruction.cxx:1834
 AliReconstruction.cxx:1835
 AliReconstruction.cxx:1836
 AliReconstruction.cxx:1837
 AliReconstruction.cxx:1838
 AliReconstruction.cxx:1839
 AliReconstruction.cxx:1840
 AliReconstruction.cxx:1841
 AliReconstruction.cxx:1842
 AliReconstruction.cxx:1843
 AliReconstruction.cxx:1844
 AliReconstruction.cxx:1845
 AliReconstruction.cxx:1846
 AliReconstruction.cxx:1847
 AliReconstruction.cxx:1848
 AliReconstruction.cxx:1849
 AliReconstruction.cxx:1850
 AliReconstruction.cxx:1851
 AliReconstruction.cxx:1852
 AliReconstruction.cxx:1853
 AliReconstruction.cxx:1854
 AliReconstruction.cxx:1855
 AliReconstruction.cxx:1856
 AliReconstruction.cxx:1857
 AliReconstruction.cxx:1858
 AliReconstruction.cxx:1859
 AliReconstruction.cxx:1860
 AliReconstruction.cxx:1861
 AliReconstruction.cxx:1862
 AliReconstruction.cxx:1863
 AliReconstruction.cxx:1864
 AliReconstruction.cxx:1865
 AliReconstruction.cxx:1866
 AliReconstruction.cxx:1867
 AliReconstruction.cxx:1868
 AliReconstruction.cxx:1869
 AliReconstruction.cxx:1870
 AliReconstruction.cxx:1871
 AliReconstruction.cxx:1872
 AliReconstruction.cxx:1873
 AliReconstruction.cxx:1874
 AliReconstruction.cxx:1875
 AliReconstruction.cxx:1876
 AliReconstruction.cxx:1877
 AliReconstruction.cxx:1878
 AliReconstruction.cxx:1879
 AliReconstruction.cxx:1880
 AliReconstruction.cxx:1881
 AliReconstruction.cxx:1882
 AliReconstruction.cxx:1883
 AliReconstruction.cxx:1884
 AliReconstruction.cxx:1885
 AliReconstruction.cxx:1886
 AliReconstruction.cxx:1887
 AliReconstruction.cxx:1888
 AliReconstruction.cxx:1889
 AliReconstruction.cxx:1890
 AliReconstruction.cxx:1891
 AliReconstruction.cxx:1892
 AliReconstruction.cxx:1893
 AliReconstruction.cxx:1894
 AliReconstruction.cxx:1895
 AliReconstruction.cxx:1896
 AliReconstruction.cxx:1897
 AliReconstruction.cxx:1898
 AliReconstruction.cxx:1899
 AliReconstruction.cxx:1900
 AliReconstruction.cxx:1901
 AliReconstruction.cxx:1902
 AliReconstruction.cxx:1903
 AliReconstruction.cxx:1904
 AliReconstruction.cxx:1905
 AliReconstruction.cxx:1906
 AliReconstruction.cxx:1907
 AliReconstruction.cxx:1908
 AliReconstruction.cxx:1909
 AliReconstruction.cxx:1910
 AliReconstruction.cxx:1911
 AliReconstruction.cxx:1912
 AliReconstruction.cxx:1913
 AliReconstruction.cxx:1914
 AliReconstruction.cxx:1915
 AliReconstruction.cxx:1916
 AliReconstruction.cxx:1917
 AliReconstruction.cxx:1918
 AliReconstruction.cxx:1919
 AliReconstruction.cxx:1920
 AliReconstruction.cxx:1921
 AliReconstruction.cxx:1922
 AliReconstruction.cxx:1923
 AliReconstruction.cxx:1924
 AliReconstruction.cxx:1925
 AliReconstruction.cxx:1926
 AliReconstruction.cxx:1927
 AliReconstruction.cxx:1928
 AliReconstruction.cxx:1929
 AliReconstruction.cxx:1930
 AliReconstruction.cxx:1931
 AliReconstruction.cxx:1932
 AliReconstruction.cxx:1933
 AliReconstruction.cxx:1934
 AliReconstruction.cxx:1935
 AliReconstruction.cxx:1936
 AliReconstruction.cxx:1937
 AliReconstruction.cxx:1938
 AliReconstruction.cxx:1939
 AliReconstruction.cxx:1940
 AliReconstruction.cxx:1941
 AliReconstruction.cxx:1942
 AliReconstruction.cxx:1943
 AliReconstruction.cxx:1944
 AliReconstruction.cxx:1945
 AliReconstruction.cxx:1946
 AliReconstruction.cxx:1947
 AliReconstruction.cxx:1948
 AliReconstruction.cxx:1949
 AliReconstruction.cxx:1950
 AliReconstruction.cxx:1951
 AliReconstruction.cxx:1952
 AliReconstruction.cxx:1953
 AliReconstruction.cxx:1954
 AliReconstruction.cxx:1955
 AliReconstruction.cxx:1956
 AliReconstruction.cxx:1957
 AliReconstruction.cxx:1958
 AliReconstruction.cxx:1959
 AliReconstruction.cxx:1960
 AliReconstruction.cxx:1961
 AliReconstruction.cxx:1962
 AliReconstruction.cxx:1963
 AliReconstruction.cxx:1964
 AliReconstruction.cxx:1965
 AliReconstruction.cxx:1966
 AliReconstruction.cxx:1967
 AliReconstruction.cxx:1968
 AliReconstruction.cxx:1969
 AliReconstruction.cxx:1970
 AliReconstruction.cxx:1971
 AliReconstruction.cxx:1972
 AliReconstruction.cxx:1973
 AliReconstruction.cxx:1974
 AliReconstruction.cxx:1975
 AliReconstruction.cxx:1976
 AliReconstruction.cxx:1977
 AliReconstruction.cxx:1978
 AliReconstruction.cxx:1979
 AliReconstruction.cxx:1980
 AliReconstruction.cxx:1981
 AliReconstruction.cxx:1982
 AliReconstruction.cxx:1983
 AliReconstruction.cxx:1984
 AliReconstruction.cxx:1985
 AliReconstruction.cxx:1986
 AliReconstruction.cxx:1987
 AliReconstruction.cxx:1988
 AliReconstruction.cxx:1989
 AliReconstruction.cxx:1990
 AliReconstruction.cxx:1991
 AliReconstruction.cxx:1992
 AliReconstruction.cxx:1993
 AliReconstruction.cxx:1994
 AliReconstruction.cxx:1995
 AliReconstruction.cxx:1996
 AliReconstruction.cxx:1997
 AliReconstruction.cxx:1998
 AliReconstruction.cxx:1999
 AliReconstruction.cxx:2000
 AliReconstruction.cxx:2001
 AliReconstruction.cxx:2002
 AliReconstruction.cxx:2003
 AliReconstruction.cxx:2004
 AliReconstruction.cxx:2005
 AliReconstruction.cxx:2006
 AliReconstruction.cxx:2007
 AliReconstruction.cxx:2008
 AliReconstruction.cxx:2009
 AliReconstruction.cxx:2010
 AliReconstruction.cxx:2011
 AliReconstruction.cxx:2012
 AliReconstruction.cxx:2013
 AliReconstruction.cxx:2014
 AliReconstruction.cxx:2015
 AliReconstruction.cxx:2016
 AliReconstruction.cxx:2017
 AliReconstruction.cxx:2018
 AliReconstruction.cxx:2019
 AliReconstruction.cxx:2020
 AliReconstruction.cxx:2021
 AliReconstruction.cxx:2022
 AliReconstruction.cxx:2023
 AliReconstruction.cxx:2024
 AliReconstruction.cxx:2025
 AliReconstruction.cxx:2026
 AliReconstruction.cxx:2027
 AliReconstruction.cxx:2028
 AliReconstruction.cxx:2029
 AliReconstruction.cxx:2030
 AliReconstruction.cxx:2031
 AliReconstruction.cxx:2032
 AliReconstruction.cxx:2033
 AliReconstruction.cxx:2034
 AliReconstruction.cxx:2035
 AliReconstruction.cxx:2036
 AliReconstruction.cxx:2037
 AliReconstruction.cxx:2038
 AliReconstruction.cxx:2039
 AliReconstruction.cxx:2040
 AliReconstruction.cxx:2041
 AliReconstruction.cxx:2042
 AliReconstruction.cxx:2043
 AliReconstruction.cxx:2044
 AliReconstruction.cxx:2045
 AliReconstruction.cxx:2046
 AliReconstruction.cxx:2047
 AliReconstruction.cxx:2048
 AliReconstruction.cxx:2049
 AliReconstruction.cxx:2050
 AliReconstruction.cxx:2051
 AliReconstruction.cxx:2052
 AliReconstruction.cxx:2053
 AliReconstruction.cxx:2054
 AliReconstruction.cxx:2055
 AliReconstruction.cxx:2056
 AliReconstruction.cxx:2057
 AliReconstruction.cxx:2058
 AliReconstruction.cxx:2059
 AliReconstruction.cxx:2060
 AliReconstruction.cxx:2061
 AliReconstruction.cxx:2062
 AliReconstruction.cxx:2063
 AliReconstruction.cxx:2064
 AliReconstruction.cxx:2065
 AliReconstruction.cxx:2066
 AliReconstruction.cxx:2067
 AliReconstruction.cxx:2068
 AliReconstruction.cxx:2069
 AliReconstruction.cxx:2070
 AliReconstruction.cxx:2071
 AliReconstruction.cxx:2072
 AliReconstruction.cxx:2073
 AliReconstruction.cxx:2074
 AliReconstruction.cxx:2075
 AliReconstruction.cxx:2076
 AliReconstruction.cxx:2077
 AliReconstruction.cxx:2078
 AliReconstruction.cxx:2079
 AliReconstruction.cxx:2080
 AliReconstruction.cxx:2081
 AliReconstruction.cxx:2082
 AliReconstruction.cxx:2083
 AliReconstruction.cxx:2084
 AliReconstruction.cxx:2085
 AliReconstruction.cxx:2086
 AliReconstruction.cxx:2087
 AliReconstruction.cxx:2088
 AliReconstruction.cxx:2089
 AliReconstruction.cxx:2090
 AliReconstruction.cxx:2091
 AliReconstruction.cxx:2092
 AliReconstruction.cxx:2093
 AliReconstruction.cxx:2094
 AliReconstruction.cxx:2095
 AliReconstruction.cxx:2096
 AliReconstruction.cxx:2097
 AliReconstruction.cxx:2098
 AliReconstruction.cxx:2099
 AliReconstruction.cxx:2100
 AliReconstruction.cxx:2101
 AliReconstruction.cxx:2102
 AliReconstruction.cxx:2103
 AliReconstruction.cxx:2104
 AliReconstruction.cxx:2105
 AliReconstruction.cxx:2106
 AliReconstruction.cxx:2107
 AliReconstruction.cxx:2108
 AliReconstruction.cxx:2109
 AliReconstruction.cxx:2110
 AliReconstruction.cxx:2111
 AliReconstruction.cxx:2112
 AliReconstruction.cxx:2113
 AliReconstruction.cxx:2114
 AliReconstruction.cxx:2115
 AliReconstruction.cxx:2116
 AliReconstruction.cxx:2117
 AliReconstruction.cxx:2118
 AliReconstruction.cxx:2119
 AliReconstruction.cxx:2120
 AliReconstruction.cxx:2121
 AliReconstruction.cxx:2122
 AliReconstruction.cxx:2123
 AliReconstruction.cxx:2124
 AliReconstruction.cxx:2125
 AliReconstruction.cxx:2126
 AliReconstruction.cxx:2127
 AliReconstruction.cxx:2128
 AliReconstruction.cxx:2129
 AliReconstruction.cxx:2130
 AliReconstruction.cxx:2131
 AliReconstruction.cxx:2132
 AliReconstruction.cxx:2133
 AliReconstruction.cxx:2134
 AliReconstruction.cxx:2135
 AliReconstruction.cxx:2136
 AliReconstruction.cxx:2137
 AliReconstruction.cxx:2138
 AliReconstruction.cxx:2139
 AliReconstruction.cxx:2140
 AliReconstruction.cxx:2141
 AliReconstruction.cxx:2142
 AliReconstruction.cxx:2143
 AliReconstruction.cxx:2144
 AliReconstruction.cxx:2145
 AliReconstruction.cxx:2146
 AliReconstruction.cxx:2147
 AliReconstruction.cxx:2148
 AliReconstruction.cxx:2149
 AliReconstruction.cxx:2150
 AliReconstruction.cxx:2151
 AliReconstruction.cxx:2152
 AliReconstruction.cxx:2153
 AliReconstruction.cxx:2154
 AliReconstruction.cxx:2155
 AliReconstruction.cxx:2156
 AliReconstruction.cxx:2157
 AliReconstruction.cxx:2158
 AliReconstruction.cxx:2159
 AliReconstruction.cxx:2160
 AliReconstruction.cxx:2161
 AliReconstruction.cxx:2162
 AliReconstruction.cxx:2163
 AliReconstruction.cxx:2164
 AliReconstruction.cxx:2165
 AliReconstruction.cxx:2166
 AliReconstruction.cxx:2167
 AliReconstruction.cxx:2168
 AliReconstruction.cxx:2169
 AliReconstruction.cxx:2170
 AliReconstruction.cxx:2171
 AliReconstruction.cxx:2172
 AliReconstruction.cxx:2173
 AliReconstruction.cxx:2174
 AliReconstruction.cxx:2175
 AliReconstruction.cxx:2176
 AliReconstruction.cxx:2177
 AliReconstruction.cxx:2178
 AliReconstruction.cxx:2179
 AliReconstruction.cxx:2180
 AliReconstruction.cxx:2181
 AliReconstruction.cxx:2182
 AliReconstruction.cxx:2183
 AliReconstruction.cxx:2184
 AliReconstruction.cxx:2185
 AliReconstruction.cxx:2186
 AliReconstruction.cxx:2187
 AliReconstruction.cxx:2188
 AliReconstruction.cxx:2189
 AliReconstruction.cxx:2190
 AliReconstruction.cxx:2191
 AliReconstruction.cxx:2192
 AliReconstruction.cxx:2193
 AliReconstruction.cxx:2194
 AliReconstruction.cxx:2195
 AliReconstruction.cxx:2196
 AliReconstruction.cxx:2197
 AliReconstruction.cxx:2198
 AliReconstruction.cxx:2199
 AliReconstruction.cxx:2200
 AliReconstruction.cxx:2201
 AliReconstruction.cxx:2202
 AliReconstruction.cxx:2203
 AliReconstruction.cxx:2204
 AliReconstruction.cxx:2205
 AliReconstruction.cxx:2206
 AliReconstruction.cxx:2207
 AliReconstruction.cxx:2208
 AliReconstruction.cxx:2209
 AliReconstruction.cxx:2210
 AliReconstruction.cxx:2211
 AliReconstruction.cxx:2212
 AliReconstruction.cxx:2213
 AliReconstruction.cxx:2214
 AliReconstruction.cxx:2215
 AliReconstruction.cxx:2216
 AliReconstruction.cxx:2217
 AliReconstruction.cxx:2218
 AliReconstruction.cxx:2219
 AliReconstruction.cxx:2220
 AliReconstruction.cxx:2221
 AliReconstruction.cxx:2222
 AliReconstruction.cxx:2223
 AliReconstruction.cxx:2224
 AliReconstruction.cxx:2225
 AliReconstruction.cxx:2226
 AliReconstruction.cxx:2227
 AliReconstruction.cxx:2228
 AliReconstruction.cxx:2229
 AliReconstruction.cxx:2230
 AliReconstruction.cxx:2231
 AliReconstruction.cxx:2232
 AliReconstruction.cxx:2233
 AliReconstruction.cxx:2234
 AliReconstruction.cxx:2235
 AliReconstruction.cxx:2236
 AliReconstruction.cxx:2237
 AliReconstruction.cxx:2238
 AliReconstruction.cxx:2239
 AliReconstruction.cxx:2240
 AliReconstruction.cxx:2241
 AliReconstruction.cxx:2242
 AliReconstruction.cxx:2243
 AliReconstruction.cxx:2244
 AliReconstruction.cxx:2245
 AliReconstruction.cxx:2246
 AliReconstruction.cxx:2247
 AliReconstruction.cxx:2248
 AliReconstruction.cxx:2249
 AliReconstruction.cxx:2250
 AliReconstruction.cxx:2251
 AliReconstruction.cxx:2252
 AliReconstruction.cxx:2253
 AliReconstruction.cxx:2254
 AliReconstruction.cxx:2255
 AliReconstruction.cxx:2256
 AliReconstruction.cxx:2257
 AliReconstruction.cxx:2258
 AliReconstruction.cxx:2259
 AliReconstruction.cxx:2260
 AliReconstruction.cxx:2261
 AliReconstruction.cxx:2262
 AliReconstruction.cxx:2263
 AliReconstruction.cxx:2264
 AliReconstruction.cxx:2265
 AliReconstruction.cxx:2266
 AliReconstruction.cxx:2267
 AliReconstruction.cxx:2268
 AliReconstruction.cxx:2269
 AliReconstruction.cxx:2270
 AliReconstruction.cxx:2271
 AliReconstruction.cxx:2272
 AliReconstruction.cxx:2273
 AliReconstruction.cxx:2274
 AliReconstruction.cxx:2275
 AliReconstruction.cxx:2276
 AliReconstruction.cxx:2277
 AliReconstruction.cxx:2278
 AliReconstruction.cxx:2279
 AliReconstruction.cxx:2280
 AliReconstruction.cxx:2281
 AliReconstruction.cxx:2282
 AliReconstruction.cxx:2283
 AliReconstruction.cxx:2284
 AliReconstruction.cxx:2285
 AliReconstruction.cxx:2286
 AliReconstruction.cxx:2287
 AliReconstruction.cxx:2288
 AliReconstruction.cxx:2289
 AliReconstruction.cxx:2290
 AliReconstruction.cxx:2291
 AliReconstruction.cxx:2292
 AliReconstruction.cxx:2293
 AliReconstruction.cxx:2294
 AliReconstruction.cxx:2295
 AliReconstruction.cxx:2296
 AliReconstruction.cxx:2297
 AliReconstruction.cxx:2298
 AliReconstruction.cxx:2299
 AliReconstruction.cxx:2300
 AliReconstruction.cxx:2301
 AliReconstruction.cxx:2302
 AliReconstruction.cxx:2303
 AliReconstruction.cxx:2304
 AliReconstruction.cxx:2305
 AliReconstruction.cxx:2306
 AliReconstruction.cxx:2307
 AliReconstruction.cxx:2308
 AliReconstruction.cxx:2309
 AliReconstruction.cxx:2310
 AliReconstruction.cxx:2311
 AliReconstruction.cxx:2312
 AliReconstruction.cxx:2313
 AliReconstruction.cxx:2314
 AliReconstruction.cxx:2315
 AliReconstruction.cxx:2316
 AliReconstruction.cxx:2317
 AliReconstruction.cxx:2318
 AliReconstruction.cxx:2319
 AliReconstruction.cxx:2320
 AliReconstruction.cxx:2321
 AliReconstruction.cxx:2322
 AliReconstruction.cxx:2323
 AliReconstruction.cxx:2324
 AliReconstruction.cxx:2325
 AliReconstruction.cxx:2326
 AliReconstruction.cxx:2327
 AliReconstruction.cxx:2328
 AliReconstruction.cxx:2329
 AliReconstruction.cxx:2330
 AliReconstruction.cxx:2331
 AliReconstruction.cxx:2332
 AliReconstruction.cxx:2333
 AliReconstruction.cxx:2334
 AliReconstruction.cxx:2335
 AliReconstruction.cxx:2336
 AliReconstruction.cxx:2337
 AliReconstruction.cxx:2338
 AliReconstruction.cxx:2339
 AliReconstruction.cxx:2340
 AliReconstruction.cxx:2341
 AliReconstruction.cxx:2342
 AliReconstruction.cxx:2343
 AliReconstruction.cxx:2344
 AliReconstruction.cxx:2345
 AliReconstruction.cxx:2346
 AliReconstruction.cxx:2347
 AliReconstruction.cxx:2348
 AliReconstruction.cxx:2349
 AliReconstruction.cxx:2350
 AliReconstruction.cxx:2351
 AliReconstruction.cxx:2352
 AliReconstruction.cxx:2353
 AliReconstruction.cxx:2354
 AliReconstruction.cxx:2355
 AliReconstruction.cxx:2356
 AliReconstruction.cxx:2357
 AliReconstruction.cxx:2358
 AliReconstruction.cxx:2359
 AliReconstruction.cxx:2360
 AliReconstruction.cxx:2361
 AliReconstruction.cxx:2362
 AliReconstruction.cxx:2363
 AliReconstruction.cxx:2364
 AliReconstruction.cxx:2365
 AliReconstruction.cxx:2366
 AliReconstruction.cxx:2367
 AliReconstruction.cxx:2368
 AliReconstruction.cxx:2369
 AliReconstruction.cxx:2370
 AliReconstruction.cxx:2371
 AliReconstruction.cxx:2372
 AliReconstruction.cxx:2373
 AliReconstruction.cxx:2374
 AliReconstruction.cxx:2375
 AliReconstruction.cxx:2376
 AliReconstruction.cxx:2377
 AliReconstruction.cxx:2378
 AliReconstruction.cxx:2379
 AliReconstruction.cxx:2380
 AliReconstruction.cxx:2381
 AliReconstruction.cxx:2382
 AliReconstruction.cxx:2383
 AliReconstruction.cxx:2384
 AliReconstruction.cxx:2385
 AliReconstruction.cxx:2386
 AliReconstruction.cxx:2387
 AliReconstruction.cxx:2388
 AliReconstruction.cxx:2389
 AliReconstruction.cxx:2390
 AliReconstruction.cxx:2391
 AliReconstruction.cxx:2392
 AliReconstruction.cxx:2393
 AliReconstruction.cxx:2394
 AliReconstruction.cxx:2395
 AliReconstruction.cxx:2396
 AliReconstruction.cxx:2397
 AliReconstruction.cxx:2398
 AliReconstruction.cxx:2399
 AliReconstruction.cxx:2400
 AliReconstruction.cxx:2401
 AliReconstruction.cxx:2402
 AliReconstruction.cxx:2403
 AliReconstruction.cxx:2404
 AliReconstruction.cxx:2405
 AliReconstruction.cxx:2406
 AliReconstruction.cxx:2407
 AliReconstruction.cxx:2408
 AliReconstruction.cxx:2409
 AliReconstruction.cxx:2410
 AliReconstruction.cxx:2411
 AliReconstruction.cxx:2412
 AliReconstruction.cxx:2413
 AliReconstruction.cxx:2414
 AliReconstruction.cxx:2415
 AliReconstruction.cxx:2416
 AliReconstruction.cxx:2417
 AliReconstruction.cxx:2418
 AliReconstruction.cxx:2419
 AliReconstruction.cxx:2420
 AliReconstruction.cxx:2421
 AliReconstruction.cxx:2422
 AliReconstruction.cxx:2423
 AliReconstruction.cxx:2424
 AliReconstruction.cxx:2425
 AliReconstruction.cxx:2426
 AliReconstruction.cxx:2427
 AliReconstruction.cxx:2428
 AliReconstruction.cxx:2429
 AliReconstruction.cxx:2430
 AliReconstruction.cxx:2431
 AliReconstruction.cxx:2432
 AliReconstruction.cxx:2433
 AliReconstruction.cxx:2434
 AliReconstruction.cxx:2435
 AliReconstruction.cxx:2436
 AliReconstruction.cxx:2437
 AliReconstruction.cxx:2438
 AliReconstruction.cxx:2439
 AliReconstruction.cxx:2440
 AliReconstruction.cxx:2441
 AliReconstruction.cxx:2442
 AliReconstruction.cxx:2443
 AliReconstruction.cxx:2444
 AliReconstruction.cxx:2445
 AliReconstruction.cxx:2446
 AliReconstruction.cxx:2447
 AliReconstruction.cxx:2448
 AliReconstruction.cxx:2449
 AliReconstruction.cxx:2450
 AliReconstruction.cxx:2451
 AliReconstruction.cxx:2452
 AliReconstruction.cxx:2453
 AliReconstruction.cxx:2454
 AliReconstruction.cxx:2455
 AliReconstruction.cxx:2456
 AliReconstruction.cxx:2457
 AliReconstruction.cxx:2458
 AliReconstruction.cxx:2459
 AliReconstruction.cxx:2460
 AliReconstruction.cxx:2461
 AliReconstruction.cxx:2462
 AliReconstruction.cxx:2463
 AliReconstruction.cxx:2464
 AliReconstruction.cxx:2465
 AliReconstruction.cxx:2466
 AliReconstruction.cxx:2467
 AliReconstruction.cxx:2468
 AliReconstruction.cxx:2469
 AliReconstruction.cxx:2470
 AliReconstruction.cxx:2471
 AliReconstruction.cxx:2472
 AliReconstruction.cxx:2473
 AliReconstruction.cxx:2474
 AliReconstruction.cxx:2475
 AliReconstruction.cxx:2476
 AliReconstruction.cxx:2477
 AliReconstruction.cxx:2478
 AliReconstruction.cxx:2479
 AliReconstruction.cxx:2480
 AliReconstruction.cxx:2481
 AliReconstruction.cxx:2482
 AliReconstruction.cxx:2483
 AliReconstruction.cxx:2484
 AliReconstruction.cxx:2485
 AliReconstruction.cxx:2486
 AliReconstruction.cxx:2487
 AliReconstruction.cxx:2488
 AliReconstruction.cxx:2489
 AliReconstruction.cxx:2490
 AliReconstruction.cxx:2491
 AliReconstruction.cxx:2492
 AliReconstruction.cxx:2493
 AliReconstruction.cxx:2494
 AliReconstruction.cxx:2495
 AliReconstruction.cxx:2496
 AliReconstruction.cxx:2497
 AliReconstruction.cxx:2498
 AliReconstruction.cxx:2499
 AliReconstruction.cxx:2500
 AliReconstruction.cxx:2501
 AliReconstruction.cxx:2502
 AliReconstruction.cxx:2503
 AliReconstruction.cxx:2504
 AliReconstruction.cxx:2505
 AliReconstruction.cxx:2506
 AliReconstruction.cxx:2507
 AliReconstruction.cxx:2508
 AliReconstruction.cxx:2509
 AliReconstruction.cxx:2510
 AliReconstruction.cxx:2511
 AliReconstruction.cxx:2512
 AliReconstruction.cxx:2513
 AliReconstruction.cxx:2514
 AliReconstruction.cxx:2515
 AliReconstruction.cxx:2516
 AliReconstruction.cxx:2517
 AliReconstruction.cxx:2518
 AliReconstruction.cxx:2519
 AliReconstruction.cxx:2520
 AliReconstruction.cxx:2521
 AliReconstruction.cxx:2522
 AliReconstruction.cxx:2523
 AliReconstruction.cxx:2524
 AliReconstruction.cxx:2525
 AliReconstruction.cxx:2526
 AliReconstruction.cxx:2527
 AliReconstruction.cxx:2528
 AliReconstruction.cxx:2529
 AliReconstruction.cxx:2530
 AliReconstruction.cxx:2531
 AliReconstruction.cxx:2532
 AliReconstruction.cxx:2533
 AliReconstruction.cxx:2534
 AliReconstruction.cxx:2535
 AliReconstruction.cxx:2536
 AliReconstruction.cxx:2537
 AliReconstruction.cxx:2538
 AliReconstruction.cxx:2539
 AliReconstruction.cxx:2540
 AliReconstruction.cxx:2541
 AliReconstruction.cxx:2542
 AliReconstruction.cxx:2543
 AliReconstruction.cxx:2544
 AliReconstruction.cxx:2545
 AliReconstruction.cxx:2546
 AliReconstruction.cxx:2547
 AliReconstruction.cxx:2548
 AliReconstruction.cxx:2549
 AliReconstruction.cxx:2550
 AliReconstruction.cxx:2551
 AliReconstruction.cxx:2552
 AliReconstruction.cxx:2553
 AliReconstruction.cxx:2554
 AliReconstruction.cxx:2555
 AliReconstruction.cxx:2556
 AliReconstruction.cxx:2557
 AliReconstruction.cxx:2558
 AliReconstruction.cxx:2559
 AliReconstruction.cxx:2560
 AliReconstruction.cxx:2561
 AliReconstruction.cxx:2562
 AliReconstruction.cxx:2563
 AliReconstruction.cxx:2564
 AliReconstruction.cxx:2565
 AliReconstruction.cxx:2566
 AliReconstruction.cxx:2567
 AliReconstruction.cxx:2568
 AliReconstruction.cxx:2569
 AliReconstruction.cxx:2570
 AliReconstruction.cxx:2571
 AliReconstruction.cxx:2572
 AliReconstruction.cxx:2573
 AliReconstruction.cxx:2574
 AliReconstruction.cxx:2575
 AliReconstruction.cxx:2576
 AliReconstruction.cxx:2577
 AliReconstruction.cxx:2578
 AliReconstruction.cxx:2579
 AliReconstruction.cxx:2580
 AliReconstruction.cxx:2581
 AliReconstruction.cxx:2582
 AliReconstruction.cxx:2583
 AliReconstruction.cxx:2584
 AliReconstruction.cxx:2585
 AliReconstruction.cxx:2586
 AliReconstruction.cxx:2587
 AliReconstruction.cxx:2588
 AliReconstruction.cxx:2589
 AliReconstruction.cxx:2590
 AliReconstruction.cxx:2591
 AliReconstruction.cxx:2592
 AliReconstruction.cxx:2593
 AliReconstruction.cxx:2594
 AliReconstruction.cxx:2595
 AliReconstruction.cxx:2596
 AliReconstruction.cxx:2597
 AliReconstruction.cxx:2598
 AliReconstruction.cxx:2599
 AliReconstruction.cxx:2600
 AliReconstruction.cxx:2601
 AliReconstruction.cxx:2602
 AliReconstruction.cxx:2603
 AliReconstruction.cxx:2604
 AliReconstruction.cxx:2605
 AliReconstruction.cxx:2606
 AliReconstruction.cxx:2607
 AliReconstruction.cxx:2608
 AliReconstruction.cxx:2609
 AliReconstruction.cxx:2610
 AliReconstruction.cxx:2611
 AliReconstruction.cxx:2612
 AliReconstruction.cxx:2613
 AliReconstruction.cxx:2614
 AliReconstruction.cxx:2615
 AliReconstruction.cxx:2616
 AliReconstruction.cxx:2617
 AliReconstruction.cxx:2618
 AliReconstruction.cxx:2619
 AliReconstruction.cxx:2620
 AliReconstruction.cxx:2621
 AliReconstruction.cxx:2622
 AliReconstruction.cxx:2623
 AliReconstruction.cxx:2624
 AliReconstruction.cxx:2625
 AliReconstruction.cxx:2626
 AliReconstruction.cxx:2627
 AliReconstruction.cxx:2628
 AliReconstruction.cxx:2629
 AliReconstruction.cxx:2630
 AliReconstruction.cxx:2631
 AliReconstruction.cxx:2632
 AliReconstruction.cxx:2633
 AliReconstruction.cxx:2634
 AliReconstruction.cxx:2635
 AliReconstruction.cxx:2636
 AliReconstruction.cxx:2637
 AliReconstruction.cxx:2638
 AliReconstruction.cxx:2639
 AliReconstruction.cxx:2640
 AliReconstruction.cxx:2641
 AliReconstruction.cxx:2642
 AliReconstruction.cxx:2643
 AliReconstruction.cxx:2644
 AliReconstruction.cxx:2645
 AliReconstruction.cxx:2646
 AliReconstruction.cxx:2647
 AliReconstruction.cxx:2648
 AliReconstruction.cxx:2649
 AliReconstruction.cxx:2650
 AliReconstruction.cxx:2651
 AliReconstruction.cxx:2652
 AliReconstruction.cxx:2653
 AliReconstruction.cxx:2654
 AliReconstruction.cxx:2655
 AliReconstruction.cxx:2656
 AliReconstruction.cxx:2657
 AliReconstruction.cxx:2658
 AliReconstruction.cxx:2659
 AliReconstruction.cxx:2660
 AliReconstruction.cxx:2661
 AliReconstruction.cxx:2662
 AliReconstruction.cxx:2663
 AliReconstruction.cxx:2664
 AliReconstruction.cxx:2665
 AliReconstruction.cxx:2666
 AliReconstruction.cxx:2667
 AliReconstruction.cxx:2668
 AliReconstruction.cxx:2669
 AliReconstruction.cxx:2670
 AliReconstruction.cxx:2671
 AliReconstruction.cxx:2672
 AliReconstruction.cxx:2673
 AliReconstruction.cxx:2674
 AliReconstruction.cxx:2675
 AliReconstruction.cxx:2676
 AliReconstruction.cxx:2677
 AliReconstruction.cxx:2678
 AliReconstruction.cxx:2679
 AliReconstruction.cxx:2680
 AliReconstruction.cxx:2681
 AliReconstruction.cxx:2682
 AliReconstruction.cxx:2683
 AliReconstruction.cxx:2684
 AliReconstruction.cxx:2685
 AliReconstruction.cxx:2686
 AliReconstruction.cxx:2687
 AliReconstruction.cxx:2688
 AliReconstruction.cxx:2689
 AliReconstruction.cxx:2690
 AliReconstruction.cxx:2691
 AliReconstruction.cxx:2692
 AliReconstruction.cxx:2693
 AliReconstruction.cxx:2694
 AliReconstruction.cxx:2695
 AliReconstruction.cxx:2696
 AliReconstruction.cxx:2697
 AliReconstruction.cxx:2698
 AliReconstruction.cxx:2699
 AliReconstruction.cxx:2700
 AliReconstruction.cxx:2701
 AliReconstruction.cxx:2702
 AliReconstruction.cxx:2703
 AliReconstruction.cxx:2704
 AliReconstruction.cxx:2705
 AliReconstruction.cxx:2706
 AliReconstruction.cxx:2707
 AliReconstruction.cxx:2708
 AliReconstruction.cxx:2709
 AliReconstruction.cxx:2710
 AliReconstruction.cxx:2711
 AliReconstruction.cxx:2712
 AliReconstruction.cxx:2713
 AliReconstruction.cxx:2714
 AliReconstruction.cxx:2715
 AliReconstruction.cxx:2716
 AliReconstruction.cxx:2717
 AliReconstruction.cxx:2718
 AliReconstruction.cxx:2719
 AliReconstruction.cxx:2720
 AliReconstruction.cxx:2721
 AliReconstruction.cxx:2722
 AliReconstruction.cxx:2723
 AliReconstruction.cxx:2724
 AliReconstruction.cxx:2725
 AliReconstruction.cxx:2726
 AliReconstruction.cxx:2727
 AliReconstruction.cxx:2728
 AliReconstruction.cxx:2729
 AliReconstruction.cxx:2730
 AliReconstruction.cxx:2731
 AliReconstruction.cxx:2732
 AliReconstruction.cxx:2733
 AliReconstruction.cxx:2734
 AliReconstruction.cxx:2735
 AliReconstruction.cxx:2736
 AliReconstruction.cxx:2737
 AliReconstruction.cxx:2738
 AliReconstruction.cxx:2739
 AliReconstruction.cxx:2740
 AliReconstruction.cxx:2741
 AliReconstruction.cxx:2742
 AliReconstruction.cxx:2743
 AliReconstruction.cxx:2744
 AliReconstruction.cxx:2745
 AliReconstruction.cxx:2746
 AliReconstruction.cxx:2747
 AliReconstruction.cxx:2748
 AliReconstruction.cxx:2749
 AliReconstruction.cxx:2750
 AliReconstruction.cxx:2751
 AliReconstruction.cxx:2752
 AliReconstruction.cxx:2753
 AliReconstruction.cxx:2754
 AliReconstruction.cxx:2755
 AliReconstruction.cxx:2756
 AliReconstruction.cxx:2757
 AliReconstruction.cxx:2758
 AliReconstruction.cxx:2759
 AliReconstruction.cxx:2760
 AliReconstruction.cxx:2761
 AliReconstruction.cxx:2762
 AliReconstruction.cxx:2763
 AliReconstruction.cxx:2764
 AliReconstruction.cxx:2765
 AliReconstruction.cxx:2766
 AliReconstruction.cxx:2767
 AliReconstruction.cxx:2768
 AliReconstruction.cxx:2769
 AliReconstruction.cxx:2770
 AliReconstruction.cxx:2771
 AliReconstruction.cxx:2772
 AliReconstruction.cxx:2773
 AliReconstruction.cxx:2774
 AliReconstruction.cxx:2775
 AliReconstruction.cxx:2776
 AliReconstruction.cxx:2777
 AliReconstruction.cxx:2778
 AliReconstruction.cxx:2779
 AliReconstruction.cxx:2780
 AliReconstruction.cxx:2781
 AliReconstruction.cxx:2782
 AliReconstruction.cxx:2783
 AliReconstruction.cxx:2784
 AliReconstruction.cxx:2785
 AliReconstruction.cxx:2786
 AliReconstruction.cxx:2787
 AliReconstruction.cxx:2788
 AliReconstruction.cxx:2789
 AliReconstruction.cxx:2790
 AliReconstruction.cxx:2791
 AliReconstruction.cxx:2792
 AliReconstruction.cxx:2793
 AliReconstruction.cxx:2794
 AliReconstruction.cxx:2795
 AliReconstruction.cxx:2796
 AliReconstruction.cxx:2797
 AliReconstruction.cxx:2798
 AliReconstruction.cxx:2799
 AliReconstruction.cxx:2800
 AliReconstruction.cxx:2801
 AliReconstruction.cxx:2802
 AliReconstruction.cxx:2803
 AliReconstruction.cxx:2804
 AliReconstruction.cxx:2805
 AliReconstruction.cxx:2806
 AliReconstruction.cxx:2807
 AliReconstruction.cxx:2808
 AliReconstruction.cxx:2809
 AliReconstruction.cxx:2810
 AliReconstruction.cxx:2811
 AliReconstruction.cxx:2812
 AliReconstruction.cxx:2813
 AliReconstruction.cxx:2814
 AliReconstruction.cxx:2815
 AliReconstruction.cxx:2816
 AliReconstruction.cxx:2817
 AliReconstruction.cxx:2818
 AliReconstruction.cxx:2819
 AliReconstruction.cxx:2820
 AliReconstruction.cxx:2821
 AliReconstruction.cxx:2822
 AliReconstruction.cxx:2823
 AliReconstruction.cxx:2824
 AliReconstruction.cxx:2825
 AliReconstruction.cxx:2826
 AliReconstruction.cxx:2827
 AliReconstruction.cxx:2828
 AliReconstruction.cxx:2829
 AliReconstruction.cxx:2830
 AliReconstruction.cxx:2831
 AliReconstruction.cxx:2832
 AliReconstruction.cxx:2833
 AliReconstruction.cxx:2834
 AliReconstruction.cxx:2835
 AliReconstruction.cxx:2836
 AliReconstruction.cxx:2837
 AliReconstruction.cxx:2838
 AliReconstruction.cxx:2839
 AliReconstruction.cxx:2840
 AliReconstruction.cxx:2841
 AliReconstruction.cxx:2842
 AliReconstruction.cxx:2843
 AliReconstruction.cxx:2844
 AliReconstruction.cxx:2845
 AliReconstruction.cxx:2846
 AliReconstruction.cxx:2847
 AliReconstruction.cxx:2848
 AliReconstruction.cxx:2849
 AliReconstruction.cxx:2850
 AliReconstruction.cxx:2851
 AliReconstruction.cxx:2852
 AliReconstruction.cxx:2853
 AliReconstruction.cxx:2854
 AliReconstruction.cxx:2855
 AliReconstruction.cxx:2856
 AliReconstruction.cxx:2857
 AliReconstruction.cxx:2858
 AliReconstruction.cxx:2859
 AliReconstruction.cxx:2860
 AliReconstruction.cxx:2861
 AliReconstruction.cxx:2862
 AliReconstruction.cxx:2863
 AliReconstruction.cxx:2864
 AliReconstruction.cxx:2865
 AliReconstruction.cxx:2866
 AliReconstruction.cxx:2867
 AliReconstruction.cxx:2868
 AliReconstruction.cxx:2869
 AliReconstruction.cxx:2870
 AliReconstruction.cxx:2871
 AliReconstruction.cxx:2872
 AliReconstruction.cxx:2873
 AliReconstruction.cxx:2874
 AliReconstruction.cxx:2875
 AliReconstruction.cxx:2876
 AliReconstruction.cxx:2877
 AliReconstruction.cxx:2878
 AliReconstruction.cxx:2879
 AliReconstruction.cxx:2880
 AliReconstruction.cxx:2881
 AliReconstruction.cxx:2882
 AliReconstruction.cxx:2883
 AliReconstruction.cxx:2884
 AliReconstruction.cxx:2885
 AliReconstruction.cxx:2886
 AliReconstruction.cxx:2887
 AliReconstruction.cxx:2888
 AliReconstruction.cxx:2889
 AliReconstruction.cxx:2890
 AliReconstruction.cxx:2891
 AliReconstruction.cxx:2892
 AliReconstruction.cxx:2893
 AliReconstruction.cxx:2894
 AliReconstruction.cxx:2895
 AliReconstruction.cxx:2896
 AliReconstruction.cxx:2897
 AliReconstruction.cxx:2898
 AliReconstruction.cxx:2899
 AliReconstruction.cxx:2900
 AliReconstruction.cxx:2901
 AliReconstruction.cxx:2902
 AliReconstruction.cxx:2903
 AliReconstruction.cxx:2904
 AliReconstruction.cxx:2905
 AliReconstruction.cxx:2906
 AliReconstruction.cxx:2907
 AliReconstruction.cxx:2908
 AliReconstruction.cxx:2909
 AliReconstruction.cxx:2910
 AliReconstruction.cxx:2911
 AliReconstruction.cxx:2912
 AliReconstruction.cxx:2913
 AliReconstruction.cxx:2914
 AliReconstruction.cxx:2915
 AliReconstruction.cxx:2916
 AliReconstruction.cxx:2917
 AliReconstruction.cxx:2918
 AliReconstruction.cxx:2919
 AliReconstruction.cxx:2920
 AliReconstruction.cxx:2921
 AliReconstruction.cxx:2922
 AliReconstruction.cxx:2923
 AliReconstruction.cxx:2924
 AliReconstruction.cxx:2925
 AliReconstruction.cxx:2926
 AliReconstruction.cxx:2927
 AliReconstruction.cxx:2928
 AliReconstruction.cxx:2929
 AliReconstruction.cxx:2930
 AliReconstruction.cxx:2931
 AliReconstruction.cxx:2932
 AliReconstruction.cxx:2933
 AliReconstruction.cxx:2934
 AliReconstruction.cxx:2935
 AliReconstruction.cxx:2936
 AliReconstruction.cxx:2937
 AliReconstruction.cxx:2938
 AliReconstruction.cxx:2939
 AliReconstruction.cxx:2940
 AliReconstruction.cxx:2941
 AliReconstruction.cxx:2942
 AliReconstruction.cxx:2943
 AliReconstruction.cxx:2944
 AliReconstruction.cxx:2945
 AliReconstruction.cxx:2946
 AliReconstruction.cxx:2947
 AliReconstruction.cxx:2948
 AliReconstruction.cxx:2949
 AliReconstruction.cxx:2950
 AliReconstruction.cxx:2951
 AliReconstruction.cxx:2952
 AliReconstruction.cxx:2953
 AliReconstruction.cxx:2954
 AliReconstruction.cxx:2955
 AliReconstruction.cxx:2956
 AliReconstruction.cxx:2957
 AliReconstruction.cxx:2958
 AliReconstruction.cxx:2959
 AliReconstruction.cxx:2960
 AliReconstruction.cxx:2961
 AliReconstruction.cxx:2962
 AliReconstruction.cxx:2963
 AliReconstruction.cxx:2964
 AliReconstruction.cxx:2965
 AliReconstruction.cxx:2966
 AliReconstruction.cxx:2967
 AliReconstruction.cxx:2968
 AliReconstruction.cxx:2969
 AliReconstruction.cxx:2970
 AliReconstruction.cxx:2971
 AliReconstruction.cxx:2972
 AliReconstruction.cxx:2973
 AliReconstruction.cxx:2974
 AliReconstruction.cxx:2975
 AliReconstruction.cxx:2976
 AliReconstruction.cxx:2977
 AliReconstruction.cxx:2978
 AliReconstruction.cxx:2979
 AliReconstruction.cxx:2980
 AliReconstruction.cxx:2981
 AliReconstruction.cxx:2982
 AliReconstruction.cxx:2983
 AliReconstruction.cxx:2984
 AliReconstruction.cxx:2985
 AliReconstruction.cxx:2986
 AliReconstruction.cxx:2987
 AliReconstruction.cxx:2988
 AliReconstruction.cxx:2989
 AliReconstruction.cxx:2990
 AliReconstruction.cxx:2991
 AliReconstruction.cxx:2992
 AliReconstruction.cxx:2993
 AliReconstruction.cxx:2994
 AliReconstruction.cxx:2995
 AliReconstruction.cxx:2996
 AliReconstruction.cxx:2997
 AliReconstruction.cxx:2998
 AliReconstruction.cxx:2999
 AliReconstruction.cxx:3000
 AliReconstruction.cxx:3001
 AliReconstruction.cxx:3002
 AliReconstruction.cxx:3003
 AliReconstruction.cxx:3004
 AliReconstruction.cxx:3005
 AliReconstruction.cxx:3006
 AliReconstruction.cxx:3007
 AliReconstruction.cxx:3008
 AliReconstruction.cxx:3009
 AliReconstruction.cxx:3010
 AliReconstruction.cxx:3011
 AliReconstruction.cxx:3012
 AliReconstruction.cxx:3013
 AliReconstruction.cxx:3014
 AliReconstruction.cxx:3015
 AliReconstruction.cxx:3016
 AliReconstruction.cxx:3017
 AliReconstruction.cxx:3018
 AliReconstruction.cxx:3019
 AliReconstruction.cxx:3020
 AliReconstruction.cxx:3021
 AliReconstruction.cxx:3022
 AliReconstruction.cxx:3023
 AliReconstruction.cxx:3024
 AliReconstruction.cxx:3025
 AliReconstruction.cxx:3026
 AliReconstruction.cxx:3027
 AliReconstruction.cxx:3028
 AliReconstruction.cxx:3029
 AliReconstruction.cxx:3030
 AliReconstruction.cxx:3031
 AliReconstruction.cxx:3032
 AliReconstruction.cxx:3033
 AliReconstruction.cxx:3034
 AliReconstruction.cxx:3035
 AliReconstruction.cxx:3036
 AliReconstruction.cxx:3037
 AliReconstruction.cxx:3038
 AliReconstruction.cxx:3039
 AliReconstruction.cxx:3040
 AliReconstruction.cxx:3041
 AliReconstruction.cxx:3042
 AliReconstruction.cxx:3043
 AliReconstruction.cxx:3044
 AliReconstruction.cxx:3045
 AliReconstruction.cxx:3046
 AliReconstruction.cxx:3047
 AliReconstruction.cxx:3048
 AliReconstruction.cxx:3049
 AliReconstruction.cxx:3050
 AliReconstruction.cxx:3051
 AliReconstruction.cxx:3052
 AliReconstruction.cxx:3053
 AliReconstruction.cxx:3054
 AliReconstruction.cxx:3055
 AliReconstruction.cxx:3056
 AliReconstruction.cxx:3057
 AliReconstruction.cxx:3058
 AliReconstruction.cxx:3059
 AliReconstruction.cxx:3060
 AliReconstruction.cxx:3061
 AliReconstruction.cxx:3062
 AliReconstruction.cxx:3063
 AliReconstruction.cxx:3064
 AliReconstruction.cxx:3065
 AliReconstruction.cxx:3066
 AliReconstruction.cxx:3067
 AliReconstruction.cxx:3068
 AliReconstruction.cxx:3069
 AliReconstruction.cxx:3070
 AliReconstruction.cxx:3071
 AliReconstruction.cxx:3072
 AliReconstruction.cxx:3073
 AliReconstruction.cxx:3074
 AliReconstruction.cxx:3075
 AliReconstruction.cxx:3076
 AliReconstruction.cxx:3077
 AliReconstruction.cxx:3078
 AliReconstruction.cxx:3079
 AliReconstruction.cxx:3080
 AliReconstruction.cxx:3081
 AliReconstruction.cxx:3082
 AliReconstruction.cxx:3083
 AliReconstruction.cxx:3084
 AliReconstruction.cxx:3085
 AliReconstruction.cxx:3086
 AliReconstruction.cxx:3087
 AliReconstruction.cxx:3088
 AliReconstruction.cxx:3089
 AliReconstruction.cxx:3090
 AliReconstruction.cxx:3091
 AliReconstruction.cxx:3092
 AliReconstruction.cxx:3093
 AliReconstruction.cxx:3094
 AliReconstruction.cxx:3095
 AliReconstruction.cxx:3096
 AliReconstruction.cxx:3097
 AliReconstruction.cxx:3098
 AliReconstruction.cxx:3099
 AliReconstruction.cxx:3100
 AliReconstruction.cxx:3101
 AliReconstruction.cxx:3102
 AliReconstruction.cxx:3103
 AliReconstruction.cxx:3104
 AliReconstruction.cxx:3105
 AliReconstruction.cxx:3106
 AliReconstruction.cxx:3107
 AliReconstruction.cxx:3108
 AliReconstruction.cxx:3109
 AliReconstruction.cxx:3110
 AliReconstruction.cxx:3111
 AliReconstruction.cxx:3112
 AliReconstruction.cxx:3113
 AliReconstruction.cxx:3114
 AliReconstruction.cxx:3115
 AliReconstruction.cxx:3116
 AliReconstruction.cxx:3117
 AliReconstruction.cxx:3118
 AliReconstruction.cxx:3119
 AliReconstruction.cxx:3120
 AliReconstruction.cxx:3121
 AliReconstruction.cxx:3122
 AliReconstruction.cxx:3123
 AliReconstruction.cxx:3124
 AliReconstruction.cxx:3125
 AliReconstruction.cxx:3126
 AliReconstruction.cxx:3127
 AliReconstruction.cxx:3128
 AliReconstruction.cxx:3129
 AliReconstruction.cxx:3130
 AliReconstruction.cxx:3131
 AliReconstruction.cxx:3132
 AliReconstruction.cxx:3133
 AliReconstruction.cxx:3134
 AliReconstruction.cxx:3135
 AliReconstruction.cxx:3136
 AliReconstruction.cxx:3137
 AliReconstruction.cxx:3138
 AliReconstruction.cxx:3139
 AliReconstruction.cxx:3140
 AliReconstruction.cxx:3141
 AliReconstruction.cxx:3142
 AliReconstruction.cxx:3143
 AliReconstruction.cxx:3144
 AliReconstruction.cxx:3145
 AliReconstruction.cxx:3146
 AliReconstruction.cxx:3147
 AliReconstruction.cxx:3148
 AliReconstruction.cxx:3149
 AliReconstruction.cxx:3150
 AliReconstruction.cxx:3151
 AliReconstruction.cxx:3152
 AliReconstruction.cxx:3153
 AliReconstruction.cxx:3154
 AliReconstruction.cxx:3155
 AliReconstruction.cxx:3156
 AliReconstruction.cxx:3157
 AliReconstruction.cxx:3158
 AliReconstruction.cxx:3159
 AliReconstruction.cxx:3160
 AliReconstruction.cxx:3161
 AliReconstruction.cxx:3162
 AliReconstruction.cxx:3163
 AliReconstruction.cxx:3164
 AliReconstruction.cxx:3165
 AliReconstruction.cxx:3166
 AliReconstruction.cxx:3167
 AliReconstruction.cxx:3168
 AliReconstruction.cxx:3169
 AliReconstruction.cxx:3170
 AliReconstruction.cxx:3171
 AliReconstruction.cxx:3172
 AliReconstruction.cxx:3173
 AliReconstruction.cxx:3174
 AliReconstruction.cxx:3175
 AliReconstruction.cxx:3176
 AliReconstruction.cxx:3177
 AliReconstruction.cxx:3178
 AliReconstruction.cxx:3179
 AliReconstruction.cxx:3180
 AliReconstruction.cxx:3181
 AliReconstruction.cxx:3182
 AliReconstruction.cxx:3183
 AliReconstruction.cxx:3184
 AliReconstruction.cxx:3185
 AliReconstruction.cxx:3186
 AliReconstruction.cxx:3187
 AliReconstruction.cxx:3188
 AliReconstruction.cxx:3189
 AliReconstruction.cxx:3190
 AliReconstruction.cxx:3191
 AliReconstruction.cxx:3192
 AliReconstruction.cxx:3193
 AliReconstruction.cxx:3194
 AliReconstruction.cxx:3195
 AliReconstruction.cxx:3196
 AliReconstruction.cxx:3197
 AliReconstruction.cxx:3198
 AliReconstruction.cxx:3199
 AliReconstruction.cxx:3200
 AliReconstruction.cxx:3201
 AliReconstruction.cxx:3202
 AliReconstruction.cxx:3203
 AliReconstruction.cxx:3204
 AliReconstruction.cxx:3205
 AliReconstruction.cxx:3206
 AliReconstruction.cxx:3207
 AliReconstruction.cxx:3208
 AliReconstruction.cxx:3209
 AliReconstruction.cxx:3210
 AliReconstruction.cxx:3211
 AliReconstruction.cxx:3212
 AliReconstruction.cxx:3213
 AliReconstruction.cxx:3214
 AliReconstruction.cxx:3215
 AliReconstruction.cxx:3216
 AliReconstruction.cxx:3217
 AliReconstruction.cxx:3218
 AliReconstruction.cxx:3219
 AliReconstruction.cxx:3220
 AliReconstruction.cxx:3221
 AliReconstruction.cxx:3222
 AliReconstruction.cxx:3223
 AliReconstruction.cxx:3224
 AliReconstruction.cxx:3225
 AliReconstruction.cxx:3226
 AliReconstruction.cxx:3227
 AliReconstruction.cxx:3228
 AliReconstruction.cxx:3229
 AliReconstruction.cxx:3230
 AliReconstruction.cxx:3231
 AliReconstruction.cxx:3232
 AliReconstruction.cxx:3233
 AliReconstruction.cxx:3234
 AliReconstruction.cxx:3235
 AliReconstruction.cxx:3236
 AliReconstruction.cxx:3237
 AliReconstruction.cxx:3238
 AliReconstruction.cxx:3239
 AliReconstruction.cxx:3240
 AliReconstruction.cxx:3241
 AliReconstruction.cxx:3242
 AliReconstruction.cxx:3243
 AliReconstruction.cxx:3244
 AliReconstruction.cxx:3245
 AliReconstruction.cxx:3246
 AliReconstruction.cxx:3247
 AliReconstruction.cxx:3248
 AliReconstruction.cxx:3249
 AliReconstruction.cxx:3250
 AliReconstruction.cxx:3251
 AliReconstruction.cxx:3252
 AliReconstruction.cxx:3253
 AliReconstruction.cxx:3254
 AliReconstruction.cxx:3255
 AliReconstruction.cxx:3256
 AliReconstruction.cxx:3257
 AliReconstruction.cxx:3258
 AliReconstruction.cxx:3259
 AliReconstruction.cxx:3260
 AliReconstruction.cxx:3261
 AliReconstruction.cxx:3262
 AliReconstruction.cxx:3263
 AliReconstruction.cxx:3264
 AliReconstruction.cxx:3265
 AliReconstruction.cxx:3266
 AliReconstruction.cxx:3267
 AliReconstruction.cxx:3268
 AliReconstruction.cxx:3269
 AliReconstruction.cxx:3270
 AliReconstruction.cxx:3271
 AliReconstruction.cxx:3272
 AliReconstruction.cxx:3273
 AliReconstruction.cxx:3274
 AliReconstruction.cxx:3275
 AliReconstruction.cxx:3276
 AliReconstruction.cxx:3277
 AliReconstruction.cxx:3278
 AliReconstruction.cxx:3279
 AliReconstruction.cxx:3280
 AliReconstruction.cxx:3281
 AliReconstruction.cxx:3282
 AliReconstruction.cxx:3283
 AliReconstruction.cxx:3284
 AliReconstruction.cxx:3285
 AliReconstruction.cxx:3286
 AliReconstruction.cxx:3287
 AliReconstruction.cxx:3288
 AliReconstruction.cxx:3289
 AliReconstruction.cxx:3290
 AliReconstruction.cxx:3291
 AliReconstruction.cxx:3292
 AliReconstruction.cxx:3293
 AliReconstruction.cxx:3294
 AliReconstruction.cxx:3295
 AliReconstruction.cxx:3296
 AliReconstruction.cxx:3297
 AliReconstruction.cxx:3298
 AliReconstruction.cxx:3299
 AliReconstruction.cxx:3300
 AliReconstruction.cxx:3301
 AliReconstruction.cxx:3302
 AliReconstruction.cxx:3303
 AliReconstruction.cxx:3304
 AliReconstruction.cxx:3305
 AliReconstruction.cxx:3306
 AliReconstruction.cxx:3307
 AliReconstruction.cxx:3308
 AliReconstruction.cxx:3309
 AliReconstruction.cxx:3310
 AliReconstruction.cxx:3311
 AliReconstruction.cxx:3312
 AliReconstruction.cxx:3313
 AliReconstruction.cxx:3314
 AliReconstruction.cxx:3315
 AliReconstruction.cxx:3316
 AliReconstruction.cxx:3317
 AliReconstruction.cxx:3318
 AliReconstruction.cxx:3319
 AliReconstruction.cxx:3320
 AliReconstruction.cxx:3321
 AliReconstruction.cxx:3322
 AliReconstruction.cxx:3323
 AliReconstruction.cxx:3324
 AliReconstruction.cxx:3325
 AliReconstruction.cxx:3326
 AliReconstruction.cxx:3327
 AliReconstruction.cxx:3328
 AliReconstruction.cxx:3329
 AliReconstruction.cxx:3330
 AliReconstruction.cxx:3331
 AliReconstruction.cxx:3332
 AliReconstruction.cxx:3333
 AliReconstruction.cxx:3334
 AliReconstruction.cxx:3335
 AliReconstruction.cxx:3336
 AliReconstruction.cxx:3337
 AliReconstruction.cxx:3338
 AliReconstruction.cxx:3339
 AliReconstruction.cxx:3340
 AliReconstruction.cxx:3341
 AliReconstruction.cxx:3342
 AliReconstruction.cxx:3343
 AliReconstruction.cxx:3344
 AliReconstruction.cxx:3345
 AliReconstruction.cxx:3346
 AliReconstruction.cxx:3347
 AliReconstruction.cxx:3348
 AliReconstruction.cxx:3349
 AliReconstruction.cxx:3350
 AliReconstruction.cxx:3351
 AliReconstruction.cxx:3352
 AliReconstruction.cxx:3353
 AliReconstruction.cxx:3354
 AliReconstruction.cxx:3355
 AliReconstruction.cxx:3356
 AliReconstruction.cxx:3357
 AliReconstruction.cxx:3358
 AliReconstruction.cxx:3359
 AliReconstruction.cxx:3360
 AliReconstruction.cxx:3361
 AliReconstruction.cxx:3362
 AliReconstruction.cxx:3363
 AliReconstruction.cxx:3364
 AliReconstruction.cxx:3365
 AliReconstruction.cxx:3366
 AliReconstruction.cxx:3367
 AliReconstruction.cxx:3368
 AliReconstruction.cxx:3369
 AliReconstruction.cxx:3370
 AliReconstruction.cxx:3371
 AliReconstruction.cxx:3372
 AliReconstruction.cxx:3373
 AliReconstruction.cxx:3374
 AliReconstruction.cxx:3375
 AliReconstruction.cxx:3376
 AliReconstruction.cxx:3377
 AliReconstruction.cxx:3378
 AliReconstruction.cxx:3379
 AliReconstruction.cxx:3380
 AliReconstruction.cxx:3381
 AliReconstruction.cxx:3382
 AliReconstruction.cxx:3383
 AliReconstruction.cxx:3384
 AliReconstruction.cxx:3385
 AliReconstruction.cxx:3386
 AliReconstruction.cxx:3387
 AliReconstruction.cxx:3388
 AliReconstruction.cxx:3389
 AliReconstruction.cxx:3390
 AliReconstruction.cxx:3391
 AliReconstruction.cxx:3392
 AliReconstruction.cxx:3393
 AliReconstruction.cxx:3394
 AliReconstruction.cxx:3395
 AliReconstruction.cxx:3396
 AliReconstruction.cxx:3397
 AliReconstruction.cxx:3398
 AliReconstruction.cxx:3399
 AliReconstruction.cxx:3400
 AliReconstruction.cxx:3401
 AliReconstruction.cxx:3402
 AliReconstruction.cxx:3403
 AliReconstruction.cxx:3404
 AliReconstruction.cxx:3405
 AliReconstruction.cxx:3406
 AliReconstruction.cxx:3407
 AliReconstruction.cxx:3408
 AliReconstruction.cxx:3409
 AliReconstruction.cxx:3410
 AliReconstruction.cxx:3411
 AliReconstruction.cxx:3412
 AliReconstruction.cxx:3413
 AliReconstruction.cxx:3414
 AliReconstruction.cxx:3415
 AliReconstruction.cxx:3416
 AliReconstruction.cxx:3417
 AliReconstruction.cxx:3418
 AliReconstruction.cxx:3419
 AliReconstruction.cxx:3420
 AliReconstruction.cxx:3421
 AliReconstruction.cxx:3422
 AliReconstruction.cxx:3423
 AliReconstruction.cxx:3424
 AliReconstruction.cxx:3425
 AliReconstruction.cxx:3426
 AliReconstruction.cxx:3427
 AliReconstruction.cxx:3428
 AliReconstruction.cxx:3429
 AliReconstruction.cxx:3430
 AliReconstruction.cxx:3431
 AliReconstruction.cxx:3432
 AliReconstruction.cxx:3433
 AliReconstruction.cxx:3434
 AliReconstruction.cxx:3435
 AliReconstruction.cxx:3436
 AliReconstruction.cxx:3437
 AliReconstruction.cxx:3438
 AliReconstruction.cxx:3439
 AliReconstruction.cxx:3440
 AliReconstruction.cxx:3441
 AliReconstruction.cxx:3442
 AliReconstruction.cxx:3443
 AliReconstruction.cxx:3444
 AliReconstruction.cxx:3445
 AliReconstruction.cxx:3446
 AliReconstruction.cxx:3447
 AliReconstruction.cxx:3448
 AliReconstruction.cxx:3449
 AliReconstruction.cxx:3450
 AliReconstruction.cxx:3451
 AliReconstruction.cxx:3452
 AliReconstruction.cxx:3453
 AliReconstruction.cxx:3454
 AliReconstruction.cxx:3455
 AliReconstruction.cxx:3456
 AliReconstruction.cxx:3457
 AliReconstruction.cxx:3458
 AliReconstruction.cxx:3459
 AliReconstruction.cxx:3460
 AliReconstruction.cxx:3461
 AliReconstruction.cxx:3462
 AliReconstruction.cxx:3463
 AliReconstruction.cxx:3464
 AliReconstruction.cxx:3465
 AliReconstruction.cxx:3466
 AliReconstruction.cxx:3467
 AliReconstruction.cxx:3468
 AliReconstruction.cxx:3469
 AliReconstruction.cxx:3470
 AliReconstruction.cxx:3471
 AliReconstruction.cxx:3472
 AliReconstruction.cxx:3473
 AliReconstruction.cxx:3474
 AliReconstruction.cxx:3475
 AliReconstruction.cxx:3476
 AliReconstruction.cxx:3477
 AliReconstruction.cxx:3478
 AliReconstruction.cxx:3479
 AliReconstruction.cxx:3480
 AliReconstruction.cxx:3481
 AliReconstruction.cxx:3482
 AliReconstruction.cxx:3483
 AliReconstruction.cxx:3484
 AliReconstruction.cxx:3485
 AliReconstruction.cxx:3486
 AliReconstruction.cxx:3487
 AliReconstruction.cxx:3488
 AliReconstruction.cxx:3489
 AliReconstruction.cxx:3490
 AliReconstruction.cxx:3491
 AliReconstruction.cxx:3492
 AliReconstruction.cxx:3493
 AliReconstruction.cxx:3494
 AliReconstruction.cxx:3495
 AliReconstruction.cxx:3496
 AliReconstruction.cxx:3497
 AliReconstruction.cxx:3498
 AliReconstruction.cxx:3499
 AliReconstruction.cxx:3500
 AliReconstruction.cxx:3501
 AliReconstruction.cxx:3502
 AliReconstruction.cxx:3503
 AliReconstruction.cxx:3504
 AliReconstruction.cxx:3505
 AliReconstruction.cxx:3506
 AliReconstruction.cxx:3507
 AliReconstruction.cxx:3508
 AliReconstruction.cxx:3509
 AliReconstruction.cxx:3510
 AliReconstruction.cxx:3511
 AliReconstruction.cxx:3512
 AliReconstruction.cxx:3513
 AliReconstruction.cxx:3514
 AliReconstruction.cxx:3515
 AliReconstruction.cxx:3516
 AliReconstruction.cxx:3517
 AliReconstruction.cxx:3518
 AliReconstruction.cxx:3519
 AliReconstruction.cxx:3520
 AliReconstruction.cxx:3521
 AliReconstruction.cxx:3522
 AliReconstruction.cxx:3523
 AliReconstruction.cxx:3524
 AliReconstruction.cxx:3525
 AliReconstruction.cxx:3526
 AliReconstruction.cxx:3527
 AliReconstruction.cxx:3528
 AliReconstruction.cxx:3529
 AliReconstruction.cxx:3530
 AliReconstruction.cxx:3531
 AliReconstruction.cxx:3532
 AliReconstruction.cxx:3533
 AliReconstruction.cxx:3534
 AliReconstruction.cxx:3535
 AliReconstruction.cxx:3536
 AliReconstruction.cxx:3537
 AliReconstruction.cxx:3538
 AliReconstruction.cxx:3539
 AliReconstruction.cxx:3540
 AliReconstruction.cxx:3541
 AliReconstruction.cxx:3542
 AliReconstruction.cxx:3543
 AliReconstruction.cxx:3544
 AliReconstruction.cxx:3545
 AliReconstruction.cxx:3546
 AliReconstruction.cxx:3547
 AliReconstruction.cxx:3548
 AliReconstruction.cxx:3549
 AliReconstruction.cxx:3550
 AliReconstruction.cxx:3551
 AliReconstruction.cxx:3552
 AliReconstruction.cxx:3553
 AliReconstruction.cxx:3554
 AliReconstruction.cxx:3555
 AliReconstruction.cxx:3556
 AliReconstruction.cxx:3557
 AliReconstruction.cxx:3558
 AliReconstruction.cxx:3559
 AliReconstruction.cxx:3560
 AliReconstruction.cxx:3561
 AliReconstruction.cxx:3562
 AliReconstruction.cxx:3563
 AliReconstruction.cxx:3564
 AliReconstruction.cxx:3565
 AliReconstruction.cxx:3566
 AliReconstruction.cxx:3567
 AliReconstruction.cxx:3568
 AliReconstruction.cxx:3569
 AliReconstruction.cxx:3570
 AliReconstruction.cxx:3571
 AliReconstruction.cxx:3572
 AliReconstruction.cxx:3573
 AliReconstruction.cxx:3574
 AliReconstruction.cxx:3575
 AliReconstruction.cxx:3576
 AliReconstruction.cxx:3577
 AliReconstruction.cxx:3578
 AliReconstruction.cxx:3579
 AliReconstruction.cxx:3580
 AliReconstruction.cxx:3581
 AliReconstruction.cxx:3582
 AliReconstruction.cxx:3583
 AliReconstruction.cxx:3584
 AliReconstruction.cxx:3585
 AliReconstruction.cxx:3586
 AliReconstruction.cxx:3587
 AliReconstruction.cxx:3588
 AliReconstruction.cxx:3589
 AliReconstruction.cxx:3590
 AliReconstruction.cxx:3591
 AliReconstruction.cxx:3592
 AliReconstruction.cxx:3593
 AliReconstruction.cxx:3594
 AliReconstruction.cxx:3595
 AliReconstruction.cxx:3596
 AliReconstruction.cxx:3597
 AliReconstruction.cxx:3598
 AliReconstruction.cxx:3599
 AliReconstruction.cxx:3600
 AliReconstruction.cxx:3601
 AliReconstruction.cxx:3602
 AliReconstruction.cxx:3603
 AliReconstruction.cxx:3604
 AliReconstruction.cxx:3605
 AliReconstruction.cxx:3606
 AliReconstruction.cxx:3607
 AliReconstruction.cxx:3608
 AliReconstruction.cxx:3609
 AliReconstruction.cxx:3610
 AliReconstruction.cxx:3611
 AliReconstruction.cxx:3612
 AliReconstruction.cxx:3613
 AliReconstruction.cxx:3614
 AliReconstruction.cxx:3615
 AliReconstruction.cxx:3616
 AliReconstruction.cxx:3617
 AliReconstruction.cxx:3618
 AliReconstruction.cxx:3619
 AliReconstruction.cxx:3620
 AliReconstruction.cxx:3621
 AliReconstruction.cxx:3622
 AliReconstruction.cxx:3623
 AliReconstruction.cxx:3624
 AliReconstruction.cxx:3625
 AliReconstruction.cxx:3626
 AliReconstruction.cxx:3627
 AliReconstruction.cxx:3628
 AliReconstruction.cxx:3629
 AliReconstruction.cxx:3630
 AliReconstruction.cxx:3631
 AliReconstruction.cxx:3632
 AliReconstruction.cxx:3633
 AliReconstruction.cxx:3634
 AliReconstruction.cxx:3635
 AliReconstruction.cxx:3636
 AliReconstruction.cxx:3637
 AliReconstruction.cxx:3638
 AliReconstruction.cxx:3639
 AliReconstruction.cxx:3640
 AliReconstruction.cxx:3641
 AliReconstruction.cxx:3642
 AliReconstruction.cxx:3643
 AliReconstruction.cxx:3644
 AliReconstruction.cxx:3645
 AliReconstruction.cxx:3646
 AliReconstruction.cxx:3647
 AliReconstruction.cxx:3648
 AliReconstruction.cxx:3649
 AliReconstruction.cxx:3650
 AliReconstruction.cxx:3651
 AliReconstruction.cxx:3652
 AliReconstruction.cxx:3653
 AliReconstruction.cxx:3654
 AliReconstruction.cxx:3655
 AliReconstruction.cxx:3656
 AliReconstruction.cxx:3657
 AliReconstruction.cxx:3658
 AliReconstruction.cxx:3659
 AliReconstruction.cxx:3660
 AliReconstruction.cxx:3661
 AliReconstruction.cxx:3662
 AliReconstruction.cxx:3663
 AliReconstruction.cxx:3664
 AliReconstruction.cxx:3665
 AliReconstruction.cxx:3666
 AliReconstruction.cxx:3667
 AliReconstruction.cxx:3668
 AliReconstruction.cxx:3669
 AliReconstruction.cxx:3670
 AliReconstruction.cxx:3671
 AliReconstruction.cxx:3672
 AliReconstruction.cxx:3673
 AliReconstruction.cxx:3674
 AliReconstruction.cxx:3675
 AliReconstruction.cxx:3676
 AliReconstruction.cxx:3677
 AliReconstruction.cxx:3678
 AliReconstruction.cxx:3679
 AliReconstruction.cxx:3680
 AliReconstruction.cxx:3681
 AliReconstruction.cxx:3682
 AliReconstruction.cxx:3683
 AliReconstruction.cxx:3684
 AliReconstruction.cxx:3685
 AliReconstruction.cxx:3686
 AliReconstruction.cxx:3687
 AliReconstruction.cxx:3688
 AliReconstruction.cxx:3689
 AliReconstruction.cxx:3690
 AliReconstruction.cxx:3691
 AliReconstruction.cxx:3692
 AliReconstruction.cxx:3693
 AliReconstruction.cxx:3694
 AliReconstruction.cxx:3695
 AliReconstruction.cxx:3696
 AliReconstruction.cxx:3697
 AliReconstruction.cxx:3698
 AliReconstruction.cxx:3699
 AliReconstruction.cxx:3700
 AliReconstruction.cxx:3701
 AliReconstruction.cxx:3702
 AliReconstruction.cxx:3703
 AliReconstruction.cxx:3704
 AliReconstruction.cxx:3705
 AliReconstruction.cxx:3706
 AliReconstruction.cxx:3707
 AliReconstruction.cxx:3708
 AliReconstruction.cxx:3709
 AliReconstruction.cxx:3710
 AliReconstruction.cxx:3711
 AliReconstruction.cxx:3712
 AliReconstruction.cxx:3713
 AliReconstruction.cxx:3714
 AliReconstruction.cxx:3715
 AliReconstruction.cxx:3716
 AliReconstruction.cxx:3717
 AliReconstruction.cxx:3718
 AliReconstruction.cxx:3719
 AliReconstruction.cxx:3720
 AliReconstruction.cxx:3721
 AliReconstruction.cxx:3722
 AliReconstruction.cxx:3723
 AliReconstruction.cxx:3724
 AliReconstruction.cxx:3725
 AliReconstruction.cxx:3726
 AliReconstruction.cxx:3727
 AliReconstruction.cxx:3728
 AliReconstruction.cxx:3729
 AliReconstruction.cxx:3730
 AliReconstruction.cxx:3731
 AliReconstruction.cxx:3732
 AliReconstruction.cxx:3733
 AliReconstruction.cxx:3734
 AliReconstruction.cxx:3735
 AliReconstruction.cxx:3736
 AliReconstruction.cxx:3737
 AliReconstruction.cxx:3738
 AliReconstruction.cxx:3739
 AliReconstruction.cxx:3740
 AliReconstruction.cxx:3741
 AliReconstruction.cxx:3742
 AliReconstruction.cxx:3743
 AliReconstruction.cxx:3744
 AliReconstruction.cxx:3745
 AliReconstruction.cxx:3746
 AliReconstruction.cxx:3747
 AliReconstruction.cxx:3748
 AliReconstruction.cxx:3749
 AliReconstruction.cxx:3750
 AliReconstruction.cxx:3751
 AliReconstruction.cxx:3752
 AliReconstruction.cxx:3753
 AliReconstruction.cxx:3754
 AliReconstruction.cxx:3755
 AliReconstruction.cxx:3756
 AliReconstruction.cxx:3757
 AliReconstruction.cxx:3758
 AliReconstruction.cxx:3759
 AliReconstruction.cxx:3760
 AliReconstruction.cxx:3761
 AliReconstruction.cxx:3762
 AliReconstruction.cxx:3763
 AliReconstruction.cxx:3764
 AliReconstruction.cxx:3765
 AliReconstruction.cxx:3766
 AliReconstruction.cxx:3767
 AliReconstruction.cxx:3768
 AliReconstruction.cxx:3769
 AliReconstruction.cxx:3770
 AliReconstruction.cxx:3771
 AliReconstruction.cxx:3772
 AliReconstruction.cxx:3773
 AliReconstruction.cxx:3774
 AliReconstruction.cxx:3775
 AliReconstruction.cxx:3776
 AliReconstruction.cxx:3777
 AliReconstruction.cxx:3778
 AliReconstruction.cxx:3779
 AliReconstruction.cxx:3780
 AliReconstruction.cxx:3781
 AliReconstruction.cxx:3782
 AliReconstruction.cxx:3783
 AliReconstruction.cxx:3784
 AliReconstruction.cxx:3785
 AliReconstruction.cxx:3786
 AliReconstruction.cxx:3787
 AliReconstruction.cxx:3788
 AliReconstruction.cxx:3789
 AliReconstruction.cxx:3790
 AliReconstruction.cxx:3791
 AliReconstruction.cxx:3792
 AliReconstruction.cxx:3793
 AliReconstruction.cxx:3794
 AliReconstruction.cxx:3795
 AliReconstruction.cxx:3796
 AliReconstruction.cxx:3797
 AliReconstruction.cxx:3798
 AliReconstruction.cxx:3799
 AliReconstruction.cxx:3800
 AliReconstruction.cxx:3801
 AliReconstruction.cxx:3802
 AliReconstruction.cxx:3803
 AliReconstruction.cxx:3804
 AliReconstruction.cxx:3805
 AliReconstruction.cxx:3806
 AliReconstruction.cxx:3807
 AliReconstruction.cxx:3808
 AliReconstruction.cxx:3809
 AliReconstruction.cxx:3810
 AliReconstruction.cxx:3811
 AliReconstruction.cxx:3812
 AliReconstruction.cxx:3813
 AliReconstruction.cxx:3814
 AliReconstruction.cxx:3815
 AliReconstruction.cxx:3816
 AliReconstruction.cxx:3817
 AliReconstruction.cxx:3818
 AliReconstruction.cxx:3819
 AliReconstruction.cxx:3820
 AliReconstruction.cxx:3821
 AliReconstruction.cxx:3822
 AliReconstruction.cxx:3823
 AliReconstruction.cxx:3824
 AliReconstruction.cxx:3825
 AliReconstruction.cxx:3826
 AliReconstruction.cxx:3827
 AliReconstruction.cxx:3828
 AliReconstruction.cxx:3829
 AliReconstruction.cxx:3830
 AliReconstruction.cxx:3831
 AliReconstruction.cxx:3832
 AliReconstruction.cxx:3833
 AliReconstruction.cxx:3834
 AliReconstruction.cxx:3835
 AliReconstruction.cxx:3836
 AliReconstruction.cxx:3837
 AliReconstruction.cxx:3838
 AliReconstruction.cxx:3839
 AliReconstruction.cxx:3840
 AliReconstruction.cxx:3841
 AliReconstruction.cxx:3842
 AliReconstruction.cxx:3843
 AliReconstruction.cxx:3844
 AliReconstruction.cxx:3845
 AliReconstruction.cxx:3846
 AliReconstruction.cxx:3847
 AliReconstruction.cxx:3848
 AliReconstruction.cxx:3849
 AliReconstruction.cxx:3850
 AliReconstruction.cxx:3851
 AliReconstruction.cxx:3852
 AliReconstruction.cxx:3853
 AliReconstruction.cxx:3854
 AliReconstruction.cxx:3855
 AliReconstruction.cxx:3856
 AliReconstruction.cxx:3857
 AliReconstruction.cxx:3858
 AliReconstruction.cxx:3859
 AliReconstruction.cxx:3860
 AliReconstruction.cxx:3861
 AliReconstruction.cxx:3862
 AliReconstruction.cxx:3863
 AliReconstruction.cxx:3864
 AliReconstruction.cxx:3865
 AliReconstruction.cxx:3866
 AliReconstruction.cxx:3867
 AliReconstruction.cxx:3868
 AliReconstruction.cxx:3869
 AliReconstruction.cxx:3870
 AliReconstruction.cxx:3871
 AliReconstruction.cxx:3872
 AliReconstruction.cxx:3873
 AliReconstruction.cxx:3874
 AliReconstruction.cxx:3875
 AliReconstruction.cxx:3876
 AliReconstruction.cxx:3877
 AliReconstruction.cxx:3878
 AliReconstruction.cxx:3879
 AliReconstruction.cxx:3880
 AliReconstruction.cxx:3881
 AliReconstruction.cxx:3882
 AliReconstruction.cxx:3883
 AliReconstruction.cxx:3884
 AliReconstruction.cxx:3885
 AliReconstruction.cxx:3886
 AliReconstruction.cxx:3887
 AliReconstruction.cxx:3888
 AliReconstruction.cxx:3889
 AliReconstruction.cxx:3890
 AliReconstruction.cxx:3891
 AliReconstruction.cxx:3892
 AliReconstruction.cxx:3893
 AliReconstruction.cxx:3894
 AliReconstruction.cxx:3895
 AliReconstruction.cxx:3896
 AliReconstruction.cxx:3897
 AliReconstruction.cxx:3898
 AliReconstruction.cxx:3899
 AliReconstruction.cxx:3900
 AliReconstruction.cxx:3901
 AliReconstruction.cxx:3902
 AliReconstruction.cxx:3903
 AliReconstruction.cxx:3904
 AliReconstruction.cxx:3905
 AliReconstruction.cxx:3906
 AliReconstruction.cxx:3907
 AliReconstruction.cxx:3908
 AliReconstruction.cxx:3909
 AliReconstruction.cxx:3910
 AliReconstruction.cxx:3911
 AliReconstruction.cxx:3912
 AliReconstruction.cxx:3913
 AliReconstruction.cxx:3914
 AliReconstruction.cxx:3915
 AliReconstruction.cxx:3916
 AliReconstruction.cxx:3917
 AliReconstruction.cxx:3918
 AliReconstruction.cxx:3919
 AliReconstruction.cxx:3920
 AliReconstruction.cxx:3921
 AliReconstruction.cxx:3922
 AliReconstruction.cxx:3923
 AliReconstruction.cxx:3924
 AliReconstruction.cxx:3925
 AliReconstruction.cxx:3926
 AliReconstruction.cxx:3927
 AliReconstruction.cxx:3928
 AliReconstruction.cxx:3929
 AliReconstruction.cxx:3930
 AliReconstruction.cxx:3931
 AliReconstruction.cxx:3932
 AliReconstruction.cxx:3933
 AliReconstruction.cxx:3934
 AliReconstruction.cxx:3935
 AliReconstruction.cxx:3936
 AliReconstruction.cxx:3937
 AliReconstruction.cxx:3938
 AliReconstruction.cxx:3939
 AliReconstruction.cxx:3940
 AliReconstruction.cxx:3941
 AliReconstruction.cxx:3942
 AliReconstruction.cxx:3943
 AliReconstruction.cxx:3944
 AliReconstruction.cxx:3945
 AliReconstruction.cxx:3946
 AliReconstruction.cxx:3947
 AliReconstruction.cxx:3948
 AliReconstruction.cxx:3949
 AliReconstruction.cxx:3950
 AliReconstruction.cxx:3951
 AliReconstruction.cxx:3952
 AliReconstruction.cxx:3953
 AliReconstruction.cxx:3954
 AliReconstruction.cxx:3955
 AliReconstruction.cxx:3956
 AliReconstruction.cxx:3957
 AliReconstruction.cxx:3958
 AliReconstruction.cxx:3959
 AliReconstruction.cxx:3960
 AliReconstruction.cxx:3961
 AliReconstruction.cxx:3962
 AliReconstruction.cxx:3963
 AliReconstruction.cxx:3964
 AliReconstruction.cxx:3965
 AliReconstruction.cxx:3966
 AliReconstruction.cxx:3967
 AliReconstruction.cxx:3968
 AliReconstruction.cxx:3969
 AliReconstruction.cxx:3970
 AliReconstruction.cxx:3971
 AliReconstruction.cxx:3972
 AliReconstruction.cxx:3973
 AliReconstruction.cxx:3974
 AliReconstruction.cxx:3975
 AliReconstruction.cxx:3976
 AliReconstruction.cxx:3977
 AliReconstruction.cxx:3978
 AliReconstruction.cxx:3979
 AliReconstruction.cxx:3980
 AliReconstruction.cxx:3981
 AliReconstruction.cxx:3982
 AliReconstruction.cxx:3983
 AliReconstruction.cxx:3984
 AliReconstruction.cxx:3985
 AliReconstruction.cxx:3986
 AliReconstruction.cxx:3987
 AliReconstruction.cxx:3988
 AliReconstruction.cxx:3989
 AliReconstruction.cxx:3990
 AliReconstruction.cxx:3991
 AliReconstruction.cxx:3992
 AliReconstruction.cxx:3993
 AliReconstruction.cxx:3994
 AliReconstruction.cxx:3995
 AliReconstruction.cxx:3996
 AliReconstruction.cxx:3997
 AliReconstruction.cxx:3998
 AliReconstruction.cxx:3999
 AliReconstruction.cxx:4000
 AliReconstruction.cxx:4001
 AliReconstruction.cxx:4002
 AliReconstruction.cxx:4003
 AliReconstruction.cxx:4004
 AliReconstruction.cxx:4005
 AliReconstruction.cxx:4006
 AliReconstruction.cxx:4007
 AliReconstruction.cxx:4008
 AliReconstruction.cxx:4009
 AliReconstruction.cxx:4010
 AliReconstruction.cxx:4011
 AliReconstruction.cxx:4012
 AliReconstruction.cxx:4013
 AliReconstruction.cxx:4014
 AliReconstruction.cxx:4015
 AliReconstruction.cxx:4016
 AliReconstruction.cxx:4017
 AliReconstruction.cxx:4018
 AliReconstruction.cxx:4019
 AliReconstruction.cxx:4020
 AliReconstruction.cxx:4021
 AliReconstruction.cxx:4022
 AliReconstruction.cxx:4023
 AliReconstruction.cxx:4024
 AliReconstruction.cxx:4025
 AliReconstruction.cxx:4026
 AliReconstruction.cxx:4027
 AliReconstruction.cxx:4028
 AliReconstruction.cxx:4029
 AliReconstruction.cxx:4030
 AliReconstruction.cxx:4031
 AliReconstruction.cxx:4032
 AliReconstruction.cxx:4033
 AliReconstruction.cxx:4034
 AliReconstruction.cxx:4035
 AliReconstruction.cxx:4036
 AliReconstruction.cxx:4037
 AliReconstruction.cxx:4038
 AliReconstruction.cxx:4039
 AliReconstruction.cxx:4040
 AliReconstruction.cxx:4041
 AliReconstruction.cxx:4042
 AliReconstruction.cxx:4043
 AliReconstruction.cxx:4044
 AliReconstruction.cxx:4045
 AliReconstruction.cxx:4046
 AliReconstruction.cxx:4047
 AliReconstruction.cxx:4048
 AliReconstruction.cxx:4049
 AliReconstruction.cxx:4050
 AliReconstruction.cxx:4051
 AliReconstruction.cxx:4052
 AliReconstruction.cxx:4053
 AliReconstruction.cxx:4054
 AliReconstruction.cxx:4055
 AliReconstruction.cxx:4056
 AliReconstruction.cxx:4057
 AliReconstruction.cxx:4058
 AliReconstruction.cxx:4059
 AliReconstruction.cxx:4060
 AliReconstruction.cxx:4061
 AliReconstruction.cxx:4062
 AliReconstruction.cxx:4063
 AliReconstruction.cxx:4064
 AliReconstruction.cxx:4065
 AliReconstruction.cxx:4066
 AliReconstruction.cxx:4067
 AliReconstruction.cxx:4068
 AliReconstruction.cxx:4069
 AliReconstruction.cxx:4070
 AliReconstruction.cxx:4071
 AliReconstruction.cxx:4072
 AliReconstruction.cxx:4073
 AliReconstruction.cxx:4074
 AliReconstruction.cxx:4075
 AliReconstruction.cxx:4076
 AliReconstruction.cxx:4077
 AliReconstruction.cxx:4078
 AliReconstruction.cxx:4079
 AliReconstruction.cxx:4080
 AliReconstruction.cxx:4081
 AliReconstruction.cxx:4082
 AliReconstruction.cxx:4083
 AliReconstruction.cxx:4084
 AliReconstruction.cxx:4085
 AliReconstruction.cxx:4086
 AliReconstruction.cxx:4087
 AliReconstruction.cxx:4088
 AliReconstruction.cxx:4089
 AliReconstruction.cxx:4090
 AliReconstruction.cxx:4091
 AliReconstruction.cxx:4092
 AliReconstruction.cxx:4093
 AliReconstruction.cxx:4094
 AliReconstruction.cxx:4095
 AliReconstruction.cxx:4096
 AliReconstruction.cxx:4097
 AliReconstruction.cxx:4098
 AliReconstruction.cxx:4099
 AliReconstruction.cxx:4100
 AliReconstruction.cxx:4101
 AliReconstruction.cxx:4102
 AliReconstruction.cxx:4103
 AliReconstruction.cxx:4104
 AliReconstruction.cxx:4105
 AliReconstruction.cxx:4106
 AliReconstruction.cxx:4107
 AliReconstruction.cxx:4108
 AliReconstruction.cxx:4109
 AliReconstruction.cxx:4110
 AliReconstruction.cxx:4111
 AliReconstruction.cxx:4112
 AliReconstruction.cxx:4113
 AliReconstruction.cxx:4114
 AliReconstruction.cxx:4115
 AliReconstruction.cxx:4116
 AliReconstruction.cxx:4117
 AliReconstruction.cxx:4118
 AliReconstruction.cxx:4119
 AliReconstruction.cxx:4120
 AliReconstruction.cxx:4121
 AliReconstruction.cxx:4122
 AliReconstruction.cxx:4123
 AliReconstruction.cxx:4124
 AliReconstruction.cxx:4125
 AliReconstruction.cxx:4126
 AliReconstruction.cxx:4127
 AliReconstruction.cxx:4128
 AliReconstruction.cxx:4129
 AliReconstruction.cxx:4130
 AliReconstruction.cxx:4131
 AliReconstruction.cxx:4132
 AliReconstruction.cxx:4133
 AliReconstruction.cxx:4134
 AliReconstruction.cxx:4135
 AliReconstruction.cxx:4136
 AliReconstruction.cxx:4137
 AliReconstruction.cxx:4138
 AliReconstruction.cxx:4139
 AliReconstruction.cxx:4140
 AliReconstruction.cxx:4141
 AliReconstruction.cxx:4142
 AliReconstruction.cxx:4143
 AliReconstruction.cxx:4144
 AliReconstruction.cxx:4145
 AliReconstruction.cxx:4146
 AliReconstruction.cxx:4147
 AliReconstruction.cxx:4148
 AliReconstruction.cxx:4149
 AliReconstruction.cxx:4150
 AliReconstruction.cxx:4151
 AliReconstruction.cxx:4152
 AliReconstruction.cxx:4153
 AliReconstruction.cxx:4154
 AliReconstruction.cxx:4155
 AliReconstruction.cxx:4156
 AliReconstruction.cxx:4157
 AliReconstruction.cxx:4158
 AliReconstruction.cxx:4159
 AliReconstruction.cxx:4160
 AliReconstruction.cxx:4161
 AliReconstruction.cxx:4162
 AliReconstruction.cxx:4163
 AliReconstruction.cxx:4164
 AliReconstruction.cxx:4165
 AliReconstruction.cxx:4166
 AliReconstruction.cxx:4167
 AliReconstruction.cxx:4168
 AliReconstruction.cxx:4169
 AliReconstruction.cxx:4170
 AliReconstruction.cxx:4171
 AliReconstruction.cxx:4172
 AliReconstruction.cxx:4173
 AliReconstruction.cxx:4174
 AliReconstruction.cxx:4175
 AliReconstruction.cxx:4176
 AliReconstruction.cxx:4177
 AliReconstruction.cxx:4178
 AliReconstruction.cxx:4179
 AliReconstruction.cxx:4180
 AliReconstruction.cxx:4181
 AliReconstruction.cxx:4182
 AliReconstruction.cxx:4183
 AliReconstruction.cxx:4184
 AliReconstruction.cxx:4185
 AliReconstruction.cxx:4186
 AliReconstruction.cxx:4187
 AliReconstruction.cxx:4188
 AliReconstruction.cxx:4189
 AliReconstruction.cxx:4190
 AliReconstruction.cxx:4191
 AliReconstruction.cxx:4192
 AliReconstruction.cxx:4193
 AliReconstruction.cxx:4194
 AliReconstruction.cxx:4195
 AliReconstruction.cxx:4196
 AliReconstruction.cxx:4197
 AliReconstruction.cxx:4198
 AliReconstruction.cxx:4199
 AliReconstruction.cxx:4200
 AliReconstruction.cxx:4201
 AliReconstruction.cxx:4202
 AliReconstruction.cxx:4203
 AliReconstruction.cxx:4204
 AliReconstruction.cxx:4205
 AliReconstruction.cxx:4206
 AliReconstruction.cxx:4207
 AliReconstruction.cxx:4208
 AliReconstruction.cxx:4209
 AliReconstruction.cxx:4210
 AliReconstruction.cxx:4211
 AliReconstruction.cxx:4212
 AliReconstruction.cxx:4213
 AliReconstruction.cxx:4214
 AliReconstruction.cxx:4215
 AliReconstruction.cxx:4216
 AliReconstruction.cxx:4217
 AliReconstruction.cxx:4218
 AliReconstruction.cxx:4219
 AliReconstruction.cxx:4220
 AliReconstruction.cxx:4221
 AliReconstruction.cxx:4222
 AliReconstruction.cxx:4223
 AliReconstruction.cxx:4224
 AliReconstruction.cxx:4225
 AliReconstruction.cxx:4226
 AliReconstruction.cxx:4227
 AliReconstruction.cxx:4228
 AliReconstruction.cxx:4229
 AliReconstruction.cxx:4230
 AliReconstruction.cxx:4231
 AliReconstruction.cxx:4232
 AliReconstruction.cxx:4233
 AliReconstruction.cxx:4234
 AliReconstruction.cxx:4235
 AliReconstruction.cxx:4236
 AliReconstruction.cxx:4237
 AliReconstruction.cxx:4238
 AliReconstruction.cxx:4239
 AliReconstruction.cxx:4240
 AliReconstruction.cxx:4241
 AliReconstruction.cxx:4242
 AliReconstruction.cxx:4243
 AliReconstruction.cxx:4244
 AliReconstruction.cxx:4245
 AliReconstruction.cxx:4246
 AliReconstruction.cxx:4247
 AliReconstruction.cxx:4248
 AliReconstruction.cxx:4249
 AliReconstruction.cxx:4250
 AliReconstruction.cxx:4251
 AliReconstruction.cxx:4252
 AliReconstruction.cxx:4253
 AliReconstruction.cxx:4254
 AliReconstruction.cxx:4255
 AliReconstruction.cxx:4256
 AliReconstruction.cxx:4257
 AliReconstruction.cxx:4258
 AliReconstruction.cxx:4259
 AliReconstruction.cxx:4260
 AliReconstruction.cxx:4261
 AliReconstruction.cxx:4262
 AliReconstruction.cxx:4263
 AliReconstruction.cxx:4264
 AliReconstruction.cxx:4265
 AliReconstruction.cxx:4266
 AliReconstruction.cxx:4267
 AliReconstruction.cxx:4268
 AliReconstruction.cxx:4269
 AliReconstruction.cxx:4270
 AliReconstruction.cxx:4271
 AliReconstruction.cxx:4272
 AliReconstruction.cxx:4273
 AliReconstruction.cxx:4274
 AliReconstruction.cxx:4275
 AliReconstruction.cxx:4276
 AliReconstruction.cxx:4277
 AliReconstruction.cxx:4278
 AliReconstruction.cxx:4279
 AliReconstruction.cxx:4280
 AliReconstruction.cxx:4281
 AliReconstruction.cxx:4282
 AliReconstruction.cxx:4283
 AliReconstruction.cxx:4284
 AliReconstruction.cxx:4285
 AliReconstruction.cxx:4286
 AliReconstruction.cxx:4287
 AliReconstruction.cxx:4288
 AliReconstruction.cxx:4289
 AliReconstruction.cxx:4290
 AliReconstruction.cxx:4291
 AliReconstruction.cxx:4292
 AliReconstruction.cxx:4293
 AliReconstruction.cxx:4294
 AliReconstruction.cxx:4295
 AliReconstruction.cxx:4296
 AliReconstruction.cxx:4297
 AliReconstruction.cxx:4298
 AliReconstruction.cxx:4299
 AliReconstruction.cxx:4300
 AliReconstruction.cxx:4301
 AliReconstruction.cxx:4302
 AliReconstruction.cxx:4303
 AliReconstruction.cxx:4304
 AliReconstruction.cxx:4305
 AliReconstruction.cxx:4306
 AliReconstruction.cxx:4307
 AliReconstruction.cxx:4308
 AliReconstruction.cxx:4309
 AliReconstruction.cxx:4310
 AliReconstruction.cxx:4311
 AliReconstruction.cxx:4312
 AliReconstruction.cxx:4313
 AliReconstruction.cxx:4314
 AliReconstruction.cxx:4315
 AliReconstruction.cxx:4316
 AliReconstruction.cxx:4317
 AliReconstruction.cxx:4318
 AliReconstruction.cxx:4319
 AliReconstruction.cxx:4320
 AliReconstruction.cxx:4321
 AliReconstruction.cxx:4322
 AliReconstruction.cxx:4323
 AliReconstruction.cxx:4324
 AliReconstruction.cxx:4325
 AliReconstruction.cxx:4326
 AliReconstruction.cxx:4327
 AliReconstruction.cxx:4328
 AliReconstruction.cxx:4329
 AliReconstruction.cxx:4330
 AliReconstruction.cxx:4331
 AliReconstruction.cxx:4332
 AliReconstruction.cxx:4333
 AliReconstruction.cxx:4334
 AliReconstruction.cxx:4335
 AliReconstruction.cxx:4336
 AliReconstruction.cxx:4337
 AliReconstruction.cxx:4338
 AliReconstruction.cxx:4339
 AliReconstruction.cxx:4340
 AliReconstruction.cxx:4341
 AliReconstruction.cxx:4342
 AliReconstruction.cxx:4343
 AliReconstruction.cxx:4344
 AliReconstruction.cxx:4345
 AliReconstruction.cxx:4346
 AliReconstruction.cxx:4347
 AliReconstruction.cxx:4348
 AliReconstruction.cxx:4349
 AliReconstruction.cxx:4350
 AliReconstruction.cxx:4351
 AliReconstruction.cxx:4352
 AliReconstruction.cxx:4353
 AliReconstruction.cxx:4354
 AliReconstruction.cxx:4355
 AliReconstruction.cxx:4356
 AliReconstruction.cxx:4357
 AliReconstruction.cxx:4358
 AliReconstruction.cxx:4359
 AliReconstruction.cxx:4360
 AliReconstruction.cxx:4361
 AliReconstruction.cxx:4362
 AliReconstruction.cxx:4363
 AliReconstruction.cxx:4364
 AliReconstruction.cxx:4365
 AliReconstruction.cxx:4366
 AliReconstruction.cxx:4367
 AliReconstruction.cxx:4368
 AliReconstruction.cxx:4369
 AliReconstruction.cxx:4370
 AliReconstruction.cxx:4371
 AliReconstruction.cxx:4372
 AliReconstruction.cxx:4373
 AliReconstruction.cxx:4374
 AliReconstruction.cxx:4375
 AliReconstruction.cxx:4376
 AliReconstruction.cxx:4377
 AliReconstruction.cxx:4378
 AliReconstruction.cxx:4379
 AliReconstruction.cxx:4380
 AliReconstruction.cxx:4381
 AliReconstruction.cxx:4382
 AliReconstruction.cxx:4383
 AliReconstruction.cxx:4384
 AliReconstruction.cxx:4385
 AliReconstruction.cxx:4386
 AliReconstruction.cxx:4387
 AliReconstruction.cxx:4388
 AliReconstruction.cxx:4389
 AliReconstruction.cxx:4390
 AliReconstruction.cxx:4391
 AliReconstruction.cxx:4392
 AliReconstruction.cxx:4393
 AliReconstruction.cxx:4394
 AliReconstruction.cxx:4395
 AliReconstruction.cxx:4396
 AliReconstruction.cxx:4397
 AliReconstruction.cxx:4398
 AliReconstruction.cxx:4399
 AliReconstruction.cxx:4400
 AliReconstruction.cxx:4401
 AliReconstruction.cxx:4402
 AliReconstruction.cxx:4403
 AliReconstruction.cxx:4404
 AliReconstruction.cxx:4405
 AliReconstruction.cxx:4406
 AliReconstruction.cxx:4407
 AliReconstruction.cxx:4408
 AliReconstruction.cxx:4409
 AliReconstruction.cxx:4410
 AliReconstruction.cxx:4411
 AliReconstruction.cxx:4412
 AliReconstruction.cxx:4413
 AliReconstruction.cxx:4414
 AliReconstruction.cxx:4415
 AliReconstruction.cxx:4416
 AliReconstruction.cxx:4417
 AliReconstruction.cxx:4418
 AliReconstruction.cxx:4419
 AliReconstruction.cxx:4420
 AliReconstruction.cxx:4421
 AliReconstruction.cxx:4422
 AliReconstruction.cxx:4423
 AliReconstruction.cxx:4424
 AliReconstruction.cxx:4425
 AliReconstruction.cxx:4426
 AliReconstruction.cxx:4427
 AliReconstruction.cxx:4428
 AliReconstruction.cxx:4429
 AliReconstruction.cxx:4430
 AliReconstruction.cxx:4431
 AliReconstruction.cxx:4432
 AliReconstruction.cxx:4433
 AliReconstruction.cxx:4434
 AliReconstruction.cxx:4435
 AliReconstruction.cxx:4436
 AliReconstruction.cxx:4437
 AliReconstruction.cxx:4438
 AliReconstruction.cxx:4439
 AliReconstruction.cxx:4440
 AliReconstruction.cxx:4441
 AliReconstruction.cxx:4442
 AliReconstruction.cxx:4443
 AliReconstruction.cxx:4444
 AliReconstruction.cxx:4445
 AliReconstruction.cxx:4446
 AliReconstruction.cxx:4447
 AliReconstruction.cxx:4448
 AliReconstruction.cxx:4449
 AliReconstruction.cxx:4450
 AliReconstruction.cxx:4451
 AliReconstruction.cxx:4452
 AliReconstruction.cxx:4453
 AliReconstruction.cxx:4454
 AliReconstruction.cxx:4455
 AliReconstruction.cxx:4456
 AliReconstruction.cxx:4457
 AliReconstruction.cxx:4458
 AliReconstruction.cxx:4459
 AliReconstruction.cxx:4460
 AliReconstruction.cxx:4461
 AliReconstruction.cxx:4462
 AliReconstruction.cxx:4463
 AliReconstruction.cxx:4464
 AliReconstruction.cxx:4465
 AliReconstruction.cxx:4466
 AliReconstruction.cxx:4467
 AliReconstruction.cxx:4468
 AliReconstruction.cxx:4469
 AliReconstruction.cxx:4470
 AliReconstruction.cxx:4471
 AliReconstruction.cxx:4472
 AliReconstruction.cxx:4473
 AliReconstruction.cxx:4474
 AliReconstruction.cxx:4475
 AliReconstruction.cxx:4476
 AliReconstruction.cxx:4477
 AliReconstruction.cxx:4478
 AliReconstruction.cxx:4479
 AliReconstruction.cxx:4480
 AliReconstruction.cxx:4481
 AliReconstruction.cxx:4482
 AliReconstruction.cxx:4483
 AliReconstruction.cxx:4484
 AliReconstruction.cxx:4485
 AliReconstruction.cxx:4486
 AliReconstruction.cxx:4487
 AliReconstruction.cxx:4488
 AliReconstruction.cxx:4489
 AliReconstruction.cxx:4490
 AliReconstruction.cxx:4491
 AliReconstruction.cxx:4492
 AliReconstruction.cxx:4493
 AliReconstruction.cxx:4494
 AliReconstruction.cxx:4495
 AliReconstruction.cxx:4496
 AliReconstruction.cxx:4497
 AliReconstruction.cxx:4498
 AliReconstruction.cxx:4499
 AliReconstruction.cxx:4500
 AliReconstruction.cxx:4501
 AliReconstruction.cxx:4502
 AliReconstruction.cxx:4503
 AliReconstruction.cxx:4504
 AliReconstruction.cxx:4505
 AliReconstruction.cxx:4506
 AliReconstruction.cxx:4507
 AliReconstruction.cxx:4508
 AliReconstruction.cxx:4509
 AliReconstruction.cxx:4510
 AliReconstruction.cxx:4511
 AliReconstruction.cxx:4512
 AliReconstruction.cxx:4513
 AliReconstruction.cxx:4514
 AliReconstruction.cxx:4515
 AliReconstruction.cxx:4516
 AliReconstruction.cxx:4517
 AliReconstruction.cxx:4518
 AliReconstruction.cxx:4519
 AliReconstruction.cxx:4520
 AliReconstruction.cxx:4521
 AliReconstruction.cxx:4522
 AliReconstruction.cxx:4523
 AliReconstruction.cxx:4524
 AliReconstruction.cxx:4525
 AliReconstruction.cxx:4526
 AliReconstruction.cxx:4527
 AliReconstruction.cxx:4528
 AliReconstruction.cxx:4529
 AliReconstruction.cxx:4530
 AliReconstruction.cxx:4531
 AliReconstruction.cxx:4532
 AliReconstruction.cxx:4533
 AliReconstruction.cxx:4534
 AliReconstruction.cxx:4535
 AliReconstruction.cxx:4536
 AliReconstruction.cxx:4537
 AliReconstruction.cxx:4538
 AliReconstruction.cxx:4539
 AliReconstruction.cxx:4540
 AliReconstruction.cxx:4541
 AliReconstruction.cxx:4542
 AliReconstruction.cxx:4543
 AliReconstruction.cxx:4544
 AliReconstruction.cxx:4545
 AliReconstruction.cxx:4546
 AliReconstruction.cxx:4547
 AliReconstruction.cxx:4548
 AliReconstruction.cxx:4549
 AliReconstruction.cxx:4550
 AliReconstruction.cxx:4551
 AliReconstruction.cxx:4552
 AliReconstruction.cxx:4553
 AliReconstruction.cxx:4554
 AliReconstruction.cxx:4555
 AliReconstruction.cxx:4556
 AliReconstruction.cxx:4557
 AliReconstruction.cxx:4558
 AliReconstruction.cxx:4559
 AliReconstruction.cxx:4560
 AliReconstruction.cxx:4561
 AliReconstruction.cxx:4562
 AliReconstruction.cxx:4563
 AliReconstruction.cxx:4564
 AliReconstruction.cxx:4565
 AliReconstruction.cxx:4566
 AliReconstruction.cxx:4567
 AliReconstruction.cxx:4568
 AliReconstruction.cxx:4569
 AliReconstruction.cxx:4570
 AliReconstruction.cxx:4571
 AliReconstruction.cxx:4572
 AliReconstruction.cxx:4573
 AliReconstruction.cxx:4574
 AliReconstruction.cxx:4575
 AliReconstruction.cxx:4576
 AliReconstruction.cxx:4577
 AliReconstruction.cxx:4578
 AliReconstruction.cxx:4579
 AliReconstruction.cxx:4580
 AliReconstruction.cxx:4581
 AliReconstruction.cxx:4582
 AliReconstruction.cxx:4583
 AliReconstruction.cxx:4584
 AliReconstruction.cxx:4585
 AliReconstruction.cxx:4586
 AliReconstruction.cxx:4587
 AliReconstruction.cxx:4588
 AliReconstruction.cxx:4589
 AliReconstruction.cxx:4590
 AliReconstruction.cxx:4591
 AliReconstruction.cxx:4592
 AliReconstruction.cxx:4593
 AliReconstruction.cxx:4594
 AliReconstruction.cxx:4595
 AliReconstruction.cxx:4596
 AliReconstruction.cxx:4597
 AliReconstruction.cxx:4598
 AliReconstruction.cxx:4599
 AliReconstruction.cxx:4600
 AliReconstruction.cxx:4601
 AliReconstruction.cxx:4602
 AliReconstruction.cxx:4603
 AliReconstruction.cxx:4604
 AliReconstruction.cxx:4605
 AliReconstruction.cxx:4606
 AliReconstruction.cxx:4607
 AliReconstruction.cxx:4608
 AliReconstruction.cxx:4609
 AliReconstruction.cxx:4610
 AliReconstruction.cxx:4611
 AliReconstruction.cxx:4612
 AliReconstruction.cxx:4613
 AliReconstruction.cxx:4614
 AliReconstruction.cxx:4615
 AliReconstruction.cxx:4616
 AliReconstruction.cxx:4617
 AliReconstruction.cxx:4618
 AliReconstruction.cxx:4619
 AliReconstruction.cxx:4620
 AliReconstruction.cxx:4621
 AliReconstruction.cxx:4622
 AliReconstruction.cxx:4623
 AliReconstruction.cxx:4624
 AliReconstruction.cxx:4625
 AliReconstruction.cxx:4626
 AliReconstruction.cxx:4627
 AliReconstruction.cxx:4628
 AliReconstruction.cxx:4629
 AliReconstruction.cxx:4630
 AliReconstruction.cxx:4631
 AliReconstruction.cxx:4632
 AliReconstruction.cxx:4633
 AliReconstruction.cxx:4634
 AliReconstruction.cxx:4635
 AliReconstruction.cxx:4636
 AliReconstruction.cxx:4637
 AliReconstruction.cxx:4638
 AliReconstruction.cxx:4639
 AliReconstruction.cxx:4640
 AliReconstruction.cxx:4641
 AliReconstruction.cxx:4642
 AliReconstruction.cxx:4643
 AliReconstruction.cxx:4644
 AliReconstruction.cxx:4645
 AliReconstruction.cxx:4646
 AliReconstruction.cxx:4647
 AliReconstruction.cxx:4648
 AliReconstruction.cxx:4649
 AliReconstruction.cxx:4650
 AliReconstruction.cxx:4651
 AliReconstruction.cxx:4652
 AliReconstruction.cxx:4653
 AliReconstruction.cxx:4654
 AliReconstruction.cxx:4655
 AliReconstruction.cxx:4656
 AliReconstruction.cxx:4657
 AliReconstruction.cxx:4658
 AliReconstruction.cxx:4659
 AliReconstruction.cxx:4660
 AliReconstruction.cxx:4661
 AliReconstruction.cxx:4662
 AliReconstruction.cxx:4663
 AliReconstruction.cxx:4664
 AliReconstruction.cxx:4665
 AliReconstruction.cxx:4666
 AliReconstruction.cxx:4667
 AliReconstruction.cxx:4668
 AliReconstruction.cxx:4669
 AliReconstruction.cxx:4670
 AliReconstruction.cxx:4671
 AliReconstruction.cxx:4672
 AliReconstruction.cxx:4673
 AliReconstruction.cxx:4674
 AliReconstruction.cxx:4675
 AliReconstruction.cxx:4676
 AliReconstruction.cxx:4677
 AliReconstruction.cxx:4678
 AliReconstruction.cxx:4679
 AliReconstruction.cxx:4680
 AliReconstruction.cxx:4681
 AliReconstruction.cxx:4682
 AliReconstruction.cxx:4683
 AliReconstruction.cxx:4684
 AliReconstruction.cxx:4685
 AliReconstruction.cxx:4686
 AliReconstruction.cxx:4687
 AliReconstruction.cxx:4688
 AliReconstruction.cxx:4689
 AliReconstruction.cxx:4690
 AliReconstruction.cxx:4691
 AliReconstruction.cxx:4692
 AliReconstruction.cxx:4693
 AliReconstruction.cxx:4694
 AliReconstruction.cxx:4695
 AliReconstruction.cxx:4696
 AliReconstruction.cxx:4697
 AliReconstruction.cxx:4698
 AliReconstruction.cxx:4699
 AliReconstruction.cxx:4700
 AliReconstruction.cxx:4701
 AliReconstruction.cxx:4702
 AliReconstruction.cxx:4703
 AliReconstruction.cxx:4704
 AliReconstruction.cxx:4705
 AliReconstruction.cxx:4706
 AliReconstruction.cxx:4707
 AliReconstruction.cxx:4708
 AliReconstruction.cxx:4709
 AliReconstruction.cxx:4710
 AliReconstruction.cxx:4711
 AliReconstruction.cxx:4712
 AliReconstruction.cxx:4713
 AliReconstruction.cxx:4714
 AliReconstruction.cxx:4715
 AliReconstruction.cxx:4716
 AliReconstruction.cxx:4717
 AliReconstruction.cxx:4718
 AliReconstruction.cxx:4719
 AliReconstruction.cxx:4720
 AliReconstruction.cxx:4721
 AliReconstruction.cxx:4722
 AliReconstruction.cxx:4723
 AliReconstruction.cxx:4724
 AliReconstruction.cxx:4725
 AliReconstruction.cxx:4726
 AliReconstruction.cxx:4727
 AliReconstruction.cxx:4728
 AliReconstruction.cxx:4729
 AliReconstruction.cxx:4730
 AliReconstruction.cxx:4731
 AliReconstruction.cxx:4732
 AliReconstruction.cxx:4733
 AliReconstruction.cxx:4734
 AliReconstruction.cxx:4735
 AliReconstruction.cxx:4736
 AliReconstruction.cxx:4737
 AliReconstruction.cxx:4738
 AliReconstruction.cxx:4739
 AliReconstruction.cxx:4740
 AliReconstruction.cxx:4741
 AliReconstruction.cxx:4742
 AliReconstruction.cxx:4743
 AliReconstruction.cxx:4744
 AliReconstruction.cxx:4745
 AliReconstruction.cxx:4746
 AliReconstruction.cxx:4747
 AliReconstruction.cxx:4748
 AliReconstruction.cxx:4749
 AliReconstruction.cxx:4750
 AliReconstruction.cxx:4751
 AliReconstruction.cxx:4752
 AliReconstruction.cxx:4753
 AliReconstruction.cxx:4754
 AliReconstruction.cxx:4755
 AliReconstruction.cxx:4756
 AliReconstruction.cxx:4757
 AliReconstruction.cxx:4758
 AliReconstruction.cxx:4759
 AliReconstruction.cxx:4760
 AliReconstruction.cxx:4761
 AliReconstruction.cxx:4762
 AliReconstruction.cxx:4763
 AliReconstruction.cxx:4764
 AliReconstruction.cxx:4765
 AliReconstruction.cxx:4766
 AliReconstruction.cxx:4767
 AliReconstruction.cxx:4768
 AliReconstruction.cxx:4769
 AliReconstruction.cxx:4770
 AliReconstruction.cxx:4771
 AliReconstruction.cxx:4772
 AliReconstruction.cxx:4773
 AliReconstruction.cxx:4774
 AliReconstruction.cxx:4775
 AliReconstruction.cxx:4776
 AliReconstruction.cxx:4777
 AliReconstruction.cxx:4778
 AliReconstruction.cxx:4779
 AliReconstruction.cxx:4780
 AliReconstruction.cxx:4781
 AliReconstruction.cxx:4782
 AliReconstruction.cxx:4783
 AliReconstruction.cxx:4784
 AliReconstruction.cxx:4785
 AliReconstruction.cxx:4786
 AliReconstruction.cxx:4787
 AliReconstruction.cxx:4788
 AliReconstruction.cxx:4789
 AliReconstruction.cxx:4790
 AliReconstruction.cxx:4791
 AliReconstruction.cxx:4792
 AliReconstruction.cxx:4793
 AliReconstruction.cxx:4794
 AliReconstruction.cxx:4795
 AliReconstruction.cxx:4796
 AliReconstruction.cxx:4797
 AliReconstruction.cxx:4798
 AliReconstruction.cxx:4799
 AliReconstruction.cxx:4800
 AliReconstruction.cxx:4801
 AliReconstruction.cxx:4802
 AliReconstruction.cxx:4803
 AliReconstruction.cxx:4804
 AliReconstruction.cxx:4805
 AliReconstruction.cxx:4806
 AliReconstruction.cxx:4807
 AliReconstruction.cxx:4808
 AliReconstruction.cxx:4809
 AliReconstruction.cxx:4810
 AliReconstruction.cxx:4811
 AliReconstruction.cxx:4812
 AliReconstruction.cxx:4813
 AliReconstruction.cxx:4814
 AliReconstruction.cxx:4815
 AliReconstruction.cxx:4816
 AliReconstruction.cxx:4817
 AliReconstruction.cxx:4818
 AliReconstruction.cxx:4819
 AliReconstruction.cxx:4820