ROOT logo
#ifndef ALIANALYSISTASKDS_H
#define ALIANALYSISTASKDS_H

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

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Analysis task to produce Ds candidates mass spectra           //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include <TROOT.h>
#include <TSystem.h>
#include <TH1F.h>
#include <TH2F.h>

#include "AliAnalysisTaskSE.h"
#include "AliRDHFCutsDstoKKpi.h"

class AliNormalizationCounter;


class AliAnalysisTaskSEDs : public AliAnalysisTaskSE
{
 public:
 
  AliAnalysisTaskSEDs();
  AliAnalysisTaskSEDs(const char *name, AliRDHFCutsDstoKKpi* analysiscuts, Int_t fillNtuple=0);
  virtual ~AliAnalysisTaskSEDs();
  void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}	
  void SetWriteOnlySignalInNtuple(Bool_t opt=kTRUE){
    if(fReadMC) fWriteOnlySignal=opt;
    else AliError("fReadMC has to be kTRUE");
  }
  void SetFillNtuple(Int_t fill=0){fFillNtuple=fill;}
  void SetMassRange(Double_t rang=0.4){fMassRange=rang;}
  void SetDoCutVarHistos(Bool_t opt=kTRUE) {fDoCutVarHistos=opt;}
  void SetUseSelectionBit(Bool_t opt=kFALSE){ fUseSelectionBit=opt;}

  void SetInvMassBinSize(Double_t binsiz=0.002){fMassBinSize=binsiz;}
  void SetPtBins(Int_t n, Float_t* lim);
  void SetAnalysisCuts(AliRDHFCutsDstoKKpi* cuts){fAnalysisCuts=cuts;}
  // 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:
  Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*4;}
  Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*4+1;}
  Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*4+2;}
  Int_t GetReflSignalHistoIndex(Int_t iPtBin) const { return iPtBin*4+3;}

  enum {kMaxPtBins=20};

  AliAnalysisTaskSEDs(const AliAnalysisTaskSEDs &source);
  AliAnalysisTaskSEDs& operator=(const AliAnalysisTaskSEDs& source); 

  TList*  fOutput;                    //! list send on output slot 0
  TH1F*   fHistNEvents;               //! hist. for No. of events  
  TH1F*   fChanHist[4];               //! hist. with KKpi and piKK candidates (sig,bkg,tot)
  TH1F*   fMassHist[4*kMaxPtBins];    //! hist. of mass spectra (sig,bkg,tot)
  TH1F*   fMassHistPhi[4*kMaxPtBins];    //! hist. of mass spectra via phi (sig,bkg,tot)
  TH1F*   fMassHistK0st[4*kMaxPtBins];    //! hist. of mass spectra via K0* (sig,bkg,tot)
  TH1F*   fMassHistKK[kMaxPtBins];    //! hist. of mass spectra of KK
  TH1F*   fMassHistKpi[kMaxPtBins];    //! hist. of mass spectra of Kpi
  TH1F*   fCosPHist[4*kMaxPtBins];    //! hist. of cos pointing angle (sig,bkg,tot)
  TH1F*   fDLenHist[4*kMaxPtBins];    //! hist. of decay length (sig,bkg,tot)
  TH1F*   fSumd02Hist[4*kMaxPtBins];  //! hist. for sum d02 (Prod Cuts)
  TH1F*   fSigVertHist[4*kMaxPtBins]; //! hist. for sigVert (Prod Cuts)
  TH1F*   fPtMaxHist[4*kMaxPtBins];   //! hist. for Pt Max (Prod Cuts)
  TH1F*   fPtCandHist[4*kMaxPtBins];  //! hist. for Pt Max (Prod Cuts)
  TH1F*   fDCAHist[4*kMaxPtBins];     //! hist. for DCA (Prod Cuts)
  TH1F*   fPtProng0Hist[4*kMaxPtBins]; //! hist. for Pt Max (Prod Cuts)
  TH1F*   fPtProng1Hist[4*kMaxPtBins]; //! hist. for DCA (Prod Cuts)
  TH1F*   fPtProng2Hist[4*kMaxPtBins]; //! hist. for DCA (Prod Cuts)
  TH2F*   fDalitz[4*kMaxPtBins];      //! dalitz plot (sig,bkg,tot)
  TH2F*   fDalitzPhi[4*kMaxPtBins];   //! dalitz plot via phi (sig,bkg,tot)
  TH2F*   fDalitzK0st[4*kMaxPtBins];   //! dalitz plot via K0* (sig,bkg,tot)
  TH2F *fPtVsMass;    //! hist. of pt vs. mass (prod. cuts)
  TH2F *fPtVsMassPhi;    //! hist. of pt vs. mass (phi selection)
  TH2F *fPtVsMassK0st;   //! hist. of pt vs. mass (K0* selection)
  TH2F *fYVsPt;       //! hist. of Y vs. Pt (prod. cuts)
  TH2F *fYVsPtSig;    //! hist. of Y vs. Pt (MC, only sig, prod. cuts)
  TH1F *fHistCentrality[3];//!hist. for cent distr (all,sel ev, )
  TH2F *fHistCentralityMult[3];//!hist. for cent distr vs mult (all,sel ev, )
  TNtuple *fNtupleDs; //! output ntuple
  Int_t fFillNtuple;                 // 0 not to fill ntuple
                                     // 1 for filling ntuple for events through Phi
                                     // 2 for filling ntuple for events through K0Star
                                     // 3 for filling all 
                                    
                                     
  Bool_t  fReadMC;                    //  flag for access to MC
  Bool_t  fWriteOnlySignal;           //  flag to control ntuple writing in MC
  Bool_t  fDoCutVarHistos;            //  flag to create and fill histos with distributions of cut variables
  Bool_t  fUseSelectionBit;           // flag for useage of HasSelectionBit
  UChar_t fNPtBins;                   // number of Pt bins
  TList *fListCuts; //list of cuts
  Float_t fPtLimits[kMaxPtBins+1];    //  limits for pt bins
  Double_t fMassRange;                // range for mass histogram 
  Double_t fMassBinSize;              // bin size for inv. mass histo

  AliNormalizationCounter *fCounter;//!Counter for normalization
  AliRDHFCutsDstoKKpi *fAnalysisCuts; // Cuts for Analysis
  
  ClassDef(AliAnalysisTaskSEDs,14);    //  AliAnalysisTaskSE for Ds mass spectra
};

#endif


 AliAnalysisTaskSEDs.h:1
 AliAnalysisTaskSEDs.h:2
 AliAnalysisTaskSEDs.h:3
 AliAnalysisTaskSEDs.h:4
 AliAnalysisTaskSEDs.h:5
 AliAnalysisTaskSEDs.h:6
 AliAnalysisTaskSEDs.h:7
 AliAnalysisTaskSEDs.h:8
 AliAnalysisTaskSEDs.h:9
 AliAnalysisTaskSEDs.h:10
 AliAnalysisTaskSEDs.h:11
 AliAnalysisTaskSEDs.h:12
 AliAnalysisTaskSEDs.h:13
 AliAnalysisTaskSEDs.h:14
 AliAnalysisTaskSEDs.h:15
 AliAnalysisTaskSEDs.h:16
 AliAnalysisTaskSEDs.h:17
 AliAnalysisTaskSEDs.h:18
 AliAnalysisTaskSEDs.h:19
 AliAnalysisTaskSEDs.h:20
 AliAnalysisTaskSEDs.h:21
 AliAnalysisTaskSEDs.h:22
 AliAnalysisTaskSEDs.h:23
 AliAnalysisTaskSEDs.h:24
 AliAnalysisTaskSEDs.h:25
 AliAnalysisTaskSEDs.h:26
 AliAnalysisTaskSEDs.h:27
 AliAnalysisTaskSEDs.h:28
 AliAnalysisTaskSEDs.h:29
 AliAnalysisTaskSEDs.h:30
 AliAnalysisTaskSEDs.h:31
 AliAnalysisTaskSEDs.h:32
 AliAnalysisTaskSEDs.h:33
 AliAnalysisTaskSEDs.h:34
 AliAnalysisTaskSEDs.h:35
 AliAnalysisTaskSEDs.h:36
 AliAnalysisTaskSEDs.h:37
 AliAnalysisTaskSEDs.h:38
 AliAnalysisTaskSEDs.h:39
 AliAnalysisTaskSEDs.h:40
 AliAnalysisTaskSEDs.h:41
 AliAnalysisTaskSEDs.h:42
 AliAnalysisTaskSEDs.h:43
 AliAnalysisTaskSEDs.h:44
 AliAnalysisTaskSEDs.h:45
 AliAnalysisTaskSEDs.h:46
 AliAnalysisTaskSEDs.h:47
 AliAnalysisTaskSEDs.h:48
 AliAnalysisTaskSEDs.h:49
 AliAnalysisTaskSEDs.h:50
 AliAnalysisTaskSEDs.h:51
 AliAnalysisTaskSEDs.h:52
 AliAnalysisTaskSEDs.h:53
 AliAnalysisTaskSEDs.h:54
 AliAnalysisTaskSEDs.h:55
 AliAnalysisTaskSEDs.h:56
 AliAnalysisTaskSEDs.h:57
 AliAnalysisTaskSEDs.h:58
 AliAnalysisTaskSEDs.h:59
 AliAnalysisTaskSEDs.h:60
 AliAnalysisTaskSEDs.h:61
 AliAnalysisTaskSEDs.h:62
 AliAnalysisTaskSEDs.h:63
 AliAnalysisTaskSEDs.h:64
 AliAnalysisTaskSEDs.h:65
 AliAnalysisTaskSEDs.h:66
 AliAnalysisTaskSEDs.h:67
 AliAnalysisTaskSEDs.h:68
 AliAnalysisTaskSEDs.h:69
 AliAnalysisTaskSEDs.h:70
 AliAnalysisTaskSEDs.h:71
 AliAnalysisTaskSEDs.h:72
 AliAnalysisTaskSEDs.h:73
 AliAnalysisTaskSEDs.h:74
 AliAnalysisTaskSEDs.h:75
 AliAnalysisTaskSEDs.h:76
 AliAnalysisTaskSEDs.h:77
 AliAnalysisTaskSEDs.h:78
 AliAnalysisTaskSEDs.h:79
 AliAnalysisTaskSEDs.h:80
 AliAnalysisTaskSEDs.h:81
 AliAnalysisTaskSEDs.h:82
 AliAnalysisTaskSEDs.h:83
 AliAnalysisTaskSEDs.h:84
 AliAnalysisTaskSEDs.h:85
 AliAnalysisTaskSEDs.h:86
 AliAnalysisTaskSEDs.h:87
 AliAnalysisTaskSEDs.h:88
 AliAnalysisTaskSEDs.h:89
 AliAnalysisTaskSEDs.h:90
 AliAnalysisTaskSEDs.h:91
 AliAnalysisTaskSEDs.h:92
 AliAnalysisTaskSEDs.h:93
 AliAnalysisTaskSEDs.h:94
 AliAnalysisTaskSEDs.h:95
 AliAnalysisTaskSEDs.h:96
 AliAnalysisTaskSEDs.h:97
 AliAnalysisTaskSEDs.h:98
 AliAnalysisTaskSEDs.h:99
 AliAnalysisTaskSEDs.h:100
 AliAnalysisTaskSEDs.h:101
 AliAnalysisTaskSEDs.h:102
 AliAnalysisTaskSEDs.h:103
 AliAnalysisTaskSEDs.h:104
 AliAnalysisTaskSEDs.h:105
 AliAnalysisTaskSEDs.h:106
 AliAnalysisTaskSEDs.h:107
 AliAnalysisTaskSEDs.h:108
 AliAnalysisTaskSEDs.h:109
 AliAnalysisTaskSEDs.h:110
 AliAnalysisTaskSEDs.h:111
 AliAnalysisTaskSEDs.h:112
 AliAnalysisTaskSEDs.h:113
 AliAnalysisTaskSEDs.h:114
 AliAnalysisTaskSEDs.h:115
 AliAnalysisTaskSEDs.h:116
 AliAnalysisTaskSEDs.h:117
 AliAnalysisTaskSEDs.h:118