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 **************************************************************************/
20 #include "AliMUONGlobalTrigger.h"
23 #include "AliMUONLocalStruct.h"
25 /// \class AliMUONGlobalTrigger
26 /// Global Trigger algorithm data output.
27 /// Built from Local and Regional algorithms. \n
28 /// Update for copy & assigment operator,
29 /// add SetGlobalPattern and GetGlobalPattern method for rawdata
31 /// \author Ph. Crochet
34 ClassImp(AliMUONGlobalTrigger)
37 //----------------------------------------------------------------------
38 AliMUONGlobalTrigger::AliMUONGlobalTrigger()
60 /// Default constructor
63 //----------------------------------------------------------------------
64 AliMUONGlobalTrigger::AliMUONGlobalTrigger(const AliMUONGlobalTrigger& theMUONGlobalTrig)
65 : TObject(theMUONGlobalTrig),
67 fSinglePlusLpt(theMUONGlobalTrig.fSinglePlusLpt),
68 fSinglePlusHpt(theMUONGlobalTrig.fSinglePlusHpt),
69 fSinglePlusApt(theMUONGlobalTrig.fSinglePlusApt),
71 fSingleMinusLpt(theMUONGlobalTrig.fSingleMinusLpt),
72 fSingleMinusHpt(theMUONGlobalTrig.fSingleMinusHpt),
73 fSingleMinusApt(theMUONGlobalTrig.fSingleMinusApt),
75 fSingleUndefLpt(theMUONGlobalTrig.fSingleUndefLpt),
76 fSingleUndefHpt(theMUONGlobalTrig.fSingleUndefHpt),
77 fSingleUndefApt(theMUONGlobalTrig.fSingleUndefApt),
79 fPairUnlikeLpt(theMUONGlobalTrig.fPairUnlikeLpt),
80 fPairUnlikeHpt(theMUONGlobalTrig.fPairUnlikeHpt),
81 fPairUnlikeApt(theMUONGlobalTrig.fPairUnlikeApt),
83 fPairLikeLpt(theMUONGlobalTrig.fPairLikeLpt),
84 fPairLikeHpt(theMUONGlobalTrig.fPairLikeHpt),
85 fPairLikeApt(theMUONGlobalTrig.fPairLikeApt)
90 //----------------------------------------------------------------------
91 AliMUONGlobalTrigger::~AliMUONGlobalTrigger()
96 //----------------------------------------------------------------------
97 AliMUONGlobalTrigger& AliMUONGlobalTrigger::operator=(const AliMUONGlobalTrigger& theMUONGlobalTrig)
99 /// Assignement operator;
100 /// equal operator (useful for non-pointer member in TClonesArray)
102 if (this == &theMUONGlobalTrig)
105 // base class assignement
106 TObject::operator=(theMUONGlobalTrig);
108 fSinglePlusLpt = theMUONGlobalTrig.fSinglePlusLpt;
109 fSinglePlusHpt = theMUONGlobalTrig.fSinglePlusHpt;
110 fSinglePlusApt = theMUONGlobalTrig.fSinglePlusApt;
112 fSingleMinusLpt = theMUONGlobalTrig.fSingleMinusLpt;
113 fSingleMinusHpt = theMUONGlobalTrig.fSingleMinusHpt;
114 fSingleMinusApt = theMUONGlobalTrig.fSingleMinusApt;
116 fSingleUndefLpt = theMUONGlobalTrig.fSingleUndefLpt;
117 fSingleUndefHpt = theMUONGlobalTrig.fSingleUndefHpt;
118 fSingleUndefApt = theMUONGlobalTrig.fSingleUndefApt;
120 fPairUnlikeLpt = theMUONGlobalTrig.fPairUnlikeLpt;
121 fPairUnlikeHpt = theMUONGlobalTrig.fPairUnlikeHpt;
122 fPairUnlikeApt = theMUONGlobalTrig.fPairUnlikeApt;
124 fPairLikeLpt = theMUONGlobalTrig.fPairLikeLpt;
125 fPairLikeHpt = theMUONGlobalTrig.fPairLikeHpt;
126 fPairLikeApt = theMUONGlobalTrig.fPairLikeApt;
131 //----------------------------------------------------------------------
132 AliMUONGlobalTrigger::AliMUONGlobalTrigger(Int_t *singlePlus,
135 Int_t *pairUnlike, Int_t *pairLike)
138 fSinglePlusLpt(singlePlus[0]),
139 fSinglePlusHpt(singlePlus[1]),
140 fSinglePlusApt(singlePlus[2]),
142 fSingleMinusLpt(singleMinus[0]),
143 fSingleMinusHpt(singleMinus[1]),
144 fSingleMinusApt(singleMinus[2]),
146 fSingleUndefLpt(singleUndef[0]),
147 fSingleUndefHpt(singleUndef[1]),
148 fSingleUndefApt(singleUndef[2]),
150 fPairUnlikeLpt(pairUnlike[0]),
151 fPairUnlikeHpt(pairUnlike[1]),
152 fPairUnlikeApt(pairUnlike[2]),
154 fPairLikeLpt(pairLike[0]),
155 fPairLikeHpt(pairLike[1]),
156 fPairLikeApt(pairLike[2])
159 /// Set the Global Trigger object
162 //-----------------------------------------------------------
163 void AliMUONGlobalTrigger:: SetGlobalPattern(Int_t gloTrigPat)
165 /// Set class member from global pattern
166 /// coming from rawdata
168 fSinglePlusLpt = (gloTrigPat ) & 0x1;
169 fSinglePlusHpt = (gloTrigPat >> 1) & 0x1;
170 fSinglePlusApt = (gloTrigPat >> 2) & 0x1;
172 fSingleMinusLpt = (gloTrigPat >> 3) & 0x1;
173 fSingleMinusHpt = (gloTrigPat >> 4) & 0x1;
174 fSingleMinusApt = (gloTrigPat >> 5) & 0x1;
176 fSingleUndefLpt = (gloTrigPat >> 6) & 0x1;
177 fSingleUndefHpt = (gloTrigPat >> 7) & 0x1;
178 fSingleUndefApt = (gloTrigPat >> 8) & 0x1;
180 fPairUnlikeLpt = (gloTrigPat >> 9) & 0x1;
181 fPairUnlikeHpt = (gloTrigPat >> 10) & 0x1;
182 fPairUnlikeApt = (gloTrigPat >> 11) & 0x1;
184 fPairLikeLpt = (gloTrigPat >> 12) & 0x1;
185 fPairLikeHpt = (gloTrigPat >> 13) & 0x1;
186 fPairLikeApt = (gloTrigPat >> 14) & 0x1;
190 //-----------------------------------------------------------
191 Int_t AliMUONGlobalTrigger::GetGlobalPattern() const
193 /// Global trigger pattern calculation
194 /// from class member values
196 Int_t gloTrigPat = 0;
198 if (SinglePlusLpt()) gloTrigPat|= 0x1;
199 if (SinglePlusHpt()) gloTrigPat|= 0x2;
200 if (SinglePlusApt()) gloTrigPat|= 0x4;
202 if (SingleMinusLpt()) gloTrigPat|= 0x8;
203 if (SingleMinusHpt()) gloTrigPat|= 0x10;
204 if (SingleMinusApt()) gloTrigPat|= 0x20;
206 if (SingleUndefLpt()) gloTrigPat|= 0x40;
207 if (SingleUndefHpt()) gloTrigPat|= 0x80;
208 if (SingleUndefApt()) gloTrigPat|= 0x100;
210 if (PairUnlikeLpt()) gloTrigPat|= 0x200;
211 if (PairUnlikeHpt()) gloTrigPat|= 0x400;
212 if (PairUnlikeApt()) gloTrigPat|= 0x800;
214 if (PairLikeLpt()) gloTrigPat|= 0x1000;
215 if (PairLikeHpt()) gloTrigPat|= 0x2000;
216 if (PairLikeApt()) gloTrigPat|= 0x4000;
222 //----------------------------------------------------------------------
223 void AliMUONGlobalTrigger::Print(Option_t* opt) const
226 // Printing Global Trigger information
230 if ( sopt.Contains("FULL") ) {
232 printf("===================================================\n");
233 printf(" Global Trigger output Low pt High pt All\n");
234 printf(" number of Single Plus :\t");
235 printf("%i\t%i\t%i\t",SinglePlusLpt(),SinglePlusHpt(),SinglePlusApt());
238 printf(" number of Single Minus :\t");
239 printf("%i\t%i\t%i\t",SingleMinusLpt(),SingleMinusHpt(),SingleMinusApt());
242 printf(" number of Single Undefined :\t");
243 printf("%i\t%i\t%i\t",SingleUndefLpt(),SingleUndefHpt(),SingleUndefApt());
246 printf(" number of UnlikeSign pair :\t");
247 printf("%i\t%i\t%i\t",PairUnlikeLpt(),PairUnlikeHpt(),PairUnlikeApt());
250 printf(" number of LikeSign pair :\t");
251 printf("%i\t%i\t%i\t",PairLikeLpt(),PairLikeHpt(),PairLikeApt());
254 printf("===================================================\n");