#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 #include #include #include #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[3*kMaxPtBins]; //! hist. of mass spectra via phi (sig,bkg,tot) TH1F* fMassHistK0st[3*kMaxPtBins]; //! hist. of mass spectra via K0* (sig,bkg,tot) 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,13); // AliAnalysisTaskSE for Ds mass spectra }; #endif