ROOT logo
#ifndef ALITPCPIDRESPONSE_H
#define ALITPCPIDRESPONSE_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//-------------------------------------------------------
//                    TPC PID class
// A very naive design... Should be made better by the detector experts...
//   Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
// With many additions and modifications suggested by
//      Alexander Kalweit, GSI, alexander.philipp.kalweit@cern.ch
//      Dariusz Miskowiec, GSI, D.Miskowiec@gsi.de
// ...and some modifications by
//      Mikolaj Krzewicki, GSI, mikolaj.krzewicki@cern.ch
// ...and some modifications plus eta correction functions by
//      Benjamin Hess, University of Tuebingen, bhess@cern.ch
//-------------------------------------------------------
#include <Rtypes.h>

#include <TNamed.h>
#include <TVectorF.h>
#include <TObjArray.h>
#include <TF1.h>

#include "AliPID.h"
#include "AliVTrack.h"

class TH2D;
class TSpline3;

class AliTPCPIDResponse: public TNamed {
public:
  AliTPCPIDResponse();
  //TODO Remove? AliTPCPIDResponse(const Double_t *param);
  AliTPCPIDResponse(const AliTPCPIDResponse&);
  AliTPCPIDResponse& operator=(const AliTPCPIDResponse&);
  virtual ~AliTPCPIDResponse();

  enum EChamberStatus {
    kChamberOff=0,
    kChamberHighGain=1,
    kChamberLowGain=2,
    kChamberInvalid=3
  };
  
  enum ETPCgainScenario {
    kDefault= 0,
    kALLhigh = 1,
    kOROChigh = 2,
    kGainScenarioInvalid = 3
  };

  static const Int_t fgkNumberOfParticleSpecies=AliPID::kSPECIESC;
  static const Int_t fgkNumberOfGainScenarios=3;
  static const Int_t fgkNumberOfdEdxSourceScenarios=3;

  enum ETPCdEdxSource {
    kdEdxDefault=0,        // use combined dEdx from IROC+OROC (assumes ideal detector)
    kdEdxOROC=1,       // use only OROC
    kdEdxHybrid=2,   // Use IROC+OROC dEdx only where IROCS are good (high gain), otherwise fall back to OROC only
    kdEdxInvalid=3     //invalid
  };

  void SetSigma(Float_t res0, Float_t resN2);
  void SetBetheBlochParameters(Double_t kp1,
                               Double_t kp2,
                               Double_t kp3,
                               Double_t kp4,
                               Double_t kp5
                               );
  //Better prevent user from setting fMIP != 50. because fMIP set fix to 50 for much other code:
  void SetMip(Float_t mip) { fMIP = mip; } // Set overall normalisation; mean dE/dx for MIP
  Double_t Bethe(Double_t bg) const;
  void SetUseDatabase(Bool_t useDatabase) { fUseDatabase = useDatabase;}
  Bool_t GetUseDatabase() const { return fUseDatabase;}
  
  void SetResponseFunction(AliPID::EParticleType type, TObject * const o) { fResponseFunctions.AddAt(o,(Int_t)type); }
  const TObject * GetResponseFunction(AliPID::EParticleType type) { return fResponseFunctions.At((Int_t)type); }
  void SetVoltage(Int_t n, Float_t v) {fVoltageMap[n]=v;}
  void SetVoltageMap(const TVectorF& a) {fVoltageMap=a;} //resets ownership, ~ will not delete contents
  Float_t GetVoltage(Int_t n) const {return fVoltageMap[n];}
  void SetLowGainIROCthreshold(Float_t v) {fLowGainIROCthreshold=v;}
  void SetBadIROCthreshold(Float_t v) {fBadIROCthreshhold=v;}
  void SetLowGainOROCthreshold(Float_t v) {fLowGainOROCthreshold=v;}
  void SetBadOROCthreshold(Float_t v) {fBadOROCthreshhold=v;}
  void SetMaxBadLengthFraction(Float_t f) {fMaxBadLengthFraction=f;}

  void SetMagField(Double_t mf) { fMagField=mf; }
  
  const TH2D* GetEtaCorrMap() const { return fhEtaCorr; };
  Bool_t SetEtaCorrMap(TH2D* hMap);
  
  Double_t GetTrackTanTheta(const AliVTrack *track) const;
  
  Double_t GetEtaCorrection(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource = kdEdxDefault) const;
    
  Double_t GetEtaCorrectedTrackdEdx(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource = kdEdxDefault) const;

  const TH2D* GetSigmaPar1Map() const { return fhEtaSigmaPar1; };
  Double_t GetSigmaPar0() const { return fSigmaPar0; };
  Bool_t SetSigmaParams(TH2D* hSigmaPar1Map, Double_t sigmaPar0);
  
  Double_t GetSigmaPar1(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource = kdEdxDefault) const;

  
  const TF1* GetMultiplicityCorrectionFunction() const  { return fCorrFuncMultiplicity; };
  void SetParameterMultiplicityCorrection(Int_t parIndex, Double_t parValue)  
      { if (fCorrFuncMultiplicity) fCorrFuncMultiplicity->SetParameter(parIndex, parValue); };
  
  const TF1* GetMultiplicityCorrectionFunctionTanTheta() const  { return fCorrFuncMultiplicityTanTheta; };
  void SetParameterMultiplicityCorrectionTanTheta(Int_t parIndex, Double_t parValue)  
      { if (fCorrFuncMultiplicityTanTheta) fCorrFuncMultiplicityTanTheta->SetParameter(parIndex, parValue); };

  const TF1* GetMultiplicitySigmaCorrectionFunction() const  { return fCorrFuncSigmaMultiplicity; };
  void SetParameterMultiplicitySigmaCorrection(Int_t parIndex, Double_t parValue)  
      { if (fCorrFuncSigmaMultiplicity) fCorrFuncSigmaMultiplicity->SetParameter(parIndex, parValue); };
  
  void ResetMultiplicityCorrectionFunctions(); 
  
  void SetCurrentEventMultiplicity(Int_t value) { fCurrentEventMultiplicity = value;  };
  Int_t GetCurrentEventMultiplicity() const { return fCurrentEventMultiplicity; };

  Double_t GetMultiplicityCorrection(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource = kdEdxDefault) const;
  
  Double_t GetMultiplicitySigmaCorrection(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource = kdEdxDefault) const;

  Double_t GetMultiplicityCorrectedTrackdEdx(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource = kdEdxDefault) const;
  
  Double_t GetEtaAndMultiplicityCorrectedTrackdEdx(const AliVTrack *track, AliPID::EParticleType species,
                                                   ETPCdEdxSource dedxSource = kdEdxDefault) const;
  
  // Fast functions for expert use only
  Double_t GetEtaCorrectionFast(const AliVTrack *track, Double_t dEdxSplines) const;
  
  Double_t GetMultiplicityCorrectionFast(const AliVTrack *track, Double_t dEdxExpected, Int_t multiplicity) const;
  
  Double_t GetMultiplicitySigmaCorrectionFast(Double_t dEdxExpected, Int_t multiplicity) const;
  
  Double_t GetSigmaPar1Fast(const AliVTrack *track, AliPID::EParticleType species,
                            Double_t dEdx, const TSpline3* responseFunction) const;
  
  //NEW
  void SetSigma(Float_t res0, Float_t resN2, ETPCgainScenario gainScenario );
  Double_t GetExpectedSignal( const AliVTrack* track,
                              AliPID::EParticleType species,
                              ETPCdEdxSource dedxSource = kdEdxDefault,
                              Bool_t correctEta = kFALSE,
                              Bool_t correctMultiplicity = kFALSE) const;
  Double_t GetExpectedSigma( const AliVTrack* track, 
                             AliPID::EParticleType species,
                             ETPCdEdxSource dedxSource = kdEdxDefault,
                             Bool_t correctEta = kFALSE,
                             Bool_t correctMultiplicity = kFALSE) const;
  Float_t GetNumberOfSigmas( const AliVTrack* track,
                             AliPID::EParticleType species,
                             ETPCdEdxSource dedxSource = kdEdxDefault,
                             Bool_t correctEta = kFALSE,
                             Bool_t correctMultiplicity = kFALSE) const;
  
  Float_t GetSignalDelta( const AliVTrack* track,
                          AliPID::EParticleType species,
                          ETPCdEdxSource dedxSource = kdEdxDefault,
                          Bool_t correctEta = kFALSE,
                          Bool_t correctMultiplicity = kFALSE,
                          Bool_t ratio = kFALSE) const;
  
  void SetResponseFunction(TObject* o,
                           AliPID::EParticleType type,
                           ETPCgainScenario gainScenario);
  void Print(Option_t* option="") const;
  TSpline3* GetResponseFunction( AliPID::EParticleType species,
                                 ETPCgainScenario gainScenario ) const;
  TSpline3* GetResponseFunction( const AliVTrack* track,
                                 AliPID::EParticleType species,
                                 ETPCdEdxSource dedxSource = kdEdxDefault) const;
  Bool_t ResponseFunctiondEdxN(const AliVTrack* track, 
                               AliPID::EParticleType species,
                               ETPCdEdxSource dedxSource,
                               Double_t& dEdx, Int_t& nPoints, ETPCgainScenario& gainScenario, TSpline3** responseFunction) const;
  Bool_t sectorNumbersInOut(Double_t* trackPositionInner,
                            Double_t* trackPositionOuter,
                            Float_t& phiIn, Float_t& phiOut, 
                            Int_t& in, Int_t& out ) const;
  AliTPCPIDResponse::EChamberStatus TrackStatus(const AliVTrack* track, Int_t layer) const;
  Float_t MaxClusterRadius(const AliVTrack* track) const;
  Bool_t TrackApex(const AliVTrack* track, Float_t magField, Double_t position[3]) const;
  static const char* GainScenarioName(Int_t n) {return fgkGainScenarioName[(n>fgkNumberOfGainScenarios)?fgkNumberOfGainScenarios:n];}
  Int_t ResponseFunctionIndex( AliPID::EParticleType species,
                               ETPCgainScenario gainScenario ) const;
  void ResetSplines();

  //OLD
  Double_t GetExpectedSignal(Float_t mom,
                     AliPID::EParticleType n=AliPID::kKaon) const;
  Double_t GetExpectedSigma(Float_t mom, Int_t nPoints,
                            AliPID::EParticleType n=AliPID::kKaon) const;
  Float_t  GetNumberOfSigmas(Float_t mom, 
                             Float_t dEdx, 
			     Int_t nPoints,
                             AliPID::EParticleType n=AliPID::kKaon) const {
    //
    // Deprecated function (for backward compatibility). Please use 
    // GetNumberOfSigmas(const AliVTrack *track, AliPID::EParticleType species, ETPCdEdxSource dedxSource,
    // Bool_t correctEta, Bool_t correctMultiplicity)
    // instead!TODO
    //
    
    Double_t bethe=GetExpectedSignal(mom,n);
    Double_t sigma=GetExpectedSigma(mom,nPoints,n);
    return (dEdx-bethe)/sigma;
  }

  Double_t GetMIP() const { return fMIP;} 
  Float_t  GetRes0()  const { return fRes0[0];  }
  Float_t  GetResN2() const { return fResN2[0]; }
  Float_t  GetRes0(ETPCgainScenario s)  const { return fRes0[s];  }
  Float_t  GetResN2(ETPCgainScenario s) const { return fResN2[s]; }

  Bool_t   RegisterSpline(const char * name, Int_t index);
  Double_t EvaldEdxSpline(Double_t bg,Int_t entry);
  static   Double_t SEvaldEdx(Double_t bg,Int_t entry){ return (fgInstance!=0)? fgInstance->EvaldEdxSpline(bg,entry):0;};

protected:
  Double_t GetExpectedSignal(const AliVTrack* track,
                             AliPID::EParticleType species,
                             Double_t dEdx,
                             const TSpline3* responseFunction,
                             Bool_t correctEta,
                             Bool_t correctMultiplicity) const; 
  
  Double_t GetExpectedSigma(const AliVTrack* track, 
                            AliPID::EParticleType species,
                            ETPCgainScenario gainScenario,
                            Double_t dEdx,
                            Int_t nPoints,
                            const TSpline3* responseFunction,
                            Bool_t correctEta,
                            Bool_t correctMultiplicity) const;
  //
  // function for numberical debugging 0 registed splines can be used in the TFormula and tree visualizations
  //
private:
  Float_t fMIP;          // dEdx for MIP
  Float_t fRes0[fgkNumberOfGainScenarios];  // relative dEdx resolution  rel sigma = fRes0*sqrt(1+fResN2/npoint)
  Float_t fResN2[fgkNumberOfGainScenarios]; // relative Npoint dependence rel  sigma = fRes0*sqrt(1+fResN2/npoint)

  Double_t fKp1;   // Parameters
  Double_t fKp2;   //    of
  Double_t fKp3;   // the ALEPH
  Double_t fKp4;   // Bethe-Bloch
  Double_t fKp5;   // formula

  Bool_t fUseDatabase; // flag if fine-tuned database-response or simple ALEPH BB should be used
  
  TObjArray fResponseFunctions; //! ObjArray of response functions individually for each particle
  TVectorF fVoltageMap; //!stores a map of voltages wrt nominal for all chambers
  Float_t fLowGainIROCthreshold;  //voltage threshold below which the IROC is considered low gain
  Float_t fBadIROCthreshhold;     //voltage threshold for bad IROCS
  Float_t fLowGainOROCthreshold;  //voltage threshold below which the OROC is considered low gain
  Float_t fBadOROCthreshhold;     //voltage threshold for bad OROCS
  Float_t fMaxBadLengthFraction;  //the maximum allowed fraction of track length in a bad sector.

  Int_t sectorNumber(Double_t phi) const;

  Double_t fMagField;  //! Magnetic field

  static const char* fgkGainScenarioName[fgkNumberOfGainScenarios+1];

  TH2D* fhEtaCorr; //! Map for TPC eta correction
  TH2D* fhEtaSigmaPar1; //! Map for parameter 1 of the dEdx sigma parametrisation
  
  Double_t fSigmaPar0; // Parameter 0 of the dEdx sigma parametrisation
  
  Int_t fCurrentEventMultiplicity; // Multiplicity of the current event
  TF1* fCorrFuncMultiplicity; //! Function to correct for the multiplicity dependence of the TPC dEdx
  TF1* fCorrFuncMultiplicityTanTheta; //! Function to correct the additional tanTheta dependence of the multiplicity dependence of the TPC dEdx
  TF1* fCorrFuncSigmaMultiplicity; //! Function to correct for the multiplicity dependence of the TPC dEdx resolution

  //
  //
  static AliTPCPIDResponse*   fgInstance;     //! Instance of this class (singleton implementation)
  TObjArray                   fSplineArray;   //array of registered splines
  ClassDef(AliTPCPIDResponse,6)   // TPC PID class
};


#endif


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