ROOT logo
#ifndef ALIANALYSISTASKSEDSTARSPECTRA_H
#define ALIANALYSISTASKSEDSTARSPECTRA_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$ */ 

#include <TH2F.h>
#include <TH3F.h>
#include <THnSparse.h>

#include "AliAnalysisTaskSE.h"

class AliRDHFCutsDStartoKpipi;
class AliNormalizationCounter;

class AliAnalysisTaskSEDStarSpectra : public AliAnalysisTaskSE 
{
  
 public:
  
  AliAnalysisTaskSEDStarSpectra();
  AliAnalysisTaskSEDStarSpectra(const Char_t* name,AliRDHFCutsDStartoKpipi* cuts);
  virtual ~AliAnalysisTaskSEDStarSpectra();

  // 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);
 

 //Background simulation
  void     SideBandBackground(AliAODRecoCascadeHF *part, AliRDHFCutsDStartoKpipi *cuts, Int_t isSel, TList *listout);
  void     WrongSignForDStar(AliAODRecoCascadeHF *part, AliRDHFCutsDStartoKpipi *cuts, TList *listout);
    // histos
  void   FillSpectrum(AliAODRecoCascadeHF *part, Int_t isDStar, AliRDHFCutsDStartoKpipi *cuts, Int_t isSel, TList *listout);
  void     DefineHistograms();
  Int_t CheckOrigin(TClonesArray* arrayMC, const AliAODMCParticle *mcPartCandidate) const;
  void CreateImpactParameterHistos();

  // set analysis type
  void     SetAnalysisType(Int_t anaType) {fAnalysis = anaType;}
  void     PrintAnalysisType() {printf("Analysis type: %d\n(0: Heidelberg\t1: Utrecht)",fAnalysis);}
 // set MC usage
  void     SetMC(Bool_t theMCon) {fUseMCInfo = theMCon;}
  Bool_t   GetMC() const {return fUseMCInfo;}
 // set rare mesons
  void     SetRareSearch(Bool_t theRareOn) {fDoSearch = theRareOn;}
  Bool_t   GetRareSearch() const {return fDoSearch;}
  //impact par study
  void SetDoImpactParameterHistos(Bool_t doImp=kTRUE){fDoImpParDstar=doImp;}
  Bool_t GetDoImpactParameterHistos() const {return fDoImpParDstar;}

  Float_t GetTrueImpactParameterD0(const AliAODMCHeader *mcHeader, TClonesArray* arrayMC, const AliAODMCParticle *partDp) const;

  void SetDoDStarVsY(Bool_t theDStarVsY) {fDoDStarVsY = theDStarVsY;}

 private:
  
  AliAnalysisTaskSEDStarSpectra(const AliAnalysisTaskSEDStarSpectra &source);
  AliAnalysisTaskSEDStarSpectra& operator=(const AliAnalysisTaskSEDStarSpectra& source); 
  
  Int_t  fEvents;                //  n. of events
  Int_t  fAnalysis;		 //  0: HD;	1: UU;
  Double_t fD0Window;		 //  select width on D0Mass
  Double_t fPeakWindow;          //  select width on DstarMass
  Bool_t fUseMCInfo;             //  Use MC info
  Bool_t fDoSearch;              //  Rare mesons
  TList *fOutput;                //!  User output
  TList *fOutputAll;             //!  User output2
  TList *fOutputPID;             //!  User output3
  Int_t  fNSigma;                //  n sigma for kaon PID
  AliRDHFCutsDStartoKpipi *fCuts; // Cuts - sent to output slot 3
  // define the histograms
  TH1F *fCEvents;             //!
  TH2F *fTrueDiff2;           //!
  TH1F *fDeltaMassD1;         //! 
  AliNormalizationCounter *fCounter;//!Counter for normalization slot 4
  Bool_t fDoImpParDstar;  // imppar studies
  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)
  Bool_t  fDoDStarVsY;   // flag to enable D* vs y 

  THnSparseF *fHistMassPtImpParTCDs[5];//! histograms for impact paramter studies

  ClassDef(AliAnalysisTaskSEDStarSpectra,9); // class for D* spectra
};

#endif

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