]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/AliOfflineTrigger.cxx
adding class to trigger offline on content of the ESD
[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>
11
12ClassImp(AliOfflineTrigger)
13
14AliOfflineTrigger::AliOfflineTrigger() :
15 fSPDGFOThreshold(1),
16 fV0AThreshold(1),
17 fV0CThreshold(1)
18{
19}
20
21Bool_t AliOfflineTrigger::IsEventTriggered(const AliESDEvent* aEsd, AliPWG0Helper::Trigger trigger) const
22{
23 // checks if an event has been triggered "offline"
24
25 UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) AliPWG0Helper::kStartOfFlags;
26
27 switch (triggerNoFlags)
28 {
29 case AliPWG0Helper::kAcceptAll:
30 {
31 return kTRUE;
32 break;
33 }
34 case AliPWG0Helper::kMB1:
35 {
36 if (SPDGFOTrigger(aEsd) || V0Trigger(aEsd, kASide) || V0Trigger(aEsd, kCSide))
37 return kTRUE;
38 break;
39 }
40 case AliPWG0Helper::kMB2:
41 {
42 if (SPDGFOTrigger(aEsd) && (V0Trigger(aEsd, kASide) || V0Trigger(aEsd, kCSide)))
43 return kTRUE;
44 break;
45 }
46 case AliPWG0Helper::kMB3:
47 {
48 if (SPDGFOTrigger(aEsd) && V0Trigger(aEsd, kASide) && V0Trigger(aEsd, kCSide))
49 return kTRUE;
50 break;
51 }
52 case AliPWG0Helper::kSPDGFO:
53 {
54 if (SPDGFOTrigger(aEsd))
55 return kTRUE;
56 break;
57 }
58 case AliPWG0Helper::kV0A:
59 {
60 if (V0Trigger(aEsd, kASide))
61 return kTRUE;
62 break;
63 }
64 case AliPWG0Helper::kV0C:
65 {
66 if (V0Trigger(aEsd, kCSide))
67 return kTRUE;
68 break;
69 }
70 case AliPWG0Helper::kZDCA:
71 {
72 if (ZDCTrigger(aEsd, kASide))
73 return kTRUE;
74 break;
75 }
76 case AliPWG0Helper::kZDCC:
77 {
78 if (ZDCTrigger(aEsd, kCSide))
79 return kTRUE;
80 break;
81 }
82 case AliPWG0Helper::kFMD:
83 {
84 if (FMDTrigger(aEsd))
85 return kTRUE;
86 break;
87 }
88 default:
89 {
90 AliFatal(Form("Trigger type %d not implemented", triggerNoFlags));
91 }
92 }
93
94 return kFALSE;
95}
96
97Bool_t AliOfflineTrigger::SPDGFOTrigger(const AliESDEvent* aEsd) const
98{
99 // Returns if the SPD gave a global Fast OR trigger
100
101 Int_t firedChips = 0;
102 const AliMultiplicity* mult = aEsd->GetMultiplicity();
103 if (!mult)
104 {
105 AliError("AliMultiplicity not available");
106 return kFALSE;
107 }
108 firedChips = mult->GetNumberOfFiredChips(0) + mult->GetNumberOfFiredChips(1);
109
110 if (firedChips >= fSPDGFOThreshold)
111 return kTRUE;
112 return kFALSE;
113}
114
115Bool_t AliOfflineTrigger::V0Trigger(const AliESDEvent* aEsd, AliceSide side) const
116{
117 // Returns if the V0 triggered
118
119 AliESDVZERO* v0Data = aEsd->GetVZEROData();
120 if (!v0Data)
121 {
122 AliError("AliESDVZERO not available");
123 return kFALSE;
124 }
125
126 Int_t aCount = 0;
127 Int_t cCount = 0;
128 for (Int_t i=0; i<32; i++)
129 {
130 if (v0Data->BBTriggerV0A(i))
131 aCount++;
132 if (v0Data->BBTriggerV0C(i))
133 cCount++;
134 }
135
136 if (side == kASide && aCount >= fV0AThreshold)
137 return kTRUE;
138 if (side == kCSide && cCount >= fV0CThreshold)
139 return kTRUE;
140 return kFALSE;
141}
142
143Bool_t AliOfflineTrigger::ZDCTrigger(const AliESDEvent* /* aEsd */, AliceSide /* side */) const
144{
145 // Returns if ZDC triggered
146
147 AliFatal("Not implemented");
148
149 return kFALSE;
150}
151
152Bool_t AliOfflineTrigger::FMDTrigger(const AliESDEvent* /* aEsd */) const
153{
154 // Returns if the FMD triggered
155
156 AliFatal("Not implemented");
157
158 return kFALSE;
159}