fLoLpt = 0;
fLoHpt = 0;
fLoApt = 0;
+
+ fX1Pattern = 0;
+ fX2Pattern = 0;
+ fX3Pattern = 0;
+ fX4Pattern = 0;
+
+ fY1Pattern = 0;
+ fY2Pattern = 0;
+ fY3Pattern = 0;
+ fY4Pattern = 0;
+
+ fLoDecision = 0;
+
}
//----------------------------------------------------------------------
AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
fLoLpt = theMUONLocalTrig.fLoLpt;
fLoHpt = theMUONLocalTrig.fLoHpt;
fLoApt = theMUONLocalTrig.fLoApt;
+
+ fX1Pattern = theMUONLocalTrig.fX1Pattern;
+ fX2Pattern = theMUONLocalTrig.fX2Pattern;
+ fX3Pattern = theMUONLocalTrig.fX3Pattern;
+ fX4Pattern = theMUONLocalTrig.fX4Pattern;
+
+ fY1Pattern = theMUONLocalTrig.fY1Pattern;
+ fY2Pattern = theMUONLocalTrig.fY2Pattern;
+ fY3Pattern = theMUONLocalTrig.fY3Pattern;
+ fY4Pattern = theMUONLocalTrig.fY4Pattern;
+
+ fLoDecision = theMUONLocalTrig.fLoDecision;
}
//----------------------------------------------------------------------
AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
fLoHpt = theMUONLocalTrig.fLoHpt;
fLoApt = theMUONLocalTrig.fLoApt;
+ fX1Pattern = theMUONLocalTrig.fX1Pattern;
+ fX2Pattern = theMUONLocalTrig.fX2Pattern;
+ fX3Pattern = theMUONLocalTrig.fX3Pattern;
+ fX4Pattern = theMUONLocalTrig.fX4Pattern;
+
+ fY1Pattern = theMUONLocalTrig.fY1Pattern;
+ fY2Pattern = theMUONLocalTrig.fY2Pattern;
+ fY3Pattern = theMUONLocalTrig.fY3Pattern;
+ fY4Pattern = theMUONLocalTrig.fY4Pattern;
+
+ fLoDecision = theMUONLocalTrig.fLoDecision;
+
return *this;
}
//----------------------------------------------------------------------
-AliMUONLocalTrigger::AliMUONLocalTrigger(Int_t *localtr)
+AliMUONLocalTrigger::AliMUONLocalTrigger(Int_t* localtr)
{
// add a local trigger object
fLoCircuit = localtr[0];
fLoLpt = localtr[4];
fLoHpt = localtr[5];
fLoApt = localtr[6];
+
+ // keep on with this way
+ fX1Pattern = (UShort_t)localtr[7];
+ fX2Pattern = (UShort_t)localtr[8];
+ fX3Pattern = (UShort_t)localtr[9];
+ fX4Pattern = (UShort_t)localtr[10];
+
+ fY1Pattern = (UShort_t)localtr[11];
+ fY2Pattern = (UShort_t)localtr[12];
+ fY3Pattern = (UShort_t)localtr[13];
+ fY4Pattern = (UShort_t)localtr[14];
}
+//----------------------------------------------------------------------
+Char_t AliMUONLocalTrigger::GetLoDecision()
+{
+ fLoDecision = (fLoLpt & 0x3);
+ fLoDecision |= (fLoHpt << 2) & 0xC;
+ return fLoDecision;
+}
public:
AliMUONLocalTrigger();
AliMUONLocalTrigger(const AliMUONLocalTrigger& rhs); // copy constructor !
- AliMUONLocalTrigger(Int_t *localtr);
+ AliMUONLocalTrigger(Int_t* localtr);
virtual ~AliMUONLocalTrigger(){;}
AliMUONLocalTrigger& operator=(const AliMUONLocalTrigger& rhs);
Int_t LoStripY() const {return fLoStripY;};
Int_t LoLpt() const {return fLoLpt;};
Int_t LoHpt() const {return fLoHpt;};
- Int_t LoApt() const {return fLoApt;};
+ Int_t LoApt() const {return fLoApt;};
- ClassDef(AliMUONLocalTrigger,1) // reconstructed Local Trigger object
+
+ UShort_t GetX1Pattern() const {return fX1Pattern;}
+ UShort_t GetX2Pattern() const {return fX2Pattern;}
+ UShort_t GetX3Pattern() const {return fX3Pattern;}
+ UShort_t GetX4Pattern() const {return fX4Pattern;}
+
+ UShort_t GetY1Pattern() const {return fY1Pattern;}
+ UShort_t GetY2Pattern() const {return fY2Pattern;}
+ UShort_t GetY3Pattern() const {return fY3Pattern;}
+ UShort_t GetY4Pattern() const {return fY4Pattern;}
+
+ Char_t GetLoDecision();
+
+ ClassDef(AliMUONLocalTrigger,2) // reconstructed Local Trigger object
private:
Int_t fLoCircuit; // circuit number
Int_t fLoLpt; // Low pt 0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
Int_t fLoHpt; // High pt 0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
Int_t fLoApt; // All pt 0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
-
+
+ UShort_t fX1Pattern; // X and Y strip pattern for each chamber
+ UShort_t fX2Pattern;
+ UShort_t fX3Pattern;
+ UShort_t fX4Pattern;
+
+ UShort_t fY1Pattern;
+ UShort_t fY2Pattern;
+ UShort_t fY3Pattern;
+ UShort_t fY4Pattern;
+
+ Char_t fLoDecision; // local decision word (4 bits)
};
#endif
for (Int_t icirc=0; icirc<AliMUONConstants::NTriggerCircuit(); icirc++) {
if(GetITrigger(icirc)==1) {
- Int_t localtr[7]={0,0,0,0,0,0,0};
+ Int_t localtr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
Int_t loLpt[2]={0,0}; Int_t loHpt[2]={0,0}; Int_t loApt[2]={0,0};
GetLutOutput(icirc, loLpt, loHpt, loApt);
localtr[0] = icirc;
localtr[1] = GetStripX11(icirc);
localtr[2] = GetDev(icirc);
localtr[3] = GetStripY11(icirc);
- for (Int_t i=0; i<2; i++) { // convert the Lut output in 1 digit
- localtr[4] = localtr[4]+Int_t(loLpt[i]*TMath::Power(2,i));
- localtr[5] = localtr[5]+Int_t(loHpt[i]*TMath::Power(2,i));
- localtr[6] = localtr[6]+Int_t(loApt[i]*TMath::Power(2,i));
+ for (Int_t i = 0; i < 2; i++) { // convert the Lut output in 1 digit
+ localtr[4] += Int_t(loLpt[i]*TMath::Power(2,i));
+ localtr[5] += Int_t(loHpt[i]*TMath::Power(2,i));
+ localtr[6] += Int_t(loApt[i]*TMath::Power(2,i));
}
+
+ for (Int_t i = 0; i < 16; i++) { // convert X/Y bit in bit pattern
+ localtr[7] |= (fXbit11[icirc][i] << i);
+ localtr[8] |= (fXbit12[icirc][i] << i);
+
+ // 8 first and last elts correspond to neighbouring cards
+ localtr[9] |= (fXbit21[icirc][i+8] << i);
+ localtr[10] |= (fXbit22[icirc][i+8] << i);
+
+ localtr[11] |= (fYbit11[icirc][i] << i);
+ localtr[12] |= (fYbit12[icirc][i] << i);
+ localtr[13] |= (fYbit21[icirc][i] << i);
+ localtr[14] |= (fYbit22[icirc][i] << i);
+ }
+
AliMUONLocalTrigger* pLocTrig = new AliMUONLocalTrigger(localtr);
fMUONData->AddLocalTrigger(*pLocTrig); // add a local trigger in the list
}