]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/dNdPt/AlidNdPtHelper.h
new triggered event selection + small corrections
[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
13 class TParticle;
14 class TH1;
15 class TH1F;
16 class TH2F;
17 class TH2;
18 class TH3;
19 class TF1;
20 class TTree;
21 class TArrayI;
22
23 class AliHeader;
24 class AliGenEventHeader;
25 class AliStack;
26 class AliESD;
27 class AliESDEvent;
28 class AliESDtrack;
29 class AliMCEvent;
30 class AliESDVertex;
31 class AliESDtrackCuts;
32 class AlidNdPtAcceptanceCuts;
33 class AlidNdPtEventCuts;
34
35 #include "AliPWG0Helper.h"
36 #include "THnSparse.h"
37
38 class AlidNdPtHelper : public TObject
39 {
40   public:
41     enum AnalysisMode { kInvalid = -1, kSPD = 0, kTPC, kTPCITS, kTPCSPDvtx, kTPCSPDvtxUpdate, kMCRec };
42     enum ParticleMode { kAllPart = 0, kMCPion, kMCKaon, kMCProton, kPlus, kMinus, kCosmics};
43
44     static const AliESDVertex* GetVertex(AliESDEvent* aEsd, AlidNdPtEventCuts *evtCuts, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts,  AnalysisMode analysisMethod, Bool_t debug = kFALSE,Bool_t bRedoTPC = kFALSE, Bool_t bUseMeanVertex = kFALSE);
45
46     static const AliESDVertex* GetTPCVertexZ(AliESDEvent* aEsd, AlidNdPtEventCuts *evtCuts, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts, Float_t fraction=0.8, Int_t ntracksMin=2);
47
48     static Bool_t TestRecVertex(const AliESDVertex* vertex, AnalysisMode analysisMode, Bool_t debug = kFALSE);
49
50     static Bool_t IsPrimaryParticle(AliStack *stack, Int_t idx, ParticleMode particleMode);
51     //static Bool_t IsCosmicTrack(TObjArray *allChargedTracks, AliESDtrack *track, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
52     static Bool_t IsCosmicTrack(AliESDtrack *track, AliESDtrack *track, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
53     static void PrintConf(AnalysisMode analysisMode, AliTriggerAnalysis::Trigger trigger);
54     static Int_t ConvertPdgToPid(TParticle *particle);
55
56     enum OutputObject { kInvalidObject = -1, kCutAnalysis = 0, kAnalysis, kCorrection, kSystematics };
57     enum TrackObject  { kInvalidTrackObject = -1, kAllTracks = 0, kAccTracks, kRecTracks, kMCTracks };
58     enum EventObject  { kInvalidEventObject = -1, kAllEvents = 0, kTriggeredEvents, kAccEvents, kRecEvents, kMCEvents };
59     enum CutSteps     { kCutSteps = 3 };
60
61     static TObjArray *GetAllChargedTracks(AliESDEvent *esdEvent, AnalysisMode analysisMode);
62
63     static TH1F* MakeResol(TH2F * his, Int_t integ, Bool_t type, Bool_t drawBins, Int_t minHistEntries);
64     static TH1F* CreateResHisto(TH2F* hRes2, TH1F **phMean, Int_t integ,  Bool_t drawBinFits, Int_t minHistEntries);
65
66     static Int_t GetTPCMBTrackMult(AliESDEvent* esdEvent, AlidNdPtEventCuts *evtCuts, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
67     static Int_t GetTPCMBPrimTrackMult(AliESDEvent* esdEvent, AliStack * stack,AlidNdPtEventCuts *evtCuts, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
68
69     static Int_t GetSPDMBTrackMult(AliESDEvent* esdEvent, Float_t deltaThetaCut =0.025, Float_t deltaPhiCut = 0.08);
70     static Int_t GetSPDMBPrimTrackMult(AliESDEvent* esdEvent, AliStack * stack, Float_t deltaThetaCut =0.025, Float_t deltaPhiCut = 0.08);
71     static Int_t GetMCTrueTrackMult(AliMCEvent *mcEvent, AlidNdPtEventCuts *evtCuts, AlidNdPtAcceptanceCuts *accCuts);
72
73     static AliESDtrack* GetTPCOnlyTrackSPDvtx(AliESDEvent* esdEvent, Int_t iTrack, Bool_t bUpdate);
74
75     static void PrintMCInfo(AliStack *pStack, Int_t label);
76
77     static TH1* ScaleByBinWidth(TH1 *hist=0);
78     static TH1* GetContCorrHisto(TH1 *hist=0);
79     static TH1* CalcRelativeDifference(TH1 *hist1=0, TH1 *hist2=0);
80     static TH1* CalcRelativeDifferenceFun(TH1 *hist=0, TF1 *fun=0);
81     static TH1* NormalizeToEvent(TH2 *hist1=0, TH1 *hist2=0);
82
83     static THnSparse* GenerateCorrMatrix(THnSparse *hist1, THnSparse *hist2, char *name);
84     static TH2* GenerateCorrMatrix(TH2 *hist1, TH2 *hist2, char *name);
85     static TH1* GenerateCorrMatrix(TH1 *hist1, TH1 *hist2, char *name);
86
87     static THnSparse* GenerateContCorrMatrix(THnSparse *hist1, THnSparse *hist2, char *name);
88     static TH2* GenerateContCorrMatrix(TH2 *hist1, TH2 *hist2, char *name);
89     static TH1* GenerateContCorrMatrix(TH1 *hist1, TH1 *hist2, char *name);
90
91     ClassDef(AlidNdPtHelper, 0);
92
93   private:
94     AlidNdPtHelper(const AlidNdPtHelper&);
95     AlidNdPtHelper& operator=(const AlidNdPtHelper&);
96 };
97
98 #endif
99