]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEtrackFilter.h
Adding Id to PWG3 classes for better tracking of the coverity defect fixes (Ivana)
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEtrackFilter.h
1 #ifndef ALIHFETRACKFILTER_H
2 #define ALIHFETRACKFILTER_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 // Track filter class 
23 // Apply cut steps to all tracks in one event and returns a list of
24 // filtered tracks
25 //
26 #ifndef ROOT_TNamed
27 #include <TNamed.h>
28 #endif
29
30 #ifndef ROOT_TObjArray
31 #include <TObjArray.h>
32 #endif
33
34 class AliCFContainer;
35 class AliESDEvent;
36 class AliHFEcontainer;
37 class AliHFEcutStep;
38 class AliMCEvent;
39
40 class AliHFEtrackFilter : public TNamed{
41   public:
42     AliHFEtrackFilter(const Char_t *name);
43     AliHFEtrackFilter(const AliHFEtrackFilter &o);
44     AliHFEtrackFilter &operator=(const AliHFEtrackFilter &o);
45     virtual void Copy(TObject &o) const;
46     ~AliHFEtrackFilter();
47   
48     // Base Functionality
49     void AddCutStep(AliHFEcutStep *cuts);
50     void GenerateCutSteps();
51     void SetRecEvent(AliVEvent *rec);
52     AliHFEcutStep *GetCutStep(Int_t istep);
53     AliHFEcutStep *GetCutStep(const Char_t *name);
54     void FilterTracks(AliESDEvent *const esd);
55     TObjArray *GetFilteredTracks() const { return fFilteredTracks; }
56     void Flush();
57
58     // Usage of the Correction Framework
59     void InitCF();
60     void InitCF(AliHFEcontainer *cont);
61     AliCFContainer *GetEfficiencyContainer(Int_t icont); 
62     void ReleaseContainers() { SetBit(kOwnCFContainers, kFALSE); }
63     void OwnContainers() { SetBit(kOwnCFContainers, kTRUE); }
64     void SetPtBins(Int_t nBins, Double_t *binning);
65     void SetEtaBins(Int_t nBins, Double_t *binning);
66     void SetPhiBins(Int_t nBins, Double_t *binning);
67
68     // Add Possibility to check Monte-Carlo Information
69     void SetMC(AliMCEvent * const mc);
70     void SetMCSignalStep(AliHFEcutStep * const sig) { fMCsignal = sig; };
71     AliHFEcutStep *GetMCSignalCuts() const { return fMCsignal; }
72
73     // Creators for Standard Cut Steps
74     AliHFEcutStep *MakeCutStepRecKineITSTPC();
75     AliHFEcutStep *MakeCutStepPrimary();
76     AliHFEcutStep *MakeCutStepHFEITS();
77     AliHFEcutStep *MakeCutStepHFETRD();
78     AliHFEcutStep *MakeMCSignalCuts();
79
80   private:
81     enum{
82       kOwnCFContainers = BIT(14)
83     };
84     TObjArray *fFilteredTracks;             //! List of Tracks which survived the filter
85     TObjArray *fCutSteps;                   //! Container of Cut Objects
86     TObjArray *fEfficiencyContainers;       //! Efficiency Container
87     AliMCEvent * fMC;                       //! Monte Carlo Event
88     AliHFEcutStep *fMCsignal;               //! Cuts for MC Signal
89
90     // Helpers for the correction framework
91     Int_t fPtBins;                          // Number of Pt Bins
92     Int_t fEtaBins;                         // Number of Eta Bins
93     Int_t fPhiBins;                         // Number of Phi Bins
94     Double_t *fPtBinning;                   // Pt binning
95     Double_t *fEtaBinning;                  // Eta binning
96     Double_t *fPhiBinning;                  // Phi binning
97
98     ClassDef(AliHFEtrackFilter, 1)
99 };
100 #endif
101