]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/AliOfflineTrigger.cxx
Deacresing the size of the log file output (Christian Klein-Boesing)
[u/mrichter/AliRoot.git] / PWG0 / AliOfflineTrigger.cxx
CommitLineData
ff8c4f30 1/* $Id: AliOfflineTrigger.cxx 35782 2009-10-22 11:54:31Z jgrosseo $ */
2
3#include <AliOfflineTrigger.h>
4
5#include <AliLog.h>
6
7#include <AliESDEvent.h>
8
9#include <AliMultiplicity.h>
10#include <AliESDVZERO.h>
c8d3e441 11#include <AliESDZDC.h>
ff8c4f30 12
13ClassImp(AliOfflineTrigger)
14
15AliOfflineTrigger::AliOfflineTrigger() :
16 fSPDGFOThreshold(1),
17 fV0AThreshold(1),
18 fV0CThreshold(1)
19{
20}
21
22Bool_t AliOfflineTrigger::IsEventTriggered(const AliESDEvent* aEsd, AliPWG0Helper::Trigger trigger) const
23{
24 // checks if an event has been triggered "offline"
25
26 UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) AliPWG0Helper::kStartOfFlags;
27
28 switch (triggerNoFlags)
29 {
30 case AliPWG0Helper::kAcceptAll:
31 {
32 return kTRUE;
33 break;
34 }
35 case AliPWG0Helper::kMB1:
36 {
37 if (SPDGFOTrigger(aEsd) || V0Trigger(aEsd, kASide) || V0Trigger(aEsd, kCSide))
38 return kTRUE;
39 break;
40 }
41 case AliPWG0Helper::kMB2:
42 {
43 if (SPDGFOTrigger(aEsd) && (V0Trigger(aEsd, kASide) || V0Trigger(aEsd, kCSide)))
44 return kTRUE;
45 break;
46 }
47 case AliPWG0Helper::kMB3:
48 {
49 if (SPDGFOTrigger(aEsd) && V0Trigger(aEsd, kASide) && V0Trigger(aEsd, kCSide))
50 return kTRUE;
51 break;
52 }
53 case AliPWG0Helper::kSPDGFO:
54 {
55 if (SPDGFOTrigger(aEsd))
56 return kTRUE;
57 break;
58 }
59 case AliPWG0Helper::kV0A:
60 {
61 if (V0Trigger(aEsd, kASide))
62 return kTRUE;
63 break;
64 }
65 case AliPWG0Helper::kV0C:
66 {
67 if (V0Trigger(aEsd, kCSide))
68 return kTRUE;
69 break;
70 }
c8d3e441 71 case AliPWG0Helper::kZDC:
72 {
73 if (ZDCTrigger(aEsd, kASide) || ZDCTrigger(aEsd, kCentralBarrel) || ZDCTrigger(aEsd, kCSide))
74 return kTRUE;
75 break;
76 }
ff8c4f30 77 case AliPWG0Helper::kZDCA:
78 {
79 if (ZDCTrigger(aEsd, kASide))
80 return kTRUE;
81 break;
82 }
83 case AliPWG0Helper::kZDCC:
84 {
85 if (ZDCTrigger(aEsd, kCSide))
86 return kTRUE;
87 break;
88 }
89 case AliPWG0Helper::kFMD:
90 {
91 if (FMDTrigger(aEsd))
92 return kTRUE;
93 break;
94 }
95 default:
96 {
97 AliFatal(Form("Trigger type %d not implemented", triggerNoFlags));
98 }
99 }
100
101 return kFALSE;
102}
103
104Bool_t AliOfflineTrigger::SPDGFOTrigger(const AliESDEvent* aEsd) const
105{
106 // Returns if the SPD gave a global Fast OR trigger
107
108 Int_t firedChips = 0;
109 const AliMultiplicity* mult = aEsd->GetMultiplicity();
110 if (!mult)
111 {
112 AliError("AliMultiplicity not available");
113 return kFALSE;
114 }
115 firedChips = mult->GetNumberOfFiredChips(0) + mult->GetNumberOfFiredChips(1);
116
117 if (firedChips >= fSPDGFOThreshold)
118 return kTRUE;
119 return kFALSE;
120}
121
122Bool_t AliOfflineTrigger::V0Trigger(const AliESDEvent* aEsd, AliceSide side) const
123{
124 // Returns if the V0 triggered
125
126 AliESDVZERO* v0Data = aEsd->GetVZEROData();
127 if (!v0Data)
128 {
129 AliError("AliESDVZERO not available");
130 return kFALSE;
131 }
132
133 Int_t aCount = 0;
134 Int_t cCount = 0;
135 for (Int_t i=0; i<32; i++)
136 {
137 if (v0Data->BBTriggerV0A(i))
138 aCount++;
139 if (v0Data->BBTriggerV0C(i))
140 cCount++;
141 }
142
143 if (side == kASide && aCount >= fV0AThreshold)
144 return kTRUE;
145 if (side == kCSide && cCount >= fV0CThreshold)
146 return kTRUE;
147 return kFALSE;
148}
149
c8d3e441 150Bool_t AliOfflineTrigger::ZDCTrigger(const AliESDEvent* aEsd, AliceSide side) const
ff8c4f30 151{
152 // Returns if ZDC triggered
153
c8d3e441 154 AliESDZDC* zdcData = aEsd->GetESDZDC();
155 if (!zdcData)
156 {
157 AliError("AliESDZDC not available");
158 return kFALSE;
159 }
160
161 UInt_t quality = zdcData->GetESDQuality();
162
163 // from Nora's presentation, general first physics meeting 16.10.09
164 static UInt_t zpc = 0x20;
165 static UInt_t znc = 0x10;
166 static UInt_t zem1 = 0x08;
167 static UInt_t zem2 = 0x04;
168 static UInt_t zpa = 0x02;
169 static UInt_t zna = 0x01;
170
171 if (side == kASide && ((quality & zpa) || (quality & zna)))
172 return kTRUE;
173 if (side == kCentralBarrel && ((quality & zem1) || (quality & zem2)))
174 return kTRUE;
175 if (side == kCSide && ((quality & zpc) || (quality & znc)))
176 return kTRUE;
ff8c4f30 177
178 return kFALSE;
179}
180
181Bool_t AliOfflineTrigger::FMDTrigger(const AliESDEvent* /* aEsd */) const
182{
183 // Returns if the FMD triggered
184
185 AliFatal("Not implemented");
186
187 return kFALSE;
188}