1 #ifndef ALIANALYSISTASKCOMBINHF_H
2 #define ALIANALYSISTASKCOMBINHF_H
4 /* Copyright(c) 1998-2018, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 //*************************************************************************
10 // Class AliAnalysisTaskCombinHF
11 // AliAnalysisTaskSE to build D meson candidates by combining tracks
12 // background is computed LS and track rotations is
13 // Authors: F. Prino, A. Rossi
14 /////////////////////////////////////////////////////////////
18 #include <THnSparse.h>
19 #include "AliAnalysisTaskSE.h"
20 #include "AliAODTrack.h"
21 #include "AliNormalizationCounter.h"
22 #include "AliRDHFCuts.h"
24 class AliAnalysisTaskCombinHF : public AliAnalysisTaskSE
28 AliAnalysisTaskCombinHF();
29 AliAnalysisTaskCombinHF(Int_t meson, AliRDHFCuts* analysiscuts);
30 virtual ~AliAnalysisTaskCombinHF();
32 virtual void UserCreateOutputObjects();
33 virtual void Init(){};
34 virtual void LocalInit() {Init();}
35 virtual void UserExec(Option_t *option);
36 virtual void Terminate(Option_t *option);
38 void SetReadMC(Bool_t read){fReadMC=read;}
39 void SetTrackCuts(AliESDtrackCuts* cuts){
40 if(fTrackCutsAll) delete fTrackCutsAll;
41 fTrackCutsAll=new AliESDtrackCuts(*cuts);
43 void SetPionTrackCuts(AliESDtrackCuts* cuts){
44 if(fTrackCutsPion) delete fTrackCutsPion;
45 fTrackCutsPion=new AliESDtrackCuts(*cuts);
47 void SetKaonTrackCuts(AliESDtrackCuts* cuts){
48 if(fTrackCutsKaon) delete fTrackCutsKaon;
49 fTrackCutsKaon=new AliESDtrackCuts(*cuts);
51 void SetPIDHF(AliAODPidHF* pid){
52 if(fPidHF) delete fPidHF;
53 fPidHF=new AliAODPidHF(*pid);
55 void SetRDHFCuts(AliRDHFCuts* cuts){
58 void SetFilterMask(UInt_t mask=16){fFilterMask=mask;}
59 void SetAnalysisLevel(Int_t level){fFullAnalysis=level;}
60 void ConfigureRotation(Int_t n, Double_t phimin, Double_t phimax){
62 fMinAngleForRot=phimin;
63 fMaxAngleForRot=phimax;
65 Bool_t IsTrackSelected(AliAODTrack* track);
66 Bool_t IsKaon(AliAODTrack* track);
67 Bool_t IsPion(AliAODTrack* track);
68 Bool_t SelectAODTrack(AliAODTrack *track, AliESDtrackCuts *cuts);
69 Bool_t FillHistos(Int_t pdgD,Int_t nProngs, AliAODRecoDecay* tmpRD, Double_t* px, Double_t* py, Double_t* pz, UInt_t *pdgdau, TClonesArray *arrayMC, Int_t* dgLabels);
70 void FillLSHistos(Int_t pdgD,Int_t nProngs, AliAODRecoDecay* tmpRD, Double_t* px, Double_t* py, Double_t* pz, UInt_t *pdgdau, Int_t charge);
72 enum EMesonSpecies {kDzero, kDplus, kDstar, kDs};
76 AliAnalysisTaskCombinHF(const AliAnalysisTaskCombinHF &source);
77 AliAnalysisTaskCombinHF& operator=(const AliAnalysisTaskCombinHF& source);
79 TList *fOutput; //! list send on output slot 0
80 TH1F *fHistNEvents; //!hist. for No. of events
82 TH1F *fHistTrackStatus; //!hist. of status of tracks
83 TH3F *fMassVsPtVsY; //! hist. of Y vs. Pt vs. Mass (all cand)
84 TH3F *fMassVsPtVsYRot; //! hist. of Y vs. Pt vs. Mass (rotations)
85 TH3F *fMassVsPtVsYLSpp; //! hist. of Y vs. Pt vs. Mass (like sign ++)
86 TH3F *fMassVsPtVsYLSmm; //! hist. of Y vs. Pt vs. Mass (like sign --)
87 TH3F *fMassVsPtVsYSig; //! hist. of Y vs. Pt vs. Mass (signal)
88 TH3F *fMassVsPtVsYRefl; //! hist. of Y vs. Pt vs. Mass (reflections)
89 TH3F *fMassVsPtVsYBkg; //! hist. of Y vs. Pt vs. Mass (background)
90 TH1F *fNSelected; //! hist. of n. of selected D+
91 TH1F *fNormRotated; //! hist. rotated/selected D+
92 TH1F *fDeltaMass; //! hist. mass difference after rotations
93 THnSparse *fDeltaMassFullAnalysis; //! hist. mass difference after rotations with more details
95 UInt_t fFilterMask; // FilterMask
96 AliESDtrackCuts* fTrackCutsAll; // track selection
97 AliESDtrackCuts* fTrackCutsPion; // pion track selection
98 AliESDtrackCuts* fTrackCutsKaon; // kaon track selection
99 AliAODPidHF* fPidHF; // PID configuration
100 AliRDHFCuts *fAnalysisCuts; // Cuts for candidates
101 Double_t fMinMass; // minimum value of invariant mass
102 Double_t fMaxMass; // maximum value of invariant mass
104 Int_t fNRotations; // number of rotations
105 Double_t fMinAngleForRot; // minimum angle for track rotation
106 Double_t fMaxAngleForRot; // maximum angle for track rotation
107 Double_t fMinAngleForRot3; // minimum angle for track rotation (3rd prong)
108 Double_t fMaxAngleForRot3; // maximum angle for track rotation (3rd prong)
110 AliNormalizationCounter *fCounter;//!Counter for normalization
111 Int_t fMeson; // mesonSpecies (see enum)
112 Bool_t fReadMC; // flag for access to MC
113 Int_t fFullAnalysis; // flag to set analysis level (0 is the fastest)
115 ClassDef(AliAnalysisTaskCombinHF,1); // D+ task from AOD tracks