]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/QATasks/AliAnalysisTaskQAMultistrange.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[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 SetSDDselection               (Bool_t SDDSelection               = kFALSE) { fkSDDSelectionOn             = SDDSelection;               }
52   void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE ) { fkQualityCutZprimVtxPos      = qualityCutZprimVtxPos;      }
53   void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE ) { fkQualityCutNoTPConlyPrimVtx = qualityCutNoTPConlyPrimVtx; }
54   void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE ) { fkQualityCutTPCrefit         = qualityCutTPCrefit;         }
55   void SetQualityCutnTPCcls          (Bool_t qualityCutnTPCcls          = kTRUE ) { fkQualityCutnTPCcls          = qualityCutnTPCcls;          }
56   void SetQualityCutMinnTPCcls       (Int_t  minnTPCcls                 = 70    ) { fMinnTPCcls                  = minnTPCcls;                 }
57   void SetQualityCutPileup           (Bool_t qualitycutPileup           = kFALSE) { fkQualityCutPileup           = qualitycutPileup;           }
58   void SetwithSDD                    (Bool_t withSDD                    = kTRUE ) { fwithSDD                     = withSDD;                    } 
59   void SetCentralityLowLim           (Float_t centrlowlim               = 0.    ) { fCentrLowLim                 = centrlowlim;                }  
60   void SetCentralityUpLim            (Float_t centruplim                = 100.  ) { fCentrUpLim                  = centruplim;                 }
61   void SetCentralityEst              (TString   centrest                = "V0M" ) { fCentrEstimator              = centrest;                   }
62   void SetUseCleaning                (Bool_t   usecleaning              = kTRUE ) { fkUseCleaning                = usecleaning;                }
63   void SetVertexRange                (Float_t vtxrange                  = 0.    ) { fVtxRange                    = vtxrange;                   }
64   void SetMinptCutOnDaughterTracks   (Float_t minptdaughtrks            = 0.    ) { fMinPtCutOnDaughterTracks    = minptdaughtrks;             }
65   void SetEtaCutOnDaughterTracks     (Float_t etadaughtrks              = 0.    ) { fEtaCutOnDaughterTracks      = etadaughtrks;               }
66
67  private:
68         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
69         // your data member object is created on the worker nodes and streaming is not needed.
70         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
71
72
73         Bool_t          fisMC;                          // Boolean : kTRUE = is a MC production
74         TString         fAnalysisType;                  // "ESD" or "AOD" analysis type 
75         TString         fCollidingSystem;               // "PbPb", "pPb" or "pp" colliding system
76         AliPIDResponse *fPIDResponse;                   //! PID response object
77         Bool_t          fkSDDSelectionOn;               // Boolean : kTRUE = apply the selection on SDD status
78         Bool_t          fkQualityCutZprimVtxPos;        // Boolean : kTRUE = cut on the prim.vtx  z-position
79         Bool_t          fkQualityCutNoTPConlyPrimVtx;   // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex
80         Bool_t          fkQualityCutTPCrefit;           // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks
81         Bool_t          fkQualityCutnTPCcls;            // Boolean : kTRUE = ask for at least n TPC clusters for each daughter track
82         Bool_t          fkQualityCutPileup;             // Boolean : kTRUE = ask for no pileup events
83         Bool_t          fwithSDD;                       // Boolean : kTRUE = Select the events that has and use the info from the SDD
84         Int_t           fMinnTPCcls;                    // minimum number of TPC cluster for daughter tracks
85         Float_t         fCentrLowLim;                   // Lower limit for centrality percentile selection
86         Float_t         fCentrUpLim;                    // Upper limit for centrality percentile selection
87         TString         fCentrEstimator;                // string for the centrality estimator: "V0M" for PbPb and "V0A" for pPb
88         Bool_t          fkUseCleaning;                  // Boolean : kTRUE = uses all the cleaning criteria of centrality selections (vertex cut + outliers) otherwise only outliers
89         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
90         Float_t         fMinPtCutOnDaughterTracks;      // minimum pt cut on daughter tracks
91         Float_t         fEtaCutOnDaughterTracks;        // pseudorapidity cut on daughter tracks
92        
93
94         AliCFContainer  *fCFContCascadeCuts;            //! Container meant to store all the relevant distributions corresponding to the cut variables
95         AliCFContainer  *fCFContCascadeMCgen;           //! Container meant to store general variables for MC generated particles 
96         
97
98   AliAnalysisTaskQAMultistrange(const AliAnalysisTaskQAMultistrange&);            // not implemented
99   AliAnalysisTaskQAMultistrange& operator=(const AliAnalysisTaskQAMultistrange&); // not implemented
100   
101   ClassDef(AliAnalysisTaskQAMultistrange, 7);
102 };
103
104 #endif
105