]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAnalysisTaskSEDs.h
updated for systematic study
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEDs.h
1 #ifndef ALIANALYSISTASKDS_H
2 #define ALIANALYSISTASKDS_H
3
4 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 ///////////////////////////////////////////////////////////////////
10 //                                                               //
11 // Analysis task to produce Ds candidates mass spectra           //
12 // Origin: F.Prino, Torino, prino@to.infn.it                     //
13 //                                                               //
14 ///////////////////////////////////////////////////////////////////
15
16 #include <TROOT.h>
17 #include <TSystem.h>
18 #include <TH1F.h>
19 #include <TH2F.h>
20
21 #include "AliAnalysisTaskSE.h"
22 #include "AliRDHFCutsDstoKKpi.h"
23
24 class AliNormalizationCounter;
25
26
27 class AliAnalysisTaskSEDs : public AliAnalysisTaskSE
28 {
29  public:
30  
31   AliAnalysisTaskSEDs();
32   AliAnalysisTaskSEDs(const char *name, AliRDHFCutsDstoKKpi* analysiscuts, Int_t fillNtuple=0);
33   virtual ~AliAnalysisTaskSEDs();
34   void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}  
35   void SetWriteOnlySignalInNtuple(Bool_t opt=kTRUE){
36     if(fReadMC) fWriteOnlySignal=opt;
37     else AliError("fReadMC has to be kTRUE");
38   }
39   void SetFillNtuple(Int_t fill=0){fFillNtuple=fill;}
40   void SetMassRange(Double_t rang=0.4){fMassRange=rang;}
41   void SetDoCutVarHistos(Bool_t opt=kTRUE) {fDoCutVarHistos=opt;}
42   void SetUseSelectionBit(Bool_t opt=kFALSE){ fUseSelectionBit=opt;}
43
44   void SetInvMassBinSize(Double_t binsiz=0.002){fMassBinSize=binsiz;}
45   void SetPtBins(Int_t n, Float_t* lim);
46   void SetAnalysisCuts(AliRDHFCutsDstoKKpi* cuts){fAnalysisCuts=cuts;}
47   // Implementation of interface methods
48   virtual void UserCreateOutputObjects();
49   virtual void Init();
50   virtual void LocalInit() {Init();}
51   virtual void UserExec(Option_t *option);
52   virtual void Terminate(Option_t *option);
53     
54  private:
55   Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*4;}
56   Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*4+1;}
57   Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*4+2;}
58   Int_t GetReflSignalHistoIndex(Int_t iPtBin) const { return iPtBin*4+3;}
59
60   enum {kMaxPtBins=20};
61
62   AliAnalysisTaskSEDs(const AliAnalysisTaskSEDs &source);
63   AliAnalysisTaskSEDs& operator=(const AliAnalysisTaskSEDs& source); 
64
65   TList*  fOutput;                    //! list send on output slot 0
66   TH1F*   fHistNEvents;               //! hist. for No. of events  
67   TH1F*   fChanHist[4];               //! hist. with KKpi and piKK candidates (sig,bkg,tot)
68   TH1F*   fMassHist[4*kMaxPtBins];    //! hist. of mass spectra (sig,bkg,tot)
69   TH1F*   fMassHistPhi[3*kMaxPtBins];    //! hist. of mass spectra via phi (sig,bkg,tot)
70   TH1F*   fMassHistK0st[3*kMaxPtBins];    //! hist. of mass spectra via K0* (sig,bkg,tot)
71   TH1F*   fCosPHist[4*kMaxPtBins];    //! hist. of cos pointing angle (sig,bkg,tot)
72   TH1F*   fDLenHist[4*kMaxPtBins];    //! hist. of decay length (sig,bkg,tot)
73   TH1F*   fSumd02Hist[4*kMaxPtBins];  //! hist. for sum d02 (Prod Cuts)
74   TH1F*   fSigVertHist[4*kMaxPtBins]; //! hist. for sigVert (Prod Cuts)
75   TH1F*   fPtMaxHist[4*kMaxPtBins];   //! hist. for Pt Max (Prod Cuts)
76   TH1F*   fPtCandHist[4*kMaxPtBins];  //! hist. for Pt Max (Prod Cuts)
77   TH1F*   fDCAHist[4*kMaxPtBins];     //! hist. for DCA (Prod Cuts)
78   TH1F*   fPtProng0Hist[4*kMaxPtBins]; //! hist. for Pt Max (Prod Cuts)
79   TH1F*   fPtProng1Hist[4*kMaxPtBins]; //! hist. for DCA (Prod Cuts)
80   TH1F*   fPtProng2Hist[4*kMaxPtBins]; //! hist. for DCA (Prod Cuts)
81   TH2F*   fDalitz[4*kMaxPtBins];      //! dalitz plot (sig,bkg,tot)
82   TH2F*   fDalitzPhi[4*kMaxPtBins];   //! dalitz plot via phi (sig,bkg,tot)
83   TH2F*   fDalitzK0st[4*kMaxPtBins];   //! dalitz plot via K0* (sig,bkg,tot)
84   TH2F *fPtVsMass;    //! hist. of pt vs. mass (prod. cuts)
85   TH2F *fPtVsMassPhi;    //! hist. of pt vs. mass (phi selection)
86   TH2F *fPtVsMassK0st;   //! hist. of pt vs. mass (K0* selection)
87   TH2F *fYVsPt;       //! hist. of Y vs. Pt (prod. cuts)
88   TH2F *fYVsPtSig;    //! hist. of Y vs. Pt (MC, only sig, prod. cuts)
89   TH1F *fHistCentrality[3];//!hist. for cent distr (all,sel ev, )
90   TH2F *fHistCentralityMult[3];//!hist. for cent distr vs mult (all,sel ev, )
91   TNtuple *fNtupleDs; //! output ntuple
92   Int_t fFillNtuple;                 // 0 not to fill ntuple
93                                      // 1 for filling ntuple for events through Phi
94                                      // 2 for filling ntuple for events through K0Star
95                                      // 3 for filling all 
96                                     
97                                      
98   Bool_t  fReadMC;                    //  flag for access to MC
99   Bool_t  fWriteOnlySignal;           //  flag to control ntuple writing in MC
100   Bool_t  fDoCutVarHistos;            //  flag to create and fill histos with distributions of cut variables
101   Bool_t  fUseSelectionBit;           // flag for useage of HasSelectionBit
102   UChar_t fNPtBins;                   // number of Pt bins
103   TList *fListCuts; //list of cuts
104   Float_t fPtLimits[kMaxPtBins+1];    //  limits for pt bins
105   Double_t fMassRange;                // range for mass histogram 
106   Double_t fMassBinSize;              // bin size for inv. mass histo
107
108   AliNormalizationCounter *fCounter;//!Counter for normalization
109   AliRDHFCutsDstoKKpi *fAnalysisCuts; // Cuts for Analysis
110   
111   ClassDef(AliAnalysisTaskSEDs,13);    //  AliAnalysisTaskSE for Ds mass spectra
112 };
113
114 #endif
115
116