]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIANALYSISNUCLEIMASS_H | |
2 | #define ALIANALYSISNUCLEIMASS_H | |
3 | ||
4 | // ROOT includes | |
5 | #include <TList.h> | |
6 | ||
7 | // AliRoot includes | |
8 | #include <AliAnalysisTaskSE.h> | |
9 | #include <AliPIDResponse.h> | |
10 | ||
11 | class AliAODEvent; | |
12 | class AliESDEvent; | |
13 | class AliVEvent; | |
14 | class TH2F; | |
15 | class TH2D; | |
16 | class TH1F; | |
17 | class TF1; | |
18 | class TF2; | |
19 | class TH2D; | |
20 | class TGraph; | |
21 | class AliESDtrackCuts; | |
22 | class TProfile; | |
23 | class TFile; | |
24 | class TObject; | |
25 | ||
26 | class AliAnalysisNucleiMass : public AliAnalysisTaskSE { | |
27 | public: | |
28 | AliAnalysisNucleiMass(); | |
29 | AliAnalysisNucleiMass(const char *name); | |
30 | ||
31 | virtual ~AliAnalysisNucleiMass(); | |
32 | ||
33 | virtual void UserCreateOutputObjects(); | |
34 | virtual void UserExec(Option_t *option); | |
35 | virtual void Terminate(Option_t *); | |
36 | ||
37 | ||
38 | //Cuts on the events | |
39 | void SetCentrality(Double_t CentMin=0., Double_t CentMax=100.) {Centrality[0]=CentMin; Centrality[1]=CentMax;}; | |
40 | //Cuts on the tracks | |
41 | void SetFilterBit(Int_t TestFilterBit=16) {FilterBit=TestFilterBit;} | |
42 | //geometrical cuts | |
43 | void SetEtaLimit(Double_t etaMin=-0.8, Double_t etaMax=0.8) {EtaLimit[0]=etaMin;EtaLimit[1]=etaMax;} | |
44 | void SetDCACut(Double_t DCAxyCUT=0.1, Double_t DCAzCUT=1000.0) {DCAxyCut=DCAxyCUT; DCAzCut=DCAzCUT;} | |
45 | //other cuts | |
46 | void SetNsigmaTPCCut(Double_t nSigmaTpcCut=2) {NsigmaTpcCut=nSigmaTpcCut;} | |
47 | void SetNminTPCcluster(Int_t nMinTPCcluster=0) {NminTpcCluster=nMinTPCcluster;} | |
48 | void SetTrdCut(Int_t kTRDcut=0) {iTrdCut=kTRDcut;} | |
49 | ||
50 | //Settings | |
51 | void SetisSignalCheck(Int_t IsSignalCheck=2) {kSignalCheck=IsSignalCheck;} | |
52 | void SetMtofMethod(Int_t iMtofMethod=1) {iMtof=iMtofMethod;} | |
53 | void SetPvtxNucleiCorrection(Int_t kMomVtxCorr=1) {kPvtxCorr=kMomVtxCorr;} | |
54 | ||
55 | private: | |
56 | AliAnalysisNucleiMass(const AliAnalysisNucleiMass &old); | |
57 | AliAnalysisNucleiMass& operator=(const AliAnalysisNucleiMass &source); | |
58 | ||
59 | static const Int_t nbin=46; // Number of pt bins in Tof Mass distributions | |
60 | static const Int_t nBconf=2; // Number of Magnetic field configuration (B++ and B--) | |
61 | static const Int_t nPart=9; // Number of particle type: e,mu,pi,K... | |
62 | static const Int_t nSpec=18; // Number of particle species: particles: e+,e-,mu+,mu-,... | |
63 | ||
64 | //Variables settings with public methods: | |
65 | Double_t Centrality[2]; // Centrality bin (min and max) | |
66 | Int_t FilterBit; // Filter Bit to be used | |
67 | Double_t EtaLimit[2]; // Eta windows in analysis | |
68 | Double_t DCAxyCut; // Cut on DCA-xy | |
69 | Double_t DCAzCut; // Cut on DCA-z | |
70 | Double_t NsigmaTpcCut; // number of sigma Tpc Cut | |
71 | Int_t NminTpcCluster; // Number of minimum TPC clusters | |
72 | Int_t iTrdCut; // iTrdCut==0-> No TRD cut; iTrdCut==1-> Yes TRD cut: yes TRD; iTrdCut==2->Yes TRD cut: no TRD; | |
73 | Int_t kSignalCheck; // kSignalCheck==1->Fill all plots ; kSignalCheck==0->Fill only TH1 ; kSignalCheck==2-> Fill TH1 and some TH2 usefull in analysis | |
74 | Int_t iMtof; // iMtof==1->m~pVtx ; iMtof==2->m~pExp ; iMtof==4->m~<p> (same correction for particle and antiparticle) ; | |
75 | Int_t kPvtxCorr; // kPvtxCorr==1->Momentum at the primary vertex for (anti)nuclei is rescaled ; kPvtxCorr==0->no correction | |
76 | ||
77 | //other: | |
78 | Int_t iBconf; //! If Magnetic Field configuration is down or up | |
79 | Bool_t kTOF; //! kTOFout and kTIME required | |
80 | ||
81 | AliAODEvent* fAOD; //! AOD object | |
82 | AliESDEvent* fESD; //! ESD object | |
83 | AliVEvent* fEvent; //! general object | |
84 | AliPIDResponse *fPIDResponse; //! pointer to PID response | |
85 | TList *fList[nBconf]; //! lists for slot | |
86 | ||
87 | TH1F *htemp[nBconf]; //! Temp. plot: avoid a problem with the merge of the output when a TList is empty (of the opposite magnetic field configuration) | |
88 | TH1F *hCentrality[nBconf][2]; //! Centrality of the selected and analyzed events | |
89 | TH1F *hZvertex[nBconf][2]; //! z-vertex distribution before and after the cuts on the event | |
90 | ||
91 | TH1F *hEta[nBconf]; //! Eta distribution of the tracks | |
92 | TH1F *hPhi[nBconf]; //! Phi particle distribution | |
93 | TH2F *fEtaPhi[nBconf]; //! Phi vs Eta particle distribution | |
94 | TH1F *hNTpcCluster[nBconf]; //! # of the TPC clusters after the track cuts | |
95 | TH1F *hNTrdSlices[nBconf]; //! Number of the TRD slices after the track cuts | |
96 | ||
97 | //TPC info: | |
98 | TH2F *fdEdxVSp[nBconf][2]; //! dedx vs pTpc | |
99 | TProfile *hDeDxExp[nBconf][9]; //! TPC spline used | |
100 | TH2F *fNsigmaTpc[nBconf][9]; //! NsigmaTPC vs. pTpc | |
101 | TH2F *fNsigmaTpc_kTOF[nBconf][18]; //! NsigmaTPC vs. pt when kTOF is required and in DCAxyCut | |
102 | ||
103 | //TOF info: | |
104 | TH2F *fBetaTofVSp[nBconf][2]; //! beta vs pVtx | |
105 | TProfile *hBetaExp[nBconf][9]; //! TOF expected beta | |
106 | TH2F *fNsigmaTof[nBconf][9]; //! NsigmaTOF vs. pT | |
107 | TH2F *fNsigmaTof_DcaCut[nBconf][18]; //! NsigmaTOF vs. pT | |
108 | ||
109 | //TPC and TOF conbined | |
110 | TH2F *fM2vsP_NoTpcCut[nBconf][2][2]; //! M2 vs. P w/o the DCAxyCut | |
111 | TH2F *fM2vsP[nBconf][2][18]; //! M2 vs. P with NsigmaTpcCut for each particle species, w/o the DCAxyCut | |
112 | TH2F *fM2vsZ[nBconf][10]; //! M2 vs. Z in various pT bins | |
113 | ||
114 | //DCA distributions | |
115 | TH1D *hDCAxy[nBconf][18][nbin]; //! DCAxy distribution with NsigmaTpcCut for each particle species, in pT bins | |
116 | TH1D *hDCAz[nBconf][18][nbin]; //! DCAz distribution with NsigmaTpcCut for each particle species, in pT bins | |
117 | ||
118 | //TOF mass distributions | |
119 | TH1D *hM2CutDCAxy[nBconf][18][nbin]; //! Tof m2 distribution in DCAxyCut and with NsigmaTpcCut | |
120 | TH1D *hM2CutGroundDCAxy[nBconf][18][nbin]; //! Tof m2 distribution in the background of DCAxyCut (secondary nuclei selection) and with NsigmaTpcCut | |
121 | ||
122 | //... | |
123 | TH2F *fPmeanVsBetaGamma[nBconf][18]; //! <p>/p vs beta*gamma for pi,K,p | |
124 | TProfile *prPmeanVsBetaGamma[nBconf][18]; //! <p>/p vs beta*gamma for pi,K,p (profile) | |
125 | ||
126 | //Parameterizations: | |
127 | TF2 *fPvtxTrueVsReco[4]; //! TF1 pVtx_True vs pVtx_Reco calculated with MC for d,t,He3,He4 | |
128 | TProfile *prPvtxTrueVsReco[nBconf][4]; //! TProfile pVtx_True vs pVtx_Reco calculated with MC for d,t,He3,He4 | |
129 | ||
130 | TF1 *fPmeanVsBGcorr[14]; //! <p>/p as a function of beta*gamma for pi,K,p,d,t,He3,He4 | |
131 | TProfile *prPmeanVsBGcorr[nBconf][14]; //! <p>/p vs beta*gamma for pi,K,p,d,t,He3,He4 as calculated from the parameterizations | |
132 | ||
133 | //------------------------------Methods---------------------------------------- | |
134 | void MomVertexCorrection(Double_t p, Double_t *pC, Double_t eta, Int_t FlagPid); | |
135 | ||
136 | void GetMassFromPvertex(Double_t beta, Double_t p, Double_t &M2); | |
137 | void GetZTpc(Double_t dedx, Double_t pTPC, Double_t M2, Double_t &Z2); | |
138 | ||
139 | void GetMassFromPvertexCorrected(Double_t beta, Double_t *pC, Double_t *Mass2); | |
140 | ||
141 | void GetMassFromExpTimes(Double_t beta, Double_t *IntTimes, Double_t *Mass2); | |
142 | void GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pVtx, Int_t FlagPid, Int_t FlagPidTof, Double_t charge, Double_t DCAxy); | |
143 | ||
144 | void GetMassFromMeanMom(Double_t beta, Double_t *IntTimes, Double_t *pVtx, Double_t eta, Double_t charge, Double_t *Mass2, Int_t FlagPid, Int_t FlagPidTof, Double_t DCAxy); | |
145 | ||
146 | void SetPvtxCorrections(); | |
147 | void SetPmeanCorrections(); | |
148 | ||
149 | ClassDef(AliAnalysisNucleiMass, 3); | |
150 | }; | |
151 | ||
152 | #endif |