Some leaks corrected.
[u/mrichter/AliRoot.git] / ANALYSIS / AliEventPoolOTF.h
1 #ifndef ALIEVENTPOOLOTF_H
2 #define ALIEVENTPOOLOTF_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 // Realisation of an AliVEventPool via
10 // on the flight (OTF) generation of the bin using AliTagAnalysis.
11 // Author Andreas Morsch
12 // andreas.morsch@cern.ch
13
14 #include <AliVEventPool.h>
15 class AliRunTagCuts;
16 class AliLHCTagCuts;
17 class AliDetectorTagCuts;
18 class AliEventTagCuts;
19 class AliTagAnalysis;
20 class TGridResult;
21
22 typedef enum {kMultiplicity, kZVertex, kEventPlane, kLeadingParticleEta, kUser1, kUser2}  EventPoolAxis_t;
23
24 class AliEventPoolOTF : public AliVEventPool
25 {
26  public:
27     AliEventPoolOTF();
28     AliEventPoolOTF(const char* name, const char* title = "AOD");
29
30     virtual ~AliEventPoolOTF() {;}
31     // Interface
32     virtual TChain* GetNextChain();
33     virtual void  GetCurrentBin(Float_t* /*bin*/);
34     virtual Int_t GetDimension();
35     virtual void  Init();
36     virtual void  SetMultiplicityBin(Int_t min, Int_t max, Int_t step)
37         {fValueMin[kMultiplicity] = Float_t(min); fValueMax[kMultiplicity] = Float_t(max); fValueStep[kMultiplicity] = Float_t(step);}
38
39     virtual void  SetMultiplicityBinning(Float_t min, Float_t max, Float_t step)
40         {fValueMin[kMultiplicity] = min; fValueMax[kMultiplicity] = max; fValueStep[kMultiplicity] = step;}
41     virtual void  SetZVertexBinning(Float_t min, Float_t max, Float_t step)
42         {fValueMin[kZVertex] = min; fValueMax[kZVertex] = max; fValueStep[kZVertex] = step;}
43     virtual void  SetEventPlaneBinning(Float_t min, Float_t max, Float_t step)
44         {fValueMin[kEventPlane] = min; fValueMax[kEventPlane] = max; fValueStep[kEventPlane] = step;}
45     virtual void  SetLeadingParticleEtaBinning(Float_t min, Float_t max, Float_t step)
46         {fValueMin[kLeadingParticleEta] = min; fValueMax[kLeadingParticleEta] = max; fValueStep[kLeadingParticleEta] = step;}
47
48     //
49     void SetTagDirectory(const char* dirname) {fTagDirectory = dirname;};
50     void SetGridResult(TGridResult*  gridTag) {fGridTags = gridTag;};
51     virtual Int_t BinNumber() const {return fBinNumber;}
52             
53  private:
54     AliEventPoolOTF(const AliEventPoolOTF& obj);
55     AliEventPoolOTF& operator=(const AliEventPoolOTF& other);
56     void InitArrays();
57     
58  protected:
59     AliTagAnalysis*      fTagAnalysis;   // Pointer to tag analysis
60     AliRunTagCuts*       fRunCuts;       // Run      cuts
61     AliLHCTagCuts*       fLHCCuts;       // LHC      cuts
62     AliDetectorTagCuts*  fDetectorCuts;  // Detector cuts
63     AliEventTagCuts*     fEventCuts;     // Event    cuts
64     TGridResult*         fGridTags;      // Tags from a grid file collection
65     TChain*              fChain;         // Current chain
66     const char*          fTagDirectory;  // Directory with local tag files
67     // Common pool cuts
68     // Multiplicity
69     Float_t              fValueMin[6];  // Minimum value
70     Float_t              fValueMax[6];  // Maximum value
71     Float_t              fValueStep[6]; // Step size
72     Float_t              fValue[6];     // Current value
73     //
74     Int_t                fBinNumber;    // Current bin number
75     Bool_t               fNoMore;       // No more bins 
76     
77     ClassDef(AliEventPoolOTF, 0); 
78 };
79  
80 #endif