coverity fix and some clean up
[u/mrichter/AliRoot.git] / PWGLF / QATasks / AliAnalysisTaskQAMultistrange.h
1 #ifndef ALIANALYSISTASKQAMULTISTRANGE_H
2 #define ALIANALYSISTASKQAMULTISTRANGE_H
3
4 /*  See cxx source for full Copyright notice */
5
6 /////////////////////////////////////////////////////////////
7 //
8 //            AliAnalysisTaskQAMultistrange class
9 //              Origin AliAnalysisTaskCheckCascade
10 //              This task has four roles :
11 //                1. QAing the Cascades from ESD and AOD
12 //                   Origin:  AliAnalysisTaskESDCheckV0 by Boris Hippolyte Nov2007, hippolyt@in2p3.fr
13 //                2. Prepare the plots which stand as raw material for yield extraction (wi/wo PID)
14 //                3. Supply an AliCFContainer meant to define the optimised topological selections
15 //                Adapted to Cascade : A.Maire Mar2008, antonin.maire@ires.in2p3.fr
16 //                Modified :           A.Maire Mar2010, antonin.maire@ires.in2p3.fr
17 //                Modified for PbPb analysis: M. Nicassio Feb 2011, maria.nicassio@ba.infn.it
18 //                Modified for QA production: D. Colella 2013, domenico.colella@cern.ch
19 //
20 /////////////////////////////////////////////////////////////
21
22 class TList;
23 class TH1F;
24 class TH2F;
25 class TH3F;
26 class TVector3;
27 class THnSparse;
28  
29 class AliESDEvent;
30 class AliPhysicsSelection;
31 class AliCFContainer;
32 class AliPIDResponse;
33
34 #include "TString.h"
35
36 #include "AliAnalysisTaskSE.h"
37
38 class AliAnalysisTaskQAMultistrange : public AliAnalysisTaskSE {
39  public:
40   AliAnalysisTaskQAMultistrange();
41   AliAnalysisTaskQAMultistrange(const char *name);
42   virtual ~AliAnalysisTaskQAMultistrange();
43   
44   virtual void   UserCreateOutputObjects();
45   virtual void   UserExec(Option_t *option);
46   virtual void   Terminate(Option_t *);
47
48   void SetIsMC                       (Bool_t isMC                       = kFALSE) { fisMC                        = isMC;                       } 
49   void SetAnalysisType               (const char* analysisType          = "ESD" ) { fAnalysisType                = analysisType;               }
50   void SetCollidingSystem            (const char* collidingSystem       = "PbPb") { fCollidingSystem             = collidingSystem;            }
51   void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE ) { fkQualityCutZprimVtxPos      = qualityCutZprimVtxPos;      }
52   void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE ) { fkQualityCutNoTPConlyPrimVtx = qualityCutNoTPConlyPrimVtx; }
53   void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE ) { fkQualityCutTPCrefit         = qualityCutTPCrefit;         }
54   void SetQualityCutnTPCcls          (Bool_t qualityCutnTPCcls          = kTRUE ) { fkQualityCutnTPCcls          = qualityCutnTPCcls;          }
55   void SetQualityCutMinnTPCcls       (Int_t  minnTPCcls                 = 70    ) { fMinnTPCcls                  = minnTPCcls;                 }
56   void SetQualityCutPileup           (Bool_t qualitycutPileup           = kFALSE) { fkQualityCutPileup           = qualitycutPileup;           }
57   void SetCentralityLowLim           (Float_t centrlowlim               = 0.    ) { fCentrLowLim                 = centrlowlim;                }  
58   void SetCentralityUpLim            (Float_t centruplim                = 100.  ) { fCentrUpLim                  = centruplim;                 }
59   void SetCentralityEst              (TString   centrest                = "V0M" ) { fCentrEstimator              = centrest;                   }
60   void SetUseCleaning                (Bool_t   usecleaning              = kTRUE ) { fkUseCleaning                = usecleaning;                }
61   void SetVertexRange                (Float_t vtxrange                  = 0.    ) { fVtxRange                    = vtxrange;                   }
62   void SetMinptCutOnDaughterTracks   (Float_t minptdaughtrks            = 0.    ) { fMinPtCutOnDaughterTracks    = minptdaughtrks;             }
63   void SetEtaCutOnDaughterTracks     (Float_t etadaughtrks              = 0.    ) { fEtaCutOnDaughterTracks      = etadaughtrks;               }
64
65  private:
66         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
67         // your data member object is created on the worker nodes and streaming is not needed.
68         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
69
70
71         Bool_t          fisMC;                          // Boolean : kTRUE = is a MC production
72         TString         fAnalysisType;                  // "ESD" or "AOD" analysis type 
73         TString         fCollidingSystem;               // "PbPb", "pPb" or "pp" colliding system
74         AliPIDResponse *fPIDResponse;                   // PID response object
75         Bool_t          fkQualityCutZprimVtxPos;        // Boolean : kTRUE = cut on the prim.vtx  z-position
76         Bool_t          fkQualityCutNoTPConlyPrimVtx;   // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex
77         Bool_t          fkQualityCutTPCrefit;           // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks
78         Bool_t          fkQualityCutnTPCcls;            // Boolean : kTRUE = ask for at least n TPC clusters for each daughter track
79         Bool_t          fkQualityCutPileup;             // Boolean : kTRUE = ask for no pileup events
80         Int_t           fMinnTPCcls;                    // minimum number of TPC cluster for daughter tracks
81         Float_t         fCentrLowLim;                   // Lower limit for centrality percentile selection
82         Float_t         fCentrUpLim;                    // Upper limit for centrality percentile selection
83         TString         fCentrEstimator;                // string for the centrality estimator: "V0M" for PbPb and "V0A" for pPb
84         Bool_t          fkUseCleaning;                  // Boolean : kTRUE = uses all the cleaning criteria of centrality selections (vertex cut + outliers) otherwise only outliers
85         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
86         Float_t         fMinPtCutOnDaughterTracks;      // minimum pt cut on daughter tracks
87         Float_t         fEtaCutOnDaughterTracks;        // pseudorapidity cut on daughter tracks
88        
89         TList      *fListHistMultistrangeQA;            //! List of Cascade histograms
90         TH1F *fHistEventSel;                            // Gives the number of the events after each event selection
91         TH1F *fHistMassXiMinus;                         // Gives the invariant mass distr. for the Xi minus without PID info on daughter tracks
92         TH1F *fHistMassXiPlus;                          // Gives the invariant mass distr. for the Xi plus without PID info on daughter tracks
93         TH1F *fHistMassOmegaMinus;                      // Gives the invariant mass distr. for the Omega minus without PID info on daughter tracks
94         TH1F *fHistMassOmegaPlus;                       // Gives the invariant mass distr. for the Omega plus without PID info on daughter tracks
95         AliCFContainer  *fCFContCascadeCuts;            // Container meant to store all the relevant distributions corresponding to the cut variables
96         AliCFContainer  *fCFContCascadeMCgen;           // Container meant to store general variables for MC generated particles 
97         
98
99   AliAnalysisTaskQAMultistrange(const AliAnalysisTaskQAMultistrange&);            // not implemented
100   AliAnalysisTaskQAMultistrange& operator=(const AliAnalysisTaskQAMultistrange&); // not implemented
101   
102   ClassDef(AliAnalysisTaskQAMultistrange, 7);
103 };
104
105 #endif
106