ROOT logo
#ifndef ALIANALYSISTASKSEDPLUS_H
#define ALIANALYSISTASKSEDPLUS_H

/* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

//*************************************************************************
// Class AliAnalysisTaskSEDplus
// AliAnalysisTaskSE for the D+ candidates Invariant Mass Histogram and 
//comparison of heavy-flavour decay candidates
// to MC truth (kinematics stored in the AOD)
// Renu Bala, bala@to.infn.it
// F. Prino, prino@to.infn.it
// G. Ortona, ortona@to.infn.it
//*************************************************************************

#include <TROOT.h>
#include <TSystem.h>
#include <TNtuple.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <THnSparse.h>
#include <TArrayD.h>

#include "AliRDHFCutsDplustoKpipi.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisVertexingHF.h"
#include "AliNormalizationCounter.h"
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"

class AliAnalysisTaskSEDplus : public AliAnalysisTaskSE
{
 public:

  AliAnalysisTaskSEDplus();
  AliAnalysisTaskSEDplus(const char *name, AliRDHFCutsDplustoKpipi* analysiscuts,Bool_t fillNtuple=kFALSE);
  virtual ~AliAnalysisTaskSEDplus();

  void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
  void SetDoLikeSign(Int_t dols=0){fDoLS=dols;}
  void SetSystem(Int_t system=0){fSystem=system;}
  void SetCutsDistr(Bool_t cutsDistr=kTRUE){fCutsDistr=cutsDistr;}
  void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpPar=doImp;}
  void SetImpactParameterBinning(Int_t nbins, Float_t dmin, Float_t dmax){
    fNImpParBins=nbins;
    fLowerImpPar=dmin;
    fHigherImpPar=dmax;
  }
  void SetUseStrangeness(Bool_t uses=kTRUE){fUseStrangeness=uses;}
  void SetMassLimits(Float_t range);
  void SetMassLimits(Float_t lowlimit, Float_t uplimit);
  void SetBinWidth(Float_t w);
  void SetUseBit(Bool_t dols=kTRUE){fUseBit=dols;}

  void SetUseOnlyPositiveEta(){fEtaSelection=1;}
  void SetUseOnlyNegativeEta(){fEtaSelection=-1;}
  void SetUseFullEta(){fEtaSelection=0;}
  
  Float_t GetUpperMassLimit(){return fUpmasslimit;}
  Float_t GetLowerMassLimit(){return fLowmasslimit;}
  Int_t GetNBinsPt(){return fNPtBins;}
  Float_t GetBinWidth(){return fBinWidth;}
  Int_t GetNBinsHistos();
  
  void LSAnalysis(TClonesArray *arrayOppositeSign,TClonesArray *arrayLikeSign,AliAODEvent *aod,AliAODVertex *vtx1, Int_t nDplusOS);

  void CreateLikeSignHistos();
  void CreateImpactParameterHistos();

  // Implementation of interface methods
  virtual void UserCreateOutputObjects();
  virtual void Init();
  virtual void LocalInit() {Init();}
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *option);
    
 private:

  AliAnalysisTaskSEDplus(const AliAnalysisTaskSEDplus &source);
  AliAnalysisTaskSEDplus& operator=(const AliAnalysisTaskSEDplus& source); 
  Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*3;}
  Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*3+1;}
  Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*3+2;}
  Int_t GetLSHistoIndex(Int_t iPtBin)const { return iPtBin*5;}
  Float_t GetTrueImpactParameter(const AliAODMCHeader *mcHeader, TClonesArray* arrayMC, const AliAODMCParticle *partDp) const;
  Float_t GetStrangenessWeights(const AliAODRecoDecayHF3Prong* d, TClonesArray* arrayMC, Float_t factor[3]) const;

  enum {kMaxPtBins=20};

  TList   *fOutput; //! list send on output slot 0
  TH1F *fHistNEvents; //!hist. for No. of events
  TH1F *fMassHist[3*kMaxPtBins]; //!hist. for inv mass (LC)
  TH1F *fCosPHist[3*kMaxPtBins]; //!hist. for PointingAngle (LC)
  TH1F *fDLenHist[3*kMaxPtBins]; //!hist. for Dec Length (LC)
  TH1F *fSumd02Hist[3*kMaxPtBins]; //!hist. for sum d02 (LC)
  TH1F *fSigVertHist[3*kMaxPtBins]; //!hist. for sigVert (LC)
  TH1F *fPtMaxHist[3*kMaxPtBins]; //!hist. for Pt Max (LC)
  TH1F *fPtKHist[3*kMaxPtBins]; //!hist. for PtK (LC)
  TH1F *fPtpi1Hist[3*kMaxPtBins]; //!hist. for PtPi1 (LC)
  TH1F *fPtpi2Hist[3*kMaxPtBins]; //!hist. for PtPi2 (LC)
  TH1F *fDCAHist[3*kMaxPtBins]; //!hist. for DCA (LC)
  TH1F *fDLxy[3*kMaxPtBins]; //!hist. for DLxy (LC)
  TH1F *fDLxyTC[3*kMaxPtBins]; //!hist. for DLxy (TC)
  TH1F *fCosxy[3*kMaxPtBins]; //!hist. for Cosxy (LC)
  TH1F *fCosxyTC[3*kMaxPtBins]; //!hist. for Cosxy (TC)
  TH1F *fMassHistTC[3*kMaxPtBins]; //!hist. for inv mass (TC)
  TH1F *fMassHistTCPlus[3*kMaxPtBins]; //!hist. for D+ inv mass (TC)
  TH1F *fMassHistTCMinus[3*kMaxPtBins]; //!hist. for D- inv mass (TC)
  TH1F *fMassHistLS[5*kMaxPtBins];//!hist. for LS inv mass (LC)
  TH1F *fCosPHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 1 (LC)
  TH1F *fDLenHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 2 (LC)
  TH1F *fSumd02HistLS[3*kMaxPtBins];//!hist. for LS cuts variable 3 (LC)
  TH1F *fSigVertHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 4 (LC)
  TH1F *fPtMaxHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 5 (LC)
  TH1F *fDCAHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 6 (LC)
  TH1F *fMassHistLSTC[5*kMaxPtBins];//!hist. for LS inv mass (TC)
  TH2F *fCorreld0Kd0pi[3]; //!hist. for d0k*d0pi vs. d0k*d0pi (LC)
  TH2F *fHistCentrality[3];//!hist. for cent distr (all,sel ev, )
  THnSparseF *fHistMassPtImpParTC[5];//! histograms for impact paramter studies
  TH2F *fPtVsMass;    //! hist. of pt vs. mass (prod. cuts)
  TH2F *fPtVsMassTC;  //! hist. of pt vs. mass (analysis cuts)
  TH3F *fYVsPt;       //! hist. of Y vs. Pt vs. Mass(prod. cuts)
  TH3F *fYVsPtTC;     //! hist. of Y vs. Pt vs. Mass (analysis cuts)
  TH2F *fYVsPtSig;    //! hist. of Y vs. Pt (MC, only sig, prod. cuts)
  TH2F *fYVsPtSigTC;    //! hist. of Y vs. Pt (MC, only sig, analysis cuts)
  TH2F *fPhiEtaCand;      //! hist. with eta/phi distribution of candidates
  TH2F *fPhiEtaCandSigReg;//! hist. eta/phi of candidates in D+ mass region
  TH1F *fSPDMult;    //! hist. of spd mult
  TNtuple *fNtupleDplus; //! output ntuple
  Float_t fUpmasslimit;  //upper inv mass limit for histos
  Float_t fLowmasslimit; //lower inv mass limit for histos
  Int_t fNPtBins; //Number of Pt Bins
  Float_t fBinWidth;//width of one bin in output histos
  TList *fListCuts; //list of cuts
  AliRDHFCutsDplustoKpipi *fRDCutsAnalysis; //Cuts for Analysis
  AliNormalizationCounter *fCounter;//!Counter for normalization
  Double_t fArrayBinLimits[kMaxPtBins+1]; //limits for the Pt bins
  Bool_t fFillNtuple;   // flag for filling ntuple
  Bool_t fReadMC;    //flag for access to MC
  Bool_t fUseStrangeness;//flag to enhance strangeness in MC to fit to data
  Bool_t fUseBit;      // flag to use bitmask
  Bool_t fCutsDistr;    // flag to activate cuts distr histos
  Bool_t fDoImpPar;    // flag to activate impact paramter histos
  Int_t  fNImpParBins;   // nunber of bins in impact parameter histos
  Float_t fLowerImpPar;  // lower limit in impact parameter (um)
  Float_t fHigherImpPar; // higher limit in impact parameter (um)
  Int_t  fDoLS;        // flag to do LS analysis
  Int_t fEtaSelection; // eta region to accept D+ 0=all, -1 = negative, 1 = positive 
  Int_t fSystem;   //0=pp,1=PbPb
  
  ClassDef(AliAnalysisTaskSEDplus,21); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates
};

#endif
 AliAnalysisTaskSEDplus.h:1
 AliAnalysisTaskSEDplus.h:2
 AliAnalysisTaskSEDplus.h:3
 AliAnalysisTaskSEDplus.h:4
 AliAnalysisTaskSEDplus.h:5
 AliAnalysisTaskSEDplus.h:6
 AliAnalysisTaskSEDplus.h:7
 AliAnalysisTaskSEDplus.h:8
 AliAnalysisTaskSEDplus.h:9
 AliAnalysisTaskSEDplus.h:10
 AliAnalysisTaskSEDplus.h:11
 AliAnalysisTaskSEDplus.h:12
 AliAnalysisTaskSEDplus.h:13
 AliAnalysisTaskSEDplus.h:14
 AliAnalysisTaskSEDplus.h:15
 AliAnalysisTaskSEDplus.h:16
 AliAnalysisTaskSEDplus.h:17
 AliAnalysisTaskSEDplus.h:18
 AliAnalysisTaskSEDplus.h:19
 AliAnalysisTaskSEDplus.h:20
 AliAnalysisTaskSEDplus.h:21
 AliAnalysisTaskSEDplus.h:22
 AliAnalysisTaskSEDplus.h:23
 AliAnalysisTaskSEDplus.h:24
 AliAnalysisTaskSEDplus.h:25
 AliAnalysisTaskSEDplus.h:26
 AliAnalysisTaskSEDplus.h:27
 AliAnalysisTaskSEDplus.h:28
 AliAnalysisTaskSEDplus.h:29
 AliAnalysisTaskSEDplus.h:30
 AliAnalysisTaskSEDplus.h:31
 AliAnalysisTaskSEDplus.h:32
 AliAnalysisTaskSEDplus.h:33
 AliAnalysisTaskSEDplus.h:34
 AliAnalysisTaskSEDplus.h:35
 AliAnalysisTaskSEDplus.h:36
 AliAnalysisTaskSEDplus.h:37
 AliAnalysisTaskSEDplus.h:38
 AliAnalysisTaskSEDplus.h:39
 AliAnalysisTaskSEDplus.h:40
 AliAnalysisTaskSEDplus.h:41
 AliAnalysisTaskSEDplus.h:42
 AliAnalysisTaskSEDplus.h:43
 AliAnalysisTaskSEDplus.h:44
 AliAnalysisTaskSEDplus.h:45
 AliAnalysisTaskSEDplus.h:46
 AliAnalysisTaskSEDplus.h:47
 AliAnalysisTaskSEDplus.h:48
 AliAnalysisTaskSEDplus.h:49
 AliAnalysisTaskSEDplus.h:50
 AliAnalysisTaskSEDplus.h:51
 AliAnalysisTaskSEDplus.h:52
 AliAnalysisTaskSEDplus.h:53
 AliAnalysisTaskSEDplus.h:54
 AliAnalysisTaskSEDplus.h:55
 AliAnalysisTaskSEDplus.h:56
 AliAnalysisTaskSEDplus.h:57
 AliAnalysisTaskSEDplus.h:58
 AliAnalysisTaskSEDplus.h:59
 AliAnalysisTaskSEDplus.h:60
 AliAnalysisTaskSEDplus.h:61
 AliAnalysisTaskSEDplus.h:62
 AliAnalysisTaskSEDplus.h:63
 AliAnalysisTaskSEDplus.h:64
 AliAnalysisTaskSEDplus.h:65
 AliAnalysisTaskSEDplus.h:66
 AliAnalysisTaskSEDplus.h:67
 AliAnalysisTaskSEDplus.h:68
 AliAnalysisTaskSEDplus.h:69
 AliAnalysisTaskSEDplus.h:70
 AliAnalysisTaskSEDplus.h:71
 AliAnalysisTaskSEDplus.h:72
 AliAnalysisTaskSEDplus.h:73
 AliAnalysisTaskSEDplus.h:74
 AliAnalysisTaskSEDplus.h:75
 AliAnalysisTaskSEDplus.h:76
 AliAnalysisTaskSEDplus.h:77
 AliAnalysisTaskSEDplus.h:78
 AliAnalysisTaskSEDplus.h:79
 AliAnalysisTaskSEDplus.h:80
 AliAnalysisTaskSEDplus.h:81
 AliAnalysisTaskSEDplus.h:82
 AliAnalysisTaskSEDplus.h:83
 AliAnalysisTaskSEDplus.h:84
 AliAnalysisTaskSEDplus.h:85
 AliAnalysisTaskSEDplus.h:86
 AliAnalysisTaskSEDplus.h:87
 AliAnalysisTaskSEDplus.h:88
 AliAnalysisTaskSEDplus.h:89
 AliAnalysisTaskSEDplus.h:90
 AliAnalysisTaskSEDplus.h:91
 AliAnalysisTaskSEDplus.h:92
 AliAnalysisTaskSEDplus.h:93
 AliAnalysisTaskSEDplus.h:94
 AliAnalysisTaskSEDplus.h:95
 AliAnalysisTaskSEDplus.h:96
 AliAnalysisTaskSEDplus.h:97
 AliAnalysisTaskSEDplus.h:98
 AliAnalysisTaskSEDplus.h:99
 AliAnalysisTaskSEDplus.h:100
 AliAnalysisTaskSEDplus.h:101
 AliAnalysisTaskSEDplus.h:102
 AliAnalysisTaskSEDplus.h:103
 AliAnalysisTaskSEDplus.h:104
 AliAnalysisTaskSEDplus.h:105
 AliAnalysisTaskSEDplus.h:106
 AliAnalysisTaskSEDplus.h:107
 AliAnalysisTaskSEDplus.h:108
 AliAnalysisTaskSEDplus.h:109
 AliAnalysisTaskSEDplus.h:110
 AliAnalysisTaskSEDplus.h:111
 AliAnalysisTaskSEDplus.h:112
 AliAnalysisTaskSEDplus.h:113
 AliAnalysisTaskSEDplus.h:114
 AliAnalysisTaskSEDplus.h:115
 AliAnalysisTaskSEDplus.h:116
 AliAnalysisTaskSEDplus.h:117
 AliAnalysisTaskSEDplus.h:118
 AliAnalysisTaskSEDplus.h:119
 AliAnalysisTaskSEDplus.h:120
 AliAnalysisTaskSEDplus.h:121
 AliAnalysisTaskSEDplus.h:122
 AliAnalysisTaskSEDplus.h:123
 AliAnalysisTaskSEDplus.h:124
 AliAnalysisTaskSEDplus.h:125
 AliAnalysisTaskSEDplus.h:126
 AliAnalysisTaskSEDplus.h:127
 AliAnalysisTaskSEDplus.h:128
 AliAnalysisTaskSEDplus.h:129
 AliAnalysisTaskSEDplus.h:130
 AliAnalysisTaskSEDplus.h:131
 AliAnalysisTaskSEDplus.h:132
 AliAnalysisTaskSEDplus.h:133
 AliAnalysisTaskSEDplus.h:134
 AliAnalysisTaskSEDplus.h:135
 AliAnalysisTaskSEDplus.h:136
 AliAnalysisTaskSEDplus.h:137
 AliAnalysisTaskSEDplus.h:138
 AliAnalysisTaskSEDplus.h:139
 AliAnalysisTaskSEDplus.h:140
 AliAnalysisTaskSEDplus.h:141
 AliAnalysisTaskSEDplus.h:142
 AliAnalysisTaskSEDplus.h:143
 AliAnalysisTaskSEDplus.h:144
 AliAnalysisTaskSEDplus.h:145
 AliAnalysisTaskSEDplus.h:146
 AliAnalysisTaskSEDplus.h:147
 AliAnalysisTaskSEDplus.h:148
 AliAnalysisTaskSEDplus.h:149
 AliAnalysisTaskSEDplus.h:150
 AliAnalysisTaskSEDplus.h:151
 AliAnalysisTaskSEDplus.h:152
 AliAnalysisTaskSEDplus.h:153
 AliAnalysisTaskSEDplus.h:154
 AliAnalysisTaskSEDplus.h:155
 AliAnalysisTaskSEDplus.h:156
 AliAnalysisTaskSEDplus.h:157
 AliAnalysisTaskSEDplus.h:158