First commit of V0 QA Task. A long way from perfect but probably ok to catch early...
[u/mrichter/AliRoot.git] / PWGLF / QATasks / AliAnalysisTaskQAV0.h
1 #ifndef AliAnalysisTaskQAV0_H
2 #define AliAnalysisTaskQAV0_H
3
4 /**************************************************************************
5  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  *                                                                        *
7  * Author: The ALICE Off-line Project.                                    *
8  * Contributors are mentioned in the code where appropriate.              *
9  *                                                                        *
10  * Permission to use, copy, modify and distribute this software and its   *
11  * documentation strictly for non-commercial purposes is hereby granted   *
12  * without fee, provided that the above copyright notice appears in all   *
13  * copies and that both the copyright notice and this permission notice   *
14  * appear in the supporting documentation. The authors make no claims     *
15  * about the suitability of this software for any purpose. It is          *
16  * provided "as is" without express or implied warranty.                  *
17  **************************************************************************/
18
19 //-----------------------------------------------------------------
20 //      AliAnalysisTaskQAV0 class
21 //      -------------------------
22 //
23 //    Please see cxx file for more details.   
24 //             
25 //-----------------------------------------------------------------
26
27 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 //
29 // --- This version: 23 Oct 2013
30 //
31 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32
33 class TList;
34 class TH1F;
35 class TH2F;
36 class TH3F;
37 class TVector3;
38 class THnSparse;
39
40 class AliESDpid;
41 class AliESDtrackCuts;
42 class AliAnalysisUtils;
43 class AliESDEvent;
44 class AliPhysicsSelection;
45 class AliCFContainer;
46
47 //#include "TString.h"
48 //#include "AliESDtrackCuts.h"
49 #include "AliAnalysisTaskSE.h"
50
51 class AliAnalysisTaskQAV0 : public AliAnalysisTaskSE {
52  public:
53         AliAnalysisTaskQAV0();
54         AliAnalysisTaskQAV0(const char *name);
55         virtual ~AliAnalysisTaskQAV0();
56         
57         virtual void     UserCreateOutputObjects();
58         virtual void     UserExec(Option_t *option);
59         virtual void     Terminate(Option_t *);
60
61 //---------------------------------------------------------------------------------------
62   //Task Configuration: Meant to enable quick re-execution of vertexer if needed
63   void SetRunV0Vertexer ( Bool_t lRunV0Vertexer = kTRUE) { fkRunV0Vertexer = lRunV0Vertexer; }
64 //---------------------------------------------------------------------------------------
65 //Setters for the V0 Vertexer Parameters
66   void SetV0VertexerMaxChisquare   ( Double_t lParameter ){ fV0VertexerSels[0] = lParameter; }
67   void SetV0VertexerDCAFirstToPV   ( Double_t lParameter ){ fV0VertexerSels[1] = lParameter; }
68   void SetV0VertexerDCASecondtoPV  ( Double_t lParameter ){ fV0VertexerSels[2] = lParameter; }
69   void SetV0VertexerDCAV0Daughters ( Double_t lParameter ){ fV0VertexerSels[3] = lParameter; }
70   void SetV0VertexerCosinePA       ( Double_t lParameter ){ fV0VertexerSels[4] = lParameter; }
71   void SetV0VertexerMinRadius      ( Double_t lParameter ){ fV0VertexerSels[5] = lParameter; }
72   void SetV0VertexerMaxRadius      ( Double_t lParameter ){ fV0VertexerSels[6] = lParameter; }
73 //---------------------------------------------------------------------------------------
74 //Setters for the V0 Extraction
75   void SetV0SelectionMaxChisquare   ( Double_t lParameter ){ fV0Sels[0] = lParameter; }
76   void SetV0SelectionDCAFirstToPV   ( Double_t lParameter ){ fV0Sels[1] = lParameter; }
77   void SetV0SelectionDCASecondtoPV  ( Double_t lParameter ){ fV0Sels[2] = lParameter; }
78   void SetV0SelectionDCAV0Daughters ( Double_t lParameter ){ fV0Sels[3] = lParameter; }
79   void SetV0SelectionCosinePA       ( Double_t lParameter ){ fV0Sels[4] = lParameter; }
80   void SetV0SelectionMinRadius      ( Double_t lParameter ){ fV0Sels[5] = lParameter; }
81   void SetV0SelectionMaxRadius      ( Double_t lParameter ){ fV0Sels[6] = lParameter; }
82 //---------------------------------------------------------------------------------------
83   
84  private:
85                                 // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
86                                 // your data member object is created on the worker nodes and streaming is not needed.
87                                 // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
88
89   //Top Structure
90         TList   *fOutput;                     //! List of output objects
91
92   //Per-Event Histograms
93   TH1D* fHistEvent;             //! Event Selection Histogram (no further info)
94
95   //Per-Candidate Histograms
96   
97   //Base Topological Variables for All Reconstructed V0 Vertices
98   TH1D *fHistTopDCANegToPV;       //!
99   TH1D *fHistTopDCAPosToPV;       //!
100   TH1D *fHistTopDCAV0Daughters;   //!
101   TH1D *fHistTopCosinePA;         //!
102   TH1D *fHistTopV0Radius;         //!
103
104   //Zoomed into Selection criteria (fV0Sels)
105   TH1D *fHistSelectedTopDCANegToPV;       //!
106   TH1D *fHistSelectedTopDCAPosToPV;       //!
107   TH1D *fHistSelectedTopDCAV0Daughters;   //!
108   TH1D *fHistSelectedTopCosinePA;         //!
109   TH1D *fHistSelectedTopV0Radius;         //!
110
111   //Histograms for Storing Invariant Mass: 2D 
112   //Stored only if the 5 topological selections in fV0Sels are satisfied 
113   TH2D *f2dHistInvMassK0Short;      //!
114   TH2D *f2dHistInvMassLambda;       //!
115   TH2D *f2dHistInvMassAntiLambda;   //!
116
117   //With dE/dx Selection (extra)
118   TH2D *f2dHistInvMassWithdEdxK0Short;      //!
119   TH2D *f2dHistInvMassWithdEdxLambda;       //!
120   TH2D *f2dHistInvMassWithdEdxAntiLambda;   //!
121
122   //dEdx QA Histograms (extra) 
123   //PIDFrameWork
124   TH2D *f2dHistResponseNegativeAsPion;   //! 
125   TH2D *f2dHistResponseNegativeAsProton; //! 
126   TH2D *f2dHistResponsePositiveAsPion;   //! 
127   TH2D *f2dHistResponsePositiveAsProton; //! 
128
129   //Raw Stuff, Clean Version: Proton and Pion From Lambdas
130   //Potentially useful for checking calibration of dE/dx 
131   TH2D *f2dHistdEdxSignalPionFromLambda;   //! 
132   TH2D *f2dHistdEdxSignalProtonFromLambda; //! 
133   TH2D *f2dHistResponsePionFromLambda;     //! 
134   TH2D *f2dHistResponseProtonFromLambda;   //!
135
136   AliPIDResponse *fPIDResponse;     // PID response object
137
138   //Objects Controlling Task Behaviour: has to be streamed! 
139   Bool_t    fkRunV0Vertexer;      //if true, re-run vertexer with loose cuts. CARE MUST BE TAKEN in PbPb!
140   Double_t  fV0VertexerSels[7];     // Array to store the 7 values for the different selections V0 related
141   Double_t  fV0Sels[7];           // Array to store the 7 values for the different selections V0 related
142
143
144    AliAnalysisTaskQAV0(const AliAnalysisTaskQAV0&);            // not implemented
145    AliAnalysisTaskQAV0& operator=(const AliAnalysisTaskQAV0&); // not implemented
146   
147    ClassDef(AliAnalysisTaskQAV0, 11);
148 };
149
150 #endif