]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.h
Centrality estimator added; centrality bin edges are defined (P.Batzing)
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / Nuclei / masses / AliAnalysisNucleiMass.h
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 TH2D;
19 class TGraph;
20 class AliESDtrackCuts;
21 class TProfile;
22 class TFile;
23 class TObject;
24
25 class AliAnalysisNucleiMass : public AliAnalysisTaskSE {
26  public:
27   AliAnalysisNucleiMass();
28   AliAnalysisNucleiMass(const char *name);
29   
30   virtual ~AliAnalysisNucleiMass();
31   
32   virtual void   UserCreateOutputObjects();
33   virtual void   UserExec(Option_t *option);
34   virtual void   Terminate(Option_t *);
35
36
37   //Cuts on the events
38   void SetCentrality(Double_t CentMin=0., Double_t CentMax=100.) {Centrality[0]=CentMin; Centrality[1]=CentMax;};
39   //Cuts on the tracks
40   void SetFilterBit(Int_t TestFilterBit=16) {FilterBit=TestFilterBit;}
41    //geometrical cuts
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;}
44    //other cuts 
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;}
48   
49   //Settings
50   void SetisSignalCheck(Int_t IsSignalCheck=2) {kSignalCheck=IsSignalCheck;}
51   void SetMtofMethod(Int_t iMtofMethod=1) {iMtof=iMtofMethod;}
52
53  private:
54   AliAnalysisNucleiMass(const AliAnalysisNucleiMass &old); 
55   AliAnalysisNucleiMass& operator=(const AliAnalysisNucleiMass &source);
56     
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-,...
61     
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)
73   
74   //other:
75   Int_t iBconf;                                   //! If Magnetic Field configuration is down or up
76   Bool_t kTOF;                                    //! kTOFout and kTIME required
77   
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
83   
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
87   
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
93
94   //TPC info:
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 
99   
100   //TOF info:
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
105
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
110
111   //DCA distributions
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
114   
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
118  
119   //Parametrizations
120   TF1 *fPmeanVsPexp[3];                           //! Parameterization of (<p>-pExp)/pExp vs pExp for p,d,He3
121
122   //...
123   TH2F *fPmeanVsBetaGamma[nBconf][18];            //!<p>/p vs beta*gamma (TH1)
124   TProfile *prPmeanVsBetaGamma[nBconf][18];       //!<p>/p vs beta*gamma (profile)
125
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); //...*
130  
131   ClassDef(AliAnalysisNucleiMass, 1);
132 };
133
134 #endif