]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONGlobalTrigger.cxx
track matching macros from Alberto
[u/mrichter/AliRoot.git] / MUON / AliMUONGlobalTrigger.cxx
CommitLineData
a9e2aefa 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
8c343c7c 14 **************************************************************************/
15
e516b01d 16
30178c30 17/* $Id$ */
a9e2aefa 18
d1525c79 19
a9e2aefa 20#include "AliMUONGlobalTrigger.h"
eba3379e 21#include <assert.h>
22#include "AliLog.h"
23#include "AliMUONLocalStruct.h"
a9e2aefa 24
5398f946 25/// \class AliMUONGlobalTrigger
26/// Global Trigger algorithm data output.
27/// Built from Local and Regional algorithms. \n
28/// Update for copy & assigment operator,
29/// add SetGlobalPattern and GetGlobalPattern method for rawdata
30/// (Ch. Finck)
31/// \author Ph. Crochet
32
33/// \cond CLASSIMP
925e6570 34ClassImp(AliMUONGlobalTrigger)
5398f946 35/// \endcond
8d7dfec2 36
a9e2aefa 37//----------------------------------------------------------------------
38AliMUONGlobalTrigger::AliMUONGlobalTrigger()
8d7dfec2 39 : TObject(),
40 fSinglePlusLpt(0),
41 fSinglePlusHpt(0),
42 fSinglePlusApt(0),
a9e2aefa 43
8d7dfec2 44 fSingleMinusLpt(0),
45 fSingleMinusHpt(0),
46 fSingleMinusApt(0),
a9e2aefa 47
8d7dfec2 48 fSingleUndefLpt(0),
49 fSingleUndefHpt(0),
50 fSingleUndefApt(0),
51
52 fPairUnlikeLpt(0),
53 fPairUnlikeHpt(0),
54 fPairUnlikeApt(0),
55
56 fPairLikeLpt(0),
57 fPairLikeHpt(0),
58 fPairLikeApt(0)
59{
5398f946 60 /// Default constructor
a9e2aefa 61}
5398f946 62
e9b63742 63//----------------------------------------------------------------------
30178c30 64AliMUONGlobalTrigger::AliMUONGlobalTrigger(const AliMUONGlobalTrigger& theMUONGlobalTrig)
5398f946 65 : TObject(theMUONGlobalTrig),
e9b63742 66
5398f946 67 fSinglePlusLpt(theMUONGlobalTrig.fSinglePlusLpt),
68 fSinglePlusHpt(theMUONGlobalTrig.fSinglePlusHpt),
69 fSinglePlusApt(theMUONGlobalTrig.fSinglePlusApt),
70
71 fSingleMinusLpt(theMUONGlobalTrig.fSingleMinusLpt),
72 fSingleMinusHpt(theMUONGlobalTrig.fSingleMinusHpt),
73 fSingleMinusApt(theMUONGlobalTrig.fSingleMinusApt),
74
75 fSingleUndefLpt(theMUONGlobalTrig.fSingleUndefLpt),
76 fSingleUndefHpt(theMUONGlobalTrig.fSingleUndefHpt),
77 fSingleUndefApt(theMUONGlobalTrig.fSingleUndefApt),
78
79 fPairUnlikeLpt(theMUONGlobalTrig.fPairUnlikeLpt),
80 fPairUnlikeHpt(theMUONGlobalTrig.fPairUnlikeHpt),
81 fPairUnlikeApt(theMUONGlobalTrig.fPairUnlikeApt),
82
83 fPairLikeLpt(theMUONGlobalTrig.fPairLikeLpt),
84 fPairLikeHpt(theMUONGlobalTrig.fPairLikeHpt),
85 fPairLikeApt(theMUONGlobalTrig.fPairLikeApt)
86{
87 /// Copy constructor
88}
89
90//----------------------------------------------------------------------
91AliMUONGlobalTrigger::~AliMUONGlobalTrigger()
92{
93 /// Destructor
e9b63742 94}
95
96//----------------------------------------------------------------------
30178c30 97AliMUONGlobalTrigger& AliMUONGlobalTrigger::operator=(const AliMUONGlobalTrigger& theMUONGlobalTrig)
e9b63742 98{
5398f946 99 /// Assignement operator;
100 /// equal operator (useful for non-pointer member in TClonesArray)
8d7dfec2 101
30178c30 102 if (this == &theMUONGlobalTrig)
e9b63742 103 return *this;
30178c30 104
105 // base class assignement
106 TObject::operator=(theMUONGlobalTrig);
e9b63742 107
30178c30 108 fSinglePlusLpt = theMUONGlobalTrig.fSinglePlusLpt;
109 fSinglePlusHpt = theMUONGlobalTrig.fSinglePlusHpt;
110 fSinglePlusApt = theMUONGlobalTrig.fSinglePlusApt;
e9b63742 111
30178c30 112 fSingleMinusLpt = theMUONGlobalTrig.fSingleMinusLpt;
113 fSingleMinusHpt = theMUONGlobalTrig.fSingleMinusHpt;
114 fSingleMinusApt = theMUONGlobalTrig.fSingleMinusApt;
e9b63742 115
30178c30 116 fSingleUndefLpt = theMUONGlobalTrig.fSingleUndefLpt;
117 fSingleUndefHpt = theMUONGlobalTrig.fSingleUndefHpt;
118 fSingleUndefApt = theMUONGlobalTrig.fSingleUndefApt;
e9b63742 119
30178c30 120 fPairUnlikeLpt = theMUONGlobalTrig.fPairUnlikeLpt;
121 fPairUnlikeHpt = theMUONGlobalTrig.fPairUnlikeHpt;
122 fPairUnlikeApt = theMUONGlobalTrig.fPairUnlikeApt;
e9b63742 123
30178c30 124 fPairLikeLpt = theMUONGlobalTrig.fPairLikeLpt;
125 fPairLikeHpt = theMUONGlobalTrig.fPairLikeHpt;
126 fPairLikeApt = theMUONGlobalTrig.fPairLikeApt;
e9b63742 127
128 return *this;
129}
130
a9e2aefa 131//----------------------------------------------------------------------
132AliMUONGlobalTrigger::AliMUONGlobalTrigger(Int_t *singlePlus,
133 Int_t *singleMinus,
134 Int_t *singleUndef,
135 Int_t *pairUnlike, Int_t *pairLike)
5398f946 136 : TObject(),
137
138 fSinglePlusLpt(singlePlus[0]),
139 fSinglePlusHpt(singlePlus[1]),
140 fSinglePlusApt(singlePlus[2]),
a9e2aefa 141
5398f946 142 fSingleMinusLpt(singleMinus[0]),
143 fSingleMinusHpt(singleMinus[1]),
144 fSingleMinusApt(singleMinus[2]),
a9e2aefa 145
5398f946 146 fSingleUndefLpt(singleUndef[0]),
147 fSingleUndefHpt(singleUndef[1]),
148 fSingleUndefApt(singleUndef[2]),
a9e2aefa 149
5398f946 150 fPairUnlikeLpt(pairUnlike[0]),
151 fPairUnlikeHpt(pairUnlike[1]),
152 fPairUnlikeApt(pairUnlike[2]),
a9e2aefa 153
5398f946 154 fPairLikeLpt(pairLike[0]),
155 fPairLikeHpt(pairLike[1]),
156 fPairLikeApt(pairLike[2])
157
158{
159 /// Set the Global Trigger object
a9e2aefa 160}
402fb06e 161
8d7dfec2 162//-----------------------------------------------------------
1908473e 163void AliMUONGlobalTrigger::SetGlobalPattern(Int_t gloTrigPat)
8d7dfec2 164{
5398f946 165 /// Set class member from global pattern
166 /// coming from rawdata
1908473e 167 /// [Hpt, Lpt] with [+, -, LS, US]
5398f946 168
8d7dfec2 169 fSinglePlusLpt = (gloTrigPat ) & 0x1;
170 fSinglePlusHpt = (gloTrigPat >> 1) & 0x1;
171 fSinglePlusApt = (gloTrigPat >> 2) & 0x1;
172
173 fSingleMinusLpt = (gloTrigPat >> 3) & 0x1;
174 fSingleMinusHpt = (gloTrigPat >> 4) & 0x1;
175 fSingleMinusApt = (gloTrigPat >> 5) & 0x1;
176
177 fSingleUndefLpt = (gloTrigPat >> 6) & 0x1;
178 fSingleUndefHpt = (gloTrigPat >> 7) & 0x1;
179 fSingleUndefApt = (gloTrigPat >> 8) & 0x1;
180
181 fPairUnlikeLpt = (gloTrigPat >> 9) & 0x1;
182 fPairUnlikeHpt = (gloTrigPat >> 10) & 0x1;
183 fPairUnlikeApt = (gloTrigPat >> 11) & 0x1;
184
185 fPairLikeLpt = (gloTrigPat >> 12) & 0x1;
186 fPairLikeHpt = (gloTrigPat >> 13) & 0x1;
187 fPairLikeApt = (gloTrigPat >> 14) & 0x1;
402fb06e 188
8d7dfec2 189}
1908473e 190//-----------------------------------------------------------
191void AliMUONGlobalTrigger::SetGlobalPattern(UShort_t globalResponse)
192{
193 /// Set class member from global response
194 /// coming from trigger electronics
195 /// should be unformized with rawdata (->oct 06)
196 /// [Hpt, Lpt, Apt] with [+, -, US, LS]
197 fSinglePlusLpt = ((globalResponse & 0xC0) >> 6) == 2;
198 fSinglePlusHpt = ((globalResponse & 0xC00) >> 10) == 2;
199 fSinglePlusApt = ((globalResponse & 0xC) >> 2) == 2;
200
201 fSingleMinusLpt = ((globalResponse & 0xC0) >> 6) == 1;
202 fSingleMinusHpt = ((globalResponse & 0xC00) >> 10) == 1;
203 fSingleMinusApt = ((globalResponse & 0xC) >> 2) == 1;
204
205 fSingleUndefLpt = ((globalResponse & 0xC0) >> 6) == 3;
206 fSingleUndefHpt = ((globalResponse & 0xC00) >> 10) == 3;
207 fSingleUndefApt = ((globalResponse & 0xC) >> 2) == 3;
402fb06e 208
1908473e 209 fPairUnlikeLpt = (globalResponse & 0x10) >> 4;
210 fPairUnlikeHpt = (globalResponse & 0x100) >> 8;
211 fPairUnlikeApt = (globalResponse & 0x1);
212
213 fPairLikeLpt = (globalResponse & 0x20) >> 5;
214 fPairLikeHpt = (globalResponse & 0x200) >> 9;
215 fPairLikeApt = (globalResponse & 0x2) >> 1;
216
217}
218//-----------------------------------------------------------
219void AliMUONGlobalTrigger::SetFromGlobalResponse(UChar_t globalResponse)
220{
221 /// Set class members from global response
222 /// coming from rawdata
223 /// [US:2, LS:2, Single:2] with [Hpt, Lpt]
224 /// remove Apt
225
226 // don't have the information anymore of the sign
227 fSinglePlusLpt = fSingleMinusLpt = globalResponse & 0x1;
228 fSinglePlusHpt = fSingleMinusHpt = (globalResponse >> 1) & 0x1;
229
230 fPairUnlikeLpt = (globalResponse >> 4) & 0x1;
231 fPairUnlikeHpt = (globalResponse >> 5) & 0x1;
232
233 fPairLikeLpt = (globalResponse >> 2) & 0x1;
234 fPairLikeHpt = (globalResponse >> 3) & 0x1;
235
236}
8d7dfec2 237//-----------------------------------------------------------
238Int_t AliMUONGlobalTrigger::GetGlobalPattern() const
239{
5398f946 240 /// Global trigger pattern calculation
241 /// from class member values
402fb06e 242
8d7dfec2 243 Int_t gloTrigPat = 0;
402fb06e 244
8d7dfec2 245 if (SinglePlusLpt()) gloTrigPat|= 0x1;
246 if (SinglePlusHpt()) gloTrigPat|= 0x2;
247 if (SinglePlusApt()) gloTrigPat|= 0x4;
248
249 if (SingleMinusLpt()) gloTrigPat|= 0x8;
250 if (SingleMinusHpt()) gloTrigPat|= 0x10;
251 if (SingleMinusApt()) gloTrigPat|= 0x20;
252
253 if (SingleUndefLpt()) gloTrigPat|= 0x40;
254 if (SingleUndefHpt()) gloTrigPat|= 0x80;
255 if (SingleUndefApt()) gloTrigPat|= 0x100;
256
257 if (PairUnlikeLpt()) gloTrigPat|= 0x200;
258 if (PairUnlikeHpt()) gloTrigPat|= 0x400;
259 if (PairUnlikeApt()) gloTrigPat|= 0x800;
260
261 if (PairLikeLpt()) gloTrigPat|= 0x1000;
262 if (PairLikeHpt()) gloTrigPat|= 0x2000;
263 if (PairLikeApt()) gloTrigPat|= 0x4000;
264
265 return gloTrigPat;
266
267}
402fb06e 268
1908473e 269
270//-----------------------------------------------------------
271UChar_t AliMUONGlobalTrigger::GetGlobalResponse() const
272{
273 /// Global trigger response
274 /// from class member values
275 /// [US:2, LS:2, Single:2] with [Hpt, Lpt]
276 /// remove Apt
277
278 UChar_t response = 0;
279 UChar_t respUS = 0;
280 UChar_t respLS = 0;
281 UChar_t respS = 0;
282
283 if (SinglePlusLpt() || SingleMinusLpt()) respS |= 0x1;
284 if (SinglePlusHpt() || SingleMinusHpt()) respS |= 0x2;
285
286 if (PairLikeLpt()) respLS |= 0x1;
287 if (PairLikeHpt()) respLS |= 0x1;
288 respLS <<= 2;
289
290 if (PairUnlikeLpt()) respUS |= 0x1;
291 if (PairUnlikeHpt()) respUS |= 0x2;
292 respUS <<= 4;
293
294 response = respUS | respLS | respS;
295
296 return response;
297
298}
eba3379e 299//----------------------------------------------------------------------
300void AliMUONGlobalTrigger::Print(Option_t* opt) const
301{
302 //
303 // Printing Global Trigger information
304 //
305 TString sopt(opt);
306 sopt.ToUpper();
307 if ( sopt.Contains("FULL") ) {
308
309 printf("===================================================\n");
310 printf(" Global Trigger output Low pt High pt All\n");
311 printf(" number of Single Plus :\t");
312 printf("%i\t%i\t%i\t",SinglePlusLpt(),SinglePlusHpt(),SinglePlusApt());
313 printf("\n");
314
315 printf(" number of Single Minus :\t");
316 printf("%i\t%i\t%i\t",SingleMinusLpt(),SingleMinusHpt(),SingleMinusApt());
317 printf("\n");
318
319 printf(" number of Single Undefined :\t");
320 printf("%i\t%i\t%i\t",SingleUndefLpt(),SingleUndefHpt(),SingleUndefApt());
321 printf("\n");
322
323 printf(" number of UnlikeSign pair :\t");
324 printf("%i\t%i\t%i\t",PairUnlikeLpt(),PairUnlikeHpt(),PairUnlikeApt());
325 printf("\n");
326
327 printf(" number of LikeSign pair :\t");
328 printf("%i\t%i\t%i\t",PairLikeLpt(),PairLikeHpt(),PairLikeApt());
329 printf("\n");
330
331 printf("===================================================\n");
332 }
333}
402fb06e 334
335