//_____________________________________________________________________________
AliMUONTriggerIO::AliMUONTriggerIO()
: TObject(),
- fRegionalTrigger(),
- fGlobalCrate()
+ fRegionalTrigger()
{
/// ctor
}
//_____________________________________________________________________________
AliMUONTriggerIO::AliMUONTriggerIO(const char* regionalFileToRead)
:TObject(),
- fRegionalTrigger(),
- fGlobalCrate()
+ fRegionalTrigger()
{
/// ctor
ReadRegionalConfig(regionalFileToRead,0);
UShort_t maskBuffer[8];
- Int_t nLocalBoards(0);
-
+ Int_t localBoardIndex(0);
+
while ( fread ( maskBuffer, 2, 8, fp ) )
{
- Int_t localBoardId = LocalBoardId(nLocalBoards);
+ Int_t localBoardId = fRegionalTrigger.LocalBoardId(localBoardIndex);
AliDebug(1,Form("LB %03d X1 %4x X2 %4x X3 %4x X4 %4x "
"Y1 %4x Y2 %4x Y3 %4x Y4 %4x",
localBoardId,
maskBuffer[6],
maskBuffer[7]));
- if ( localBoardId )
+ if ( localBoardId > 0 )
{
AliMUONVCalibParam* localBoard = new AliMUONCalibParamNI(1,8,localBoardId,0,0);
for ( Int_t index = 0; index < 8; ++index )
{
- localBoard->SetValueAsInt(index,0,maskBuffer[index]);
+ localBoard->SetValueAsInt(index,0,maskBuffer[index]);
}
localMasks.Add(localBoard);
}
+ else
+ {
+ AliError(Form("Oups. Got localBoardId=%d for index=%d",localBoardId,localBoardIndex));
+ }
- ++nLocalBoards;
+ ++localBoardIndex;
}
- if ( nLocalBoards != NofLocalBoards() )
+ if ( localBoardIndex != NofLocalBoards() )
{
AliError(Form("Read %d out of %d local boards",
- nLocalBoards, NofLocalBoards()));
+ localBoardIndex, NofLocalBoards()));
}
fclose(fp);
- return nLocalBoards;
+ return localBoardIndex+1;
}
//_____________________________________________________________________________
for ( Int_t i = 0; i < NofLocalBoards(); ++i )
{
- ReadLocalLUT(lut,LocalBoardId(i),flut);
+ ReadLocalLUT(lut,fRegionalTrigger.LocalBoardId(i),flut);
}
fclose(flut);
//_____________________________________________________________________________
Bool_t
AliMUONTriggerIO::ReadConfig(const char* localFile,
- const char* regionalFile,
- const char* globalFile,
- AliMUONVStore* localMasks,
- AliMUONRegionalTriggerConfig* regionalConfig,
- AliMUONGlobalCrateConfig* globalConfig)
+ const char* regionalFile,
+ const char* globalFile,
+ AliMUONVStore* localMasks,
+ AliMUONRegionalTriggerConfig* regionalConfig,
+ AliMUONGlobalCrateConfig* globalConfig)
{
/// Fill the various masks store from files
- if ( !regionalFile )
+ if ( !regionalFile || strlen(regionalFile)==0 )
{
AliError("Must have a regional file name to proceeed");
return kFALSE;
}
- Int_t nCrates = ReadRegionalConfig(regionalFile, regionalConfig);
+ AliDebug(1,Form("regionalConfig=%p",regionalConfig));
- if (!nCrates) return kFALSE;
+ Int_t nCrates = ReadRegionalConfig(regionalFile, regionalConfig);
+
+ if (!nCrates)
+ {
+ AliError("nCrates=0 !");
+ return kFALSE;
+ }
- if (localMasks && localFile)
+ if (localMasks && localFile && strlen(localFile) > 0 )
{
Int_t nLocal = ReadLocalMasks(localFile,*localMasks);
AliDebug(1,Form("Read masks for %d local boards",nLocal));
}
Int_t nDarc = ReadGlobalConfig(globalFile, globalConfig);
- AliDebug(1,Form("Read disable for %d DARC boards",nDarc));
+ AliDebug(1,Form("Read config for %d DARC boards",nDarc));
if (!nDarc) return kFALSE;
//_____________________________________________________________________________
Int_t
- AliMUONTriggerIO::ReadGlobalConfig(const char* globalFile, AliMUONGlobalCrateConfig* globalConfig)
+ AliMUONTriggerIO::ReadGlobalConfig(const char* globalFile, AliMUONGlobalCrateConfig* globalConfig) const
{
/// read the global crate file
/// the masks are disable bit for each crate, 8 per darc board
AliMUONTriggerIO::ReadRegionalConfig(const char* regionalFile, AliMUONRegionalTriggerConfig* regionalConfig)
{
/// Read regional file to fill
+
+ AliDebug(1,Form("regionalConfig=%p",regionalConfig));
+
Int_t nCrates = 0;
if ( !(nCrates = regionalConfig->ReadData(regionalFile)) ) return 0;
for ( Int_t i = 0; i < NofLocalBoards(); ++i )
{
- WriteLocalLUT(lut,LocalBoardId(i),flut);
+ WriteLocalLUT(lut,fRegionalTrigger.LocalBoardId(i),flut);
}
fclose(flut);
AliMUONTriggerIO::WriteConfig(const char* localFile,
const char* regionalFile,
const char* globalFile,
- AliMUONVStore* localMasks,
+ const AliMUONVStore* localMasks,
AliMUONRegionalTriggerConfig* regionalConfig,
AliMUONGlobalCrateConfig* globalConfig) const
{
/// write config files
Bool_t ok;
- ok = WriteLocalMasks(localFile, *localMasks, regionalConfig);
+ ok = WriteLocalMasks(localFile, *localMasks);
ok &= WriteRegionalConfig(regionalFile, regionalConfig);
ok &= WriteGlobalConfig(globalFile, globalConfig);
}
out << globalConfig->GetName() << endl;
- out << globalConfig->GetGlobalCrateEnable() << endl;
+ out << Form("0x%x",globalConfig->GetGlobalCrateEnable()) << endl;
// Jtag
out << globalConfig->GetJtagName() << endl;
- out << Form("0x%08x", globalConfig->GetJtagVmeAddr()) << endl;
+ out << Form("0x%08lx", globalConfig->GetJtagVmeAddr()) << endl;
out << Form("%d %d %d", globalConfig->GetJtagClockDiv(),
globalConfig->GetJtagRxPhase(), globalConfig->GetJtagRdDelay()) << endl;
// first darc board
out << globalConfig->GetFirstDarcName() << endl;
- out << Form("0x%08x", globalConfig->GetFirstDarcVmeAddr()) << endl;
+ out << Form("0x%08lx", globalConfig->GetFirstDarcVmeAddr()) << endl;
out << globalConfig->GetFirstDarcType() << endl;
disable = globalConfig->GetFirstDarcDisable();
out << Form("0x%02x", disable) << endl;
// second darc board
out << globalConfig->GetSecondDarcName() << endl;
- out << Form("0x%08x", globalConfig->GetSecondDarcVmeAddr()) << endl;
+ out << Form("0x%08lx", globalConfig->GetSecondDarcVmeAddr()) << endl;
out << globalConfig->GetSecondDarcType() << endl;
disable = globalConfig->GetSecondDarcDisable();
out << Form("0x%02x", disable) << endl;
// global board
out << globalConfig->GetGlobalName() << endl;
- out << Form("0x%08x", globalConfig->GetGlobalVmeAddr()) << endl;
+ out << Form("0x%08lx", globalConfig->GetGlobalVmeAddr()) << endl;
for (Int_t i = 0; i < globalConfig->GetGlobalNofRegisters(); ++i)
out << Form("0x%x", globalConfig->GetGlobalRegister(i)) << endl;
// Fet board
out << globalConfig->GetFetName() << endl;
- out << Form("0x%08x", globalConfig->GetFetVmeAddr()) << endl;
+ out << Form("0x%08lx", globalConfig->GetFetVmeAddr()) << endl;
for (Int_t i = 0; i < globalConfig->GetFetNofRegisters(); ++i)
out << Form("0x%x", globalConfig->GetFetRegister(i)) << endl;
return kFALSE;
}
-
- for (Int_t iCrate = 0; iCrate < nCrate; ++iCrate)
- {
- AliMpTriggerCrate* crate = fRegionalTrigger.GetTriggerCrateFast(iCrate);
-
- AliMUONTriggerCrateConfig* crateConfig = regionalConfig->FindTriggerCrate(crate->GetName());
- if (!crateConfig)
+ Int_t nofDDLs = 0;
+ TString name;
+ AliMpTriggerCrate* crate;
+ for (Int_t ddlId = 0; ddlId < 2; ddlId++) // right & left side
{
- AliError(Form("Cannot find crate %s in CDB", crate->GetName()));
- return kFALSE;
+ for (Int_t crateId = 0; crateId < 8; crateId++) // 8 crates/regional boards for each side.
+ {
+
+ name = AliMpTriggerCrate::GenerateName(crateId, ddlId, nofDDLs);
+
+ crate = fRegionalTrigger.FindTriggerCrate(name, false);
+
+ AliMUONTriggerCrateConfig* crateConfig = regionalConfig->FindTriggerCrate(crate->GetName());
+ if (!crateConfig)
+ {
+ AliError(Form("Cannot find crate %s in CDB", crate->GetName()));
+ return kFALSE;
+ }
+
+ out << crate->GetName() << endl;
+ out << Form("%02x", crate->GetId()) << endl;
+ out << crateConfig->GetMode() << endl;
+ out << crateConfig->GetCoinc() << endl;
+ out << Form("%04x", crateConfig->GetMask()) << endl;
+ out << Form("%02d",crate->GetNofLocalBoards()) << endl;
+
+ for (Int_t iLocal = 0; iLocal < crate->GetNofLocalBoards(); ++iLocal)
+ {
+ Int_t localBoardId = crate->GetLocalBoardId(iLocal);
+
+ AliMpLocalBoard* board = fRegionalTrigger.FindLocalBoard(localBoardId);
+
+ out << Form("%02d ", board->GetSlot())
+ << board->GetName()
+ << Form(" %03d ", localBoardId)
+ << Form("%03x", board->GetSwitch())
+ << endl;
+
+ out << " ";
+
+ if (board->IsNotified()) {
+ for (Int_t i = 0; i < board->GetNofDEs(); ++i)
+ out << Form("%4d ", board->GetDEId(i));
+ } else {
+ out << Form("%4d ", 0);
+ }
+ out << endl;
+
+ // print copy card numbers & TC
+ out << Form(" %4d %4d", board->GetInputXfrom(), board->GetInputXto());
+ out << Form(" %4d %4d", board->GetInputYfrom(), board->GetInputYto());
+ out << Form(" %4d", board->GetTC()) << endl;
+ }
+ }
}
- out << crate->GetName() << endl;
- out << Form("%02x", crate->GetId()) << endl;
- out << crateConfig->GetMode() << endl;
- out << crateConfig->GetCoinc() << endl;
- out << Form("%04x", crateConfig->GetMask()) << endl;
-
- for (Int_t iLocal = 0; iLocal < crate->GetNofLocalBoards(); ++iLocal)
- {
- Int_t localBoardId = crate->GetLocalBoardId(iLocal);
-
- AliMpLocalBoard* board = fRegionalTrigger.FindLocalBoard(localBoardId);
-
- out << Form("%02d ", board->GetSlot())
- << board->GetName()
- << Form(" %03d ", localBoardId)
- << Form("%03x", board->GetSwitch())
- << endl;
-
- out << " ";
- for (Int_t i = 0; i < board->GetNofDEs(); ++i)
- out << Form("%4d ", board->GetDEId(i));
- out << endl;
-
- // print copy card numbers & TC
- out << Form(" %4d %4d", board->GetInputXfrom(), board->GetInputXto());
- out << Form(" %4d %4d", board->GetInputYfrom(), board->GetInputYto());
- out << Form(" %4d", board->GetTC()) << endl;
- }
- }
out.close();
return kTRUE;
//_____________________________________________________________________________
Bool_t
-AliMUONTriggerIO::WriteLocalMasks(const char* localFile, AliMUONVStore& localMasks, AliMUONRegionalTriggerConfig* regionalConfig) const
+AliMUONTriggerIO::WriteLocalMasks(const char* localFile, const AliMUONVStore& localMasks) const
{
/// write local mask
/// removing/adding enable for a local board need a update of the configuration
}
UShort_t maskBuffer[8];
+ Int_t localBoardIndex(0);
+ while (localBoardIndex < NofLocalBoards()) {
- for (Int_t iCrate = 0; iCrate < regionalConfig->GetNofTriggerCrates(); ++iCrate)
- {
- AliMUONTriggerCrateConfig* crate = regionalConfig->GetTriggerCrateFast(iCrate);
-
- UShort_t mask = crate->GetMask(); // getting mask from current config
+ Int_t localBoardId = fRegionalTrigger.LocalBoardId(localBoardIndex);
- for (Int_t iLocal = 0; iLocal < crate->GetNofLocalBoards(); ++iLocal)
- {
- Int_t localBoardId = crate->GetLocalBoardId(iLocal);
+ AliMUONVCalibParam* localMask =
+ static_cast<AliMUONVCalibParam*>(localMasks.FindObject(localBoardId));
- if ( (mask >> iLocal ) & 0x1 )
+ for (Int_t index = 0; index < 8; ++index)
{
- AliMUONVCalibParam* localMask =
- static_cast<AliMUONVCalibParam*>(localMasks.FindObject(localBoardId));
-
- for (Int_t index = 0; index < 8; ++index)
- {
- maskBuffer[index] = localMask->ValueAsInt(index,0);
- }
-
- fwrite ( maskBuffer, 2, 8, fp);
+ maskBuffer[index] = localMask->ValueAsInt(index,0);
}
+
+ fwrite ( maskBuffer, 2, 8, fp);
+
+ ++localBoardIndex;
- }
}
fclose(fp);
{
/// Return the i-th localBoardId, or -1 if index is out of bounds
- AliMpLocalBoard* board = fRegionalTrigger.GetLocalBoard(index);
- if ( ! board ) return -1;
-
- return board->GetId();
+ return fRegionalTrigger.LocalBoardId(index);
}
+
+//______________________________________________________________________________
+
+Int_t AliMUONTriggerIO::LocalBoardId(Int_t ddlId, Int_t crateId, Int_t localId) const
+{
+ /// Return local board id from crate and local indexes.
+
+ Int_t nofDDLs = 0;
+ TString name = AliMpTriggerCrate::GenerateName(crateId, ddlId, nofDDLs);
+
+ AliMpTriggerCrate* crate = fRegionalTrigger.FindTriggerCrate(name, false);
+ return crate->GetLocalBoardId(localId);
+}