]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/dNdPt/AlidNdPtHelper.h
58abf406e3539d9d1711f9def8bcf45ad2fa757b
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtHelper.h
1 #ifndef ALIDNDPTHELPER_H
2 #define ALIDNDPTHELPER_H
3
4 //
5 // static dNdPt helper functions
6 //
7 // Origin: Jan Fiete Grosse-Oetringhaus
8 // Modified and Extended: Jacek Otwinowski 19/11/2009
9 //
10
11 #include <TObject.h>
12 #include <THnSparse.h>
13 #include "AliTriggerAnalysis.h"
14
15 class TF1;
16 class TH1F;
17 class TH2F;
18 class TParticle;
19 class AliHeader;
20 class AliGenEventHeader;
21 class AliStack;
22 class AliESD;
23 class AliESDEvent;
24 class AliESDtrack;
25 class AliMCEvent;
26 class AliESDVertex;
27 class AliESDtrackCuts;
28 class AlidNdPtAcceptanceCuts;
29 class AlidNdPtEventCuts;
30 class AliPWG0Helper;
31
32 class AliGenDPMjetEventHeader;
33 class AliGenCocktailEventHeader;
34 class AliGenPythiaEventHeader;
35 class AliVertexerTracks;
36 class AliLog;
37 class AliHeader;
38
39 class AlidNdPtHelper : public TObject
40 {
41   public:
42     enum AnalysisMode { kInvalid = -1, kSPD = 0, kTPC, kTPCITS, kTPCSPDvtx, kTPCSPDvtxUpdate, kTPCTrackSPDvtx, kTPCTrackSPDvtxUpdate, kTPCITSHybrid, kTPCITSHybridTrackSPDvtx, kTPCITSHybridTrackSPDvtxDCArPt, kMCRec };
43     enum ParticleMode { kAllPart = 0, kMCPion, kMCKaon, kMCProton, kPlus, kMinus, kCosmic, kBackgroundTrack, kMCRest };
44
45     enum OutputObject { kInvalidObject = -1, kCutAnalysis = 0, kAnalysis, kCorrection, kSystematics };
46     enum TrackObject  { kInvalidTrackObject = -1, kAllTracks = 0, kAccTracks, kRecTracks, kMCTracks };
47     enum EventObject  { kInvalidEventObject = -1, kAllEvents = 0, kTriggeredEvents, kAccEvents, kRecEvents, kMCEvents };
48     enum CutSteps     { kCutSteps = 3 };
49
50     static const AliESDVertex* GetVertex(AliESDEvent* const aEsd, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts, AliESDtrackCuts *const trackCuts,  AnalysisMode analysisMethod, Bool_t debug = kFALSE,Bool_t bRedoTPC = kFALSE, Bool_t bUseMeanVertex = kFALSE);
51
52     static const AliESDVertex* GetTPCVertexZ(AliESDEvent* const aEsd, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts, AliESDtrackCuts *const trackCuts, Float_t fraction=0.8, Int_t ntracksMin=2);
53
54     static Bool_t TestRecVertex(const AliESDVertex* vertex, const AliESDVertex* vertexSPD, AnalysisMode analysisMode, Bool_t debug = kFALSE);
55
56     static Bool_t IsPrimaryParticle(AliStack *const stack, Int_t idx, ParticleMode particleMode);
57     static Bool_t IsCosmicTrack(AliESDtrack *const track1, AliESDtrack *const track2);
58     static Bool_t IsGoodImpPar(AliESDtrack *const track);
59     static Int_t ConvertPdgToPid(TParticle *const particle);
60
61     static TObjArray *GetAllChargedTracks(AliESDEvent *const esdEvent, AnalysisMode analysisMode);
62
63     static TH1F* MakeResol(TH2F * const his, Int_t integ, Bool_t type, Bool_t drawBins, Int_t minHistEntries);
64     static TH1F* CreateResHisto(TH2F* const hRes2, TH1F **phMean, Int_t integ,  Bool_t drawBinFits, Int_t minHistEntries);
65
66     static Int_t GetTPCMBTrackMult(AliESDEvent* const esdEvent, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts, AliESDtrackCuts *const trackCuts);
67     static Int_t GetTPCMBPrimTrackMult(AliESDEvent* const esdEvent, AliStack * const stack,AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts, AliESDtrackCuts *const trackCuts);
68
69     static Int_t GetSPDMBTrackMult(AliESDEvent* const esdEvent, Float_t deltaThetaCut =0.025, Float_t deltaPhiCut = 0.08);
70     static Int_t GetSPDMBPrimTrackMult(AliESDEvent* const esdEvent, AliStack *const  stack, Float_t deltaThetaCut =0.025, Float_t deltaPhiCut = 0.08);
71     static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts);
72
73     static AliESDtrack* GetTPCOnlyTrackSPDvtx(AliESDEvent* const esdEvent, Int_t iTrack, Bool_t bUpdate);
74     static AliESDtrack* GetTPCOnlyTrackTrackSPDvtx(AliESDEvent* const esdEvent, Int_t iTrack, Bool_t bUpdate);
75     static AliESDtrack* GetTrackSPDvtx(AliESDEvent* const esdEvent, Int_t iTrack, Bool_t bUpdate);
76     static AliESDtrack* GetTrackTrackSPDvtx(AliESDEvent* const esdEvent, Int_t iTrack, Bool_t bUpdate);
77
78     static void PrintConf(AnalysisMode analysisMode, AliTriggerAnalysis::Trigger trigger);
79     static void PrintMCInfo(AliStack *const pStack, Int_t label);
80
81     static TH1* ScaleByBinWidth(TH1 *const hist=0);
82     static TH1* GetContCorrHisto(TH1 *const hist=0);
83     static TH1* CalcRelativeDifference(TH1 *const hist1=0, TH1 *const hist2=0);
84     static TH1* CalcRelativeDifferenceFun(TH1 *const hist=0, TF1 *const fun=0);
85     static TH1* NormalizeToEvent(TH2 *const hist1=0, TH1 *const hist2=0);
86
87     static THnSparse* GenerateCorrMatrix(THnSparse *const hist1, THnSparse *const hist2, char *const name);
88     static TH2* GenerateCorrMatrix(TH2 *const hist1, TH2 *const hist2, char *const name);
89     static TH1* GenerateCorrMatrix(TH1 *const hist1, TH1 *const hist2, char *const name);
90
91     static THnSparse* GenerateContCorrMatrix(THnSparse *const hist1, THnSparse *const hist2, char *const name);
92     static TH2* GenerateContCorrMatrix(TH2 *const hist1, TH2 *const hist2, char *const name);
93     static TH1* GenerateContCorrMatrix(TH1 *const hist1, TH1 *const hist2, char *const name);
94
95     static Double_t GetStrangenessCorrFactor(const Double_t pt);
96     static Double_t GetLinearInterpolationValue(const Double_t x1, const Double_t y1, const Double_t x2, const Double_t y2, const Double_t pt);
97
98     ClassDef(AlidNdPtHelper, 0);
99
100   private:
101     AlidNdPtHelper(const AlidNdPtHelper&);
102     AlidNdPtHelper& operator=(const AlidNdPtHelper&);
103 };
104
105 #endif
106