Place the config and root file at the right place
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFEtrackFilter.h
CommitLineData
70da6c5a 1/**************************************************************************
2* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15//
16// Track filter class
17// Apply cut steps to all tracks in one event and returns a list of
18// filtered tracks
19//
c2690925 20#ifndef ALIHFETRACKFILTER_H
21#define ALIHFETRACKFILTER_H
22
70da6c5a 23#ifndef ROOT_TNamed
24#include <TNamed.h>
25#endif
26
27#ifndef ROOT_TObjArray
28#include <TObjArray.h>
29#endif
30
31class AliCFContainer;
11ff28c5 32class AliVEvent;
70da6c5a 33class AliHFEcontainer;
34class AliHFEcutStep;
35class AliMCEvent;
36
37class AliHFEtrackFilter : public TNamed{
38 public:
c2690925 39 AliHFEtrackFilter();
70da6c5a 40 AliHFEtrackFilter(const Char_t *name);
6555e2ad 41 AliHFEtrackFilter(const AliHFEtrackFilter &o);
42 AliHFEtrackFilter &operator=(const AliHFEtrackFilter &o);
70da6c5a 43 virtual void Copy(TObject &o) const;
44 ~AliHFEtrackFilter();
45
46 // Base Functionality
47 void AddCutStep(AliHFEcutStep *cuts);
48 void GenerateCutSteps();
e156c3bb 49 void SetRecEvent(const AliVEvent *rec);
70da6c5a 50 AliHFEcutStep *GetCutStep(Int_t istep);
51 AliHFEcutStep *GetCutStep(const Char_t *name);
11ff28c5 52 void FilterTracks(const AliVEvent *const esd);
70da6c5a 53 TObjArray *GetFilteredTracks() const { return fFilteredTracks; }
54 void Flush();
55
56 // Usage of the Correction Framework
57 void InitCF();
58 void InitCF(AliHFEcontainer *cont);
59 AliCFContainer *GetEfficiencyContainer(Int_t icont);
60 void ReleaseContainers() { SetBit(kOwnCFContainers, kFALSE); }
61 void OwnContainers() { SetBit(kOwnCFContainers, kTRUE); }
62 void SetPtBins(Int_t nBins, Double_t *binning);
63 void SetEtaBins(Int_t nBins, Double_t *binning);
64 void SetPhiBins(Int_t nBins, Double_t *binning);
65
66 // Add Possibility to check Monte-Carlo Information
67 void SetMC(AliMCEvent * const mc);
68 void SetMCSignalStep(AliHFEcutStep * const sig) { fMCsignal = sig; };
69 AliHFEcutStep *GetMCSignalCuts() const { return fMCsignal; }
70
71 // Creators for Standard Cut Steps
72 AliHFEcutStep *MakeCutStepRecKineITSTPC();
73 AliHFEcutStep *MakeCutStepPrimary();
74 AliHFEcutStep *MakeCutStepHFEITS();
75 AliHFEcutStep *MakeCutStepHFETRD();
76 AliHFEcutStep *MakeMCSignalCuts();
77
78 private:
79 enum{
80 kOwnCFContainers = BIT(14)
81 };
82 TObjArray *fFilteredTracks; //! List of Tracks which survived the filter
83 TObjArray *fCutSteps; //! Container of Cut Objects
84 TObjArray *fEfficiencyContainers; //! Efficiency Container
85 AliMCEvent * fMC; //! Monte Carlo Event
86 AliHFEcutStep *fMCsignal; //! Cuts for MC Signal
87
88 // Helpers for the correction framework
89 Int_t fPtBins; // Number of Pt Bins
90 Int_t fEtaBins; // Number of Eta Bins
91 Int_t fPhiBins; // Number of Phi Bins
92 Double_t *fPtBinning; // Pt binning
93 Double_t *fEtaBinning; // Eta binning
94 Double_t *fPhiBinning; // Phi binning
95
96 ClassDef(AliHFEtrackFilter, 1)
97};
98#endif
99