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 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; }
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
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
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
99 AliAnalysisTaskQAMultistrange(const AliAnalysisTaskQAMultistrange&); // not implemented
100 AliAnalysisTaskQAMultistrange& operator=(const AliAnalysisTaskQAMultistrange&); // not implemented
102 ClassDef(AliAnalysisTaskQAMultistrange, 7);