#include <TBits.h>
#include <Riostream.h>
+using std::endl;
+using std::cout;
/// \cond CLASSIMP
ClassImp(AliMUONLocalTriggerBoard)
/// \endcond
}
-//___________________________________________
-Int_t AliMUONLocalTriggerBoard::GetNumber() const
-{
-/// return board number for notified boards
-
- if (fMpLocalBoard->IsNotified())
- return fMpLocalBoard->GetId();
- else
- return 0;
-}
-
//___________________________________________
void AliMUONLocalTriggerBoard::Reset()
{
}
-//___________________________________________
-void AliMUONLocalTriggerBoard::Setbit(Int_t strip, Int_t cathode, Int_t chamber)
-{
-/// 0 .. LBS : N-1 .. MSB
- TBits w, m;
-
- UShort_t xy = fXY[cathode][chamber], mask = fMask[cathode][chamber];
-
- w.Set(16,&xy);
- m.Set(16,&mask);
-
- Int_t s = strip - int(strip / 16) * 16;
-
- w.SetBitNumber(s);
-
- w &= m;
-
- UShort_t value;
-
- w.Get(&value);
-
- fXY[cathode][chamber] = value;
-}
-
//___________________________________________
void AliMUONLocalTriggerBoard::SetbitM(Int_t strip, Int_t cathode, Int_t chamber)
{
/// 0 .. LBS : N-1 .. MSB
- TBits w, m;
-
- UShort_t xy = fXY[cathode][chamber], mask = fMask[cathode][chamber];
-
- w.Set(16,&xy);
- m.Set(16,&mask);
-
- w.SetBitNumber(strip);
-
- w &= m;
-
- UShort_t value;
-
- w.Get(&value);
-
- fXY[cathode][chamber] = value;
+ UShort_t stripBit = ( (1<<strip) & 0xFFFF );
+ fXY[cathode][chamber] |= ( stripBit & fMask[cathode][chamber] );
}
}
}
-//___________________________________________
-void AliMUONLocalTriggerBoard::Module(char *mod)
-{
-/// get module from name
-///
- const Int_t kMaxfields = 2; char **fields = new char*[kMaxfields];
-
- char s[100]; strcpy(s, GetName());
-
- Int_t numlines = 0;
-
- for (char *token = strtok(s, "B");
- token != NULL;
- token = strtok(NULL, " "))
- {
- fields[numlines] = new char[strlen(token)+1];
- strcpy(fields[numlines++],token);
- }
-
- strcpy(mod,fields[0]);
-}
-
//___________________________________________
void AliMUONLocalTriggerBoard::TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32])
{
tmpy4dto16[2*i+1] = (y4d[i]&GetSwitch(0)) | (y4d[2*i+1]&!GetSwitch(0));
}
+ for (i=0; i<16; i++) ch3[i] = ch4[i] = 0;
+
if (GetSwitch(3)==0&&GetSwitch(4)==0){
for (i=0; i<16; i++){
ch3[i] = tmpy3to16[i];
{
/// old numbering
///
+
const Int_t kMaxfields = 2; char **fields = new char*[kMaxfields];
- char s[100]; strcpy(s, GetName());
+ for (Int_t i = 0; i < kMaxfields; i++)
+ fields[i] = new char[1];
+
+ char s[100]; strncpy(s, GetName(), 99);
Int_t numlines = 0;
token != NULL;
token = strtok(NULL, " "))
{
+ delete [] fields[numlines];
fields[numlines] = new char[strlen(token)+1];
strcpy(fields[numlines++], token);
}
Int_t ic = 0;
for (Int_t i=0; i<234; i++) if (fgkCircuitId[i] == code) {ic = i; break;}
+
+ delete [] fields;
return ic;
}
if ( index >= 0 && index < 2*4 )
{
Int_t i = index/4;
- Int_t j = index - i*4;
+ Int_t j = index%4;
fMask[i][j]=mask;
}
else