ROOT logo
  /**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/* History of cvs commits:
 *
 * $Log$
 * Revision 1.30  2006/09/13 07:31:01  kharlov
 * Effective C++ corrections (T.Pocheptsov)
 *
 * Revision 1.29  2005/05/28 14:19:05  schutz
 * Compilation warnings fixed by T.P.
 *
 */

//_________________________________________________________________________
// Implementation of the PHOS manager class for fast simulations     
// Tracks particles until the reach a grossly designed PHOS module
// Modify the particles property (momentum, energy, type) according to
//  the PHOS response function. The result is called a virtual reconstructed
//  particle.                
//
//*-- Author: Yves Schutz (SUBATECH)

// --- ROOT system ---
 
#include <TGeometry.h>
#include <TParticle.h>
#include <TDatabasePDG.h>
#include "TClonesArray.h" 
#include <TVirtualMC.h>

// --- Standard library ---

// --- AliRoot header files ---
#include "AliPHOSFastRecParticle.h"
#include "AliPHOSGeometry.h"
#include "AliPHOSLoader.h"
#include "AliPHOSvFast.h"
#include "AliRun.h"

ClassImp(AliPHOSvFast)

AliPHOSvFast::AliPHOSvFast() :
  fBigBoxX(0.),
  fBigBoxY(0.),
  fBigBoxZ(0.),
  fFastRecParticles(0),
  fNRecParticles(0),
  fRan(0),
  fResPara1(0.),
  fResPara2(0.),
  fResPara3(0.),
  fPosParaA0(0.),
  fPosParaA1(0.),
  fPosParaB0(0.),
  fPosParaB1(0.),
  fPosParaB2(0.)    
{
  // default ctor : initialize data member
}

//____________________________________________________________________________
AliPHOSvFast::AliPHOSvFast(const char *name, const char *title):
  AliPHOS(name,title),
  fBigBoxX(0.),
  fBigBoxY(0.),
  fBigBoxZ(0.),
  fFastRecParticles(new AliPHOSFastRecParticle::FastRecParticlesList("AliPHOSFastRecParticle", 100)),
  fNRecParticles(0),
  fRan(0),
  fResPara1(0.030), // GeV
  fResPara2(0.00003),
  fResPara3(0.00001),
  fPosParaA0(2.87),    // mm
  fPosParaA1(-0.0975),
  fPosParaB0(0.257),
  fPosParaB1(0.137),
  fPosParaB2(0.00619)
{
  // ctor
  // create the Loader 
  SetBigBox(0, GetGeometry()->GetOuterBoxSize(0) ) ;
  SetBigBox(1, GetGeometry()->GetOuterBoxSize(3) + GetGeometry()->GetCPVBoxSize(1) ) ; 
  SetBigBox(2, GetGeometry()->GetOuterBoxSize(2) ); 
}

//____________________________________________________________________________
AliPHOSvFast::~AliPHOSvFast()
{
  // dtor
 
  fFastRecParticles->Delete() ; 
  delete fFastRecParticles ;
  fFastRecParticles = 0 ; 

}

//____________________________________________________________________________
void AliPHOSvFast::AddRecParticle(const AliPHOSFastRecParticle & rp)
{  
  // Add a virtually reconstructed particle to the list 

  new( (*fFastRecParticles)[fNRecParticles] ) AliPHOSFastRecParticle(rp) ;
  fNRecParticles++ ; 
}

//____________________________________________________________________________
void AliPHOSvFast::CreateGeometry()
{
  // Create the geometry for GEANT
  
  AliPHOSvFast *phostmp = (AliPHOSvFast*)gAlice->GetModule("PHOS") ;
  
  if ( phostmp == NULL ) {
    
    fprintf(stderr, "PHOS detector not found!\n") ;
    return ;
    
  }

  // Get pointer to the array containing media indeces
  Int_t *idtmed = fIdtmed->GetArray() - 699 ;
  
  Float_t bigbox[3] ; 
  bigbox[0] =   GetBigBox(0) / 2.0 ;
  bigbox[1] =   GetBigBox(1) / 2.0 ;
  bigbox[2] =   GetBigBox(2) / 2.0 ;
  
  TVirtualMC::GetMC()->Gsvolu("PHOS", "BOX ", idtmed[798], bigbox, 3) ;
  
  // --- Position  PHOS mdules in ALICE setup ---
  
  Int_t idrotm[99] ;
  Double_t const kRADDEG = 180.0 / TMath::Pi() ;
  
  for( Int_t i = 1; i <= GetGeometry()->GetNModules(); i++ ) {
    
    Float_t angle = GetGeometry()->GetPHOSAngle(i) ;
    AliMatrix(idrotm[i-1], 90.0, angle, 90.0, 90.0+angle, 0.0, 0.0) ;
 
    Float_t r = GetGeometry()->GetIPtoCrystalSurface() + GetBigBox(1) / 2.0 ;

    Float_t xP1 = r * TMath::Sin( angle / kRADDEG ) ;
    Float_t yP1 = -r * TMath::Cos( angle / kRADDEG ) ;
    TVirtualMC::GetMC()->Gspos("PHOS", i, "ALIC", xP1, yP1, 0.0, idrotm[i-1], "ONLY") ;
 
  } // for GetNModules

}


//____________________________________________________________________________
void AliPHOSvFast::Init(void)
{
  // Prints out an information message
  
  Int_t i;

  printf("\n");
  for(i=0;i<35;i++) printf("*");
  printf(" FAST PHOS_INIT ");
  for(i=0;i<35;i++) printf("*");
  printf("\n");

  // Here the PHOS initialisation code (if any!)

  for(i=0;i<80;i++) printf("*");
  printf("\n");
  
}

//___________________________________________________________________________
Float_t AliPHOSvFast::GetBigBox(Int_t index) const
{
  // Get the X, Y or Z dimension of the box describing a PHOS module
  
  Float_t rv = 0 ; 

  switch (index) {
  case 0:
    rv = fBigBoxX ; 
    break ; 
  case 1:
     rv = fBigBoxY ; 
    break ; 
  case 2:
     rv = fBigBoxZ ; 
    break ; 
 }
  return rv ; 
}
//___________________________________________________________________________

void AliPHOSvFast::MakeBranch(Option_t* opt)
{  
  // Create new branch in the current reconstructed Root Tree
  AliDetector::MakeBranch(opt);
  const char *cd = strstr(opt,"R");
  
  if (fFastRecParticles && fLoader->TreeR() && cd) {
    MakeBranchInTree(fLoader->TreeR(), GetName(), &fFastRecParticles, fBufferSize, 0);
  }
}
//____________________________________________________________________________

Double_t AliPHOSvFast::MakeEnergy(Double_t energy)
{  
  // Smears the energy according to the energy dependent energy resolution.
  // A gaussian distribution is assumed

  Double_t sigma  = SigmaE(energy) ; 
  return  fRan.Gaus(energy, sigma) ;   
}
//____________________________________________________________________________

TVector3 AliPHOSvFast::MakePosition(Double_t energy, TVector3 pos, Double_t theta, Double_t phi)
{
  // Smears the impact position according to the energy dependent position resolution
  // A gaussian position distribution is assumed

  TVector3 newpos ;
  Double_t sigma = SigmaP( energy, theta*180./TMath::Pi() ) ;
  Double_t x = fRan.Gaus( pos.X(), sigma ) ;
  sigma = SigmaP( energy, phi*180./TMath::Pi() ) ;
  Double_t z = fRan.Gaus( pos.Z(), sigma ) ;
  Double_t y = pos.Y() ; 
  
  newpos.SetX(x) ; 
  newpos.SetY(y) ; 
  newpos.SetZ(z) ; 
	      
  return newpos ; 
}

//____________________________________________________________________________
void AliPHOSvFast::MakeRecParticle(Int_t modid, TVector3 pos, AliPHOSFastRecParticle & rp)
{
  // Modify the primary particle properties according
  //  1. the response function of PHOS
  //  2. the performance of the EMC+PPSD setup
  
  Int_t type = MakeType( rp ) ;
  rp.SetType(type) ;

  
  // get the detected energy

  TLorentzVector momentum ;  
  rp.Momentum(momentum) ; 
  Double_t kineticenergy = TMath::Sqrt( TMath::Power(momentum.E(), 2) - TMath::Power(rp.GetMass(), 2) ) ; 
  Double_t modifiedkineticenergy = MakeEnergy(kineticenergy ) ;
  Double_t modifiedenergy = TMath::Sqrt( TMath::Power(modifiedkineticenergy, 2)  
					 + TMath::Power( rp.GetMass(), 2) ) ;
 
  // get the angle of incidence 
  
  Double_t incidencetheta = 90. * TMath::Pi() /180 - rp.Theta() ; 
  Double_t incidencephi   = ( 270 + GetGeometry()->GetPHOSAngle(modid) ) * TMath::Pi() / 180. - rp.Phi() ;   

  // get the detected direction
  
  TVector3 modifiedposition = MakePosition(kineticenergy, pos, incidencetheta, incidencephi) ; 
  modifiedposition *= modifiedkineticenergy / modifiedposition.Mag() ; 

  // Set the modified 4-momentum of the reconstructed particle

  rp.SetMomentum(modifiedposition.X(), modifiedposition.Y(), modifiedposition.Z(), modifiedenergy) ; 

 }

//____________________________________________________________________________
Int_t AliPHOSvFast::MakeType(AliPHOSFastRecParticle & rp )
{
  // Generate a particle type using the performance of the EMC+PPSD setup

  Int_t rv =   AliPHOSFastRecParticle::kUNDEFINED ;
  Int_t charge = (Int_t)rp.GetPDG()->Charge() ;
  Int_t test ; 
  Float_t ran ; 
  if ( charge != 0 && ( TMath::Abs(rp.GetPdgCode()) != 11 ) ) 
    test = - 1 ;
  else
    test = rp.GetPdgCode() ; 

  Fatal("MakeType", "SHOULD NOT BE USED until values of probabilities are properly set ") ;
   // NB: ALL VALUES SHOULD BE CHECKED !!!!
  switch (test) { 

  case 22:    // it's a photon              // NB: ALL VALUES SHOLD BE CHECKED !!!!
    ran = fRan.Rndm() ; 
    if( ran <= 0.9498 )
      rv =  AliPHOSFastRecParticle::kNEUTRALHAFAST ; 
    else
      rv =  AliPHOSFastRecParticle::kNEUTRALEMFAST ;     
    break ; 

  case 2112:  // it's a neutron
    ran = fRan.Rndm() ; 
    if ( ran <= 0.9998 )
      rv =  AliPHOSFastRecParticle::kNEUTRALHASLOW ; 
    else 
      rv = AliPHOSFastRecParticle::kNEUTRALEMSLOW ; 
    break ; 
    
  case -2112: // it's a anti-neutron
    ran = fRan.Rndm() ; 
    if ( ran <= 0.9984 )
      rv =  AliPHOSFastRecParticle::kNEUTRALHASLOW ; 
    else 
      rv =  AliPHOSFastRecParticle::kNEUTRALEMSLOW ; 
    break ; 
    
  case 11:    // it's a electron
    ran = fRan.Rndm() ; 
    if ( ran <= 0.9996 )
      rv =  AliPHOSFastRecParticle::kCHARGEDEMFAST ; 
    else 
      rv =  AliPHOSFastRecParticle::kCHARGEDHAFAST ; 
    break; 

  case -11:   // it's a positon
    ran = fRan.Rndm() ; 
    if ( ran <= 0.9996 )
      rv =  AliPHOSFastRecParticle::kCHARGEDEMFAST ; 
    else 
      rv =  AliPHOSFastRecParticle::kCHARGEDHAFAST ; 
    break; 

  case -1:    // it's a charged
    ran = fRan.Rndm() ; 
    if ( ran <= 0.9996 )
      rv =  AliPHOSFastRecParticle::kCHARGEDHAFAST ; 
    else 
      rv =  AliPHOSFastRecParticle::kNEUTRALHAFAST ; 

    break ; 
  }
    
  
  return rv ;
}

//___________________________________________________________________________
void AliPHOSvFast::ResetPoints()
{
  // This overloads the method in AliDetector
  
  ResetFastRecParticles() ; 
}

//___________________________________________________________________________
void AliPHOSvFast::ResetFastRecParticles()
{
  // Resets the list of virtual reconstructed particles
 
  if (fFastRecParticles) 
    fFastRecParticles->Clear() ;
  fNRecParticles = 0 ; 
}

//___________________________________________________________________________
void AliPHOSvFast::SetBigBox(Int_t index, Float_t value)
{
  // Set the size of the Box describing a PHOS module
  
  switch (index) {
  case 0:
    fBigBoxX = value ; 
    break ; 
  case 1:
    fBigBoxY = value ; 
    break ; 
  case 2:
    fBigBoxZ = value ; 
    break ; 
 }

}

//____________________________________________________________________________
Double_t AliPHOSvFast::SigmaE(Double_t energy)
{
  // Calculates the energy dependent energy resolution
  
  Double_t rv = -1 ; 
  
  rv = TMath::Sqrt( TMath::Power(fResPara1/energy, 2) 
	       + TMath::Power(fResPara2/TMath::Sqrt(energy), 2) 
	       + TMath::Power(fResPara3, 2) ) ;  

  return rv * energy ; 
}

//____________________________________________________________________________
Double_t AliPHOSvFast::SigmaP(Double_t energy, Double_t incidence)
{
  // Calculates the energy dependent position resolution 

  Double_t paraA = fPosParaA0 + fPosParaA1 * incidence ; 
  Double_t paraB = fPosParaB0 + fPosParaB1 * incidence + fPosParaB2 * incidence * incidence ; 

  return ( paraA / TMath::Sqrt(energy) + paraB ) * 0.1   ; // in cm  
}

//____________________________________________________________________________
void AliPHOSvFast::StepManager(void)
{
  // Only verifies if the particle reaches PHOS and stops the tracking 

  TLorentzVector lv ; 
  TVirtualMC::GetMC()->TrackPosition(lv) ;
  TVector3 pos = lv.Vect() ; 
  Int_t modid  ; 
  TVirtualMC::GetMC()->CurrentVolID(modid);
  
  Float_t energy = TVirtualMC::GetMC()->Etot() ; //Total energy of current track

  //Calculating mass of current particle
  TDatabasePDG * pdg = TDatabasePDG::Instance() ;
  TParticlePDG * partPDG = pdg->GetParticle(TVirtualMC::GetMC()->TrackPid()) ;
  Float_t mass = partPDG->Mass() ;

  if(energy > mass){
    pos.SetMag(TMath::Sqrt(energy*energy-mass*mass)) ;
    TLorentzVector pTrack(pos, energy) ;  

    TParticle * part = new TParticle(TVirtualMC::GetMC()->TrackPid(), 0,-1,-1,-1,-1, pTrack, lv)  ;
        
    AliPHOSFastRecParticle rp(*part) ;

    // Adds the response of PHOS to the particle
    MakeRecParticle(modid, pos, rp) ;
    
    // add the `track' particle to the FastRecParticles list
  
    AddRecParticle(rp) ;

    part->Delete() ;
  }
  // stop the track as soon PHOS is reached
  
  TVirtualMC::GetMC()->StopTrack() ; 

}

 AliPHOSvFast.cxx:1
 AliPHOSvFast.cxx:2
 AliPHOSvFast.cxx:3
 AliPHOSvFast.cxx:4
 AliPHOSvFast.cxx:5
 AliPHOSvFast.cxx:6
 AliPHOSvFast.cxx:7
 AliPHOSvFast.cxx:8
 AliPHOSvFast.cxx:9
 AliPHOSvFast.cxx:10
 AliPHOSvFast.cxx:11
 AliPHOSvFast.cxx:12
 AliPHOSvFast.cxx:13
 AliPHOSvFast.cxx:14
 AliPHOSvFast.cxx:15
 AliPHOSvFast.cxx:16
 AliPHOSvFast.cxx:17
 AliPHOSvFast.cxx:18
 AliPHOSvFast.cxx:19
 AliPHOSvFast.cxx:20
 AliPHOSvFast.cxx:21
 AliPHOSvFast.cxx:22
 AliPHOSvFast.cxx:23
 AliPHOSvFast.cxx:24
 AliPHOSvFast.cxx:25
 AliPHOSvFast.cxx:26
 AliPHOSvFast.cxx:27
 AliPHOSvFast.cxx:28
 AliPHOSvFast.cxx:29
 AliPHOSvFast.cxx:30
 AliPHOSvFast.cxx:31
 AliPHOSvFast.cxx:32
 AliPHOSvFast.cxx:33
 AliPHOSvFast.cxx:34
 AliPHOSvFast.cxx:35
 AliPHOSvFast.cxx:36
 AliPHOSvFast.cxx:37
 AliPHOSvFast.cxx:38
 AliPHOSvFast.cxx:39
 AliPHOSvFast.cxx:40
 AliPHOSvFast.cxx:41
 AliPHOSvFast.cxx:42
 AliPHOSvFast.cxx:43
 AliPHOSvFast.cxx:44
 AliPHOSvFast.cxx:45
 AliPHOSvFast.cxx:46
 AliPHOSvFast.cxx:47
 AliPHOSvFast.cxx:48
 AliPHOSvFast.cxx:49
 AliPHOSvFast.cxx:50
 AliPHOSvFast.cxx:51
 AliPHOSvFast.cxx:52
 AliPHOSvFast.cxx:53
 AliPHOSvFast.cxx:54
 AliPHOSvFast.cxx:55
 AliPHOSvFast.cxx:56
 AliPHOSvFast.cxx:57
 AliPHOSvFast.cxx:58
 AliPHOSvFast.cxx:59
 AliPHOSvFast.cxx:60
 AliPHOSvFast.cxx:61
 AliPHOSvFast.cxx:62
 AliPHOSvFast.cxx:63
 AliPHOSvFast.cxx:64
 AliPHOSvFast.cxx:65
 AliPHOSvFast.cxx:66
 AliPHOSvFast.cxx:67
 AliPHOSvFast.cxx:68
 AliPHOSvFast.cxx:69
 AliPHOSvFast.cxx:70
 AliPHOSvFast.cxx:71
 AliPHOSvFast.cxx:72
 AliPHOSvFast.cxx:73
 AliPHOSvFast.cxx:74
 AliPHOSvFast.cxx:75
 AliPHOSvFast.cxx:76
 AliPHOSvFast.cxx:77
 AliPHOSvFast.cxx:78
 AliPHOSvFast.cxx:79
 AliPHOSvFast.cxx:80
 AliPHOSvFast.cxx:81
 AliPHOSvFast.cxx:82
 AliPHOSvFast.cxx:83
 AliPHOSvFast.cxx:84
 AliPHOSvFast.cxx:85
 AliPHOSvFast.cxx:86
 AliPHOSvFast.cxx:87
 AliPHOSvFast.cxx:88
 AliPHOSvFast.cxx:89
 AliPHOSvFast.cxx:90
 AliPHOSvFast.cxx:91
 AliPHOSvFast.cxx:92
 AliPHOSvFast.cxx:93
 AliPHOSvFast.cxx:94
 AliPHOSvFast.cxx:95
 AliPHOSvFast.cxx:96
 AliPHOSvFast.cxx:97
 AliPHOSvFast.cxx:98
 AliPHOSvFast.cxx:99
 AliPHOSvFast.cxx:100
 AliPHOSvFast.cxx:101
 AliPHOSvFast.cxx:102
 AliPHOSvFast.cxx:103
 AliPHOSvFast.cxx:104
 AliPHOSvFast.cxx:105
 AliPHOSvFast.cxx:106
 AliPHOSvFast.cxx:107
 AliPHOSvFast.cxx:108
 AliPHOSvFast.cxx:109
 AliPHOSvFast.cxx:110
 AliPHOSvFast.cxx:111
 AliPHOSvFast.cxx:112
 AliPHOSvFast.cxx:113
 AliPHOSvFast.cxx:114
 AliPHOSvFast.cxx:115
 AliPHOSvFast.cxx:116
 AliPHOSvFast.cxx:117
 AliPHOSvFast.cxx:118
 AliPHOSvFast.cxx:119
 AliPHOSvFast.cxx:120
 AliPHOSvFast.cxx:121
 AliPHOSvFast.cxx:122
 AliPHOSvFast.cxx:123
 AliPHOSvFast.cxx:124
 AliPHOSvFast.cxx:125
 AliPHOSvFast.cxx:126
 AliPHOSvFast.cxx:127
 AliPHOSvFast.cxx:128
 AliPHOSvFast.cxx:129
 AliPHOSvFast.cxx:130
 AliPHOSvFast.cxx:131
 AliPHOSvFast.cxx:132
 AliPHOSvFast.cxx:133
 AliPHOSvFast.cxx:134
 AliPHOSvFast.cxx:135
 AliPHOSvFast.cxx:136
 AliPHOSvFast.cxx:137
 AliPHOSvFast.cxx:138
 AliPHOSvFast.cxx:139
 AliPHOSvFast.cxx:140
 AliPHOSvFast.cxx:141
 AliPHOSvFast.cxx:142
 AliPHOSvFast.cxx:143
 AliPHOSvFast.cxx:144
 AliPHOSvFast.cxx:145
 AliPHOSvFast.cxx:146
 AliPHOSvFast.cxx:147
 AliPHOSvFast.cxx:148
 AliPHOSvFast.cxx:149
 AliPHOSvFast.cxx:150
 AliPHOSvFast.cxx:151
 AliPHOSvFast.cxx:152
 AliPHOSvFast.cxx:153
 AliPHOSvFast.cxx:154
 AliPHOSvFast.cxx:155
 AliPHOSvFast.cxx:156
 AliPHOSvFast.cxx:157
 AliPHOSvFast.cxx:158
 AliPHOSvFast.cxx:159
 AliPHOSvFast.cxx:160
 AliPHOSvFast.cxx:161
 AliPHOSvFast.cxx:162
 AliPHOSvFast.cxx:163
 AliPHOSvFast.cxx:164
 AliPHOSvFast.cxx:165
 AliPHOSvFast.cxx:166
 AliPHOSvFast.cxx:167
 AliPHOSvFast.cxx:168
 AliPHOSvFast.cxx:169
 AliPHOSvFast.cxx:170
 AliPHOSvFast.cxx:171
 AliPHOSvFast.cxx:172
 AliPHOSvFast.cxx:173
 AliPHOSvFast.cxx:174
 AliPHOSvFast.cxx:175
 AliPHOSvFast.cxx:176
 AliPHOSvFast.cxx:177
 AliPHOSvFast.cxx:178
 AliPHOSvFast.cxx:179
 AliPHOSvFast.cxx:180
 AliPHOSvFast.cxx:181
 AliPHOSvFast.cxx:182
 AliPHOSvFast.cxx:183
 AliPHOSvFast.cxx:184
 AliPHOSvFast.cxx:185
 AliPHOSvFast.cxx:186
 AliPHOSvFast.cxx:187
 AliPHOSvFast.cxx:188
 AliPHOSvFast.cxx:189
 AliPHOSvFast.cxx:190
 AliPHOSvFast.cxx:191
 AliPHOSvFast.cxx:192
 AliPHOSvFast.cxx:193
 AliPHOSvFast.cxx:194
 AliPHOSvFast.cxx:195
 AliPHOSvFast.cxx:196
 AliPHOSvFast.cxx:197
 AliPHOSvFast.cxx:198
 AliPHOSvFast.cxx:199
 AliPHOSvFast.cxx:200
 AliPHOSvFast.cxx:201
 AliPHOSvFast.cxx:202
 AliPHOSvFast.cxx:203
 AliPHOSvFast.cxx:204
 AliPHOSvFast.cxx:205
 AliPHOSvFast.cxx:206
 AliPHOSvFast.cxx:207
 AliPHOSvFast.cxx:208
 AliPHOSvFast.cxx:209
 AliPHOSvFast.cxx:210
 AliPHOSvFast.cxx:211
 AliPHOSvFast.cxx:212
 AliPHOSvFast.cxx:213
 AliPHOSvFast.cxx:214
 AliPHOSvFast.cxx:215
 AliPHOSvFast.cxx:216
 AliPHOSvFast.cxx:217
 AliPHOSvFast.cxx:218
 AliPHOSvFast.cxx:219
 AliPHOSvFast.cxx:220
 AliPHOSvFast.cxx:221
 AliPHOSvFast.cxx:222
 AliPHOSvFast.cxx:223
 AliPHOSvFast.cxx:224
 AliPHOSvFast.cxx:225
 AliPHOSvFast.cxx:226
 AliPHOSvFast.cxx:227
 AliPHOSvFast.cxx:228
 AliPHOSvFast.cxx:229
 AliPHOSvFast.cxx:230
 AliPHOSvFast.cxx:231
 AliPHOSvFast.cxx:232
 AliPHOSvFast.cxx:233
 AliPHOSvFast.cxx:234
 AliPHOSvFast.cxx:235
 AliPHOSvFast.cxx:236
 AliPHOSvFast.cxx:237
 AliPHOSvFast.cxx:238
 AliPHOSvFast.cxx:239
 AliPHOSvFast.cxx:240
 AliPHOSvFast.cxx:241
 AliPHOSvFast.cxx:242
 AliPHOSvFast.cxx:243
 AliPHOSvFast.cxx:244
 AliPHOSvFast.cxx:245
 AliPHOSvFast.cxx:246
 AliPHOSvFast.cxx:247
 AliPHOSvFast.cxx:248
 AliPHOSvFast.cxx:249
 AliPHOSvFast.cxx:250
 AliPHOSvFast.cxx:251
 AliPHOSvFast.cxx:252
 AliPHOSvFast.cxx:253
 AliPHOSvFast.cxx:254
 AliPHOSvFast.cxx:255
 AliPHOSvFast.cxx:256
 AliPHOSvFast.cxx:257
 AliPHOSvFast.cxx:258
 AliPHOSvFast.cxx:259
 AliPHOSvFast.cxx:260
 AliPHOSvFast.cxx:261
 AliPHOSvFast.cxx:262
 AliPHOSvFast.cxx:263
 AliPHOSvFast.cxx:264
 AliPHOSvFast.cxx:265
 AliPHOSvFast.cxx:266
 AliPHOSvFast.cxx:267
 AliPHOSvFast.cxx:268
 AliPHOSvFast.cxx:269
 AliPHOSvFast.cxx:270
 AliPHOSvFast.cxx:271
 AliPHOSvFast.cxx:272
 AliPHOSvFast.cxx:273
 AliPHOSvFast.cxx:274
 AliPHOSvFast.cxx:275
 AliPHOSvFast.cxx:276
 AliPHOSvFast.cxx:277
 AliPHOSvFast.cxx:278
 AliPHOSvFast.cxx:279
 AliPHOSvFast.cxx:280
 AliPHOSvFast.cxx:281
 AliPHOSvFast.cxx:282
 AliPHOSvFast.cxx:283
 AliPHOSvFast.cxx:284
 AliPHOSvFast.cxx:285
 AliPHOSvFast.cxx:286
 AliPHOSvFast.cxx:287
 AliPHOSvFast.cxx:288
 AliPHOSvFast.cxx:289
 AliPHOSvFast.cxx:290
 AliPHOSvFast.cxx:291
 AliPHOSvFast.cxx:292
 AliPHOSvFast.cxx:293
 AliPHOSvFast.cxx:294
 AliPHOSvFast.cxx:295
 AliPHOSvFast.cxx:296
 AliPHOSvFast.cxx:297
 AliPHOSvFast.cxx:298
 AliPHOSvFast.cxx:299
 AliPHOSvFast.cxx:300
 AliPHOSvFast.cxx:301
 AliPHOSvFast.cxx:302
 AliPHOSvFast.cxx:303
 AliPHOSvFast.cxx:304
 AliPHOSvFast.cxx:305
 AliPHOSvFast.cxx:306
 AliPHOSvFast.cxx:307
 AliPHOSvFast.cxx:308
 AliPHOSvFast.cxx:309
 AliPHOSvFast.cxx:310
 AliPHOSvFast.cxx:311
 AliPHOSvFast.cxx:312
 AliPHOSvFast.cxx:313
 AliPHOSvFast.cxx:314
 AliPHOSvFast.cxx:315
 AliPHOSvFast.cxx:316
 AliPHOSvFast.cxx:317
 AliPHOSvFast.cxx:318
 AliPHOSvFast.cxx:319
 AliPHOSvFast.cxx:320
 AliPHOSvFast.cxx:321
 AliPHOSvFast.cxx:322
 AliPHOSvFast.cxx:323
 AliPHOSvFast.cxx:324
 AliPHOSvFast.cxx:325
 AliPHOSvFast.cxx:326
 AliPHOSvFast.cxx:327
 AliPHOSvFast.cxx:328
 AliPHOSvFast.cxx:329
 AliPHOSvFast.cxx:330
 AliPHOSvFast.cxx:331
 AliPHOSvFast.cxx:332
 AliPHOSvFast.cxx:333
 AliPHOSvFast.cxx:334
 AliPHOSvFast.cxx:335
 AliPHOSvFast.cxx:336
 AliPHOSvFast.cxx:337
 AliPHOSvFast.cxx:338
 AliPHOSvFast.cxx:339
 AliPHOSvFast.cxx:340
 AliPHOSvFast.cxx:341
 AliPHOSvFast.cxx:342
 AliPHOSvFast.cxx:343
 AliPHOSvFast.cxx:344
 AliPHOSvFast.cxx:345
 AliPHOSvFast.cxx:346
 AliPHOSvFast.cxx:347
 AliPHOSvFast.cxx:348
 AliPHOSvFast.cxx:349
 AliPHOSvFast.cxx:350
 AliPHOSvFast.cxx:351
 AliPHOSvFast.cxx:352
 AliPHOSvFast.cxx:353
 AliPHOSvFast.cxx:354
 AliPHOSvFast.cxx:355
 AliPHOSvFast.cxx:356
 AliPHOSvFast.cxx:357
 AliPHOSvFast.cxx:358
 AliPHOSvFast.cxx:359
 AliPHOSvFast.cxx:360
 AliPHOSvFast.cxx:361
 AliPHOSvFast.cxx:362
 AliPHOSvFast.cxx:363
 AliPHOSvFast.cxx:364
 AliPHOSvFast.cxx:365
 AliPHOSvFast.cxx:366
 AliPHOSvFast.cxx:367
 AliPHOSvFast.cxx:368
 AliPHOSvFast.cxx:369
 AliPHOSvFast.cxx:370
 AliPHOSvFast.cxx:371
 AliPHOSvFast.cxx:372
 AliPHOSvFast.cxx:373
 AliPHOSvFast.cxx:374
 AliPHOSvFast.cxx:375
 AliPHOSvFast.cxx:376
 AliPHOSvFast.cxx:377
 AliPHOSvFast.cxx:378
 AliPHOSvFast.cxx:379
 AliPHOSvFast.cxx:380
 AliPHOSvFast.cxx:381
 AliPHOSvFast.cxx:382
 AliPHOSvFast.cxx:383
 AliPHOSvFast.cxx:384
 AliPHOSvFast.cxx:385
 AliPHOSvFast.cxx:386
 AliPHOSvFast.cxx:387
 AliPHOSvFast.cxx:388
 AliPHOSvFast.cxx:389
 AliPHOSvFast.cxx:390
 AliPHOSvFast.cxx:391
 AliPHOSvFast.cxx:392
 AliPHOSvFast.cxx:393
 AliPHOSvFast.cxx:394
 AliPHOSvFast.cxx:395
 AliPHOSvFast.cxx:396
 AliPHOSvFast.cxx:397
 AliPHOSvFast.cxx:398
 AliPHOSvFast.cxx:399
 AliPHOSvFast.cxx:400
 AliPHOSvFast.cxx:401
 AliPHOSvFast.cxx:402
 AliPHOSvFast.cxx:403
 AliPHOSvFast.cxx:404
 AliPHOSvFast.cxx:405
 AliPHOSvFast.cxx:406
 AliPHOSvFast.cxx:407
 AliPHOSvFast.cxx:408
 AliPHOSvFast.cxx:409
 AliPHOSvFast.cxx:410
 AliPHOSvFast.cxx:411
 AliPHOSvFast.cxx:412
 AliPHOSvFast.cxx:413
 AliPHOSvFast.cxx:414
 AliPHOSvFast.cxx:415
 AliPHOSvFast.cxx:416
 AliPHOSvFast.cxx:417
 AliPHOSvFast.cxx:418
 AliPHOSvFast.cxx:419
 AliPHOSvFast.cxx:420
 AliPHOSvFast.cxx:421
 AliPHOSvFast.cxx:422
 AliPHOSvFast.cxx:423
 AliPHOSvFast.cxx:424
 AliPHOSvFast.cxx:425
 AliPHOSvFast.cxx:426
 AliPHOSvFast.cxx:427
 AliPHOSvFast.cxx:428
 AliPHOSvFast.cxx:429
 AliPHOSvFast.cxx:430
 AliPHOSvFast.cxx:431
 AliPHOSvFast.cxx:432
 AliPHOSvFast.cxx:433
 AliPHOSvFast.cxx:434
 AliPHOSvFast.cxx:435
 AliPHOSvFast.cxx:436
 AliPHOSvFast.cxx:437
 AliPHOSvFast.cxx:438
 AliPHOSvFast.cxx:439
 AliPHOSvFast.cxx:440
 AliPHOSvFast.cxx:441
 AliPHOSvFast.cxx:442
 AliPHOSvFast.cxx:443
 AliPHOSvFast.cxx:444
 AliPHOSvFast.cxx:445
 AliPHOSvFast.cxx:446
 AliPHOSvFast.cxx:447
 AliPHOSvFast.cxx:448
 AliPHOSvFast.cxx:449
 AliPHOSvFast.cxx:450
 AliPHOSvFast.cxx:451
 AliPHOSvFast.cxx:452
 AliPHOSvFast.cxx:453
 AliPHOSvFast.cxx:454
 AliPHOSvFast.cxx:455
 AliPHOSvFast.cxx:456
 AliPHOSvFast.cxx:457
 AliPHOSvFast.cxx:458
 AliPHOSvFast.cxx:459