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$ */
//_________________________________________________________________________
//  A Reconstructed Particle in PHOS    
//  To become a general class of AliRoot ?       
//  Why should I put meaningless comments
//  just to satisfy
//  the code checker                 
//       
//*-- Author: Yves Schutz (SUBATECH)


// --- ROOT system ---

// --- Standard library ---


// --- AliRoot header files ---
#include "AliStack.h"
#include "AliPHOSHit.h" 
#include "AliPHOSDigit.h" 
#include "AliPHOSTrackSegment.h" 
#include "AliPHOSEmcRecPoint.h" 
#include "AliPHOSRecParticle.h"
#include "AliPHOSLoader.h" 
#include "AliPHOSGeometry.h" 
#include "AliLog.h"

//____________________________________________________________________________
AliPHOSRecParticle::AliPHOSRecParticle(): 
  fPHOSTrackSegment(0),
  fDebug(kFALSE),
  fPos()
{
  // ctor
  const Int_t nSPECIES = AliPID::kSPECIESCN;
  for(Int_t i = 0; i<nSPECIES ; i++)
    fPID[i]=0.;
}


//____________________________________________________________________________
AliPHOSRecParticle::AliPHOSRecParticle(const AliPHOSRecParticle & rp):
  AliPHOSFastRecParticle(rp),
  fPHOSTrackSegment(rp.fPHOSTrackSegment),
  fDebug(kFALSE),
  fPos()
{
  // copy ctor
  fType             = rp.fType ; 
  fIndexInList      = rp.fIndexInList ;

  fPdgCode     = rp.fPdgCode;
  fStatusCode  = rp.fStatusCode;
  fMother[0]   = rp.fMother[0];
  fMother[1]   = rp.fMother[1];
  fDaughter[0] = rp.fDaughter[0];
  fDaughter[1] = rp.fDaughter[1];
  fWeight      = rp.fWeight;
  fCalcMass    = rp.fCalcMass;
  fPx          = rp.fPx;
  fPy          = rp.fPy;
  fPz          = rp.fPz;
  fE           = rp.fE;
  fVx          = rp.fVx;
  fVy          = rp.fVy;
  fVz          = rp.fVz;
  fVt          = rp.fVt;
  fPolarTheta  = rp.fPolarTheta;
  fPolarPhi    = rp.fPolarPhi;
  fParticlePDG = rp.fParticlePDG; 
  const Int_t nSPECIES = AliPID::kSPECIESCN;
  for(Int_t i = 0; i<nSPECIES ; i++)
    fPID[i]=rp.fPID[i];
}

//____________________________________________________________________________
AliPHOSRecParticle & AliPHOSRecParticle::operator = (const AliPHOSRecParticle &)
{
  Fatal("operator =", "not implemented");
  return *this;
}

//____________________________________________________________________________
Int_t AliPHOSRecParticle::GetNPrimaries() const  
{ 
  return -1;
}

//____________________________________________________________________________
Int_t AliPHOSRecParticle::GetNPrimariesToRecParticles() const  
{ 
  // Get the number of primaries at the origine of the RecParticle
  Int_t rv = 0 ;
  AliRunLoader* rl = AliRunLoader::Instance() ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
  Int_t emcRPindex = static_cast<AliPHOSTrackSegment*>(phosLoader->TrackSegments()->At(GetPHOSTSIndex()))->GetEmcIndex();
  static_cast<AliPHOSEmcRecPoint*>(phosLoader->EmcRecPoints()->At(emcRPindex))->GetPrimaries(rv) ; 
  return rv ; 
}

//____________________________________________________________________________
const TParticle * AliPHOSRecParticle::GetPrimary() const  
{
  // Get the primary particle at the origine of the RecParticle and 
  // which has deposited the largest energy in SDigits
  AliRunLoader* rl = AliRunLoader::Instance() ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
  rl->GetEvent(rl->GetEventNumber()) ;
  rl->LoadKinematics("READ");
  rl->LoadSDigits("READ");
  
  if(GetNPrimaries() == 0)
    return 0 ;
  if(GetNPrimaries() == 1)
    return GetPrimary(0) ;
  Int_t AbsId = 0;
  Int_t module ;

  // Get PHOS Geometry object
  AliPHOSGeometry *geom;
  if (!(geom = AliPHOSGeometry::GetInstance())) 
        geom = AliPHOSGeometry::GetInstance("IHEP","");
  Double_t x,z ;
//DP to be fixed: Why do we use this method here??? M.B. use RecPoint???
  Double_t vtx[3]={0.,0.,0.} ;
  geom->ImpactOnEmc(vtx,static_cast<double>(Theta()),static_cast<double>(Phi()), module,z,x);
  Int_t amp = 0 ;
  Int_t iPrim=-1 ;
  if(module != 0){
    geom->RelPosToAbsId(module,x,z,AbsId) ;
   TClonesArray * sdigits = phosLoader->SDigits() ;
   AliPHOSDigit * sdig ;
    
   for(Int_t i = 0 ; i < sdigits->GetEntriesFast() ; i++){
     sdig = static_cast<AliPHOSDigit *>(sdigits->At(i)) ;
     if((sdig->GetId() == AbsId)){
       if((sdig->GetAmp() > amp) && (sdig->GetNprimary())){
	 amp = sdig->GetAmp() ;
	 iPrim = sdig->GetPrimary(1) ;
       } 
       // do not scan rest of list
       if(sdig->GetId() > AbsId)
	 continue ; 
     }
   }
  }
  if(iPrim >= 0)
    return rl->Stack()->Particle(iPrim) ;
  else
    return 0 ;
} 
  
//____________________________________________________________________________
Int_t AliPHOSRecParticle::GetPrimaryIndex() const  
{
  // Get the primary track index in TreeK which deposits the most energy
  // in Digits which forms EmcRecPoint, which produces TrackSegment,
  // which the RecParticle is created from


  AliRunLoader* rl = AliRunLoader::Instance() ;
  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
  rl->GetEvent(rl->GetEventNumber()) ;
  rl->LoadHits("READ");
  rl->LoadDigits("READ");
  rl->LoadRecPoints("READ");
  rl->LoadTracks("READ");
  
  // Get TrackSegment corresponding to this RecParticle
  const AliPHOSTrackSegment *ts          = phosLoader->TrackSegment(fPHOSTrackSegment);

  // Get EmcRecPoint corresponding to this TrackSegment
  Int_t emcRecPointIndex = ts->GetEmcIndex();

  const AliPHOSEmcRecPoint  *emcRecPoint = phosLoader->EmcRecPoint(emcRecPointIndex);

  // Get the list of digits forming this EmcRecParticle
  Int_t  nDigits   = emcRecPoint->GetDigitsMultiplicity();
  Int_t *digitList = emcRecPoint->GetDigitsList();

  // Find the digit with maximum amplitude
  Int_t maxAmp = 0;
  Int_t bestDigitIndex = -1;
  for (Int_t iDigit=0; iDigit<nDigits; iDigit++) {
    const AliPHOSDigit * digit = phosLoader->Digit(digitList[iDigit]);
    if (digit->GetAmp() > maxAmp) {
      maxAmp = digit->GetAmp();
      bestDigitIndex = iDigit;
    }
  }
  if (bestDigitIndex>-1) {
    const AliPHOSDigit * digit = phosLoader->Digit(digitList[bestDigitIndex]);
    if (digit==0) return -12345;
  }
  
  // Get the list of primary tracks producing this digit
  // and find which track has more track energy.
  //Int_t nPrimary = digit->GetNprimary();
  //TParticle *track = 0;
  //Double_t energyEM     = 0;
  //Double_t energyHadron = 0;
  //Int_t    trackEM      = -1;
  //Int_t    trackHadron  = -1;
  //for (Int_t iPrim=0; iPrim<nPrimary; iPrim++) {
  //  Int_t iPrimary = digit->GetPrimary(iPrim+1);
  //  if (iPrimary == -1 || TMath::Abs(iPrimary)>10000000)
  //    continue ;  //PH 10000000 is the shift of the track 
  //                //PH indexes in the underlying event
  //  track = gime->Primary(iPrimary);
  //  Int_t pdgCode   = track->GetPdgCode();
  //  Double_t energy = track->Energy();
  //  if (pdgCode==22 || TMath::Abs(pdgCode)==11) {
  //    if (energy > energyEM) {
  //	energyEM = energy;
  //	trackEM = iPrimary;
  //      }
  //   }
  //  else {
  //     if (energy > energyHadron) {
  //	energyHadron = energy;
  //	trackHadron = iPrimary;
	//    }
  //  }
  //}
  // Preferences are given to electromagnetic tracks
  //if (trackEM     != -1) return trackEM;     // track is gamma or e+-
  //if (trackHadron != -1) return trackHadron; // track is hadron
  //return -12345;                             // no track found :(


  // Get the list of hits producing this digit,
  // find which hit has deposited more energy 
  // and find the primary track.

  TClonesArray *hits = phosLoader->Hits();
  if (hits==0) return -12345;

  Double_t maxedep  =  0;
  Int_t    maxtrack = -1;
  Int_t    nHits    = hits ->GetEntries();
  Int_t    id       = (phosLoader->Digit(digitList[bestDigitIndex]))->GetId();

  for (Int_t iHit=0; iHit<nHits; iHit++) {
    const AliPHOSHit * hit = phosLoader->Hit(iHit);
    if(hit->GetId() == id){
      Double_t edep  = hit->GetEnergy();
      Int_t    track = hit->GetPrimary();
      if(edep > maxedep){
	maxedep  = edep;
	maxtrack = track;
      }
    }
  }

  if (maxtrack != -1) return maxtrack; // track is hadron
  return -12345;                       // no track found :(
}

//____________________________________________________________________________
const TParticle * AliPHOSRecParticle::GetPrimary(Int_t index) const  
{
  // Get one of the primary particles at the origine of the RecParticle
  if ( index > GetNPrimariesToRecParticles() ) { 
    if (fDebug) 
      Warning("GetPrimary", "AliPHOSRecParticle::GetPrimary -> %d is larger that the number of primaries %d", 
	      index, GetNPrimaries()) ;
    return 0 ; 
  } 
  else { 
    Int_t dummy ; 
    AliRunLoader* rl = AliRunLoader::Instance() ;
    AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));

    Int_t emcRPindex = static_cast<AliPHOSTrackSegment*>(phosLoader->TrackSegments()->At(GetPHOSTSIndex()))->GetEmcIndex();
    Int_t primaryindex = static_cast<AliPHOSEmcRecPoint*>(phosLoader->EmcRecPoints()->At(emcRPindex))->GetPrimaries(dummy)[index] ; 
    return rl->Stack()->Particle(primaryindex) ;
   } 
  //  return 0 ; 
}

//____________________________________________________________________________
void AliPHOSRecParticle::SetPID(Int_t type, Float_t weight)
{
  // Set the probability densities that this reconstructed particle
  // has a type of i:
  // i       particle types
  // ----------------------
  // 0       electron
  // 1       muon
  // 2       pi+-
  // 3       K+-
  // 4       p/pbar
  // 5       photon
  // 6       pi0 at high pt
  // 7       neutron
  // 8       K0L
  // 9       Conversion electron
  
  fPID[type] = weight ; 
}
 AliPHOSRecParticle.cxx:1
 AliPHOSRecParticle.cxx:2
 AliPHOSRecParticle.cxx:3
 AliPHOSRecParticle.cxx:4
 AliPHOSRecParticle.cxx:5
 AliPHOSRecParticle.cxx:6
 AliPHOSRecParticle.cxx:7
 AliPHOSRecParticle.cxx:8
 AliPHOSRecParticle.cxx:9
 AliPHOSRecParticle.cxx:10
 AliPHOSRecParticle.cxx:11
 AliPHOSRecParticle.cxx:12
 AliPHOSRecParticle.cxx:13
 AliPHOSRecParticle.cxx:14
 AliPHOSRecParticle.cxx:15
 AliPHOSRecParticle.cxx:16
 AliPHOSRecParticle.cxx:17
 AliPHOSRecParticle.cxx:18
 AliPHOSRecParticle.cxx:19
 AliPHOSRecParticle.cxx:20
 AliPHOSRecParticle.cxx:21
 AliPHOSRecParticle.cxx:22
 AliPHOSRecParticle.cxx:23
 AliPHOSRecParticle.cxx:24
 AliPHOSRecParticle.cxx:25
 AliPHOSRecParticle.cxx:26
 AliPHOSRecParticle.cxx:27
 AliPHOSRecParticle.cxx:28
 AliPHOSRecParticle.cxx:29
 AliPHOSRecParticle.cxx:30
 AliPHOSRecParticle.cxx:31
 AliPHOSRecParticle.cxx:32
 AliPHOSRecParticle.cxx:33
 AliPHOSRecParticle.cxx:34
 AliPHOSRecParticle.cxx:35
 AliPHOSRecParticle.cxx:36
 AliPHOSRecParticle.cxx:37
 AliPHOSRecParticle.cxx:38
 AliPHOSRecParticle.cxx:39
 AliPHOSRecParticle.cxx:40
 AliPHOSRecParticle.cxx:41
 AliPHOSRecParticle.cxx:42
 AliPHOSRecParticle.cxx:43
 AliPHOSRecParticle.cxx:44
 AliPHOSRecParticle.cxx:45
 AliPHOSRecParticle.cxx:46
 AliPHOSRecParticle.cxx:47
 AliPHOSRecParticle.cxx:48
 AliPHOSRecParticle.cxx:49
 AliPHOSRecParticle.cxx:50
 AliPHOSRecParticle.cxx:51
 AliPHOSRecParticle.cxx:52
 AliPHOSRecParticle.cxx:53
 AliPHOSRecParticle.cxx:54
 AliPHOSRecParticle.cxx:55
 AliPHOSRecParticle.cxx:56
 AliPHOSRecParticle.cxx:57
 AliPHOSRecParticle.cxx:58
 AliPHOSRecParticle.cxx:59
 AliPHOSRecParticle.cxx:60
 AliPHOSRecParticle.cxx:61
 AliPHOSRecParticle.cxx:62
 AliPHOSRecParticle.cxx:63
 AliPHOSRecParticle.cxx:64
 AliPHOSRecParticle.cxx:65
 AliPHOSRecParticle.cxx:66
 AliPHOSRecParticle.cxx:67
 AliPHOSRecParticle.cxx:68
 AliPHOSRecParticle.cxx:69
 AliPHOSRecParticle.cxx:70
 AliPHOSRecParticle.cxx:71
 AliPHOSRecParticle.cxx:72
 AliPHOSRecParticle.cxx:73
 AliPHOSRecParticle.cxx:74
 AliPHOSRecParticle.cxx:75
 AliPHOSRecParticle.cxx:76
 AliPHOSRecParticle.cxx:77
 AliPHOSRecParticle.cxx:78
 AliPHOSRecParticle.cxx:79
 AliPHOSRecParticle.cxx:80
 AliPHOSRecParticle.cxx:81
 AliPHOSRecParticle.cxx:82
 AliPHOSRecParticle.cxx:83
 AliPHOSRecParticle.cxx:84
 AliPHOSRecParticle.cxx:85
 AliPHOSRecParticle.cxx:86
 AliPHOSRecParticle.cxx:87
 AliPHOSRecParticle.cxx:88
 AliPHOSRecParticle.cxx:89
 AliPHOSRecParticle.cxx:90
 AliPHOSRecParticle.cxx:91
 AliPHOSRecParticle.cxx:92
 AliPHOSRecParticle.cxx:93
 AliPHOSRecParticle.cxx:94
 AliPHOSRecParticle.cxx:95
 AliPHOSRecParticle.cxx:96
 AliPHOSRecParticle.cxx:97
 AliPHOSRecParticle.cxx:98
 AliPHOSRecParticle.cxx:99
 AliPHOSRecParticle.cxx:100
 AliPHOSRecParticle.cxx:101
 AliPHOSRecParticle.cxx:102
 AliPHOSRecParticle.cxx:103
 AliPHOSRecParticle.cxx:104
 AliPHOSRecParticle.cxx:105
 AliPHOSRecParticle.cxx:106
 AliPHOSRecParticle.cxx:107
 AliPHOSRecParticle.cxx:108
 AliPHOSRecParticle.cxx:109
 AliPHOSRecParticle.cxx:110
 AliPHOSRecParticle.cxx:111
 AliPHOSRecParticle.cxx:112
 AliPHOSRecParticle.cxx:113
 AliPHOSRecParticle.cxx:114
 AliPHOSRecParticle.cxx:115
 AliPHOSRecParticle.cxx:116
 AliPHOSRecParticle.cxx:117
 AliPHOSRecParticle.cxx:118
 AliPHOSRecParticle.cxx:119
 AliPHOSRecParticle.cxx:120
 AliPHOSRecParticle.cxx:121
 AliPHOSRecParticle.cxx:122
 AliPHOSRecParticle.cxx:123
 AliPHOSRecParticle.cxx:124
 AliPHOSRecParticle.cxx:125
 AliPHOSRecParticle.cxx:126
 AliPHOSRecParticle.cxx:127
 AliPHOSRecParticle.cxx:128
 AliPHOSRecParticle.cxx:129
 AliPHOSRecParticle.cxx:130
 AliPHOSRecParticle.cxx:131
 AliPHOSRecParticle.cxx:132
 AliPHOSRecParticle.cxx:133
 AliPHOSRecParticle.cxx:134
 AliPHOSRecParticle.cxx:135
 AliPHOSRecParticle.cxx:136
 AliPHOSRecParticle.cxx:137
 AliPHOSRecParticle.cxx:138
 AliPHOSRecParticle.cxx:139
 AliPHOSRecParticle.cxx:140
 AliPHOSRecParticle.cxx:141
 AliPHOSRecParticle.cxx:142
 AliPHOSRecParticle.cxx:143
 AliPHOSRecParticle.cxx:144
 AliPHOSRecParticle.cxx:145
 AliPHOSRecParticle.cxx:146
 AliPHOSRecParticle.cxx:147
 AliPHOSRecParticle.cxx:148
 AliPHOSRecParticle.cxx:149
 AliPHOSRecParticle.cxx:150
 AliPHOSRecParticle.cxx:151
 AliPHOSRecParticle.cxx:152
 AliPHOSRecParticle.cxx:153
 AliPHOSRecParticle.cxx:154
 AliPHOSRecParticle.cxx:155
 AliPHOSRecParticle.cxx:156
 AliPHOSRecParticle.cxx:157
 AliPHOSRecParticle.cxx:158
 AliPHOSRecParticle.cxx:159
 AliPHOSRecParticle.cxx:160
 AliPHOSRecParticle.cxx:161
 AliPHOSRecParticle.cxx:162
 AliPHOSRecParticle.cxx:163
 AliPHOSRecParticle.cxx:164
 AliPHOSRecParticle.cxx:165
 AliPHOSRecParticle.cxx:166
 AliPHOSRecParticle.cxx:167
 AliPHOSRecParticle.cxx:168
 AliPHOSRecParticle.cxx:169
 AliPHOSRecParticle.cxx:170
 AliPHOSRecParticle.cxx:171
 AliPHOSRecParticle.cxx:172
 AliPHOSRecParticle.cxx:173
 AliPHOSRecParticle.cxx:174
 AliPHOSRecParticle.cxx:175
 AliPHOSRecParticle.cxx:176
 AliPHOSRecParticle.cxx:177
 AliPHOSRecParticle.cxx:178
 AliPHOSRecParticle.cxx:179
 AliPHOSRecParticle.cxx:180
 AliPHOSRecParticle.cxx:181
 AliPHOSRecParticle.cxx:182
 AliPHOSRecParticle.cxx:183
 AliPHOSRecParticle.cxx:184
 AliPHOSRecParticle.cxx:185
 AliPHOSRecParticle.cxx:186
 AliPHOSRecParticle.cxx:187
 AliPHOSRecParticle.cxx:188
 AliPHOSRecParticle.cxx:189
 AliPHOSRecParticle.cxx:190
 AliPHOSRecParticle.cxx:191
 AliPHOSRecParticle.cxx:192
 AliPHOSRecParticle.cxx:193
 AliPHOSRecParticle.cxx:194
 AliPHOSRecParticle.cxx:195
 AliPHOSRecParticle.cxx:196
 AliPHOSRecParticle.cxx:197
 AliPHOSRecParticle.cxx:198
 AliPHOSRecParticle.cxx:199
 AliPHOSRecParticle.cxx:200
 AliPHOSRecParticle.cxx:201
 AliPHOSRecParticle.cxx:202
 AliPHOSRecParticle.cxx:203
 AliPHOSRecParticle.cxx:204
 AliPHOSRecParticle.cxx:205
 AliPHOSRecParticle.cxx:206
 AliPHOSRecParticle.cxx:207
 AliPHOSRecParticle.cxx:208
 AliPHOSRecParticle.cxx:209
 AliPHOSRecParticle.cxx:210
 AliPHOSRecParticle.cxx:211
 AliPHOSRecParticle.cxx:212
 AliPHOSRecParticle.cxx:213
 AliPHOSRecParticle.cxx:214
 AliPHOSRecParticle.cxx:215
 AliPHOSRecParticle.cxx:216
 AliPHOSRecParticle.cxx:217
 AliPHOSRecParticle.cxx:218
 AliPHOSRecParticle.cxx:219
 AliPHOSRecParticle.cxx:220
 AliPHOSRecParticle.cxx:221
 AliPHOSRecParticle.cxx:222
 AliPHOSRecParticle.cxx:223
 AliPHOSRecParticle.cxx:224
 AliPHOSRecParticle.cxx:225
 AliPHOSRecParticle.cxx:226
 AliPHOSRecParticle.cxx:227
 AliPHOSRecParticle.cxx:228
 AliPHOSRecParticle.cxx:229
 AliPHOSRecParticle.cxx:230
 AliPHOSRecParticle.cxx:231
 AliPHOSRecParticle.cxx:232
 AliPHOSRecParticle.cxx:233
 AliPHOSRecParticle.cxx:234
 AliPHOSRecParticle.cxx:235
 AliPHOSRecParticle.cxx:236
 AliPHOSRecParticle.cxx:237
 AliPHOSRecParticle.cxx:238
 AliPHOSRecParticle.cxx:239
 AliPHOSRecParticle.cxx:240
 AliPHOSRecParticle.cxx:241
 AliPHOSRecParticle.cxx:242
 AliPHOSRecParticle.cxx:243
 AliPHOSRecParticle.cxx:244
 AliPHOSRecParticle.cxx:245
 AliPHOSRecParticle.cxx:246
 AliPHOSRecParticle.cxx:247
 AliPHOSRecParticle.cxx:248
 AliPHOSRecParticle.cxx:249
 AliPHOSRecParticle.cxx:250
 AliPHOSRecParticle.cxx:251
 AliPHOSRecParticle.cxx:252
 AliPHOSRecParticle.cxx:253
 AliPHOSRecParticle.cxx:254
 AliPHOSRecParticle.cxx:255
 AliPHOSRecParticle.cxx:256
 AliPHOSRecParticle.cxx:257
 AliPHOSRecParticle.cxx:258
 AliPHOSRecParticle.cxx:259
 AliPHOSRecParticle.cxx:260
 AliPHOSRecParticle.cxx:261
 AliPHOSRecParticle.cxx:262
 AliPHOSRecParticle.cxx:263
 AliPHOSRecParticle.cxx:264
 AliPHOSRecParticle.cxx:265
 AliPHOSRecParticle.cxx:266
 AliPHOSRecParticle.cxx:267
 AliPHOSRecParticle.cxx:268
 AliPHOSRecParticle.cxx:269
 AliPHOSRecParticle.cxx:270
 AliPHOSRecParticle.cxx:271
 AliPHOSRecParticle.cxx:272
 AliPHOSRecParticle.cxx:273
 AliPHOSRecParticle.cxx:274
 AliPHOSRecParticle.cxx:275
 AliPHOSRecParticle.cxx:276
 AliPHOSRecParticle.cxx:277
 AliPHOSRecParticle.cxx:278
 AliPHOSRecParticle.cxx:279
 AliPHOSRecParticle.cxx:280
 AliPHOSRecParticle.cxx:281
 AliPHOSRecParticle.cxx:282
 AliPHOSRecParticle.cxx:283
 AliPHOSRecParticle.cxx:284
 AliPHOSRecParticle.cxx:285
 AliPHOSRecParticle.cxx:286
 AliPHOSRecParticle.cxx:287
 AliPHOSRecParticle.cxx:288
 AliPHOSRecParticle.cxx:289
 AliPHOSRecParticle.cxx:290
 AliPHOSRecParticle.cxx:291
 AliPHOSRecParticle.cxx:292
 AliPHOSRecParticle.cxx:293
 AliPHOSRecParticle.cxx:294
 AliPHOSRecParticle.cxx:295
 AliPHOSRecParticle.cxx:296
 AliPHOSRecParticle.cxx:297
 AliPHOSRecParticle.cxx:298
 AliPHOSRecParticle.cxx:299
 AliPHOSRecParticle.cxx:300
 AliPHOSRecParticle.cxx:301
 AliPHOSRecParticle.cxx:302
 AliPHOSRecParticle.cxx:303
 AliPHOSRecParticle.cxx:304
 AliPHOSRecParticle.cxx:305
 AliPHOSRecParticle.cxx:306
 AliPHOSRecParticle.cxx:307
 AliPHOSRecParticle.cxx:308
 AliPHOSRecParticle.cxx:309
 AliPHOSRecParticle.cxx:310
 AliPHOSRecParticle.cxx:311
 AliPHOSRecParticle.cxx:312
 AliPHOSRecParticle.cxx:313
 AliPHOSRecParticle.cxx:314