1 #ifndef ALIANALYSISTASKQAMULTISTRANGE_H
2 #define ALIANALYSISTASKQAMULTISTRANGE_H
4 /* See cxx source for full Copyright notice */
6 /////////////////////////////////////////////////////////////
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
20 /////////////////////////////////////////////////////////////
30 class AliPhysicsSelection;
36 #include "AliAnalysisTaskSE.h"
38 class AliAnalysisTaskQAMultistrange : public AliAnalysisTaskSE {
40 AliAnalysisTaskQAMultistrange();
41 AliAnalysisTaskQAMultistrange(const char *name);
42 virtual ~AliAnalysisTaskQAMultistrange();
44 virtual void UserCreateOutputObjects();
45 virtual void UserExec(Option_t *option);
46 virtual void Terminate(Option_t *);
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; }
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
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
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
98 AliAnalysisTaskQAMultistrange(const AliAnalysisTaskQAMultistrange&); // not implemented
99 AliAnalysisTaskQAMultistrange& operator=(const AliAnalysisTaskQAMultistrange&); // not implemented
101 ClassDef(AliAnalysisTaskQAMultistrange, 7);