* appear in the supporting documentation. The authors make no claims *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
- **************************************************************************/
+ **************************************************************************/
+
-/*
+/* $Id$ */
-*/
#include "AliMUONGlobalTrigger.h"
+#include <assert.h>
+#include "AliLog.h"
+#include "AliMUONLocalStruct.h"
+
+/// \class AliMUONGlobalTrigger
+/// Global Trigger algorithm data output.
+/// Built from Local and Regional algorithms. \n
+/// Update for copy & assigment operator,
+/// add SetGlobalPattern and GetGlobalPattern method for rawdata
+/// (Ch. Finck)
+/// \author Ph. Crochet
+
+/// \cond CLASSIMP
+ClassImp(AliMUONGlobalTrigger)
+/// \endcond
-ClassImp(AliMUONGlobalTrigger);
//----------------------------------------------------------------------
AliMUONGlobalTrigger::AliMUONGlobalTrigger()
-{
-// constructor
- fSinglePlusLpt = 0;
- fSinglePlusHpt = 0;
- fSinglePlusApt = 0;
+ : TObject(),
+ fSinglePlusLpt(0),
+ fSinglePlusHpt(0),
+ fSinglePlusApt(0),
- fSingleMinusLpt = 0;
- fSingleMinusHpt = 0;
- fSingleMinusApt = 0;
+ fSingleMinusLpt(0),
+ fSingleMinusHpt(0),
+ fSingleMinusApt(0),
- fSingleUndefLpt = 0;
- fSingleUndefHpt = 0;
- fSingleUndefApt = 0;
-
- fPairUnlikeLpt = 0;
- fPairUnlikeHpt = 0;
- fPairUnlikeApt = 0;
+ fSingleUndefLpt(0),
+ fSingleUndefHpt(0),
+ fSingleUndefApt(0),
+
+ fPairUnlikeLpt(0),
+ fPairUnlikeHpt(0),
+ fPairUnlikeApt(0),
+
+ fPairLikeLpt(0),
+ fPairLikeHpt(0),
+ fPairLikeApt(0)
+{
+ /// Default constructor
+}
+
+//----------------------------------------------------------------------
+AliMUONGlobalTrigger::AliMUONGlobalTrigger(const AliMUONGlobalTrigger& theMUONGlobalTrig)
+ : TObject(theMUONGlobalTrig),
- fPairLikeLpt = 0;
- fPairLikeHpt = 0;
- fPairLikeApt = 0;
+ fSinglePlusLpt(theMUONGlobalTrig.fSinglePlusLpt),
+ fSinglePlusHpt(theMUONGlobalTrig.fSinglePlusHpt),
+ fSinglePlusApt(theMUONGlobalTrig.fSinglePlusApt),
+
+ fSingleMinusLpt(theMUONGlobalTrig.fSingleMinusLpt),
+ fSingleMinusHpt(theMUONGlobalTrig.fSingleMinusHpt),
+ fSingleMinusApt(theMUONGlobalTrig.fSingleMinusApt),
+
+ fSingleUndefLpt(theMUONGlobalTrig.fSingleUndefLpt),
+ fSingleUndefHpt(theMUONGlobalTrig.fSingleUndefHpt),
+ fSingleUndefApt(theMUONGlobalTrig.fSingleUndefApt),
+
+ fPairUnlikeLpt(theMUONGlobalTrig.fPairUnlikeLpt),
+ fPairUnlikeHpt(theMUONGlobalTrig.fPairUnlikeHpt),
+ fPairUnlikeApt(theMUONGlobalTrig.fPairUnlikeApt),
+
+ fPairLikeLpt(theMUONGlobalTrig.fPairLikeLpt),
+ fPairLikeHpt(theMUONGlobalTrig.fPairLikeHpt),
+ fPairLikeApt(theMUONGlobalTrig.fPairLikeApt)
+{
+ /// Copy constructor
}
+
//----------------------------------------------------------------------
-AliMUONGlobalTrigger::AliMUONGlobalTrigger(const AliMUONGlobalTrigger& MUONGlobalTrig):TObject(MUONGlobalTrig)
+AliMUONGlobalTrigger::~AliMUONGlobalTrigger()
{
-// copy constructor
- fSinglePlusLpt = MUONGlobalTrig.fSinglePlusLpt;
- fSinglePlusHpt = MUONGlobalTrig.fSinglePlusHpt;
- fSinglePlusApt = MUONGlobalTrig.fSinglePlusApt;
-
- fSingleMinusLpt = MUONGlobalTrig.fSingleMinusLpt;
- fSingleMinusHpt = MUONGlobalTrig.fSingleMinusHpt;
- fSingleMinusApt = MUONGlobalTrig.fSingleMinusApt;
-
- fSingleUndefLpt = MUONGlobalTrig.fSingleUndefLpt;
- fSingleUndefHpt = MUONGlobalTrig.fSingleUndefHpt;
- fSingleUndefApt = MUONGlobalTrig.fSingleUndefApt;
-
- fPairUnlikeLpt = MUONGlobalTrig.fPairUnlikeLpt;
- fPairUnlikeHpt = MUONGlobalTrig.fPairUnlikeHpt;
- fPairUnlikeApt = MUONGlobalTrig.fPairUnlikeApt;
-
- fPairLikeLpt = MUONGlobalTrig.fPairLikeLpt;
- fPairLikeHpt = MUONGlobalTrig.fPairLikeHpt;
- fPairLikeApt = MUONGlobalTrig.fPairLikeApt;
+ /// Destructor
}
//----------------------------------------------------------------------
-AliMUONGlobalTrigger& AliMUONGlobalTrigger::operator=(const AliMUONGlobalTrigger& MUONGlobalTrig)
+AliMUONGlobalTrigger& AliMUONGlobalTrigger::operator=(const AliMUONGlobalTrigger& theMUONGlobalTrig)
{
-// equal operator (useful for non-pointer member in TClonesArray)
- if (this == &MUONGlobalTrig)
+ /// Assignement operator;
+ /// equal operator (useful for non-pointer member in TClonesArray)
+
+ if (this == &theMUONGlobalTrig)
return *this;
+
+ // base class assignement
+ TObject::operator=(theMUONGlobalTrig);
- fSinglePlusLpt = MUONGlobalTrig.fSinglePlusLpt;
- fSinglePlusHpt = MUONGlobalTrig.fSinglePlusHpt;
- fSinglePlusApt = MUONGlobalTrig.fSinglePlusApt;
+ fSinglePlusLpt = theMUONGlobalTrig.fSinglePlusLpt;
+ fSinglePlusHpt = theMUONGlobalTrig.fSinglePlusHpt;
+ fSinglePlusApt = theMUONGlobalTrig.fSinglePlusApt;
- fSingleMinusLpt = MUONGlobalTrig.fSingleMinusLpt;
- fSingleMinusHpt = MUONGlobalTrig.fSingleMinusHpt;
- fSingleMinusApt = MUONGlobalTrig.fSingleMinusApt;
+ fSingleMinusLpt = theMUONGlobalTrig.fSingleMinusLpt;
+ fSingleMinusHpt = theMUONGlobalTrig.fSingleMinusHpt;
+ fSingleMinusApt = theMUONGlobalTrig.fSingleMinusApt;
- fSingleUndefLpt = MUONGlobalTrig.fSingleUndefLpt;
- fSingleUndefHpt = MUONGlobalTrig.fSingleUndefHpt;
- fSingleUndefApt = MUONGlobalTrig.fSingleUndefApt;
+ fSingleUndefLpt = theMUONGlobalTrig.fSingleUndefLpt;
+ fSingleUndefHpt = theMUONGlobalTrig.fSingleUndefHpt;
+ fSingleUndefApt = theMUONGlobalTrig.fSingleUndefApt;
- fPairUnlikeLpt = MUONGlobalTrig.fPairUnlikeLpt;
- fPairUnlikeHpt = MUONGlobalTrig.fPairUnlikeHpt;
- fPairUnlikeApt = MUONGlobalTrig.fPairUnlikeApt;
+ fPairUnlikeLpt = theMUONGlobalTrig.fPairUnlikeLpt;
+ fPairUnlikeHpt = theMUONGlobalTrig.fPairUnlikeHpt;
+ fPairUnlikeApt = theMUONGlobalTrig.fPairUnlikeApt;
- fPairLikeLpt = MUONGlobalTrig.fPairLikeLpt;
- fPairLikeHpt = MUONGlobalTrig.fPairLikeHpt;
- fPairLikeApt = MUONGlobalTrig.fPairLikeApt;
+ fPairLikeLpt = theMUONGlobalTrig.fPairLikeLpt;
+ fPairLikeHpt = theMUONGlobalTrig.fPairLikeHpt;
+ fPairLikeApt = theMUONGlobalTrig.fPairLikeApt;
return *this;
}
Int_t *singleMinus,
Int_t *singleUndef,
Int_t *pairUnlike, Int_t *pairLike)
+ : TObject(),
+
+ fSinglePlusLpt(singlePlus[0]),
+ fSinglePlusHpt(singlePlus[1]),
+ fSinglePlusApt(singlePlus[2]),
+
+ fSingleMinusLpt(singleMinus[0]),
+ fSingleMinusHpt(singleMinus[1]),
+ fSingleMinusApt(singleMinus[2]),
+
+ fSingleUndefLpt(singleUndef[0]),
+ fSingleUndefHpt(singleUndef[1]),
+ fSingleUndefApt(singleUndef[2]),
+
+ fPairUnlikeLpt(pairUnlike[0]),
+ fPairUnlikeHpt(pairUnlike[1]),
+ fPairUnlikeApt(pairUnlike[2]),
+
+ fPairLikeLpt(pairLike[0]),
+ fPairLikeHpt(pairLike[1]),
+ fPairLikeApt(pairLike[2])
+
+{
+ /// Set the Global Trigger object
+}
+
+//-----------------------------------------------------------
+void AliMUONGlobalTrigger:: SetGlobalPattern(Int_t gloTrigPat)
{
-// Set the Global Trigger object
- fSinglePlusLpt = singlePlus[0];
- fSinglePlusHpt = singlePlus[1];
- fSinglePlusApt = singlePlus[2];
-
- fSingleMinusLpt = singleMinus[0];
- fSingleMinusHpt = singleMinus[1];
- fSingleMinusApt = singleMinus[2];
-
- fSingleUndefLpt = singleUndef[0];
- fSingleUndefHpt = singleUndef[1];
- fSingleUndefApt = singleUndef[2];
-
- fPairUnlikeLpt = pairUnlike[0];
- fPairUnlikeHpt = pairUnlike[1];
- fPairUnlikeApt = pairUnlike[2];
-
- fPairLikeLpt = pairLike[0];
- fPairLikeHpt = pairLike[1];
- fPairLikeApt = pairLike[2];
+ /// Set class member from global pattern
+ /// coming from rawdata
+
+ fSinglePlusLpt = (gloTrigPat ) & 0x1;
+ fSinglePlusHpt = (gloTrigPat >> 1) & 0x1;
+ fSinglePlusApt = (gloTrigPat >> 2) & 0x1;
+
+ fSingleMinusLpt = (gloTrigPat >> 3) & 0x1;
+ fSingleMinusHpt = (gloTrigPat >> 4) & 0x1;
+ fSingleMinusApt = (gloTrigPat >> 5) & 0x1;
+
+ fSingleUndefLpt = (gloTrigPat >> 6) & 0x1;
+ fSingleUndefHpt = (gloTrigPat >> 7) & 0x1;
+ fSingleUndefApt = (gloTrigPat >> 8) & 0x1;
+
+ fPairUnlikeLpt = (gloTrigPat >> 9) & 0x1;
+ fPairUnlikeHpt = (gloTrigPat >> 10) & 0x1;
+ fPairUnlikeApt = (gloTrigPat >> 11) & 0x1;
+
+ fPairLikeLpt = (gloTrigPat >> 12) & 0x1;
+ fPairLikeHpt = (gloTrigPat >> 13) & 0x1;
+ fPairLikeApt = (gloTrigPat >> 14) & 0x1;
+
}
+//-----------------------------------------------------------
+Int_t AliMUONGlobalTrigger::GetGlobalPattern() const
+{
+ /// Global trigger pattern calculation
+ /// from class member values
+ Int_t gloTrigPat = 0;
+ if (SinglePlusLpt()) gloTrigPat|= 0x1;
+ if (SinglePlusHpt()) gloTrigPat|= 0x2;
+ if (SinglePlusApt()) gloTrigPat|= 0x4;
+
+ if (SingleMinusLpt()) gloTrigPat|= 0x8;
+ if (SingleMinusHpt()) gloTrigPat|= 0x10;
+ if (SingleMinusApt()) gloTrigPat|= 0x20;
+
+ if (SingleUndefLpt()) gloTrigPat|= 0x40;
+ if (SingleUndefHpt()) gloTrigPat|= 0x80;
+ if (SingleUndefApt()) gloTrigPat|= 0x100;
+
+ if (PairUnlikeLpt()) gloTrigPat|= 0x200;
+ if (PairUnlikeHpt()) gloTrigPat|= 0x400;
+ if (PairUnlikeApt()) gloTrigPat|= 0x800;
+ if (PairLikeLpt()) gloTrigPat|= 0x1000;
+ if (PairLikeHpt()) gloTrigPat|= 0x2000;
+ if (PairLikeApt()) gloTrigPat|= 0x4000;
+ return gloTrigPat;
+
+}
+//----------------------------------------------------------------------
+void AliMUONGlobalTrigger::Print(Option_t* opt) const
+{
+ //
+ // Printing Global Trigger information
+ //
+ TString sopt(opt);
+ sopt.ToUpper();
+ if ( sopt.Contains("FULL") ) {
+
+ printf("===================================================\n");
+ printf(" Global Trigger output Low pt High pt All\n");
+ printf(" number of Single Plus :\t");
+ printf("%i\t%i\t%i\t",SinglePlusLpt(),SinglePlusHpt(),SinglePlusApt());
+ printf("\n");
+
+ printf(" number of Single Minus :\t");
+ printf("%i\t%i\t%i\t",SingleMinusLpt(),SingleMinusHpt(),SingleMinusApt());
+ printf("\n");
+
+ printf(" number of Single Undefined :\t");
+ printf("%i\t%i\t%i\t",SingleUndefLpt(),SingleUndefHpt(),SingleUndefApt());
+ printf("\n");
+
+ printf(" number of UnlikeSign pair :\t");
+ printf("%i\t%i\t%i\t",PairUnlikeLpt(),PairUnlikeHpt(),PairUnlikeApt());
+ printf("\n");
+
+ printf(" number of LikeSign pair :\t");
+ printf("%i\t%i\t%i\t",PairLikeLpt(),PairLikeHpt(),PairLikeApt());
+ printf("\n");
+
+ printf("===================================================\n");
+ }
+}