1 #ifndef ALIANALYSISNUCLEIMASS_H
2 #define ALIANALYSISNUCLEIMASS_H
8 #include <AliAnalysisTaskSE.h>
9 #include <AliPIDResponse.h>
20 class AliESDtrackCuts;
25 class AliAnalysisNucleiMass : public AliAnalysisTaskSE {
27 AliAnalysisNucleiMass();
28 AliAnalysisNucleiMass(const char *name);
30 virtual ~AliAnalysisNucleiMass();
32 virtual void UserCreateOutputObjects();
33 virtual void UserExec(Option_t *option);
34 virtual void Terminate(Option_t *);
38 void SetCentrality(Double_t CentMin=0., Double_t CentMax=100.) {Centrality[0]=CentMin; Centrality[1]=CentMax;};
40 void SetFilterBit(Int_t TestFilterBit=16) {FilterBit=TestFilterBit;}
42 void SetAbsEtaLimit(Double_t etaMin=0., Double_t etaMax=0.8) {EtaLimit[0]=etaMin;EtaLimit[1]=etaMax;}
43 void SetDCACut(Double_t DCAxyCUT=0.1, Double_t DCAzCUT=1000.0) {DCAxyCut=DCAxyCUT; DCAzCut=DCAzCUT;}
45 void SetNsigmaTPCCut(Double_t nSigmaTpcCut=2) {NsigmaTpcCut=nSigmaTpcCut;}
46 void SetNminTPCcluster(Int_t nMinTPCcluster=0) {NminTpcCluster=nMinTPCcluster;}
47 void SetTrdCut(Int_t kTRDcut=0) {iTrdCut=kTRDcut;}
50 void SetisSignalCheck(Int_t IsSignalCheck=2) {kSignalCheck=IsSignalCheck;}
51 void SetMtofMethod(Int_t iMtofMethod=1) {iMtof=iMtofMethod;}
54 AliAnalysisNucleiMass(const AliAnalysisNucleiMass &old);
55 AliAnalysisNucleiMass& operator=(const AliAnalysisNucleiMass &source);
57 static const Int_t nbin=46; // Number of pt bins in Tof Mass distributions
58 static const Int_t nBconf=2; // Number of Magnetic field configuration (B++ and B--)
59 static const Int_t nPart=9; // Number of particle type: e,mu,pi,K...
60 static const Int_t nSpec=18; // Number of particle species: particles: e+,e-,mu+,mu-,...
62 //Variables settings with public methods:
63 Double_t Centrality[2]; // Centrality bin (min and max)
64 Int_t FilterBit; // Filter Bit to be used
65 Double_t EtaLimit[2]; // Eta windows in analysis
66 Double_t DCAxyCut; // Cut on DCA-xy
67 Double_t DCAzCut; // Cut on DCA-z
68 Double_t NsigmaTpcCut; // number of sigma Tpc Cut
69 Int_t NminTpcCluster; // Number of minimum TPC clusters
70 Int_t iTrdCut; // iTrdCut==0-> No TRD cut; iTrdCut==1-> Yes TRD cut: yes TRD; iTrdCut==2->Yes TRD cut: no TRD;
71 Int_t kSignalCheck; // kSignalCheck==1->Fill all plots ; kSignalCheck==0->Fill only TH1 ; kSignalCheck==2-> Fill TH1 and some TH2 usefull in analysis
72 Int_t iMtof; // iMtof==1->m~pVtx ; iMtof==2->m~pExp ; iMtof==4->m~pExp(MCcorrected) for (d,He3); iMtof==4->m~pExp(MCcorrected) (p,d,He3)
75 Int_t iBconf; //! If Magnetic Field configuration is down or up
76 Bool_t kTOF; //! kTOFout and kTIME required
78 AliAODEvent* fAOD; //! AOD object
79 AliESDEvent* fESD; //! ESD object
80 AliVEvent* fEvent; //! general object
81 AliPIDResponse *fPIDResponse; //! pointer to PID response
82 TList *fList[nBconf]; //! lists for slot
84 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)
85 TH1F *hCentrality[nBconf][2]; //! Centrality of the selected and analyzed events
86 TH1F *hZvertex[nBconf][2]; //! z-vertex distribution before and after the cuts on the event
88 TH1F *hEta[nBconf]; //! Eta distribution of the tracks
89 TH1F *hPhi[nBconf]; //! Phi particle distribution
90 TH2F *fEtaPhi[nBconf]; //! Phi vs Eta particle distribution
91 TH1F *hNTpcCluster[nBconf]; //! # of the TPC clusters after the track cuts
92 TH1F *hNTrdSlices[nBconf]; //! Number of the TRD slices after the track cuts
95 TH2F *fdEdxVSp[nBconf][2]; //! dedx vs pTpc
96 TProfile *hDeDxExp[nBconf][9]; //! TPC spline used
97 TH2F *fNsigmaTpc[nBconf][9]; //! NsigmaTPC vs. pTpc
98 TH2F *fNsigmaTpc_kTOF[nBconf][18]; //! NsigmaTPC vs. pt when kTOF is required and in DCAxyCut
101 TH2F *fBetaTofVSp[nBconf][2]; //! beta vs pVtx
102 TProfile *hBetaExp[nBconf][9]; //! TOF expected beta
103 TH2F *fNsigmaTof[nBconf][9]; //! NsigmaTOF vs. pT
104 TH2F *fNsigmaTof_DcaCut[nBconf][18]; //! NsigmaTOF vs. pT
106 //TPC and TOF conbined
107 TH2F *fM2vsPt_NoTpcCut[nBconf][2][2]; //! M2 vs. Pt w/o the DCAxyCut
108 TH2F *fM2vsPt[nBconf][2][18]; //! M2 vs. Pt with NsigmaTpcCut for each particle species, w/o the DCAxyCut
109 TH2F *fM2vsZ[nBconf][10]; //! M2 vs. Z in various pT bins
112 TH1D *hDCAxy[nBconf][18][nbin]; //! DCAxy distribution with NsigmaTpcCut for each particle species, in pT bins
113 TH1D *hDCAz[nBconf][18][nbin]; //! DCAz distribution with NsigmaTpcCut for each particle species, in pT bins
115 //TOF mass distributions
116 TH1D *hM2CutDCAxy[nBconf][18][nbin]; //! Tof m2 distribution in DCAxyCut and with NsigmaTpcCut
117 TH1D *hM2CutGroundDCAxy[nBconf][18][nbin]; //! Tof m2 distribution in the background of DCAxyCut (secondary nuclei selection) and with NsigmaTpcCut
120 TF1 *fPmeanVsPexp[3]; //! Parameterization of (<p>-pExp)/pExp vs pExp for p,d,He3
123 TH2F *fPmeanVsBetaGamma[nBconf][18]; //!<p>/p vs beta*gamma (TH1)
124 TProfile *prPmeanVsBetaGamma[nBconf][18]; //!<p>/p vs beta*gamma (profile)
126 //------------------------------Methods----------------------------------------
127 void GetMassFromPvertex(Double_t beta, Double_t p, Double_t &M2); //...*
128 void GetZTpc(Double_t dedx, Double_t pTPC, Double_t M2, Double_t &Z2); //...*
129 void GetMassFromExpTimes(Double_t beta, Double_t *IntTimes, Double_t *Mass2, Int_t iCorr, Double_t pVtx, Int_t FlagPid, Double_t charge); //...*
131 ClassDef(AliAnalysisNucleiMass, 1);