]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/QATasks/AliAnalysisTaskQAV0.h
First commit of multistrange QA post-processing macro
[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 //Setters for dE/dx selection
84   void SetTPCdEdxSelection ( Double_t lParameter ) { fdEdxCut = lParameter; }
85 //---------------------------------------------------------------------------------------  
86
87  private:
88                                 // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
89                                 // your data member object is created on the worker nodes and streaming is not needed.
90                                 // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
91
92   //Top Structure
93         TList   *fOutput;                     //! List of output objects
94
95   //Per-Event Histograms
96   TH1D* fHistEvent;             //! Event Selection Histogram (no further info)
97
98   //Per-Candidate Histograms
99   
100   //Base Topological Variables for All Reconstructed V0 Vertices
101   TH1D *fHistTopDCANegToPV;       //!
102   TH1D *fHistTopDCAPosToPV;       //!
103   TH1D *fHistTopDCAV0Daughters;   //!
104   TH1D *fHistTopCosinePA;         //!
105   TH1D *fHistTopV0Radius;         //!
106
107   //Zoomed into Selection criteria (fV0Sels)
108   TH1D *fHistSelectedTopDCANegToPV;       //!
109   TH1D *fHistSelectedTopDCAPosToPV;       //!
110   TH1D *fHistSelectedTopDCAV0Daughters;   //!
111   TH1D *fHistSelectedTopCosinePA;         //!
112   TH1D *fHistSelectedTopV0Radius;         //!
113
114   //Histograms for Storing Invariant Mass: 2D 
115   //Stored only if the 5 topological selections in fV0Sels are satisfied 
116   TH2D *f2dHistInvMassK0Short;      //!
117   TH2D *f2dHistInvMassLambda;       //!
118   TH2D *f2dHistInvMassAntiLambda;   //!
119
120   //With dE/dx Selection (extra)
121   TH2D *f2dHistInvMassWithdEdxK0Short;      //!
122   TH2D *f2dHistInvMassWithdEdxLambda;       //!
123   TH2D *f2dHistInvMassWithdEdxAntiLambda;   //!
124
125   //dEdx QA Histograms (extra) 
126   //PIDFrameWork
127   TH2D *f2dHistResponseNegativeAsPion;   //! 
128   TH2D *f2dHistResponseNegativeAsProton; //! 
129   TH2D *f2dHistResponsePositiveAsPion;   //! 
130   TH2D *f2dHistResponsePositiveAsProton; //! 
131
132   //Raw Stuff, Clean Version: Proton and Pion From Lambdas
133   //Potentially useful for checking calibration of dE/dx 
134   TH2D *f2dHistdEdxSignalPionFromLambda;   //! 
135   TH2D *f2dHistdEdxSignalProtonFromLambda; //! 
136   TH2D *f2dHistResponsePionFromLambda;     //! 
137   TH2D *f2dHistResponseProtonFromLambda;   //!
138
139   AliPIDResponse *fPIDResponse;     // PID response object
140
141   //Objects Controlling Task Behaviour: has to be streamed! 
142   Bool_t    fkRunV0Vertexer;      //if true, re-run vertexer with loose cuts. CARE MUST BE TAKEN in PbPb!
143   Double_t  fV0VertexerSels[7];     // Array to store the 7 values for the different selections V0 related
144   Double_t  fV0Sels[7];           // Array to store the 7 values for the different selections V0 related
145
146   //Variables controlling task behaviour (don't "//!" them!)
147   //For setting a dEdx cut: can be strict... (will anyhow depend on analysis!) 
148   Double_t fdEdxCut; 
149
150    AliAnalysisTaskQAV0(const AliAnalysisTaskQAV0&);            // not implemented
151    AliAnalysisTaskQAV0& operator=(const AliAnalysisTaskQAV0&); // not implemented
152   
153    ClassDef(AliAnalysisTaskQAV0, 11);
154 };
155
156 #endif