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: AliSimulation.cxx 64623 2013-10-21 13:38:58Z rgrosso $ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// class for running generation, simulation and digitization                 //
//                                                                           //
// Hits, sdigits and digits are created for all detectors by typing:         //
//                                                                           //
//   AliSimulation sim;                                                      //
//   sim.Run();                                                              //
//                                                                           //
// The Run method returns kTRUE in case of successful execution.             //
// The number of events can be given as argument to the Run method or it     //
// can be set by                                                             //
//                                                                           //
//   sim.SetNumberOfEvents(n);                                               //
//                                                                           //
// The name of the configuration file can be passed as argument to the       //
// AliSimulation constructor or can be specified by                          //
//                                                                           //
//   sim.SetConfigFile("...");                                               //
//                                                                           //
// The generation of particles and the simulation of detector hits can be    //
// switched on or off by                                                     //
//                                                                           //
//   sim.SetRunGeneration(kTRUE);   // generation of primary particles       //
//   sim.SetRunSimulation(kFALSE);  // but no tracking                       //
//                                                                           //
// For which detectors sdigits and digits will be created, can be steered    //
// by                                                                        //
//                                                                           //
//   sim.SetMakeSDigits("ALL");     // make sdigits for all detectors        //
//   sim.SetMakeDigits("ITS TPC");  // make digits only for ITS and TPC      //
//                                                                           //
// The argument is a (case sensitive) string with the names of the           //
// detectors separated by a space. An empty string ("") can be used to       //
// disable the creation of sdigits or digits. The special string "ALL"       //
// selects all available detectors. This is the default.                     //
//                                                                           //
// The creation of digits from hits instead of from sdigits can be selected  //
// by                                                                        //
//                                                                           //
//   sim.SetMakeDigitsFromHits("TRD");                                       //
//                                                                           //
// The argument is again a string with the selected detectors. Be aware that //
// this feature is not available for all detectors and that merging is not   //
// possible, when digits are created directly from hits.                     //
//                                                                           //
// Background events can be merged by calling                                //
//                                                                           //
//   sim.MergeWith("background/galice.root", 2);                             //
//                                                                           //
// The first argument is the file name of the background galice file. The    //
// second argument is the number of signal events per background event.      //
// By default this number is calculated from the number of available         //
// background events. MergeWith can be called several times to merge more    //
// than two event streams. It is assumed that the sdigits were already       //
// produced for the background events.                                       //
//                                                                           //
// The output of raw data can be switched on by calling                      //
//                                                                           //
//   sim.SetWriteRawData("MUON");   // write raw data for MUON               //
//                                                                           //
// The default output format of the raw data are DDL files. They are         //
// converted to a DATE file, if a file name is given as second argument.     //
// For this conversion the program "dateStream" is required. If the file     //
// name has the extension ".root", the DATE file is converted to a root      //
// file. The program "alimdc" is used for this purpose. For the conversion   //
// to DATE and root format the two conversion programs have to be installed. //
// Only the raw data in the final format is kept if the third argument is    //
// kTRUE.                                                                    //
//                                                                           //
// The methods RunSimulation, RunSDigitization, RunDigitization,             //
// RunHitsDigitization and WriteRawData can be used to run only parts of     //
// the full simulation chain. The creation of raw data DDL files and their   //
// conversion to the DATE or root format can be run directly by calling      //
// the methods WriteRawFiles, ConvertRawFilesToDate and ConvertDateToRoot.   //
//                                                                           //
// The default number of events per file, which is usually set in the        //
// config file, can be changed for individual detectors and data types       //
// by calling                                                                //
//                                                                           //
//   sim.SetEventsPerFile("PHOS", "Reconstructed Points", 3);                //
//                                                                           //
// The first argument is the detector, the second one the data type and the  //
// last one the number of events per file. Valid data types are "Hits",      //
// "Summable Digits", "Digits", "Reconstructed Points" and "Tracks".         //
// The number of events per file has to be set before the simulation of      //
// hits. Otherwise it has no effect.                                         //
//                                                                           //
// The trigger configuration is set by the method SetTriggerConfig(X)        //
// X can take three kinds of values                                          //
//                                                                           //
//  - The exact string "none" - case insensitive.  In this case, not trigger //
//    information is generated from the digits.                              //
//  - The empty string or "ocdb" - case insensitive.  In this case the       //
//    trigger configuration is read from OCDB                                //
//  - Some string - say "p-p" - in which case the configuration is read from //
//    fixed files in $ALICE_ROOT/GRP/CTP/ - say $ALICE_ROOT/GRP/CTP/p-p.cfg  //
//                                                                           //
// Default is to read from OCDB.                                             //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TFile.h>
#include <TGeoGlobalMagField.h>
#include <TGeoManager.h>
#include <TObjString.h>
#include <TROOT.h>
#include <TSystem.h>
#include <TVirtualMC.h>
#include <TVirtualMCApplication.h>
#include <TDatime.h>
#include <TInterpreter.h>

#include "AliAlignObj.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "AliGRPManager.h"
#include "AliCDBStorage.h"
#include "AliCTPRawData.h"
#include "AliCentralTrigger.h"
#include "AliCentralTrigger.h"
#include "AliCodeTimer.h"
#include "AliDAQ.h"
#include "AliDigitizer.h"
#include "AliESDEvent.h"
#include "AliGRPObject.h"
#include "AliGenEventHeader.h"
#include "AliGenerator.h"
#include "AliGeomManager.h"
#include "AliHLTSimulation.h"
#include "AliHeader.h"
#include "AliLego.h"
#include "AliLegoGenerator.h"
#include "AliLog.h"
#include "AliMC.h"
#include "AliMagF.h"
#include "AliModule.h"
#include "AliPDG.h"
#include "AliRawReaderDate.h"
#include "AliRawReaderFile.h"
#include "AliRawReaderRoot.h"
#include "AliRun.h"
#include "AliDigitizationInput.h"
#include "AliRunLoader.h"
#include "AliStack.h"
#include "AliSimulation.h"
#include "AliSysInfo.h"
#include "AliVertexGenFile.h"

using std::ofstream;
ClassImp(AliSimulation)

AliSimulation *AliSimulation::fgInstance = 0;
 const char* AliSimulation::fgkDetectorName[AliSimulation::fgkNDetectors] = {"ITS", "TPC", "TRD", 
 "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE","AD",
 "FIT","MFT","HLT"};

//_____________________________________________________________________________
AliSimulation::AliSimulation(const char* configFileName,
			     const char* name, const char* title) :
  TNamed(name, title),

  fRunGeneratorOnly(kFALSE),
  fRunGeneration(kTRUE),
  fRunSimulation(kTRUE),
  fLoadAlignFromCDB(kTRUE),
  fLoadAlObjsListOfDets("ALL"),
  fMakeSDigits("ALL"),
  fMakeDigits("ALL"),
  fTriggerConfig(""),
  fMakeDigitsFromHits(""),
  fWriteRawData(""),
  fRawDataFileName(""),
  fDeleteIntermediateFiles(kFALSE),
  fWriteSelRawData(kFALSE),
  fStopOnError(kFALSE),
  fUseMonitoring(kFALSE),
  fNEvents(1),
  fConfigFileName(configFileName),
  fGAliceFileName("galice.root"),
  fEventsPerFile(),
  fBkgrdFileNames(NULL),
  fAlignObjArray(NULL),
  fUseBkgrdVertex(kTRUE),
  fRegionOfInterest(kFALSE),
  fCDBUri(""),
  fQARefUri(""), 
  fSpecCDBUri(),
  fRun(-1),
  fSeed(0),
  fInitCDBCalled(kFALSE),
  fInitRunNumberCalled(kFALSE),
  fSetRunNumberFromDataCalled(kFALSE),
  fEmbeddingFlag(kFALSE),
  fLego(NULL),
  fKey(0),
  fUseVertexFromCDB(0),
  fUseMagFieldFromGRP(0),
  fGRPWriteLocation(Form("local://%s", gSystem->pwd())),
  fUseTimeStampFromCDB(0),
  fTimeStart(0),
  fTimeEnd(0),
  fQADetectors("ALL"),                  
  fQATasks("ALL"),	
  fRunQA(kTRUE), 
  fEventSpecie(AliRecoParam::kDefault),
  fWriteQAExpertData(kTRUE), 
  fGeometryFile(),
  fRunHLT("default"),
  fpHLT(NULL),
  fWriteGRPEntry(kTRUE)
{
// create simulation object with default parameters
  fgInstance = this;
  SetGAliceFile("galice.root");
  
// for QA
	AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kSIMMODE) ; 
	qam->SetActiveDetectors(fQADetectors) ; 
	fQATasks = Form("%d %d %d", AliQAv1::kHITS, AliQAv1::kSDIGITS, AliQAv1::kDIGITS) ; 
	qam->SetTasks(fQATasks) ; 	
}

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

  fEventsPerFile.Delete();
//  if(fAlignObjArray) fAlignObjArray->Delete(); // fAlignObjArray->RemoveAll() ???
//  delete fAlignObjArray; fAlignObjArray=0;

  if (fBkgrdFileNames) {
    fBkgrdFileNames->Delete();
    delete fBkgrdFileNames;
  }

  fSpecCDBUri.Delete();
  if (fgInstance==this) fgInstance = 0;

  AliQAManager::QAManager()->ShowQA() ; 
  AliQAManager::Destroy() ; 	
  AliCodeTimer::Instance()->Print();
}


//_____________________________________________________________________________
void AliSimulation::SetNumberOfEvents(Int_t nEvents)
{
// set the number of events for one run

  fNEvents = nEvents;
}

//_____________________________________________________________________________
void AliSimulation::InitQA()
{
  // 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
  
  if (fInitCDBCalled) return;
  fInitCDBCalled = kTRUE;

  AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kSIMMODE) ; 
  qam->SetActiveDetectors(fQADetectors) ; 
  fQATasks = Form("%d %d %d", AliQAv1::kHITS, AliQAv1::kSDIGITS, AliQAv1::kDIGITS) ; 
  qam->SetTasks(fQATasks) ;
 	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 AliSimulation: %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 reference storage not yet set !!!!");
        AliWarning(Form("Setting it now to: %s", fQARefUri.Data()));
        AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      }
    qam->SetDefaultStorage(fQARefUri);
  }
}

//_____________________________________________________________________________
void AliSimulation::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

  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 AliSimulation: %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, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    } else {
    	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);
  }

  // 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());
  }
      
}

//_____________________________________________________________________________
void AliSimulation::InitRunNumber(){
// check run number. If not set, set it to 0 !!!!
  
  if (fInitRunNumberCalled) return;
  fInitRunNumberCalled = kTRUE;
  
  AliCDBManager* man = AliCDBManager::Instance();
  if (man->GetRun() >= 0)
  {
    	AliFatal(Form("Run number cannot be set in AliCDBManager before start of simulation: "
			"Use external variable DC_RUN or AliSimulation::SetRun()!"));
  }
    
  if(fRun >= 0) {
    	AliDebug(2, Form("Setting CDB run number to: %d",fRun));
  } else {
    	fRun=0;
    	AliWarning(Form("Run number not yet set !!!! Setting it now to: %d",
			fRun));
  }
  man->SetRun(fRun);

  man->Print();

}

//_____________________________________________________________________________
void AliSimulation::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!
  
  ULong64_t key = AliCDBManager::Instance()->SetLock(1);
  if (key) fKey = key;
}

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

//_____________________________________________________________________________
void AliSimulation::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 AliSimulation::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()){
  	AliError(Form("Not a valid path: %s", calibType));
  	return;
  }

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

}

//_____________________________________________________________________________
void AliSimulation::SetRunNumber(Int_t run)
{
// sets run number
// Activate it later within the Run() method

	fRun = run;
}

//_____________________________________________________________________________
void AliSimulation::SetSeed(Int_t seed)
{
// sets seed number
// Activate it later within the Run() method

	fSeed = seed;
}

//_____________________________________________________________________________
Bool_t AliSimulation::SetRunNumberFromData()
{
  // Set the CDB manager run number
  // The run number is retrieved from gAlice

    if (fSetRunNumberFromDataCalled) return kTRUE;
    fSetRunNumberFromDataCalled = kTRUE;    
  
    AliCDBManager* man = AliCDBManager::Instance();
    Int_t runData = -1, runCDB = -1;
  
    AliRunLoader* runLoader = LoadRun("READ");
    if (!runLoader) return kFALSE;
    else {
    	runData = runLoader->GetHeader()->GetRun();
	delete runLoader;
    }
  
    runCDB = man->GetRun();
    if(runCDB >= 0) {
	if (runCDB != runData) {
    		AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    		AliWarning(Form("A run number was previously set in AliCDBManager: %d !", runCDB));
    		AliWarning(Form("It will be replaced with the run number got from run header: %d !", runData));
    		AliWarning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");	
	}
   	
    }
      
    man->SetRun(runData);
    fRun = runData;
    
    if(man->GetRun() < 0) {
    	AliError("Run number not properly initalized!");
	return kFALSE;
    }
  
    man->Print();
    
    return kTRUE;
}

//_____________________________________________________________________________
void AliSimulation::SetConfigFile(const char* fileName)
{
// set the name of the config file

  fConfigFileName = fileName;
}

//_____________________________________________________________________________
void AliSimulation::SetGAliceFile(const char* fileName)
{
// set the name of the galice file
// the path is converted to an absolute one if it is relative

  fGAliceFileName = fileName;
  if (!gSystem->IsAbsoluteFileName(fGAliceFileName)) {
    char* absFileName = gSystem->ConcatFileName(gSystem->WorkingDirectory(),
						fGAliceFileName);
    fGAliceFileName = absFileName;
    delete[] absFileName;
  }

  AliDebug(2, Form("galice file name set to %s", fileName));
}

//_____________________________________________________________________________
void AliSimulation::SetEventsPerFile(const char* detector, const char* type, 
				     Int_t nEvents)
{
// set the number of events per file for the given detector and data type
// ("Hits", "Summable Digits", "Digits", "Reconstructed Points" or "Tracks")

  TNamed* obj = new TNamed(detector, type);
  obj->SetUniqueID(nEvents);
  fEventsPerFile.Add(obj);
}

//_____________________________________________________________________________
Bool_t AliSimulation::MisalignGeometry(AliRunLoader *runLoader)
{
  // 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.

  if (!AliGeomManager::GetGeometry() || !AliGeomManager::GetGeometry()->IsClosed()) {
    AliError("Can't apply the misalignment! Geometry is not loaded or it is still opened!");
    return kFALSE;
  }  
  
  // initialize CDB storage, run number, set CDB lock
  InitCDB();
//  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  SetCDBLock();
    
  Bool_t delRunLoader = kFALSE;
  if (!runLoader) {
    runLoader = LoadRun("READ");
    if (!runLoader) return kFALSE;
    delRunLoader = kTRUE;
  }
  
  // Export ideal geometry 
  if(!IsGeometryFromFile()) AliGeomManager::GetGeometry()->Export("geometry.root");

  // Load alignment data from CDB and apply to geometry through AliGeomManager
  if(fLoadAlignFromCDB){
    
    TString detStr = fLoadAlObjsListOfDets;
    TString loadAlObjsListOfDets = "";
    
    TObjArray* detArray = runLoader->GetAliRun()->Detectors();
    for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
      AliModule* det = (AliModule*) detArray->At(iDet);
      if (!det || !det->IsActive()) continue;
      if (IsSelected(det->GetName(), detStr)) {
        //add det to list of dets to be aligned from CDB
        loadAlObjsListOfDets += det->GetName();
        loadAlObjsListOfDets += " ";
      }
    } // end loop over detectors
    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 (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!");
        if (delRunLoader) delete runLoader;
        return kFALSE;
      }
    }
  }

  // Update the internal geometry of modules (ITS needs it)
  TString detStr = fLoadAlObjsListOfDets;
  TObjArray* detArray = runLoader->GetAliRun()->Detectors();
  for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {

    AliModule* det = (AliModule*) detArray->At(iDet);
    if (!det || !det->IsActive()) continue;
    if (IsSelected(det->GetName(), detStr)) {
      det->UpdateInternalGeometry();
    }
  } // end loop over detectors


  if (delRunLoader) delete runLoader;

  return kTRUE;
}

//_____________________________________________________________________________
void AliSimulation::MergeWith(const char* fileName, Int_t nSignalPerBkgrd)
{
// add a file with background events for merging

  TObjString* fileNameStr = new TObjString(fileName);
  fileNameStr->SetUniqueID(nSignalPerBkgrd);
  if (!fBkgrdFileNames) fBkgrdFileNames = new TObjArray;
  fBkgrdFileNames->Add(fileNameStr);
}

void AliSimulation::EmbedInto(const char* fileName, Int_t nSignalPerBkgrd)
{
// add a file with background events for embeddin
  MergeWith(fileName, nSignalPerBkgrd);
  fEmbeddingFlag = kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::Run(Int_t nEvents)
{
// run the generation, simulation and digitization

 
  AliCodeTimerAuto("",0)
  AliSysInfo::AddStamp("Start_Run");
  
  // Load run number and seed from environmental vars
  ProcessEnvironmentVars();
  AliSysInfo::AddStamp("ProcessEnvironmentVars");

  gRandom->SetSeed(fSeed);
   
  if (nEvents > 0) fNEvents = nEvents;

  // Run generator-only code on demand
  if (fRunGeneratorOnly)
  {
    if(!RunGeneratorOnly())
    {
      if (fStopOnError) return kFALSE;
    }
    else
      return kTRUE;
  }

  // create and setup the HLT instance
  if (!fRunHLT.IsNull() && !CreateHLT()) {
    if (fStopOnError) return kFALSE;
    // disable HLT
    fRunHLT="";
  }
  
  // generation and simulation -> hits
  if (fRunGeneration) {
    if (!RunSimulation()) if (fStopOnError) return kFALSE;
  }
  AliSysInfo::AddStamp("RunSimulation");
           
  // initialize CDB storage from external environment
  // (either CDB manager or AliSimulation setters),
  // if not already done in RunSimulation()
  InitCDB();
  AliSysInfo::AddStamp("InitCDB");
  
  // Set run number in CDBManager from data 
  // From this point on the run number must be always loaded from data!
  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  
  // 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();

  // If RunSimulation was not called, load the geometry and misalign it
  if (!AliGeomManager::GetGeometry()) {
    // Initialize the geometry manager
    AliGeomManager::LoadGeometry("geometry.root");
    AliSysInfo::AddStamp("GetGeometry");
//    // Check that the consistency of symbolic names for the activated subdetectors
//    // in the geometry loaded by AliGeomManager
//    AliRunLoader* runLoader = LoadRun("READ");
//    if (!runLoader) return kFALSE;
//
//    TString detsToBeChecked = "";
//    TObjArray* detArray = runLoader->GetAliRun()->Detectors();
//    for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
//      AliModule* det = (AliModule*) detArray->At(iDet);
//      if (!det || !det->IsActive()) continue;
//      detsToBeChecked += det->GetName();
//      detsToBeChecked += " ";
//    } // end loop over detectors
//    if(!AliGeomManager::CheckSymNamesLUT(detsToBeChecked.Data()))
    if(!AliGeomManager::CheckSymNamesLUT("ALL"))
	AliFatalClass("Current loaded geometry differs in the definition of symbolic names!");
	
    if (!AliGeomManager::GetGeometry()) if (fStopOnError) return kFALSE;
    // Misalign geometry
    if(!MisalignGeometry()) if (fStopOnError) return kFALSE;
  }
  AliSysInfo::AddStamp("MissalignGeometry");


  // hits -> summable digits
  AliSysInfo::AddStamp("Start_sdigitization");
  if (!fMakeSDigits.IsNull()) {
    if (!RunSDigitization(fMakeSDigits)) if (fStopOnError) return kFALSE;
 
  }
  AliSysInfo::AddStamp("Stop_sdigitization");
  
  AliSysInfo::AddStamp("Start_digitization");  
  // summable digits -> digits  
  if (!fMakeDigits.IsNull()) {
    if (!RunDigitization(fMakeDigits, fMakeDigitsFromHits)) {
      if (fStopOnError) return kFALSE;
    }
   }
  AliSysInfo::AddStamp("Stop_digitization");

  
  
  // hits -> digits
  if (!fMakeDigitsFromHits.IsNull()) {
    if (fBkgrdFileNames && (fBkgrdFileNames->GetEntriesFast() > 0)) {
      AliWarning(Form("Merging and direct creation of digits from hits " 
                 "was selected for some detectors. "
                 "No merging will be done for the following detectors: %s",
                 fMakeDigitsFromHits.Data()));
    }
    if (!RunHitsDigitization(fMakeDigitsFromHits)) {
      if (fStopOnError) return kFALSE;
    }
  }

  AliSysInfo::AddStamp("Hits2Digits");
  
  
  // digits -> trigger.  Set trigger configuration to "none" - any
  // case - to not generate the trigger information.  Set the trigger
  // configuration to some string X to read from file at
  // $ALICE_ROOT/GRP/CTP/X.  Set the trigger configuration to the
  // empty string or "ocdb" - any case - to read from OCDB.
  if (!fTriggerConfig.EqualTo("none",TString::kIgnoreCase) && 
      !RunTrigger(fTriggerConfig,fMakeDigits)) {
    if (fStopOnError) return kFALSE;
  }

  AliSysInfo::AddStamp("RunTrigger");
  
  
  // digits -> raw data
  if (!fWriteRawData.IsNull()) {
    if (!WriteRawData(fWriteRawData, fRawDataFileName, 
		      fDeleteIntermediateFiles,fWriteSelRawData)) {
      if (fStopOnError) return kFALSE;
    }
  }

  AliSysInfo::AddStamp("WriteRaw");
  
  // run HLT simulation on simulated digit data if raw data is not
  // simulated, otherwise its called as part of WriteRawData
  if (!fRunHLT.IsNull() && fWriteRawData.IsNull()) {
    if (!RunHLT()) {
      if (fStopOnError) return kFALSE;
    }
  }

  AliSysInfo::AddStamp("RunHLT");
  
  //QA
  if (fRunQA) {
      Bool_t rv = RunQA() ; 
      if (!rv)
	  if (fStopOnError) 
	      return kFALSE ;
  }

  AliSysInfo::AddStamp("RunQA");
  //
  StoreUsedCDBMaps();
  //  
  TString snapshotFileOut("");
  if(TString(gSystem->Getenv("OCDB_SNAPSHOT_CREATE")) == TString("kTRUE")){ 
      AliInfo(" ******** Creating the snapshot! *********");
      TString snapshotFile(gSystem->Getenv("OCDB_SNAPSHOT_FILENAME")); 
      if(!(snapshotFile.IsNull() || snapshotFile.IsWhitespace())) 
	  snapshotFileOut = snapshotFile;
      else 
	  snapshotFileOut="OCDB.root"; 
      AliCDBManager::Instance()->DumpToSnapshotFile(snapshotFileOut.Data(),kFALSE); 
  }

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

  return kTRUE;
}

//_______________________________________________________________________
Bool_t AliSimulation::RunLego(const char *setup, Int_t nc1, Float_t c1min,
		     Float_t c1max,Int_t nc2,Float_t c2min,Float_t c2max,
		     Float_t rmin,Float_t rmax,Float_t zmax, AliLegoGenerator* gener, Int_t nev)
{
  //
  // Generates lego plots of:
  //    - radiation length map phi vs theta
  //    - radiation length map phi vs eta
  //    - interaction length map
  //    - g/cm2 length map
  //
  //  ntheta    bins in theta, eta
  //  themin    minimum angle in theta (degrees)
  //  themax    maximum angle in theta (degrees)
  //  nphi      bins in phi
  //  phimin    minimum angle in phi (degrees)
  //  phimax    maximum angle in phi (degrees)
  //  rmin      minimum radius
  //  rmax      maximum radius
  //  
  //
  //  The number of events generated = ntheta*nphi
  //  run input parameters in macro setup (default="Config.C")
  //
  //  Use macro "lego.C" to visualize the 3 lego plots in spherical coordinates
  //Begin_Html
  /*
    <img src="picts/AliRunLego1.gif">
  */
  //End_Html
  //Begin_Html
  /*
    <img src="picts/AliRunLego2.gif">
  */
  //End_Html
  //Begin_Html
  /*
    <img src="picts/AliRunLego3.gif">
  */
  //End_Html
  //

// run the generation and simulation

  AliCodeTimerAuto("",0)

  // initialize CDB storage and run number from external environment
  // (either CDB manager or AliSimulation setters)
  InitCDB();
  InitRunNumber();
  SetCDBLock();
  
  if (!gAlice) {
    AliError("no gAlice object. Restart aliroot and try again.");
    return kFALSE;
  }
  if (gAlice->Modules()->GetEntries() > 0) {
    AliError("gAlice was already run. Restart aliroot and try again.");
    return kFALSE;
  }
  AliInfo(Form("initializing gAlice with config file %s",
          fConfigFileName.Data()));

  // Number of events 
    if (nev == -1) nev  = nc1 * nc2;
    
  // check if initialisation has been done
  // If runloader has been initialized, set the number of events per file to nc1 * nc2
    
  // Set new generator
  if (!gener) gener  = new AliLegoGenerator();
  //
  // Configure Generator

  gener->SetRadiusRange(rmin, rmax);
  gener->SetZMax(zmax);
  gener->SetCoor1Range(nc1, c1min, c1max);
  gener->SetCoor2Range(nc2, c2min, c2max);
  
  
  //Create Lego object  
  fLego = new AliLego("lego",gener);

  //__________________________________________________________________________

  gAlice->Announce();

  // - cholm - Add this here for consitency 
  // If requested set the mag. field from the GRP entry.
  // After this the field is loccked and cannot be changed by Config.C
  if (fUseMagFieldFromGRP) {
    AliGRPManager grpM;
    grpM.ReadGRPEntry();
    grpM.SetMagField();
    AliInfo("Field is locked now. It cannot be changed in Config.C");
  
  }
  
  gROOT->LoadMacro(setup);
  gInterpreter->ProcessLine(gAlice->GetConfigFunction());

  if(AliCDBManager::Instance()->GetRun() >= 0) { 
    SetRunNumber(AliCDBManager::Instance()->GetRun());
  } else {
    AliWarning("Run number not initialized!!");
  }

  AliRunLoader::Instance()->CdGAFile();
  
  AliPDG::AddParticlesToPdgDataBase();  
  
  TVirtualMC::GetMC()->SetMagField(TGeoGlobalMagField::Instance()->GetField());

  gAlice->GetMCApp()->Init();
  
  
  //Must be here because some MCs (G4) adds detectors here and not in Config.C
  gAlice->InitLoaders();
  AliRunLoader::Instance()->MakeTree("E");
  
  //
  // Save stuff at the beginning of the file to avoid file corruption
  AliRunLoader::Instance()->CdGAFile();
  gAlice->Write();

  //Save current generator
  AliGenerator *gen=gAlice->GetMCApp()->Generator();
  gAlice->GetMCApp()->ResetGenerator(gener);
  //Prepare MC for Lego Run
  TVirtualMC::GetMC()->InitLego();
  
  //Run Lego Object
  
  
  AliRunLoader::Instance()->SetNumberOfEventsPerFile(nev);
  TVirtualMC::GetMC()->ProcessRun(nev);
  
  // End of this run, close files
  FinishRun();
  // Restore current generator
  gAlice->GetMCApp()->ResetGenerator(gen);
  // Delete Lego Object
  delete fLego;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunTrigger(const char* config, const char* detectors)
{
  // run the trigger

  AliCodeTimerAuto("",0)

  // initialize CDB storage from external environment
  // (either CDB manager or AliSimulation setters),
  // if not already done in RunSimulation()
  InitCDB();
  
  // Set run number in CDBManager from data 
  // From this point on the run number must be always loaded from data!
  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  
  // 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();
   
   AliRunLoader* runLoader = LoadRun("READ");
   if (!runLoader) return kFALSE;
   TString trconfiguration = config;

   if (trconfiguration.IsNull()) {
     if(!fTriggerConfig.IsNull()) {
       trconfiguration = fTriggerConfig;
     }
     else
       AliWarning("No trigger descriptor is specified. Loading the one that is in the CDB.");
   }

   runLoader->MakeTree( "GG" );
   AliCentralTrigger* aCTP = runLoader->GetTrigger();
   // Load Configuration
   if (!aCTP->LoadConfiguration( trconfiguration ))
     return kFALSE;

   // digits -> trigger
   if( !aCTP->RunTrigger( runLoader , detectors ) ) {
      if (fStopOnError) {
	//  delete aCTP;
	return kFALSE;
      }
   }

   delete runLoader;

   return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::WriteTriggerRawData()
{
  // Writes the CTP (trigger) DDL raw data
  // Details of the format are given in the
  // trigger TDR - pages 134 and 135.
  AliCTPRawData writer;
  //writer.RawData();
  writer.RawDataRun2();

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunSimulation(Int_t nEvents)
{
// run the generation and simulation

  AliCodeTimerAuto("",0)

  // initialize CDB storage and run number from external environment
  // (either CDB manager or AliSimulation setters)
  AliSysInfo::AddStamp("RunSimulation_Begin");
  InitCDB();
  AliSysInfo::AddStamp("RunSimulation_InitCDB");
  InitRunNumber();

  SetCDBLock();
  AliSysInfo::AddStamp("RunSimulation_SetCDBLock");
  
  if (!gAlice) {
    AliError("no gAlice object. Restart aliroot and try again.");
    return kFALSE;
  }
  if (gAlice->Modules()->GetEntries() > 0) {
    AliError("gAlice was already run. Restart aliroot and try again.");
    return kFALSE;
  }
  
  // Setup monitoring if requested
  gAlice->GetMCApp()->SetUseMonitoring(fUseMonitoring);

  AliInfo(Form("initializing gAlice with config file %s",
          fConfigFileName.Data()));

  //
  // Initialize ALICE Simulation run
  //
  gAlice->Announce();

  //
  // If requested set the mag. field from the GRP entry.
  // After this the field is loccked and cannot be changed by Config.C
  if (fUseMagFieldFromGRP) {
      AliGRPManager grpM;
      grpM.ReadGRPEntry();
      grpM.SetMagField();
      AliInfo("Field is locked now. It cannot be changed in Config.C");
  }
//
// Execute Config.C
  TInterpreter::EErrorCode interpreterError=TInterpreter::kNoError;
  gROOT->LoadMacro(fConfigFileName.Data());
  Long_t interpreterResult=gInterpreter->ProcessLine(gAlice->GetConfigFunction(), &interpreterError);
  if (interpreterResult!=0 || interpreterError!=TInterpreter::kNoError) {
    AliFatal(Form("execution of config file \"%s\" failed with error %d", fConfigFileName.Data(), (int)interpreterError));
  }
  AliSysInfo::AddStamp("RunSimulation_Config");

//
// If requested obtain the vertex position and vertex sigma_z from the CDB
// This overwrites the settings from the Config.C  
  if (fUseVertexFromCDB) {
      Double_t vtxPos[3] = {0., 0., 0.}; 
      Double_t vtxSig[3] = {0., 0., 0.};
      AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertex");
      if (entry) {
	  AliESDVertex* vertex = dynamic_cast<AliESDVertex*> (entry->GetObject());
	  if (vertex) {
	      if(vertex->GetXRes()>2.8) { // > pipe radius --> it's a dummy object, don't use it 
		  entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexSPD");
		  if (entry) vertex = dynamic_cast<AliESDVertex*> (entry->GetObject());
	      }
	  }
	  if (vertex) {
	      vertex->GetXYZ(vtxPos);
	      vertex->GetSigmaXYZ(vtxSig);
	      AliInfo("Overwriting Config.C vertex settings !");
	      AliInfo(Form("Vertex position from OCDB entry: x = %13.3f, y = %13.3f, z = %13.3f (sigma = %13.3f)\n",
			   vtxPos[0], vtxPos[1], vtxPos[2], vtxSig[2]));
	      
	      AliGenerator *gen = gAlice->GetMCApp()->Generator();
	      gen->SetOrigin(vtxPos[0], vtxPos[1], vtxPos[2]);   // vertex position
	      gen->SetSigmaZ(vtxSig[2]);
	  }
      }
  }

  // If requested we take the SOR and EOR time-stamps from the GRP and use them
  // in order to generate the event time-stamps
  if (fUseTimeStampFromCDB) {
    AliGRPManager grpM;
    grpM.ReadGRPEntry();
    const AliGRPObject *grpObj = grpM.GetGRPData();
    if (!grpObj || (grpObj->GetTimeEnd() <= grpObj->GetTimeStart())) {
      AliError("Missing GRP or bad SOR/EOR time-stamps! Switching off the time-stamp generation from GRP!");
      fTimeStart = fTimeEnd = 0;
      fUseTimeStampFromCDB = kFALSE;
    }
    else {
      fTimeStart = grpObj->GetTimeStart();
      fTimeEnd = grpObj->GetTimeEnd();
    }
  }
  
  if(AliCDBManager::Instance()->GetRun() >= 0) { 
    AliRunLoader::Instance()->SetRunNumber(AliCDBManager::Instance()->GetRun());
    AliRunLoader::Instance()->SetNumberOfEventsPerRun(fNEvents);
  } else {
  	AliWarning("Run number not initialized!!");
  }
  
   AliRunLoader::Instance()->CdGAFile();
   

   AliPDG::AddParticlesToPdgDataBase();  

   TVirtualMC::GetMC()->SetMagField(TGeoGlobalMagField::Instance()->GetField());
   AliSysInfo::AddStamp("RunSimulation_GetField");
   gAlice->GetMCApp()->Init();
   AliSysInfo::AddStamp("RunSimulation_InitMCApp");

   //Must be here because some MCs (G4) adds detectors here and not in Config.C
   gAlice->InitLoaders();
   AliRunLoader::Instance()->MakeTree("E");
   AliRunLoader::Instance()->LoadKinematics("RECREATE");
   AliRunLoader::Instance()->LoadTrackRefs("RECREATE");
   AliRunLoader::Instance()->LoadHits("all","RECREATE");
   //
   // Save stuff at the beginning of the file to avoid file corruption
   AliRunLoader::Instance()->CdGAFile();
   gAlice->Write();
   gAlice->SetEventNrInRun(-1); //important - we start Begin event from increasing current number in run
   AliSysInfo::AddStamp("RunSimulation_InitLoaders");
  //___________________________________________________________________________________________
  
  AliSysInfo::AddStamp("RunSimulation_TriggerDescriptor");

  // Set run number in CDBManager
  AliInfo(Form("Run number: %d",AliCDBManager::Instance()->GetRun()));

  AliRunLoader* runLoader = AliRunLoader::Instance();
  if (!runLoader) {
             AliError(Form("gAlice has no run loader object. "
        		     "Check your config file: %s", fConfigFileName.Data()));
             return kFALSE;
  }
  SetGAliceFile(runLoader->GetFileName());
      
  // Misalign geometry
#if ROOT_VERSION_CODE < 331527
  AliGeomManager::SetGeometry(gGeoManager);
  
  // Check that the consistency of symbolic names for the activated subdetectors
  // in the geometry loaded by AliGeomManager
  TString detsToBeChecked = "";
  TObjArray* detArray = runLoader->GetAliRun()->Detectors();
  for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
    AliModule* det = (AliModule*) detArray->At(iDet);
    if (!det || !det->IsActive()) continue;
    detsToBeChecked += det->GetName();
    detsToBeChecked += " ";
  } // end loop over detectors
  if(!AliGeomManager::CheckSymNamesLUT(detsToBeChecked.Data()))
    AliFatalClass("Current loaded geometry differs in the definition of symbolic names!");
  MisalignGeometry(runLoader);
  AliSysInfo::AddStamp("RunSimulation_MisalignGeometry");
#endif

//   AliRunLoader* runLoader = AliRunLoader::Instance();
//   if (!runLoader) {
//     AliError(Form("gAlice has no run loader object. "
//                   "Check your config file: %s", fConfigFileName.Data()));
//     return kFALSE;
//   }
//   SetGAliceFile(runLoader->GetFileName());

  if (!gAlice->GetMCApp()->Generator()) {
    AliError(Form("gAlice has no generator object. "
                  "Check your config file: %s", fConfigFileName.Data()));
    return kFALSE;
  }

  // Write GRP entry corresponding to the setting found in Cofig.C
  if (fWriteGRPEntry)
    WriteGRPEntry();
  AliSysInfo::AddStamp("RunSimulation_WriteGRP");

  if (nEvents <= 0) nEvents = fNEvents;

  // get vertex from background file in case of merging
  if (fUseBkgrdVertex &&
      fBkgrdFileNames && (fBkgrdFileNames->GetEntriesFast() > 0)) {
    Int_t signalPerBkgrd = GetNSignalPerBkgrd(nEvents);
    const char* fileName = ((TObjString*)
			    (fBkgrdFileNames->At(0)))->GetName();
    AliInfo(Form("The vertex will be taken from the background "
                 "file %s with nSignalPerBackground = %d", 
                 fileName, signalPerBkgrd));
    AliVertexGenFile* vtxGen = new AliVertexGenFile(fileName, signalPerBkgrd);
    gAlice->GetMCApp()->Generator()->SetVertexGenerator(vtxGen);
  }

  if (!fRunSimulation) {
    gAlice->GetMCApp()->Generator()->SetTrackingFlag(0);
  }

  // set the number of events per file for given detectors and data types
  for (Int_t i = 0; i < fEventsPerFile.GetEntriesFast(); i++) {
    if (!fEventsPerFile[i]) continue;
    const char* detName = fEventsPerFile[i]->GetName();
    const char* typeName = fEventsPerFile[i]->GetTitle();
    TString loaderName(detName);
    loaderName += "Loader";
    AliLoader* loader = runLoader->GetLoader(loaderName);
    if (!loader) {
      AliError(Form("RunSimulation no loader for %s found\n Number of events per file not set for %s %s", 
                    detName, typeName, detName));
      continue;
    }
    AliDataLoader* dataLoader = 
      loader->GetDataLoader(typeName);
    if (!dataLoader) {
      AliError(Form("no data loader for %s found\n"
                    "Number of events per file not set for %s %s", 
                    typeName, detName, typeName));
      continue;
    }
    dataLoader->SetNumberOfEventsPerFile(fEventsPerFile[i]->GetUniqueID());
    AliDebug(1, Form("number of events per file set to %d for %s %s",
                     fEventsPerFile[i]->GetUniqueID(), detName, typeName));
  }

  AliInfo("running gAlice");
  AliSysInfo::AddStamp("Start_ProcessRun");

  // Create the Root Tree with one branch per detector
  //Hits moved to begin event -> now we are crating separate tree for each event
  TVirtualMC::GetMC()->ProcessRun(nEvents);

  // End of this run, close files
  if(nEvents>0) FinishRun();

  AliSysInfo::AddStamp("Stop_ProcessRun");
  delete runLoader;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunGeneratorOnly()
{
  // Execute Config.C
  TInterpreter::EErrorCode interpreterError=TInterpreter::kNoError;
  gROOT->LoadMacro(fConfigFileName.Data());
  Long_t interpreterResult=gInterpreter->ProcessLine(gAlice->GetConfigFunction(), &interpreterError);
  if (interpreterResult!=0 || interpreterError!=TInterpreter::kNoError) {
    AliFatal(Form("execution of config file \"%s\" failed with error %d", fConfigFileName.Data(), (int)interpreterError));
  }

  // Setup the runloader and generator, check if everything is OK
  AliRunLoader* runLoader = AliRunLoader::Instance();
  AliGenerator* generator = gAlice->GetMCApp()->Generator();
  if (!runLoader) {
    AliError(Form("gAlice has no run loader object. "
                  "Check your config file: %s", fConfigFileName.Data()));
    return kFALSE;
  }
  if (!generator) {
    AliError(Form("gAlice has no generator object. "
                  "Check your config file: %s", fConfigFileName.Data()));
    return kFALSE;
  }

  runLoader->LoadKinematics("RECREATE");
  runLoader->MakeTree("E");

  // Create stack and header
  runLoader->MakeStack();
  AliStack*  stack      = runLoader->Stack();
  AliHeader* header     = runLoader->GetHeader();

  // Intialize generator
  generator->Init();
  generator->SetStack(stack);

  // Run main generator loop

  for (Int_t iev=0; iev<fNEvents; iev++)
  {
    // Initialize event
    header->Reset(0,iev);
    runLoader->SetEventNumber(iev);
    stack->Reset();
    runLoader->MakeTree("K");

    // Generate event
    generator->Generate();

    // Finish event
    header->SetNprimary(stack->GetNprimary());
    header->SetNtrack(stack->GetNtrack());
    stack->FinishEvent();
    header->SetStack(stack);
    runLoader->TreeE()->Fill();
    runLoader->WriteKinematics("OVERWRITE");
  }

  // Finalize
  generator->FinishRun();
  // Write file
  runLoader->WriteHeader("OVERWRITE");
  generator->Write();
  runLoader->Write();

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunSDigitization(const char* detectors)
{
// run the digitization and produce summable digits
  static Int_t eventNr=0;
  AliCodeTimerAuto("",0) ;

  // initialize CDB storage, run number, set CDB lock
  InitCDB();
  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  SetCDBLock();
  
  AliRunLoader* runLoader = LoadRun();
  if (!runLoader) return kFALSE;

  TString detStr = detectors;
  TObjArray* detArray = runLoader->GetAliRun()->Detectors();
  for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
    AliModule* det = (AliModule*) detArray->At(iDet);
    if (!det || !det->IsActive()) continue;
    if (IsSelected(det->GetName(), detStr)) {
      AliInfo(Form("creating summable digits for %s", det->GetName()));
      AliCodeTimerStart(Form("creating summable digits for %s", det->GetName()));
      det->Hits2SDigits();
      AliCodeTimerStop(Form("creating summable digits for %s", det->GetName()));
      AliSysInfo::AddStamp(Form("SDigit_%s_%d",det->GetName(),eventNr), 0,1, eventNr);
    }
  }

  if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
    AliError(Form("the following detectors were not found: %s",
                  detStr.Data()));
    if (fStopOnError) return kFALSE;
  }
  eventNr++;
  delete runLoader;

  return kTRUE;
}


//_____________________________________________________________________________
Bool_t AliSimulation::RunDigitization(const char* detectors, 
				      const char* excludeDetectors)
{
// run the digitization and produce digits from sdigits
  AliCodeTimerAuto("",0)

  // initialize CDB storage, run number, set CDB lock
  InitCDB();
  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  SetCDBLock();
  
  delete AliRunLoader::Instance();
  delete gAlice;
  gAlice = NULL;

  Int_t nStreams = 1;
  if (fBkgrdFileNames) nStreams = fBkgrdFileNames->GetEntriesFast() + 1;
  Int_t signalPerBkgrd = GetNSignalPerBkgrd();
  AliDigitizationInput digInp(nStreams, signalPerBkgrd);
  // digInp.SetEmbeddingFlag(fEmbeddingFlag);
  digInp.SetRegionOfInterest(fRegionOfInterest);
  digInp.SetInputStream(0, fGAliceFileName.Data());
  for (Int_t iStream = 1; iStream < nStreams; iStream++) {
    const char* fileName = ((TObjString*)(fBkgrdFileNames->At(iStream-1)))->GetName();
    digInp.SetInputStream(iStream, fileName);
  }
  TObjArray detArr;
  detArr.SetOwner(kTRUE);
  TString detStr = detectors;
  TString detExcl = excludeDetectors;
  if (!static_cast<AliStream*>(digInp.GetInputStream(0))->ImportgAlice()) {
    AliError("Error occured while getting gAlice from Input 0");
    return kFALSE;
  }
  AliRunLoader* runLoader = AliRunLoader::GetRunLoader(digInp.GetInputStream(0)->GetFolderName());
  TObjArray* detArray = runLoader->GetAliRun()->Detectors();
  for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
    AliModule* det = (AliModule*) detArray->At(iDet);
    if (!det || !det->IsActive()) continue;
    if (!IsSelected(det->GetName(), detStr) || IsSelected(det->GetName(), detExcl)) continue;
    AliDigitizer* digitizer = det->CreateDigitizer(&digInp);
    if (!digitizer || !digitizer->Init()) {
      AliError(Form("no digitizer for %s", det->GetName()));
      if (fStopOnError) return kFALSE;
      else continue;
    }
    detArr.AddLast(digitizer);    
    AliInfo(Form("Created digitizer from SDigits -> Digits for %s", det->GetName()));    

  }
  //
  if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
    AliError(Form("the following detectors were not found: %s", detStr.Data()));
    if (fStopOnError) return kFALSE;
  }
  //
  Int_t ndigs = detArr.GetEntriesFast();
  Int_t eventsCreated = 0;
  AliRunLoader* outRl =  digInp.GetOutRunLoader();
  while ((eventsCreated++ < fNEvents) || (fNEvents < 0)) {
    if (!digInp.ConnectInputTrees()) break;
    digInp.InitEvent(); //this must be after call of Connect Input tress.
    if (outRl) outRl->SetEventNumber(eventsCreated-1);
    static_cast<AliStream*>(digInp.GetInputStream(0))->ImportgAlice(); // use gAlice of the first input stream
    for (int id=0;id<ndigs;id++) {
      ((AliDigitizer*)detArr[id])->Digitize("");
      AliSysInfo::AddStamp(Form("Digit_%s_%d",detArr[id]->GetName(),eventsCreated), 0,2, eventsCreated);       
    }
    digInp.FinishEvent();
  };
  digInp.FinishGlobal();
  // 
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunHitsDigitization(const char* detectors)
{
// run the digitization and produce digits from hits

  AliCodeTimerAuto("",0)

  // initialize CDB storage, run number, set CDB lock
  InitCDB();
  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  SetCDBLock();
  
  AliRunLoader* runLoader = LoadRun("READ");
  if (!runLoader) return kFALSE;

  TString detStr = detectors;
  TObjArray* detArray = runLoader->GetAliRun()->Detectors();
  for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
    AliModule* det = (AliModule*) detArray->At(iDet);
    if (!det || !det->IsActive()) continue;
    if (IsSelected(det->GetName(), detStr)) {
      AliInfo(Form("creating digits from hits for %s", det->GetName()));
      det->Hits2Digits();
    }
  }

  if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
    AliError(Form("the following detectors were not found: %s", 
                  detStr.Data()));
    if (fStopOnError) return kFALSE;
  }

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::WriteRawData(const char* detectors, 
				   const char* fileName,
				   Bool_t deleteIntermediateFiles,
				   Bool_t selrawdata)
{
// convert the digits to raw data
// First DDL raw data files for the given detectors are created.
// If a file name is given, the DDL files are then converted to a DATE file.
// If deleteIntermediateFiles is true, the DDL raw files are deleted 
// afterwards.
// If the file name has the extension ".root", the DATE file is converted
// to a root file.
// If deleteIntermediateFiles is true, the DATE file is deleted afterwards.
// 'selrawdata' flag can be used to enable writing of detectors raw data
// accoring to the trigger cluster.

  AliCodeTimerAuto("",0)
  AliSysInfo::AddStamp("WriteRawData_Start");
  
  TString detStr = detectors;
  if (!WriteRawFiles(detStr.Data())) {
    if (fStopOnError) return kFALSE;
  }
  AliSysInfo::AddStamp("WriteRawFiles");

  // run HLT simulation on simulated DDL raw files
  // and produce HLT ddl raw files to be included in date/root file
  // bugfix 2009-06-26: the decision whether to write HLT raw data
  // is taken in RunHLT. Here HLT always needs to be run in order to
  // create HLT digits, unless its switched off. This is due to the
  // special placement of the HLT between the generation of DDL files
  // and conversion to DATE/Root file.
  detStr.ReplaceAll("HLT", "");
  if (!fRunHLT.IsNull()) {
    if (!RunHLT()) {
      if (fStopOnError) return kFALSE;
    }
  }
  AliSysInfo::AddStamp("WriteRawData_RunHLT");

  TString dateFileName(fileName);
  if (!dateFileName.IsNull()) {
    Bool_t rootOutput = dateFileName.EndsWith(".root");
    if (rootOutput) dateFileName += ".date";
    TString selDateFileName;
    if (selrawdata) {
      selDateFileName = "selected.";
      selDateFileName+= dateFileName;
    }
    if (!ConvertRawFilesToDate(dateFileName,selDateFileName)) {
      if (fStopOnError) return kFALSE;
    }
    AliSysInfo::AddStamp("ConvertRawFilesToDate");
    if (deleteIntermediateFiles) {
      AliRunLoader* runLoader = LoadRun("READ");
      if (runLoader) for (Int_t iEvent = 0; 
			  iEvent < runLoader->GetNumberOfEvents(); iEvent++) {
	char command[256];
	snprintf(command, 256, "rm -r raw%d", iEvent);
	gSystem->Exec(command);
      }
      delete runLoader;
    }

    if (rootOutput) {
      if (!ConvertDateToRoot(dateFileName, fileName)) {
	if (fStopOnError) return kFALSE;
      }
      AliSysInfo::AddStamp("ConvertDateToRoot");
      if (deleteIntermediateFiles) {
	gSystem->Unlink(dateFileName);
      }
      if (selrawdata) {
	TString selFileName = "selected.";
	selFileName        += fileName;
	if (!ConvertDateToRoot(selDateFileName, selFileName)) {
	  if (fStopOnError) return kFALSE;
	}
	if (deleteIntermediateFiles) {
	  gSystem->Unlink(selDateFileName);
	}
      }
    }
  }

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::WriteRawFiles(const char* detectors)
{
// convert the digits to raw data DDL files

  AliCodeTimerAuto("",0)
  
  AliRunLoader* runLoader = LoadRun("READ");
  if (!runLoader) return kFALSE;

  // write raw data to DDL files
  for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) {
    AliInfo(Form("processing event %d", iEvent));
    runLoader->GetEvent(iEvent);
    TString baseDir = gSystem->WorkingDirectory();
    char dirName[256];
    snprintf(dirName, 256, "raw%d", iEvent);
    gSystem->MakeDirectory(dirName);
    if (!gSystem->ChangeDirectory(dirName)) {
      AliError(Form("couldn't change to directory %s", dirName));
      if (fStopOnError) return kFALSE; else continue;
    }

    ofstream runNbFile(Form("run%u",runLoader->GetHeader()->GetRun()));
    runNbFile.close();

    TString detStr = detectors;
    if (IsSelected("HLT", detStr)) {
      // Do nothing. "HLT" will be removed from detStr and HLT raw
      // data files are generated in RunHLT.
    }

    TObjArray* detArray = runLoader->GetAliRun()->Detectors();
    for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
      AliModule* det = (AliModule*) detArray->At(iDet);
      if (!det || !det->IsActive()) continue;
      if (IsSelected(det->GetName(), detStr)) {
	AliInfo(Form("creating raw data from digits for %s", det->GetName()));
	det->Digits2Raw();
      }
    }

    if (!WriteTriggerRawData())
      if (fStopOnError) return kFALSE;

    gSystem->ChangeDirectory(baseDir);
    if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
      AliError(Form("the following detectors were not found: %s", 
                    detStr.Data()));
      if (fStopOnError) return kFALSE;
    }
  }

  delete runLoader;
  
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::ConvertRawFilesToDate(const char* dateFileName,
					    const char* selDateFileName)
{
// convert raw data DDL files to a DATE file with the program "dateStream"
// The second argument is not empty when the user decides to write
// the detectors raw data according to the trigger cluster.

  AliCodeTimerAuto("",0)
  
  char* path = gSystem->Which(gSystem->Getenv("PATH"), "dateStream");
  if (!path) {
    AliError("the program dateStream was not found");
    if (fStopOnError) return kFALSE;
  } else {
    delete[] path;
  }

  AliRunLoader* runLoader = LoadRun("READ");
  if (!runLoader) return kFALSE;

  AliInfo(Form("converting raw data DDL files to DATE file %s", dateFileName));
  Bool_t selrawdata = kFALSE;
  if (strcmp(selDateFileName,"") != 0) selrawdata = kTRUE;

  char command[256];
  // Note the option -s. It is used in order to avoid
  // the generation of SOR/EOR events.
  snprintf(command, 256, "dateStream -c -s -D -o %s -# %d -C -run %d", 
	  dateFileName, runLoader->GetNumberOfEvents(),runLoader->GetHeader()->GetRun());
  FILE* pipe = gSystem->OpenPipe(command, "w");

  if (!pipe) {
    AliError(Form("Cannot execute command: %s",command));
    return kFALSE;
  }

  Int_t selEvents = 0;
  for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) {

    UInt_t detectorPattern = 0;
    runLoader->GetEvent(iEvent);
    if (!runLoader->LoadTrigger()) {
      AliCentralTrigger *aCTP = runLoader->GetTrigger();
      detectorPattern = aCTP->GetClusterMask();
      // Check if the event was triggered by CTP
      if (selrawdata) {
	if (aCTP->GetClassMask()) selEvents++;
      }
    }
    else {
      AliWarning("No trigger can be loaded! Some fields in the event header will be empty !");
      if (selrawdata) {
	AliWarning("No trigger can be loaded! Writing of selected raw data is abandoned !");
	selrawdata = kFALSE;
      }
    }

    fprintf(pipe, "GDC DetectorPattern %u Timestamp %ld\n", detectorPattern, runLoader->GetHeader()->GetTimeStamp());
    Float_t ldc = 0;
    Int_t prevLDC = -1;

    // loop over detectors and DDLs
    for (Int_t iDet = 0; iDet < AliDAQ::kNDetectors; iDet++) {
      for (Int_t iDDL = 0; iDDL < AliDAQ::NumberOfDdls(iDet); iDDL++) {

        Int_t ddlID = AliDAQ::DdlID(iDet,iDDL);
        Int_t ldcID = Int_t(ldc + 0.0001);
        ldc += AliDAQ::NumberOfLdcs(iDet) / AliDAQ::NumberOfDdls(iDet);

        char rawFileName[256];
        snprintf(rawFileName, 256, "raw%d/%s", 
                iEvent, AliDAQ::DdlFileName(iDet,iDDL));

	// check existence and size of raw data file
        FILE* file = fopen(rawFileName, "rb");
        if (!file) continue;
        fseek(file, 0, SEEK_END);
        unsigned long size = ftell(file);
	fclose(file);
        if (!size) continue;

        if (ldcID != prevLDC) {
          fprintf(pipe, " LDC Id %d\n", ldcID);
          prevLDC = ldcID;
        }
        fprintf(pipe, "  Equipment Id %d Payload %s\n", ddlID, rawFileName);
      }
    }
  }

  Int_t result = gSystem->ClosePipe(pipe);

  if (!(selrawdata && selEvents > 0)) {
    delete runLoader;
    return (result == 0);
  }

  AliInfo(Form("converting selected by trigger cluster raw data DDL files to DATE file %s", selDateFileName));
  
  snprintf(command, 256, "dateStream -c -s -D -o %s -# %d -C -run %d", 
	  selDateFileName,selEvents,runLoader->GetHeader()->GetRun());
  FILE* pipe2 = gSystem->OpenPipe(command, "w");

  for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) {

    // Get the trigger decision and cluster
    UInt_t detectorPattern = 0;
    TString detClust;
    runLoader->GetEvent(iEvent);
    if (!runLoader->LoadTrigger()) {
      AliCentralTrigger *aCTP = runLoader->GetTrigger();
      if (aCTP->GetClassMask() == 0) continue;
      detectorPattern = aCTP->GetClusterMask();
      detClust = AliDAQ::ListOfTriggeredDetectors(detectorPattern);
      AliInfo(Form("List of detectors to be read out: %s",detClust.Data()));
    }

    fprintf(pipe2, "GDC DetectorPattern %u Timestamp %ld\n", detectorPattern, runLoader->GetHeader()->GetTimeStamp());
    Float_t ldc = 0;
    Int_t prevLDC = -1;

    // loop over detectors and DDLs
    for (Int_t iDet = 0; iDet < AliDAQ::kNDetectors; iDet++) {
      // Write only raw data from detectors that
      // are contained in the trigger cluster(s)
      if (!IsSelected(AliDAQ::DetectorName(iDet),detClust)) continue;

      for (Int_t iDDL = 0; iDDL < AliDAQ::NumberOfDdls(iDet); iDDL++) {

        Int_t ddlID = AliDAQ::DdlID(iDet,iDDL);
        Int_t ldcID = Int_t(ldc + 0.0001);
        ldc += AliDAQ::NumberOfLdcs(iDet) / AliDAQ::NumberOfDdls(iDet);

        char rawFileName[256];
        snprintf(rawFileName, 256, "raw%d/%s", 
                iEvent, AliDAQ::DdlFileName(iDet,iDDL));

	// check existence and size of raw data file
        FILE* file = fopen(rawFileName, "rb");
        if (!file) continue;
        fseek(file, 0, SEEK_END);
        unsigned long size = ftell(file);
	fclose(file);
        if (!size) continue;

        if (ldcID != prevLDC) {
          fprintf(pipe2, " LDC Id %d\n", ldcID);
          prevLDC = ldcID;
        }
        fprintf(pipe2, "  Equipment Id %d Payload %s\n", ddlID, rawFileName);
      }
    }
  }

  Int_t result2 = gSystem->ClosePipe(pipe2);

  delete runLoader;
  return ((result == 0) && (result2 == 0));
}

//_____________________________________________________________________________
Bool_t AliSimulation::ConvertDateToRoot(const char* dateFileName,
					const char* rootFileName)
{
// convert a DATE file to a root file with the program "alimdc"

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

  char* path = gSystem->Which(gSystem->Getenv("PATH"), "alimdc");
  if (!path) {
    AliError("the program alimdc was not found");
    if (fStopOnError) return kFALSE;
  } else {
    delete[] path;
  }

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

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

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

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

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

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

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

  return (result == 0);
}


//_____________________________________________________________________________
AliRunLoader* AliSimulation::LoadRun(const char* mode) const
{
// delete existing run loaders, open a new one and load gAlice

  delete AliRunLoader::Instance();
  AliRunLoader* runLoader = 
    AliRunLoader::Open(fGAliceFileName.Data(), 
		       AliConfig::GetDefaultEventFolderName(), mode);
  if (!runLoader) {
    AliError(Form("no run loader found in file %s", fGAliceFileName.Data()));
    return NULL;
  }
  runLoader->LoadgAlice();
  runLoader->LoadHeader();
  gAlice = runLoader->GetAliRun();
  if (!gAlice) {
    AliError(Form("no gAlice object found in file %s", 
                  fGAliceFileName.Data()));
    return NULL;
  }
  return runLoader;
}

//_____________________________________________________________________________
Int_t AliSimulation::GetNSignalPerBkgrd(Int_t nEvents) const
{
// get or calculate the number of signal events per background event

  if (!fBkgrdFileNames) return 1;
  Int_t nBkgrdFiles = fBkgrdFileNames->GetEntriesFast();
  if (nBkgrdFiles == 0) return 1;

  // get the number of signal events
  if (nEvents <= 0) {
    AliRunLoader* runLoader = 
	AliRunLoader::Open(fGAliceFileName.Data(), "SIGNAL");
    if (!runLoader) return 1;
    
    nEvents = runLoader->GetNumberOfEvents();
    delete runLoader;
  }

  Int_t result = 0;
  for (Int_t iBkgrdFile = 0; iBkgrdFile < nBkgrdFiles; iBkgrdFile++) {
    // get the number of background events
    const char* fileName = ((TObjString*)
			    (fBkgrdFileNames->At(iBkgrdFile)))->GetName();
    AliRunLoader* runLoader =
      AliRunLoader::Open(fileName, "BKGRD");
    if (!runLoader) continue;
    Int_t nBkgrdEvents = runLoader->GetNumberOfEvents();
    delete runLoader;
  
    // get or calculate the number of signal per background events
    Int_t nSignalPerBkgrd = fBkgrdFileNames->At(iBkgrdFile)->GetUniqueID();
    if (nSignalPerBkgrd <= 0) {
      nSignalPerBkgrd = (nEvents-1) / nBkgrdEvents + 1;
    } else if (result && (result != nSignalPerBkgrd)) {
      AliInfo(Form("the number of signal events per background event "
                   "will be changed from %d to %d for stream %d", 
                   nSignalPerBkgrd, result, iBkgrdFile+1));
      nSignalPerBkgrd = result;
    }

    if (!result) result = nSignalPerBkgrd;
    if (nSignalPerBkgrd * nBkgrdEvents < nEvents) {
      AliWarning(Form("not enough background events (%d) for %d signal events "
                      "using %d signal per background events for stream %d",
                      nBkgrdEvents, nEvents, nSignalPerBkgrd, iBkgrdFile+1));
    }
  }

  return result;
}

//_____________________________________________________________________________
Bool_t AliSimulation::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;
}

//_____________________________________________________________________________
Int_t AliSimulation::ConvertRaw2SDigits(const char* rawDirectory, const char* esdFileName, Int_t N, Int_t nSkip)
{
//
// Steering routine  to convert raw data in directory rawDirectory/ to fake SDigits. 
// These can be used for embedding of MC tracks into RAW data using the standard 
// merging procedure.
//
// If an ESD file is given the reconstructed vertex is taken from it and stored in the event header.
//
  if (!gAlice) {
    AliError("no gAlice object. Restart aliroot and try again.");
    return kFALSE;
  }
  if (gAlice->Modules()->GetEntries() > 0) {
    AliError("gAlice was already run. Restart aliroot and try again.");
    return kFALSE;
  }
  
  AliInfo(Form("initializing gAlice with config file %s",fConfigFileName.Data()));
  
  gAlice->Announce();
  
  gROOT->LoadMacro(fConfigFileName.Data());
  gInterpreter->ProcessLine(gAlice->GetConfigFunction());
  
  if(AliCDBManager::Instance()->GetRun() >= 0) { 
  	SetRunNumber(AliCDBManager::Instance()->GetRun());
  } else {
  	AliWarning("Run number not initialized!!");
  }
  
   AliRunLoader::Instance()->CdGAFile();
    
   AliPDG::AddParticlesToPdgDataBase();  

   TVirtualMC::GetMC()->SetMagField(TGeoGlobalMagField::Instance()->GetField());
   
   gAlice->GetMCApp()->Init();

   //Must be here because some MCs (G4) adds detectors here and not in Config.C
   gAlice->InitLoaders();
   AliRunLoader::Instance()->MakeTree("E");
   AliRunLoader::Instance()->LoadKinematics("RECREATE");
   AliRunLoader::Instance()->LoadTrackRefs("RECREATE");
   AliRunLoader::Instance()->LoadHits("all","RECREATE");

   //
   // Save stuff at the beginning of the file to avoid file corruption
   AliRunLoader::Instance()->CdGAFile();
   gAlice->Write();
//
//  Initialize CDB     
    InitCDB();
    //AliCDBManager* man = AliCDBManager::Instance();
    //man->SetRun(0); // Should this come from rawdata header ?
    
    Int_t iDet;
    //
    // Get the runloader
    AliRunLoader* runLoader = AliRunLoader::Instance();
    //
    // Open esd file if available
    TFile* esdFile = 0;
    TTree* treeESD = 0;
    AliESDEvent* esd = 0;
    if (esdFileName && (strlen(esdFileName)>0)) {
      esdFile = TFile::Open(esdFileName);
      if (esdFile) {
        esd = new AliESDEvent();
        esdFile->GetObject("esdTree", treeESD);
		  if (treeESD) {
			  esd->ReadFromTree(treeESD);
			  if (nSkip>0) {
				  AliInfo(Form("Asking to skip first %d ESDs events",nSkip));
			  } else {
				  nSkip=0;
			  }
		  }
      }
    }

    //
    // Create the RawReader
    TString fileName(rawDirectory);
    AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
    if (!rawReader) return (kFALSE);
    
//     if (!fEquipIdMap.IsNull() && fRawReader)
//       fRawReader->LoadEquipmentIdsMap(fEquipIdMap);
    //
    // Get list of detectors
    TObjArray* detArray = runLoader->GetAliRun()->Detectors();
    //
    // Get Header
    AliHeader* header = runLoader->GetHeader();
    // Event loop
    Int_t nev = 0;
    while(kTRUE) {
	if (!(rawReader->NextEvent())) break;
	runLoader->SetEventNumber(nev);
        runLoader->GetHeader()->Reset(rawReader->GetRunNumber(), 
                                      nev, nev);
        runLoader->GetEvent(nev);
        AliInfo(Form("We are at event %d",nev));
	//
	// Detector loop
        TString detStr = fMakeSDigits;
	for (iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
	    AliModule* det = (AliModule*) detArray->At(iDet);
	    if (!det || !det->IsActive()) continue;
	    if (IsSelected(det->GetName(), detStr)) {
	      AliInfo(Form("Calling Raw2SDigits for %s", det->GetName()));
	      det->Raw2SDigits(rawReader);
	      rawReader->Reset();
	    }
	} // detectors
        

	//
	//  If ESD information available obtain reconstructed vertex and store in header.
	if (treeESD) {
		AliInfo(Form("Selected event %d correspond to event %d in raw and to %d in esd",nev,rawReader->GetEventIndex(),nSkip+rawReader->GetEventIndex()));
	    treeESD->GetEvent(nSkip+rawReader->GetEventIndex());
	    const AliESDVertex* esdVertex = esd->GetPrimaryVertex();
	    Double_t position[3];
	    esdVertex->GetXYZ(position);
	    AliGenEventHeader* mcHeader = new  AliGenEventHeader("ESD");
	    TArrayF mcV;
	    mcV.Set(3);
	    for (Int_t i = 0; i < 3; i++) mcV[i] = position[i];
	    mcHeader->SetPrimaryVertex(mcV);
	    header->Reset(0,nev);
	    header->SetGenEventHeader(mcHeader);
	    AliInfo(Form("***** Saved vertex %f %f %f \n", position[0], position[1], position[2]));
	}
//
//      Finish the event
	runLoader->TreeE()->Fill();
        AliInfo(Form("Finished event %d",nev));
	nev++;
        if (N>0&&nev>=N)
          break;
    } // events
 
    delete rawReader;
//
//  Finish the run 
    runLoader->CdGAFile();
    runLoader->WriteHeader("OVERWRITE");
    runLoader->WriteRunLoader();

    return nev;
}

//_____________________________________________________________________________
void AliSimulation::FinishRun()
{
  //
  // Called at the end of the run.
  //

  if(IsLegoRun()) 
   {
    AliDebug(1, "Finish Lego");
    AliRunLoader::Instance()->CdGAFile();
    fLego->FinishRun();
   }
  
  // Clean detector information
  TIter next(gAlice->Modules());
  AliModule *detector;
  while((detector = dynamic_cast<AliModule*>(next()))) {
    AliDebug(2, Form("%s->FinishRun()", detector->GetName()));
    detector->FinishRun();
  }
  
  AliDebug(1, "AliRunLoader::Instance()->WriteHeader(OVERWRITE)");
  AliRunLoader::Instance()->WriteHeader("OVERWRITE");

  // Write AliRun info and all detectors parameters
  AliRunLoader::Instance()->CdGAFile();
  gAlice->Write(0,TObject::kOverwrite);//write AliRun
  AliRunLoader::Instance()->Write(0,TObject::kOverwrite);//write RunLoader itself
  //
  if(gAlice->GetMCApp()) gAlice->GetMCApp()->FinishRun();  
  AliRunLoader::Instance()->Synchronize();
}

//_____________________________________________________________________________
Int_t AliSimulation::GetDetIndex(const char* detector)
{
  // return the detector index corresponding to detector
  Int_t index = -1 ; 
  for (index = 0; index < fgkNDetectors ; index++) {
    if ( strcmp(detector, fgkDetectorName[index]) == 0 )
	  break ; 
  }	
  return index ; 
}

//_____________________________________________________________________________
Bool_t AliSimulation::CreateHLT()
{
  // Init the HLT simulation.
  // The function  loads the library and creates the instance of AliHLTSimulation.
  // the main reason for the decoupled creation is to set the transient OCDB
  // objects before the OCDB is locked

  // load the library dynamically
  gSystem->Load(ALIHLTSIMULATION_LIBRARY);

  // check for the library version
  AliHLTSimulationGetLibraryVersion_t fctVersion=(AliHLTSimulationGetLibraryVersion_t)(gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_GET_LIBRARY_VERSION));
  if (!fctVersion) {
    AliError(Form("can not load library %s", ALIHLTSIMULATION_LIBRARY));
    return kFALSE;
  }
  if (fctVersion()!= ALIHLTSIMULATION_LIBRARY_VERSION) {
    AliWarning(Form("%s version does not match: compiled for version %d, loaded %d", ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_LIBRARY_VERSION, fctVersion()));
  }

  // print compile info
  typedef void (*CompileInfo)( const char*& date, const char*& time);
  CompileInfo fctInfo=(CompileInfo)gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, "CompileInfo");
  if (fctInfo) {
    const char* date="";
    const char* time="";
    (*fctInfo)(date, time);
    if (!date) date="unknown";
    if (!time) time="unknown";
    AliInfo(Form("%s build on %s (%s)", ALIHLTSIMULATION_LIBRARY, date, time));
  } else {
    AliInfo(Form("no build info available for %s", ALIHLTSIMULATION_LIBRARY));
  }

  // create instance of the HLT simulation
  AliHLTSimulationCreateInstance_t fctCreate=(AliHLTSimulationCreateInstance_t)(gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_CREATE_INSTANCE));
  if (fctCreate==NULL || (fpHLT=(fctCreate()))==NULL) {
    AliError(Form("can not create instance of HLT simulation (creator %p)", fctCreate));
    return kFALSE;    
  }

  TString specObjects;
  for (Int_t i = 0; i < fSpecCDBUri.GetEntriesFast(); i++) {
    if (specObjects.Length()>0) specObjects+=" ";
    specObjects+=fSpecCDBUri[i]->GetName();
  }

  AliHLTSimulationSetup_t fctSetup=(AliHLTSimulationSetup_t)(gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_SETUP));
  if (fctSetup==NULL || fctSetup(fpHLT, this, specObjects.Data())<0) {
    AliWarning(Form("failed to setup HLT simulation (function %p)", fctSetup));
  }

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunHLT()
{
  // Run the HLT simulation
  // HLT simulation is implemented in HLT/sim/AliHLTSimulation
  // Disabled if fRunHLT is empty, default vaule is "default".
  // AliSimulation::SetRunHLT can be used to set the options for HLT simulation
  // The default simulation depends on the HLT component libraries and their
  // corresponding agents which define components and chains to run. See
  // http://web.ift.uib.no/~kjeks/doc/alice-hlt-current/
  // http://web.ift.uib.no/~kjeks/doc/alice-hlt-current/classAliHLTModuleAgent.html
  //
  // The libraries to be loaded can be specified as an option.
  // <pre>
  // AliSimulation sim;
  // sim.SetRunHLT("libAliHLTSample.so");
  // </pre>
  // will only load <tt>libAliHLTSample.so</tt>

  // Other available options:
  // \li loglevel=<i>level</i> <br>
  //     logging level for this processing
  // \li alilog=off
  //     disable redirection of log messages to AliLog class
  // \li config=<i>macro</i>
  //     configuration macro
  // \li chains=<i>configuration</i>
  //     comma separated list of configurations to be run during simulation
  // \li rawfile=<i>file</i>
  //     source for the RawReader to be created, the default is <i>./</i> if
  //     raw data is simulated

  int iResult=0;

  if (!fpHLT && !CreateHLT()) {
    return kFALSE;
  }
  AliHLTSimulation* pHLT=fpHLT;

  AliRunLoader* pRunLoader = LoadRun("READ");
  if (!pRunLoader) return kFALSE;

  // initialize CDB storage, run number, set CDB lock
  // thats for the case of running HLT simulation without all the other steps
  // multiple calls are handled by the function, so we can just call
  InitCDB();
  if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
  SetCDBLock();
  
  // init the HLT simulation
  TString options;
  if (fRunHLT.CompareTo("default")!=0) options=fRunHLT;
  TString detStr = fWriteRawData;
  if (!IsSelected("HLT", detStr)) {
    options+=" writerawfiles=";
  } else {
    options+=" writerawfiles=HLT";
  }

  if (!detStr.IsNull() && !options.Contains("rawfile=")) {
    // as a matter of fact, HLT will run reconstruction and needs the RawReader
    // in order to get detector data. By default, RawReaderFile is used to read
    // the already simulated ddl files. Date and Root files from the raw data
    // are generated after the HLT simulation.
    options+=" rawfile=./";
  }

  AliHLTSimulationInit_t fctInit=(AliHLTSimulationInit_t)(gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_INIT));
  if (fctInit==NULL || (iResult=(fctInit(pHLT, pRunLoader, options.Data())))<0) {
    AliError(Form("can not init HLT simulation: error %d (init %p)", iResult, fctInit));
  } else {
    // run the HLT simulation
    AliHLTSimulationRun_t fctRun=(AliHLTSimulationRun_t)(gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_RUN));
    if (fctRun==NULL || (iResult=(fctRun(pHLT, pRunLoader)))<0) {
      AliError(Form("can not run HLT simulation: error %d (run %p)", iResult, fctRun));
    }
  }

  // delete the instance
  AliHLTSimulationDeleteInstance_t fctDelete=(AliHLTSimulationDeleteInstance_t)(gSystem->DynFindSymbol(ALIHLTSIMULATION_LIBRARY, ALIHLTSIMULATION_DELETE_INSTANCE));
  if (fctDelete==NULL || fctDelete(pHLT)<0) {
    AliError(Form("can not delete instance of HLT simulation (creator %p)", fctDelete));
  }
  pHLT=NULL;

  return iResult>=0?kTRUE:kFALSE;
}

//_____________________________________________________________________________
Bool_t AliSimulation::RunQA()
{
	// run the QA on summable hits, digits or digits
	
    //if(!gAlice) return kFALSE;
	AliQAManager::QAManager()->SetRunLoader(AliRunLoader::Instance()) ;

	TString detectorsw("") ;  
	Bool_t rv = kTRUE ; 
  AliQAManager::QAManager()->SetEventSpecie(fEventSpecie) ;
	detectorsw = AliQAManager::QAManager()->Run(fQADetectors.Data()) ; 
	if ( detectorsw.IsNull() ) 
		rv = kFALSE ; 
	return rv ; 
}

//_____________________________________________________________________________
Bool_t AliSimulation::SetRunQA(TString detAndAction) 
{
	// Allows to run QA for a selected set of detectors
	// and a selected set of tasks among HITS, SDIGITS and DIGITS
	// 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) ; 
	if (fQADetectors.Contains("ALL") ){
    TString tmp = Form("%s %s", fMakeDigits.Data(), fMakeDigitsFromHits.Data()) ; 
    Int_t minus = fQADetectors.Last('-') ; 
    TString toKeep = Form("%s %s", fMakeDigits.Data(), fMakeDigitsFromHits.Data()) ; 
    TString toRemove("") ;
    while (minus >= 0) {
      toRemove = fQADetectors(minus+1, fQADetectors.Length()) ; 
      toRemove = toRemove.Strip() ; 
      toKeep.ReplaceAll(toRemove, "") ; 
      fQADetectors.ReplaceAll(Form("-%s", toRemove.Data()), "") ; 
      minus = fQADetectors.Last('-') ; 
    }
    fQADetectors = toKeep ; 
  }
  fQATasks   = detAndAction(colon+1, detAndAction.Sizeof() ) ; 
	if (fQATasks.Contains("ALL") ) {
		fQATasks = Form("%d %d %d", AliQAv1::kHITS, AliQAv1::kSDIGITS, AliQAv1::kDIGITS) ; 
	} else {
		fQATasks.ToUpper() ; 
		TString tempo("") ; 
		if ( fQATasks.Contains("HIT") ) 
			tempo = Form("%d ", AliQAv1::kHITS) ; 
		if ( fQATasks.Contains("SDIGIT") ) 
			tempo += Form("%d ", AliQAv1::kSDIGITS) ; 
		if ( fQATasks.Contains("DIGIT") ) 
			tempo += Form("%d ", AliQAv1::kDIGITS) ; 
		fQATasks = tempo ; 
		if (fQATasks.IsNull()) {
			AliInfo("No QA requested\n")  ;
			fRunQA = kFALSE ;
			return kTRUE ; 
		}
	}	
	TString tempo(fQATasks) ; 
    tempo.ReplaceAll(Form("%d", AliQAv1::kHITS), AliQAv1::GetTaskName(AliQAv1::kHITS)) 	;
    tempo.ReplaceAll(Form("%d", AliQAv1::kSDIGITS), AliQAv1::GetTaskName(AliQAv1::kSDIGITS)) ;	
    tempo.ReplaceAll(Form("%d", AliQAv1::kDIGITS), AliQAv1::GetTaskName(AliQAv1::kDIGITS)) ; 	
	AliInfo( Form("QA will be done on \"%s\" for \"%s\"\n", fQADetectors.Data(), tempo.Data()) ) ;  
	fRunQA = kTRUE ;
	AliQAManager::QAManager()->SetActiveDetectors(fQADetectors) ; 
	AliQAManager::QAManager()->SetTasks(fQATasks) ; 
  for (Int_t det = 0 ; det < AliQAv1::kNDET ; det++) 
    AliQAManager::QAManager()->SetWriteExpert(AliQAv1::DETECTORINDEX_t(det)) ;
  
	return kTRUE; 
} 

//_____________________________________________________________________________
void AliSimulation::ProcessEnvironmentVars()
{
// Extract run number and random generator seed from env variables

    AliInfo("Processing environment variables");
    
    // Random Number seed
    
    // first check that seed is not already set
    if (fSeed == 0) {
    	if (gSystem->Getenv("CONFIG_SEED")) {
     	 	fSeed = atoi(gSystem->Getenv("CONFIG_SEED"));
    	}
    } else {
    	if (gSystem->Getenv("CONFIG_SEED")) {
    		AliInfo(Form("Seed for random number generation already set (%d)"
			     ": CONFIG_SEED variable ignored!", fSeed));
    	}
    }
   
    AliInfo(Form("Seed for random number generation = %d ", fSeed)); 

    // Run Number
    
    // first check that run number is not already set
    if(fRun < 0) {    
    	if (gSystem->Getenv("DC_RUN")) {
		fRun = atoi(gSystem->Getenv("DC_RUN"));
    	}
    } else {
    	if (gSystem->Getenv("DC_RUN")) {
    		AliInfo(Form("Run number already set (%d): DC_RUN variable ignored!", fRun));
    	}
    }
    
    AliInfo(Form("Run number = %d", fRun)); 
}

//---------------------------------------------------------------------
void AliSimulation::WriteGRPEntry()
{
  // Get the necessary information from galice (generator, trigger etc) and
  // write a GRP entry corresponding to the settings in the Config.C used
  // note that Hall probes and Cavern and Surface Atmos pressures are not simulated.


  AliInfo("Writing global run parameters entry into the OCDB");

  AliGRPObject* grpObj = new AliGRPObject();

  grpObj->SetRunType("PHYSICS");
  grpObj->SetTimeStart(fTimeStart);
  grpObj->SetTimeEnd(fTimeEnd); 
  grpObj->SetBeamEnergyIsSqrtSHalfGeV(); // new format of GRP: store sqrt(s)/2 in GeV

  const AliGenerator *gen = gAlice->GetMCApp()->Generator();
  Int_t a = 0;
  Int_t z = 0;

  if (gen) {
    TString projectile;
    gen->GetProjectile(projectile,a,z);
    TString target;
    gen->GetTarget(target,a,z);
    TString beamType = projectile + "-" + target;
    beamType.ReplaceAll(" ","");
    if (!beamType.CompareTo("-")) {
      grpObj->SetBeamType("UNKNOWN");
      grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2);
    }
    else {
      grpObj->SetBeamType(beamType);
      if (z != 0) {
	  grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2 * a / z);
      } else {
	  grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2 );
      }
      // Heavy ion run, the event specie is set to kHighMult
      fEventSpecie = AliRecoParam::kHighMult;
      if ((strcmp(beamType,"p-p") == 0) ||
          (strcmp(beamType,"p-")  == 0) ||
          (strcmp(beamType,"-p")  == 0) ||
          (strcmp(beamType,"P-P") == 0) ||
          (strcmp(beamType,"P-")  == 0) ||
          (strcmp(beamType,"-P")  == 0)) {
        // Proton run, the event specie is set to kLowMult
        fEventSpecie = AliRecoParam::kLowMult;
      } 
    }
  } else {
    AliWarning("Unknown beam type and energy! Setting energy to 0");
    grpObj->SetBeamEnergy(0);
    grpObj->SetBeamType("UNKNOWN");
  }

  UInt_t detectorPattern  = 0;
  Int_t nDets = 0;
  TObjArray *detArray = gAlice->Detectors();
  for (Int_t iDet = 0; iDet < AliDAQ::kNDetectors-1; iDet++) {
    if (detArray->FindObject(AliDAQ::OfflineModuleName(iDet))) {
      AliDebug(1, Form("Detector #%d found: %s", iDet, AliDAQ::OfflineModuleName(iDet)));
      detectorPattern |= (1 << iDet);
      nDets++;
    }
  }
  // CTP
  if (!fTriggerConfig.IsNull())
    detectorPattern |= (1 << AliDAQ::DetectorID("TRG"));

  // HLT
  if (!fRunHLT.IsNull())
    detectorPattern |= (1 << AliDAQ::kHLTId);

  grpObj->SetNumberOfDetectors((Char_t)nDets);
  grpObj->SetDetectorMask((Int_t)detectorPattern);
  grpObj->SetLHCPeriod("LHC08c");
  grpObj->SetLHCState("STABLE_BEAMS");
  //
  AliMagF *field = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
  Float_t solenoidField = field ? TMath::Abs(field->SolenoidField()) : 0;

  Float_t factorSol     = field ? field->GetFactorSol() : 0;
  Float_t currentSol    = TMath::Abs(factorSol)>1E-6 ? 
    TMath::Nint(TMath::Abs(solenoidField/factorSol))/5.*30000.*TMath::Abs(factorSol) : 0;
  //
  Float_t factorDip     = field ? field->GetFactorDip() : 0;
  Float_t currentDip    = 6000.*TMath::Abs(factorDip);
  //
  grpObj->SetL3Current(currentSol,(AliGRPObject::Stats)0);
  grpObj->SetDipoleCurrent(currentDip,(AliGRPObject::Stats)0);  
  grpObj->SetL3Polarity(factorSol>0 ? 0:1);  
  grpObj->SetDipolePolarity(factorDip>0 ? 0:1);
  if (field) grpObj->SetUniformBMap(field->IsUniform()); // for special MC with k5kGUniform map
  grpObj->SetPolarityConventionLHC();                    // LHC convention +/+ current -> -/- field main components
  //
  grpObj->SetCavernTemperature(0,(AliGRPObject::Stats)0);
  
  //grpMap->Add(new TObjString("fCavernPressure"),new TObjString("0")); ---> not inserted in simulation with the new object, since it is now an AliDCSSensor

  // Now store the entry in OCDB
  AliCDBManager* man = AliCDBManager::Instance();
  
  man->SetLock(0, fKey);
  
  AliCDBStorage* sto = man->GetStorage(fGRPWriteLocation.Data());
  

  AliCDBId id("GRP/GRP/Data", man->GetRun(), man->GetRun(), 1, 1);
  AliCDBMetaData *metadata= new AliCDBMetaData();

  metadata->SetResponsible("alice-off@cern.ch");
  metadata->SetComment("Automatically produced GRP entry for Monte Carlo");
 
  sto->Put(grpObj,id,metadata);
  man->SetLock(1, fKey);
}

//_____________________________________________________________________________
time_t AliSimulation::GenerateTimeStamp() const
{
  // Generate event time-stamp according to
  // SOR/EOR time from GRP
  if (fUseTimeStampFromCDB)
    return fTimeStart + gRandom->Integer(fTimeEnd-fTimeStart);
  else
    return 0;
}

//_____________________________________________________________________________
void AliSimulation::StoreUsedCDBMaps() const
{
  // write in galice.root maps with used CDB paths
  //
  //
  AliRunLoader* runLoader = LoadRun();
  if (!runLoader) {
    AliError("Failed to open gAlice.root in write mode");
    return;
  }
  //
  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()));	 
  }	 
  //
  AliRunLoader::Instance()->CdGAFile();
  gDirectory->WriteObject(cdbMapCopy,"cdbMap","kSingleKey");
  gDirectory->WriteObject(cdbListCopy,"cdbList","kSingleKey");  
  delete runLoader;
  //
  AliInfo(Form("Stored used OCDB entries as TMap %s and TList %s in %s",
	       cdbMapCopy->GetName(),
	       cdbListCopy->GetName(),
	       fGAliceFileName.Data()));
  //
}
 AliSimulation.cxx:1
 AliSimulation.cxx:2
 AliSimulation.cxx:3
 AliSimulation.cxx:4
 AliSimulation.cxx:5
 AliSimulation.cxx:6
 AliSimulation.cxx:7
 AliSimulation.cxx:8
 AliSimulation.cxx:9
 AliSimulation.cxx:10
 AliSimulation.cxx:11
 AliSimulation.cxx:12
 AliSimulation.cxx:13
 AliSimulation.cxx:14
 AliSimulation.cxx:15
 AliSimulation.cxx:16
 AliSimulation.cxx:17
 AliSimulation.cxx:18
 AliSimulation.cxx:19
 AliSimulation.cxx:20
 AliSimulation.cxx:21
 AliSimulation.cxx:22
 AliSimulation.cxx:23
 AliSimulation.cxx:24
 AliSimulation.cxx:25
 AliSimulation.cxx:26
 AliSimulation.cxx:27
 AliSimulation.cxx:28
 AliSimulation.cxx:29
 AliSimulation.cxx:30
 AliSimulation.cxx:31
 AliSimulation.cxx:32
 AliSimulation.cxx:33
 AliSimulation.cxx:34
 AliSimulation.cxx:35
 AliSimulation.cxx:36
 AliSimulation.cxx:37
 AliSimulation.cxx:38
 AliSimulation.cxx:39
 AliSimulation.cxx:40
 AliSimulation.cxx:41
 AliSimulation.cxx:42
 AliSimulation.cxx:43
 AliSimulation.cxx:44
 AliSimulation.cxx:45
 AliSimulation.cxx:46
 AliSimulation.cxx:47
 AliSimulation.cxx:48
 AliSimulation.cxx:49
 AliSimulation.cxx:50
 AliSimulation.cxx:51
 AliSimulation.cxx:52
 AliSimulation.cxx:53
 AliSimulation.cxx:54
 AliSimulation.cxx:55
 AliSimulation.cxx:56
 AliSimulation.cxx:57
 AliSimulation.cxx:58
 AliSimulation.cxx:59
 AliSimulation.cxx:60
 AliSimulation.cxx:61
 AliSimulation.cxx:62
 AliSimulation.cxx:63
 AliSimulation.cxx:64
 AliSimulation.cxx:65
 AliSimulation.cxx:66
 AliSimulation.cxx:67
 AliSimulation.cxx:68
 AliSimulation.cxx:69
 AliSimulation.cxx:70
 AliSimulation.cxx:71
 AliSimulation.cxx:72
 AliSimulation.cxx:73
 AliSimulation.cxx:74
 AliSimulation.cxx:75
 AliSimulation.cxx:76
 AliSimulation.cxx:77
 AliSimulation.cxx:78
 AliSimulation.cxx:79
 AliSimulation.cxx:80
 AliSimulation.cxx:81
 AliSimulation.cxx:82
 AliSimulation.cxx:83
 AliSimulation.cxx:84
 AliSimulation.cxx:85
 AliSimulation.cxx:86
 AliSimulation.cxx:87
 AliSimulation.cxx:88
 AliSimulation.cxx:89
 AliSimulation.cxx:90
 AliSimulation.cxx:91
 AliSimulation.cxx:92
 AliSimulation.cxx:93
 AliSimulation.cxx:94
 AliSimulation.cxx:95
 AliSimulation.cxx:96
 AliSimulation.cxx:97
 AliSimulation.cxx:98
 AliSimulation.cxx:99
 AliSimulation.cxx:100
 AliSimulation.cxx:101
 AliSimulation.cxx:102
 AliSimulation.cxx:103
 AliSimulation.cxx:104
 AliSimulation.cxx:105
 AliSimulation.cxx:106
 AliSimulation.cxx:107
 AliSimulation.cxx:108
 AliSimulation.cxx:109
 AliSimulation.cxx:110
 AliSimulation.cxx:111
 AliSimulation.cxx:112
 AliSimulation.cxx:113
 AliSimulation.cxx:114
 AliSimulation.cxx:115
 AliSimulation.cxx:116
 AliSimulation.cxx:117
 AliSimulation.cxx:118
 AliSimulation.cxx:119
 AliSimulation.cxx:120
 AliSimulation.cxx:121
 AliSimulation.cxx:122
 AliSimulation.cxx:123
 AliSimulation.cxx:124
 AliSimulation.cxx:125
 AliSimulation.cxx:126
 AliSimulation.cxx:127
 AliSimulation.cxx:128
 AliSimulation.cxx:129
 AliSimulation.cxx:130
 AliSimulation.cxx:131
 AliSimulation.cxx:132
 AliSimulation.cxx:133
 AliSimulation.cxx:134
 AliSimulation.cxx:135
 AliSimulation.cxx:136
 AliSimulation.cxx:137
 AliSimulation.cxx:138
 AliSimulation.cxx:139
 AliSimulation.cxx:140
 AliSimulation.cxx:141
 AliSimulation.cxx:142
 AliSimulation.cxx:143
 AliSimulation.cxx:144
 AliSimulation.cxx:145
 AliSimulation.cxx:146
 AliSimulation.cxx:147
 AliSimulation.cxx:148
 AliSimulation.cxx:149
 AliSimulation.cxx:150
 AliSimulation.cxx:151
 AliSimulation.cxx:152
 AliSimulation.cxx:153
 AliSimulation.cxx:154
 AliSimulation.cxx:155
 AliSimulation.cxx:156
 AliSimulation.cxx:157
 AliSimulation.cxx:158
 AliSimulation.cxx:159
 AliSimulation.cxx:160
 AliSimulation.cxx:161
 AliSimulation.cxx:162
 AliSimulation.cxx:163
 AliSimulation.cxx:164
 AliSimulation.cxx:165
 AliSimulation.cxx:166
 AliSimulation.cxx:167
 AliSimulation.cxx:168
 AliSimulation.cxx:169
 AliSimulation.cxx:170
 AliSimulation.cxx:171
 AliSimulation.cxx:172
 AliSimulation.cxx:173
 AliSimulation.cxx:174
 AliSimulation.cxx:175
 AliSimulation.cxx:176
 AliSimulation.cxx:177
 AliSimulation.cxx:178
 AliSimulation.cxx:179
 AliSimulation.cxx:180
 AliSimulation.cxx:181
 AliSimulation.cxx:182
 AliSimulation.cxx:183
 AliSimulation.cxx:184
 AliSimulation.cxx:185
 AliSimulation.cxx:186
 AliSimulation.cxx:187
 AliSimulation.cxx:188
 AliSimulation.cxx:189
 AliSimulation.cxx:190
 AliSimulation.cxx:191
 AliSimulation.cxx:192
 AliSimulation.cxx:193
 AliSimulation.cxx:194
 AliSimulation.cxx:195
 AliSimulation.cxx:196
 AliSimulation.cxx:197
 AliSimulation.cxx:198
 AliSimulation.cxx:199
 AliSimulation.cxx:200
 AliSimulation.cxx:201
 AliSimulation.cxx:202
 AliSimulation.cxx:203
 AliSimulation.cxx:204
 AliSimulation.cxx:205
 AliSimulation.cxx:206
 AliSimulation.cxx:207
 AliSimulation.cxx:208
 AliSimulation.cxx:209
 AliSimulation.cxx:210
 AliSimulation.cxx:211
 AliSimulation.cxx:212
 AliSimulation.cxx:213
 AliSimulation.cxx:214
 AliSimulation.cxx:215
 AliSimulation.cxx:216
 AliSimulation.cxx:217
 AliSimulation.cxx:218
 AliSimulation.cxx:219
 AliSimulation.cxx:220
 AliSimulation.cxx:221
 AliSimulation.cxx:222
 AliSimulation.cxx:223
 AliSimulation.cxx:224
 AliSimulation.cxx:225
 AliSimulation.cxx:226
 AliSimulation.cxx:227
 AliSimulation.cxx:228
 AliSimulation.cxx:229
 AliSimulation.cxx:230
 AliSimulation.cxx:231
 AliSimulation.cxx:232
 AliSimulation.cxx:233
 AliSimulation.cxx:234
 AliSimulation.cxx:235
 AliSimulation.cxx:236
 AliSimulation.cxx:237
 AliSimulation.cxx:238
 AliSimulation.cxx:239
 AliSimulation.cxx:240
 AliSimulation.cxx:241
 AliSimulation.cxx:242
 AliSimulation.cxx:243
 AliSimulation.cxx:244
 AliSimulation.cxx:245
 AliSimulation.cxx:246
 AliSimulation.cxx:247
 AliSimulation.cxx:248
 AliSimulation.cxx:249
 AliSimulation.cxx:250
 AliSimulation.cxx:251
 AliSimulation.cxx:252
 AliSimulation.cxx:253
 AliSimulation.cxx:254
 AliSimulation.cxx:255
 AliSimulation.cxx:256
 AliSimulation.cxx:257
 AliSimulation.cxx:258
 AliSimulation.cxx:259
 AliSimulation.cxx:260
 AliSimulation.cxx:261
 AliSimulation.cxx:262
 AliSimulation.cxx:263
 AliSimulation.cxx:264
 AliSimulation.cxx:265
 AliSimulation.cxx:266
 AliSimulation.cxx:267
 AliSimulation.cxx:268
 AliSimulation.cxx:269
 AliSimulation.cxx:270
 AliSimulation.cxx:271
 AliSimulation.cxx:272
 AliSimulation.cxx:273
 AliSimulation.cxx:274
 AliSimulation.cxx:275
 AliSimulation.cxx:276
 AliSimulation.cxx:277
 AliSimulation.cxx:278
 AliSimulation.cxx:279
 AliSimulation.cxx:280
 AliSimulation.cxx:281
 AliSimulation.cxx:282
 AliSimulation.cxx:283
 AliSimulation.cxx:284
 AliSimulation.cxx:285
 AliSimulation.cxx:286
 AliSimulation.cxx:287
 AliSimulation.cxx:288
 AliSimulation.cxx:289
 AliSimulation.cxx:290
 AliSimulation.cxx:291
 AliSimulation.cxx:292
 AliSimulation.cxx:293
 AliSimulation.cxx:294
 AliSimulation.cxx:295
 AliSimulation.cxx:296
 AliSimulation.cxx:297
 AliSimulation.cxx:298
 AliSimulation.cxx:299
 AliSimulation.cxx:300
 AliSimulation.cxx:301
 AliSimulation.cxx:302
 AliSimulation.cxx:303
 AliSimulation.cxx:304
 AliSimulation.cxx:305
 AliSimulation.cxx:306
 AliSimulation.cxx:307
 AliSimulation.cxx:308
 AliSimulation.cxx:309
 AliSimulation.cxx:310
 AliSimulation.cxx:311
 AliSimulation.cxx:312
 AliSimulation.cxx:313
 AliSimulation.cxx:314
 AliSimulation.cxx:315
 AliSimulation.cxx:316
 AliSimulation.cxx:317
 AliSimulation.cxx:318
 AliSimulation.cxx:319
 AliSimulation.cxx:320
 AliSimulation.cxx:321
 AliSimulation.cxx:322
 AliSimulation.cxx:323
 AliSimulation.cxx:324
 AliSimulation.cxx:325
 AliSimulation.cxx:326
 AliSimulation.cxx:327
 AliSimulation.cxx:328
 AliSimulation.cxx:329
 AliSimulation.cxx:330
 AliSimulation.cxx:331
 AliSimulation.cxx:332
 AliSimulation.cxx:333
 AliSimulation.cxx:334
 AliSimulation.cxx:335
 AliSimulation.cxx:336
 AliSimulation.cxx:337
 AliSimulation.cxx:338
 AliSimulation.cxx:339
 AliSimulation.cxx:340
 AliSimulation.cxx:341
 AliSimulation.cxx:342
 AliSimulation.cxx:343
 AliSimulation.cxx:344
 AliSimulation.cxx:345
 AliSimulation.cxx:346
 AliSimulation.cxx:347
 AliSimulation.cxx:348
 AliSimulation.cxx:349
 AliSimulation.cxx:350
 AliSimulation.cxx:351
 AliSimulation.cxx:352
 AliSimulation.cxx:353
 AliSimulation.cxx:354
 AliSimulation.cxx:355
 AliSimulation.cxx:356
 AliSimulation.cxx:357
 AliSimulation.cxx:358
 AliSimulation.cxx:359
 AliSimulation.cxx:360
 AliSimulation.cxx:361
 AliSimulation.cxx:362
 AliSimulation.cxx:363
 AliSimulation.cxx:364
 AliSimulation.cxx:365
 AliSimulation.cxx:366
 AliSimulation.cxx:367
 AliSimulation.cxx:368
 AliSimulation.cxx:369
 AliSimulation.cxx:370
 AliSimulation.cxx:371
 AliSimulation.cxx:372
 AliSimulation.cxx:373
 AliSimulation.cxx:374
 AliSimulation.cxx:375
 AliSimulation.cxx:376
 AliSimulation.cxx:377
 AliSimulation.cxx:378
 AliSimulation.cxx:379
 AliSimulation.cxx:380
 AliSimulation.cxx:381
 AliSimulation.cxx:382
 AliSimulation.cxx:383
 AliSimulation.cxx:384
 AliSimulation.cxx:385
 AliSimulation.cxx:386
 AliSimulation.cxx:387
 AliSimulation.cxx:388
 AliSimulation.cxx:389
 AliSimulation.cxx:390
 AliSimulation.cxx:391
 AliSimulation.cxx:392
 AliSimulation.cxx:393
 AliSimulation.cxx:394
 AliSimulation.cxx:395
 AliSimulation.cxx:396
 AliSimulation.cxx:397
 AliSimulation.cxx:398
 AliSimulation.cxx:399
 AliSimulation.cxx:400
 AliSimulation.cxx:401
 AliSimulation.cxx:402
 AliSimulation.cxx:403
 AliSimulation.cxx:404
 AliSimulation.cxx:405
 AliSimulation.cxx:406
 AliSimulation.cxx:407
 AliSimulation.cxx:408
 AliSimulation.cxx:409
 AliSimulation.cxx:410
 AliSimulation.cxx:411
 AliSimulation.cxx:412
 AliSimulation.cxx:413
 AliSimulation.cxx:414
 AliSimulation.cxx:415
 AliSimulation.cxx:416
 AliSimulation.cxx:417
 AliSimulation.cxx:418
 AliSimulation.cxx:419
 AliSimulation.cxx:420
 AliSimulation.cxx:421
 AliSimulation.cxx:422
 AliSimulation.cxx:423
 AliSimulation.cxx:424
 AliSimulation.cxx:425
 AliSimulation.cxx:426
 AliSimulation.cxx:427
 AliSimulation.cxx:428
 AliSimulation.cxx:429
 AliSimulation.cxx:430
 AliSimulation.cxx:431
 AliSimulation.cxx:432
 AliSimulation.cxx:433
 AliSimulation.cxx:434
 AliSimulation.cxx:435
 AliSimulation.cxx:436
 AliSimulation.cxx:437
 AliSimulation.cxx:438
 AliSimulation.cxx:439
 AliSimulation.cxx:440
 AliSimulation.cxx:441
 AliSimulation.cxx:442
 AliSimulation.cxx:443
 AliSimulation.cxx:444
 AliSimulation.cxx:445
 AliSimulation.cxx:446
 AliSimulation.cxx:447
 AliSimulation.cxx:448
 AliSimulation.cxx:449
 AliSimulation.cxx:450
 AliSimulation.cxx:451
 AliSimulation.cxx:452
 AliSimulation.cxx:453
 AliSimulation.cxx:454
 AliSimulation.cxx:455
 AliSimulation.cxx:456
 AliSimulation.cxx:457
 AliSimulation.cxx:458
 AliSimulation.cxx:459
 AliSimulation.cxx:460
 AliSimulation.cxx:461
 AliSimulation.cxx:462
 AliSimulation.cxx:463
 AliSimulation.cxx:464
 AliSimulation.cxx:465
 AliSimulation.cxx:466
 AliSimulation.cxx:467
 AliSimulation.cxx:468
 AliSimulation.cxx:469
 AliSimulation.cxx:470
 AliSimulation.cxx:471
 AliSimulation.cxx:472
 AliSimulation.cxx:473
 AliSimulation.cxx:474
 AliSimulation.cxx:475
 AliSimulation.cxx:476
 AliSimulation.cxx:477
 AliSimulation.cxx:478
 AliSimulation.cxx:479
 AliSimulation.cxx:480
 AliSimulation.cxx:481
 AliSimulation.cxx:482
 AliSimulation.cxx:483
 AliSimulation.cxx:484
 AliSimulation.cxx:485
 AliSimulation.cxx:486
 AliSimulation.cxx:487
 AliSimulation.cxx:488
 AliSimulation.cxx:489
 AliSimulation.cxx:490
 AliSimulation.cxx:491
 AliSimulation.cxx:492
 AliSimulation.cxx:493
 AliSimulation.cxx:494
 AliSimulation.cxx:495
 AliSimulation.cxx:496
 AliSimulation.cxx:497
 AliSimulation.cxx:498
 AliSimulation.cxx:499
 AliSimulation.cxx:500
 AliSimulation.cxx:501
 AliSimulation.cxx:502
 AliSimulation.cxx:503
 AliSimulation.cxx:504
 AliSimulation.cxx:505
 AliSimulation.cxx:506
 AliSimulation.cxx:507
 AliSimulation.cxx:508
 AliSimulation.cxx:509
 AliSimulation.cxx:510
 AliSimulation.cxx:511
 AliSimulation.cxx:512
 AliSimulation.cxx:513
 AliSimulation.cxx:514
 AliSimulation.cxx:515
 AliSimulation.cxx:516
 AliSimulation.cxx:517
 AliSimulation.cxx:518
 AliSimulation.cxx:519
 AliSimulation.cxx:520
 AliSimulation.cxx:521
 AliSimulation.cxx:522
 AliSimulation.cxx:523
 AliSimulation.cxx:524
 AliSimulation.cxx:525
 AliSimulation.cxx:526
 AliSimulation.cxx:527
 AliSimulation.cxx:528
 AliSimulation.cxx:529
 AliSimulation.cxx:530
 AliSimulation.cxx:531
 AliSimulation.cxx:532
 AliSimulation.cxx:533
 AliSimulation.cxx:534
 AliSimulation.cxx:535
 AliSimulation.cxx:536
 AliSimulation.cxx:537
 AliSimulation.cxx:538
 AliSimulation.cxx:539
 AliSimulation.cxx:540
 AliSimulation.cxx:541
 AliSimulation.cxx:542
 AliSimulation.cxx:543
 AliSimulation.cxx:544
 AliSimulation.cxx:545
 AliSimulation.cxx:546
 AliSimulation.cxx:547
 AliSimulation.cxx:548
 AliSimulation.cxx:549
 AliSimulation.cxx:550
 AliSimulation.cxx:551
 AliSimulation.cxx:552
 AliSimulation.cxx:553
 AliSimulation.cxx:554
 AliSimulation.cxx:555
 AliSimulation.cxx:556
 AliSimulation.cxx:557
 AliSimulation.cxx:558
 AliSimulation.cxx:559
 AliSimulation.cxx:560
 AliSimulation.cxx:561
 AliSimulation.cxx:562
 AliSimulation.cxx:563
 AliSimulation.cxx:564
 AliSimulation.cxx:565
 AliSimulation.cxx:566
 AliSimulation.cxx:567
 AliSimulation.cxx:568
 AliSimulation.cxx:569
 AliSimulation.cxx:570
 AliSimulation.cxx:571
 AliSimulation.cxx:572
 AliSimulation.cxx:573
 AliSimulation.cxx:574
 AliSimulation.cxx:575
 AliSimulation.cxx:576
 AliSimulation.cxx:577
 AliSimulation.cxx:578
 AliSimulation.cxx:579
 AliSimulation.cxx:580
 AliSimulation.cxx:581
 AliSimulation.cxx:582
 AliSimulation.cxx:583
 AliSimulation.cxx:584
 AliSimulation.cxx:585
 AliSimulation.cxx:586
 AliSimulation.cxx:587
 AliSimulation.cxx:588
 AliSimulation.cxx:589
 AliSimulation.cxx:590
 AliSimulation.cxx:591
 AliSimulation.cxx:592
 AliSimulation.cxx:593
 AliSimulation.cxx:594
 AliSimulation.cxx:595
 AliSimulation.cxx:596
 AliSimulation.cxx:597
 AliSimulation.cxx:598
 AliSimulation.cxx:599
 AliSimulation.cxx:600
 AliSimulation.cxx:601
 AliSimulation.cxx:602
 AliSimulation.cxx:603
 AliSimulation.cxx:604
 AliSimulation.cxx:605
 AliSimulation.cxx:606
 AliSimulation.cxx:607
 AliSimulation.cxx:608
 AliSimulation.cxx:609
 AliSimulation.cxx:610
 AliSimulation.cxx:611
 AliSimulation.cxx:612
 AliSimulation.cxx:613
 AliSimulation.cxx:614
 AliSimulation.cxx:615
 AliSimulation.cxx:616
 AliSimulation.cxx:617
 AliSimulation.cxx:618
 AliSimulation.cxx:619
 AliSimulation.cxx:620
 AliSimulation.cxx:621
 AliSimulation.cxx:622
 AliSimulation.cxx:623
 AliSimulation.cxx:624
 AliSimulation.cxx:625
 AliSimulation.cxx:626
 AliSimulation.cxx:627
 AliSimulation.cxx:628
 AliSimulation.cxx:629
 AliSimulation.cxx:630
 AliSimulation.cxx:631
 AliSimulation.cxx:632
 AliSimulation.cxx:633
 AliSimulation.cxx:634
 AliSimulation.cxx:635
 AliSimulation.cxx:636
 AliSimulation.cxx:637
 AliSimulation.cxx:638
 AliSimulation.cxx:639
 AliSimulation.cxx:640
 AliSimulation.cxx:641
 AliSimulation.cxx:642
 AliSimulation.cxx:643
 AliSimulation.cxx:644
 AliSimulation.cxx:645
 AliSimulation.cxx:646
 AliSimulation.cxx:647
 AliSimulation.cxx:648
 AliSimulation.cxx:649
 AliSimulation.cxx:650
 AliSimulation.cxx:651
 AliSimulation.cxx:652
 AliSimulation.cxx:653
 AliSimulation.cxx:654
 AliSimulation.cxx:655
 AliSimulation.cxx:656
 AliSimulation.cxx:657
 AliSimulation.cxx:658
 AliSimulation.cxx:659
 AliSimulation.cxx:660
 AliSimulation.cxx:661
 AliSimulation.cxx:662
 AliSimulation.cxx:663
 AliSimulation.cxx:664
 AliSimulation.cxx:665
 AliSimulation.cxx:666
 AliSimulation.cxx:667
 AliSimulation.cxx:668
 AliSimulation.cxx:669
 AliSimulation.cxx:670
 AliSimulation.cxx:671
 AliSimulation.cxx:672
 AliSimulation.cxx:673
 AliSimulation.cxx:674
 AliSimulation.cxx:675
 AliSimulation.cxx:676
 AliSimulation.cxx:677
 AliSimulation.cxx:678
 AliSimulation.cxx:679
 AliSimulation.cxx:680
 AliSimulation.cxx:681
 AliSimulation.cxx:682
 AliSimulation.cxx:683
 AliSimulation.cxx:684
 AliSimulation.cxx:685
 AliSimulation.cxx:686
 AliSimulation.cxx:687
 AliSimulation.cxx:688
 AliSimulation.cxx:689
 AliSimulation.cxx:690
 AliSimulation.cxx:691
 AliSimulation.cxx:692
 AliSimulation.cxx:693
 AliSimulation.cxx:694
 AliSimulation.cxx:695
 AliSimulation.cxx:696
 AliSimulation.cxx:697
 AliSimulation.cxx:698
 AliSimulation.cxx:699
 AliSimulation.cxx:700
 AliSimulation.cxx:701
 AliSimulation.cxx:702
 AliSimulation.cxx:703
 AliSimulation.cxx:704
 AliSimulation.cxx:705
 AliSimulation.cxx:706
 AliSimulation.cxx:707
 AliSimulation.cxx:708
 AliSimulation.cxx:709
 AliSimulation.cxx:710
 AliSimulation.cxx:711
 AliSimulation.cxx:712
 AliSimulation.cxx:713
 AliSimulation.cxx:714
 AliSimulation.cxx:715
 AliSimulation.cxx:716
 AliSimulation.cxx:717
 AliSimulation.cxx:718
 AliSimulation.cxx:719
 AliSimulation.cxx:720
 AliSimulation.cxx:721
 AliSimulation.cxx:722
 AliSimulation.cxx:723
 AliSimulation.cxx:724
 AliSimulation.cxx:725
 AliSimulation.cxx:726
 AliSimulation.cxx:727
 AliSimulation.cxx:728
 AliSimulation.cxx:729
 AliSimulation.cxx:730
 AliSimulation.cxx:731
 AliSimulation.cxx:732
 AliSimulation.cxx:733
 AliSimulation.cxx:734
 AliSimulation.cxx:735
 AliSimulation.cxx:736
 AliSimulation.cxx:737
 AliSimulation.cxx:738
 AliSimulation.cxx:739
 AliSimulation.cxx:740
 AliSimulation.cxx:741
 AliSimulation.cxx:742
 AliSimulation.cxx:743
 AliSimulation.cxx:744
 AliSimulation.cxx:745
 AliSimulation.cxx:746
 AliSimulation.cxx:747
 AliSimulation.cxx:748
 AliSimulation.cxx:749
 AliSimulation.cxx:750
 AliSimulation.cxx:751
 AliSimulation.cxx:752
 AliSimulation.cxx:753
 AliSimulation.cxx:754
 AliSimulation.cxx:755
 AliSimulation.cxx:756
 AliSimulation.cxx:757
 AliSimulation.cxx:758
 AliSimulation.cxx:759
 AliSimulation.cxx:760
 AliSimulation.cxx:761
 AliSimulation.cxx:762
 AliSimulation.cxx:763
 AliSimulation.cxx:764
 AliSimulation.cxx:765
 AliSimulation.cxx:766
 AliSimulation.cxx:767
 AliSimulation.cxx:768
 AliSimulation.cxx:769
 AliSimulation.cxx:770
 AliSimulation.cxx:771
 AliSimulation.cxx:772
 AliSimulation.cxx:773
 AliSimulation.cxx:774
 AliSimulation.cxx:775
 AliSimulation.cxx:776
 AliSimulation.cxx:777
 AliSimulation.cxx:778
 AliSimulation.cxx:779
 AliSimulation.cxx:780
 AliSimulation.cxx:781
 AliSimulation.cxx:782
 AliSimulation.cxx:783
 AliSimulation.cxx:784
 AliSimulation.cxx:785
 AliSimulation.cxx:786
 AliSimulation.cxx:787
 AliSimulation.cxx:788
 AliSimulation.cxx:789
 AliSimulation.cxx:790
 AliSimulation.cxx:791
 AliSimulation.cxx:792
 AliSimulation.cxx:793
 AliSimulation.cxx:794
 AliSimulation.cxx:795
 AliSimulation.cxx:796
 AliSimulation.cxx:797
 AliSimulation.cxx:798
 AliSimulation.cxx:799
 AliSimulation.cxx:800
 AliSimulation.cxx:801
 AliSimulation.cxx:802
 AliSimulation.cxx:803
 AliSimulation.cxx:804
 AliSimulation.cxx:805
 AliSimulation.cxx:806
 AliSimulation.cxx:807
 AliSimulation.cxx:808
 AliSimulation.cxx:809
 AliSimulation.cxx:810
 AliSimulation.cxx:811
 AliSimulation.cxx:812
 AliSimulation.cxx:813
 AliSimulation.cxx:814
 AliSimulation.cxx:815
 AliSimulation.cxx:816
 AliSimulation.cxx:817
 AliSimulation.cxx:818
 AliSimulation.cxx:819
 AliSimulation.cxx:820
 AliSimulation.cxx:821
 AliSimulation.cxx:822
 AliSimulation.cxx:823
 AliSimulation.cxx:824
 AliSimulation.cxx:825
 AliSimulation.cxx:826
 AliSimulation.cxx:827
 AliSimulation.cxx:828
 AliSimulation.cxx:829
 AliSimulation.cxx:830
 AliSimulation.cxx:831
 AliSimulation.cxx:832
 AliSimulation.cxx:833
 AliSimulation.cxx:834
 AliSimulation.cxx:835
 AliSimulation.cxx:836
 AliSimulation.cxx:837
 AliSimulation.cxx:838
 AliSimulation.cxx:839
 AliSimulation.cxx:840
 AliSimulation.cxx:841
 AliSimulation.cxx:842
 AliSimulation.cxx:843
 AliSimulation.cxx:844
 AliSimulation.cxx:845
 AliSimulation.cxx:846
 AliSimulation.cxx:847
 AliSimulation.cxx:848
 AliSimulation.cxx:849
 AliSimulation.cxx:850
 AliSimulation.cxx:851
 AliSimulation.cxx:852
 AliSimulation.cxx:853
 AliSimulation.cxx:854
 AliSimulation.cxx:855
 AliSimulation.cxx:856
 AliSimulation.cxx:857
 AliSimulation.cxx:858
 AliSimulation.cxx:859
 AliSimulation.cxx:860
 AliSimulation.cxx:861
 AliSimulation.cxx:862
 AliSimulation.cxx:863
 AliSimulation.cxx:864
 AliSimulation.cxx:865
 AliSimulation.cxx:866
 AliSimulation.cxx:867
 AliSimulation.cxx:868
 AliSimulation.cxx:869
 AliSimulation.cxx:870
 AliSimulation.cxx:871
 AliSimulation.cxx:872
 AliSimulation.cxx:873
 AliSimulation.cxx:874
 AliSimulation.cxx:875
 AliSimulation.cxx:876
 AliSimulation.cxx:877
 AliSimulation.cxx:878
 AliSimulation.cxx:879
 AliSimulation.cxx:880
 AliSimulation.cxx:881
 AliSimulation.cxx:882
 AliSimulation.cxx:883
 AliSimulation.cxx:884
 AliSimulation.cxx:885
 AliSimulation.cxx:886
 AliSimulation.cxx:887
 AliSimulation.cxx:888
 AliSimulation.cxx:889
 AliSimulation.cxx:890
 AliSimulation.cxx:891
 AliSimulation.cxx:892
 AliSimulation.cxx:893
 AliSimulation.cxx:894
 AliSimulation.cxx:895
 AliSimulation.cxx:896
 AliSimulation.cxx:897
 AliSimulation.cxx:898
 AliSimulation.cxx:899
 AliSimulation.cxx:900
 AliSimulation.cxx:901
 AliSimulation.cxx:902
 AliSimulation.cxx:903
 AliSimulation.cxx:904
 AliSimulation.cxx:905
 AliSimulation.cxx:906
 AliSimulation.cxx:907
 AliSimulation.cxx:908
 AliSimulation.cxx:909
 AliSimulation.cxx:910
 AliSimulation.cxx:911
 AliSimulation.cxx:912
 AliSimulation.cxx:913
 AliSimulation.cxx:914
 AliSimulation.cxx:915
 AliSimulation.cxx:916
 AliSimulation.cxx:917
 AliSimulation.cxx:918
 AliSimulation.cxx:919
 AliSimulation.cxx:920
 AliSimulation.cxx:921
 AliSimulation.cxx:922
 AliSimulation.cxx:923
 AliSimulation.cxx:924
 AliSimulation.cxx:925
 AliSimulation.cxx:926
 AliSimulation.cxx:927
 AliSimulation.cxx:928
 AliSimulation.cxx:929
 AliSimulation.cxx:930
 AliSimulation.cxx:931
 AliSimulation.cxx:932
 AliSimulation.cxx:933
 AliSimulation.cxx:934
 AliSimulation.cxx:935
 AliSimulation.cxx:936
 AliSimulation.cxx:937
 AliSimulation.cxx:938
 AliSimulation.cxx:939
 AliSimulation.cxx:940
 AliSimulation.cxx:941
 AliSimulation.cxx:942
 AliSimulation.cxx:943
 AliSimulation.cxx:944
 AliSimulation.cxx:945
 AliSimulation.cxx:946
 AliSimulation.cxx:947
 AliSimulation.cxx:948
 AliSimulation.cxx:949
 AliSimulation.cxx:950
 AliSimulation.cxx:951
 AliSimulation.cxx:952
 AliSimulation.cxx:953
 AliSimulation.cxx:954
 AliSimulation.cxx:955
 AliSimulation.cxx:956
 AliSimulation.cxx:957
 AliSimulation.cxx:958
 AliSimulation.cxx:959
 AliSimulation.cxx:960
 AliSimulation.cxx:961
 AliSimulation.cxx:962
 AliSimulation.cxx:963
 AliSimulation.cxx:964
 AliSimulation.cxx:965
 AliSimulation.cxx:966
 AliSimulation.cxx:967
 AliSimulation.cxx:968
 AliSimulation.cxx:969
 AliSimulation.cxx:970
 AliSimulation.cxx:971
 AliSimulation.cxx:972
 AliSimulation.cxx:973
 AliSimulation.cxx:974
 AliSimulation.cxx:975
 AliSimulation.cxx:976
 AliSimulation.cxx:977
 AliSimulation.cxx:978
 AliSimulation.cxx:979
 AliSimulation.cxx:980
 AliSimulation.cxx:981
 AliSimulation.cxx:982
 AliSimulation.cxx:983
 AliSimulation.cxx:984
 AliSimulation.cxx:985
 AliSimulation.cxx:986
 AliSimulation.cxx:987
 AliSimulation.cxx:988
 AliSimulation.cxx:989
 AliSimulation.cxx:990
 AliSimulation.cxx:991
 AliSimulation.cxx:992
 AliSimulation.cxx:993
 AliSimulation.cxx:994
 AliSimulation.cxx:995
 AliSimulation.cxx:996
 AliSimulation.cxx:997
 AliSimulation.cxx:998
 AliSimulation.cxx:999
 AliSimulation.cxx:1000
 AliSimulation.cxx:1001
 AliSimulation.cxx:1002
 AliSimulation.cxx:1003
 AliSimulation.cxx:1004
 AliSimulation.cxx:1005
 AliSimulation.cxx:1006
 AliSimulation.cxx:1007
 AliSimulation.cxx:1008
 AliSimulation.cxx:1009
 AliSimulation.cxx:1010
 AliSimulation.cxx:1011
 AliSimulation.cxx:1012
 AliSimulation.cxx:1013
 AliSimulation.cxx:1014
 AliSimulation.cxx:1015
 AliSimulation.cxx:1016
 AliSimulation.cxx:1017
 AliSimulation.cxx:1018
 AliSimulation.cxx:1019
 AliSimulation.cxx:1020
 AliSimulation.cxx:1021
 AliSimulation.cxx:1022
 AliSimulation.cxx:1023
 AliSimulation.cxx:1024
 AliSimulation.cxx:1025
 AliSimulation.cxx:1026
 AliSimulation.cxx:1027
 AliSimulation.cxx:1028
 AliSimulation.cxx:1029
 AliSimulation.cxx:1030
 AliSimulation.cxx:1031
 AliSimulation.cxx:1032
 AliSimulation.cxx:1033
 AliSimulation.cxx:1034
 AliSimulation.cxx:1035
 AliSimulation.cxx:1036
 AliSimulation.cxx:1037
 AliSimulation.cxx:1038
 AliSimulation.cxx:1039
 AliSimulation.cxx:1040
 AliSimulation.cxx:1041
 AliSimulation.cxx:1042
 AliSimulation.cxx:1043
 AliSimulation.cxx:1044
 AliSimulation.cxx:1045
 AliSimulation.cxx:1046
 AliSimulation.cxx:1047
 AliSimulation.cxx:1048
 AliSimulation.cxx:1049
 AliSimulation.cxx:1050
 AliSimulation.cxx:1051
 AliSimulation.cxx:1052
 AliSimulation.cxx:1053
 AliSimulation.cxx:1054
 AliSimulation.cxx:1055
 AliSimulation.cxx:1056
 AliSimulation.cxx:1057
 AliSimulation.cxx:1058
 AliSimulation.cxx:1059
 AliSimulation.cxx:1060
 AliSimulation.cxx:1061
 AliSimulation.cxx:1062
 AliSimulation.cxx:1063
 AliSimulation.cxx:1064
 AliSimulation.cxx:1065
 AliSimulation.cxx:1066
 AliSimulation.cxx:1067
 AliSimulation.cxx:1068
 AliSimulation.cxx:1069
 AliSimulation.cxx:1070
 AliSimulation.cxx:1071
 AliSimulation.cxx:1072
 AliSimulation.cxx:1073
 AliSimulation.cxx:1074
 AliSimulation.cxx:1075
 AliSimulation.cxx:1076
 AliSimulation.cxx:1077
 AliSimulation.cxx:1078
 AliSimulation.cxx:1079
 AliSimulation.cxx:1080
 AliSimulation.cxx:1081
 AliSimulation.cxx:1082
 AliSimulation.cxx:1083
 AliSimulation.cxx:1084
 AliSimulation.cxx:1085
 AliSimulation.cxx:1086
 AliSimulation.cxx:1087
 AliSimulation.cxx:1088
 AliSimulation.cxx:1089
 AliSimulation.cxx:1090
 AliSimulation.cxx:1091
 AliSimulation.cxx:1092
 AliSimulation.cxx:1093
 AliSimulation.cxx:1094
 AliSimulation.cxx:1095
 AliSimulation.cxx:1096
 AliSimulation.cxx:1097
 AliSimulation.cxx:1098
 AliSimulation.cxx:1099
 AliSimulation.cxx:1100
 AliSimulation.cxx:1101
 AliSimulation.cxx:1102
 AliSimulation.cxx:1103
 AliSimulation.cxx:1104
 AliSimulation.cxx:1105
 AliSimulation.cxx:1106
 AliSimulation.cxx:1107
 AliSimulation.cxx:1108
 AliSimulation.cxx:1109
 AliSimulation.cxx:1110
 AliSimulation.cxx:1111
 AliSimulation.cxx:1112
 AliSimulation.cxx:1113
 AliSimulation.cxx:1114
 AliSimulation.cxx:1115
 AliSimulation.cxx:1116
 AliSimulation.cxx:1117
 AliSimulation.cxx:1118
 AliSimulation.cxx:1119
 AliSimulation.cxx:1120
 AliSimulation.cxx:1121
 AliSimulation.cxx:1122
 AliSimulation.cxx:1123
 AliSimulation.cxx:1124
 AliSimulation.cxx:1125
 AliSimulation.cxx:1126
 AliSimulation.cxx:1127
 AliSimulation.cxx:1128
 AliSimulation.cxx:1129
 AliSimulation.cxx:1130
 AliSimulation.cxx:1131
 AliSimulation.cxx:1132
 AliSimulation.cxx:1133
 AliSimulation.cxx:1134
 AliSimulation.cxx:1135
 AliSimulation.cxx:1136
 AliSimulation.cxx:1137
 AliSimulation.cxx:1138
 AliSimulation.cxx:1139
 AliSimulation.cxx:1140
 AliSimulation.cxx:1141
 AliSimulation.cxx:1142
 AliSimulation.cxx:1143
 AliSimulation.cxx:1144
 AliSimulation.cxx:1145
 AliSimulation.cxx:1146
 AliSimulation.cxx:1147
 AliSimulation.cxx:1148
 AliSimulation.cxx:1149
 AliSimulation.cxx:1150
 AliSimulation.cxx:1151
 AliSimulation.cxx:1152
 AliSimulation.cxx:1153
 AliSimulation.cxx:1154
 AliSimulation.cxx:1155
 AliSimulation.cxx:1156
 AliSimulation.cxx:1157
 AliSimulation.cxx:1158
 AliSimulation.cxx:1159
 AliSimulation.cxx:1160
 AliSimulation.cxx:1161
 AliSimulation.cxx:1162
 AliSimulation.cxx:1163
 AliSimulation.cxx:1164
 AliSimulation.cxx:1165
 AliSimulation.cxx:1166
 AliSimulation.cxx:1167
 AliSimulation.cxx:1168
 AliSimulation.cxx:1169
 AliSimulation.cxx:1170
 AliSimulation.cxx:1171
 AliSimulation.cxx:1172
 AliSimulation.cxx:1173
 AliSimulation.cxx:1174
 AliSimulation.cxx:1175
 AliSimulation.cxx:1176
 AliSimulation.cxx:1177
 AliSimulation.cxx:1178
 AliSimulation.cxx:1179
 AliSimulation.cxx:1180
 AliSimulation.cxx:1181
 AliSimulation.cxx:1182
 AliSimulation.cxx:1183
 AliSimulation.cxx:1184
 AliSimulation.cxx:1185
 AliSimulation.cxx:1186
 AliSimulation.cxx:1187
 AliSimulation.cxx:1188
 AliSimulation.cxx:1189
 AliSimulation.cxx:1190
 AliSimulation.cxx:1191
 AliSimulation.cxx:1192
 AliSimulation.cxx:1193
 AliSimulation.cxx:1194
 AliSimulation.cxx:1195
 AliSimulation.cxx:1196
 AliSimulation.cxx:1197
 AliSimulation.cxx:1198
 AliSimulation.cxx:1199
 AliSimulation.cxx:1200
 AliSimulation.cxx:1201
 AliSimulation.cxx:1202
 AliSimulation.cxx:1203
 AliSimulation.cxx:1204
 AliSimulation.cxx:1205
 AliSimulation.cxx:1206
 AliSimulation.cxx:1207
 AliSimulation.cxx:1208
 AliSimulation.cxx:1209
 AliSimulation.cxx:1210
 AliSimulation.cxx:1211
 AliSimulation.cxx:1212
 AliSimulation.cxx:1213
 AliSimulation.cxx:1214
 AliSimulation.cxx:1215
 AliSimulation.cxx:1216
 AliSimulation.cxx:1217
 AliSimulation.cxx:1218
 AliSimulation.cxx:1219
 AliSimulation.cxx:1220
 AliSimulation.cxx:1221
 AliSimulation.cxx:1222
 AliSimulation.cxx:1223
 AliSimulation.cxx:1224
 AliSimulation.cxx:1225
 AliSimulation.cxx:1226
 AliSimulation.cxx:1227
 AliSimulation.cxx:1228
 AliSimulation.cxx:1229
 AliSimulation.cxx:1230
 AliSimulation.cxx:1231
 AliSimulation.cxx:1232
 AliSimulation.cxx:1233
 AliSimulation.cxx:1234
 AliSimulation.cxx:1235
 AliSimulation.cxx:1236
 AliSimulation.cxx:1237
 AliSimulation.cxx:1238
 AliSimulation.cxx:1239
 AliSimulation.cxx:1240
 AliSimulation.cxx:1241
 AliSimulation.cxx:1242
 AliSimulation.cxx:1243
 AliSimulation.cxx:1244
 AliSimulation.cxx:1245
 AliSimulation.cxx:1246
 AliSimulation.cxx:1247
 AliSimulation.cxx:1248
 AliSimulation.cxx:1249
 AliSimulation.cxx:1250
 AliSimulation.cxx:1251
 AliSimulation.cxx:1252
 AliSimulation.cxx:1253
 AliSimulation.cxx:1254
 AliSimulation.cxx:1255
 AliSimulation.cxx:1256
 AliSimulation.cxx:1257
 AliSimulation.cxx:1258
 AliSimulation.cxx:1259
 AliSimulation.cxx:1260
 AliSimulation.cxx:1261
 AliSimulation.cxx:1262
 AliSimulation.cxx:1263
 AliSimulation.cxx:1264
 AliSimulation.cxx:1265
 AliSimulation.cxx:1266
 AliSimulation.cxx:1267
 AliSimulation.cxx:1268
 AliSimulation.cxx:1269
 AliSimulation.cxx:1270
 AliSimulation.cxx:1271
 AliSimulation.cxx:1272
 AliSimulation.cxx:1273
 AliSimulation.cxx:1274
 AliSimulation.cxx:1275
 AliSimulation.cxx:1276
 AliSimulation.cxx:1277
 AliSimulation.cxx:1278
 AliSimulation.cxx:1279
 AliSimulation.cxx:1280
 AliSimulation.cxx:1281
 AliSimulation.cxx:1282
 AliSimulation.cxx:1283
 AliSimulation.cxx:1284
 AliSimulation.cxx:1285
 AliSimulation.cxx:1286
 AliSimulation.cxx:1287
 AliSimulation.cxx:1288
 AliSimulation.cxx:1289
 AliSimulation.cxx:1290
 AliSimulation.cxx:1291
 AliSimulation.cxx:1292
 AliSimulation.cxx:1293
 AliSimulation.cxx:1294
 AliSimulation.cxx:1295
 AliSimulation.cxx:1296
 AliSimulation.cxx:1297
 AliSimulation.cxx:1298
 AliSimulation.cxx:1299
 AliSimulation.cxx:1300
 AliSimulation.cxx:1301
 AliSimulation.cxx:1302
 AliSimulation.cxx:1303
 AliSimulation.cxx:1304
 AliSimulation.cxx:1305
 AliSimulation.cxx:1306
 AliSimulation.cxx:1307
 AliSimulation.cxx:1308
 AliSimulation.cxx:1309
 AliSimulation.cxx:1310
 AliSimulation.cxx:1311
 AliSimulation.cxx:1312
 AliSimulation.cxx:1313
 AliSimulation.cxx:1314
 AliSimulation.cxx:1315
 AliSimulation.cxx:1316
 AliSimulation.cxx:1317
 AliSimulation.cxx:1318
 AliSimulation.cxx:1319
 AliSimulation.cxx:1320
 AliSimulation.cxx:1321
 AliSimulation.cxx:1322
 AliSimulation.cxx:1323
 AliSimulation.cxx:1324
 AliSimulation.cxx:1325
 AliSimulation.cxx:1326
 AliSimulation.cxx:1327
 AliSimulation.cxx:1328
 AliSimulation.cxx:1329
 AliSimulation.cxx:1330
 AliSimulation.cxx:1331
 AliSimulation.cxx:1332
 AliSimulation.cxx:1333
 AliSimulation.cxx:1334
 AliSimulation.cxx:1335
 AliSimulation.cxx:1336
 AliSimulation.cxx:1337
 AliSimulation.cxx:1338
 AliSimulation.cxx:1339
 AliSimulation.cxx:1340
 AliSimulation.cxx:1341
 AliSimulation.cxx:1342
 AliSimulation.cxx:1343
 AliSimulation.cxx:1344
 AliSimulation.cxx:1345
 AliSimulation.cxx:1346
 AliSimulation.cxx:1347
 AliSimulation.cxx:1348
 AliSimulation.cxx:1349
 AliSimulation.cxx:1350
 AliSimulation.cxx:1351
 AliSimulation.cxx:1352
 AliSimulation.cxx:1353
 AliSimulation.cxx:1354
 AliSimulation.cxx:1355
 AliSimulation.cxx:1356
 AliSimulation.cxx:1357
 AliSimulation.cxx:1358
 AliSimulation.cxx:1359
 AliSimulation.cxx:1360
 AliSimulation.cxx:1361
 AliSimulation.cxx:1362
 AliSimulation.cxx:1363
 AliSimulation.cxx:1364
 AliSimulation.cxx:1365
 AliSimulation.cxx:1366
 AliSimulation.cxx:1367
 AliSimulation.cxx:1368
 AliSimulation.cxx:1369
 AliSimulation.cxx:1370
 AliSimulation.cxx:1371
 AliSimulation.cxx:1372
 AliSimulation.cxx:1373
 AliSimulation.cxx:1374
 AliSimulation.cxx:1375
 AliSimulation.cxx:1376
 AliSimulation.cxx:1377
 AliSimulation.cxx:1378
 AliSimulation.cxx:1379
 AliSimulation.cxx:1380
 AliSimulation.cxx:1381
 AliSimulation.cxx:1382
 AliSimulation.cxx:1383
 AliSimulation.cxx:1384
 AliSimulation.cxx:1385
 AliSimulation.cxx:1386
 AliSimulation.cxx:1387
 AliSimulation.cxx:1388
 AliSimulation.cxx:1389
 AliSimulation.cxx:1390
 AliSimulation.cxx:1391
 AliSimulation.cxx:1392
 AliSimulation.cxx:1393
 AliSimulation.cxx:1394
 AliSimulation.cxx:1395
 AliSimulation.cxx:1396
 AliSimulation.cxx:1397
 AliSimulation.cxx:1398
 AliSimulation.cxx:1399
 AliSimulation.cxx:1400
 AliSimulation.cxx:1401
 AliSimulation.cxx:1402
 AliSimulation.cxx:1403
 AliSimulation.cxx:1404
 AliSimulation.cxx:1405
 AliSimulation.cxx:1406
 AliSimulation.cxx:1407
 AliSimulation.cxx:1408
 AliSimulation.cxx:1409
 AliSimulation.cxx:1410
 AliSimulation.cxx:1411
 AliSimulation.cxx:1412
 AliSimulation.cxx:1413
 AliSimulation.cxx:1414
 AliSimulation.cxx:1415
 AliSimulation.cxx:1416
 AliSimulation.cxx:1417
 AliSimulation.cxx:1418
 AliSimulation.cxx:1419
 AliSimulation.cxx:1420
 AliSimulation.cxx:1421
 AliSimulation.cxx:1422
 AliSimulation.cxx:1423
 AliSimulation.cxx:1424
 AliSimulation.cxx:1425
 AliSimulation.cxx:1426
 AliSimulation.cxx:1427
 AliSimulation.cxx:1428
 AliSimulation.cxx:1429
 AliSimulation.cxx:1430
 AliSimulation.cxx:1431
 AliSimulation.cxx:1432
 AliSimulation.cxx:1433
 AliSimulation.cxx:1434
 AliSimulation.cxx:1435
 AliSimulation.cxx:1436
 AliSimulation.cxx:1437
 AliSimulation.cxx:1438
 AliSimulation.cxx:1439
 AliSimulation.cxx:1440
 AliSimulation.cxx:1441
 AliSimulation.cxx:1442
 AliSimulation.cxx:1443
 AliSimulation.cxx:1444
 AliSimulation.cxx:1445
 AliSimulation.cxx:1446
 AliSimulation.cxx:1447
 AliSimulation.cxx:1448
 AliSimulation.cxx:1449
 AliSimulation.cxx:1450
 AliSimulation.cxx:1451
 AliSimulation.cxx:1452
 AliSimulation.cxx:1453
 AliSimulation.cxx:1454
 AliSimulation.cxx:1455
 AliSimulation.cxx:1456
 AliSimulation.cxx:1457
 AliSimulation.cxx:1458
 AliSimulation.cxx:1459
 AliSimulation.cxx:1460
 AliSimulation.cxx:1461
 AliSimulation.cxx:1462
 AliSimulation.cxx:1463
 AliSimulation.cxx:1464
 AliSimulation.cxx:1465
 AliSimulation.cxx:1466
 AliSimulation.cxx:1467
 AliSimulation.cxx:1468
 AliSimulation.cxx:1469
 AliSimulation.cxx:1470
 AliSimulation.cxx:1471
 AliSimulation.cxx:1472
 AliSimulation.cxx:1473
 AliSimulation.cxx:1474
 AliSimulation.cxx:1475
 AliSimulation.cxx:1476
 AliSimulation.cxx:1477
 AliSimulation.cxx:1478
 AliSimulation.cxx:1479
 AliSimulation.cxx:1480
 AliSimulation.cxx:1481
 AliSimulation.cxx:1482
 AliSimulation.cxx:1483
 AliSimulation.cxx:1484
 AliSimulation.cxx:1485
 AliSimulation.cxx:1486
 AliSimulation.cxx:1487
 AliSimulation.cxx:1488
 AliSimulation.cxx:1489
 AliSimulation.cxx:1490
 AliSimulation.cxx:1491
 AliSimulation.cxx:1492
 AliSimulation.cxx:1493
 AliSimulation.cxx:1494
 AliSimulation.cxx:1495
 AliSimulation.cxx:1496
 AliSimulation.cxx:1497
 AliSimulation.cxx:1498
 AliSimulation.cxx:1499
 AliSimulation.cxx:1500
 AliSimulation.cxx:1501
 AliSimulation.cxx:1502
 AliSimulation.cxx:1503
 AliSimulation.cxx:1504
 AliSimulation.cxx:1505
 AliSimulation.cxx:1506
 AliSimulation.cxx:1507
 AliSimulation.cxx:1508
 AliSimulation.cxx:1509
 AliSimulation.cxx:1510
 AliSimulation.cxx:1511
 AliSimulation.cxx:1512
 AliSimulation.cxx:1513
 AliSimulation.cxx:1514
 AliSimulation.cxx:1515
 AliSimulation.cxx:1516
 AliSimulation.cxx:1517
 AliSimulation.cxx:1518
 AliSimulation.cxx:1519
 AliSimulation.cxx:1520
 AliSimulation.cxx:1521
 AliSimulation.cxx:1522
 AliSimulation.cxx:1523
 AliSimulation.cxx:1524
 AliSimulation.cxx:1525
 AliSimulation.cxx:1526
 AliSimulation.cxx:1527
 AliSimulation.cxx:1528
 AliSimulation.cxx:1529
 AliSimulation.cxx:1530
 AliSimulation.cxx:1531
 AliSimulation.cxx:1532
 AliSimulation.cxx:1533
 AliSimulation.cxx:1534
 AliSimulation.cxx:1535
 AliSimulation.cxx:1536
 AliSimulation.cxx:1537
 AliSimulation.cxx:1538
 AliSimulation.cxx:1539
 AliSimulation.cxx:1540
 AliSimulation.cxx:1541
 AliSimulation.cxx:1542
 AliSimulation.cxx:1543
 AliSimulation.cxx:1544
 AliSimulation.cxx:1545
 AliSimulation.cxx:1546
 AliSimulation.cxx:1547
 AliSimulation.cxx:1548
 AliSimulation.cxx:1549
 AliSimulation.cxx:1550
 AliSimulation.cxx:1551
 AliSimulation.cxx:1552
 AliSimulation.cxx:1553
 AliSimulation.cxx:1554
 AliSimulation.cxx:1555
 AliSimulation.cxx:1556
 AliSimulation.cxx:1557
 AliSimulation.cxx:1558
 AliSimulation.cxx:1559
 AliSimulation.cxx:1560
 AliSimulation.cxx:1561
 AliSimulation.cxx:1562
 AliSimulation.cxx:1563
 AliSimulation.cxx:1564
 AliSimulation.cxx:1565
 AliSimulation.cxx:1566
 AliSimulation.cxx:1567
 AliSimulation.cxx:1568
 AliSimulation.cxx:1569
 AliSimulation.cxx:1570
 AliSimulation.cxx:1571
 AliSimulation.cxx:1572
 AliSimulation.cxx:1573
 AliSimulation.cxx:1574
 AliSimulation.cxx:1575
 AliSimulation.cxx:1576
 AliSimulation.cxx:1577
 AliSimulation.cxx:1578
 AliSimulation.cxx:1579
 AliSimulation.cxx:1580
 AliSimulation.cxx:1581
 AliSimulation.cxx:1582
 AliSimulation.cxx:1583
 AliSimulation.cxx:1584
 AliSimulation.cxx:1585
 AliSimulation.cxx:1586
 AliSimulation.cxx:1587
 AliSimulation.cxx:1588
 AliSimulation.cxx:1589
 AliSimulation.cxx:1590
 AliSimulation.cxx:1591
 AliSimulation.cxx:1592
 AliSimulation.cxx:1593
 AliSimulation.cxx:1594
 AliSimulation.cxx:1595
 AliSimulation.cxx:1596
 AliSimulation.cxx:1597
 AliSimulation.cxx:1598
 AliSimulation.cxx:1599
 AliSimulation.cxx:1600
 AliSimulation.cxx:1601
 AliSimulation.cxx:1602
 AliSimulation.cxx:1603
 AliSimulation.cxx:1604
 AliSimulation.cxx:1605
 AliSimulation.cxx:1606
 AliSimulation.cxx:1607
 AliSimulation.cxx:1608
 AliSimulation.cxx:1609
 AliSimulation.cxx:1610
 AliSimulation.cxx:1611
 AliSimulation.cxx:1612
 AliSimulation.cxx:1613
 AliSimulation.cxx:1614
 AliSimulation.cxx:1615
 AliSimulation.cxx:1616
 AliSimulation.cxx:1617
 AliSimulation.cxx:1618
 AliSimulation.cxx:1619
 AliSimulation.cxx:1620
 AliSimulation.cxx:1621
 AliSimulation.cxx:1622
 AliSimulation.cxx:1623
 AliSimulation.cxx:1624
 AliSimulation.cxx:1625
 AliSimulation.cxx:1626
 AliSimulation.cxx:1627
 AliSimulation.cxx:1628
 AliSimulation.cxx:1629
 AliSimulation.cxx:1630
 AliSimulation.cxx:1631
 AliSimulation.cxx:1632
 AliSimulation.cxx:1633
 AliSimulation.cxx:1634
 AliSimulation.cxx:1635
 AliSimulation.cxx:1636
 AliSimulation.cxx:1637
 AliSimulation.cxx:1638
 AliSimulation.cxx:1639
 AliSimulation.cxx:1640
 AliSimulation.cxx:1641
 AliSimulation.cxx:1642
 AliSimulation.cxx:1643
 AliSimulation.cxx:1644
 AliSimulation.cxx:1645
 AliSimulation.cxx:1646
 AliSimulation.cxx:1647
 AliSimulation.cxx:1648
 AliSimulation.cxx:1649
 AliSimulation.cxx:1650
 AliSimulation.cxx:1651
 AliSimulation.cxx:1652
 AliSimulation.cxx:1653
 AliSimulation.cxx:1654
 AliSimulation.cxx:1655
 AliSimulation.cxx:1656
 AliSimulation.cxx:1657
 AliSimulation.cxx:1658
 AliSimulation.cxx:1659
 AliSimulation.cxx:1660
 AliSimulation.cxx:1661
 AliSimulation.cxx:1662
 AliSimulation.cxx:1663
 AliSimulation.cxx:1664
 AliSimulation.cxx:1665
 AliSimulation.cxx:1666
 AliSimulation.cxx:1667
 AliSimulation.cxx:1668
 AliSimulation.cxx:1669
 AliSimulation.cxx:1670
 AliSimulation.cxx:1671
 AliSimulation.cxx:1672
 AliSimulation.cxx:1673
 AliSimulation.cxx:1674
 AliSimulation.cxx:1675
 AliSimulation.cxx:1676
 AliSimulation.cxx:1677
 AliSimulation.cxx:1678
 AliSimulation.cxx:1679
 AliSimulation.cxx:1680
 AliSimulation.cxx:1681
 AliSimulation.cxx:1682
 AliSimulation.cxx:1683
 AliSimulation.cxx:1684
 AliSimulation.cxx:1685
 AliSimulation.cxx:1686
 AliSimulation.cxx:1687
 AliSimulation.cxx:1688
 AliSimulation.cxx:1689
 AliSimulation.cxx:1690
 AliSimulation.cxx:1691
 AliSimulation.cxx:1692
 AliSimulation.cxx:1693
 AliSimulation.cxx:1694
 AliSimulation.cxx:1695
 AliSimulation.cxx:1696
 AliSimulation.cxx:1697
 AliSimulation.cxx:1698
 AliSimulation.cxx:1699
 AliSimulation.cxx:1700
 AliSimulation.cxx:1701
 AliSimulation.cxx:1702
 AliSimulation.cxx:1703
 AliSimulation.cxx:1704
 AliSimulation.cxx:1705
 AliSimulation.cxx:1706
 AliSimulation.cxx:1707
 AliSimulation.cxx:1708
 AliSimulation.cxx:1709
 AliSimulation.cxx:1710
 AliSimulation.cxx:1711
 AliSimulation.cxx:1712
 AliSimulation.cxx:1713
 AliSimulation.cxx:1714
 AliSimulation.cxx:1715
 AliSimulation.cxx:1716
 AliSimulation.cxx:1717
 AliSimulation.cxx:1718
 AliSimulation.cxx:1719
 AliSimulation.cxx:1720
 AliSimulation.cxx:1721
 AliSimulation.cxx:1722
 AliSimulation.cxx:1723
 AliSimulation.cxx:1724
 AliSimulation.cxx:1725
 AliSimulation.cxx:1726
 AliSimulation.cxx:1727
 AliSimulation.cxx:1728
 AliSimulation.cxx:1729
 AliSimulation.cxx:1730
 AliSimulation.cxx:1731
 AliSimulation.cxx:1732
 AliSimulation.cxx:1733
 AliSimulation.cxx:1734
 AliSimulation.cxx:1735
 AliSimulation.cxx:1736
 AliSimulation.cxx:1737
 AliSimulation.cxx:1738
 AliSimulation.cxx:1739
 AliSimulation.cxx:1740
 AliSimulation.cxx:1741
 AliSimulation.cxx:1742
 AliSimulation.cxx:1743
 AliSimulation.cxx:1744
 AliSimulation.cxx:1745
 AliSimulation.cxx:1746
 AliSimulation.cxx:1747
 AliSimulation.cxx:1748
 AliSimulation.cxx:1749
 AliSimulation.cxx:1750
 AliSimulation.cxx:1751
 AliSimulation.cxx:1752
 AliSimulation.cxx:1753
 AliSimulation.cxx:1754
 AliSimulation.cxx:1755
 AliSimulation.cxx:1756
 AliSimulation.cxx:1757
 AliSimulation.cxx:1758
 AliSimulation.cxx:1759
 AliSimulation.cxx:1760
 AliSimulation.cxx:1761
 AliSimulation.cxx:1762
 AliSimulation.cxx:1763
 AliSimulation.cxx:1764
 AliSimulation.cxx:1765
 AliSimulation.cxx:1766
 AliSimulation.cxx:1767
 AliSimulation.cxx:1768
 AliSimulation.cxx:1769
 AliSimulation.cxx:1770
 AliSimulation.cxx:1771
 AliSimulation.cxx:1772
 AliSimulation.cxx:1773
 AliSimulation.cxx:1774
 AliSimulation.cxx:1775
 AliSimulation.cxx:1776
 AliSimulation.cxx:1777
 AliSimulation.cxx:1778
 AliSimulation.cxx:1779
 AliSimulation.cxx:1780
 AliSimulation.cxx:1781
 AliSimulation.cxx:1782
 AliSimulation.cxx:1783
 AliSimulation.cxx:1784
 AliSimulation.cxx:1785
 AliSimulation.cxx:1786
 AliSimulation.cxx:1787
 AliSimulation.cxx:1788
 AliSimulation.cxx:1789
 AliSimulation.cxx:1790
 AliSimulation.cxx:1791
 AliSimulation.cxx:1792
 AliSimulation.cxx:1793
 AliSimulation.cxx:1794
 AliSimulation.cxx:1795
 AliSimulation.cxx:1796
 AliSimulation.cxx:1797
 AliSimulation.cxx:1798
 AliSimulation.cxx:1799
 AliSimulation.cxx:1800
 AliSimulation.cxx:1801
 AliSimulation.cxx:1802
 AliSimulation.cxx:1803
 AliSimulation.cxx:1804
 AliSimulation.cxx:1805
 AliSimulation.cxx:1806
 AliSimulation.cxx:1807
 AliSimulation.cxx:1808
 AliSimulation.cxx:1809
 AliSimulation.cxx:1810
 AliSimulation.cxx:1811
 AliSimulation.cxx:1812
 AliSimulation.cxx:1813
 AliSimulation.cxx:1814
 AliSimulation.cxx:1815
 AliSimulation.cxx:1816
 AliSimulation.cxx:1817
 AliSimulation.cxx:1818
 AliSimulation.cxx:1819
 AliSimulation.cxx:1820
 AliSimulation.cxx:1821
 AliSimulation.cxx:1822
 AliSimulation.cxx:1823
 AliSimulation.cxx:1824
 AliSimulation.cxx:1825
 AliSimulation.cxx:1826
 AliSimulation.cxx:1827
 AliSimulation.cxx:1828
 AliSimulation.cxx:1829
 AliSimulation.cxx:1830
 AliSimulation.cxx:1831
 AliSimulation.cxx:1832
 AliSimulation.cxx:1833
 AliSimulation.cxx:1834
 AliSimulation.cxx:1835
 AliSimulation.cxx:1836
 AliSimulation.cxx:1837
 AliSimulation.cxx:1838
 AliSimulation.cxx:1839
 AliSimulation.cxx:1840
 AliSimulation.cxx:1841
 AliSimulation.cxx:1842
 AliSimulation.cxx:1843
 AliSimulation.cxx:1844
 AliSimulation.cxx:1845
 AliSimulation.cxx:1846
 AliSimulation.cxx:1847
 AliSimulation.cxx:1848
 AliSimulation.cxx:1849
 AliSimulation.cxx:1850
 AliSimulation.cxx:1851
 AliSimulation.cxx:1852
 AliSimulation.cxx:1853
 AliSimulation.cxx:1854
 AliSimulation.cxx:1855
 AliSimulation.cxx:1856
 AliSimulation.cxx:1857
 AliSimulation.cxx:1858
 AliSimulation.cxx:1859
 AliSimulation.cxx:1860
 AliSimulation.cxx:1861
 AliSimulation.cxx:1862
 AliSimulation.cxx:1863
 AliSimulation.cxx:1864
 AliSimulation.cxx:1865
 AliSimulation.cxx:1866
 AliSimulation.cxx:1867
 AliSimulation.cxx:1868
 AliSimulation.cxx:1869
 AliSimulation.cxx:1870
 AliSimulation.cxx:1871
 AliSimulation.cxx:1872
 AliSimulation.cxx:1873
 AliSimulation.cxx:1874
 AliSimulation.cxx:1875
 AliSimulation.cxx:1876
 AliSimulation.cxx:1877
 AliSimulation.cxx:1878
 AliSimulation.cxx:1879
 AliSimulation.cxx:1880
 AliSimulation.cxx:1881
 AliSimulation.cxx:1882
 AliSimulation.cxx:1883
 AliSimulation.cxx:1884
 AliSimulation.cxx:1885
 AliSimulation.cxx:1886
 AliSimulation.cxx:1887
 AliSimulation.cxx:1888
 AliSimulation.cxx:1889
 AliSimulation.cxx:1890
 AliSimulation.cxx:1891
 AliSimulation.cxx:1892
 AliSimulation.cxx:1893
 AliSimulation.cxx:1894
 AliSimulation.cxx:1895
 AliSimulation.cxx:1896
 AliSimulation.cxx:1897
 AliSimulation.cxx:1898
 AliSimulation.cxx:1899
 AliSimulation.cxx:1900
 AliSimulation.cxx:1901
 AliSimulation.cxx:1902
 AliSimulation.cxx:1903
 AliSimulation.cxx:1904
 AliSimulation.cxx:1905
 AliSimulation.cxx:1906
 AliSimulation.cxx:1907
 AliSimulation.cxx:1908
 AliSimulation.cxx:1909
 AliSimulation.cxx:1910
 AliSimulation.cxx:1911
 AliSimulation.cxx:1912
 AliSimulation.cxx:1913
 AliSimulation.cxx:1914
 AliSimulation.cxx:1915
 AliSimulation.cxx:1916
 AliSimulation.cxx:1917
 AliSimulation.cxx:1918
 AliSimulation.cxx:1919
 AliSimulation.cxx:1920
 AliSimulation.cxx:1921
 AliSimulation.cxx:1922
 AliSimulation.cxx:1923
 AliSimulation.cxx:1924
 AliSimulation.cxx:1925
 AliSimulation.cxx:1926
 AliSimulation.cxx:1927
 AliSimulation.cxx:1928
 AliSimulation.cxx:1929
 AliSimulation.cxx:1930
 AliSimulation.cxx:1931
 AliSimulation.cxx:1932
 AliSimulation.cxx:1933
 AliSimulation.cxx:1934
 AliSimulation.cxx:1935
 AliSimulation.cxx:1936
 AliSimulation.cxx:1937
 AliSimulation.cxx:1938
 AliSimulation.cxx:1939
 AliSimulation.cxx:1940
 AliSimulation.cxx:1941
 AliSimulation.cxx:1942
 AliSimulation.cxx:1943
 AliSimulation.cxx:1944
 AliSimulation.cxx:1945
 AliSimulation.cxx:1946
 AliSimulation.cxx:1947
 AliSimulation.cxx:1948
 AliSimulation.cxx:1949
 AliSimulation.cxx:1950
 AliSimulation.cxx:1951
 AliSimulation.cxx:1952
 AliSimulation.cxx:1953
 AliSimulation.cxx:1954
 AliSimulation.cxx:1955
 AliSimulation.cxx:1956
 AliSimulation.cxx:1957
 AliSimulation.cxx:1958
 AliSimulation.cxx:1959
 AliSimulation.cxx:1960
 AliSimulation.cxx:1961
 AliSimulation.cxx:1962
 AliSimulation.cxx:1963
 AliSimulation.cxx:1964
 AliSimulation.cxx:1965
 AliSimulation.cxx:1966
 AliSimulation.cxx:1967
 AliSimulation.cxx:1968
 AliSimulation.cxx:1969
 AliSimulation.cxx:1970
 AliSimulation.cxx:1971
 AliSimulation.cxx:1972
 AliSimulation.cxx:1973
 AliSimulation.cxx:1974
 AliSimulation.cxx:1975
 AliSimulation.cxx:1976
 AliSimulation.cxx:1977
 AliSimulation.cxx:1978
 AliSimulation.cxx:1979
 AliSimulation.cxx:1980
 AliSimulation.cxx:1981
 AliSimulation.cxx:1982
 AliSimulation.cxx:1983
 AliSimulation.cxx:1984
 AliSimulation.cxx:1985
 AliSimulation.cxx:1986
 AliSimulation.cxx:1987
 AliSimulation.cxx:1988
 AliSimulation.cxx:1989
 AliSimulation.cxx:1990
 AliSimulation.cxx:1991
 AliSimulation.cxx:1992
 AliSimulation.cxx:1993
 AliSimulation.cxx:1994
 AliSimulation.cxx:1995
 AliSimulation.cxx:1996
 AliSimulation.cxx:1997
 AliSimulation.cxx:1998
 AliSimulation.cxx:1999
 AliSimulation.cxx:2000
 AliSimulation.cxx:2001
 AliSimulation.cxx:2002
 AliSimulation.cxx:2003
 AliSimulation.cxx:2004
 AliSimulation.cxx:2005
 AliSimulation.cxx:2006
 AliSimulation.cxx:2007
 AliSimulation.cxx:2008
 AliSimulation.cxx:2009
 AliSimulation.cxx:2010
 AliSimulation.cxx:2011
 AliSimulation.cxx:2012
 AliSimulation.cxx:2013
 AliSimulation.cxx:2014
 AliSimulation.cxx:2015
 AliSimulation.cxx:2016
 AliSimulation.cxx:2017
 AliSimulation.cxx:2018
 AliSimulation.cxx:2019
 AliSimulation.cxx:2020
 AliSimulation.cxx:2021
 AliSimulation.cxx:2022
 AliSimulation.cxx:2023
 AliSimulation.cxx:2024
 AliSimulation.cxx:2025
 AliSimulation.cxx:2026
 AliSimulation.cxx:2027
 AliSimulation.cxx:2028
 AliSimulation.cxx:2029
 AliSimulation.cxx:2030
 AliSimulation.cxx:2031
 AliSimulation.cxx:2032
 AliSimulation.cxx:2033
 AliSimulation.cxx:2034
 AliSimulation.cxx:2035
 AliSimulation.cxx:2036
 AliSimulation.cxx:2037
 AliSimulation.cxx:2038
 AliSimulation.cxx:2039
 AliSimulation.cxx:2040
 AliSimulation.cxx:2041
 AliSimulation.cxx:2042
 AliSimulation.cxx:2043
 AliSimulation.cxx:2044
 AliSimulation.cxx:2045
 AliSimulation.cxx:2046
 AliSimulation.cxx:2047
 AliSimulation.cxx:2048
 AliSimulation.cxx:2049
 AliSimulation.cxx:2050
 AliSimulation.cxx:2051
 AliSimulation.cxx:2052
 AliSimulation.cxx:2053
 AliSimulation.cxx:2054
 AliSimulation.cxx:2055
 AliSimulation.cxx:2056
 AliSimulation.cxx:2057
 AliSimulation.cxx:2058
 AliSimulation.cxx:2059
 AliSimulation.cxx:2060
 AliSimulation.cxx:2061
 AliSimulation.cxx:2062
 AliSimulation.cxx:2063
 AliSimulation.cxx:2064
 AliSimulation.cxx:2065
 AliSimulation.cxx:2066
 AliSimulation.cxx:2067
 AliSimulation.cxx:2068
 AliSimulation.cxx:2069
 AliSimulation.cxx:2070
 AliSimulation.cxx:2071
 AliSimulation.cxx:2072
 AliSimulation.cxx:2073
 AliSimulation.cxx:2074
 AliSimulation.cxx:2075
 AliSimulation.cxx:2076
 AliSimulation.cxx:2077
 AliSimulation.cxx:2078
 AliSimulation.cxx:2079
 AliSimulation.cxx:2080
 AliSimulation.cxx:2081
 AliSimulation.cxx:2082
 AliSimulation.cxx:2083
 AliSimulation.cxx:2084
 AliSimulation.cxx:2085
 AliSimulation.cxx:2086
 AliSimulation.cxx:2087
 AliSimulation.cxx:2088
 AliSimulation.cxx:2089
 AliSimulation.cxx:2090
 AliSimulation.cxx:2091
 AliSimulation.cxx:2092
 AliSimulation.cxx:2093
 AliSimulation.cxx:2094
 AliSimulation.cxx:2095
 AliSimulation.cxx:2096
 AliSimulation.cxx:2097
 AliSimulation.cxx:2098
 AliSimulation.cxx:2099
 AliSimulation.cxx:2100
 AliSimulation.cxx:2101
 AliSimulation.cxx:2102
 AliSimulation.cxx:2103
 AliSimulation.cxx:2104
 AliSimulation.cxx:2105
 AliSimulation.cxx:2106
 AliSimulation.cxx:2107
 AliSimulation.cxx:2108
 AliSimulation.cxx:2109
 AliSimulation.cxx:2110
 AliSimulation.cxx:2111
 AliSimulation.cxx:2112
 AliSimulation.cxx:2113
 AliSimulation.cxx:2114
 AliSimulation.cxx:2115
 AliSimulation.cxx:2116
 AliSimulation.cxx:2117
 AliSimulation.cxx:2118
 AliSimulation.cxx:2119
 AliSimulation.cxx:2120
 AliSimulation.cxx:2121
 AliSimulation.cxx:2122
 AliSimulation.cxx:2123
 AliSimulation.cxx:2124
 AliSimulation.cxx:2125
 AliSimulation.cxx:2126
 AliSimulation.cxx:2127
 AliSimulation.cxx:2128
 AliSimulation.cxx:2129
 AliSimulation.cxx:2130
 AliSimulation.cxx:2131
 AliSimulation.cxx:2132
 AliSimulation.cxx:2133
 AliSimulation.cxx:2134
 AliSimulation.cxx:2135
 AliSimulation.cxx:2136
 AliSimulation.cxx:2137
 AliSimulation.cxx:2138
 AliSimulation.cxx:2139
 AliSimulation.cxx:2140
 AliSimulation.cxx:2141
 AliSimulation.cxx:2142
 AliSimulation.cxx:2143
 AliSimulation.cxx:2144
 AliSimulation.cxx:2145
 AliSimulation.cxx:2146
 AliSimulation.cxx:2147
 AliSimulation.cxx:2148
 AliSimulation.cxx:2149
 AliSimulation.cxx:2150
 AliSimulation.cxx:2151
 AliSimulation.cxx:2152
 AliSimulation.cxx:2153
 AliSimulation.cxx:2154
 AliSimulation.cxx:2155
 AliSimulation.cxx:2156
 AliSimulation.cxx:2157
 AliSimulation.cxx:2158
 AliSimulation.cxx:2159
 AliSimulation.cxx:2160
 AliSimulation.cxx:2161
 AliSimulation.cxx:2162
 AliSimulation.cxx:2163
 AliSimulation.cxx:2164
 AliSimulation.cxx:2165
 AliSimulation.cxx:2166
 AliSimulation.cxx:2167
 AliSimulation.cxx:2168
 AliSimulation.cxx:2169
 AliSimulation.cxx:2170
 AliSimulation.cxx:2171
 AliSimulation.cxx:2172
 AliSimulation.cxx:2173
 AliSimulation.cxx:2174
 AliSimulation.cxx:2175
 AliSimulation.cxx:2176
 AliSimulation.cxx:2177
 AliSimulation.cxx:2178
 AliSimulation.cxx:2179
 AliSimulation.cxx:2180
 AliSimulation.cxx:2181
 AliSimulation.cxx:2182
 AliSimulation.cxx:2183
 AliSimulation.cxx:2184
 AliSimulation.cxx:2185
 AliSimulation.cxx:2186
 AliSimulation.cxx:2187
 AliSimulation.cxx:2188
 AliSimulation.cxx:2189
 AliSimulation.cxx:2190
 AliSimulation.cxx:2191
 AliSimulation.cxx:2192
 AliSimulation.cxx:2193
 AliSimulation.cxx:2194
 AliSimulation.cxx:2195
 AliSimulation.cxx:2196
 AliSimulation.cxx:2197
 AliSimulation.cxx:2198
 AliSimulation.cxx:2199
 AliSimulation.cxx:2200
 AliSimulation.cxx:2201
 AliSimulation.cxx:2202
 AliSimulation.cxx:2203
 AliSimulation.cxx:2204
 AliSimulation.cxx:2205
 AliSimulation.cxx:2206
 AliSimulation.cxx:2207
 AliSimulation.cxx:2208
 AliSimulation.cxx:2209
 AliSimulation.cxx:2210
 AliSimulation.cxx:2211
 AliSimulation.cxx:2212
 AliSimulation.cxx:2213
 AliSimulation.cxx:2214
 AliSimulation.cxx:2215
 AliSimulation.cxx:2216
 AliSimulation.cxx:2217
 AliSimulation.cxx:2218
 AliSimulation.cxx:2219
 AliSimulation.cxx:2220
 AliSimulation.cxx:2221
 AliSimulation.cxx:2222
 AliSimulation.cxx:2223
 AliSimulation.cxx:2224
 AliSimulation.cxx:2225
 AliSimulation.cxx:2226
 AliSimulation.cxx:2227
 AliSimulation.cxx:2228
 AliSimulation.cxx:2229
 AliSimulation.cxx:2230
 AliSimulation.cxx:2231
 AliSimulation.cxx:2232
 AliSimulation.cxx:2233
 AliSimulation.cxx:2234
 AliSimulation.cxx:2235
 AliSimulation.cxx:2236
 AliSimulation.cxx:2237
 AliSimulation.cxx:2238
 AliSimulation.cxx:2239
 AliSimulation.cxx:2240
 AliSimulation.cxx:2241
 AliSimulation.cxx:2242
 AliSimulation.cxx:2243
 AliSimulation.cxx:2244
 AliSimulation.cxx:2245
 AliSimulation.cxx:2246
 AliSimulation.cxx:2247
 AliSimulation.cxx:2248
 AliSimulation.cxx:2249
 AliSimulation.cxx:2250
 AliSimulation.cxx:2251
 AliSimulation.cxx:2252
 AliSimulation.cxx:2253
 AliSimulation.cxx:2254
 AliSimulation.cxx:2255
 AliSimulation.cxx:2256
 AliSimulation.cxx:2257
 AliSimulation.cxx:2258
 AliSimulation.cxx:2259
 AliSimulation.cxx:2260
 AliSimulation.cxx:2261
 AliSimulation.cxx:2262
 AliSimulation.cxx:2263
 AliSimulation.cxx:2264
 AliSimulation.cxx:2265
 AliSimulation.cxx:2266
 AliSimulation.cxx:2267
 AliSimulation.cxx:2268
 AliSimulation.cxx:2269
 AliSimulation.cxx:2270
 AliSimulation.cxx:2271
 AliSimulation.cxx:2272
 AliSimulation.cxx:2273
 AliSimulation.cxx:2274
 AliSimulation.cxx:2275
 AliSimulation.cxx:2276
 AliSimulation.cxx:2277
 AliSimulation.cxx:2278
 AliSimulation.cxx:2279
 AliSimulation.cxx:2280
 AliSimulation.cxx:2281
 AliSimulation.cxx:2282
 AliSimulation.cxx:2283
 AliSimulation.cxx:2284
 AliSimulation.cxx:2285
 AliSimulation.cxx:2286
 AliSimulation.cxx:2287
 AliSimulation.cxx:2288
 AliSimulation.cxx:2289
 AliSimulation.cxx:2290
 AliSimulation.cxx:2291
 AliSimulation.cxx:2292
 AliSimulation.cxx:2293
 AliSimulation.cxx:2294
 AliSimulation.cxx:2295
 AliSimulation.cxx:2296
 AliSimulation.cxx:2297
 AliSimulation.cxx:2298
 AliSimulation.cxx:2299
 AliSimulation.cxx:2300
 AliSimulation.cxx:2301
 AliSimulation.cxx:2302
 AliSimulation.cxx:2303
 AliSimulation.cxx:2304
 AliSimulation.cxx:2305
 AliSimulation.cxx:2306
 AliSimulation.cxx:2307
 AliSimulation.cxx:2308
 AliSimulation.cxx:2309
 AliSimulation.cxx:2310
 AliSimulation.cxx:2311
 AliSimulation.cxx:2312
 AliSimulation.cxx:2313
 AliSimulation.cxx:2314
 AliSimulation.cxx:2315
 AliSimulation.cxx:2316
 AliSimulation.cxx:2317
 AliSimulation.cxx:2318
 AliSimulation.cxx:2319
 AliSimulation.cxx:2320
 AliSimulation.cxx:2321
 AliSimulation.cxx:2322
 AliSimulation.cxx:2323
 AliSimulation.cxx:2324
 AliSimulation.cxx:2325
 AliSimulation.cxx:2326
 AliSimulation.cxx:2327
 AliSimulation.cxx:2328
 AliSimulation.cxx:2329
 AliSimulation.cxx:2330
 AliSimulation.cxx:2331
 AliSimulation.cxx:2332
 AliSimulation.cxx:2333
 AliSimulation.cxx:2334
 AliSimulation.cxx:2335
 AliSimulation.cxx:2336
 AliSimulation.cxx:2337
 AliSimulation.cxx:2338
 AliSimulation.cxx:2339
 AliSimulation.cxx:2340
 AliSimulation.cxx:2341
 AliSimulation.cxx:2342
 AliSimulation.cxx:2343
 AliSimulation.cxx:2344
 AliSimulation.cxx:2345
 AliSimulation.cxx:2346
 AliSimulation.cxx:2347
 AliSimulation.cxx:2348
 AliSimulation.cxx:2349
 AliSimulation.cxx:2350
 AliSimulation.cxx:2351
 AliSimulation.cxx:2352
 AliSimulation.cxx:2353
 AliSimulation.cxx:2354
 AliSimulation.cxx:2355
 AliSimulation.cxx:2356
 AliSimulation.cxx:2357
 AliSimulation.cxx:2358
 AliSimulation.cxx:2359
 AliSimulation.cxx:2360
 AliSimulation.cxx:2361
 AliSimulation.cxx:2362
 AliSimulation.cxx:2363
 AliSimulation.cxx:2364
 AliSimulation.cxx:2365
 AliSimulation.cxx:2366
 AliSimulation.cxx:2367
 AliSimulation.cxx:2368
 AliSimulation.cxx:2369
 AliSimulation.cxx:2370
 AliSimulation.cxx:2371
 AliSimulation.cxx:2372
 AliSimulation.cxx:2373
 AliSimulation.cxx:2374
 AliSimulation.cxx:2375
 AliSimulation.cxx:2376
 AliSimulation.cxx:2377
 AliSimulation.cxx:2378
 AliSimulation.cxx:2379
 AliSimulation.cxx:2380
 AliSimulation.cxx:2381
 AliSimulation.cxx:2382
 AliSimulation.cxx:2383
 AliSimulation.cxx:2384
 AliSimulation.cxx:2385
 AliSimulation.cxx:2386
 AliSimulation.cxx:2387
 AliSimulation.cxx:2388
 AliSimulation.cxx:2389
 AliSimulation.cxx:2390
 AliSimulation.cxx:2391
 AliSimulation.cxx:2392
 AliSimulation.cxx:2393
 AliSimulation.cxx:2394
 AliSimulation.cxx:2395
 AliSimulation.cxx:2396
 AliSimulation.cxx:2397
 AliSimulation.cxx:2398
 AliSimulation.cxx:2399
 AliSimulation.cxx:2400
 AliSimulation.cxx:2401
 AliSimulation.cxx:2402
 AliSimulation.cxx:2403
 AliSimulation.cxx:2404
 AliSimulation.cxx:2405
 AliSimulation.cxx:2406
 AliSimulation.cxx:2407
 AliSimulation.cxx:2408
 AliSimulation.cxx:2409
 AliSimulation.cxx:2410
 AliSimulation.cxx:2411
 AliSimulation.cxx:2412
 AliSimulation.cxx:2413
 AliSimulation.cxx:2414
 AliSimulation.cxx:2415
 AliSimulation.cxx:2416
 AliSimulation.cxx:2417
 AliSimulation.cxx:2418
 AliSimulation.cxx:2419
 AliSimulation.cxx:2420
 AliSimulation.cxx:2421
 AliSimulation.cxx:2422
 AliSimulation.cxx:2423
 AliSimulation.cxx:2424
 AliSimulation.cxx:2425
 AliSimulation.cxx:2426
 AliSimulation.cxx:2427
 AliSimulation.cxx:2428
 AliSimulation.cxx:2429
 AliSimulation.cxx:2430
 AliSimulation.cxx:2431
 AliSimulation.cxx:2432
 AliSimulation.cxx:2433
 AliSimulation.cxx:2434
 AliSimulation.cxx:2435
 AliSimulation.cxx:2436
 AliSimulation.cxx:2437
 AliSimulation.cxx:2438
 AliSimulation.cxx:2439
 AliSimulation.cxx:2440
 AliSimulation.cxx:2441
 AliSimulation.cxx:2442
 AliSimulation.cxx:2443
 AliSimulation.cxx:2444
 AliSimulation.cxx:2445
 AliSimulation.cxx:2446
 AliSimulation.cxx:2447
 AliSimulation.cxx:2448
 AliSimulation.cxx:2449
 AliSimulation.cxx:2450
 AliSimulation.cxx:2451
 AliSimulation.cxx:2452
 AliSimulation.cxx:2453
 AliSimulation.cxx:2454
 AliSimulation.cxx:2455
 AliSimulation.cxx:2456
 AliSimulation.cxx:2457
 AliSimulation.cxx:2458
 AliSimulation.cxx:2459
 AliSimulation.cxx:2460
 AliSimulation.cxx:2461
 AliSimulation.cxx:2462
 AliSimulation.cxx:2463
 AliSimulation.cxx:2464
 AliSimulation.cxx:2465
 AliSimulation.cxx:2466
 AliSimulation.cxx:2467
 AliSimulation.cxx:2468
 AliSimulation.cxx:2469
 AliSimulation.cxx:2470
 AliSimulation.cxx:2471
 AliSimulation.cxx:2472
 AliSimulation.cxx:2473
 AliSimulation.cxx:2474
 AliSimulation.cxx:2475
 AliSimulation.cxx:2476
 AliSimulation.cxx:2477
 AliSimulation.cxx:2478
 AliSimulation.cxx:2479
 AliSimulation.cxx:2480
 AliSimulation.cxx:2481
 AliSimulation.cxx:2482
 AliSimulation.cxx:2483
 AliSimulation.cxx:2484
 AliSimulation.cxx:2485
 AliSimulation.cxx:2486
 AliSimulation.cxx:2487
 AliSimulation.cxx:2488
 AliSimulation.cxx:2489
 AliSimulation.cxx:2490
 AliSimulation.cxx:2491
 AliSimulation.cxx:2492
 AliSimulation.cxx:2493
 AliSimulation.cxx:2494
 AliSimulation.cxx:2495
 AliSimulation.cxx:2496
 AliSimulation.cxx:2497
 AliSimulation.cxx:2498
 AliSimulation.cxx:2499
 AliSimulation.cxx:2500
 AliSimulation.cxx:2501
 AliSimulation.cxx:2502
 AliSimulation.cxx:2503
 AliSimulation.cxx:2504
 AliSimulation.cxx:2505
 AliSimulation.cxx:2506
 AliSimulation.cxx:2507
 AliSimulation.cxx:2508
 AliSimulation.cxx:2509
 AliSimulation.cxx:2510
 AliSimulation.cxx:2511
 AliSimulation.cxx:2512
 AliSimulation.cxx:2513
 AliSimulation.cxx:2514
 AliSimulation.cxx:2515
 AliSimulation.cxx:2516
 AliSimulation.cxx:2517
 AliSimulation.cxx:2518
 AliSimulation.cxx:2519
 AliSimulation.cxx:2520
 AliSimulation.cxx:2521
 AliSimulation.cxx:2522
 AliSimulation.cxx:2523
 AliSimulation.cxx:2524
 AliSimulation.cxx:2525
 AliSimulation.cxx:2526
 AliSimulation.cxx:2527
 AliSimulation.cxx:2528
 AliSimulation.cxx:2529
 AliSimulation.cxx:2530
 AliSimulation.cxx:2531
 AliSimulation.cxx:2532
 AliSimulation.cxx:2533
 AliSimulation.cxx:2534
 AliSimulation.cxx:2535
 AliSimulation.cxx:2536
 AliSimulation.cxx:2537
 AliSimulation.cxx:2538
 AliSimulation.cxx:2539
 AliSimulation.cxx:2540
 AliSimulation.cxx:2541
 AliSimulation.cxx:2542
 AliSimulation.cxx:2543
 AliSimulation.cxx:2544
 AliSimulation.cxx:2545
 AliSimulation.cxx:2546
 AliSimulation.cxx:2547
 AliSimulation.cxx:2548
 AliSimulation.cxx:2549
 AliSimulation.cxx:2550
 AliSimulation.cxx:2551
 AliSimulation.cxx:2552
 AliSimulation.cxx:2553
 AliSimulation.cxx:2554
 AliSimulation.cxx:2555
 AliSimulation.cxx:2556
 AliSimulation.cxx:2557
 AliSimulation.cxx:2558
 AliSimulation.cxx:2559
 AliSimulation.cxx:2560
 AliSimulation.cxx:2561
 AliSimulation.cxx:2562
 AliSimulation.cxx:2563
 AliSimulation.cxx:2564
 AliSimulation.cxx:2565
 AliSimulation.cxx:2566
 AliSimulation.cxx:2567
 AliSimulation.cxx:2568
 AliSimulation.cxx:2569
 AliSimulation.cxx:2570
 AliSimulation.cxx:2571
 AliSimulation.cxx:2572
 AliSimulation.cxx:2573
 AliSimulation.cxx:2574
 AliSimulation.cxx:2575
 AliSimulation.cxx:2576
 AliSimulation.cxx:2577
 AliSimulation.cxx:2578
 AliSimulation.cxx:2579
 AliSimulation.cxx:2580
 AliSimulation.cxx:2581
 AliSimulation.cxx:2582
 AliSimulation.cxx:2583
 AliSimulation.cxx:2584
 AliSimulation.cxx:2585
 AliSimulation.cxx:2586
 AliSimulation.cxx:2587
 AliSimulation.cxx:2588
 AliSimulation.cxx:2589
 AliSimulation.cxx:2590
 AliSimulation.cxx:2591
 AliSimulation.cxx:2592
 AliSimulation.cxx:2593
 AliSimulation.cxx:2594
 AliSimulation.cxx:2595
 AliSimulation.cxx:2596
 AliSimulation.cxx:2597
 AliSimulation.cxx:2598
 AliSimulation.cxx:2599