ROOT logo
//
// Class AliMixEventCutObj
//
// AliMixEventCutObj object contains information about one cut on for event mixing
// used by AliMixEventPool class
//
// authors:
//          Martin Vala (martin.vala@cern.ch)
//

#ifndef ALIMIXEVENTCUTOBJ_H
#define ALIMIXEVENTCUTOBJ_H

#include <TObject.h>
#include <TString.h>

class AliVEvent;
class AliAODEvent;
class AliESDEvent;
class AliMixEventCutObj : public TObject {
public:
   enum EEPAxis_t {kMultiplicity = 0, kZVertex = 1, kNumberV0s = 2, kNumberTracklets = 3, kCentrality = 4, kEventPlane = 5,
                   kEventPlaneV0A=6 , kEventPlaneV0C=7 , kAllEventAxis = 8
                  };

   AliMixEventCutObj(AliMixEventCutObj::EEPAxis_t type = kMultiplicity, Float_t min = 0.0, Float_t max = 0.0, Float_t step = 1.0, const char *opt = "");
   AliMixEventCutObj(const AliMixEventCutObj &obj);
   AliMixEventCutObj &operator=(const AliMixEventCutObj &obj);

   virtual void Print(const Option_t *) const;
   void PrintCurrentInterval();
   void PrintValues(AliVEvent *main, AliVEvent *mix);
   void Reset();
   void AddStep();

   Bool_t      HasMore() const;

   Int_t       GetNumberOfBins() const;
   Float_t     GetCurrentMin() const { return fCurrentVal; }
   Float_t     GetCurrentMax() const { return fCurrentVal + fCutStep - fCutSmallVal; }
   Float_t     GetMin() const { return fCutMin; }
   Float_t     GetMax() const { return fCutMax; }
   Float_t     GetStep() const { return fCutStep; }
   Short_t     GetType() const { return fCutType; }
   Int_t       GetBinNumber(Float_t num) const;
   Int_t       GetIndex(AliVEvent *ev);
   Double_t    GetValue(AliVEvent *ev);
   Double_t    GetValue(AliESDEvent *ev);
   Double_t    GetValue(AliAODEvent *ev);

   const char *GetCutName(Int_t index = -1) const;

   void        SetCurrentValueToIndex(Int_t index);

   Bool_t      IsValid();

private:
   Int_t       fCutType;       // cut type
   TString     fCutOpt;        // cut option string
   Float_t     fCutMin;        // cut min
   Float_t     fCutMax;        // cut max
   Float_t     fCutStep;       // cut step
   Float_t     fCutSmallVal;   // small value

   Float_t     fCurrentVal;    // current value

   ClassDef(AliMixEventCutObj, 3)
};

#endif
 AliMixEventCutObj.h:1
 AliMixEventCutObj.h:2
 AliMixEventCutObj.h:3
 AliMixEventCutObj.h:4
 AliMixEventCutObj.h:5
 AliMixEventCutObj.h:6
 AliMixEventCutObj.h:7
 AliMixEventCutObj.h:8
 AliMixEventCutObj.h:9
 AliMixEventCutObj.h:10
 AliMixEventCutObj.h:11
 AliMixEventCutObj.h:12
 AliMixEventCutObj.h:13
 AliMixEventCutObj.h:14
 AliMixEventCutObj.h:15
 AliMixEventCutObj.h:16
 AliMixEventCutObj.h:17
 AliMixEventCutObj.h:18
 AliMixEventCutObj.h:19
 AliMixEventCutObj.h:20
 AliMixEventCutObj.h:21
 AliMixEventCutObj.h:22
 AliMixEventCutObj.h:23
 AliMixEventCutObj.h:24
 AliMixEventCutObj.h:25
 AliMixEventCutObj.h:26
 AliMixEventCutObj.h:27
 AliMixEventCutObj.h:28
 AliMixEventCutObj.h:29
 AliMixEventCutObj.h:30
 AliMixEventCutObj.h:31
 AliMixEventCutObj.h:32
 AliMixEventCutObj.h:33
 AliMixEventCutObj.h:34
 AliMixEventCutObj.h:35
 AliMixEventCutObj.h:36
 AliMixEventCutObj.h:37
 AliMixEventCutObj.h:38
 AliMixEventCutObj.h:39
 AliMixEventCutObj.h:40
 AliMixEventCutObj.h:41
 AliMixEventCutObj.h:42
 AliMixEventCutObj.h:43
 AliMixEventCutObj.h:44
 AliMixEventCutObj.h:45
 AliMixEventCutObj.h:46
 AliMixEventCutObj.h:47
 AliMixEventCutObj.h:48
 AliMixEventCutObj.h:49
 AliMixEventCutObj.h:50
 AliMixEventCutObj.h:51
 AliMixEventCutObj.h:52
 AliMixEventCutObj.h:53
 AliMixEventCutObj.h:54
 AliMixEventCutObj.h:55
 AliMixEventCutObj.h:56
 AliMixEventCutObj.h:57
 AliMixEventCutObj.h:58
 AliMixEventCutObj.h:59
 AliMixEventCutObj.h:60
 AliMixEventCutObj.h:61
 AliMixEventCutObj.h:62
 AliMixEventCutObj.h:63
 AliMixEventCutObj.h:64
 AliMixEventCutObj.h:65
 AliMixEventCutObj.h:66
 AliMixEventCutObj.h:67
 AliMixEventCutObj.h:68
 AliMixEventCutObj.h:69
 AliMixEventCutObj.h:70