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.39  2005/05/28 14:19:04  schutz
 * Compilation warnings fixed by T.P.
 *
 */

//_________________________________________________________________________
//  A  Particle modified by PHOS response and produced by AliPHOSvFast
//  To become a general class of AliRoot ?    
//--
//  This is also a base class for AliPHOSRecParticle produced by AliPHOSPIDv1
//  The rec.particle type is to be defined by AliPHOSvFast or AliPHOSPIDv1
//--
//*-- Author: Yves Schutz (SUBATECH)

// --- ROOT system ---

// --- Standard library ---

// --- AliRoot header files ---
#include "AliLog.h"
#include "AliPHOSFastRecParticle.h"
#include "TPad.h"
#include "TPaveText.h"

ClassImp(AliPHOSFastRecParticle) 

//____________________________________________________________________________
AliPHOSFastRecParticle::AliPHOSFastRecParticle() :
  fIndexInList(0),
  fTof(0.f),
  fType(0)
{
  // ctor

  for(Int_t i=0; i<AliPID::kSPECIESCN; i++) {
    fPID[i] = -111.;
  }
  
}

//____________________________________________________________________________
 AliPHOSFastRecParticle::AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp)
   : TParticle(rp),
     fIndexInList(rp.fIndexInList),//?
     fTof(rp.fTof),//?
     fType(rp.fType)
{
  // copy ctor
  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;

  for(Int_t i=0; i<AliPID::kSPECIESCN; i++) {
    fPID[i] = rp.fPID[i];
  }
 
}

//____________________________________________________________________________
 AliPHOSFastRecParticle::AliPHOSFastRecParticle(const TParticle & pp) :
   fIndexInList(0),
   fTof(0.f),
   fType(0)
{
  // ctor from a TParticle (crummy?!)
  TParticle & pnoconst = (TParticle &)(pp) ;
  AliPHOSFastRecParticle & p = (AliPHOSFastRecParticle &)(pnoconst) ;
  fPdgCode     = p.fPdgCode;
  fStatusCode  = p.fStatusCode;
  fMother[0]   = p.fMother[0];
  fMother[1]   = p.fMother[1];
  fDaughter[0] = p.fDaughter[0];
  fDaughter[1] = p.fDaughter[1];
  fWeight      = p.fWeight;
  fCalcMass    = p.fCalcMass;
  fPx          = p.fPx;
  fPy          = p.fPy;
  fPz          = p.fPz;
  fE           = p.fE;
  fVx          = p.fVx;
  fVy          = p.fVy;
  fVz          = p.fVz;
  fVt          = p.fVt;
  fPolarTheta  = p.fPolarTheta;
  fPolarPhi    = p.fPolarPhi;
  fParticlePDG = p.fParticlePDG; 
  
  for(Int_t i=0; i<AliPID::kSPECIESCN; i++) {
    fPID[i] = p.fPID[i];
  }
  
}

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

}
//____________________________________________________________________________
Int_t AliPHOSFastRecParticle::DistancetoPrimitive(Int_t px, Int_t py)
{
  //  Compute distance from point px,py to a AliPHOSFastRecParticle considered as a Tmarker
  //  Compute the closest distance of approach from point px,py to this marker.
  //  The distance is computed in pixels units.

  Double_t kRADDEG = 180. / TMath::Pi() ; 
  Coord_t x = Phi() * kRADDEG     ;
  Coord_t y = Theta() * kRADDEG     ;
  const Int_t kMaxDiff = 10;
  Int_t pxm  = gPad->XtoAbsPixel(x);
  Int_t pym  = gPad->YtoAbsPixel(y);
  Int_t dist = (px-pxm)*(px-pxm) + (py-pym)*(py-pym);
  
  if (dist > kMaxDiff) return 9999;
  return dist;
}

//___________________________________________________________________________
 void AliPHOSFastRecParticle::Draw(Option_t *option)
 {
   // Draw this AliPHOSFastRecParticle with its current attributes
    
   AppendPad(option);
 }

//______________________________________________________________________________
void AliPHOSFastRecParticle::ExecuteEvent(Int_t event, Int_t , Int_t )
{
  //  Execute action corresponding to one event
  //  This member function is called when a AliPHOSFastRecParticle is clicked with the locator
  
  if (!gPad->IsEditable()) 
    return ;
  
  static TPaveText * clustertext = 0 ; 
  
  switch (event) {
    
  case kButton1Down: {
    Double_t kRADDEG = 180. / TMath::Pi() ; 
    Coord_t x = Phi() * kRADDEG     ;
    Coord_t y = Theta() * kRADDEG     ;
    clustertext = new TPaveText(x-1, y+1, x+5, y+3, "") ;
    Text_t  line1[40] ;
    Text_t  line2[40] ;
    snprintf( line1,40, "PID: %s ", (const char*)Name() ) ;
    snprintf( line2,40, "ENERGY: %f ", Energy() ) ;
    clustertext ->AddText(line1) ;
    clustertext ->AddText(line2) ;
    clustertext ->Draw("");   
    gPad->Update() ; 
    break ;
  }
  
  case kButton1Up: {
    delete clustertext ; 
    clustertext = 0 ; 
    gPad->Update() ; 
    break ;
  }
  }
  
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsPhoton(TString purity) const
{
  // Rec.Particle is a photon if it has a photon-like shape, fast and neutral
  // photon-like shape is defined with a purity "low", "medium" or "high"

  purity.ToLower();
  Bool_t photonLike = kFALSE;
  if      (purity == "low"   ) photonLike = TestPIDBit(6);
  else if (purity == "medium") photonLike = TestPIDBit(7);
  else if (purity == "high"  ) photonLike = TestPIDBit(8);
  if (photonLike                                   && //  photon by PCA
      (TestPIDBit(5)||TestPIDBit(4)||TestPIDBit(3))&& //  fast by TOF
      (TestPIDBit(2)||TestPIDBit(1)||TestPIDBit(0))&& //  neutral by CPV
      !TestPIDBit(14))                              //  no charged track
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsPi0(TString purity) const
{
  // Rec.Particle is a pi0 if it has a pi0-like shape, fast and neutral
  // pi0-like shape is defined with a purity "low", "medium" or "high"

  purity.ToLower();
  Bool_t pi0Like = kFALSE;
  if      (purity == "low"   ) pi0Like = TestPIDBit(9);
  else if (purity == "medium") pi0Like = TestPIDBit(10);
  else if (purity == "high"  ) pi0Like = TestPIDBit(11);
  else 
    AliError(Form("Wrong purity type: %s",purity.Data()));
  if (pi0Like                                      && //  pi0 by PCA
      (TestPIDBit(5)||TestPIDBit(4)||TestPIDBit(3))&& //  fast by TOF
      (TestPIDBit(2)||TestPIDBit(1)||TestPIDBit(0))&& //  neutral by CPV
      !TestPIDBit(14))                              //  no charged track
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsElectron(TString purity) const
{
  // Rec.Particle is an electron if it has a photon-like shape, fast and charged
  // photon-like shape is defined with a purity "low", "medium" or "high"

  purity.ToLower();
  Bool_t photonLike = kFALSE;
  if      (purity == "low"   ) photonLike = TestPIDBit(6);
  else if (purity == "medium") photonLike = TestPIDBit(7);
  else if (purity == "high"  ) photonLike = TestPIDBit(8);
  else 
    AliError(Form("Wrong purity type: %s",purity.Data()));
  
  if (photonLike                                   && //  photon by PCA
      (TestPIDBit(5)|| TestPIDBit(4)|| TestPIDBit(3))&& //  fast by TOF
      (!TestPIDBit(2)||!TestPIDBit(1)||!TestPIDBit(0))&& //  charged by CPV
      TestPIDBit(14))                                  //  no charged track
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsEleCon(TString purity) const
{
  // Rec.Particle is an electron if it has a photon-like shape, fast and charged
  // photon-like shape is defined with a purity "low", "medium" or "high"

  purity.ToLower();
  Bool_t photonLike = kFALSE;
  if      (purity == "low"   ) photonLike = TestPIDBit(6);
  else if (purity == "medium") photonLike = TestPIDBit(7);
  else if (purity == "high"  ) photonLike = TestPIDBit(8);
  else 
    AliError(Form("Wrong purity type: %s",purity.Data()));
  
  if (photonLike                                   && //  photon by PCA
      (TestPIDBit(5)|| TestPIDBit(4)|| TestPIDBit(3))&& //  fast by TOF
      (!TestPIDBit(2)||!TestPIDBit(1)||!TestPIDBit(0))&& //  charged by CPV
      !TestPIDBit(14))                                  //  no charged track
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsHardPhoton() const
{
  // Rec.Particle is a hard photon (E > 30 GeV) if its second moment M2x
  // corresponds to photons
  if (TestPIDBit(12) && !TestPIDBit(14))
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsHardPi0() const
{
  // Rec.Particle is a hard pi0 (E > 30 GeV) if its second moment M2x
  // corresponds to pi0
  if (TestPIDBit(13)&& !TestPIDBit(14))
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsHadron() const
{
  // Rec.Particle is an hadron if it does not look like
  // a low-purity photon nor low-purity pi0

  if ( !TestPIDBit(6) && !TestPIDBit(9) )             // not photon nor pi0
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsChargedHadron() const
{
  // Rec.Particle is a charged hadron if it does not look like
  // a low-purity photon nor low-purity pi0 and is low-purity charged

  if ( !TestPIDBit(6) && !TestPIDBit(9) &&            // not photon nor pi0
       !TestPIDBit(2))                                // charged by CPV
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsNeutralHadron() const
{
  // Rec.Particle is a neutral hadron if it does not look like
  // a low-purity photon nor low-purity pi0 and is high-purity neutral

  if ( !TestPIDBit(6) && !TestPIDBit(9) &&            // not photon nor pi0
        TestPIDBit(2))                                // neutral by CPV
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsFastChargedHadron() const
{
  // Rec.Particle is a fast charged hadron if it does not look like
  // a low-purity photon nor low-purity pi0, is low-purity charged
  // and is high-purity fast

  if ( !TestPIDBit(6) && !TestPIDBit(9) &&            // not photon nor pi0
       !TestPIDBit(2) &&                              // charged by CPV
        TestPIDBit(5))                                // fast by TOF
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsSlowChargedHadron() const
{
  // Rec.Particle is a slow neutral hadron if it does not look like
  // a low-purity photon nor low-purity pi0, is high-purity neutral
  // and is not high-purity fast

  if ( !TestPIDBit(6) && !TestPIDBit(9) &&            // not photon nor pi0
       !TestPIDBit(2) &&                              // charged by CPV
       !TestPIDBit(5))                                // slow by TOF
    return kTRUE ;
  else
    return kFALSE;

}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsFastNeutralHadron() const
{
  // Rec.Particle is a fast neutral hadron if it does not look like
  // a low-purity photon nor low-purity pi0, is high-purity neutral
  // and is high-purity fast

  if ( !TestPIDBit(6) && !TestPIDBit(9) &&            // not photon nor pi0
        TestPIDBit(2) &&                              // neutral by CPV
        TestPIDBit(5))                                // fast by TOF
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
Bool_t AliPHOSFastRecParticle::IsSlowNeutralHadron() const
{
  // Rec.Particle is a slow neutral hadron if it does not look like
  // a low-purity photon nor low-purity pi0, is high-purity neutral
  // and is not high-purity fast

  if ( !TestPIDBit(6) && !TestPIDBit(9) &&            // not photon nor pi0
        TestPIDBit(2) &&                              // neutral by CPV
       !TestPIDBit(5))                                // slow by TOF
    return kTRUE ;
  else
    return kFALSE;
}

//____________________________________________________________________________
TString AliPHOSFastRecParticle::Name() const
{
  // Returns the name of the particle type (only valid if PIDv1 is employed)

  TString  name ; 

  name = "Undefined particle" ;
  
  if      (IsPhoton("low"))
    name = "Photon low purity, ";
  else if (IsPhoton("medium"))
    name = "Photon medium purity, ";
  else if (IsPhoton("high"))
    name = "Photon high purity, ";

  if      (IsPi0("low"))
    name = "Pi0 low purity, ";
  else if (IsPi0("medium"))
    name = "Pi0 medium purity, ";
  else if (IsPi0("high"))
    name = "Pi0 high purity, ";

  if      (IsElectron("low"))
    name = "Electron low purity, ";
  else if (IsElectron("medium"))
    name = "Electron medium purity, ";
  else if (IsElectron("high"))
    name = "Electron high purity, ";

  if     (IsHadron()) {
    name = "hadron";
    if      (IsChargedHadron()) {
      name.Prepend("charged, ");
      if      (IsFastChargedHadron())
	name.Prepend("fast, ");
      else if (IsSlowChargedHadron())
	name.Prepend("slow, ");
    }
    else if (IsNeutralHadron()) {
      name.Prepend("neutral, ");
      if      (IsFastNeutralHadron())
	name.Prepend("fast, ");
      else if (IsSlowNeutralHadron())
	name.Prepend("slow, ");
    }
  }

  return name ; 
}


//______________________________________________________________________________
void AliPHOSFastRecParticle::SetType(Int_t type) { 
  // sets the particle type 
  // bit-mask of the particle type means the following:
  // bits 0,1,2   - neutral particle with low, medium and high purity
  // bits 3.4,5   - fast particle with low, medium and high purity
  // bits 6.7,8   - photon shower with low, medium and high purity
  // bits 9,10,11 - hard-pi0 shower with low, medium and high purity

  fType = type ; 
  
  if((type == 127) || (fType == 511) || (fType == 255) ||(fType == 383)||(fType == 447)){
    fPdgCode = 22 ; 
    return ;
  }
  
  if ((fType == 63)|| ((fType < 8)&&(fType > 0)) ){
    fPdgCode = 2112 ; 
    return ;
  }
  if ( ((fType == 504) || (fType == 505) ||(fType == 248)||(fType == 249)||(fType == 120)||(fType == 121)) ){
    fPdgCode = 11 ; 
    return ;
  }
  if ((fType == 448) || (fType == 449) ||(fType == 192)||(fType == 193)||(fType == 64)||(fType == 64)){
    fPdgCode = 13 ; 
    return ;
  }
  if((fType == 56)||(fType == 57)){
    fPdgCode = 211 ; 
    return ;
  }
  if (fType == 0){
    fPdgCode = 2212 ; 
    return ;
  }

}	    

//______________________________________________________________________________
void AliPHOSFastRecParticle::Paint(Option_t *)
{
  // Paint this ALiRecParticle in theta,phi coordinate as a TMarker  with its current attributes

  Double_t kRADDEG = 180. / TMath::Pi() ; 
  Coord_t x = Phi() * kRADDEG     ;
  Coord_t y = Theta() * kRADDEG     ;
  Color_t markercolor = 1 ;
  Size_t  markersize  = 1. ;
  Style_t markerstyle = 5 ;
  
  if (!gPad->IsBatch()) {
    gVirtualX->SetMarkerColor(markercolor) ;
    gVirtualX->SetMarkerSize (markersize)  ;
    gVirtualX->SetMarkerStyle(markerstyle) ;
  }
  gPad->SetAttMarkerPS(markercolor,markerstyle,markersize) ;
  gPad->PaintPolyMarker(1,&x,&y,"") ;
}

//____________________________________________________________________________
void AliPHOSFastRecParticle::Print(const Option_t *)const
{
  // Print the type, energy and momentum of the reconstructed particle

  AliInfo(Form("Print  -----------------------------")) ;  
  printf("PID bits are %d%d%d %d%d%d %d%d%d %d%d%d",  
	 TestPIDBit(0),TestPIDBit(1),
	 TestPIDBit(2),TestPIDBit(3),
	 TestPIDBit(4),TestPIDBit(5),
	 TestPIDBit(6),TestPIDBit(7),
	 TestPIDBit(8),TestPIDBit(9),
	 TestPIDBit(10),TestPIDBit(11)) ; 
  printf(", type is \"%s\"\n", Name().Data()) ; 
  printf("  (E,Px,Py,Pz) = (% .3e, % .3e, % .3e, % .3e) GeV\n",     
	 Energy(), 
	 Px(), 
	 Py(),
	 Pz() ) ; 
  printf("  TOF = %.3e ns\n", ToF() ) ; 
  printf("  PID weight: \n" ) ;
  printf("             photon ->              %f\n", fPID[AliPID::kPhoton] ) ; 
  printf("             electron ->            %f\n", fPID[AliPID::kElectron] ) ; 
  printf("             Conversion electron -> %f\n", fPID[AliPID::kEleCon] ) ; 
  printf("             muon ->                %f\n", fPID[AliPID::kMuon] ) ; 
  printf("             neutral pion ->        %f\n", fPID[AliPID::kPi0] ) ; 
  printf("             charged pion ->        %f\n", fPID[AliPID::kPion] ) ; 
  printf("             charged kaon ->        %f\n", fPID[AliPID::kKaon] ) ; 
  printf("             neutral kaon ->        %f\n", fPID[AliPID::kKaon0] ) ; 
  printf("             proton ->              %f\n", fPID[AliPID::kProton] ) ; 
  printf("             neutron ->             %f\n", fPID[AliPID::kNeutron] ) ; 

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