ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: Yvonne Pachmayer <pachmay@physi.uni-heidelberg.de>             *
* 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.                  *
**************************************************************************/
//
// The task:
// stores TPC PID quantities in a THnSparse
//
//  Author:
//  Yvonne Pachmayer <pachmay@physi.uni-heidelberg.de>
//

#ifndef ALITPCCALIBRESIDUALPID_H
#define ALITPCCALIBRESIDUALPID_H
#include "AliAnalysisTaskSE.h"

#include <TTreeStream.h>
#include "AliInputEventHandler.h"

class TArrayF;
template <class X>
class THnSparseT;
typedef class THnSparseT<TArrayF> THnSparseF;
class TFile;
class TGraphErrors;
class AliESDEvent;
class AliMCEvent;
class AliESDtrackCuts;
class AliPIDResponse;
class AliESD;
class AliAnalysisTask;
class AliESDInputHandler;
class AliESDv0KineCuts;
class AliAnalysisManager;
class AliCentrality;
class TTree;
class TSystem;
class TStyle;
class TROOT;
class Riostream;
class TChain;
class TH2;
class TF1;
class TH1;
class TObjArray;


class AliTPCcalibResidualPID : public AliAnalysisTaskSE {
 public:
  enum FitType { kAleph = 0, kLund = 1, kSaturatedLund = 2, kAlephWithAdditionalParam = 3 };
  enum kParticle { kElectron = 0, kPion, kKaon, kProton };
  AliTPCcalibResidualPID();
  AliTPCcalibResidualPID(const char *name);
  virtual ~AliTPCcalibResidualPID();
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *);
  virtual void   Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
  virtual void   Terminate(const Option_t*);
  Int_t          CompareFloat(Float_t f1=1, Float_t f2=0) const;
  //setter
  virtual void   SetESDtrackCuts(AliESDtrackCuts * trackCuts){fESDtrackCuts = trackCuts;};
  virtual void   SetESDtrackCutsV0(AliESDtrackCuts * trackCutsV0){fESDtrackCutsV0 = trackCutsV0;};
  virtual void   SetProduceTPCsignalTHnSparse(Int_t producetpcsignal){fProduceTPCSignalSparse = producetpcsignal;};
  virtual void   SetProducePIDqa(Int_t produceGlobal){fProduceGlobal = produceGlobal;};
  virtual void   SetProduceAllPadsPID(Int_t produceAllpadTypes){fProduceAllPadTypes = produceAllpadTypes;};
  virtual void   SetProduceShortPadsPID(Int_t produceShortpads){fProduceShortPads = produceShortpads;};
  virtual void   SetProduceMediumPadsPID(Int_t produceMediumpads){fProduceMediumPads = produceMediumpads;};
  virtual void   SetProduceLongPadsPID(Int_t produceLongpads){fProduceLongPads = produceLongpads;};
  virtual void   SetProduceOrocPID(Int_t produceOroc){fProduceOroc = produceOroc;};
  
  virtual Bool_t GetVertexIsOk(AliVEvent* event) const;
  
  virtual Bool_t GetUseTPCCutMIGeo() const { return fUseTPCCutMIGeo; };
  virtual void SetUseTPCCutMIGeo(Bool_t newValue) { fUseTPCCutMIGeo = newValue; };
  
  virtual Bool_t GetIsPbpOrpPb() const { return fIsPbpOrpPb; };
  virtual void SetIsPbpOrpPb(Bool_t newValue) { fIsPbpOrpPb = newValue; };
  
  Double_t GetZvtxCutEvent() const { return fZvtxCutEvent; };
  virtual void SetZvtxCutEvent(Double_t newValue) { fZvtxCutEvent = newValue; };
  
  Bool_t GetCorrectdEdxEtaDependence() const { return fCorrectdEdxEtaDependence; };
  virtual void SetCorrectdEdxEtaDependence(Bool_t flag) { fCorrectdEdxEtaDependence = flag; };
  
  Bool_t GetCorrectdEdxMultiplicityDependence() const { return fCorrectdEdxMultiplicityDependence; };
  virtual void SetCorrectdEdxMultiplicityDependence(Bool_t flag) { fCorrectdEdxMultiplicityDependence = flag; };
  
  Bool_t GetCutOnProdRadiusForV0el() const { return fCutOnProdRadiusForV0el; };
  virtual void SetCutOnProdRadiusForV0el(Bool_t flag) { fCutOnProdRadiusForV0el = flag; };
  
  virtual Char_t GetV0tag(Int_t trackIndex) const;

  Bool_t GetUseMCinfo() const { return fUseMCinfo; };
  virtual void SetUseMCinfo(Bool_t flag) { fUseMCinfo = flag; };
  
  Bool_t GetWriteAdditionalOutput() const { return fWriteAdditionalOutput; };
  virtual void   SetWriteAdditionalOutput(Bool_t flag = kTRUE) { fWriteAdditionalOutput = flag; };

  
  virtual Int_t GetV0motherIndex(Int_t trackIndex) const;
  virtual Int_t GetV0motherPDG(Int_t trackIndex) const;
  
  //
  // static functions for postprocessing
  //
  static Double_t* ExtractResidualPID(THnSparseF * histPidQA,
                                      const Bool_t useV0s = kTRUE,
                                      const Char_t * outFile = "out.root",
                                      const Char_t * type    = "MC",
                                      const Char_t * period  = "LHC10H8",
                                      const Char_t * pass    = "PASS1",
                                      const Char_t * system  = "PBPB",
                                      const Double_t * initialParameters = 0x0,
                                      const Char_t * dedxtype= "",
                                      FitType = kSaturatedLund);
  static  TObjArray * GetResidualGraphs(THnSparseF * histPidQA, const Char_t * system, const Bool_t useV0s);
  static  TObjArray * GetResidualGraphsMC(THnSparseF * histPidQA, const Char_t * system);
  static  TObjArray * GetSeparation(THnSparseF * histPidQA, Int_t kParticle1, Int_t kParticle2);
  static  TObjArray * GetResponseFunctions(TF1* parametrisation, TObjArray* inputGraphs, const Char_t * type, const Char_t * period, const Char_t * pass, const Char_t * system, const Char_t * dedxtype);
  static  TF1*        FitBB(TObjArray* inputGraphs, Bool_t isMC, Bool_t isPPb, const Bool_t useV0s,
                            const Double_t * initialParameters = 0x0, FitType = kSaturatedLund);
  static Int_t MergeGraphErrors(TGraphErrors* mergedGraph, TCollection* li);
  
  static Double_t GetCutGeo() { return fgCutGeo; };
  static Double_t GetCutNcr() { return fgCutNcr; };
  static Double_t GetCutNcl() { return fgCutNcl; };
  
  static void SetCutGeo(Double_t value) { fgCutGeo = value; };
  static void SetCutNcr(Double_t value) { fgCutNcr = value; };
  static void SetCutNcl(Double_t value) { fgCutNcl = value; };
  
  static Bool_t TPCCutMIGeo(const AliVTrack* track, const AliVEvent* evt, TTreeStream* streamer = 0x0);
  static Bool_t TPCCutMIGeo(const AliVTrack* track, const AliInputEventHandler* evtHandler, TTreeStream* streamer = 0x0)
    { if (!evtHandler) return kFALSE; return TPCCutMIGeo(track, evtHandler->GetEvent(), streamer); };

  protected:
  static Double_t fgCutGeo;  // Cut variable for TPCCutMIGeo concerning geometry
  static Double_t fgCutNcr;  // Cut variable for TPCCutMIGeo concerning num crossed rows
  static Double_t fgCutNcl;  // Cut variable for TPCCutMIGeo concerning num clusters
  
  static Double_t Lund(Double_t* xx, Double_t* par);
  static Double_t SaturatedLund(Double_t* xx, Double_t* par);
  
  void  BinLogAxis(const THnSparseF *h, Int_t axisNumber);

  static void FitSlicesY(TH2 *hist, Double_t heightFractionForRange, Int_t cutThreshold, TString fitOption, TObjArray *arr);

  void FillV0PIDlist(AliESDEvent* esdEvent = 0x0);
  void ClearV0PIDlist();
  
  private:
  //
  //
  AliESDEvent *fESD;                   //! ESD object
  AliMCEvent  *fMC;                    //! MC object
  TObjArray * fOutputContainer;        //! output data container
  AliESDtrackCuts * fESDtrackCuts;     // basic cut variables for all non-V0 tracks
  AliESDtrackCuts * fESDtrackCutsV0;   // basic cut variables for all V0 tracks
  AliPIDResponse* fPIDResponse;        //! PID handling
  //
  
  Short_t fNumEtaCorrReqErrorsIssued;  // Number of times the error about eta correction issues have been displayed
  Short_t fNumMultCorrReqErrorsIssued; // Number of times the error about multiplicity correction issues have been displayed
  
  Bool_t fUseTPCCutMIGeo;   // Use geometrical cut for TPC 
  
  Bool_t fUseMCinfo;         // Use MC info, if available
  
  Bool_t fIsPbpOrpPb;      // Pbp/pPb collision or something else?
  Double_t fZvtxCutEvent;  // Vertex z cut for the event (cm)
  
  AliESDv0KineCuts *fV0KineCuts;       //! ESD V0 kine cuts
  Bool_t fCutOnProdRadiusForV0el;      // Cut on production radius for V0 electrons
  Int_t fNumTagsStored;     // Number of entries of fV0tags
  Char_t* fV0tags;         //! Pointer to array with tags for identified particles from V0 decays
  Int_t* fV0motherIndex;   //! Pointer to array with index of the mother V0
  Int_t* fV0motherPDG;     //! Pointer to array with pdg of the mother V0

  Bool_t fProduceAllPadTypes, fProduceGlobal, fProduceShortPads, fProduceMediumPads, fProduceLongPads,fProduceOroc;
  THnSparseF * fHistPidQA;             //! histogram for the QA of the PID
  THnSparseF * fHistPidQAshort;        //! histogram for the QA of the PID short pads
  THnSparseF * fHistPidQAmedium;       //! histogram for the QA of the PID med pads
  THnSparseF * fHistPidQAlong;         //! histogram for the QA of the PID long pads
  THnSparseF * fHistPidQAoroc;         //! histogram for the QA of the PID full oroc
  //
  Bool_t fProduceTPCSignalSparse;      //for setter
  Bool_t fCorrectdEdxEtaDependence;    // Correct eta dependence for fHistPidQA (NOTE: Not done for the pad-specific THnSparses)
  Bool_t fCorrectdEdxMultiplicityDependence; // Correct multiplicity dependence for fHistPidQA (NOTE: Not done for the pad-specific THnSparses)
  THnSparseF * fThnspTpc;              //! thnsparse containing the data
  //
  //
  
  Bool_t fWriteAdditionalOutput; // Also fill histos/trees for QA etc. and write them
  
  // QA histos
  TObjArray* fQAList;           //! Array with QA histos
  TH1F* fhInvMassGamma;         //! Histogram with inv. mass of gamma
  TH1F* fhInvMassK0s;           //! Histogram with inv. mass of K0s
  TH1F* fhInvMassLambda;        //! Histogram with inv. mass of lambda
  TH1F* fhInvMassAntiLambda;    //! Histogram with inv. mass of anti-lambda
  
  TH2F* fhArmenterosAll;        //! Histogram with armenteros plot for all V0s
  TH2F* fhArmenterosGamma;      //! Histogram with armenteros plot for gamma
  TH2F* fhArmenterosK0s;        //! Histogram with armenteros plot for K0s
  TH2F* fhArmenterosLambda;     //! Histogram with armenteros plot for lambda
  TH2F* fhArmenterosAntiLambda; //! Histogram with armenteros plot for anti-lambda
  
  // QA histos for shared clusters
  THnSparseF* fHistSharedClusQAV0Pi;  //! Histogram with shared clusters QA for V0 pi
  THnSparseF* fHistSharedClusQAV0Pr;  //! Histogram with shared clusters QA for V0 pr
  THnSparseF* fHistSharedClusQAV0El;  //! Histogram with shared clusters QA for V0 el
  
  // TTree stuff for advanced studies (local track density, ...)
  TTree* fTreeV0El;               //! Tree with V0 el and closest neighbour tracks and V0 sisters
  TTree* fTreeV0Pi;               //! Tree with V0 pi and closest neighbour tracks and V0 sisters
  TTree* fTreeV0Pr;               //! Tree with V0 pr and closest neighbour tracks and V0 sisters
  Double_t fTree_dEdx_tr;         //! Tree: dEdx of track
  Double_t fTree_dEdx_nb;         //! Tree: dEdx of neighbour
  Double_t fTree_dEdx_vs;         //! Tree: dEdx of V0 sister
  Double_t fTree_dEdxExpected_tr; //! Tree: dEdx_expected of track
  Double_t fTree_p_TPC_tr;        //! Tree: TPC momentum of track
  Double_t fTree_p_TPC_nb;        //! Tree: TPC momentum of neighbour
  Double_t fTree_p_TPC_vs;        //! Tree: TPC momentum of V0 sister
  Double_t fTree_BtimesChargeOverPt_tr; //! Tree: mag field times charge/pT of track
  Double_t fTree_BtimesChargeOverPt_nb; //! Tree: mag field times charge/pT of neighbour
  Double_t fTree_BtimesChargeOverPt_vs; //! Tree: mag field times charge/pT of V0 sister
  Double_t fTree_tanTheta_tr;     //! Tree: tan(theta) of track
  Double_t fTree_tanTheta_nb;     //! Tree: tan(theta) of neighbour
  Double_t fTree_tanTheta_vs;     //! Tree: tan(theta) of V0 sister
  Double_t fTree_distance_nb;     //! Tree: distance on TPC cylinder of track and neighbour
  Double_t fTree_distance_vs;     //! Tree: distance on TPC cylinder of track and V0 sister
  
  AliTPCcalibResidualPID(const AliTPCcalibResidualPID&); // not implemented
  AliTPCcalibResidualPID& operator=(const AliTPCcalibResidualPID&); // not implemented
  
  ClassDef(AliTPCcalibResidualPID, 5); 
};
#endif
 AliTPCcalibResidualPID.h:1
 AliTPCcalibResidualPID.h:2
 AliTPCcalibResidualPID.h:3
 AliTPCcalibResidualPID.h:4
 AliTPCcalibResidualPID.h:5
 AliTPCcalibResidualPID.h:6
 AliTPCcalibResidualPID.h:7
 AliTPCcalibResidualPID.h:8
 AliTPCcalibResidualPID.h:9
 AliTPCcalibResidualPID.h:10
 AliTPCcalibResidualPID.h:11
 AliTPCcalibResidualPID.h:12
 AliTPCcalibResidualPID.h:13
 AliTPCcalibResidualPID.h:14
 AliTPCcalibResidualPID.h:15
 AliTPCcalibResidualPID.h:16
 AliTPCcalibResidualPID.h:17
 AliTPCcalibResidualPID.h:18
 AliTPCcalibResidualPID.h:19
 AliTPCcalibResidualPID.h:20
 AliTPCcalibResidualPID.h:21
 AliTPCcalibResidualPID.h:22
 AliTPCcalibResidualPID.h:23
 AliTPCcalibResidualPID.h:24
 AliTPCcalibResidualPID.h:25
 AliTPCcalibResidualPID.h:26
 AliTPCcalibResidualPID.h:27
 AliTPCcalibResidualPID.h:28
 AliTPCcalibResidualPID.h:29
 AliTPCcalibResidualPID.h:30
 AliTPCcalibResidualPID.h:31
 AliTPCcalibResidualPID.h:32
 AliTPCcalibResidualPID.h:33
 AliTPCcalibResidualPID.h:34
 AliTPCcalibResidualPID.h:35
 AliTPCcalibResidualPID.h:36
 AliTPCcalibResidualPID.h:37
 AliTPCcalibResidualPID.h:38
 AliTPCcalibResidualPID.h:39
 AliTPCcalibResidualPID.h:40
 AliTPCcalibResidualPID.h:41
 AliTPCcalibResidualPID.h:42
 AliTPCcalibResidualPID.h:43
 AliTPCcalibResidualPID.h:44
 AliTPCcalibResidualPID.h:45
 AliTPCcalibResidualPID.h:46
 AliTPCcalibResidualPID.h:47
 AliTPCcalibResidualPID.h:48
 AliTPCcalibResidualPID.h:49
 AliTPCcalibResidualPID.h:50
 AliTPCcalibResidualPID.h:51
 AliTPCcalibResidualPID.h:52
 AliTPCcalibResidualPID.h:53
 AliTPCcalibResidualPID.h:54
 AliTPCcalibResidualPID.h:55
 AliTPCcalibResidualPID.h:56
 AliTPCcalibResidualPID.h:57
 AliTPCcalibResidualPID.h:58
 AliTPCcalibResidualPID.h:59
 AliTPCcalibResidualPID.h:60
 AliTPCcalibResidualPID.h:61
 AliTPCcalibResidualPID.h:62
 AliTPCcalibResidualPID.h:63
 AliTPCcalibResidualPID.h:64
 AliTPCcalibResidualPID.h:65
 AliTPCcalibResidualPID.h:66
 AliTPCcalibResidualPID.h:67
 AliTPCcalibResidualPID.h:68
 AliTPCcalibResidualPID.h:69
 AliTPCcalibResidualPID.h:70
 AliTPCcalibResidualPID.h:71
 AliTPCcalibResidualPID.h:72
 AliTPCcalibResidualPID.h:73
 AliTPCcalibResidualPID.h:74
 AliTPCcalibResidualPID.h:75
 AliTPCcalibResidualPID.h:76
 AliTPCcalibResidualPID.h:77
 AliTPCcalibResidualPID.h:78
 AliTPCcalibResidualPID.h:79
 AliTPCcalibResidualPID.h:80
 AliTPCcalibResidualPID.h:81
 AliTPCcalibResidualPID.h:82
 AliTPCcalibResidualPID.h:83
 AliTPCcalibResidualPID.h:84
 AliTPCcalibResidualPID.h:85
 AliTPCcalibResidualPID.h:86
 AliTPCcalibResidualPID.h:87
 AliTPCcalibResidualPID.h:88
 AliTPCcalibResidualPID.h:89
 AliTPCcalibResidualPID.h:90
 AliTPCcalibResidualPID.h:91
 AliTPCcalibResidualPID.h:92
 AliTPCcalibResidualPID.h:93
 AliTPCcalibResidualPID.h:94
 AliTPCcalibResidualPID.h:95
 AliTPCcalibResidualPID.h:96
 AliTPCcalibResidualPID.h:97
 AliTPCcalibResidualPID.h:98
 AliTPCcalibResidualPID.h:99
 AliTPCcalibResidualPID.h:100
 AliTPCcalibResidualPID.h:101
 AliTPCcalibResidualPID.h:102
 AliTPCcalibResidualPID.h:103
 AliTPCcalibResidualPID.h:104
 AliTPCcalibResidualPID.h:105
 AliTPCcalibResidualPID.h:106
 AliTPCcalibResidualPID.h:107
 AliTPCcalibResidualPID.h:108
 AliTPCcalibResidualPID.h:109
 AliTPCcalibResidualPID.h:110
 AliTPCcalibResidualPID.h:111
 AliTPCcalibResidualPID.h:112
 AliTPCcalibResidualPID.h:113
 AliTPCcalibResidualPID.h:114
 AliTPCcalibResidualPID.h:115
 AliTPCcalibResidualPID.h:116
 AliTPCcalibResidualPID.h:117
 AliTPCcalibResidualPID.h:118
 AliTPCcalibResidualPID.h:119
 AliTPCcalibResidualPID.h:120
 AliTPCcalibResidualPID.h:121
 AliTPCcalibResidualPID.h:122
 AliTPCcalibResidualPID.h:123
 AliTPCcalibResidualPID.h:124
 AliTPCcalibResidualPID.h:125
 AliTPCcalibResidualPID.h:126
 AliTPCcalibResidualPID.h:127
 AliTPCcalibResidualPID.h:128
 AliTPCcalibResidualPID.h:129
 AliTPCcalibResidualPID.h:130
 AliTPCcalibResidualPID.h:131
 AliTPCcalibResidualPID.h:132
 AliTPCcalibResidualPID.h:133
 AliTPCcalibResidualPID.h:134
 AliTPCcalibResidualPID.h:135
 AliTPCcalibResidualPID.h:136
 AliTPCcalibResidualPID.h:137
 AliTPCcalibResidualPID.h:138
 AliTPCcalibResidualPID.h:139
 AliTPCcalibResidualPID.h:140
 AliTPCcalibResidualPID.h:141
 AliTPCcalibResidualPID.h:142
 AliTPCcalibResidualPID.h:143
 AliTPCcalibResidualPID.h:144
 AliTPCcalibResidualPID.h:145
 AliTPCcalibResidualPID.h:146
 AliTPCcalibResidualPID.h:147
 AliTPCcalibResidualPID.h:148
 AliTPCcalibResidualPID.h:149
 AliTPCcalibResidualPID.h:150
 AliTPCcalibResidualPID.h:151
 AliTPCcalibResidualPID.h:152
 AliTPCcalibResidualPID.h:153
 AliTPCcalibResidualPID.h:154
 AliTPCcalibResidualPID.h:155
 AliTPCcalibResidualPID.h:156
 AliTPCcalibResidualPID.h:157
 AliTPCcalibResidualPID.h:158
 AliTPCcalibResidualPID.h:159
 AliTPCcalibResidualPID.h:160
 AliTPCcalibResidualPID.h:161
 AliTPCcalibResidualPID.h:162
 AliTPCcalibResidualPID.h:163
 AliTPCcalibResidualPID.h:164
 AliTPCcalibResidualPID.h:165
 AliTPCcalibResidualPID.h:166
 AliTPCcalibResidualPID.h:167
 AliTPCcalibResidualPID.h:168
 AliTPCcalibResidualPID.h:169
 AliTPCcalibResidualPID.h:170
 AliTPCcalibResidualPID.h:171
 AliTPCcalibResidualPID.h:172
 AliTPCcalibResidualPID.h:173
 AliTPCcalibResidualPID.h:174
 AliTPCcalibResidualPID.h:175
 AliTPCcalibResidualPID.h:176
 AliTPCcalibResidualPID.h:177
 AliTPCcalibResidualPID.h:178
 AliTPCcalibResidualPID.h:179
 AliTPCcalibResidualPID.h:180
 AliTPCcalibResidualPID.h:181
 AliTPCcalibResidualPID.h:182
 AliTPCcalibResidualPID.h:183
 AliTPCcalibResidualPID.h:184
 AliTPCcalibResidualPID.h:185
 AliTPCcalibResidualPID.h:186
 AliTPCcalibResidualPID.h:187
 AliTPCcalibResidualPID.h:188
 AliTPCcalibResidualPID.h:189
 AliTPCcalibResidualPID.h:190
 AliTPCcalibResidualPID.h:191
 AliTPCcalibResidualPID.h:192
 AliTPCcalibResidualPID.h:193
 AliTPCcalibResidualPID.h:194
 AliTPCcalibResidualPID.h:195
 AliTPCcalibResidualPID.h:196
 AliTPCcalibResidualPID.h:197
 AliTPCcalibResidualPID.h:198
 AliTPCcalibResidualPID.h:199
 AliTPCcalibResidualPID.h:200
 AliTPCcalibResidualPID.h:201
 AliTPCcalibResidualPID.h:202
 AliTPCcalibResidualPID.h:203
 AliTPCcalibResidualPID.h:204
 AliTPCcalibResidualPID.h:205
 AliTPCcalibResidualPID.h:206
 AliTPCcalibResidualPID.h:207
 AliTPCcalibResidualPID.h:208
 AliTPCcalibResidualPID.h:209
 AliTPCcalibResidualPID.h:210
 AliTPCcalibResidualPID.h:211
 AliTPCcalibResidualPID.h:212
 AliTPCcalibResidualPID.h:213
 AliTPCcalibResidualPID.h:214
 AliTPCcalibResidualPID.h:215
 AliTPCcalibResidualPID.h:216
 AliTPCcalibResidualPID.h:217
 AliTPCcalibResidualPID.h:218
 AliTPCcalibResidualPID.h:219
 AliTPCcalibResidualPID.h:220
 AliTPCcalibResidualPID.h:221
 AliTPCcalibResidualPID.h:222
 AliTPCcalibResidualPID.h:223
 AliTPCcalibResidualPID.h:224
 AliTPCcalibResidualPID.h:225
 AliTPCcalibResidualPID.h:226
 AliTPCcalibResidualPID.h:227
 AliTPCcalibResidualPID.h:228
 AliTPCcalibResidualPID.h:229
 AliTPCcalibResidualPID.h:230
 AliTPCcalibResidualPID.h:231
 AliTPCcalibResidualPID.h:232
 AliTPCcalibResidualPID.h:233
 AliTPCcalibResidualPID.h:234
 AliTPCcalibResidualPID.h:235
 AliTPCcalibResidualPID.h:236
 AliTPCcalibResidualPID.h:237
 AliTPCcalibResidualPID.h:238
 AliTPCcalibResidualPID.h:239
 AliTPCcalibResidualPID.h:240
 AliTPCcalibResidualPID.h:241
 AliTPCcalibResidualPID.h:242
 AliTPCcalibResidualPID.h:243
 AliTPCcalibResidualPID.h:244
 AliTPCcalibResidualPID.h:245
 AliTPCcalibResidualPID.h:246
 AliTPCcalibResidualPID.h:247
 AliTPCcalibResidualPID.h:248