ROOT logo
/* Copyright(c) 1998-1999, ALICExperiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
/* $Id$ */

#ifndef ALIANALYSISTASKFLOWD2H_H
#define ALIANALYSISTASKFLOWD2H_H

#include "AliAnalysisTaskSE.h"

//==============================================================================
// FlowD2H main task:
// >> Make flowEvent with RPcuts and POIcuts given in constructor and passes it
//    to the daughter tasks.
// >> The POIcuts are polymorphic based on the AliRDHFCuts class allowing the 
//    use of all charmed candidates reconstructed in the central barrel.
// Author: Carlos Perez (cperez@cern.ch)
//==============================================================================

class AliAODEvent;
class AliRDHFCuts;
class AliRDHFCutsD0toKpi;
class AliFlowEventCuts;
class AliFlowEvent;
class AliFlowCandidateTrack;
class AliFlowTrackCuts;
class TList;
class TH1D;

class AliAnalysisTaskFlowD2H : public AliAnalysisTaskSE {
  public:
    AliAnalysisTaskFlowD2H();
    AliAnalysisTaskFlowD2H( const Char_t *name, 
			    AliFlowTrackCuts *cutsTPC,
			    AliFlowTrackCuts *cutsVZE,
			    AliRDHFCuts *cutsPOIs, 
			    Int_t specie );
    void SetDebug() {fDebugV2 = true;}
    void SetSwapAsumption() {fSwap = true;}
    virtual ~AliAnalysisTaskFlowD2H();
    virtual void UserCreateOutputObjects();
    virtual void UserExec(Option_t *);
    virtual void Terminate(Option_t *);
    void SetCommonConstants(Int_t massBins, Double_t minMass, Double_t maxMass, Int_t ptWidth);

  private:
    AliAnalysisTaskFlowD2H(const AliAnalysisTaskFlowD2H& analysisTask);
    AliAnalysisTaskFlowD2H& operator=(const AliAnalysisTaskFlowD2H& analysisTask);
    void AddHistograms();
    void FillD0toKpi( const AliAODEvent *aod );
    void FillD0toKpipipi( const AliAODEvent *aod );
    void FillDStartoKpipi( const AliAODEvent *aod );
    void FillDplustoKpipi( const AliAODEvent *aod );
    void FillDstoKKpi( const AliAODEvent *aod );
    void FillJpsitoee( const AliAODEvent *aod );
    void FillLctoV0( const AliAODEvent *aod );
    void FillLctopKpi( const AliAODEvent *aod );
    void MakeTrack( Double_t mass, Double_t pt,
		    Double_t phi, Double_t eta,
		    Int_t nDaughters, const Int_t *iID );

    AliFlowEvent *fTPCEvent; //!
    AliFlowEvent *fVZEEvent; //!
    AliFlowTrackCuts *fCutsTPC; 
    AliFlowTrackCuts *fCutsVZE; 
    AliFlowTrackCuts *fNoPOIs; 

    AliRDHFCuts *fCutsPOI; // cuts for POIs
    Int_t  fSource; // AliRDHFCuts::ESele
    Bool_t fDebugV2; // fully talkative task
    Bool_t fSwap;   // swap assumption (for neutral)

    Int_t fMassBins; // configures mass bins for the analysis
    Double_t fMinMass; // configures mass range for the analysis
    Double_t fMaxMass; // configures mass range for the analysis
    Int_t fPtBinWidth; // configures pt bin width for the analysis

    TList *fHList; //! List for histos
    TH1D *fEvent;  // Event counter
    TH1D *fCC;     // CC histogram
    TH1D *fRFPMTPC; // Multiplicity RFPTPC
    TH1D *fRFPPhiTPC; // Phi RFPTPC

    TObjArray *fCandidates; // Array of selected candidates

  ClassDef(AliAnalysisTaskFlowD2H, 5);
};

#endif
 AliAnalysisTaskFlowD2H.h:1
 AliAnalysisTaskFlowD2H.h:2
 AliAnalysisTaskFlowD2H.h:3
 AliAnalysisTaskFlowD2H.h:4
 AliAnalysisTaskFlowD2H.h:5
 AliAnalysisTaskFlowD2H.h:6
 AliAnalysisTaskFlowD2H.h:7
 AliAnalysisTaskFlowD2H.h:8
 AliAnalysisTaskFlowD2H.h:9
 AliAnalysisTaskFlowD2H.h:10
 AliAnalysisTaskFlowD2H.h:11
 AliAnalysisTaskFlowD2H.h:12
 AliAnalysisTaskFlowD2H.h:13
 AliAnalysisTaskFlowD2H.h:14
 AliAnalysisTaskFlowD2H.h:15
 AliAnalysisTaskFlowD2H.h:16
 AliAnalysisTaskFlowD2H.h:17
 AliAnalysisTaskFlowD2H.h:18
 AliAnalysisTaskFlowD2H.h:19
 AliAnalysisTaskFlowD2H.h:20
 AliAnalysisTaskFlowD2H.h:21
 AliAnalysisTaskFlowD2H.h:22
 AliAnalysisTaskFlowD2H.h:23
 AliAnalysisTaskFlowD2H.h:24
 AliAnalysisTaskFlowD2H.h:25
 AliAnalysisTaskFlowD2H.h:26
 AliAnalysisTaskFlowD2H.h:27
 AliAnalysisTaskFlowD2H.h:28
 AliAnalysisTaskFlowD2H.h:29
 AliAnalysisTaskFlowD2H.h:30
 AliAnalysisTaskFlowD2H.h:31
 AliAnalysisTaskFlowD2H.h:32
 AliAnalysisTaskFlowD2H.h:33
 AliAnalysisTaskFlowD2H.h:34
 AliAnalysisTaskFlowD2H.h:35
 AliAnalysisTaskFlowD2H.h:36
 AliAnalysisTaskFlowD2H.h:37
 AliAnalysisTaskFlowD2H.h:38
 AliAnalysisTaskFlowD2H.h:39
 AliAnalysisTaskFlowD2H.h:40
 AliAnalysisTaskFlowD2H.h:41
 AliAnalysisTaskFlowD2H.h:42
 AliAnalysisTaskFlowD2H.h:43
 AliAnalysisTaskFlowD2H.h:44
 AliAnalysisTaskFlowD2H.h:45
 AliAnalysisTaskFlowD2H.h:46
 AliAnalysisTaskFlowD2H.h:47
 AliAnalysisTaskFlowD2H.h:48
 AliAnalysisTaskFlowD2H.h:49
 AliAnalysisTaskFlowD2H.h:50
 AliAnalysisTaskFlowD2H.h:51
 AliAnalysisTaskFlowD2H.h:52
 AliAnalysisTaskFlowD2H.h:53
 AliAnalysisTaskFlowD2H.h:54
 AliAnalysisTaskFlowD2H.h:55
 AliAnalysisTaskFlowD2H.h:56
 AliAnalysisTaskFlowD2H.h:57
 AliAnalysisTaskFlowD2H.h:58
 AliAnalysisTaskFlowD2H.h:59
 AliAnalysisTaskFlowD2H.h:60
 AliAnalysisTaskFlowD2H.h:61
 AliAnalysisTaskFlowD2H.h:62
 AliAnalysisTaskFlowD2H.h:63
 AliAnalysisTaskFlowD2H.h:64
 AliAnalysisTaskFlowD2H.h:65
 AliAnalysisTaskFlowD2H.h:66
 AliAnalysisTaskFlowD2H.h:67
 AliAnalysisTaskFlowD2H.h:68
 AliAnalysisTaskFlowD2H.h:69
 AliAnalysisTaskFlowD2H.h:70
 AliAnalysisTaskFlowD2H.h:71
 AliAnalysisTaskFlowD2H.h:72
 AliAnalysisTaskFlowD2H.h:73
 AliAnalysisTaskFlowD2H.h:74
 AliAnalysisTaskFlowD2H.h:75
 AliAnalysisTaskFlowD2H.h:76
 AliAnalysisTaskFlowD2H.h:77
 AliAnalysisTaskFlowD2H.h:78
 AliAnalysisTaskFlowD2H.h:79
 AliAnalysisTaskFlowD2H.h:80
 AliAnalysisTaskFlowD2H.h:81
 AliAnalysisTaskFlowD2H.h:82
 AliAnalysisTaskFlowD2H.h:83
 AliAnalysisTaskFlowD2H.h:84
 AliAnalysisTaskFlowD2H.h:85
 AliAnalysisTaskFlowD2H.h:86
 AliAnalysisTaskFlowD2H.h:87
 AliAnalysisTaskFlowD2H.h:88