]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONLocalTrigger.cxx
Corrected for a double counting for charges >1
[u/mrichter/AliRoot.git] / MUON / AliMUONLocalTrigger.cxx
... / ...
CommitLineData
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. *
14 **************************************************************************/
15
16/* $Id$ */
17
18
19#include "AliMUONLocalTrigger.h"
20#include "AliLog.h"
21#include "AliMUONLocalStruct.h"
22#include <Riostream.h>
23#include <TArrayS.h>
24
25//-----------------------------------------------------------------------------
26/// \class AliMUONLocalTrigger
27/// Local Trigger algorithm data outputs
28/// (contains local trigger decision and bit patterns) \n
29/// Add SetLocalStruct method for rawdata (Ch. Finck)
30/// \author Ph. Crochet
31//-----------------------------------------------------------------------------
32
33/// \cond CLASSIMP
34ClassImp(AliMUONLocalTrigger)
35/// \endcond
36
37//----------------------------------------------------------------------
38AliMUONLocalTrigger::AliMUONLocalTrigger()
39 : TObject(),
40 fLoCircuit(0),
41 fLoStripX(0),
42 fLoDev(0),
43 fLoSdev(1),
44 fLoTrigY(1),
45 fLoStripY(15),
46 fLoLpt(0),
47 fLoHpt(0),
48
49 fX1Pattern(0),
50 fX2Pattern(0),
51 fX3Pattern(0),
52 fX4Pattern(0),
53
54 fY1Pattern(0),
55 fY2Pattern(0),
56 fY3Pattern(0),
57 fY4Pattern(0)
58{
59/// Default constructor
60}
61//----------------------------------------------------------------------
62AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
63 : TObject(theMUONLocalTrig),
64 fLoCircuit(theMUONLocalTrig.fLoCircuit),
65 fLoStripX(theMUONLocalTrig.fLoStripX),
66 fLoDev(theMUONLocalTrig.fLoDev),
67 fLoSdev(theMUONLocalTrig.fLoSdev),
68 fLoTrigY(theMUONLocalTrig.fLoTrigY),
69 fLoStripY(theMUONLocalTrig.fLoStripY),
70 fLoLpt(theMUONLocalTrig.fLoLpt),
71 fLoHpt(theMUONLocalTrig.fLoHpt),
72
73 fX1Pattern(theMUONLocalTrig.fX1Pattern),
74 fX2Pattern(theMUONLocalTrig.fX2Pattern),
75 fX3Pattern(theMUONLocalTrig.fX3Pattern),
76 fX4Pattern(theMUONLocalTrig.fX4Pattern),
77
78 fY1Pattern(theMUONLocalTrig.fY1Pattern),
79 fY2Pattern(theMUONLocalTrig.fY2Pattern),
80 fY3Pattern(theMUONLocalTrig.fY3Pattern),
81 fY4Pattern(theMUONLocalTrig.fY4Pattern)
82{
83/// Copy constructor (useful for TClonesArray)
84
85}
86
87//----------------------------------------------------------------------
88AliMUONLocalTrigger::~AliMUONLocalTrigger()
89{
90/// Destructor
91}
92
93//----------------------------------------------------------------------
94AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
95{
96/// Assigment operator;
97/// equal operator (useful for non-pointer member in TClonesArray)
98
99 if (this == &theMUONLocalTrig)
100 return *this;
101
102 // base class assignement
103 TObject::operator=(theMUONLocalTrig);
104
105 fLoCircuit = theMUONLocalTrig.fLoCircuit;
106 fLoStripX = theMUONLocalTrig.fLoStripX;
107 fLoDev = theMUONLocalTrig.fLoDev;
108 fLoSdev = theMUONLocalTrig.fLoSdev;
109 fLoTrigY = theMUONLocalTrig.fLoTrigY;
110 fLoStripY = theMUONLocalTrig.fLoStripY;
111 fLoLpt = theMUONLocalTrig.fLoLpt;
112 fLoHpt = theMUONLocalTrig.fLoHpt;
113
114 fX1Pattern = theMUONLocalTrig.fX1Pattern;
115 fX2Pattern = theMUONLocalTrig.fX2Pattern;
116 fX3Pattern = theMUONLocalTrig.fX3Pattern;
117 fX4Pattern = theMUONLocalTrig.fX4Pattern;
118
119 fY1Pattern = theMUONLocalTrig.fY1Pattern;
120 fY2Pattern = theMUONLocalTrig.fY2Pattern;
121 fY3Pattern = theMUONLocalTrig.fY3Pattern;
122 fY4Pattern = theMUONLocalTrig.fY4Pattern;
123
124 return *this;
125}
126
127
128//----------------------------------------------------------------------
129Char_t AliMUONLocalTrigger::GetLoDecision() const
130{
131/// Get local decision
132/// from H(L)pt;
133/// returns local trigger decision
134
135 Char_t rv = (fLoLpt & 0x3);
136 rv |= (fLoHpt << 2) & 0xC;
137
138 return rv;
139}
140
141//___________________________________________
142void AliMUONLocalTrigger::GetXPattern(TArrayS& array) const
143{
144 /// return array of X pattern
145 Short_t vec[4] = {GetX1Pattern(), GetX2Pattern(), GetX3Pattern(), GetX4Pattern()};
146 array.Set(4, vec);
147}
148
149//___________________________________________
150void AliMUONLocalTrigger::GetYPattern(TArrayS& array) const
151{
152 /// return array of Y pattern
153 Short_t vec[4] = {GetY1Pattern(), GetY2Pattern(), GetY3Pattern(), GetY4Pattern()};
154 array.Set(4, vec);
155}
156
157//___________________________________________
158Bool_t
159AliMUONLocalTrigger::IsNull() const
160{
161 /// Whether or not this card has something usefull to say or not
162 return ( fX1Pattern == 0 &&
163 fX2Pattern == 0 &&
164 fX3Pattern == 0 &&
165 fX4Pattern == 0 &&
166 fY1Pattern == 0 &&
167 fY2Pattern == 0 &&
168 fY3Pattern == 0 &&
169 fY4Pattern == 0 );
170}
171
172//----------------------------------------------------------------------
173void AliMUONLocalTrigger::SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct)
174{
175/// Set local trigger info from rawdata localStruct
176
177 // set id'
178 SetLoCircuit(loCircuit);
179
180 // set X, Y, dev, Sdev and TrigY
181 SetLoStripX((Int_t)localStruct.GetXPos());
182 SetLoStripY((Int_t)localStruct.GetYPos());
183 SetLoDev((Int_t)localStruct.GetXDev());
184 SetLoSdev((Int_t)localStruct.GetSXDev());
185 SetLoTrigY((Int_t)localStruct.GetTrigY());
186
187 // set L(H)pt
188 SetLoLpt(localStruct.GetLpt());
189 SetLoHpt(localStruct.GetHpt());
190
191 // set pattern X
192 SetX1Pattern(localStruct.GetX1());
193 SetX2Pattern(localStruct.GetX2());
194 SetX3Pattern(localStruct.GetX3());
195 SetX4Pattern(localStruct.GetX4());
196
197 // set pattern Y
198 SetY1Pattern(localStruct.GetY1());
199 SetY2Pattern(localStruct.GetY2());
200 SetY3Pattern(localStruct.GetY3());
201 SetY4Pattern(localStruct.GetY4());
202
203}
204
205namespace
206{
207 const char* AsString(Int_t t)
208 {
209 switch (t)
210 {
211 case 0:
212 return "no";
213 break;
214 case 1:
215 return "minus";
216 break;
217 case 2:
218 return "plus";
219 break;
220 case 3:
221 return "undef";
222 break;
223 default:
224 return "";
225 break;
226 }
227 }
228}
229
230//----------------------------------------------------------------------
231void AliMUONLocalTrigger::Print(Option_t* opt) const
232{
233/// Printing Local Trigger information
234
235 TString sopt(opt);
236 sopt.ToUpper();
237
238 cout << Form("Circuit %3d Decision %2d StripX %2d Dev %2d(%1d) StripY %2d Lpt %6s Hpt %6s",
239 LoCircuit(), GetLoDecision(),
240 LoStripX(), LoDev(), LoSdev(), LoStripY(),
241 AsString(LoLpt()),AsString(LoHpt()),IsNull()) << endl;
242
243 if ( sopt.Contains("FULL") ) {
244
245 cout << Form("Xpatterns = 0x %04x %04x %04x %04x",
246 fX1Pattern,fX2Pattern,fX3Pattern,fX4Pattern) << endl;
247 cout << Form("Ypatterns = 0x %04x %04x %04x %04x",
248 fY1Pattern,fY2Pattern,fY3Pattern,fY4Pattern) << endl;
249 }
250}
251
252//----------------------------------------------------------------------
253const char*
254AliMUONLocalTrigger::GetName() const
255{
256/// Generate name
257
258 return Form("LocalBoard%3d",LoCircuit());
259}