]>
Commit | Line | Data |
---|---|---|
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 | ||
12 | ClassImp(AliOfflineTrigger) | |
13 | ||
14 | AliOfflineTrigger::AliOfflineTrigger() : | |
15 | fSPDGFOThreshold(1), | |
16 | fV0AThreshold(1), | |
17 | fV0CThreshold(1) | |
18 | { | |
19 | } | |
20 | ||
21 | Bool_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 | ||
97 | Bool_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 | ||
115 | Bool_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 | ||
143 | Bool_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 | ||
152 | Bool_t AliOfflineTrigger::FMDTrigger(const AliESDEvent* /* aEsd */) const | |
153 | { | |
154 | // Returns if the FMD triggered | |
155 | ||
156 | AliFatal("Not implemented"); | |
157 | ||
158 | return kFALSE; | |
159 | } |