]>
Commit | Line | Data |
---|---|---|
2af56f28 | 1 | #ifndef ALIEVENTPOOLSPARSE_H |
2 | #define ALIEVENTPOOLSPARSE_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | // Event pool based on THnSparseI | |
9 | // This class is needed by the AnalysisManager to steer a mixing analysis. | |
10 | // Author: Peter Hristov | |
11 | // Peter.Hristov@cern.ch | |
12 | ||
13 | #include <THnSparse.h> | |
14 | #include <TEntryList.h> | |
15 | #include "AliVEventPool.h" | |
16 | ||
17 | class TChain; | |
18 | class TTreeFormula; | |
04cb11d4 | 19 | class AliRunTagCuts; |
20 | class AliEventTagCuts; | |
21 | class AliDetectorTagCuts; | |
22 | class AliLHCTagCuts; | |
2af56f28 | 23 | |
24 | //_____________________________________________________________________________ | |
25 | class AliEventPoolSparse : public AliVEventPool { | |
26 | public: | |
27 | ||
28 | AliEventPoolSparse(); | |
29 | AliEventPoolSparse(const char* name, const char* title, TChain * tagchain, Int_t dim, | |
30 | const char ** vars, const Int_t* nbins, const Double_t* xmin = 0, | |
31 | const Double_t* xmax = 0, Int_t chunksize = 1024 * 16); | |
32 | ||
33 | virtual ~AliEventPoolSparse(); | |
34 | ||
35 | // Interface from AiVEventPool, to be overloaded | |
36 | virtual TChain* GetNextChain(); | |
37 | virtual void GetCurrentBin(Float_t* xbin); | |
38 | virtual Int_t GetDimension(){return fN;} | |
39 | virtual void Init(); | |
40 | ||
41 | TEntryList * GetNextPool(Int_t i) { | |
42 | // Returns the array associated with bin "i" | |
43 | return fPool>0 ? fPool[i] : 0x0; | |
44 | } | |
45 | ||
46 | TEntryList * GetEvents(const Double_t * x) { | |
47 | // Returns the array associated with the bin | |
48 | // that corresponds to vector "x" | |
49 | Int_t bin = fHnSparseI.GetBin(x,kFALSE); | |
50 | return fPool>0 ? fPool[bin] : 0x0; | |
51 | } | |
52 | ||
53 | void SetTagChain(TChain * chain){ | |
54 | // Input tag chain | |
55 | fTagChain = chain; | |
56 | } | |
57 | ||
58 | TChain * GetTagChain() const { | |
59 | // Return the input tag chain | |
60 | return fTagChain; | |
61 | } | |
62 | ||
63 | // Cuts | |
64 | void SetRunCut(const char * cut); | |
65 | void SetLHCCut(const char * cut); | |
66 | void SetDetCut(const char * cut); | |
67 | void SetEventCut(const char * cut); | |
68 | ||
04cb11d4 | 69 | void SetRunCut(AliRunTagCuts* cut); |
70 | void SetEventCut(AliEventTagCuts* cut); | |
71 | void SetDetectorCut(AliDetectorTagCuts* cut); | |
72 | void SetLHCCut(AliLHCTagCuts* cut); | |
73 | ||
2af56f28 | 74 | TTreeFormula ** GetPoolVars() const {return fVars;} |
75 | TTreeFormula * GetRunCut() const {return fRunCut;} | |
76 | TTreeFormula * GetLHCCut() const {return fLHCCut;} | |
77 | TTreeFormula * GetDetCut() const {return fDetCut;} | |
78 | TTreeFormula * GetEventCut() const {return fEvCut;} | |
b67cc855 | 79 | Int_t BinNumber() const {return fBinNumber;} |
a065d8ed | 80 | |
2af56f28 | 81 | protected: |
82 | ||
83 | void Set(Int_t n); | |
84 | ||
85 | ||
86 | private: | |
87 | ||
88 | AliEventPoolSparse(const AliEventPoolSparse& source); // Not implemented | |
89 | AliEventPoolSparse& operator = (const AliEventPoolSparse& source); // Not implemented | |
90 | ||
91 | THnSparseI fHnSparseI; // Sparse histogram to | |
92 | Int_t fChunkSize; //! Cached chunk size since the getter is protected | |
93 | Int_t fN; // Size of the array fPool | |
94 | TEntryList ** fPool; // Arrays of pointers to the TEntryList containing the event IDs | |
95 | Int_t fCurrentBin; //! Current bin | |
96 | TChain * fTagChain; //! Input chain of tags | |
97 | ||
98 | TTreeFormula ** fVars; // Array of variables used to create the pools | |
99 | TTreeFormula * fRunCut;// Run selection | |
100 | TTreeFormula * fLHCCut;// LNC-based selection | |
101 | TTreeFormula * fDetCut;// Detector-based selection | |
102 | TTreeFormula * fEvCut; // Event-based selection | |
04cb11d4 | 103 | |
104 | AliRunTagCuts *fRunTagCut; // RunTag class cut | |
105 | AliEventTagCuts *fEventTagCut; // EventTag class cut | |
106 | AliDetectorTagCuts *fDetectorTagCut; // DetectorTag class cut | |
107 | AliLHCTagCuts *fLHCTagCut; // LHCTag class cut | |
108 | ||
a065d8ed | 109 | Int_t fBinNumber; // Current bin |
2af56f28 | 110 | |
04cb11d4 | 111 | ClassDef(AliEventPoolSparse,2) // |
2af56f28 | 112 | }; |
113 | ||
114 | #endif | |
115 | ||
116 |