coverity fix and some clean up
[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 "AliPIDResponse.h"
50 #include "AliAnalysisTaskSE.h"
51
52 class AliAnalysisTaskQAV0 : public AliAnalysisTaskSE {
53  public:
54         AliAnalysisTaskQAV0();
55         AliAnalysisTaskQAV0(const char *name);
56         virtual ~AliAnalysisTaskQAV0();
57         
58         virtual void     UserCreateOutputObjects();
59         virtual void     UserExec(Option_t *option);
60         virtual void     Terminate(Option_t *);
61
62 //---------------------------------------------------------------------------------------
63   //Task Configuration: Meant to enable quick re-execution of vertexer if needed
64   void SetRunV0Vertexer ( Bool_t lRunV0Vertexer = kTRUE) { fkRunV0Vertexer = lRunV0Vertexer; }
65 //---------------------------------------------------------------------------------------
66 //Setters for the V0 Vertexer Parameters
67   void SetV0VertexerMaxChisquare   ( Double_t lParameter ){ fV0VertexerSels[0] = lParameter; }
68   void SetV0VertexerDCAFirstToPV   ( Double_t lParameter ){ fV0VertexerSels[1] = lParameter; }
69   void SetV0VertexerDCASecondtoPV  ( Double_t lParameter ){ fV0VertexerSels[2] = lParameter; }
70   void SetV0VertexerDCAV0Daughters ( Double_t lParameter ){ fV0VertexerSels[3] = lParameter; }
71   void SetV0VertexerCosinePA       ( Double_t lParameter ){ fV0VertexerSels[4] = lParameter; }
72   void SetV0VertexerMinRadius      ( Double_t lParameter ){ fV0VertexerSels[5] = lParameter; }
73   void SetV0VertexerMaxRadius      ( Double_t lParameter ){ fV0VertexerSels[6] = lParameter; }
74 //---------------------------------------------------------------------------------------
75 //Setters for the V0 Extraction
76   void SetV0SelectionMaxChisquare   ( Double_t lParameter ){ fV0Sels[0] = lParameter; }
77   void SetV0SelectionDCAFirstToPV   ( Double_t lParameter ){ fV0Sels[1] = lParameter; }
78   void SetV0SelectionDCASecondtoPV  ( Double_t lParameter ){ fV0Sels[2] = lParameter; }
79   void SetV0SelectionDCAV0Daughters ( Double_t lParameter ){ fV0Sels[3] = lParameter; }
80   void SetV0SelectionCosinePA       ( Double_t lParameter ){ fV0Sels[4] = lParameter; }
81   void SetV0SelectionMinRadius      ( Double_t lParameter ){ fV0Sels[5] = lParameter; }
82   void SetV0SelectionMaxRadius      ( Double_t lParameter ){ fV0Sels[6] = lParameter; }
83 //---------------------------------------------------------------------------------------
84 //Setters for dE/dx selection
85   void SetTPCdEdxSelection ( Double_t lParameter ) { fdEdxCut = lParameter; }
86 //---------------------------------------------------------------------------------------  
87
88  private:
89                                 // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
90                                 // your data member object is created on the worker nodes and streaming is not needed.
91                                 // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
92
93   //Top Structure
94         TList   *fOutput;                     //! List of output objects
95
96   //Per-Event Histograms
97   TH1D* fHistEvent;             //! Event Selection Histogram (no further info)
98
99   //Per-Candidate Histograms
100   
101   //Base Topological Variables for All Reconstructed V0 Vertices
102   TH1D *fHistTopDCANegToPV;       //!
103   TH1D *fHistTopDCAPosToPV;       //!
104   TH1D *fHistTopDCAV0Daughters;   //!
105   TH1D *fHistTopCosinePA;         //!
106   TH1D *fHistTopV0Radius;         //!
107
108   //Zoomed into Selection criteria (fV0Sels)
109   TH1D *fHistSelectedTopDCANegToPV;       //!
110   TH1D *fHistSelectedTopDCAPosToPV;       //!
111   TH1D *fHistSelectedTopDCAV0Daughters;   //!
112   TH1D *fHistSelectedTopCosinePA;         //!
113   TH1D *fHistSelectedTopV0Radius;         //!
114
115   //Histograms for Storing Invariant Mass: 2D 
116   //Stored only if the 5 topological selections in fV0Sels are satisfied 
117   TH2D *f2dHistInvMassK0Short;      //!
118   TH2D *f2dHistInvMassLambda;       //!
119   TH2D *f2dHistInvMassAntiLambda;   //!
120
121   //With dE/dx Selection (extra)
122   TH2D *f2dHistInvMassWithdEdxK0Short;      //!
123   TH2D *f2dHistInvMassWithdEdxLambda;       //!
124   TH2D *f2dHistInvMassWithdEdxAntiLambda;   //!
125
126   //dEdx QA Histograms (extra) 
127   //PIDFrameWork
128   TH2D *f2dHistResponseNegativeAsPion;   //! 
129   TH2D *f2dHistResponseNegativeAsProton; //! 
130   TH2D *f2dHistResponsePositiveAsPion;   //! 
131   TH2D *f2dHistResponsePositiveAsProton; //! 
132
133   //Raw Stuff, Clean Version: Proton and Pion From Lambdas
134   //Potentially useful for checking calibration of dE/dx 
135   TH2D *f2dHistdEdxSignalPionFromLambda;   //! 
136   TH2D *f2dHistdEdxSignalProtonFromLambda; //! 
137   TH2D *f2dHistResponsePionFromLambda;     //! 
138   TH2D *f2dHistResponseProtonFromLambda;   //!
139
140   AliPIDResponse *fPIDResponse;     // PID response object
141
142   //Objects Controlling Task Behaviour: has to be streamed! 
143   Bool_t    fkRunV0Vertexer;      //if true, re-run vertexer with loose cuts. CARE MUST BE TAKEN in PbPb!
144   Double_t  fV0VertexerSels[7];     // Array to store the 7 values for the different selections V0 related
145   Double_t  fV0Sels[7];           // Array to store the 7 values for the different selections V0 related
146
147   //Variables controlling task behaviour (don't "//!" them!)
148   //For setting a dEdx cut: can be strict... (will anyhow depend on analysis!) 
149   Double_t fdEdxCut; 
150
151    AliAnalysisTaskQAV0(const AliAnalysisTaskQAV0&);            // not implemented
152    AliAnalysisTaskQAV0& operator=(const AliAnalysisTaskQAV0&); // not implemented
153   
154    ClassDef(AliAnalysisTaskQAV0, 11);
155 };
156
157 #endif