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.                  *
 **************************************************************************/
//////////////////////////////////////////////////////////////////////////
//                                                                      //
// AliEMCALPIDResponse                                                  //
//                                                                      //
// EMCAL class to perfom PID                                            //
// This is a prototype and still under development                      //
//                                                                      //
// ---------------------------------------------------------------------//
// GetNumberOfSigmas():                                                 //
//                                                                      //
// Electrons:  Number of Sigmas for E/p value                           //
//             Parametrization of LHC11a (after recalibration)          //
//                                                                      //
// NON electrons:                                                       //
//             Below or above E/p thresholds ( E/p < 0.5 || E/p > 1.5)  //
//             --> return +/- 99                                        //
//             Otherwise                                                //
//             --> return nsigma (parametrization of LHC10e)            //
//                                                                      //
// NO Parametrization (outside pT range): --> return -999               //
//                                                                      //
// ---------------------------------------------------------------------//
// ComputeEMCALProbability():                                           //
//                                                                      //
// Electrons:  Probability from Gaussian distribution                   //
//                                                                      //
// NON electrons:                                                       //
//             Below or above E/p thresholds ( E/p < 0.5 || E/p > 1.5)  //
//             --> probability to find particles below or above thr.    //
//             Otherwise                                                //
//             -->  Probability from Gaussian distribution              //
//                  (proper normalization to each other?)               //
//                                                                      //
// NO Parametrization (outside pT range): --> return kFALSE             //
//////////////////////////////////////////////////////////////////////////

#include <TF1.h>
#include <TMath.h>

#include "AliEMCALPIDResponse.h"       //class header

#include "AliLog.h"   

ClassImp(AliEMCALPIDResponse)

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliEMCALPIDResponse::AliEMCALPIDResponse():
  TObject(),
  fNorm(NULL),
  fCurrCentrality(-1.),
  fkPIDParams(NULL)
{
  //
  //  The default constructor
  //


  fNorm = new TF1("fNorm","gaus",-20,20); 
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliEMCALPIDResponse::AliEMCALPIDResponse(const AliEMCALPIDResponse &other):
  TObject(other),
  fNorm(other.fNorm),
  fCurrCentrality(other.fCurrCentrality),
  fkPIDParams(other.fkPIDParams)
{
  //
  //  The copy constructor
  //

}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliEMCALPIDResponse & AliEMCALPIDResponse::operator=( const AliEMCALPIDResponse& other)
{
  //
  //  The assignment operator
  //

  if(this == &other) return *this;
  
  // Make copy
  TObject::operator=(other);
  fNorm = other.fNorm;
  fCurrCentrality = other.fCurrCentrality;
  fkPIDParams = other.fkPIDParams;

 
  return *this;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliEMCALPIDResponse::~AliEMCALPIDResponse() {

  delete fNorm;

}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Double_t AliEMCALPIDResponse::GetExpectedNorm( Float_t pt, AliPID::EParticleType n,  Int_t charge) const  {
  //
  // Calculates the expected sigma of the PID signal as the function of 
  // the information stored in the track, for the specified particle type 
  //  
  //
  
  Double_t norm = 1.;

  // Check the charge
  if( charge != -1 && charge != 1){
    return norm;
  }

  // Get the parameters for this particle type and pt
  const TVectorD *params = GetParams(n, pt, charge);

  // IF not in momentum range, NULL is returned --> return default value
  if(!params) return norm;

  Double_t mean     = (*params)[2];   // mean value of Gausiian parametrization
  Double_t sigma    = (*params)[3];   // sigma value of Gausiian parametrization
  Double_t eopMin   = (*params)[4];   // min E/p value for parametrization
  Double_t eopMax   = (*params)[5];   // max E/p value for parametrization
  Double_t probLow  = (*params)[6];   // probability to be below eopMin
  Double_t probHigh = (*params)[7];   // probability to be above eopMax

  // Get the normalization factor ( Probability in the parametrized area / Integral of parametrized Gauss function in this area )
  fNorm->SetParameters(1./TMath::Sqrt(2*TMath::Pi()*sigma*sigma),mean,sigma);
  norm = 1./fNorm->Integral(eopMin,eopMax)*(1-probLow-probHigh);

  return norm;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Double_t  AliEMCALPIDResponse::GetNumberOfSigmas( Float_t pt,  Float_t eop, AliPID::EParticleType n,  Int_t charge) const {
      
  Double_t nsigma = -999.;

  // Check the charge
  if( charge != -1 && charge != 1){
    return nsigma;
  }

  // Get the parameters for this particle type and pt
  const TVectorD *params = GetParams(n, pt, charge);

  // IF not in momentum range, NULL is returned --> return default value
  if(!params) return nsigma;

  Double_t mean     = (*params)[2];   // mean value of Gausiian parametrization
  Double_t sigma    = (*params)[3];   // sigma value of Gausiian parametrization
  Double_t eopMin   = (*params)[4];   // min E/p value for parametrization
  Double_t eopMax   = (*params)[5];   // max E/p value for parametrization

  // if electron
  if(n == AliPID::kElectron){
    if(sigma != 0) nsigma = (eop - mean) / sigma;
  }

  // if NON electron
  else{
    if ( eop < eopMin )
      nsigma = -99;    // not parametrized (smaller than eopMin)
    else if ( eop > eopMax )
      nsigma = 99.;     // not parametrized (bigger than eopMax)
    else{
      if(sigma != 0) nsigma = (eop - mean) / sigma; 
    }
  }

  return nsigma;

}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bool_t AliEMCALPIDResponse::ComputeEMCALProbability(Int_t nSpecies, Float_t pt, Float_t eop, Int_t charge, Double_t *pEMCAL) const {
  //
  //
  Double_t fRange  = 5.0;   // hardcoded (???)
  Double_t nsigma  = 0.0;
  

  // Check the charge
  if( charge != -1 && charge != 1){
    return kFALSE;
  }

 
  // default value (will be returned, if pt below threshold)
  for (Int_t species = 0; species < nSpecies; species++) {
    pEMCAL[species] = 1./nSpecies;
  }

  // set E/p range
  if(eop < 0.05) eop = 0.05;
  if(eop > 2.00) eop = 2.00;
  
  for (Int_t species = 0; species < nSpecies; species++) {
    
    AliPID::EParticleType type = AliPID::EParticleType(species);

    // Get the parameters for this particle type and pt
    const TVectorD *params = GetParams(species, pt, charge);
    
    // IF not in momentum/species (only for kSPECIES so far) range, NULL is returned --> return kFALSE
    if(!params) return kFALSE;

    Double_t sigma    = (*params)[3];   // sigma value of Gausiian parametrization
    Double_t probLow  = (*params)[6];   // probability to be below eopMin
    Double_t probHigh = (*params)[7];   // probability to be above eopMax

    // get nsigma value for each particle type at this E/p value
    nsigma = GetNumberOfSigmas(pt,eop,type,charge);

    // electrons (standard Gaussian calculation of probabilities)
    if(type == AliPID::kElectron){
      if (TMath::Abs(nsigma) > fRange) {
	pEMCAL[species]=TMath::Exp(-0.5*fRange*fRange)/TMath::Sqrt(2*TMath::Pi()*sigma*sigma);
      }
      else{
	pEMCAL[species]=TMath::Exp(-0.5*(nsigma)*(nsigma))/TMath::Sqrt(2*TMath::Pi()*sigma*sigma);
      }
    }
    //NON electrons
    else{
      // E/p < eopMin  -->  return probability below E/p = eopMin
      if ( nsigma == -99){
	pEMCAL[species] = probLow;
      }
      // E/p > eopMax  -->  return probability above E/p = eopMax
      else if ( nsigma == 99){
	pEMCAL[species] = probHigh;
      }
      // in parametrized region --> calculate probability for corresponding Gauss curve
      else{
	pEMCAL[species]=TMath::Exp(-0.5*(nsigma)*(nsigma))/TMath::Sqrt(2*TMath::Pi()*sigma*sigma);
	
	// normalize to total probability == 1
	pEMCAL[species]*=GetExpectedNorm(pt,type,charge);
      }
    }
  }

  return kTRUE;

}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
const TVectorD* AliEMCALPIDResponse::GetParams(Int_t nParticle, Float_t fPt, Int_t charge) const {
  //
  // returns the PID parameters (mean, sigma, probabilities for Hadrons) for a certain particle and pt
  //
  // 0 = momMin
  // 1 = momMax
  // 2 = mean of Gaus
  // 3 = sigma of Gaus
  // 4 = eopLow   
  // 5 = eopHig   
  // 6 = probLow  (not used for electrons)
  // 7 = probHigh (not used for electrons)
  //
  // for PbPb the parametrization is done centrality dependent (marked by TString "Centrality")
  // so first the correct centrality bin has to be found

  // **** Centrality bins (hard coded for the moment)
  const Int_t nCent = 7;
  Int_t centBins[nCent+1] = {0,10,20,30,40,50,70,90};

  if(nParticle > AliPID::kSPECIES || nParticle <0) return NULL;
  if(nParticle == AliPID::kProton && charge == -1) nParticle = AliPID::kSPECIES; // special case for antiprotons

  TObjArray * particlePar = dynamic_cast<TObjArray *>(fkPIDParams->At(nParticle));
  if(!particlePar) return NULL;

  const TVectorD *parameters = NULL;
  Double_t momMin = 0.;
  Double_t momMax = 0.;

  // is the centrality dependent parametrization used
  TString arrayName = particlePar->GetName();

  // centrality dependent parametrization
  if(arrayName.Contains("Centrality")){
    
    for(Int_t iCent = 0; iCent < nCent; iCent++){

      if( fCurrCentrality > centBins[iCent] && fCurrCentrality < centBins[iCent+1] ){
	
	TObjArray * centPar = dynamic_cast<TObjArray *>(particlePar->At(iCent));
	if(!centPar) return NULL;
	
	TIter centIter(centPar);
	parameters = NULL;
	momMin = 0.;
	momMax = 0.;
	
	while((parameters = static_cast<const TVectorD *>(centIter()))){
	  
	  momMin = (*parameters)[0];
	  momMax = (*parameters)[1];
	  
	  if( fPt > momMin && fPt < momMax ) return parameters;
	 
	} 
      }
    }
  }

  // NO centrality dependent parametrization
  else{

    TIter parIter(particlePar);
    while((parameters = static_cast<const TVectorD *>(parIter()))){
      
      momMin = (*parameters)[0];
      momMax = (*parameters)[1];
      
      if( fPt > momMin && fPt < momMax ) return parameters;
      
    }  
  }
  AliDebug(2, Form("NO params for particle %d and momentum %f \n", nParticle, fPt));

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