]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONLocalTrigger.cxx
A new method DrawPMDModule is added
[u/mrichter/AliRoot.git] / MUON / AliMUONLocalTrigger.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. *
14 **************************************************************************/
15
30178c30 16/* $Id$ */
a9e2aefa 17
8d7dfec2 18
a9e2aefa 19#include "AliMUONLocalTrigger.h"
2be06f1e 20#include "AliLog.h"
8d7dfec2 21#include "AliMUONLocalStruct.h"
8aac6cce 22#include <Riostream.h>
89976fde 23#include <TArrayS.h>
a9e2aefa 24
3d1463c8 25//-----------------------------------------------------------------------------
5398f946 26/// \class AliMUONLocalTrigger
8d7dfec2 27/// Local Trigger algorithm data outputs
5398f946 28/// (contains local trigger decision and bit patterns) \n
29/// Add SetLocalStruct method for rawdata (Ch. Finck)
30/// \author Ph. Crochet
3d1463c8 31//-----------------------------------------------------------------------------
5398f946 32
33/// \cond CLASSIMP
34ClassImp(AliMUONLocalTrigger)
35/// \endcond
8d7dfec2 36
a9e2aefa 37//----------------------------------------------------------------------
38AliMUONLocalTrigger::AliMUONLocalTrigger()
8d7dfec2 39 : TObject(),
40 fLoCircuit(0),
41 fLoStripX(0),
42 fLoDev(0),
8aac6cce 43 fLoSdev(1),
44 fLoTrigY(1),
45 fLoStripY(15),
8d7dfec2 46 fLoLpt(0),
47 fLoHpt(0),
8d7dfec2 48
49 fX1Pattern(0),
50 fX2Pattern(0),
51 fX3Pattern(0),
52 fX4Pattern(0),
53
54 fY1Pattern(0),
55 fY2Pattern(0),
56 fY3Pattern(0),
89976fde 57 fY4Pattern(0)
a9e2aefa 58{
5398f946 59/// Default constructor
a9e2aefa 60}
e9b63742 61//----------------------------------------------------------------------
30178c30 62AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
1657f946 63 : TObject(theMUONLocalTrig),
64 fLoCircuit(theMUONLocalTrig.fLoCircuit),
65 fLoStripX(theMUONLocalTrig.fLoStripX),
66 fLoDev(theMUONLocalTrig.fLoDev),
8aac6cce 67 fLoSdev(theMUONLocalTrig.fLoSdev),
68 fLoTrigY(theMUONLocalTrig.fLoTrigY),
1657f946 69 fLoStripY(theMUONLocalTrig.fLoStripY),
70 fLoLpt(theMUONLocalTrig.fLoLpt),
71 fLoHpt(theMUONLocalTrig.fLoHpt),
1657f946 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),
89976fde 81 fY4Pattern(theMUONLocalTrig.fY4Pattern)
e9b63742 82{
5398f946 83/// Copy constructor (useful for TClonesArray)
84
e9b63742 85}
71a2d3aa 86
87//----------------------------------------------------------------------
88AliMUONLocalTrigger::~AliMUONLocalTrigger()
89{
90/// Destructor
91}
92
e9b63742 93//----------------------------------------------------------------------
30178c30 94AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
e9b63742 95{
5398f946 96/// Assigment operator;
97/// equal operator (useful for non-pointer member in TClonesArray)
8d7dfec2 98
30178c30 99 if (this == &theMUONLocalTrig)
e9b63742 100 return *this;
101
30178c30 102 // base class assignement
103 TObject::operator=(theMUONLocalTrig);
104
105 fLoCircuit = theMUONLocalTrig.fLoCircuit;
106 fLoStripX = theMUONLocalTrig.fLoStripX;
107 fLoDev = theMUONLocalTrig.fLoDev;
8aac6cce 108 fLoSdev = theMUONLocalTrig.fLoSdev;
109 fLoTrigY = theMUONLocalTrig.fLoTrigY;
30178c30 110 fLoStripY = theMUONLocalTrig.fLoStripY;
111 fLoLpt = theMUONLocalTrig.fLoLpt;
112 fLoHpt = theMUONLocalTrig.fLoHpt;
e9b63742 113
6dc7fcdf 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
e9b63742 124 return *this;
125}
126
1657f946 127
6dc7fcdf 128//----------------------------------------------------------------------
89976fde 129Char_t AliMUONLocalTrigger::GetLoDecision() const
6dc7fcdf 130{
5398f946 131/// Get local decision
132/// from H(L)pt;
133/// returns local trigger decision
8d7dfec2 134
89976fde 135 Char_t rv = (fLoLpt & 0x3);
136 rv |= (fLoHpt << 2) & 0xC;
402fb06e 137
89976fde 138 return rv;
6dc7fcdf 139}
2be06f1e 140
9016450b 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}
2be06f1e 156
89976fde 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
8d7dfec2 172//----------------------------------------------------------------------
173void AliMUONLocalTrigger::SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct)
174{
5398f946 175/// Set local trigger info from rawdata localStruct
8d7dfec2 176
177 // set id'
178 SetLoCircuit(loCircuit);
179
8aac6cce 180 // set X, Y, dev, Sdev and TrigY
8d7dfec2 181 SetLoStripX((Int_t)localStruct.GetXPos());
182 SetLoStripY((Int_t)localStruct.GetYPos());
183 SetLoDev((Int_t)localStruct.GetXDev());
8aac6cce 184 SetLoSdev((Int_t)localStruct.GetSXDev());
01b3cffa 185 SetLoTrigY((Int_t)localStruct.GetTrigY());
8d7dfec2 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}
eba3379e 204
89976fde 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
eba3379e 230//----------------------------------------------------------------------
231void AliMUONLocalTrigger::Print(Option_t* opt) const
232{
71a2d3aa 233/// Printing Local Trigger information
234
eba3379e 235 TString sopt(opt);
236 sopt.ToUpper();
eba3379e 237
89976fde 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") ) {
eba3379e 244
89976fde 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;
eba3379e 249 }
250}
251
d72d7b9e 252//----------------------------------------------------------------------
253Int_t AliMUONLocalTrigger::GetDeviation() const
254{
255/// return deviation
256
257 Int_t deviation = LoDev();
258 Int_t sign = 0;
259 if ( !LoSdev() && deviation ) sign=-1;
260 if ( !LoSdev() && !deviation ) sign= 0;
261 if ( LoSdev() == 1 ) sign=+1;
262 deviation *= sign;
263 deviation += 15;
264 return deviation;
265}
266
89976fde 267//----------------------------------------------------------------------
268const char*
269AliMUONLocalTrigger::GetName() const
270{
271/// Generate name
272
273 return Form("LocalBoard%3d",LoCircuit());
274}
d72d7b9e 275
276
277//----------------------------------------------------------------------
278Bool_t AliMUONLocalTrigger::IsTrigX()
279{
280/// Trigger response X strips
281 Bool_t xTrig;
282 if ( LoSdev()==1 && LoDev()==0 &&
283 LoStripX()==0) xTrig=kFALSE; // no trigger in X
284 else xTrig = kTRUE; // trigger in X
285 return xTrig;
286}
287
288
289//----------------------------------------------------------------------
290Bool_t AliMUONLocalTrigger::IsTrigY()
291{
292/// Trigger response Y strips
293 Bool_t yTrig;
294 if ( LoTrigY()==1 &&
295 LoStripY()==15 ) yTrig = kFALSE; // no trigger in Y
296 else yTrig = kTRUE; // trigger in Y
297 return yTrig;
298}