1 #ifndef ALIANALYSISTASKSEHFV2_H
2 #define ALIANALYSISTASKSEHFV2_H
4 /* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //*************************************************************************
8 // AliAnalysisTaskSEHFv2 gives the needed tools for the D
10 // Authors: Chiara Bianchin, cbianchi@pd.infn.it,
11 // Robert Grajcarek, grajcarek@physi.uni-heidelberg.de
12 // Giacomo Ortona, ortona@to.infn.it,
13 // Carlos Perez Lara, carlos.eugenio.perez.lara@cern.ch
14 // Francesco Prino, prino@to.infn.it
16 //*************************************************************************
20 #include "AliAnalysisTaskSE.h"
21 #include "AliAnalysisVertexingHF.h"
22 #include "AliHFAfterBurner.h"
27 class AliMultiDimVector;
31 class AliAnalysisTaskSEHFv2 : public AliAnalysisTaskSE
36 enum DecChannel{kDplustoKpipi,kD0toKpi,kDstartoKpipi}; //more particles can be added
37 enum EventPlaneMeth{kTPC,kTPCVZERO,kVZERO,kVZEROA,kVZEROC}; //Event plane to be calculated in the task
38 // enum SubEvents{kFullTPC,kPosTPC,kNegTPC,kSingleV0Side}; //Sub-events for V0 EP
40 AliAnalysisTaskSEHFv2();
41 AliAnalysisTaskSEHFv2(const char *name, AliRDHFCuts *rdCuts, Int_t decaychannel);
43 virtual ~AliAnalysisTaskSEHFv2();
45 void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
46 void SetMassLimits(Float_t range,Int_t pdg);
47 void SetMassLimits(Float_t lowlimit, Float_t uplimit);
48 void SetNMassBins(Int_t nbins){fNMassBins=nbins;}
49 void SetV0EventPlaneOrder(Int_t n){fV0EPorder=n;}
50 void SetMinCentrality(Int_t mincentr){fMinCentr=mincentr;}
51 void SetMaxCentrality(Int_t maxcentr){fMaxCentr=maxcentr;}
52 void SetUseAfterBurner(Bool_t ab){fUseAfterBurner=ab;}
53 void SetAfterBurner(AliHFAfterBurner *ab){fAfterBurner=ab;}
54 void SetEtaGapFeatureForEventplaneFromTracks (Bool_t etaGap) {fEtaGap = etaGap;}
55 void SetCentralityBinWidthPerMil(Int_t w){fCentBinSizePerMil=w;}
58 void SetNTPCSubEvents(Int_t nsub);
59 void Set2TPCEPSubEvents(){SetNTPCSubEvents(2);}
60 void Set3TPCEPSubEvents(){SetNTPCSubEvents(3);}
61 void SetEventPlaneMethod(Int_t epmethod);
62 void SetTPCEPOnly(){SetEventPlaneMethod(kTPC);}
63 void SetVZEROEP(){SetEventPlaneMethod(kVZERO);}
64 void SetVZEROAEP(){SetEventPlaneMethod(kVZEROA);}
65 void SetVZEROCEP(){SetEventPlaneMethod(kVZEROC);}
66 void SetTPCEP(){SetEventPlaneMethod(kTPCVZERO);}
67 void SetEventPlanesCompatibility(Float_t comp) {fEventPlanesComp=comp;}
68 //void SetSubEvents(Int_t subev){if(subev>=kFullTPC&&subev<=kSingleV0Side)fSubEvents=subev;}
70 Int_t GetEventPlaneMethod()const {return fEventPlaneMeth;}
71 Int_t GetNTPCSubEvents()const {return fSubEvents;}
72 Float_t GetEventPlanesCompatibility()const {return fEventPlanesComp;}
73 Float_t GetUpperMassLimit()const {return fUpmasslimit;}
74 Float_t GetLowerMassLimit()const {return fLowmasslimit;}
75 Int_t GetNMassBins()const {return fNMassBins;}
76 //Float_t GetPhi02Pi(Float_t phi);
77 Float_t GetPhi0Pi(Float_t phi);
78 AliHFAfterBurner *GetAfterBurner()const {return fAfterBurner;}
80 // Implementation of interface methods
81 virtual void UserCreateOutputObjects();
82 virtual void LocalInit();// {Init();}
83 virtual void UserExec(Option_t *option);
84 virtual void Terminate(Option_t *option);
88 AliAnalysisTaskSEHFv2(const AliAnalysisTaskSEHFv2 &source);
89 AliAnalysisTaskSEHFv2& operator=(const AliAnalysisTaskSEHFv2& source);
91 void CalculateInvMasses(AliAODRecoDecayHF* d,Float_t* &masses,Int_t& nmasses);
93 void FillDplus(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t ptbin, Float_t dphi, const Float_t* masses,Int_t isSel,Int_t icentr, Double_t phiD);
94 void FillD02p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t ptbin, Float_t dphi, const Float_t* masses, Int_t isSel,Int_t icentr, Double_t phiD);
95 void FillDstar(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t ptbin, Float_t dphi, const Float_t* masses,Int_t isSel,Int_t icentr, Double_t phiD);
96 Float_t GetEventPlaneForCandidate(AliAODRecoDecayHF* d, const TVector2* q,AliEventplane *pl,const TVector2* qsub1,const TVector2* qsub2);
97 // Float_t GetEventPlaneFromV0(AliAODEvent *aodEvent);
100 TH1F* fhEventsInfo; //! histogram send on output slot 1
101 TList *fOutput; //! list send on output slot 2
102 AliRDHFCuts *fRDCuts; //cut values (saved in slot 3)
103 Float_t fLowmasslimit; //lower inv mass limit for histos
104 Float_t fUpmasslimit; //upper inv mass limit for histos
105 Int_t fNPtBins; //number of pt bins
106 Int_t fNMassBins; //number of bins in the mass histograms
107 Bool_t fReadMC; //flag for access to MC
108 Bool_t fUseAfterBurner; //enable afterburning
109 Int_t fDecChannel; //decay channel identifier
110 AliHFAfterBurner *fAfterBurner;//Afterburner options
111 Int_t fEventPlaneMeth; //flag to select EP method
112 Float_t fEventPlanesComp; // Maximum distance between TPC/VZERO event planes
113 Int_t fV0EPorder; //harmonic for VZERO event plane
114 Int_t fMinCentr; //minimum centrality
115 Int_t fMaxCentr; //maximum centrality
116 Bool_t fEtaGap; // Eta gap feature for Eventplane from tracks; be careful that you do the correct settings in AddTaskEventPlane.C !!!!
117 Int_t fSubEvents; //Sub-events definition for TPC EP
118 Int_t fCentBinSizePerMil; // width of centrality bins
120 ClassDef(AliAnalysisTaskSEHFv2,3); // AliAnalysisTaskSE for the HF v2 analysis