2a5a466a80cbc819be455418a7d5289850f89bb0
[u/mrichter/AliRoot.git] / MUON / AliMUONLocalTrigger.cxx
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
23 /// \class AliMUONLocalTrigger
24 /// Local Trigger algorithm data outputs
25 /// (contains local trigger decision and bit patterns)                \n
26 /// Add SetLocalStruct method for rawdata  (Ch. Finck)
27 /// \author Ph. Crochet
28
29 /// \cond CLASSIMP
30 ClassImp(AliMUONLocalTrigger)
31 /// \endcond
32
33 //----------------------------------------------------------------------
34 AliMUONLocalTrigger::AliMUONLocalTrigger()
35   : TObject(), 
36     fLoCircuit(0),
37     fLoStripX(0),
38     fLoDev(0),
39     fLoStripY(0),
40     fLoLpt(0),
41     fLoHpt(0),
42     
43     fX1Pattern(0),
44     fX2Pattern(0),
45     fX3Pattern(0),
46     fX4Pattern(0),
47     
48     fY1Pattern(0),
49     fY2Pattern(0),
50     fY3Pattern(0),
51     fY4Pattern(0),
52     
53     fLoDecision(0)
54 {
55 /// Default constructor
56 }
57 //----------------------------------------------------------------------
58 AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
59     : TObject(theMUONLocalTrig),
60       fLoCircuit(theMUONLocalTrig.fLoCircuit),
61       fLoStripX(theMUONLocalTrig.fLoStripX),
62       fLoDev(theMUONLocalTrig.fLoDev),
63       fLoStripY(theMUONLocalTrig.fLoStripY),
64       fLoLpt(theMUONLocalTrig.fLoLpt),
65       fLoHpt(theMUONLocalTrig.fLoHpt),
66       
67       fX1Pattern(theMUONLocalTrig.fX1Pattern),
68       fX2Pattern(theMUONLocalTrig.fX2Pattern),
69       fX3Pattern(theMUONLocalTrig.fX3Pattern),
70       fX4Pattern(theMUONLocalTrig.fX4Pattern),
71       
72       fY1Pattern(theMUONLocalTrig.fY1Pattern),
73       fY2Pattern(theMUONLocalTrig.fY2Pattern),
74       fY3Pattern(theMUONLocalTrig.fY3Pattern),
75       fY4Pattern(theMUONLocalTrig.fY4Pattern),
76       
77       fLoDecision(theMUONLocalTrig.fLoDecision)
78 {
79 /// Copy constructor (useful for TClonesArray)
80
81 }
82
83 //----------------------------------------------------------------------
84 AliMUONLocalTrigger::~AliMUONLocalTrigger()
85 {
86 /// Destructor
87 }
88
89 //----------------------------------------------------------------------
90 AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
91 {
92 /// Assigment operator;
93 /// equal operator (useful for non-pointer member in TClonesArray)
94
95   if (this == &theMUONLocalTrig)
96     return *this;
97
98   // base class assignement
99   TObject::operator=(theMUONLocalTrig);
100
101   fLoCircuit = theMUONLocalTrig.fLoCircuit;
102   fLoStripX  = theMUONLocalTrig.fLoStripX;         
103   fLoDev     = theMUONLocalTrig.fLoDev;           
104   fLoStripY  = theMUONLocalTrig.fLoStripY;           
105   fLoLpt     = theMUONLocalTrig.fLoLpt;
106   fLoHpt     = theMUONLocalTrig.fLoHpt;
107
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
120   return *this;
121 }
122
123
124 //----------------------------------------------------------------------
125 Char_t AliMUONLocalTrigger::GetLoDecision()
126 {
127 /// Get local decision 
128 /// from H(L)pt;
129 /// returns local trigger decision
130
131   fLoDecision  = (fLoLpt & 0x3);
132   fLoDecision |= (fLoHpt << 2) & 0xC;
133
134   return fLoDecision;
135 }
136
137
138 //----------------------------------------------------------------------
139 void AliMUONLocalTrigger::SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct)
140 {
141 /// Set local trigger info from rawdata localStruct
142
143   // set id'
144   SetLoCircuit(loCircuit);
145
146   // set X, Y dev  
147   SetLoStripX((Int_t)localStruct.GetXPos());
148   SetLoStripY((Int_t)localStruct.GetYPos());
149   SetLoDev((Int_t)localStruct.GetXDev());
150  
151   // set L(H)pt
152   SetLoLpt(localStruct.GetLpt());
153   SetLoHpt(localStruct.GetHpt());
154
155   // set pattern X
156   SetX1Pattern(localStruct.GetX1());
157   SetX2Pattern(localStruct.GetX2());
158   SetX3Pattern(localStruct.GetX3());
159   SetX4Pattern(localStruct.GetX4());
160
161   // set pattern Y
162   SetY1Pattern(localStruct.GetY1());
163   SetY2Pattern(localStruct.GetY2());
164   SetY3Pattern(localStruct.GetY3());
165   SetY4Pattern(localStruct.GetY4());
166
167 }
168
169 //----------------------------------------------------------------------
170 void AliMUONLocalTrigger::Print(Option_t* opt) const
171 {
172 /// Printing Local Trigger information
173
174   TString sopt(opt);
175   sopt.ToUpper();
176  
177   if ( sopt.Contains("FULL") ) { 
178
179       printf("<AliMUONLocalTrigger> Circuit %d StripX %d Dev %d StripY %d Lpt %d Hpt %d \n",LoCircuit(),LoStripX(),LoDev(),LoStripY(),LoLpt(),LoHpt());
180
181   }
182 }
183