ROOT logo
#ifndef ALIEVENTPOOLOTF_H
#define ALIEVENTPOOLOTF_H
 
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

// Realisation of an AliVEventPool via
// on the flight (OTF) generation of the bin using AliTagAnalysis.
// Author Andreas Morsch
// andreas.morsch@cern.ch

#include <AliVEventPool.h>
class AliRunTagCuts;
class AliLHCTagCuts;
class AliDetectorTagCuts;
class AliEventTagCuts;
class AliTagAnalysis;
class TGridResult;

typedef enum {kMultiplicity, kZVertex, kEventPlane, kLeadingParticleEta, kLeadingParticlePhi, kUser1, kUser2}  EventPoolAxis_t;

class AliEventPoolOTF : public AliVEventPool
{
 public:
    AliEventPoolOTF();
    AliEventPoolOTF(const char* name, const char* title = "AOD");

    virtual ~AliEventPoolOTF();
    // Interface
    virtual TChain* GetNextChain();
    virtual void  GetCurrentBin(Float_t* /*bin*/);
    virtual Int_t GetDimension();
    virtual void  Init();
    virtual void  SetMultiplicityBin(Int_t min, Int_t max, Int_t step)
	{fValueMin[kMultiplicity] = Float_t(min); fValueMax[kMultiplicity] = Float_t(max); fValueStep[kMultiplicity] = Float_t(step);}

    virtual void  SetMultiplicityBinning(Float_t min, Float_t max, Float_t step)
	{fValueMin[kMultiplicity] = min; fValueMax[kMultiplicity] = max; fValueStep[kMultiplicity] = step;}
    virtual void  SetZVertexBinning(Float_t min, Float_t max, Float_t step)
	{fValueMin[kZVertex] = min; fValueMax[kZVertex] = max; fValueStep[kZVertex] = step;}
    virtual void  SetEventPlaneBinning(Float_t min, Float_t max, Float_t step)
	{fValueMin[kEventPlane] = min; fValueMax[kEventPlane] = max; fValueStep[kEventPlane] = step;}
    virtual void  SetLeadingParticleEtaBinning(Float_t min, Float_t max, Float_t step)
	{fValueMin[kLeadingParticleEta] = min; fValueMax[kLeadingParticleEta] = max; fValueStep[kLeadingParticleEta] = step;}
  virtual void  SetLeadingParticlePhiBinning(Float_t min, Float_t max, Float_t step)
	{fValueMin[kLeadingParticlePhi] = min; fValueMax[kLeadingParticlePhi] = max; fValueStep[kLeadingParticlePhi] = step;}

    //
    void SetTagDirectory(const char* dirname) {fTagDirectory = dirname;};
    void SetGridResult(TGridResult*  gridTag) {fGridTags = gridTag;};
    virtual Int_t BinNumber() const {return fBinNumber;}
	    
 private:
    AliEventPoolOTF(const AliEventPoolOTF& obj);
    AliEventPoolOTF& operator=(const AliEventPoolOTF& other);
    void InitArrays();
    
 protected:
    AliTagAnalysis*      fTagAnalysis;   // Pointer to tag analysis
    AliRunTagCuts*       fRunCuts;       // Run      cuts
    AliLHCTagCuts*       fLHCCuts;       // LHC      cuts
    AliDetectorTagCuts*  fDetectorCuts;  // Detector cuts
    AliEventTagCuts*     fEventCuts;     // Event    cuts
    TGridResult*         fGridTags;      // Tags from a grid file collection
    TChain*              fChain;         // Current chain
    const char*          fTagDirectory;  // Directory with local tag files
    // Common pool cuts
    // Multiplicity
    Float_t              fValueMin[10];  // Minimum value
    Float_t              fValueMax[10];  // Maximum value
    Float_t              fValueStep[10]; // Step size
    Float_t              fValue[10];     // Current value
    //
    Int_t                fBinNumber;    // Current bin number
    Bool_t               fNoMore;       // No more bins 
    
    ClassDef(AliEventPoolOTF, 0); 
};
 
#endif
 AliEventPoolOTF.h:1
 AliEventPoolOTF.h:2
 AliEventPoolOTF.h:3
 AliEventPoolOTF.h:4
 AliEventPoolOTF.h:5
 AliEventPoolOTF.h:6
 AliEventPoolOTF.h:7
 AliEventPoolOTF.h:8
 AliEventPoolOTF.h:9
 AliEventPoolOTF.h:10
 AliEventPoolOTF.h:11
 AliEventPoolOTF.h:12
 AliEventPoolOTF.h:13
 AliEventPoolOTF.h:14
 AliEventPoolOTF.h:15
 AliEventPoolOTF.h:16
 AliEventPoolOTF.h:17
 AliEventPoolOTF.h:18
 AliEventPoolOTF.h:19
 AliEventPoolOTF.h:20
 AliEventPoolOTF.h:21
 AliEventPoolOTF.h:22
 AliEventPoolOTF.h:23
 AliEventPoolOTF.h:24
 AliEventPoolOTF.h:25
 AliEventPoolOTF.h:26
 AliEventPoolOTF.h:27
 AliEventPoolOTF.h:28
 AliEventPoolOTF.h:29
 AliEventPoolOTF.h:30
 AliEventPoolOTF.h:31
 AliEventPoolOTF.h:32
 AliEventPoolOTF.h:33
 AliEventPoolOTF.h:34
 AliEventPoolOTF.h:35
 AliEventPoolOTF.h:36
 AliEventPoolOTF.h:37
 AliEventPoolOTF.h:38
 AliEventPoolOTF.h:39
 AliEventPoolOTF.h:40
 AliEventPoolOTF.h:41
 AliEventPoolOTF.h:42
 AliEventPoolOTF.h:43
 AliEventPoolOTF.h:44
 AliEventPoolOTF.h:45
 AliEventPoolOTF.h:46
 AliEventPoolOTF.h:47
 AliEventPoolOTF.h:48
 AliEventPoolOTF.h:49
 AliEventPoolOTF.h:50
 AliEventPoolOTF.h:51
 AliEventPoolOTF.h:52
 AliEventPoolOTF.h:53
 AliEventPoolOTF.h:54
 AliEventPoolOTF.h:55
 AliEventPoolOTF.h:56
 AliEventPoolOTF.h:57
 AliEventPoolOTF.h:58
 AliEventPoolOTF.h:59
 AliEventPoolOTF.h:60
 AliEventPoolOTF.h:61
 AliEventPoolOTF.h:62
 AliEventPoolOTF.h:63
 AliEventPoolOTF.h:64
 AliEventPoolOTF.h:65
 AliEventPoolOTF.h:66
 AliEventPoolOTF.h:67
 AliEventPoolOTF.h:68
 AliEventPoolOTF.h:69
 AliEventPoolOTF.h:70
 AliEventPoolOTF.h:71
 AliEventPoolOTF.h:72
 AliEventPoolOTF.h:73
 AliEventPoolOTF.h:74
 AliEventPoolOTF.h:75
 AliEventPoolOTF.h:76
 AliEventPoolOTF.h:77
 AliEventPoolOTF.h:78
 AliEventPoolOTF.h:79
 AliEventPoolOTF.h:80
 AliEventPoolOTF.h:81
 AliEventPoolOTF.h:82