1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
19 #include "AliMUONLocalTrigger.h"
21 #include "AliMUONLocalStruct.h"
22 #include <Riostream.h>
25 /// \class AliMUONLocalTrigger
26 /// Local Trigger algorithm data outputs
27 /// (contains local trigger decision and bit patterns) \n
28 /// Add SetLocalStruct method for rawdata (Ch. Finck)
29 /// \author Ph. Crochet
32 ClassImp(AliMUONLocalTrigger)
35 //----------------------------------------------------------------------
36 AliMUONLocalTrigger::AliMUONLocalTrigger()
57 /// Default constructor
59 //----------------------------------------------------------------------
60 AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
61 : TObject(theMUONLocalTrig),
62 fLoCircuit(theMUONLocalTrig.fLoCircuit),
63 fLoStripX(theMUONLocalTrig.fLoStripX),
64 fLoDev(theMUONLocalTrig.fLoDev),
65 fLoSdev(theMUONLocalTrig.fLoSdev),
66 fLoTrigY(theMUONLocalTrig.fLoTrigY),
67 fLoStripY(theMUONLocalTrig.fLoStripY),
68 fLoLpt(theMUONLocalTrig.fLoLpt),
69 fLoHpt(theMUONLocalTrig.fLoHpt),
71 fX1Pattern(theMUONLocalTrig.fX1Pattern),
72 fX2Pattern(theMUONLocalTrig.fX2Pattern),
73 fX3Pattern(theMUONLocalTrig.fX3Pattern),
74 fX4Pattern(theMUONLocalTrig.fX4Pattern),
76 fY1Pattern(theMUONLocalTrig.fY1Pattern),
77 fY2Pattern(theMUONLocalTrig.fY2Pattern),
78 fY3Pattern(theMUONLocalTrig.fY3Pattern),
79 fY4Pattern(theMUONLocalTrig.fY4Pattern)
81 /// Copy constructor (useful for TClonesArray)
85 //----------------------------------------------------------------------
86 AliMUONLocalTrigger::~AliMUONLocalTrigger()
91 //----------------------------------------------------------------------
92 AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
94 /// Assigment operator;
95 /// equal operator (useful for non-pointer member in TClonesArray)
97 if (this == &theMUONLocalTrig)
100 // base class assignement
101 TObject::operator=(theMUONLocalTrig);
103 fLoCircuit = theMUONLocalTrig.fLoCircuit;
104 fLoStripX = theMUONLocalTrig.fLoStripX;
105 fLoDev = theMUONLocalTrig.fLoDev;
106 fLoSdev = theMUONLocalTrig.fLoSdev;
107 fLoTrigY = theMUONLocalTrig.fLoTrigY;
108 fLoStripY = theMUONLocalTrig.fLoStripY;
109 fLoLpt = theMUONLocalTrig.fLoLpt;
110 fLoHpt = theMUONLocalTrig.fLoHpt;
112 fX1Pattern = theMUONLocalTrig.fX1Pattern;
113 fX2Pattern = theMUONLocalTrig.fX2Pattern;
114 fX3Pattern = theMUONLocalTrig.fX3Pattern;
115 fX4Pattern = theMUONLocalTrig.fX4Pattern;
117 fY1Pattern = theMUONLocalTrig.fY1Pattern;
118 fY2Pattern = theMUONLocalTrig.fY2Pattern;
119 fY3Pattern = theMUONLocalTrig.fY3Pattern;
120 fY4Pattern = theMUONLocalTrig.fY4Pattern;
126 //----------------------------------------------------------------------
127 Char_t AliMUONLocalTrigger::GetLoDecision() const
129 /// Get local decision
131 /// returns local trigger decision
133 Char_t rv = (fLoLpt & 0x3);
134 rv |= (fLoHpt << 2) & 0xC;
139 //___________________________________________
140 void AliMUONLocalTrigger::GetXPattern(TArrayS& array) const
142 /// return array of X pattern
143 Short_t vec[4] = {GetX1Pattern(), GetX2Pattern(), GetX3Pattern(), GetX4Pattern()};
147 //___________________________________________
148 void AliMUONLocalTrigger::GetYPattern(TArrayS& array) const
150 /// return array of Y pattern
151 Short_t vec[4] = {GetY1Pattern(), GetY2Pattern(), GetY3Pattern(), GetY4Pattern()};
155 //___________________________________________
157 AliMUONLocalTrigger::IsNull() const
159 /// Whether or not this card has something usefull to say or not
160 return ( fX1Pattern == 0 &&
170 //----------------------------------------------------------------------
171 void AliMUONLocalTrigger::SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct)
173 /// Set local trigger info from rawdata localStruct
176 SetLoCircuit(loCircuit);
178 // set X, Y, dev, Sdev and TrigY
179 SetLoStripX((Int_t)localStruct.GetXPos());
180 SetLoStripY((Int_t)localStruct.GetYPos());
181 SetLoDev((Int_t)localStruct.GetXDev());
182 SetLoSdev((Int_t)localStruct.GetSXDev());
183 SetLoTrigY((Int_t)localStruct.GetTriggerY());
186 SetLoLpt(localStruct.GetLpt());
187 SetLoHpt(localStruct.GetHpt());
190 SetX1Pattern(localStruct.GetX1());
191 SetX2Pattern(localStruct.GetX2());
192 SetX3Pattern(localStruct.GetX3());
193 SetX4Pattern(localStruct.GetX4());
196 SetY1Pattern(localStruct.GetY1());
197 SetY2Pattern(localStruct.GetY2());
198 SetY3Pattern(localStruct.GetY3());
199 SetY4Pattern(localStruct.GetY4());
205 const char* AsString(Int_t t)
228 //----------------------------------------------------------------------
229 void AliMUONLocalTrigger::Print(Option_t* opt) const
231 /// Printing Local Trigger information
236 cout << Form("Circuit %3d Decision %2d StripX %2d Dev %2d(%1d) StripY %2d Lpt %6s Hpt %6s",
237 LoCircuit(), GetLoDecision(),
238 LoStripX(), LoDev(), LoSdev(), LoStripY(),
239 AsString(LoLpt()),AsString(LoHpt()),IsNull()) << endl;
241 if ( sopt.Contains("FULL") ) {
243 cout << Form("Xpatterns = 0x %04x %04x %04x %04x",
244 fX1Pattern,fX2Pattern,fX3Pattern,fX4Pattern) << endl;
245 cout << Form("Ypatterns = 0x %04x %04x %04x %04x",
246 fY1Pattern,fY2Pattern,fY3Pattern,fY4Pattern) << endl;
250 //----------------------------------------------------------------------
252 AliMUONLocalTrigger::GetName() const
256 return Form("LocalBoard%3d",LoCircuit());