X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGlobalTrigger.cxx;h=ec84fd69ca0025717a6aab325b8309946e98921d;hb=f3d601a54eac57e81b01f251930d92b6fd5e4b5d;hp=f11b4cb9cd458ea3cbdb15d3e302b04a5511601f;hpb=30178c30974cdd6a3b59f09e4d479925642e175b;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGlobalTrigger.cxx b/MUON/AliMUONGlobalTrigger.cxx index f11b4cb9cd4..ec84fd69ca0 100644 --- a/MUON/AliMUONGlobalTrigger.cxx +++ b/MUON/AliMUONGlobalTrigger.cxx @@ -11,129 +11,171 @@ * 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 "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() - : TObject() -{ -// constructor - fSinglePlusLpt = 0; - fSinglePlusHpt = 0; - fSinglePlusApt = 0; - - fSingleMinusLpt = 0; - fSingleMinusHpt = 0; - fSingleMinusApt = 0; - - fSingleUndefLpt = 0; - fSingleUndefHpt = 0; - fSingleUndefApt = 0; - - fPairUnlikeLpt = 0; - fPairUnlikeHpt = 0; - fPairUnlikeApt = 0; - - fPairLikeLpt = 0; - fPairLikeHpt = 0; - fPairLikeApt = 0; + : TObject(), + fSingleLpt(0), + fSingleHpt(0), + + fPairUnlikeLpt(0), + fPairUnlikeHpt(0), + + fPairLikeLpt(0), + fPairLikeHpt(0) +{ + /// Default constructor + AliDebug(1,Form("this=%p",this)); + for (Int_t i = 0; i < 4; i++) fInput[i] = 0; } + //---------------------------------------------------------------------- AliMUONGlobalTrigger::AliMUONGlobalTrigger(const AliMUONGlobalTrigger& theMUONGlobalTrig) - : TObject(theMUONGlobalTrig) -{ -// copy constructor - 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; + : TObject(theMUONGlobalTrig), - fPairUnlikeLpt = theMUONGlobalTrig.fPairUnlikeLpt; - fPairUnlikeHpt = theMUONGlobalTrig.fPairUnlikeHpt; - fPairUnlikeApt = theMUONGlobalTrig.fPairUnlikeApt; - - fPairLikeLpt = theMUONGlobalTrig.fPairLikeLpt; - fPairLikeHpt = theMUONGlobalTrig.fPairLikeHpt; - fPairLikeApt = theMUONGlobalTrig.fPairLikeApt; + fSingleLpt(theMUONGlobalTrig.fSingleLpt), + fSingleHpt(theMUONGlobalTrig.fSingleHpt), + + fPairUnlikeLpt(theMUONGlobalTrig.fPairUnlikeLpt), + fPairUnlikeHpt(theMUONGlobalTrig.fPairUnlikeHpt), + + fPairLikeLpt(theMUONGlobalTrig.fPairLikeLpt), + fPairLikeHpt(theMUONGlobalTrig.fPairLikeHpt) +{ + /// Copy constructor + AliDebug(1,Form("this=%p copy ctor",this)); + for (Int_t i = 0; i < 4; i++) fInput[i] = theMUONGlobalTrig.fInput[i]; + +} + +//---------------------------------------------------------------------- +AliMUONGlobalTrigger::~AliMUONGlobalTrigger() +{ + /// Destructor + AliDebug(1,Form("this=%p",this)); } //---------------------------------------------------------------------- AliMUONGlobalTrigger& AliMUONGlobalTrigger::operator=(const AliMUONGlobalTrigger& theMUONGlobalTrig) { -// equal operator (useful for non-pointer member in TClonesArray) + /// Assignement operator; + /// equal operator (useful for non-pointer member in TClonesArray) + if (this == &theMUONGlobalTrig) return *this; // base class assignement TObject::operator=(theMUONGlobalTrig); - 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; + fSingleLpt = theMUONGlobalTrig.fSingleLpt; + fSingleHpt = theMUONGlobalTrig.fSingleHpt; fPairUnlikeLpt = theMUONGlobalTrig.fPairUnlikeLpt; fPairUnlikeHpt = theMUONGlobalTrig.fPairUnlikeHpt; - fPairUnlikeApt = theMUONGlobalTrig.fPairUnlikeApt; fPairLikeLpt = theMUONGlobalTrig.fPairLikeLpt; fPairLikeHpt = theMUONGlobalTrig.fPairLikeHpt; - fPairLikeApt = theMUONGlobalTrig.fPairLikeApt; + + for (Int_t i = 0; i < 4; i++) fInput[i] = theMUONGlobalTrig.fInput[i]; return *this; } -//---------------------------------------------------------------------- -AliMUONGlobalTrigger::AliMUONGlobalTrigger(Int_t *singlePlus, - Int_t *singleMinus, - Int_t *singleUndef, - Int_t *pairUnlike, Int_t *pairLike) +//----------------------------------------------------------- +void AliMUONGlobalTrigger::SetFromGlobalResponse(UShort_t globalResponse) { -// 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 members from global response + /// coming from rawdata & global trigger board + /// [US:2, LS:2, Single:2] with [Hpt, Lpt] + /// remove Apt + + fSingleLpt = (globalResponse >> 1) & 0x1; + fSingleHpt = (globalResponse >> 2) & 0x1; + + fPairLikeLpt = (globalResponse >> 3) & 0x1; + fPairLikeHpt = (globalResponse >> 4) & 0x1; + + fPairUnlikeLpt = (globalResponse >> 5) & 0x1; + fPairUnlikeHpt = (globalResponse >> 6) & 0x1; + } +//----------------------------------------------------------- +UChar_t AliMUONGlobalTrigger::GetGlobalResponse() const +{ + /// Global trigger response + /// from class member values + /// [US:2, LS:2, Single:2] with [Hpt, Lpt] + + UChar_t response = 0; + + if (SingleLpt()) response|= 0x2; + if (SingleHpt()) response|= 0x4; + if (PairLikeLpt()) response|= 0x8; + if (PairLikeHpt()) response|= 0x10; + + if (PairUnlikeLpt()) response|= 0x20; + if (PairUnlikeHpt()) response|= 0x40; + return response; +} +//----------------------------------------------------------- +void AliMUONGlobalTrigger::SetFromGlobalInput(const UInt_t *globalInput) +{ + /// Global trigger board input + /// 4 words each of 32 bits + for (Int_t i = 0; i < 4; i++) fInput[i] = globalInput[i]; +} + +//---------------------------------------------------------------------- +void AliMUONGlobalTrigger::Print(Option_t*) const +{ + /// + /// Printing Global Trigger information + /// + printf("=============================================\n"); + printf(" Global Trigger output Low pt High pt\n"); + printf(" Single :\t"); + printf("%i\t%i\t",SingleLpt(),SingleHpt()); + printf("\n"); + + printf(" UnlikeSign pair :\t"); + printf("%i\t%i\t",PairUnlikeLpt(),PairUnlikeHpt()); + printf("\n"); + + printf(" LikeSign pair :\t"); + printf("%i\t%i\t",PairLikeLpt(),PairLikeHpt()); + printf("\n"); + + printf("=============================================\n"); + +}