ROOT logo
#ifndef ALIEMCALPIDUTILS_H
#define ALIEMCALPIDUTILS_H

/* $Id: AliEMCALPIDUtils.h 33808 2009-07-15 09:48:08Z gconesab $ */

///////////////////////////////////////////////////////////////////////////////
// Class AliEMCALPIDUtils
// Compute PID weights for all the clusters
///////////////////////////////////////////////////////////////////////////////

//Root includes
#include "TNamed.h"
class TArrayD ;

//AliRoot includes
#include "AliPID.h" 

class AliEMCALPIDUtils : public TNamed {

public:
  
  AliEMCALPIDUtils();
/*   AliEMCALPIDUtils(Bool_t reconstructor); */
  //virtual ~AliEMCALPIDUtils() { }
  
  void     ComputePID(Double_t energy, Double_t lambda0); // give the PID of a cluster

  void     InitParameters();
  void     SetLowFluxParam();
  void     SetHighFluxParam();

  TArrayD  DistLambda0(const Double_t energy, const Int_t nature) ; // compute lambda0 distributions
  
  Double_t DistEnergy(const Double_t energy, const Int_t nature) ;

  Double_t GetPID(Int_t idx) const {if (idx>=0&&idx<3) return fPID[idx]; else return 0.;}
  Double_t GetPIDFinal(Int_t idx) const {if (idx>=0&&idx<AliPID::kSPECIESCN) return fPIDFinal[idx]; else return 0.;}
  Double_t GetPIDWeight(Int_t idx) const {if (idx>=0&&idx<3) return fPIDWeight[idx]; else return 0.;}
  
  void    SetPID(Double_t val, Int_t idx) {if (idx>=0&&idx<3) fPID[idx] = val;}
  void    SetPIDFinal(Double_t val, Int_t idx) {if (idx>=0&&idx<AliPID::kSPECIESCN) fPIDFinal[idx] = val;}
  void    SetPIDWeight(Double_t val, Int_t idx) {if (idx>=0&&idx<3) fPIDWeight[idx] = val;}
  void    SetPrintInfo(Bool_t yesno) {fPrintInfo = yesno;}
	
   	
	
 private:
  
  Double_t Polynomial(const Double_t x, const Double_t *params) const ;
  Double_t Polynomialinv(const Double_t x, const Double_t *params) const ;
  Double_t PolynomialMixed1(const Double_t x, const Double_t *params) const ;
  Double_t PolynomialMixed2(const Double_t x, const Double_t *params) const ;
  Double_t Polynomial0(const Double_t *params) const ;
  Double_t PowerExp(const Double_t x, const Double_t *params) const ;
	
protected: 	
  Bool_t   fPrintInfo;          // flag to decide if details about PID must be printed
  
  Double_t fGamma[6][6];            // Parameter to Compute PID for photons
  Double_t fGamma1to10[6][6];       // Parameter to Compute PID not used
  Double_t fHadron[6][6];	        // Parameter to Compute PID for hadrons, 1 to 10 GeV
  Double_t fHadron1to10[6][6];	    // Parameter to Compute PID for hadrons, 1 to 10 GeV
  Double_t fPiZero[6][6];           // Parameter to Compute PID for pi0
  Double_t fHadronEnergyProb[6]; 	// Parameter to Compute PID for energy ponderation for hadrons  	 
  Double_t fPiZeroEnergyProb[6]; 	// Parameter to Compute PID for energy ponderation for Pi0  	 
  Double_t fGammaEnergyProb[6]; 	// Parameter to Compute PID for energy ponderation for gamma  	 
   
  Float_t fPID[3];
  
  Float_t  fPIDFinal[AliPID::kSPECIESCN+1]; // final PID format
  Float_t  fPIDWeight[3];                  // order: gamma, pi0, hadrons,
  Double_t fProbGamma;	                  // probility to be a Gamma
  Double_t fProbPiZero;	                  // probility to be a PiO
  Double_t fProbHadron;	                  // probility to be a Hadron
  Double_t fWeightHadronEnergy;	          // Weight for a  a Hadron to have a given energy  (parametr from a flat distrib from 0 to 100)
  Double_t fWeightGammaEnergy;	          // Weight for a  Gamma to have a given energy  (for the moment =1.)
  Double_t fWeightPiZeroEnergy;	          // Weight for a Pi0 Hadron to have a given energy (for the moment =1.)
  
  ClassDef(AliEMCALPIDUtils, 2)

};

#endif // ALIEMCALPIDUTILS_H


 AliEMCALPIDUtils.h:1
 AliEMCALPIDUtils.h:2
 AliEMCALPIDUtils.h:3
 AliEMCALPIDUtils.h:4
 AliEMCALPIDUtils.h:5
 AliEMCALPIDUtils.h:6
 AliEMCALPIDUtils.h:7
 AliEMCALPIDUtils.h:8
 AliEMCALPIDUtils.h:9
 AliEMCALPIDUtils.h:10
 AliEMCALPIDUtils.h:11
 AliEMCALPIDUtils.h:12
 AliEMCALPIDUtils.h:13
 AliEMCALPIDUtils.h:14
 AliEMCALPIDUtils.h:15
 AliEMCALPIDUtils.h:16
 AliEMCALPIDUtils.h:17
 AliEMCALPIDUtils.h:18
 AliEMCALPIDUtils.h:19
 AliEMCALPIDUtils.h:20
 AliEMCALPIDUtils.h:21
 AliEMCALPIDUtils.h:22
 AliEMCALPIDUtils.h:23
 AliEMCALPIDUtils.h:24
 AliEMCALPIDUtils.h:25
 AliEMCALPIDUtils.h:26
 AliEMCALPIDUtils.h:27
 AliEMCALPIDUtils.h:28
 AliEMCALPIDUtils.h:29
 AliEMCALPIDUtils.h:30
 AliEMCALPIDUtils.h:31
 AliEMCALPIDUtils.h:32
 AliEMCALPIDUtils.h:33
 AliEMCALPIDUtils.h:34
 AliEMCALPIDUtils.h:35
 AliEMCALPIDUtils.h:36
 AliEMCALPIDUtils.h:37
 AliEMCALPIDUtils.h:38
 AliEMCALPIDUtils.h:39
 AliEMCALPIDUtils.h:40
 AliEMCALPIDUtils.h:41
 AliEMCALPIDUtils.h:42
 AliEMCALPIDUtils.h:43
 AliEMCALPIDUtils.h:44
 AliEMCALPIDUtils.h:45
 AliEMCALPIDUtils.h:46
 AliEMCALPIDUtils.h:47
 AliEMCALPIDUtils.h:48
 AliEMCALPIDUtils.h:49
 AliEMCALPIDUtils.h:50
 AliEMCALPIDUtils.h:51
 AliEMCALPIDUtils.h:52
 AliEMCALPIDUtils.h:53
 AliEMCALPIDUtils.h:54
 AliEMCALPIDUtils.h:55
 AliEMCALPIDUtils.h:56
 AliEMCALPIDUtils.h:57
 AliEMCALPIDUtils.h:58
 AliEMCALPIDUtils.h:59
 AliEMCALPIDUtils.h:60
 AliEMCALPIDUtils.h:61
 AliEMCALPIDUtils.h:62
 AliEMCALPIDUtils.h:63
 AliEMCALPIDUtils.h:64
 AliEMCALPIDUtils.h:65
 AliEMCALPIDUtils.h:66
 AliEMCALPIDUtils.h:67
 AliEMCALPIDUtils.h:68
 AliEMCALPIDUtils.h:69
 AliEMCALPIDUtils.h:70
 AliEMCALPIDUtils.h:71
 AliEMCALPIDUtils.h:72
 AliEMCALPIDUtils.h:73
 AliEMCALPIDUtils.h:74
 AliEMCALPIDUtils.h:75
 AliEMCALPIDUtils.h:76
 AliEMCALPIDUtils.h:77
 AliEMCALPIDUtils.h:78
 AliEMCALPIDUtils.h:79
 AliEMCALPIDUtils.h:80
 AliEMCALPIDUtils.h:81
 AliEMCALPIDUtils.h:82
 AliEMCALPIDUtils.h:83
 AliEMCALPIDUtils.h:84
 AliEMCALPIDUtils.h:85