First preliminary tasks for PWGLF production QA (cont'd)
[u/mrichter/AliRoot.git] / PWGLF / QATasks / AliQAProdMultistrange.h
1 #ifndef ALIANALYSISTASKCHECKCASCADEPBPB_H
2 #define ALIANALYSISTASKCHECKCASCADEPBPB_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //-----------------------------------------------------------------
7 //            AliQAProdMultistrange class
8 //              Origin AliAnalysisTaskCheckCascade
9 //              This task has four roles :
10 //                1. QAing the Cascades from ESD and AOD
11 //                   Origin:  AliAnalysisTaskESDCheckV0 by Boris Hippolyte Nov2007, hippolyt@in2p3.fr
12 //                2. Prepare the plots which stand as raw material for yield extraction (wi/wo PID)
13 //                3. Supply an AliCFContainer meant to define the optimised topological selections
14 //                4. Rough azimuthal correlation study (Eta, Phi)
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 //-----------------------------------------------------------------
19
20 class TList;
21 class TH1F;
22 class TH2F;
23 class TH3F;
24 class TVector3;
25 class THnSparse;
26  
27 class AliESDEvent;
28 class AliPhysicsSelection;
29 class AliCFContainer;
30 class AliPIDResponse;
31
32 #include "TString.h"
33
34 #include "AliAnalysisTaskSE.h"
35
36 class AliQAProdMultistrange : public AliAnalysisTaskSE {
37  public:
38   AliQAProdMultistrange();
39   AliQAProdMultistrange(const char *name);
40   virtual ~AliQAProdMultistrange();
41   
42   virtual void   UserCreateOutputObjects();
43   virtual void   UserExec(Option_t *option);
44   virtual void   Terminate(Option_t *);
45   
46   void SetAnalysisType               (const char* analysisType          = "ESD" ) { fAnalysisType                = analysisType;               }
47   void SetCollidingSystem            (const char* collidingSystem       = "PbPb") { fCollidingSystem             = collidingSystem;            }
48   void SetSDDselection               (Bool_t SDDSelection               = kFALSE) { fkSDDSelectionOn             = SDDSelection;               }
49   void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE ) { fkQualityCutZprimVtxPos      = qualityCutZprimVtxPos;      }
50   void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE ) { fkQualityCutNoTPConlyPrimVtx = qualityCutNoTPConlyPrimVtx; }
51   void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE ) { fkQualityCutTPCrefit         = qualityCutTPCrefit;         }
52   void SetQualityCutnTPCcls          (Bool_t qualityCutnTPCcls          = kTRUE ) { fkQualityCutnTPCcls          = qualityCutnTPCcls;          }
53   void SetQualityCutMinnTPCcls       (Int_t  minnTPCcls                 = 70    ) { fMinnTPCcls                  = minnTPCcls;                 }
54   void SetQualityCutPileup           (Bool_t qualitycutPileup           = kFALSE) { fkQualityCutPileup           = qualitycutPileup;           }
55   void SetwithSDD                    (Bool_t withSDD                    = kTRUE ) { fwithSDD                     = withSDD;                    } 
56   void SetCentralityLowLim           (Float_t centrlowlim               = 0.    ) { fCentrLowLim                 = centrlowlim;                }  
57   void SetCentralityUpLim            (Float_t centruplim                = 100.  ) { fCentrUpLim                  = centruplim;                 }
58   void SetCentralityEst              (TString   centrest                = "V0M" ) { fCentrEstimator              = centrest;                   }
59   void SetUseCleaning                (Bool_t   usecleaning              = kTRUE ) { fkUseCleaning                = usecleaning;                }
60   void SetVertexRange                (Float_t vtxrange                  = 0.    ) { fVtxRange                    = vtxrange;                   }
61   void SetMinptCutOnDaughterTracks   (Float_t minptdaughtrks            = 0.    ) { fMinPtCutOnDaughterTracks    = minptdaughtrks;             }
62   void SetEtaCutOnDaughterTracks     (Float_t etadaughtrks              = 0.    ) { fEtaCutOnDaughterTracks      = etadaughtrks;               }
63
64  private:
65         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
66         // your data member object is created on the worker nodes and streaming is not needed.
67         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
68
69
70         TString         fAnalysisType;                  // "ESD" or "AOD" analysis type 
71         AliESDtrackCuts *fESDtrackCuts;                 // ESD track cuts used for primary track definition
72         TString         fCollidingSystem;               // "PbPb" or "pp" colliding system
73         AliPIDResponse *fPIDResponse;                   //! PID response object
74         Bool_t          fkSDDSelectionOn;               // Boolean : kTRUE = apply the selection on SDD status
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         Bool_t          fwithSDD;                       // Boolean : kTRUE = Select the events that has and use the info from the SDD
81         Int_t           fMinnTPCcls;                    // minimum number of TPC cluster for daughter tracks
82         Float_t         fCentrLowLim;                   // Lower limit for centrality percentile selection
83         Float_t         fCentrUpLim;                    // Upper limit for centrality percentile selection
84         TString         fCentrEstimator;                // string for the centrality estimator
85         Bool_t          fkUseCleaning;                  // Boolean : kTRUE = uses all the cleaning criteria of centrality selections (vertex cut + outliers) otherwise only outliers
86         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
87         Float_t         fMinPtCutOnDaughterTracks;      // minimum pt cut on daughter tracks
88         Float_t         fEtaCutOnDaughterTracks;        // pseudorapidity cut on daughter tracks
89        
90
91         
92         AliCFContainer  *fCFContCascadeCuts;            //! Container meant to store all the relevant distributions corresponding to the cut variables
93         
94         
95
96   AliQAProdMultistrange(const AliQAProdMultistrange&);            // not implemented
97   AliQAProdMultistrange& operator=(const AliQAProdMultistrange&); // not implemented
98   
99   ClassDef(AliQAProdMultistrange, 7);
100 };
101
102 #endif