/* $Id$ */
-//_________________________________________________________________________
-// Implementation of local trigger board objects
-// A local trigger board has as input a bit pattern and returns
-// the local trigger response after comparison w/ a LUT
-//*-- Author: Rachid Guernane (LPCCFd)
-//*
-//*
-
+//-----------------------------------------------------------------------------
+/// \class AliMUONLocalTriggerBoard
+/// A local trigger board has as input a bit pattern and returns
+/// the local trigger response after comparison w/ a LUT
+/// \todo Change member functions comments in capital letters to normal text
+///
+/// \author Rachid Guernane (LPCCFd)
+//-----------------------------------------------------------------------------
+
+#include <cstdlib>
#include "AliMUONLocalTriggerBoard.h"
#include "AliMUONTriggerLut.h"
-#include "AliMUONTriggerConstants.h"
#include "AliLog.h"
#include <TBits.h>
#include <Riostream.h>
+/// \cond CLASSIMP
+ClassImp(AliMUONLocalTriggerBoard)
+/// \endcond
+
const Int_t AliMUONLocalTriggerBoard::fgkCircuitId[234] =
{
111, 121, 131, 141, 151, 161, 171,
//___________________________________________
AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard()
: AliMUONTriggerBoard(),
- fNumber(0),
- fCrate(0),
- fTC(kTRUE),
+ fMpLocalBoard(0x0),
fStripX11(0),
- fStripY11(0),
+ fStripY11(15),
fDev(0),
+ fTrigY(1),
fOutput(0),
- fLUT(0x0)
+ fLUT(0x0),
+ fCoinc44(0)
{
-//* constructor
-//*
-
+/// default constructor
+///
+
for (Int_t i=0; i<2; i++)
for (Int_t j=0; j<4; j++)
{
fMask[i][j] = 0xFFFF;
}
- for (Int_t i=0; i<10; i++) fSwitch[i] = 0;
-
for (Int_t i=0; i<5; i++) fMinDevStrip[i] = fMinDev[i] = fCoordY[i] = 0;
- for (Int_t i=0; i<2; i++) fLutLpt[i] = fLutHpt[i] = fLutApt[i] = 0;
+ for (Int_t i=0; i<2; i++) fLutLpt[i] = fLutHpt[i] = 0;
}
//___________________________________________
-AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const char *name, Int_t a,
- AliMUONTriggerLut* lut)
- : AliMUONTriggerBoard(name, a),
- fNumber(0),
- fCrate(0),
- fTC(kTRUE),
+AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(AliMpLocalBoard* mpLocalBoard)
+ : AliMUONTriggerBoard(mpLocalBoard->GetName(), mpLocalBoard->GetSlot()),
+ fMpLocalBoard(mpLocalBoard),
fStripX11(0),
- fStripY11(0),
+ fStripY11(15),
fDev(0),
+ fTrigY(1),
fOutput(0),
- fLUT(lut)
+ fLUT(0x0),
+ fCoinc44(0)
{
-//* constructor
-//*
+/// Standard constructor
+///
for (Int_t i=0; i<2; i++)
for (Int_t j=0; j<4; j++)
fMask[i][j] = 0xFFFF;
}
- for (Int_t i=0; i<10; i++) fSwitch[i] = 0;
-
for (Int_t i=0; i<5; i++) fMinDevStrip[i] = fMinDev[i] = fCoordY[i] = 0;
- for (Int_t i=0; i<2; i++) fLutLpt[i] = fLutHpt[i] = fLutApt[i] = 0;
+ for (Int_t i=0; i<2; i++) fLutLpt[i] = fLutHpt[i] = 0;
}
-//______________________________________________________________________________
-AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const AliMUONLocalTriggerBoard& right)
- : AliMUONTriggerBoard(right),
- fNumber(right.fNumber),
- fCrate(right.fCrate),
- fTC(right.fTC),
- fStripX11(right.fStripX11),
- fStripY11(right.fStripY11),
- fDev(right.fDev),
- fOutput(right.fOutput),
- fLUT(right.fLUT)
-{
-/// Protected copy constructor (not implemented)
-
- AliFatal("Copy constructor not provided.");
+//___________________________________________
+AliMUONLocalTriggerBoard::~AliMUONLocalTriggerBoard()
+{
+/// Destructor
}
-//______________________________________________________________________________
-AliMUONLocalTriggerBoard&
-AliMUONLocalTriggerBoard::operator=(const AliMUONLocalTriggerBoard& right)
-{
-/// Protected assignement operator (not implemented)
- // check assignement to self
- if (this == &right) return *this;
+//___________________________________________
+Int_t AliMUONLocalTriggerBoard::GetNumber() const
+{
+/// return board number for notified boards
- AliFatal("Assignement operator not provided.");
-
- return *this;
-}
+ if (fMpLocalBoard->IsNotified())
+ return fMpLocalBoard->GetId();
+ else
+ return 0;
+}
//___________________________________________
void AliMUONLocalTriggerBoard::Reset()
{
-//* reset board
-//*
+/// reset board
+///
for (Int_t i=0; i<2; i++)
for (Int_t j=0; j<4; j++)
fXY[i][j] = fXYU[i][j] = fXYD[i][j] = 0;
fOutput = 0;
- fStripX11 = fStripY11 = fDev = 0;
+ fStripX11 = 0;
+ fStripY11 = 15;
+ fDev = 0;
+ fTrigY = 1;
- for (Int_t i=0; i<2; i++) fLutLpt[i] = fLutHpt[i] = fLutApt[i] = 0;
+ for (Int_t i=0; i<2; i++) fLutLpt[i] = fLutHpt[i] = 0;
}
//___________________________________________
void AliMUONLocalTriggerBoard::Setbit(Int_t strip, Int_t cathode, Int_t chamber)
{
-// 0 .. LBS : N-1 .. MSB
+/// 0 .. LBS : N-1 .. MSB
TBits w, m;
UShort_t xy = fXY[cathode][chamber], mask = fMask[cathode][chamber];
//___________________________________________
void AliMUONLocalTriggerBoard::SetbitM(Int_t strip, Int_t cathode, Int_t chamber)
{
-// 0 .. LBS : N-1 .. MSB
+/// 0 .. LBS : N-1 .. MSB
TBits w, m;
UShort_t xy = fXY[cathode][chamber], mask = fMask[cathode][chamber];
fXY[cathode][chamber] = value;
}
+
//___________________________________________
void AliMUONLocalTriggerBoard::Pattern(Option_t *option) const
{
-//* print bit pattern
-//*
+/// print bit pattern
+///
TString op = option;
if (op.Contains("X")) BP("X");
//___________________________________________
void AliMUONLocalTriggerBoard::BP(Option_t *option) const
{
-// RESPECT THE OLD PRINTOUT FORMAT
+/// Respect the old printout format
const Int_t kModuleId[126] =
{11,12,13,14,15,16,17, // right side of the chamber
if (op.Contains("X"))
{
printf("-------- TRIGGER INPUT ---------\n");
+ printf("--- warning: switchs not activated at this level ---\n");
printf("===============================================================\n");
printf(" 5432109876543210");
UShort_t xyval = 0;
- if (fSwitch[1])
+ if (GetSwitch(1))
{
xyval = fXY[1][0];
TBits v11(8); v11.Set(8,&xyval);
}
}
-//___________________________________________
-void AliMUONLocalTriggerBoard::Conf() const
-{
-//* board switches
-//*
- cout << "Switch(" << GetName() << ")"
- << " x2d = " << fSwitch[0]
- << " x2m = " << fSwitch[1]
- << " x2u = " << fSwitch[2]
- << " OR[0] = " << fSwitch[3]
- << " OR[1] = " << fSwitch[4]
- << " EN-Y = " << fSwitch[5]
- << " ZERO-ALLY-LSB = " << fSwitch[6]
- << " ZERO-down = " << fSwitch[7]
- << " ZERO-middle = " << fSwitch[8]
- << " ZERO-up = " << fSwitch[9]
- << " trans. conn. " << fTC
- << " Slot = " << fSlot
- << endl;
-}
-
//___________________________________________
void AliMUONLocalTriggerBoard::Module(char *mod)
{
-//* get module from name
-//*
+/// get module from name
+///
const Int_t kMaxfields = 2; char **fields = new char*[kMaxfields];
char s[100]; strcpy(s, GetName());
}
//___________________________________________
-void AliMUONLocalTriggerBoard::TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32],
- Int_t coinc44)
+void AliMUONLocalTriggerBoard::TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32])
{
-// note : coinc44 = flag 0 or 1 (0 coincidence -> 3/4, 1 coincidence -> 4/4)
-//---------------------------------------------------------
-// step # 1 : declustering, reduction DS, calculate sgle & dble
-//---------------------------------------------------------
+/// note : coinc44 = flag 0 or 1 (0 coincidence -> 3/4, 1 coincidence -> 4/4) \n
+///--------------------------------------------------------- \n
+/// step # 1 : declustering, reduction DS, calculate sgle & dble \n
+///---------------------------------------------------------
Int_t ch1e[19], ch2e[20], ch3e[35], ch4e[36];
Int_t sgleHit1[31], sgleHit2[63];
Int_t dbleHit1[31], dbleHit2[63];
}
//--- inititialize che using chq
+//--- switch zero_down, zero_middle & zero_up added 30/05/07
+//--- fSwitch[7/8/9] = zero_down/zero_middle/zero_up
for (i=0; i<19; i++) {
if (i<1||i>16) ch1e[i]=0;
else ch1e[i]=ch1q[i-1];
}
for (i=0; i<35; i++) {
if (i<1||i>32) ch3e[i]=0;
- else ch3e[i]=ch3q[i-1];
+ else if (i>=1 && i<=8) ch3e[i]=ch3q[i-1]&!GetSwitch(7);
+ else if (i>=9 && i<=24) ch3e[i]=ch3q[i-1]&!GetSwitch(8);
+ else if (i>=25 && i<=32) ch3e[i]=ch3q[i-1]&!GetSwitch(9);
}
for (i=0; i<36; i++) {
if (i<2||i>33) ch4e[i]=0;
- else ch4e[i]=ch4q[i-2];
+ else if (i>=2 && i<=9) ch4e[i]=ch4q[i-2]&!GetSwitch(7);
+ else if (i>=10 && i<=25) ch4e[i]=ch4q[i-2]&!GetSwitch(8);
+ else if (i>=26 && i<=33) ch4e[i]=ch4q[i-2]&!GetSwitch(9);
}
-
//--- calculate dble & sgle first station
for (i=0; i<=15; i++) {
sgleHit1[2*i] = (!ch1e[i+1]|(ch1e[i]^ch1e[i+2])) &
!dbleHit1[14] & !dbleHit1[13] & !dbleHit1[12] & !dbleHit1[11] &
!dbleHit1[10] & !dbleHit1[9] & !dbleHit1[8] & !dbleHit1[7] &
!dbleHit1[6] & !dbleHit1[5] & !dbleHit1[4] & !dbleHit1[3] &
- !dbleHit1[2] & !dbleHit1[1] & !dbleHit1[0] & !coinc44;
+ !dbleHit1[2] & !dbleHit1[1] & !dbleHit1[0] & !fCoinc44;
Int_t notOr2= !dbleHit2[62] & !dbleHit2[61] & !dbleHit2[60] & !dbleHit2[59] &
!dbleHit2[58] & !dbleHit2[57] & !dbleHit2[56] & !dbleHit2[55] &
!dbleHit2[14] & !dbleHit2[13] & !dbleHit2[12] & !dbleHit2[11] &
!dbleHit2[10] & !dbleHit2[9] & !dbleHit2[8] & !dbleHit2[7] &
!dbleHit2[6] & !dbleHit2[5] & !dbleHit2[4] & !dbleHit2[3] &
- !dbleHit2[2] & !dbleHit2[1] & !dbleHit2[0] & !coinc44;
+ !dbleHit2[2] & !dbleHit2[1] & !dbleHit2[0] & !fCoinc44;
// DS reduction
for (i=0; i<31; i++) {
void AliMUONLocalTriggerBoard::Sort2x5(Int_t dev1[6], Int_t dev2[6],
Int_t minDev[6], Int_t &dev1GTdev2)
{
-// returns minimun between dev1 and dev2
+/// returns minimun between dev1 and dev2
Int_t tmpDev1=0, tmpDev2=0;
for (Int_t j=0; j<5; j++)
//___________________________________________
void AliMUONLocalTriggerBoard::TrigY(Int_t y1[16], Int_t y2[16], Int_t y3[16], Int_t y4[16],
- Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16],
- Int_t coinc44)
+ Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16])
{
-// note : resMid = 1 -> cancel
-//---------------------------------------------------------
-// step # 1 : prehandling Y
-//---------------------------------------------------------
+/// note : resMid = 1 -> cancel \n
+///---------------------------------------------------------\n
+/// step # 1 : prehandling Y \n
+///---------------------------------------------------------
Int_t i;
Int_t istrip;
for (i=0; i<16; i++)
{
- y3[i]=y3[i]&!fSwitch[8];
- y4[i]=y4[i]&!fSwitch[8];
+ y3[i]=y3[i]&!GetSwitch(8);
+ y4[i]=y4[i]&!GetSwitch(8);
}
// 10/29/04 fZeroAllYLSB added
Int_t tmpy3to16[16], tmpy4to16[16];
Int_t tmpy3uto16[16], tmpy3dto16[16], tmpy4uto16[16], tmpy4dto16[16];
for (i=0; i<8; i++){
- ch1[2*i] = y1[i]&fSwitch[1] | y1[2*i]&!fSwitch[1];
- ch1[2*i+1] = y1[i]&fSwitch[1] | y1[2*i+1]&!fSwitch[1];
+ ch1[2*i] = y1[i]&GetSwitch(1) | y1[2*i]&!GetSwitch(1);
+ ch1[2*i+1] = y1[i]&GetSwitch(1) | y1[2*i+1]&!GetSwitch(1);
- ch2[2*i] = y2[i]&fSwitch[1] | y2[2*i]&!fSwitch[1];
- ch2[2*i+1] = y2[i]&fSwitch[1] | y2[2*i+1]&!fSwitch[1];
+ ch2[2*i] = y2[i]&GetSwitch(1) | y2[2*i]&!GetSwitch(1);
+ ch2[2*i+1] = y2[i]&GetSwitch(1) | y2[2*i+1]&!GetSwitch(1);
- tmpy3to16[2*i ] = y3[i]&fSwitch[1] | y3[2*i ]&!fSwitch[1];
- tmpy3to16[2*i+1] = y3[i]&fSwitch[1] | y3[2*i+1]&!fSwitch[1];
+ tmpy3to16[2*i ] = y3[i]&GetSwitch(1) | y3[2*i ]&!GetSwitch(1);
+ tmpy3to16[2*i+1] = y3[i]&GetSwitch(1) | y3[2*i+1]&!GetSwitch(1);
- tmpy4to16[2*i ] = y4[i]&fSwitch[1] | y4[2*i ]&!fSwitch[1];
- tmpy4to16[2*i+1] = y4[i]&fSwitch[1] | y4[2*i+1]&!fSwitch[1];
+ tmpy4to16[2*i ] = y4[i]&GetSwitch(1) | y4[2*i ]&!GetSwitch(1);
+ tmpy4to16[2*i+1] = y4[i]&GetSwitch(1) | y4[2*i+1]&!GetSwitch(1);
- tmpy3uto16[2*i ] = y3u[i]&fSwitch[2] | y3u[2*i ]&!fSwitch[2];
- tmpy3uto16[2*i+1] = y3u[i]&fSwitch[2] | y3u[2*i+1]&!fSwitch[2];
+ tmpy3uto16[2*i ] = y3u[i]&GetSwitch(2) | y3u[2*i ]&!GetSwitch(2);
+ tmpy3uto16[2*i+1] = y3u[i]&GetSwitch(2) | y3u[2*i+1]&!GetSwitch(2);
- tmpy4uto16[2*i ] = y4u[i]&fSwitch[2] | y4u[2*i ]&!fSwitch[2];
- tmpy4uto16[2*i+1] = y4u[i]&fSwitch[2] | y4u[2*i+1]&!fSwitch[2];
+ tmpy4uto16[2*i ] = y4u[i]&GetSwitch(2) | y4u[2*i ]&!GetSwitch(2);
+ tmpy4uto16[2*i+1] = y4u[i]&GetSwitch(2) | y4u[2*i+1]&!GetSwitch(2);
- tmpy3dto16[2*i ] = y3d[i]&fSwitch[0] | y3d[2*i ]&!fSwitch[0];
- tmpy3dto16[2*i+1] = y3d[i]&fSwitch[0] | y3d[2*i+1]&!fSwitch[0];
+ tmpy3dto16[2*i ] = y3d[i]&GetSwitch(0) | y3d[2*i ]&!GetSwitch(0);
+ tmpy3dto16[2*i+1] = y3d[i]&GetSwitch(0) | y3d[2*i+1]&!GetSwitch(0);
- tmpy4dto16[2*i ] = y4d[i]&fSwitch[0] | y4d[2*i ]&!fSwitch[0];
- tmpy4dto16[2*i+1] = y4d[i]&fSwitch[0] | y4d[2*i+1]&!fSwitch[0];
+ tmpy4dto16[2*i ] = y4d[i]&GetSwitch(0) | y4d[2*i ]&!GetSwitch(0);
+ tmpy4dto16[2*i+1] = y4d[i]&GetSwitch(0) | y4d[2*i+1]&!GetSwitch(0);
}
- if (fSwitch[3]==0&&fSwitch[4]==0){
+ if (GetSwitch(3)==0&&GetSwitch(4)==0){
for (i=0; i<16; i++){
ch3[i] = tmpy3to16[i];
ch4[i] = tmpy4to16[i];
}
}
- if (fSwitch[3]==0&&fSwitch[4]==1){
+ if (GetSwitch(3)==0&&GetSwitch(4)==1){
for (i=0; i<16; i++){
ch3[i] = tmpy3dto16[i]|tmpy3to16[i];
ch4[i] = tmpy4dto16[i]|tmpy4to16[i];
}
}
- if (fSwitch[3]==1&&fSwitch[4]==0){
+ if (GetSwitch(3)==1&&GetSwitch(4)==0){
for (i=0; i<16; i++){
ch3[i] = tmpy3uto16[i]|tmpy3to16[i];
ch4[i] = tmpy4uto16[i]|tmpy4to16[i];
}
}
- if (fSwitch[3]==1&&fSwitch[4]==1){
+ if (GetSwitch(3)==1&&GetSwitch(4)==1){
for (i=0; i<16; i++){
ch3[i] = tmpy3dto16[i]|tmpy3to16[i]|tmpy3uto16[i];
ch4[i] = tmpy4dto16[i]|tmpy4to16[i]|tmpy4uto16[i];
if(AliDebugLevel()==4||AliDebugLevel()==5) {
printf("===============================================================\n");
printf(" Y plane after PreHandling x2m x2u x2d orMud %i %i %i %i %i \n",
- fSwitch[1],fSwitch[2], fSwitch[0],fSwitch[3],fSwitch[4]);
+ GetSwitch(1),GetSwitch(2), GetSwitch(0),GetSwitch(3),GetSwitch(4));
printf(" ");
for (istrip=15; istrip>=0; istrip--) {
if (istrip>9) printf("%i",istrip-10*Int_t(istrip/10));
!dble2[3] & !dble2[2] & !dble2[1] & !dble2[0];
for (i=0; i<16; i++) {
- sgle1[i] = sgle1[i] & notOr1 & !coinc44;
- sgle2[i] = sgle2[i] & notOr2 & !coinc44;
+ sgle1[i] = sgle1[i] & notOr1 & !fCoinc44;
+ sgle2[i] = sgle2[i] & notOr2 & !fCoinc44;
}
//---------------------------------------------------------
//___________________________________________
void AliMUONLocalTriggerBoard::LocalTrigger()
{
-//* L0 trigger after LUT
-//*
- Int_t deviation=0, iStripY=0;
+/// L0 trigger after LUT
+///
+ Int_t deviation=0;
+ Int_t iStripY=0;
+ Int_t iStripX=0;
+ Bool_t xOutput=kFALSE;
+ Bool_t yOutput=kFALSE;
for (Int_t i=0; i<4; i++) deviation += static_cast<int>( fMinDev[i] << i );
for (Int_t i=0; i<4; i++) iStripY += static_cast<int>( fCoordY[i] << i );
- if (fMinDev[4]==1 && !deviation) fOutput=0; // No trigger
- else
- {
- if (fCoordY[4]==1 && iStripY==15) fOutput=0; // No trigger
- else
- fOutput=1;
- }
-
- if (fOutput)
- {
- for (Int_t i=0; i<5; i++) fStripX11 += static_cast<int>( fMinDevStrip[i] << i );
+ if (fMinDev[4]==1 && !deviation) xOutput=kFALSE; // no trigger in X
+ else xOutput=kTRUE; // trigger in X
+ if (fCoordY[4]==1 && iStripY==15) yOutput=kFALSE; // no trigger in Y
+ else yOutput=kTRUE; // trigger in Y
+ if (xOutput) {
+ for (Int_t i=0; i<5; i++) iStripX += static_cast<int>( fMinDevStrip[i] << i );
fDev = deviation;
-
+ fStripX11 = iStripX;
+ }
+ if (yOutput) {
fStripY11 = iStripY;
-
- Int_t sign = 0;
-
- if ( !fMinDev[4] && deviation ) sign=-1;
- if ( !fMinDev[4] && !deviation ) sign= 0;
- if ( fMinDev[4] == 1 ) sign=+1;
-
- fDev *= sign;
-
+ fTrigY = fCoordY[4];
+ }
+
+// cout << " Local Trigger " << " " << fNumber << " " <<
+// xOutput << " " << yOutput << " " << fDev << " " << fStripX11 << " " <<
+// fTrigY << " " << fStripY11 << "\n";
+
+ if (xOutput && yOutput){ // trigger in X and Y
+ fOutput =1;
+
+ Int_t sign = 0;
+ if ( !fMinDev[4] && deviation ) sign=-1;
+ if ( !fMinDev[4] && !deviation ) sign= 0;
+ if ( fMinDev[4] == 1 ) sign=+1;
+
+ deviation *= sign;
+
// calculate deviation in [0;+30]
- fDev += 15;
-
+ deviation += 15;
+
// GET LUT OUTPUT FOR icirc/istripX1/deviation/istripY
- fLUT->GetLutOutput(fNumber, fStripX11, fDev, fStripY11, fLutLpt, fLutHpt, fLutApt);
- }
+ fLUT->GetLutOutput(GetNumber(), fStripX11, deviation, fStripY11, fLutLpt, fLutHpt);
+ }
+
+ fResponse = fLutLpt[0] +
+ static_cast<int>(fLutLpt[1]<<1) +
+ static_cast<int>(fLutHpt[0]<<2) +
+ static_cast<int>(fLutHpt[1]<<3);
+
}
//___________________________________________
Int_t AliMUONLocalTriggerBoard::GetI() const
{
-//* old numbering
-//*
+/// old numbering
+///
const Int_t kMaxfields = 2; char **fields = new char*[kMaxfields];
char s[100]; strcpy(s, GetName());
//___________________________________________
void AliMUONLocalTriggerBoard::Mask(Int_t index, UShort_t mask)
{
-//* set mask
-//*
+/// set mask
+///
if ( index >= 0 && index < 2*4 )
{
Int_t i = index/4;
//___________________________________________
void AliMUONLocalTriggerBoard::Scan(Option_t *option) const
{
-//* full dump
-//*
- TString op = option;
+/// full dump
+///
+ TString op = option;
if (op.Contains("CONF")) Conf();
}
}
+//___________________________________________
+void AliMUONLocalTriggerBoard::Conf() const
+{
+/// board switches
+///
+ cout << "Switch(" << GetName() << ")"
+ << " x2d = " << GetSwitch(0)
+ << " x2m = " << GetSwitch(1)
+ << " x2u = " << GetSwitch(2)
+ << " OR[0] = " << GetSwitch(3)
+ << " OR[1] = " << GetSwitch(4)
+ << " EN-Y = " << GetSwitch(5)
+ << " ZERO-ALLY-LSB = " << GetSwitch(6)
+ << " ZERO-down = " << GetSwitch(7)
+ << " ZERO-middle = " << GetSwitch(8)
+ << " ZERO-up = " << GetSwitch(9)
+ << " trans. conn. " << GetTC()
+ << " Slot = " << fSlot
+ << endl;
+}
+
//___________________________________________
void AliMUONLocalTriggerBoard::Resp(Option_t *option) const
{
-//* board I/O
-//*
+/// board I/O
+///
TString op = option;
if (op.Contains("I"))
printf(" \n");
}
- if (op.Contains("F"))
- {
- Int_t icirc = GetI();
- Int_t idCircuit = fgkCircuitId[icirc];
-
- Int_t deviation = 0, iStripY = 0;
-
- for (Int_t i=0; i<4; i++) iStripY += static_cast<int>( fCoordY[i] << i );
-
- for (Int_t i=0; i<4; i++) deviation += Int_t(fMinDev[i]<<i);
-
- Float_t pt = 0.; //triggerCircuit->PtCal(fStripX11, fDev, fStripY11);
- printf("-------------------------------------------\n");
- printf(" Local Trigger info for circuit Id %i (number %i ) \n", idCircuit, icirc);
- printf(" istripX1 signDev deviation istripY = %i %i %i %i \n", fStripX11, fMinDev[4], deviation, iStripY);
- printf(" pt = %f (GeV/c) \n", pt);
- printf("-------------------------------------------\n");
- printf(" Local Trigger Lut Output = Lpt : ");
- for (Int_t i=1; i>=0; i--) printf("%i", fLutLpt[i]);
- printf(" Hpt : ");
- for (Int_t i=1; i>=0; i--) printf("%i", fLutHpt[i]);
- printf(" Apt : ");
- for (Int_t i=1; i>=0; i--) printf("%i", fLutApt[i]);
- printf("\n");
- printf("-------------------------------------------\n");
- }
}
//___________________________________________
void AliMUONLocalTriggerBoard::Response()
{
-//* algo
-//*
+/// algo
+///
Int_t xX1[16], xX2[16], xXX3[32], xXX4[32];
TBits x1(16), x2(16), x3(16), x4(16);
xXX4[i+24] = x4u[i];
}
- Int_t coinc44 = 0;
+// Int_t coinc44 = 0;
- TrigX(xX1, xX2, xXX3, xXX4, coinc44);
+ TrigX(xX1, xX2, xXX3, xXX4);
Int_t yY1[16], yY2[16], yY3[16], yY4[16];
yY4D[i] = y4d[i];
}
- TrigY(yY1, yY2, yY3, yY4, yY3U, yY3D, yY4U, yY4D, coinc44);
+ TrigY(yY1, yY2, yY3, yY4, yY3U, yY3D, yY4U, yY4D);
-// ASIGN fLutLpt, fLutHpt, fLutApt
- LocalTrigger();
-
- fResponse = fLutApt[0] +
- static_cast<int>(fLutApt[1]<<1) +
- static_cast<int>(fLutLpt[0]<<2) +
- static_cast<int>(fLutLpt[1]<<3) +
- static_cast<int>(fLutHpt[0]<<4) +
- static_cast<int>(fLutHpt[1]<<5);
+// ASIGN fLutLpt, fLutHpt
+ LocalTrigger();
}
-ClassImp(AliMUONLocalTriggerBoard)
-