#include "AliMUONLocalTrigger.h"
#include "AliLog.h"
#include "AliMUONLocalStruct.h"
+#include "AliMUONRawStreamTriggerHP.h"
#include <Riostream.h>
#include <TArrayS.h>
fY1Pattern(0),
fY2Pattern(0),
fY3Pattern(0),
- fY4Pattern(0)
+ fY4Pattern(0),
+
+ fHitPatternFromResponse(0xFF),
+ fTriggerWithoutChamber(0)
{
/// Default constructor
}
fY1Pattern(theMUONLocalTrig.fY1Pattern),
fY2Pattern(theMUONLocalTrig.fY2Pattern),
fY3Pattern(theMUONLocalTrig.fY3Pattern),
- fY4Pattern(theMUONLocalTrig.fY4Pattern)
+ fY4Pattern(theMUONLocalTrig.fY4Pattern),
+
+ fHitPatternFromResponse(theMUONLocalTrig.fHitPatternFromResponse),
+ fTriggerWithoutChamber(theMUONLocalTrig.fTriggerWithoutChamber)
{
/// Copy constructor (useful for TClonesArray)
fY3Pattern = theMUONLocalTrig.fY3Pattern;
fY4Pattern = theMUONLocalTrig.fY4Pattern;
+ fHitPatternFromResponse = theMUONLocalTrig.fHitPatternFromResponse;
+ fTriggerWithoutChamber = theMUONLocalTrig.fTriggerWithoutChamber;
+
return *this;
}
}
+//----------------------------------------------------------------------
+void AliMUONLocalTrigger::SetLocalStruct(Int_t loCircuit, const AliMUONRawStreamTriggerHP::AliLocalStruct& localStruct)
+{
+/// Set local trigger info from rawdata localStruct (new raw reader)
+
+ // set id'
+ SetLoCircuit(loCircuit);
+
+ // set X, Y, dev, Sdev and TrigY
+ SetLoStripX((Int_t)localStruct.GetXPos());
+ SetLoStripY((Int_t)localStruct.GetYPos());
+ SetLoDev((Int_t)localStruct.GetXDev());
+ SetLoSdev((Int_t)localStruct.GetSXDev());
+ SetLoTrigY((Int_t)localStruct.GetTrigY());
+
+ // set L(H)pt
+ SetLoLpt(localStruct.GetLpt());
+ SetLoHpt(localStruct.GetHpt());
+
+ // set pattern X
+ SetX1Pattern(localStruct.GetX1());
+ SetX2Pattern(localStruct.GetX2());
+ SetX3Pattern(localStruct.GetX3());
+ SetX4Pattern(localStruct.GetX4());
+
+ // set pattern Y
+ SetY1Pattern(localStruct.GetY1());
+ SetY2Pattern(localStruct.GetY2());
+ SetY3Pattern(localStruct.GetY3());
+ SetY4Pattern(localStruct.GetY4());
+
+}
+
namespace
{
const char* AsString(Int_t t)
cout << Form("Circuit %3d Decision %2d StripX %2d Dev %2d(%1d) StripY %2d Lpt %6s Hpt %6s",
LoCircuit(), GetLoDecision(),
LoStripX(), LoDev(), LoSdev(), LoStripY(),
- AsString(LoLpt()),AsString(LoHpt()),IsNull()) << endl;
+ AsString(LoLpt()),AsString(LoHpt())) << endl;
if ( sopt.Contains("FULL") ) {
}
}
+//----------------------------------------------------------------------
+Int_t AliMUONLocalTrigger::GetDeviation() const
+{
+ /// return deviation
+
+ Int_t deviation = LoDev();
+ Int_t sign = 0;
+ if ( !LoSdev() && deviation ) sign=-1;
+ if ( !LoSdev() && !deviation ) sign= 0;
+ if ( LoSdev() == 1 ) sign=+1;
+ deviation *= sign;
+ deviation += 15;
+ return deviation;
+}
+
+//----------------------------------------------------------------------
+void AliMUONLocalTrigger::SetDeviation(Int_t deviation)
+{
+ /// set LoDev and LoSDev according to deviation
+
+ deviation -= 15;
+ if (deviation > 0) {
+ SetLoDev(deviation);
+ SetLoSdev(1);
+ } else {
+ SetLoDev(-deviation);
+ SetLoSdev(0);
+ }
+}
+
//----------------------------------------------------------------------
const char*
AliMUONLocalTrigger::GetName() const
return Form("LocalBoard%3d",LoCircuit());
}
+
+
+//----------------------------------------------------------------------
+Bool_t AliMUONLocalTrigger::IsTrigX() const
+{
+/// Trigger response X strips
+ Bool_t xTrig;
+ if ( LoSdev()==1 && LoDev()==0 &&
+ LoStripX()==0) xTrig=kFALSE; // no trigger in X
+ else xTrig = kTRUE; // trigger in X
+ return xTrig;
+}
+
+
+//----------------------------------------------------------------------
+Bool_t AliMUONLocalTrigger::IsTrigY() const
+{
+/// Trigger response Y strips
+ Bool_t yTrig;
+ if ( LoTrigY()==1 &&
+ LoStripY()==15 ) yTrig = kFALSE; // no trigger in Y
+ else yTrig = kTRUE; // trigger in Y
+ return yTrig;
+}