]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/charmFlow/AliAnalysisTaskSEHFv2.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / charmFlow / AliAnalysisTaskSEHFv2.h
1 #ifndef ALIANALYSISTASKSEHFV2_H
2 #define ALIANALYSISTASKSEHFV2_H
3
4 /* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //*************************************************************************
8 // AliAnalysisTaskSEHFv2 gives the needed tools for the D 
9 // mesons v2 analysis 
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
15 //
16 //*************************************************************************
17
18 /* $Id$ */
19
20 #include "AliAnalysisTaskSE.h"
21 #include "AliAnalysisVertexingHF.h"
22 #include "AliHFAfterBurner.h"
23
24
25 class TH1F;
26 class TH2D;
27 class AliMultiDimVector;
28 class AliRDHFCuts;
29 class TVector2;
30
31 class AliAnalysisTaskSEHFv2 : public AliAnalysisTaskSE
32 {
33
34  public:
35
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
39   
40   AliAnalysisTaskSEHFv2();
41   AliAnalysisTaskSEHFv2(const char *name, AliRDHFCuts *rdCuts, Int_t decaychannel);
42  
43   virtual ~AliAnalysisTaskSEHFv2();
44
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;}
56
57
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;}
69
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;}
79
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);
85     
86  private:
87
88   AliAnalysisTaskSEHFv2(const AliAnalysisTaskSEHFv2 &source);
89   AliAnalysisTaskSEHFv2& operator=(const AliAnalysisTaskSEHFv2& source); 
90
91   void CalculateInvMasses(AliAODRecoDecayHF* d,Float_t* &masses,Int_t& nmasses);
92
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);
98
99
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
119
120   ClassDef(AliAnalysisTaskSEHFv2,3); // AliAnalysisTaskSE for the HF v2 analysis
121 };
122
123 #endif