]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONLocalTrigger.cxx
- Adapted comments for Doxygen
[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 <assert.h>
21#include "AliLog.h"
8d7dfec2 22#include "AliMUONLocalStruct.h"
a9e2aefa 23
5398f946 24/// \class AliMUONLocalTrigger
8d7dfec2 25/// Local Trigger algorithm data outputs
5398f946 26/// (contains local trigger decision and bit patterns) \n
27/// Add SetLocalStruct method for rawdata (Ch. Finck)
28/// \author Ph. Crochet
29
30/// \cond CLASSIMP
31ClassImp(AliMUONLocalTrigger)
32/// \endcond
8d7dfec2 33
a9e2aefa 34//----------------------------------------------------------------------
35AliMUONLocalTrigger::AliMUONLocalTrigger()
8d7dfec2 36 : TObject(),
37 fLoCircuit(0),
38 fLoStripX(0),
39 fLoDev(0),
40 fLoStripY(0),
41 fLoLpt(0),
42 fLoHpt(0),
43 fLoApt(0),
44
45 fX1Pattern(0),
46 fX2Pattern(0),
47 fX3Pattern(0),
48 fX4Pattern(0),
49
50 fY1Pattern(0),
51 fY2Pattern(0),
52 fY3Pattern(0),
53 fY4Pattern(0),
54
55 fLoDecision(0),
56 fDigits(0)
a9e2aefa 57{
5398f946 58/// Default constructor
a9e2aefa 59}
e9b63742 60//----------------------------------------------------------------------
30178c30 61AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
62 : TObject(theMUONLocalTrig)
e9b63742 63{
5398f946 64/// Copy constructor (useful for TClonesArray)
65
30178c30 66 fLoCircuit = theMUONLocalTrig.fLoCircuit;
67 fLoStripX = theMUONLocalTrig.fLoStripX;
68 fLoDev = theMUONLocalTrig.fLoDev;
69 fLoStripY = theMUONLocalTrig.fLoStripY;
70 fLoLpt = theMUONLocalTrig.fLoLpt;
71 fLoHpt = theMUONLocalTrig.fLoHpt;
72 fLoApt = theMUONLocalTrig.fLoApt;
6dc7fcdf 73
74 fX1Pattern = theMUONLocalTrig.fX1Pattern;
75 fX2Pattern = theMUONLocalTrig.fX2Pattern;
76 fX3Pattern = theMUONLocalTrig.fX3Pattern;
77 fX4Pattern = theMUONLocalTrig.fX4Pattern;
78
79 fY1Pattern = theMUONLocalTrig.fY1Pattern;
80 fY2Pattern = theMUONLocalTrig.fY2Pattern;
81 fY3Pattern = theMUONLocalTrig.fY3Pattern;
82 fY4Pattern = theMUONLocalTrig.fY4Pattern;
83
84 fLoDecision = theMUONLocalTrig.fLoDecision;
2be06f1e 85
86 fDigits = theMUONLocalTrig.fDigits;
e9b63742 87}
88//----------------------------------------------------------------------
30178c30 89AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
e9b63742 90{
5398f946 91/// Assigment operator;
92/// equal operator (useful for non-pointer member in TClonesArray)
8d7dfec2 93
30178c30 94 if (this == &theMUONLocalTrig)
e9b63742 95 return *this;
96
30178c30 97 // base class assignement
98 TObject::operator=(theMUONLocalTrig);
99
100 fLoCircuit = theMUONLocalTrig.fLoCircuit;
101 fLoStripX = theMUONLocalTrig.fLoStripX;
102 fLoDev = theMUONLocalTrig.fLoDev;
103 fLoStripY = theMUONLocalTrig.fLoStripY;
104 fLoLpt = theMUONLocalTrig.fLoLpt;
105 fLoHpt = theMUONLocalTrig.fLoHpt;
106 fLoApt = theMUONLocalTrig.fLoApt;
e9b63742 107
6dc7fcdf 108 fX1Pattern = theMUONLocalTrig.fX1Pattern;
109 fX2Pattern = theMUONLocalTrig.fX2Pattern;
110 fX3Pattern = theMUONLocalTrig.fX3Pattern;
111 fX4Pattern = theMUONLocalTrig.fX4Pattern;
112
113 fY1Pattern = theMUONLocalTrig.fY1Pattern;
114 fY2Pattern = theMUONLocalTrig.fY2Pattern;
115 fY3Pattern = theMUONLocalTrig.fY3Pattern;
116 fY4Pattern = theMUONLocalTrig.fY4Pattern;
117
118 fLoDecision = theMUONLocalTrig.fLoDecision;
119
2be06f1e 120 fDigits = theMUONLocalTrig.fDigits;
121
e9b63742 122 return *this;
123}
124
a9e2aefa 125//----------------------------------------------------------------------
2be06f1e 126AliMUONLocalTrigger::AliMUONLocalTrigger(const Int_t* localtr, const TArrayI& digits)
a9e2aefa 127{
5398f946 128/// Add a local trigger object
129
a9e2aefa 130 fLoCircuit = localtr[0];
131 fLoStripX = localtr[1];
132 fLoDev = localtr[2];
133 fLoStripY = localtr[3];
134 fLoLpt = localtr[4];
135 fLoHpt = localtr[5];
136 fLoApt = localtr[6];
6dc7fcdf 137
138 // keep on with this way
139 fX1Pattern = (UShort_t)localtr[7];
140 fX2Pattern = (UShort_t)localtr[8];
141 fX3Pattern = (UShort_t)localtr[9];
142 fX4Pattern = (UShort_t)localtr[10];
143
144 fY1Pattern = (UShort_t)localtr[11];
145 fY2Pattern = (UShort_t)localtr[12];
146 fY3Pattern = (UShort_t)localtr[13];
147 fY4Pattern = (UShort_t)localtr[14];
2be06f1e 148
149 fDigits = digits;
a9e2aefa 150}
6dc7fcdf 151//----------------------------------------------------------------------
152Char_t AliMUONLocalTrigger::GetLoDecision()
153{
5398f946 154/// Get local decision
155/// from H(L)pt;
156/// returns local trigger decision
8d7dfec2 157
6dc7fcdf 158 fLoDecision = (fLoLpt & 0x3);
159 fLoDecision |= (fLoHpt << 2) & 0xC;
402fb06e 160
6dc7fcdf 161 return fLoDecision;
162}
2be06f1e 163
164//----------------------------------------------------------------------
165void AliMUONLocalTrigger::GetDigit(
8d7dfec2 166 Int_t i, Int_t& chamber, Int_t& cathode, Int_t& digit) const
2be06f1e 167{
5398f946 168/// Returns the i'th digit that fired this circuit.
169/// The number of digits can be found with NumberOfDigits(), that is
170/// i is valid in the range [ 0 , NumberOfDigits() - 1 ]
2be06f1e 171
172 Int_t digitnumber = fDigits[i];
173 DecodeDigitNumber(digitnumber, chamber, cathode, digit);
b8fdc4dd 174}
2be06f1e 175
176//----------------------------------------------------------------------
8d7dfec2 177Int_t AliMUONLocalTrigger::EncodeDigitNumber(Int_t chamber, Int_t cathode,
178 Int_t digit)
2be06f1e 179{
5398f946 180/// Encodes a 32-bit digit number from digit information to be stored
181/// in internal integer arrays. Note that the value of the digit parameter
182/// can not be larger than 0x07FFFFFF.
2be06f1e 183
184 assert( 0 <= cathode && cathode <= 1 );
185 assert( 0 <= chamber && chamber <= 13 );
186
187 if ((digit & 0xF8000000) != 0)
188 {
189 AliErrorGeneral("AliMUONLocalTrigger", Form(
190 "Digit index value is to large: 0x%8.8X. Maximum supported value is 0x07FFFFFF.",
191 cathode, chamber, digit
192 ));
193 return -1;
194 };
195
196 return ((cathode & 0x1) << 31) | ((chamber & 0xF) << 27) | digit;
b8fdc4dd 197}
2be06f1e 198
199//----------------------------------------------------------------------
8d7dfec2 200void AliMUONLocalTrigger::DecodeDigitNumber(Int_t digitnumber, Int_t& chamber,
201 Int_t& cathode, Int_t& digit)
2be06f1e 202{
5398f946 203/// Decodes a digit number into information about the digit.
204/// One can subsequently fetch the digit with
205/// AliMUONDataInterface::Digit(chamber, cathode, digit)
2be06f1e 206
207 cathode = (digitnumber >> 31) & 0x1;
208 chamber = (digitnumber >> 27) & 0xF;
209 digit = digitnumber & 0x7FFFFFF;
b8fdc4dd 210}
2be06f1e 211
8d7dfec2 212//----------------------------------------------------------------------
213void AliMUONLocalTrigger::SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct)
214{
5398f946 215/// Set local trigger info from rawdata localStruct
8d7dfec2 216
217 // set id'
218 SetLoCircuit(loCircuit);
219
220 // set X, Y dev
221 SetLoStripX((Int_t)localStruct.GetXPos());
222 SetLoStripY((Int_t)localStruct.GetYPos());
223 SetLoDev((Int_t)localStruct.GetXDev());
224
225 // set L(H)pt
226 SetLoLpt(localStruct.GetLpt());
227 SetLoHpt(localStruct.GetHpt());
228
229 // set pattern X
230 SetX1Pattern(localStruct.GetX1());
231 SetX2Pattern(localStruct.GetX2());
232 SetX3Pattern(localStruct.GetX3());
233 SetX4Pattern(localStruct.GetX4());
234
235 // set pattern Y
236 SetY1Pattern(localStruct.GetY1());
237 SetY2Pattern(localStruct.GetY2());
238 SetY3Pattern(localStruct.GetY3());
239 SetY4Pattern(localStruct.GetY4());
240
241}
eba3379e 242
243//----------------------------------------------------------------------
244void AliMUONLocalTrigger::Print(Option_t* opt) const
245{
246 //
247 // Printing Local Trigger information
248 //
249 TString sopt(opt);
250 sopt.ToUpper();
251
252 if ( sopt.Contains("FULL") ) {
253
254 printf("<AliMUONLocalTrigger> Circuit %d StripX %d Dev %d StripY %d Lpt %d Hpt %d Apt %d \n",LoCircuit(),LoStripX(),LoDev(),LoStripY(),LoLpt(),LoHpt(),LoApt());
255
256 }
257}
258