ROOT logo
#ifndef AliAnalysisTaskDStarCorrelations_H
#define AliAnalysisTaskDStarCorrelations_H

/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id: AliAnalysisTaskDStarCorrelations.h 65139 2013-11-25 14:47:45Z fprino $ */

//-----------------------------------------------------------------------
//          
//
//						   Author S.Bjelogrlic
//                         Utrecht University 
//                      sandro.bjelogrlic@cern.ch
//
//-----------------------------------------------------------------------

#include <TH2F.h>
#include <TH1D.h>
#include <TH3D.h>
#include "AliAnalysisTaskSE.h"
#include "AliAODEvent.h"
#include "AliRDHFCutsDStartoKpipi.h"
#include "AliEventPoolManager.h"
#include "AliAODRecoCascadeHF.h"
#include "AliHFAssociatedTrackCuts.h"
#include "AliNormalizationCounter.h"
#include "AliHFCorrelator.h"
#include <THnSparse.h>
#include "AliAnalysisUtils.h"
#include "AliVertexingHFUtils.h"
class TParticle ;
class TClonesArray ;
class AliAODMCParticle;
class AliAODEvent;
class AliVParticle;
class TObjArray;
class AliEventPoolManager;
class AliESDEvent;



class AliAnalysisTaskDStarCorrelations : public AliAnalysisTaskSE
{

 public :
  
  enum CollSyst {pp,pA,AA};
    enum DEffVariable{kNone,kMult,kCentr,kRapidity,kEta};
    enum BkgMethod{kDZeroSB, kDStarSB};
  
  AliAnalysisTaskDStarCorrelations();
  AliAnalysisTaskDStarCorrelations(const Char_t* name,AliRDHFCutsDStartoKpipi* cuts, AliHFAssociatedTrackCuts *AsscCuts, AliAnalysisTaskDStarCorrelations::CollSyst syst,Bool_t mode);
  virtual ~AliAnalysisTaskDStarCorrelations();
  
  
  
  // 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);
  
  void DefineThNSparseForAnalysis();
  void DefineHistoForAnalysis();
  void EnlargeDZeroMassWindow();
    Bool_t IsDDaughter(AliAODMCParticle* d, AliAODMCParticle* track) const ;
  
  // checker for event mixing
  void EventMixingChecks(AliAODEvent * AOD); 
 
    // setters
    void SetCorrelator(Int_t l) {fselect = l;} // select 1 for hadrons, 2 for Kaons, 3 for Kzeros
    void SetMonteCarlo(Bool_t k) {fmontecarlo = k;}
    void SetUseMixing (Bool_t j) {fmixing = j;}
    void SetUseFullMode (Bool_t j) {fFullmode = j;}
    void SetCollSys(CollSyst system){fSystem=system;} // select between pp (kFALSE) or PbPb (kTRUE)
    void SetEfficiencyVariable(DEffVariable var){fEfficiencyVariable = var;} // set the efficiency variable to use
    void SetBkgEstimationMethod(BkgMethod var){fBkgMethod = var;} // set the efficiency variable to use
    void SetUseReconstruction(Bool_t reco){fReco = reco;}
    void SetUseEfficiencyCorrection(Bool_t correction){fUseEfficiencyCorrection = correction;} // setter for using the single track efficiency correction
    void SetUseDmesonEfficiencyCorrection(Bool_t correction){fUseDmesonEfficiencyCorrection = correction;} // setter for using the single track efficiency correction
    void SetUseCentrality (Bool_t j) {fUseCentrality = j;} // switch for centrality (kTRUE)/multiplicity(kFALSE)
    void SetUseHadronicChannelAtKineLevel (Bool_t use){fUseHadronicChannelAtKineLevel = use;}
    void SetUseRemoveMoreThanOneCDmesonCandidate (Bool_t use){fRemoveMoreThanOneDmesonCandidate = use;}
   
    
    void SetNofPhiBins(Int_t nbins){fPhiBins = nbins;} // number of delta phi bins
    void SetLevelOfDebug(Int_t debug){fDebugLevel=debug;} // set debug level
    void SetUseDisplacement(Int_t m) {fDisplacement=m;} // select 0 for no displ, 1 for abs displ, 2 for d0/sigma_d0
  
    
    void SetDim(){fDim = 4;
        fDMesonSigmas = new Float_t[4];} // standard definedt = cannot be changed from outside
    
    void SetMaxDStarEta(Double_t eta){fMaxEtaDStar = eta;} // maximum eta D*

  
  void SetDMesonSigmas(Float_t DStarWin, Float_t D0Win, Float_t SBmin, Float_t SBmax){
    fDMesonSigmas[0] = DStarWin;
    fDMesonSigmas[1] = D0Win;
    fDMesonSigmas[2] = SBmin;
    fDMesonSigmas[3] = SBmax;
    
  }

  
 
  

  void SetDeffMapvsPt(TH1D * map){fDeffMapvsPt = map;}
  void SetDeffMapvsPtvsMult(TH2D * map){fDeffMapvsPtvsMult = (TH2D*)map;}
  void SetDeffMapvsPtvsMultvsEta(TH2D * map){fDeffMapvsPtvsEta = map;}
  
  
  

private:
  
  AliAnalysisTaskDStarCorrelations(const AliAnalysisTaskDStarCorrelations &source);
  AliAnalysisTaskDStarCorrelations& operator=(const AliAnalysisTaskDStarCorrelations& source);
  
  TObject* fhandler; //! Analysis Handler
  TClonesArray* fmcArray; //mcarray
  AliNormalizationCounter *fCounter; // counter
  AliHFCorrelator * fCorrelator; // object for correlations
  
  
  
  Int_t fselect; // select what to correlate with a D* 1-chargedtracks,2-chargedkaons,3-k0s
  Bool_t fmontecarlo;//switch for MC
  Bool_t fmixing;// switch for event mixing
  Bool_t fFullmode;
  CollSyst fSystem; // pp, pPb or PbPb
  DEffVariable  fEfficiencyVariable; // set second variable to study efficiency (mult, centr, y, eta)
  BkgMethod fBkgMethod; // bkg estimation method (dstar or dzero sidebands)
  Bool_t fReco; // use reconstruction or MC truth
  Bool_t fUseEfficiencyCorrection; // boolean variable to use or not the efficiency correction
  Bool_t fUseDmesonEfficiencyCorrection; // boolean flag for the use of Dmeson efficiency correction
  Bool_t fUseCentrality;// boolean to switch in between centrality or multiplicity
  Bool_t fUseHadronicChannelAtKineLevel; //
  Bool_t fRemoveMoreThanOneDmesonCandidate; // flag to remove a second, 3rd etc candidate if there is any - useful in PbPb
 
  Int_t fPhiBins;
  Int_t fEvents; //! number of event
  Int_t fDebugLevel; //! debug level
  Int_t fDisplacement; // set 0 for no displacement cut, 1 for absolute d0, 2 for d0/sigma_d0
  Int_t fDim;//
  Int_t fNofPtBins;
     Double_t fMaxEtaDStar;
  Float_t *fDMesonSigmas;//[fDim]
  Float_t * fD0Window;  //[fNofPtBins]
   
  
  
  
  TList *fOutput;                  //! user output data
    TList *fDmesonOutput; //!output related to d meson
    TList *fTracksOutput; //!output related to tracks
    TList *fEMOutput; //! output with EM checks
    TList *fCorrelationOutput; // ! output with correlation sparses
  TList *fOutputMC;                //! outpu for MC
  AliRDHFCutsDStartoKpipi *fCuts;  // Cuts D*
  AliHFAssociatedTrackCuts *fAssocCuts; // cuts for associated
  AliAnalysisUtils *fUtils;
  AliAODTracklets * fTracklets; // AliAODtracklets
  
  TH1D * fDeffMapvsPt; // histo for Deff mappin
  TH2D * fDeffMapvsPtvsMult; // histo for Deff mappin
  TH2D * fDeffMapvsPtvsEta; // histo for Deff mappin
  
  ClassDef(AliAnalysisTaskDStarCorrelations,8); // class for D meson correlations
  
};

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