]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/vertexingHF/charmFlow/AliAnalysisTaskFlowD2H.h
Updates to run with deltas (L. Cunqueiro)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / charmFlow / AliAnalysisTaskFlowD2H.h
1 /* Copyright(c) 1998-1999, ALICExperiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3 /* $Id$ */
4
5 #ifndef ALIANALYSISTASKFLOWD2H_H
6 #define ALIANALYSISTASKFLOWD2H_H
7
8 #include "AliAnalysisTaskSE.h"
9
10 //==============================================================================
11 // FlowD2H main task:
12 // >> Make flowEvent with RPcuts and POIcuts given in constructor and passes it
13 //    to the daughter tasks.
14 // >> The POIcuts are polymorphic based on the AliRDHFCuts class allowing the 
15 //    use of all charmed candidates reconstructed in the central barrel.
16 // Author: Carlos Perez (cperez@cern.ch)
17 //==============================================================================
18
19 class TList;
20 class TH2D;
21 class TProfile;
22
23 class AliAODEvent;
24
25 class AliFlowEvent;
26 class AliFlowCandidateTrack;
27 class AliFlowTrackCuts;
28
29 class AliRDHFCuts;
30 class AliRDHFCutsD0toKpi;
31
32 class AliAnalysisTaskFlowD2H : public AliAnalysisTaskSE {
33   public:
34     AliAnalysisTaskFlowD2H();
35     AliAnalysisTaskFlowD2H( const Char_t *name, AliFlowTrackCuts *cutsRPs, 
36                             AliRDHFCuts *cutsPOIs, Int_t specie );
37     void SetDebug() {fDebugV2 = true;}
38     void SetPOIEtaRange( Double_t minEta, Double_t maxEta )
39                           { fPOIEta[0] = minEta; fPOIEta[1] = maxEta; }
40     void SetFlowEtaRangeAB( Double_t minA, Double_t maxA, Double_t minB, Double_t maxB )
41                           { fFlowEta[0] = minA; fFlowEta[1] = maxA;
42                             fFlowEta[2] = minB; fFlowEta[3] = maxB; }
43     void SetFlowPtRange( Int_t minPt, Int_t maxPt )
44                        { fFlowPts[0] = minPt; fFlowPts[1] = maxPt; }
45     void SetFlowBandRange( Int_t band, Double_t minMass, Double_t maxMass )
46                          { fFlowBands[0][band] = minMass;
47                            fFlowBands[1][band] = maxMass; } //TODO
48     virtual ~AliAnalysisTaskFlowD2H();
49     virtual void UserCreateOutputObjects();
50     virtual void UserExec(Option_t *);
51     virtual void Terminate(Option_t *);
52     virtual void NotifyRun();
53
54   private:
55     AliAnalysisTaskFlowD2H(const AliAnalysisTaskFlowD2H& analysisTask);
56     AliAnalysisTaskFlowD2H& operator=(const AliAnalysisTaskFlowD2H& analysisTask);
57     void AddHistograms();
58     void FillD0toKpi(      AliAODEvent *aod, AliFlowEvent *mb[5]);
59     void FillD0toKpipipi(  AliAODEvent *aod, AliFlowEvent *mb[5]);
60     void FillDStartoKpipi( const AliAODEvent *aod, AliFlowEvent *mb[5]);
61     void FillDplustoKpipi( const AliAODEvent *aod, AliFlowEvent *mb[5]);
62     void FillDstoKKpi(     AliAODEvent *aod, AliFlowEvent *mb[5]);
63     void FillJpsitoee(     AliAODEvent *aod, AliFlowEvent *mb[5]);
64     void FillLctoV0(       AliAODEvent *aod, AliFlowEvent *mb[5]);
65     void FillLctopKpi(     AliAODEvent *aod, AliFlowEvent *mb[5]);
66     AliFlowCandidateTrack* MakeTrack( Double_t mass, Double_t pt,
67                                       Double_t phi, Double_t eta,
68                                       Int_t nDaughters, const Int_t *iID );
69     AliFlowTrackCuts *fCutsRP;  // cuts for RPs
70     AliRDHFCuts      *fCutsPOI; // cuts for POIs
71     Int_t  fSource;             // AliRDHFCuts::ESele
72     Bool_t fDebugV2;              // fully talkative task
73     TList *fHList;    // List for histos
74     TProfile *fAnaCuts; // store analysis related cuts
75     TH2D  *fEvent[2]; // Events histogram
76     TH2D  *fMass[2];  // Mass spectra
77     Double_t fPOIEta[2];        // Eta cut for POI
78     Double_t fFlowEta[4];       // SP subEvents
79     Int_t fFlowPts[2];          // Pt range
80     Double_t fFlowBands[2][5];  // Mass bands TODO
81
82   ClassDef(AliAnalysisTaskFlowD2H, 1);
83 };
84
85 #endif