X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGlobalTrigger.cxx;h=ec84fd69ca0025717a6aab325b8309946e98921d;hb=c231afb91ec4bb196385cf21fb721f353ec4dd18;hp=bfe7cf7c84f6c34a554d663c963a41a4d002fcb5;hpb=402fb06e2ebabaecd37dbbcf9929016e435443c2;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGlobalTrigger.cxx b/MUON/AliMUONGlobalTrigger.cxx index bfe7cf7c84f..ec84fd69ca0 100644 --- a/MUON/AliMUONGlobalTrigger.cxx +++ b/MUON/AliMUONGlobalTrigger.cxx @@ -11,148 +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() -{ -// constructor - fSinglePlusLpt = 0; - fSinglePlusHpt = 0; - fSinglePlusApt = 0; - - fSingleMinusLpt = 0; - fSingleMinusHpt = 0; - fSingleMinusApt = 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), - fSingleUndefLpt = 0; - fSingleUndefHpt = 0; - fSingleUndefApt = 0; - - fPairUnlikeLpt = 0; - fPairUnlikeHpt = 0; - fPairUnlikeApt = 0; - - fPairLikeLpt = 0; - fPairLikeHpt = 0; - fPairLikeApt = 0; -} -//---------------------------------------------------------------------- -AliMUONGlobalTrigger::AliMUONGlobalTrigger(Int_t *singlePlus, - Int_t *singleMinus, - Int_t *singleUndef, - Int_t *pairUnlike, Int_t *pairLike) + fSingleLpt(theMUONGlobalTrig.fSingleLpt), + fSingleHpt(theMUONGlobalTrig.fSingleHpt), + + fPairUnlikeLpt(theMUONGlobalTrig.fPairUnlikeLpt), + fPairUnlikeHpt(theMUONGlobalTrig.fPairUnlikeHpt), + + fPairLikeLpt(theMUONGlobalTrig.fPairLikeLpt), + fPairLikeHpt(theMUONGlobalTrig.fPairLikeHpt) { -// 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]; -} + /// Copy constructor + AliDebug(1,Form("this=%p copy ctor",this)); + for (Int_t i = 0; i < 4; i++) fInput[i] = theMUONGlobalTrig.fInput[i]; -//---------------------------------------------------------------------- -//--- methods which return member data related info -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SinglePlusLpt(){ -// returns Number of Single Plus Low pt - return fSinglePlusLpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SinglePlusHpt(){ -// returns Number of Single Plus High pt - return fSinglePlusHpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SinglePlusApt(){ -// returns Number of Single Plus All pt - return fSinglePlusApt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SingleMinusLpt(){ -// returns Number of Single Minus Low pt - return fSingleMinusLpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SingleMinusHpt(){ -// returns Number of Single Minus High pt - return fSingleMinusHpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SingleMinusApt(){ -// returns Number of Single Minus All pt - return fSingleMinusApt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SingleUndefLpt(){ -// returns Number of Single Undefined Low pt - return fSingleUndefLpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SingleUndefHpt(){ -// returns Number of Single Undefined High pt - return fSingleUndefHpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::SingleUndefApt(){ -// returns Number of Single Undefined All pt - return fSingleUndefApt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::PairUnlikeLpt(){ -// returns Number of Unlike sign pair Low pt - return fPairUnlikeLpt; -} -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::PairUnlikeHpt(){ -// returns Number of Unlike sign pair High pt - return fPairUnlikeHpt; } + //---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::PairUnlikeApt(){ -// returns Number of Unlike sign pair All pt - return fPairUnlikeApt; +AliMUONGlobalTrigger::~AliMUONGlobalTrigger() +{ + /// Destructor + AliDebug(1,Form("this=%p",this)); } + //---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::PairLikeLpt(){ -// returns Number of Like sign pair Low pt - return fPairLikeLpt; +AliMUONGlobalTrigger& AliMUONGlobalTrigger::operator=(const AliMUONGlobalTrigger& theMUONGlobalTrig) +{ + /// Assignement operator; + /// equal operator (useful for non-pointer member in TClonesArray) + + if (this == &theMUONGlobalTrig) + return *this; + + // base class assignement + TObject::operator=(theMUONGlobalTrig); + + fSingleLpt = theMUONGlobalTrig.fSingleLpt; + fSingleHpt = theMUONGlobalTrig.fSingleHpt; + + fPairUnlikeLpt = theMUONGlobalTrig.fPairUnlikeLpt; + fPairUnlikeHpt = theMUONGlobalTrig.fPairUnlikeHpt; + + fPairLikeLpt = theMUONGlobalTrig.fPairLikeLpt; + fPairLikeHpt = theMUONGlobalTrig.fPairLikeHpt; + + for (Int_t i = 0; i < 4; i++) fInput[i] = theMUONGlobalTrig.fInput[i]; + + return *this; } -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::PairLikeHpt(){ -// returns Number of Like sign pair High pt - return fPairLikeHpt; + +//----------------------------------------------------------- +void AliMUONGlobalTrigger::SetFromGlobalResponse(UShort_t globalResponse) +{ + /// 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; + } -//---------------------------------------------------------------------- -Int_t AliMUONGlobalTrigger::PairLikeApt(){ -// returns Number of Like sign pair All pt - return fPairLikeApt; + +//----------------------------------------------------------- +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"); +}