ROOT logo
/**************************************************************************
 * Copyright(c) 2009-2012, 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$ */



///////////////////////////////////////////////////////////////////
//                                                               //
// Class to store information for PID with ITS                   //
// and truncated mean computation methods                        //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "AliITSPidParams.h"
#include "AliITSdEdxSamples.h"
#include "AliLog.h"
#include <TMath.h>

ClassImp(AliITSdEdxSamples)

//______________________________________________________________________
AliITSdEdxSamples::AliITSdEdxSamples():TObject(),
  fNSamples(0),
  fClusterMap(0),
  fP(0.),
  fParticleSpecie(0),
  fLayersForPid(0xFFFF)
{
  // Default constructor
  for(Int_t i=0; i<kMaxSamples; i++){
    fdESamples[i]=0.;
    fdxSamples[i]=0.;
    fPAtSample[i]=0.;
  }
}

//______________________________________________________________________
AliITSdEdxSamples::AliITSdEdxSamples(Int_t nSamples, Double_t* esamples, Double_t* xsamples, Double_t mom, Int_t specie) :
  TObject(),
  fNSamples(nSamples),
  fClusterMap(0),
  fP(mom),
  fParticleSpecie(specie),
  fLayersForPid(0xFFFF)
{
  // Standard constructor
  SetdESamples(nSamples,esamples);
  SetdxSamples(nSamples,xsamples);
  SetClusterMapFromdE();
}

//______________________________________________________________________
AliITSdEdxSamples::AliITSdEdxSamples(const AliITSdEdxSamples& source) :
  TObject(),
  fNSamples(source.fNSamples),
  fClusterMap(source.fClusterMap),
  fP(source.fP),
  fParticleSpecie(source.fParticleSpecie),
  fLayersForPid(source.fLayersForPid)
{
  // Copy constructor
  for(Int_t i=0; i<kMaxSamples; i++){
    fdESamples[i]=source.GetdESample(i);
    fdxSamples[i]=source.GetdxSample(i);
    fPAtSample[i]=source.GetMomentumAtSample(i);
  }
}
//_____________________________________________________________________________
AliITSdEdxSamples& AliITSdEdxSamples::operator=(const AliITSdEdxSamples &source){
  // Assignment operator
 if(this==&source) return *this;
  ((TObject *)this)->operator=(source);
  fNSamples = source.fNSamples;
  fClusterMap = source.fClusterMap;
  fP = source.fP;
  fParticleSpecie = source.fParticleSpecie;
  fLayersForPid = source.fLayersForPid;
  for(Int_t i=0; i<kMaxSamples; i++){
    fdESamples[i]=source.GetdESample(i);
    fdxSamples[i]=source.GetdxSample(i);
    fPAtSample[i]=source.GetMomentumAtSample(i);
  }
  return *this;
}

//______________________________________________________________________
void AliITSdEdxSamples::SetdESamples(Int_t nSamples, Double_t* samples){
  // Set the samples

  if(nSamples>kMaxSamples){
    AliWarning(Form("Too many dE samples,only first %d will be used",kMaxSamples));    
    fNSamples=kMaxSamples;
  }else{
    fNSamples=nSamples;
  }
  for(Int_t i=0; i<fNSamples; i++) fdESamples[i]=samples[i];
  for(Int_t i=fNSamples; i<kMaxSamples; i++) fdESamples[i]=0.;
  return;
}
//______________________________________________________________________
void AliITSdEdxSamples::SetdxSamples(Int_t nSamples, Double_t* samples){
  // Set the samples

  if(nSamples>kMaxSamples){
    AliWarning(Form("Too many dx samples,only first %d will be used",kMaxSamples));
    fNSamples=kMaxSamples;
  }else{
    fNSamples=nSamples;
  }
  for(Int_t i=0; i<fNSamples; i++) fdxSamples[i]=samples[i];
  for(Int_t i=fNSamples; i<kMaxSamples; i++) fdxSamples[i]=0.;
  return;
}

//______________________________________________________________________
void AliITSdEdxSamples::SetSamplesAndMomenta(Int_t nSamples, Double_t* esamples, Double_t* xsamples, Double_t* mom){
  // Set the samples
  SetdESamples(nSamples,esamples);
  SetdxSamples(nSamples,xsamples);
  for(Int_t i=0; i<fNSamples; i++) fPAtSample[i]=mom[i];
  for(Int_t i=fNSamples; i<kMaxSamples; i++) fPAtSample[i]=0.;
  return;
}
//______________________________________________________________________
void AliITSdEdxSamples::SetLayerSample(Int_t iLayer, Bool_t haspoint, Double_t dE, Double_t dx, Double_t p){
  // set info from single layer
  if(haspoint){
    SetPointOnLayer(iLayer);
    fdESamples[iLayer]=dE; 
    fdxSamples[iLayer]=dx; 
    fPAtSample[iLayer]=p;
  }else{
    if(HasPointOnLayer(iLayer)) fClusterMap-=(1<<iLayer);
    fdESamples[iLayer]=0.; 
    fdxSamples[iLayer]=0.; 
    fPAtSample[iLayer]=0.;
       
  }
}
//______________________________________________________________________
Double_t AliITSdEdxSamples::GetTruncatedMean(Double_t frac, Double_t mindedx) const {
  // compute truncated mean 

  Int_t nc=0;
  Double_t dedx[kMaxSamples];
  for (Int_t il=0; il<fNSamples; il++) { // count good (>0) dE/dx values
    Double_t dedxsamp=GetdEdxSample(il);
    if(HasPointOnLayer(il) && UseLayerForPid(il) && dedxsamp>mindedx){
      dedx[nc]= dedxsamp;
      nc++;
    }    
  }
  if(nc<1) return 0.;

  Int_t swap; // sort in ascending order
  do {
    swap=0;
    for (Int_t i=0; i<nc-1; i++) {
      if (dedx[i]<=dedx[i+1]) continue;
      Double_t tmp=dedx[i];
      dedx[i]=dedx[i+1]; 
      dedx[i+1]=tmp;
      swap++;
    }
  } while (swap);

  Double_t sumamp=0,sumweight=0;
  Double_t weight[kMaxSamples];
  for(Int_t iw=0; iw<kMaxSamples; iw++) weight[iw]=0.;
  Int_t lastUsed=(Int_t)(frac*nc+0.00001);
  if(lastUsed==0) lastUsed=1;
  if(lastUsed>kMaxSamples) lastUsed=kMaxSamples;
  for(Int_t iw=0; iw<lastUsed; iw++) weight[iw]=1.;
  if((frac*nc-lastUsed)>0.4 && lastUsed<kMaxSamples) weight[lastUsed]=0.5;
  for (Int_t i=0; i<nc; i++) {
    // AliDebug(5,Form("dE/dx %f   weight %f",dedx[i],weight[i]));
    sumamp+= dedx[i]*weight[i];
    sumweight+=weight[i];
  }
  if(sumweight>0.) return sumamp/sumweight;
  else return 0.;

}
//______________________________________________________________________
Double_t AliITSdEdxSamples::GetWeightedMean(Double_t mindedx) const {
  // compute generalized mean with k=-2 (used by CMS)
  Int_t nc=0;
  Double_t dedx[kMaxSamples];
  for (Int_t il=0; il<fNSamples; il++) { // count good (>0) dE/dx values
    Double_t dedxsamp=GetdEdxSample(il);
    if(HasPointOnLayer(il) && UseLayerForPid(il) && dedxsamp>mindedx){
      dedx[nc]= dedxsamp;
      nc++;      
    }
  }
  if(nc<1) return 0.;

  Double_t weiSum = 0.;
  for (Int_t i=0; i<nc; i++) {
    weiSum+=TMath::Power(dedx[i],-2);
  }
  Double_t wMean=0.;
  if(weiSum>0.) wMean= TMath::Power(weiSum/nc,-0.5);
  return wMean;

}
//______________________________________________________________________
void  AliITSdEdxSamples::GetConditionalProbabilities(const AliITSPidParams* pars, Double_t condprob[AliPID::kSPECIES], Double_t mindedx) const {
  // compute conditional probablilities
  const Int_t nPart = 3;
  Double_t itsProb[nPart] = {1,1,1}; // p, K, pi

  for(Int_t iS=0; iS<fNSamples; iS++){
    if(!HasPointOnLayer(iS)) continue;
    if(!UseLayerForPid(iS)) continue;
    Int_t iLayer=iS+3; // to match with present ITS
    if(iLayer>6) iLayer=6; // all extra points are treated as SSD
    Float_t dedx = GetdEdxSample(iS);
    if(dedx<mindedx) continue;
    Float_t layProb = pars->GetLandauGausNorm(dedx,AliPID::kProton,fP,iLayer);
    itsProb[0] *= layProb;

    layProb = pars->GetLandauGausNorm(dedx,AliPID::kKaon,fP,iLayer);
    if (fP < 0.16) layProb=0.00001;
    itsProb[1] *= layProb;
    
    layProb = pars->GetLandauGausNorm(dedx,AliPID::kPion,fP,iLayer);
    itsProb[2] *= layProb;
  }

  // Normalise probabilities
  Double_t sumProb = 0;
  for (Int_t iPart = 0; iPart < nPart; iPart++) {
    sumProb += itsProb[iPart];
  }
  sumProb += 2*itsProb[2]; // muon and electron cannot be distinguished from pions

  for (Int_t iPart = 0; iPart < nPart; iPart++) {
    itsProb[iPart]/=sumProb;
  }
  
  condprob[AliPID::kElectron] = itsProb[2];
  condprob[AliPID::kMuon] = itsProb[2];
  condprob[AliPID::kPion] = itsProb[2];
  condprob[AliPID::kKaon] = itsProb[1];
  condprob[AliPID::kProton] = itsProb[0];
  return;

}
//______________________________________________________________________
void  AliITSdEdxSamples::PrintAll() const{
  // print all the infos
  printf("Particle %d momentum %f GeV/c, number of points %d\n",
	 GetParticleSpecieMC(),
	 fP,
	 GetNumberOfEffectiveSamples());
  for(Int_t iLay=0; iLay<fNSamples; iLay++){
    printf("   Layer %d   Point %d   dE %f keV  dx %f cm  mom %f GeV/c\n",iLay,
	   HasPointOnLayer(iLay),
	   GetdESample(iLay),
	   GetdxSample(iLay),
	   GetMomentumAtSample(iLay));
  }

  printf("Layers used for PID:\n");
  printf("Layer ");
  for(Int_t iLay=0; iLay<fNSamples; iLay++){
    printf("%d ",iLay);
  }
  printf("\n");
  
  printf("Use   ");
  for(Int_t iLay=0; iLay<fNSamples; iLay++){
    printf("%d ",UseLayerForPid(iLay));
  }
  printf("\n");
  printf("Truncated mean = %f\n",GetTruncatedMean());
}
//______________________________________________________________________
void  AliITSdEdxSamples::PrintClusterMap() const{
  // print the cluster map

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