Corrected protection.
[u/mrichter/AliRoot.git] / STEER / AliESDVZERO.h
1 #ifndef ALIESDVZERO_H
2 #define ALIESDVZERO_H
3
4 #include <TObject.h>
5
6 class AliESDVZERO : public TObject 
7 {
8 public:
9   AliESDVZERO();
10   AliESDVZERO(const AliESDVZERO&o);
11   AliESDVZERO(UInt_t BBtriggerV0A,   UInt_t BGtriggerV0A,
12               UInt_t BBtriggerV0C,   UInt_t BGtriggerV0C,
13               Float_t *Multiplicity, Float_t *Adc, 
14               Float_t *Time, Float_t *Width, Bool_t *BBFlag, Bool_t *BGFlag);
15   virtual void Copy(TObject &obj) const;
16
17   virtual ~AliESDVZERO() {};
18
19   enum {
20     kCorrectedLeadingTime = BIT(14),
21     kTriggerBitsFilled = BIT(15),
22     kDecisionFilled = BIT(16),
23     kOnlineBitsFilled = BIT(17)
24   };
25   enum Decision { kV0Invalid = -1, kV0Empty = 0, kV0BB, kV0BG, kV0Fake };
26   
27   // Setters
28   virtual void SetBBtriggerV0A(UInt_t BBtrigger) {fBBtriggerV0A=BBtrigger;}
29   virtual void SetBGtriggerV0A(UInt_t BGtrigger) {fBGtriggerV0A=BGtrigger;}
30   virtual void SetBBtriggerV0C(UInt_t BBtrigger) {fBBtriggerV0C=BBtrigger;}
31   virtual void SetBGtriggerV0C(UInt_t BGtrigger) {fBGtriggerV0C=BGtrigger;}
32   virtual void SetMultiplicity(Float_t Multiplicity[64])
33     {for(Int_t i=0;i<64;i++) fMultiplicity[i]=Multiplicity[i];}
34   virtual void SetADC(Float_t adc[64])
35     {for(Int_t i=0;i<64;i++) fAdc[i]=adc[i];}
36   virtual void SetTime(Float_t time[64])
37     {for(Int_t i=0;i<64;i++) fTime[i]=time[i];}
38   virtual void SetWidth(Float_t width[64])
39     {for(Int_t i=0;i<64;i++) fWidth[i]=width[i];}    
40   virtual void SetBBFlag(Bool_t BBFlag[64])
41     {for(Int_t i=0;i<64;i++) fBBFlag[i]=BBFlag[i];} 
42   virtual void SetBGFlag(Bool_t BGFlag[64])
43     {for(Int_t i=0;i<64;i++) fBGFlag[i]=BGFlag[i];}   
44
45   void SetV0ATime(Float_t time) {fV0ATime = time;}
46   void SetV0CTime(Float_t time) {fV0CTime = time;}
47   void SetV0ATimeError(Float_t err) {fV0ATimeError = err;}
48   void SetV0CTimeError(Float_t err) {fV0CTimeError = err;}
49
50   void SetV0ADecision(Decision des) {fV0ADecision = des;}
51   void SetV0CDecision(Decision des) {fV0CDecision = des;}
52          
53   // Getters  
54   Short_t  GetNbPMV0A() const;
55   Short_t  GetNbPMV0C() const;
56   Float_t  GetMTotV0A() const;
57   Float_t  GetMTotV0C() const; 
58   Float_t* GetMRingV0A() const;
59   Float_t* GetMRingV0C() const;
60   Float_t  GetMRingV0A(Int_t ring) const;
61   Float_t  GetMRingV0C(Int_t ring) const;
62
63   Float_t  GetMultiplicity(Int_t i) const;
64   Float_t  GetMultiplicityV0A(Int_t i) const;
65   Float_t  GetMultiplicityV0C(Int_t i) const;    
66   Float_t  GetAdc(Int_t i) const;
67   Float_t  GetAdcV0A(Int_t i) const; 
68   Float_t  GetAdcV0C(Int_t i) const;   
69   Float_t  GetTime(Int_t i) const;
70   Float_t  GetTimeV0A(Int_t i) const;   
71   Float_t  GetTimeV0C(Int_t i) const;    
72   Float_t  GetWidth(Int_t i) const;
73   Float_t  GetWidthV0A(Int_t i) const;
74   Float_t  GetWidthV0C(Int_t i) const;
75   Bool_t   BBTriggerV0A(Int_t i) const;
76   Bool_t   BGTriggerV0A(Int_t i) const;
77   Bool_t   BBTriggerV0C(Int_t i) const;
78   Bool_t   BGTriggerV0C(Int_t i) const;  
79   Bool_t   GetBBFlag(Int_t i) const;
80   Bool_t   GetBGFlag(Int_t i) const;
81
82   Float_t  GetV0ATime() const { return fV0ATime; }
83   Float_t  GetV0CTime() const { return fV0CTime; }
84   Float_t  GetV0ATimeError() const { return fV0ATimeError; }
85   Float_t  GetV0CTimeError() const { return fV0CTimeError; }
86
87   Decision GetV0ADecision() const { return fV0ADecision; }
88   Decision GetV0CDecision() const { return fV0CDecision; }
89   
90   Bool_t OutOfRange(Int_t i, const char *s, Int_t upper) const;
91   AliESDVZERO &operator=(const AliESDVZERO& source);
92     
93 protected:
94
95   UInt_t  fBBtriggerV0A;     // bit mask for Beam-Beam trigger in V0A
96   UInt_t  fBGtriggerV0A;     // bit mask for Beam-Gas trigger in V0A
97   UInt_t  fBBtriggerV0C;     // bit mask for Beam-Beam trigger in V0C
98   UInt_t  fBGtriggerV0C;     // bit mask for Beam-Gas trigger in V0C
99
100   Float_t fMultiplicity[64]; //  multiplicity for each channel
101   Float_t fAdc[64];          //  adc for each channel
102   Float_t fTime[64];         //  time for each channel
103   Float_t fWidth[64];        //  time width for each channel
104   Bool_t  fBBFlag[64];       //  BB Flags from Online V0 Electronics
105   Bool_t  fBGFlag[64];       //  BG Flags from Online V0 Electronics
106
107   Float_t fV0ATime;          // Average time in V0A
108   Float_t fV0CTime;          // Average time in V0C
109   Float_t fV0ATimeError;     // Error in the average time in V0A
110   Float_t fV0CTimeError;     // Error in the average time in V0C
111
112   Decision fV0ADecision;     // V0A final decision based on average time of channels
113   Decision fV0CDecision;     // V0C final decision based on average time of channels
114
115   ClassDef(AliESDVZERO,8)
116 };
117
118 #endif