]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliAnalysisTaskDedx.h
Code to combine and fit ID spectra (pi/K/p).
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisTaskDedx.h
1 #ifndef AliAnalysisTaskDedx_cxx
2 #define AliAnalysisTaskDedx_cxx
3
4 /*  See cxx source for full Copyright notice */
5
6 //-----------------------------------------------------------------
7 //                 AliAnalysisTaskDedx class
8 //            This task is for QAing the dE/dx from the ESD
9 //              Origin: B.H. Nov2007, hippolyt@in2p3.fr
10 //-----------------------------------------------------------------
11
12 class TList;
13 class TH1F;
14 class TH2F;
15
16 #include "AliAnalysisTaskSE.h"
17
18 class AliAnalysisTaskDedx : public AliAnalysisTaskSE {
19  public:
20   AliAnalysisTaskDedx();
21   AliAnalysisTaskDedx(const char    *rName,
22                       const Bool_t   rAllConstrainedFlag,
23                       const Bool_t   rMidPseudoRapidityFlag,
24                       const Bool_t   rSelTrackRemoveKink,
25                       const Bool_t   rSelTrackWithOnTheFlyV0,
26                       const Int_t    rSelTrackMinClustersTPC,
27                       const Int_t    rSelTrackMinClustersITS,
28                       const Float_t  rSelTrackMaxChi2PerClusterTPC,
29                       const Float_t  rSelTrackMaxChi2PerClusterITS,
30                       const Double_t rSelTrackMaxCov11,
31                       const Double_t rSelTrackMaxCov22,
32                       const Double_t rSelTrackMaxCov33,
33                       const Double_t rSelTrackMaxCov44,
34                       const Double_t rSelTrackMaxCov55,
35                       const Double_t rSelV0MaxDcaDaughters,
36                       const Double_t rSelV0MinDecayLength);
37
38   virtual ~AliAnalysisTaskDedx() {}
39   
40   virtual void   UserCreateOutputObjects();
41   virtual void   UserExec(Option_t *option);
42   virtual void   Terminate(Option_t *);
43
44   void   SetCollidingSystems(Int_t collidingSystems = 0) {fCollidingSystems = collidingSystems;}
45   void   SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
46
47   void   SetAllConstrainedFlag(Bool_t allConstrainedFlag = 0)                      {fAllConstrainedFlag = allConstrainedFlag;}
48   void   SetMidPseudoRapidityFlag(Bool_t midPseudoRapidityFlag = 0)                {fMidPseudoRapidityFlag = midPseudoRapidityFlag;}
49
50   void   SetSelTrackRemoveKink(Bool_t selTrackRemoveKink = 0)                      {fSelTrackRemoveKink = selTrackRemoveKink;}
51   void   SetSelTrackWithOnTheFlyV0(Bool_t selTrackWithOnTheFlyV0 = 0)              {fSelTrackWithOnTheFlyV0 = selTrackWithOnTheFlyV0;}
52   void   SetSelTrackMinClustersTPC(Int_t selTrackMinClustersTPC = 0)               {fSelTrackMinClustersTPC = selTrackMinClustersTPC;}
53   void   SetSelTrackMinClustersITS(Int_t selTrackMinClustersITS = 0)               {fSelTrackMinClustersITS = selTrackMinClustersITS;}
54   void   SetSelTrackMaxChi2PerClusterTPC(Float_t selTrackMaxChi2PerClusterTPC = 0) {fSelTrackMaxChi2PerClusterTPC = selTrackMaxChi2PerClusterTPC;}
55   void   SetSelTrackMaxChi2PerClusterITS(Float_t selTrackMaxChi2PerClusterITS = 0) {fSelTrackMaxChi2PerClusterITS = selTrackMaxChi2PerClusterITS;}
56   void   SetSelTrackMaxCov11(Double_t selTrackMaxCov11 = 0)                        {fSelTrackMaxCov11 = selTrackMaxCov11;}
57   void   SetSelTrackMaxCov22(Double_t selTrackMaxCov22 = 0)                        {fSelTrackMaxCov22 = selTrackMaxCov22;}
58   void   SetSelTrackMaxCov33(Double_t selTrackMaxCov33 = 0)                        {fSelTrackMaxCov33 = selTrackMaxCov33;}
59   void   SetSelTrackMaxCov44(Double_t selTrackMaxCov44 = 0)                        {fSelTrackMaxCov44 = selTrackMaxCov44;}
60   void   SetSelTrackMaxCov55(Double_t selTrackMaxCov55 = 0)                        {fSelTrackMaxCov55 = selTrackMaxCov55;}
61   void   SetSelV0MaxDcaDaughters(Double_t selV0MaxDcaDaughters = 0)                {fSelV0MaxDcaDaughters = selV0MaxDcaDaughters;}
62   void   SetSelV0MinDecayLength(Double_t selV0MinDecayLength = 0)                  {fSelV0MinDecayLength = selV0MinDecayLength;}
63   
64  private:
65
66   Bool_t         IsAccepted(AliESDtrack *track);
67   //  Float_t        GetSigmaToVertex(AliESDtrack* esdTrack);
68   TString      fAnalysisType;                       //  ESD or AOD
69   Int_t        fCollidingSystems;                   //  Colliding systems 0/1 for pp/PbPb
70   TList       *fListHist;                           //! List of histograms
71   TH1F        *fHistPtot;                           //! Ptot spectrum
72   TH1F        *fHistMultiplicity;                   //! Multiplicity distribution
73   TH2F        *fHistTPCDedxVsMomentum;              //! TPC dE/dx vs momemtum
74   TH2F        *fHistITSDedxVsMomentum;              //! ITS dE/dx vs momemtum
75   TH1F        *fHistMassK0;                         //! Invariant Mass of K0s
76   TH1F        *fHistMassLambda;                     //! Invariant Mass of Lambda
77   TH1F        *fHistMassAntiLambda;                 //! Invariant Mass of Anti-Lambda
78   TH2F        *fHistTPCDedxVsMomPosK0;              //! TPC dE/dx vs momemtum for K0 positive daughter
79   TH2F        *fHistTPCDedxVsMomNegK0;              //! TPC dE/dx vs momemtum for K0 negative daughter
80   TH2F        *fHistTPCDedxVsMomPosLambda;          //! TPC dE/dx vs momemtum for Lambda positive daughter
81   TH2F        *fHistTPCDedxVsMomNegLambda;          //! TPC dE/dx vs momemtum for Lambda negative daughter
82   TH2F        *fHistTPCDedxVsMomPosAntiLambda;      //! TPC dE/dx vs momemtum for Anti-Lambda positive daughter
83   TH2F        *fHistTPCDedxVsMomNegAntiLambda;      //! TPC dE/dx vs momemtum for Anti-Lambda negative daughter
84   TH1F        *fHistDiffInOutMomentum;              //! Difference between inner and outer TPC momenta
85   TH1F        *fHistDiffPrimOutMomentum;            //! Difference between primary and outer TPC momenta
86   TH1F        *fHistDiffPrimMeanMomentum;           //! Difference between primary and (inner+outer)/2 TPC momenta
87   TH1F        *fHistPercPrimMeanMomentum;           //! Percentage between primary and (inner+outer)/2 TPC momenta
88   TH1F        *fHistPrimEta;                        //! Pseudorapidity distribution
89   TH2F        *fHistPercPrimMeanMomentumVsEta;      //! Same as fHistDiffPrimMeanMomentum but vs pseudorapidity
90   TH2F        *fHistPercPrimMeanMomentumVsPrim;     //! Same as fHistDiffPrimMeanMomentum but vs primary momentum
91           
92   TH1F        *fHistMultiplicityCuts;               //! Same as above but once primary track cuts applied
93   TH2F        *fHistTPCDedxVsMomentumCuts;          //!
94   TH2F        *fHistITSDedxVsMomentumCuts;          //!
95   TH1F        *fHistMassK0Cuts;                     //!
96   TH1F        *fHistMassLambdaCuts;                 //!
97   TH1F        *fHistMassAntiLambdaCuts;             //!
98   TH2F        *fHistTPCDedxVsMomPosK0Cuts;          //!
99   TH2F        *fHistTPCDedxVsMomNegK0Cuts;          //!
100   TH2F        *fHistTPCDedxVsMomPosLambdaCuts;      //!
101   TH2F        *fHistTPCDedxVsMomNegLambdaCuts;      //!
102   TH2F        *fHistTPCDedxVsMomPosAntiLambdaCuts;  //!
103   TH2F        *fHistTPCDedxVsMomNegAntiLambdaCuts;  //!
104   TH1F        *fHistDiffInOutMomentumCuts;          //!
105   TH1F        *fHistDiffPrimOutMomentumCuts;        //!
106   TH1F        *fHistDiffPrimMeanMomentumCuts;       //!
107   TH1F        *fHistPercPrimMeanMomentumCuts;       //!
108   TH1F        *fHistPrimEtaCuts;                    //!
109   TH2F        *fHistPercPrimMeanMomentumVsEtaCuts;  //!
110   TH2F        *fHistPercPrimMeanMomentumVsPrimCuts; //!
111
112   Bool_t       fAllConstrainedFlag;                 // Primary vertex constrain requirement
113   Bool_t       fMidPseudoRapidityFlag;              // Mid-eta requirement
114
115                                                     // Track selections: streaming allowed and needed !
116   Bool_t       fSelTrackRemoveKink;                 // Remove kink candidates
117   Bool_t       fSelTrackWithOnTheFlyV0;             // Select daughter tracks from on-the-fly V0s
118   Int_t        fSelTrackMinClustersTPC;             // Minimum number of cluster in the TPC
119   Int_t        fSelTrackMinClustersITS;             // Minimum number of cluster in the ITS
120   Float_t      fSelTrackMaxChi2PerClusterTPC;       // Maximum chisq per cluster in the TPC
121   Float_t      fSelTrackMaxChi2PerClusterITS;       // Maximum chisq per cluster in the ITS
122   Double_t     fSelTrackMaxCov11;                   // Maximum value for cov.mat. diag. element
123   Double_t     fSelTrackMaxCov22;                   // Maximum value for cov.mat. diag. element
124   Double_t     fSelTrackMaxCov33;                   // Maximum value for cov.mat. diag. element
125   Double_t     fSelTrackMaxCov44;                   // Maximum value for cov.mat. diag. element
126   Double_t     fSelTrackMaxCov55;                   // Maximum value for cov.mat. diag. element
127   Double_t     fSelV0MaxDcaDaughters;               // Maximum value for DCA between V0 daughter tracks
128   Double_t     fSelV0MinDecayLength;                // Minimum value for V0 decay length
129
130   AliAnalysisTaskDedx(const AliAnalysisTaskDedx&);            // not implemented
131   AliAnalysisTaskDedx& operator=(const AliAnalysisTaskDedx&); // not implemented
132   
133   ClassDef(AliAnalysisTaskDedx, 1);
134 };
135
136 #endif