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

/* History of cvs commits:
 *
 * $Log$
 * Revision 1.18  2006/08/28 10:01:56  kharlov
 * Effective C++ warnings fixed (Timur Pocheptsov)
 *
 * Revision 1.17  2006/08/25 16:00:53  kharlov
 * Compliance with Effective C++AliPHOSHit.cxx
 *
 * Revision 1.16  2006/08/01 12:15:04  cvetan
 * Adding a constructor from TFolder. Needed by AliReconstruction plugin scheme
 *
 * Revision 1.15  2005/07/12 20:07:35  hristov
 * Changes needed to run simulation and reconstrruction in the same AliRoot session
 *
 * Revision 1.14  2005/05/28 14:19:04  schutz
 * Compilation warnings fixed by T.P.
 *
 */

//_________________________________________________________________________
//  A singleton. This class should be used in the analysis stage to get 
//  reconstructed objects: Digits, RecPoints, TrackSegments and RecParticles,
//  instead of directly reading them from galice.root file. This container 
//  ensures, that one reads Digits, made of these particular digits, RecPoints, 
//  made of these particular RecPoints, TrackSegments and RecParticles. 
//  This becomes non trivial if there are several identical branches, produced with
//  different set of parameters. 
//
//  An example of how to use (see also class AliPHOSAnalyser):
//  for(Int_t irecp = 0; irecp < gime->NRecParticles() ; irecp++)
//     AliPHOSRecParticle * part = gime->RecParticle(1) ;
//     ................
//  please->GetEvent(event) ;    // reads new event from galice.root
//                  
//-- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko (RRC KI & SUBATECH)
//--         Completely redesigned by Dmitri Peressounko March 2001  
//
//-- YS June 2001 : renamed the original AliPHOSIndexToObject and make
//--         systematic usage of TFolders without changing the interface        
//////////////////////////////////////////////////////////////////////////////


// --- ROOT system ---

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

// --- Standard library ---

// --- AliRoot header files ---
#include "AliObjectLoader.h"
#include "AliLog.h"
#include "AliPHOSLoader.h"
#include "AliPHOS.h"
#include "AliPHOSHit.h"

using std::cout;
using std::endl;
ClassImp(AliPHOSLoader)


const TString AliPHOSLoader::fgkHitsName("HITS");//Name for TClonesArray with hits from one event
const TString AliPHOSLoader::fgkSDigitsName("SDIGITS");//Name for TClonesArray 
const TString AliPHOSLoader::fgkDigitsName("DIGITS");//Name for TClonesArray 
const TString AliPHOSLoader::fgkEmcRecPointsName("EMCRECPOINTS");//Name for TClonesArray 
const TString AliPHOSLoader::fgkCpvRecPointsName("CPVRECPOINTS");//Name for TClonesArray 
const TString AliPHOSLoader::fgkTracksName("TRACKS");//Name for TClonesArray 
const TString AliPHOSLoader::fgkRecParticlesName("RECPARTICLES");//Name for TClonesArray

const TString AliPHOSLoader::fgkEmcRecPointsBranchName("PHOSEmcRP");//Name for branch with EMC Reconstructed Points
const TString AliPHOSLoader::fgkCpvRecPointsBranchName("PHOSCpvRP");//Name for branch with CPV Reconstructed Points
const TString AliPHOSLoader::fgkTrackSegmentsBranchName("PHOSTS");//Name for branch with TrackSegments
const TString AliPHOSLoader::fgkRecParticlesBranchName("PHOSRP");//Name for branch with Reconstructed Particles
//____________________________________________________________________________ 
AliPHOSLoader::AliPHOSLoader() : fBranchTitle(), fDebug(0), fTmpHits(0x0)
{
  //def ctor
  fTmpHits =  new TClonesArray("AliPHOSHit",1000);
}
//____________________________________________________________________________ 
AliPHOSLoader::AliPHOSLoader(const Char_t *detname,const Char_t *eventfoldername) :
      AliLoader(detname, eventfoldername),
      fBranchTitle(), fDebug(0), fTmpHits(0x0)
{
  //ctor
}
//____________________________________________________________________________ 
AliPHOSLoader::AliPHOSLoader(const Char_t *detname,TFolder *topfolder):
  AliLoader(detname,topfolder),
  fBranchTitle(), fDebug(0), fTmpHits(0x0)

{
  //ctor
  fTmpHits =  new TClonesArray("AliPHOSHit",1000);
}

//____________________________________________________________________________ 

AliPHOSLoader::~AliPHOSLoader()
{
  //remove and delete arrays
  Clean(fgkHitsName);
  Clean(fgkSDigitsName);
  Clean(fgkDigitsName);
  Clean(fgkEmcRecPointsName);
  Clean(fgkCpvRecPointsName);
  Clean(fgkTracksName);
  Clean(fgkRecParticlesName);
  CleanFolders() ;
}

//____________________________________________________________________________ 
void AliPHOSLoader::CleanFolders()
 {
   CleanRecParticles();
   AliLoader::CleanFolders();
 }

//____________________________________________________________________________ 
Int_t AliPHOSLoader::SetEvent()
{
//Cleans loaded stuff and and sets Files and Directories
// do not post any data to folder


 Int_t retval = AliLoader::SetEvent();
  if (retval)
   {
     AliError("returned error");
     return retval;
   }


  if (Hits()) Hits()->Clear();
  if (SDigits()) SDigits()->Clear();
  if (Digits()) Digits()->Clear();
  if (EmcRecPoints()) EmcRecPoints()->Clear();
  if (CpvRecPoints()) CpvRecPoints()->Clear();
  if (TrackSegments()) TrackSegments()->Clear();
  if (RecParticles()) RecParticles()->Clear();
   
  return 0;
}

//____________________________________________________________________________ 
Int_t AliPHOSLoader::GetEvent()
{
//Overloads GetEvent method called by AliRunLoader::GetEvent(Int_t) method
//to add Rec Particles specific for PHOS

//First call the original method to get whatever from std. setup is needed
  Int_t retval;
  
  retval = AliLoader::GetEvent();
  if (retval)
   {
     AliError("returned error");
     return retval;
   }
  
  if (GetHitsDataLoader()->GetBaseDataLoader()->IsLoaded()) ReadHits();
  if (GetSDigitsDataLoader()->GetBaseDataLoader()->IsLoaded()) ReadSDigits();
  if (GetDigitsDataLoader()->GetBaseDataLoader()->IsLoaded()) ReadDigits();
  if (GetRecPointsDataLoader()->GetBaseDataLoader()->IsLoaded()) ReadRecPoints();
  if (GetTracksDataLoader()->GetBaseDataLoader()->IsLoaded()) ReadTracks();
  if (GetRecParticlesDataLoader()->GetBaseDataLoader()->IsLoaded()) ReadRecParticles();


//Now, check if RecPart were loaded  
  return 0;
}

// //____________________________________________________________________________ 
// const AliPHOS * AliPHOSLoader::PHOS() 
// {
//   // returns the PHOS object 
//   AliPHOS * phos = dynamic_cast<AliPHOS*>(GetModulesFolder()->FindObject(fDetectorName));
//   if ( phos == 0x0) 
//     if (fDebug)
//       cout << "WARNING: AliPHOSLoader::PHOS -> PHOS module not found in Folders" << endl ; 
//   return phos ; 
// }  

//____________________________________________________________________________ 
Int_t AliPHOSLoader::LoadHits(Option_t* opt)
{  
//------- Hits ----------------------
//Overload (extends) LoadHits implemented in AliLoader
//
  Int_t res;
  
  //First call the AliLoader's method to send the TreeH to folder
  res = AliLoader::LoadHits(opt);
  
  if (res)
   {//oops, error
     AliError("returned error");
     return res;
   }

  //read the data from tree in folder and send it to folder
  res = ReadHits();
  return 0;
}


//____________________________________________________________________________ 
Int_t AliPHOSLoader::LoadSDigits(Option_t* opt)
{
  //---------- SDigits -------------------------
  Int_t res;
  //First call the AliLoader's method to send the TreeS to folder
  res = AliLoader::LoadSDigits(opt);
  if (res)
   {//oops, error
     AliError("returned error");
     return res;
   }
  return ReadSDigits();
   
} 
//____________________________________________________________________________ 
Int_t AliPHOSLoader::LoadDigits(Option_t* opt)
{ 
  //---------- Digits -------------------------
  Int_t res;
  //First call the AliLoader's method to send the TreeS to folder
  res = AliLoader::LoadDigits(opt);
  if (res)
   {//oops, error
     AliError("returned error");
     return res;
   }
  return ReadDigits();
}
//____________________________________________________________________________ 
Int_t AliPHOSLoader::LoadRecPoints(Option_t* opt) 
{
  // -------------- RecPoints -------------------------------------------
  Int_t res;
  //First call the AliLoader's method to send the TreeR to folder
  res = AliLoader::LoadRecPoints(opt);
  if (res)
   {//oops, error
     AliError("returned error");
     return res;
   }

  TFolder * phosFolder = GetDetectorDataFolder();
  if ( phosFolder  == 0x0 ) 
   {
     AliError("Can not get detector data folder");
     return 1;
   }
  return ReadRecPoints();
}
//____________________________________________________________________________ 

Int_t  AliPHOSLoader::LoadTracks(Option_t* opt)
{
 //Loads Tracks: Open File, Reads Tree and posts, Read Data and Posts
  AliDebug(1, Form("opt = %s",opt));
 Int_t res;
 res = AliLoader::LoadTracks(opt);
 if (res)
   {//oops, error
      AliError("returned error");
      return res;
   }  
 return ReadTracks();
}

//____________________________________________________________________________ 
Int_t AliPHOSLoader::LoadRecParticles(Option_t* opt) 
{
  // -------------- RecPoints -------------------------------------------
  Int_t res;
  //First call the AliLoader's method to send the TreeT to folder
  res = AliLoader::LoadRecParticles(opt);
  if (res)
   {//oops, error
     AliError("returned error");
     return res;
   }
  return ReadRecParticles();
}

//____________________________________________________________________________ 
//PostHits etc. PostXXX must be const - not to hide virtual functions
//from base class AliLoader, but they call non-constant functions ReadXXX
//so I have to const_cast this pointer
Int_t AliPHOSLoader::PostHits()const
{
  // -------------- Hits -------------------------------------------
  Int_t reval = AliLoader::PostHits();
  if (reval)
   {
     AliError("returned error");
     return reval;
   }
   
  return const_cast<AliPHOSLoader *>(this)->ReadHits();
}
//____________________________________________________________________________ 

Int_t AliPHOSLoader::PostSDigits()const
{
  // -------------- SDigits -------------------------------------------
  Int_t reval = AliLoader::PostSDigits();
  if (reval)
   {
     AliError("returned error");
     return reval;
   }
  return const_cast<AliPHOSLoader *>(this)->ReadSDigits();
}
//____________________________________________________________________________ 

Int_t AliPHOSLoader::PostDigits()const
{
  // -------------- Digits -------------------------------------------
  Int_t reval = AliLoader::PostDigits();
  if (reval)
   {
     AliError("returned error");
     return reval;
   }
  return const_cast<AliPHOSLoader *>(this)->ReadDigits();
}
//____________________________________________________________________________ 

Int_t AliPHOSLoader::PostRecPoints()const
{
  // -------------- RecPoints -------------------------------------------
  Int_t reval = AliLoader::PostRecPoints();
  if (reval)
   {
     AliError("returned error");
     return reval;
   }
  return const_cast<AliPHOSLoader *>(this)->ReadRecPoints();
}

//____________________________________________________________________________ 

Int_t AliPHOSLoader::PostRecParticles()const
{
  // -------------- RecParticles -------------------------------------------
  Int_t reval = AliLoader::PostRecParticles();
  if (reval)
   {
     AliError("returned error");
     return reval;
   }
  return const_cast<AliPHOSLoader *>(this)->ReadRecParticles();
}
//____________________________________________________________________________ 

Int_t AliPHOSLoader::PostTracks()const
{
  // -------------- Tracks -------------------------------------------
  Int_t reval = AliLoader::PostTracks();
  if (reval)
   {
     AliError("returned error");
     return reval;
   }
  return const_cast<AliPHOSLoader *>(this)->ReadTracks();
}
//____________________________________________________________________________ 



//____________________________________________________________________________ 
Int_t AliPHOSLoader::ReadHits()
{
// If there is no Clones Array in folder creates it and sends to folder
// then tries to read
// Reads the first entry of PHOS branch in hit tree TreeH()
// Reads data from TreeH and stores it in TClonesArray that sits in DetectorDataFolder
//
  TObject** hitref = HitsRef();
  if(hitref == 0x0) {
    MakeHitsArray();
    hitref = HitsRef();
  }

  TClonesArray* hits = static_cast<TClonesArray*>(*hitref);

  TTree* treeh = TreeH();
  
  if(treeh == 0) {
    AliError("Cannot read TreeH from folder");
    return 1;
  }
  
  TBranch * hitsbranch = treeh->GetBranch(fDetectorName);
  if (hitsbranch == 0) {
    AliError("Cannot find branch PHOS"); 
    return 1;
  }

  AliDebug(1, "Reading Hits");
  
  if (hitsbranch->GetEntries() > 1) {

    hitsbranch->SetAddress(&fTmpHits);
    Int_t index = 0 ; 
    for (Int_t i = 0 ; i < hitsbranch->GetEntries(); i++) {
      hitsbranch->GetEntry(i) ;
      for (Int_t j = 0 ; j < fTmpHits->GetEntriesFast() ; j++) {
	AliPHOSHit* hit = (AliPHOSHit*)fTmpHits->At(j); 
	new((*hits)[index]) AliPHOSHit( *hit ) ;
	index++ ; 
      }
    }
    fTmpHits->Clear();
  }
  else {
    hitsbranch->SetAddress(hitref);
    hitsbranch->GetEntry(0) ;
  }
  
  return 0;
}
//____________________________________________________________________________ 
Int_t AliPHOSLoader::ReadSDigits()
{
// Read the summable digits tree TreeS():
// Check if TClones is in folder
// if not create and add to folder
// connect to tree if available
// Read the data

  TObject** sdref = SDigitsRef();
  if(sdref == 0x0)
   {
     MakeSDigitsArray();
     sdref = SDigitsRef();
   }
   
  TTree * treeS = TreeS();
  if(treeS==0)
   {
     //May happen if file is truncated or new in LoadSDigits
     //AliError("There is no SDigit Tree");
     return 0;
   }
  
  TBranch * branch = treeS->GetBranch(fDetectorName);
  if (branch == 0) 
   {//easy, maybe just a new tree
    //AliError("Cannot find branch PHOS"); 
    return 0;
  }
    
  branch->SetAddress(sdref);
  branch->GetEntry(0);
  return 0;
}

//____________________________________________________________________________ 
Int_t AliPHOSLoader::ReadDigits()
{
// Read the summable digits tree TreeS():
// Check if TClones is in folder
// if not create and add to folder
// connect to tree if available
// Read the data
  
  TObject** dref = DigitsRef();
  if(dref == 0x0)
   {//if there is not array in folder, create it and put it there
     MakeDigitsArray();
     dref = DigitsRef();
   }

  TTree * treeD = TreeD();
  if(treeD==0)
   {
     //May happen if file is truncated or new in LoadSDigits
     //AliError("There is no Digit Tree");
     return 0;
   }

  TBranch * branch = treeD->GetBranch(fDetectorName);
  if (branch == 0) 
   {//easy, maybe just a new tree
    //AliError("Cannot find branch ",fDetectorName.Data()); 
    return 0;
   }
  
  branch->SetAddress(dref);//connect branch to buffer sitting in folder
  branch->GetEntry(0);//get first event 

  return 0;  
}

//____________________________________________________________________________ 

void AliPHOSLoader::Track(Int_t itrack)
{
// Read the first entry of PHOS branch in hit tree gAlice->TreeH()
  if(TreeH()== 0)
   {
     if (LoadHits())
      {
        AliError("Can not load hits.");
        return;
      } 
   }
  
  TBranch * hitsbranch = dynamic_cast<TBranch*>(TreeH()->GetListOfBranches()->FindObject("PHOS")) ;
  if ( !hitsbranch ) {
    if (fDebug)
      cout << "WARNING:  AliPHOSLoader::ReadTreeH -> Cannot find branch PHOS" << endl ; 
    return ;
  }  
  if(!Hits()) PostHits();

  hitsbranch->SetAddress(HitsRef());
  hitsbranch->GetEntry(itrack);

}

//____________________________________________________________________________ 
Int_t AliPHOSLoader::ReadRecPoints()
{
//Creates and posts to folder an array container, 
//connects branch in tree (if exists), and reads data to array
  
  MakeRecPointsArray();
  
  TObjArray * cpva = 0x0 ; 
  TObjArray * emca = 0x0 ; 
  
  TTree * treeR = TreeR();
 
  if(treeR==0)
   {
     //May happen if file is truncated or new in LoadSDigits
     return 0;
   }

  Int_t retval = 0;
  TBranch * emcbranch = treeR->GetBranch(fgkEmcRecPointsBranchName);

  if (emcbranch == 0x0)
   {
     AliError(Form("Can not get branch with EMC Rec. Points named %s",
		   fgkEmcRecPointsBranchName.Data()));
     retval = 1;
   }
  else
   {
     emcbranch->SetAddress(&emca) ;
     emcbranch->GetEntry(0) ;
   }
  TBranch * cpvbranch = treeR->GetBranch(fgkCpvRecPointsBranchName);
  if (cpvbranch == 0x0)
   {
     AliError(Form("Can not get branch with CPV Rec. Points named %s",
		   fgkCpvRecPointsBranchName.Data()));
     retval = 2;
   }
  else
   {
     cpvbranch->SetAddress(&cpva);
     cpvbranch->GetEntry(0) ;
   }

  Int_t ii ; 
  if (emca != 0) {
    Int_t maxemc = emca->GetEntries() ; 
    for ( ii= 0 ; ii < maxemc ; ii++ ) 
      EmcRecPoints()->Add(emca->At(ii)) ;
  }

  if (cpva != 0) {
    Int_t maxcpv = cpva->GetEntries() ;
    for ( ii= 0 ; ii < maxcpv ; ii++ )
      CpvRecPoints()->Add(cpva->At(ii)) ; 
  }

  return retval;
}

//____________________________________________________________________________ 
Int_t AliPHOSLoader::ReadTracks()
{
//Creates and posts to folder an array container, 
//connects branch in tree (if exists), and reads data to arry

  TObject** trkref = TracksRef();
  if ( trkref == 0x0 )   
   {//Create and post array
    MakeTrackSegmentsArray();
    trkref = TracksRef();
   }

  TTree * treeT = TreeT();
  if(treeT==0)
   {
     //May happen if file is truncated or new in LoadSDigits, or the file is in update mode, 
     //but tracking was not performed yet for a current event
     //AliError("There is no Tree with Tracks");
     return 0;
   }
  
  TBranch * branch = treeT->GetBranch(fgkTrackSegmentsBranchName);
//   AliInfo(Form("Branch named %s is opened: 0x%z",
// 		  fgkTrackSegmentsBranchName.Data(),branch));
  if (branch == 0) 
   {//easy, maybe just a new tree
    AliError(Form("Cannot find branch named %s",
		  fgkTrackSegmentsBranchName.Data()));
    return 0;
  }

  branch->SetAddress(trkref);//connect branch to buffer sitting in folder
  branch->GetEntry(0);//get first event 
  
  return 0;
}
//____________________________________________________________________________ 

Int_t AliPHOSLoader::ReadRecParticles()
{
//Reads Reconstructed  Particles from file
//Creates and posts to folder an array container, 
//connects branch in tree (if exists), and reads data to arry
  
  TObject** recpartref = RecParticlesRef();
  
  if ( recpartref == 0x0 )   
   {//Create and post array
    MakeRecParticlesArray();
    recpartref = RecParticlesRef();
   }

  TTree * treeP = TreeP();
  if(treeP==0)
   {
     //May happen if file is truncated or new in LoadSDigits, 
     //or the file is in update mode, 
     //but tracking was not performed yet for a current event
     //     AliError("There is no Tree with Tracks and Reconstructed Particles");
     return 0;
   }
  
  TBranch * branch = treeP->GetBranch(fgkRecParticlesBranchName);
  if (branch == 0) 
   {//easy, maybe just a new tree
    AliError(Form("Cannot find branch %s",
		  fgkRecParticlesBranchName.Data())); 
    return 0;
  }

  branch->SetAddress(recpartref);//connect branch to buffer sitting in folder
  branch->GetEntry(0);//get first event 
  
  return 0;
}


/***************************************************************************************/

AliPHOSLoader* AliPHOSLoader::GetPHOSLoader(const  char* eventfoldername)
{
  // Return PHOS loader
  AliRunLoader* rn  = AliRunLoader::GetRunLoader(eventfoldername);
  if (rn == 0x0) {
    printf("Can not find Run Loader in folder %s", eventfoldername);
    return 0x0 ; 
  }
  return dynamic_cast<AliPHOSLoader*>(rn->GetLoader("PHOSLoader"));
}
/***************************************************************************************/

Bool_t AliPHOSLoader::BranchExists(const TString& recName)
{
  // Check if a branch named redName exists
  if (fBranchTitle.IsNull()) return kFALSE;
  TString dataname, zername ;
  TTree* tree;
  if(recName == "SDigits")
   {
    tree = TreeS();
    dataname = GetDetectorName();
    zername = "AliPHOSSDigitizer" ;
   }
  else
    if(recName == "Digits"){
      tree = TreeD();
      dataname = GetDetectorName();
      zername = "AliPHOSDigitizer" ;
    }
    else
      if(recName == "RecPoints"){
       tree = TreeR();
       dataname = fgkEmcRecPointsBranchName;
       zername = "AliPHOSClusterizer" ;
      }
      else
       if(recName == "TrackSegments"){
         tree = TreeT();
         dataname = fgkTrackSegmentsBranchName;
         zername = "AliPHOSTrackSegmentMaker";
       }        
       else
         if(recName == "RecParticles"){
           tree = TreeP();
           dataname = fgkRecParticlesBranchName;
           zername = "AliPHOSPID";
         }
         else
           return kFALSE ;

  
  if(!tree ) 
    return kFALSE ;

  TObjArray * lob = static_cast<TObjArray*>(tree->GetListOfBranches()) ;
  TIter next(lob) ; 
  TBranch * branch = 0 ;  
  TString titleName(fBranchTitle);
  titleName+=":";

  while ((branch = (static_cast<TBranch*>(next())))) {
    TString branchName(branch->GetName() ) ; 
    TString branchTitle(branch->GetTitle() ) ;  
    if ( branchName.BeginsWith(dataname) && branchTitle.BeginsWith(fBranchTitle) ){  
      AliWarning(Form("branch %s  with title  %s ",
		      dataname.Data(),fBranchTitle.Data()));
      return kTRUE ;
    }
    if ( branchName.BeginsWith(zername) &&  branchTitle.BeginsWith(titleName) ){
      AliWarning(Form("branch AliPHOS... with title  %s ",
		      branch->GetTitle()));
      return kTRUE ; 
    }
  }
  return kFALSE ;

 }

void AliPHOSLoader::SetBranchTitle(const TString& btitle)
{
  // Set branch title
  if (btitle.CompareTo(fBranchTitle) == 0) return;
  fBranchTitle = btitle;
  ReloadAll();
 }
 
//____________________________________________________________________________ 
//Again, must be const not to hide virtual functions from AliLoader
//but there are calls to non-const functions, so I have to const_cast this pointer
void AliPHOSLoader::CleanHits()const
{
  // Clean Hits array
  AliLoader::CleanHits();
  //Clear an array 
  TClonesArray* hits = const_cast<AliPHOSLoader *>(this)->Hits();
  if (hits) hits->Clear();
}
//____________________________________________________________________________ 

void AliPHOSLoader::CleanSDigits()const
{
  // Clean SDigits array
  AliLoader::CleanSDigits();
  TClonesArray* sdigits = const_cast<AliPHOSLoader *>(this)->SDigits();
  if (sdigits) sdigits->Clear();
  
}
//____________________________________________________________________________ 

void AliPHOSLoader::CleanDigits()const
{
  // Clean Digits array
  AliLoader::CleanDigits();
  TClonesArray* digits = const_cast<AliPHOSLoader *>(this)->Digits();
  if (digits) digits->Clear();
}
//____________________________________________________________________________ 

void AliPHOSLoader::CleanRecPoints()const
{
  // Clean RecPoints array
  AliLoader::CleanRecPoints();
  TObjArray* recpoints = const_cast<AliPHOSLoader *>(this)->EmcRecPoints();
  if (recpoints) recpoints->Clear();
  recpoints = const_cast<AliPHOSLoader *>(this)->CpvRecPoints();
  if (recpoints) recpoints->Clear();
}
//____________________________________________________________________________ 

void AliPHOSLoader::CleanTracks()const
{
  //Cleans Tracks stuff
  AliLoader::CleanTracks();//tree
  
  //and clear the array
  TClonesArray* tracks = const_cast<AliPHOSLoader *>(this)->TrackSegments();
  if (tracks) tracks->Clear();

}
//____________________________________________________________________________ 

void AliPHOSLoader::CleanRecParticles()
 {
   // Clean RecParticles array
   TClonesArray *recpar = RecParticles();
   if (recpar) recpar->Clear();
  
 
 }
//____________________________________________________________________________ 

void AliPHOSLoader::MakeHitsArray()
{
  // Add Hits array to the data folder
  if (Hits()) return;
  TClonesArray* hits = new TClonesArray("AliPHOSHit",1000);
  hits->SetName(fgkHitsName);
  GetDetectorDataFolder()->Add(hits);
}

//____________________________________________________________________________ 
void AliPHOSLoader::MakeSDigitsArray()
{
  // Add SDigits array to the data folder
  if ( SDigits()) return;
  TClonesArray* sdigits = new TClonesArray("AliPHOSDigit",1);
  sdigits->SetName(fgkSDigitsName);
  GetDetectorDataFolder()->Add(sdigits);
}

//____________________________________________________________________________ 
void AliPHOSLoader::MakeDigitsArray()
{
  // Add Digits array to the data folder
  if ( Digits()) return;
  TClonesArray* digits = new TClonesArray("AliPHOSDigit",1);
  digits->SetName(fgkDigitsName);
  GetDetectorDataFolder()->Add(digits);
  
}

//____________________________________________________________________________ 
void AliPHOSLoader::MakeRecPointsArray()
{
  // Add RecPoints array to the data folder
  if ( EmcRecPoints() == 0x0)
   {
     AliDebug(9, "Making array for EMC");
    TObjArray* emc = new TObjArray(100) ;
    emc->SetName(fgkEmcRecPointsName) ;
    GetDetectorDataFolder()->Add(emc);
   }

  if ( CpvRecPoints() == 0x0)
   { 
     AliDebug(9, "Making array for CPV");
     TObjArray* cpv = new TObjArray(100) ;
     cpv->SetName(fgkCpvRecPointsName);
     GetDetectorDataFolder()->Add(cpv);
   }
}

//____________________________________________________________________________ 
void AliPHOSLoader::MakeTrackSegmentsArray()
{
  // Add TrackSegments array to the data folder
  if ( TrackSegments()) return;
  TClonesArray * ts = new TClonesArray("AliPHOSTrackSegment",100) ;
  ts->SetName(fgkTracksName);
  GetDetectorDataFolder()->Add(ts);

}

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