ROOT logo
#ifndef ALIVVZERO_H
#define ALIVVZERO_H

//-------------------------------------------------------------------------
//     Base class for ESD and AOD VZERO data
//     Author: Cvetan Cheshkov
//     cvetan.cheshkov@cern.ch 2/02/2011
//-------------------------------------------------------------------------

#include "TObject.h"
#include "TMath.h"

class AliVVZERO : public TObject 
{
public:
  AliVVZERO() { }
  AliVVZERO(const AliVVZERO& source);
  AliVVZERO &operator=(const AliVVZERO& source);

  virtual ~AliVVZERO() { }

  enum {
    kCorrectedLeadingTime = BIT(14),
    kTriggerBitsFilled = BIT(15),
    kDecisionFilled = BIT(16),
    kOnlineBitsFilled = BIT(17),
    kCorrectedForSaturation = BIT(18),
    kRobustMeanTime = BIT(19),
    kTriggerChargeBitsFilled = BIT(20)
  };
  enum Decision { kV0Invalid = -1, kV0Empty = 0, kV0BB, kV0BG, kV0Fake };
  enum TriggerBits {
    kBBAandBBC = 0,
    kBBAorBBC = 1,
    kBGAandBBC = 2,
    kBGA = 3,
    kBGCandBBA = 4,
    kBGC = 5,
    kCTA1andCTC1 = 6,
    kCTA1orCTC1 = 7,
    kCTA2andCTC2 = 8,
    kCTA2orCTC2 = 9,
    kMTAandMTC = 10,
    kMTAorMTC = 11,
    kBBA = 12,
    kBBC = 13,
    kBGAorBGC = 14,
    kBGAandBBCorBGCandBBA = 15
  };

  virtual Short_t  GetNbPMV0A() const = 0;
  virtual Short_t  GetNbPMV0C() const = 0;
  virtual Float_t  GetMTotV0A() const = 0;
  virtual Float_t  GetMTotV0C() const = 0; 
  virtual Float_t  GetMRingV0A(Int_t ring) const = 0;
  virtual Float_t  GetMRingV0C(Int_t ring) const = 0;

  virtual Float_t  GetMultiplicity(Int_t i) const = 0;
  virtual Float_t  GetMultiplicityV0A(Int_t i) const = 0;
  virtual Float_t  GetMultiplicityV0C(Int_t i) const = 0;    

  virtual Bool_t   BBTriggerV0A(Int_t i) const = 0;
  virtual Bool_t   BGTriggerV0A(Int_t i) const = 0;
  virtual Bool_t   BBTriggerV0C(Int_t i) const = 0;
  virtual Bool_t   BGTriggerV0C(Int_t i) const = 0;  
  virtual Bool_t   GetBBFlag(Int_t i) const = 0;
  virtual Bool_t   GetBGFlag(Int_t i) const = 0;

  virtual Float_t  GetV0ATime() const = 0;
  virtual Float_t  GetV0CTime() const = 0;

  virtual Decision GetV0ADecision() const = 0;
  virtual Decision GetV0CDecision() const = 0;

  virtual UShort_t GetTriggerChargeA() const = 0;
  virtual UShort_t GetTriggerChargeC() const = 0;
  virtual UShort_t GetTriggerBits() const = 0;

  static Float_t GetVZEROAvgPhi(Int_t channel)
  { return TMath::Pi() / 8 + TMath::Pi() / 4 * (channel%8); }
  static Float_t GetVZEROEtaMin(Int_t channel);
  static Float_t GetVZEROEtaMax(Int_t channel);

protected:  

  Bool_t OutOfRange(Int_t i, const char *s, Int_t upper) const;
    
  ClassDef(AliVVZERO,2)
};

#endif
 AliVVZERO.h:1
 AliVVZERO.h:2
 AliVVZERO.h:3
 AliVVZERO.h:4
 AliVVZERO.h:5
 AliVVZERO.h:6
 AliVVZERO.h:7
 AliVVZERO.h:8
 AliVVZERO.h:9
 AliVVZERO.h:10
 AliVVZERO.h:11
 AliVVZERO.h:12
 AliVVZERO.h:13
 AliVVZERO.h:14
 AliVVZERO.h:15
 AliVVZERO.h:16
 AliVVZERO.h:17
 AliVVZERO.h:18
 AliVVZERO.h:19
 AliVVZERO.h:20
 AliVVZERO.h:21
 AliVVZERO.h:22
 AliVVZERO.h:23
 AliVVZERO.h:24
 AliVVZERO.h:25
 AliVVZERO.h:26
 AliVVZERO.h:27
 AliVVZERO.h:28
 AliVVZERO.h:29
 AliVVZERO.h:30
 AliVVZERO.h:31
 AliVVZERO.h:32
 AliVVZERO.h:33
 AliVVZERO.h:34
 AliVVZERO.h:35
 AliVVZERO.h:36
 AliVVZERO.h:37
 AliVVZERO.h:38
 AliVVZERO.h:39
 AliVVZERO.h:40
 AliVVZERO.h:41
 AliVVZERO.h:42
 AliVVZERO.h:43
 AliVVZERO.h:44
 AliVVZERO.h:45
 AliVVZERO.h:46
 AliVVZERO.h:47
 AliVVZERO.h:48
 AliVVZERO.h:49
 AliVVZERO.h:50
 AliVVZERO.h:51
 AliVVZERO.h:52
 AliVVZERO.h:53
 AliVVZERO.h:54
 AliVVZERO.h:55
 AliVVZERO.h:56
 AliVVZERO.h:57
 AliVVZERO.h:58
 AliVVZERO.h:59
 AliVVZERO.h:60
 AliVVZERO.h:61
 AliVVZERO.h:62
 AliVVZERO.h:63
 AliVVZERO.h:64
 AliVVZERO.h:65
 AliVVZERO.h:66
 AliVVZERO.h:67
 AliVVZERO.h:68
 AliVVZERO.h:69
 AliVVZERO.h:70
 AliVVZERO.h:71
 AliVVZERO.h:72
 AliVVZERO.h:73
 AliVVZERO.h:74
 AliVVZERO.h:75
 AliVVZERO.h:76
 AliVVZERO.h:77
 AliVVZERO.h:78
 AliVVZERO.h:79
 AliVVZERO.h:80
 AliVVZERO.h:81
 AliVVZERO.h:82
 AliVVZERO.h:83
 AliVVZERO.h:84
 AliVVZERO.h:85
 AliVVZERO.h:86
 AliVVZERO.h:87
 AliVVZERO.h:88
 AliVVZERO.h:89
 AliVVZERO.h:90
 AliVVZERO.h:91