Cleanup the code. Fix memory leak. Now inherit from AliAnalysisTaskSE (Antoine, Phili...
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEefficiency.h
1 #ifndef ALIHFEEFFICIENCY_H
2 #define ALIHFEEFFICIENCY_H
3
4 /**************************************************************************
5 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 *                                                                        *
7 * Author: The ALICE Off-line Project.                                    *
8 * Contributors are mentioned in the code where appropriate.              *
9 *                                                                        *
10 * Permission to use, copy, modify and distribute this software and its   *
11 * documentation strictly for non-commercial purposes is hereby granted   *
12 * without fee, provided that the above copyright notice appears in all   *
13 * copies and that both the copyright notice and this permission notice   *
14 * appear in the supporting documentation. The authors make no claims     *
15 * about the suitability of this software for any purpose. It is          *
16 * provided "as is" without express or implied warranty.                  *
17 **************************************************************************/
18
19 /* $Id$ */ 
20
21 //
22 // Task for Efficiency studies
23 // Used for testing classes AliHFEcontainer and AliHFEfilter
24 // Creates Efficiency Histograms
25 //
26 #include "AliAnalysisTaskSE.h"
27
28 class TList;
29 class TObjArray;
30 class AliCFAcceptanceCuts;
31 class AliCFEffGrid;
32 class AliCFContainer;
33 class AliHFEcollection;
34 class AliHFEcontainer;
35 class AliHFEtrackFilter;
36
37 class AliHFEefficiency : public AliAnalysisTaskSE{
38   public:
39     AliHFEefficiency();
40     AliHFEefficiency(const Char_t *name);
41     ~AliHFEefficiency();
42
43     virtual void UserCreateOutputObjects(); 
44     virtual void UserExec(Option_t *);
45     virtual void Terminate(Option_t *);
46
47     void FilterMC();
48     void CutTRD() { fCutTRD = kTRUE; }
49
50     void SetHFEcontainer(AliHFEcontainer * const cont) { fEfficiency = cont; };
51     void UnsetHFEcontainer() { fEfficiency = NULL; }
52
53     void Load(const char* filename = "EffTask.root");
54     void PostProcess();
55     Bool_t IsRunningTerminate() const { return TestBit(kTerminate); }
56     void SetRunTerminate(Bool_t terminate = kTRUE) { SetBit(kTerminate, terminate); }
57
58     void CalculatePTsmearing();
59     void DrawPtResolution(const TList * const l);
60
61   private:
62     enum{
63       kNTracks,
64       kPt
65     };
66     enum{ // Bit Definition
67       kTerminate = BIT(18)
68     };
69     AliHFEefficiency(const AliHFEefficiency &);
70     AliHFEefficiency &operator=(const AliHFEefficiency &);
71     void DrawSignalEfficiency(AliCFEffGrid *eff, AliCFContainer *cont, Int_t var);
72     void DrawCutEfficiency(AliCFEffGrid *eff, AliCFContainer *cont, Int_t var);
73
74     AliHFEtrackFilter *fFilter;           //! Track Filter
75     AliHFEcutStep *fMCcut;                //! MC Signal
76     AliCFAcceptanceCuts *fAcceptanceCuts; //! MC Acceptance cuts
77     AliHFEcontainer *fEfficiency;         //! Efficiency container
78     AliHFEcollection *fOutput;            //! QA histo container
79     Bool_t fCutTRD;                       //  Apply TRD cuts
80
81     ClassDef(AliHFEefficiency, 1);
82 };
83 #endif