#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;
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 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;
static Double_t fgCutNcr;
static Double_t fgCutNcl;
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;
AliMCEvent *fMC;
TObjArray * fOutputContainer;
AliESDtrackCuts * fESDtrackCuts;
AliESDtrackCuts * fESDtrackCutsV0;
AliPIDResponse* fPIDResponse;
Short_t fNumEtaCorrReqErrorsIssued;
Short_t fNumMultCorrReqErrorsIssued;
Bool_t fUseTPCCutMIGeo;
Bool_t fUseMCinfo;
Bool_t fIsPbpOrpPb;
Double_t fZvtxCutEvent;
AliESDv0KineCuts *fV0KineCuts;
Bool_t fCutOnProdRadiusForV0el;
Int_t fNumTagsStored;
Char_t* fV0tags;
Int_t* fV0motherIndex;
Int_t* fV0motherPDG;
Bool_t fProduceAllPadTypes, fProduceGlobal, fProduceShortPads, fProduceMediumPads, fProduceLongPads,fProduceOroc;
THnSparseF * fHistPidQA;
THnSparseF * fHistPidQAshort;
THnSparseF * fHistPidQAmedium;
THnSparseF * fHistPidQAlong;
THnSparseF * fHistPidQAoroc;
Bool_t fProduceTPCSignalSparse;
Bool_t fCorrectdEdxEtaDependence;
Bool_t fCorrectdEdxMultiplicityDependence;
THnSparseF * fThnspTpc;
Bool_t fWriteAdditionalOutput;
TObjArray* fQAList;
TH1F* fhInvMassGamma;
TH1F* fhInvMassK0s;
TH1F* fhInvMassLambda;
TH1F* fhInvMassAntiLambda;
TH2F* fhArmenterosAll;
TH2F* fhArmenterosGamma;
TH2F* fhArmenterosK0s;
TH2F* fhArmenterosLambda;
TH2F* fhArmenterosAntiLambda;
THnSparseF* fHistSharedClusQAV0Pi;
THnSparseF* fHistSharedClusQAV0Pr;
THnSparseF* fHistSharedClusQAV0El;
TTree* fTreeV0El;
TTree* fTreeV0Pi;
TTree* fTreeV0Pr;
Double_t fTree_dEdx_tr;
Double_t fTree_dEdx_nb;
Double_t fTree_dEdx_vs;
Double_t fTree_dEdxExpected_tr;
Double_t fTree_p_TPC_tr;
Double_t fTree_p_TPC_nb;
Double_t fTree_p_TPC_vs;
Double_t fTree_BtimesChargeOverPt_tr;
Double_t fTree_BtimesChargeOverPt_nb;
Double_t fTree_BtimesChargeOverPt_vs;
Double_t fTree_tanTheta_tr;
Double_t fTree_tanTheta_nb;
Double_t fTree_tanTheta_vs;
Double_t fTree_distance_nb;
Double_t fTree_distance_vs;
AliTPCcalibResidualPID(const AliTPCcalibResidualPID&);
AliTPCcalibResidualPID& operator=(const AliTPCcalibResidualPID&);
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