DQM configure file
[u/mrichter/AliRoot.git] / ANALYSIS / AliEventPoolSparse.h
CommitLineData
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
17class TChain;
18class TTreeFormula;
04cb11d4 19class AliRunTagCuts;
20class AliEventTagCuts;
21class AliDetectorTagCuts;
22class AliLHCTagCuts;
2af56f28 23
24//_____________________________________________________________________________
25class 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