ROOT logo
#ifndef ALIANALYSISTASKSEDPLUSCORRELATIONS_H
#define ALIANALYSISTASKSEDPLUSCORRELATIONS_H

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

/* $Id$ */ 

//*************************************************************************
// Class AliAnalysisTaskSEDplusCorrelations

// Authors:
// Sadhana Dash (correlation)
//*************************************************************************

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

#include "AliRDHFCutsDplustoKpipi.h"
#include "AliHFAssociatedTrackCuts.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisVertexingHF.h"
#include "AliEventPoolManager.h"
#include "AliNormalizationCounter.h"
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"
#include "AliHFCorrelator.h"

class TParticle ;
class TClonesArray ;
class AliAODMCParticle;
class AliAODEvent;
class AliVParticle;
class TObjArray;
class AliEventPoolManager;
class AliESDEvent;



class AliAnalysisTaskSEDplusCorrelations : public AliAnalysisTaskSE
{
 public:

  AliAnalysisTaskSEDplusCorrelations();
  AliAnalysisTaskSEDplusCorrelations(const char *name, AliRDHFCutsDplustoKpipi* analysiscuts, AliHFAssociatedTrackCuts* assotrcuts);
  virtual ~AliAnalysisTaskSEDplusCorrelations();

  void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
  void SetEventMix(Bool_t mixing){fMixing=mixing;}
  
  void CreateCorrelationObjs();

  //  standard way used in Dplus task  
  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 SetCorrelator(Int_t l) {fSelect = l;} // select 1 for hadrons, 2 for Kaons, 3 for Kzeros
  void SetUseDisplacement(Int_t m) {fDisplacement=m;} // select 0 for no displ, 1 for abs displ, 2 for d0/sigma_d0
  void SetSystem(Bool_t system){fSystem=system;} // select between pp (kFALSE) or PbPb (kTRUE)

  void SetUseReconstruction(Bool_t reco){fReco = reco;}

  void SetTrigEfficiency(Bool_t trigeff = kTRUE) {fTrig = trigeff;}

  void FillCorrelations(Double_t ptTrack,Double_t mass, Double_t deltaPhi, Double_t deltaEta, Int_t ind, Int_t sel, Double_t eweight) const;

  void FillMCTruthCorrelations(Double_t ptTrack, Double_t deltaPhi, Double_t deltaEta, Int_t ind, Int_t mcSource, Int_t origDplus, Int_t sel) const;
 
  void FillMCRCorrelations(Double_t ptTrack,Double_t mass, Double_t deltaPhi, Double_t deltaEta, Int_t ind, Int_t mcSource, Int_t origDplus,Double_t eweight) const;
  Bool_t IsDDaughter(AliAODMCParticle* d, AliAODMCParticle* track, TClonesArray* mcArray) const;
  
  Int_t CheckTrackOrigin(TClonesArray* arrayMC, AliAODMCParticle* mcPartCandidate) const ;		
  
  Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle* mcPartCandidate) const ;		
  



  
  
  Float_t GetUpperMassLimit(){return fUpmasslimit;}
  Float_t GetLowerMassLimit(){return fLowmasslimit;}
  Int_t GetNBinsPt(){return fNPtBins;}
  Float_t GetBinWidth(){return fBinWidth;}
  Int_t GetNBinsHistos();
  
    // 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:
  AliAnalysisTaskSEDplusCorrelations(const AliAnalysisTaskSEDplusCorrelations &source);
  AliAnalysisTaskSEDplusCorrelations& operator=(const AliAnalysisTaskSEDplusCorrelations& source); 

  

  Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*3;}
  
  Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*3+1;}
   
 
  enum {kMaxPtBins=20};
  
  //For dplus efficiency
 

  TList  *fOutput; //! list send on output slot 0
 
  AliHFCorrelator* fCorrelator; // object for correlations
 
  Int_t fSelect; // select what to correlate with a Dplus 1-chargedtracks,2-chargedkaons,3-k0s
  Int_t fDisplacement; // set 0 for no displacement cut, 1 for absolute d0, 2 for d0/sigma_d0
  TH1F *fHistNEvents; //!hist. for No. of events
  
  Bool_t fTrig;  // flag for using trig eff         

  TH2D *fEventMix; //!hist. for event mixing
   
  TH1F *fMassHistK0S[3*kMaxPtBins]; //!hist. for inv mass (LC)
  
  TH1F *fLeadPt[3*kMaxPtBins]; //!hist. for D- inv mass (TC)

  TH1F *fPtSig[3*kMaxPtBins]; //!hist. for D- inv mass (TC)
  
  TH1F *fMassHist[3*kMaxPtBins]; //!hist. for inv mass (LC)
  TH1F *fMassHistTC[3*kMaxPtBins]; //!hist. for inv mass (TC)
  TH1F *fMassHistOrigC[3*kMaxPtBins]; //!hist. for inv mass (TC)
  TH1F *fMassHistOrigB[3*kMaxPtBins]; //!hist. for inv mass (TC)
  TH1F *fMassHistMC[3*kMaxPtBins]; //!hist. for inv mass (TC)
 

 
  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
  
  //TList *fListCutsAsso; //list of cuts

  AliRDHFCutsDplustoKpipi *fRDCutsAnalysis; //Cuts for Analysis
  
  AliHFAssociatedTrackCuts *fCuts; 
  
  AliNormalizationCounter *fCounter;//!Counter for normalization
  
  Double_t fArrayBinLimits[kMaxPtBins+1]; //limits for the Pt bins
  
  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 fMixing;      // flag to use bitmask
  
  Bool_t fSystem; //
  Bool_t fReco; // use reconstruction or MC truth
  ClassDef(AliAnalysisTaskSEDplusCorrelations,3); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates
};

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