/// \author Laurent Aphecetche, Christian Finck Subatech
/// \author Bogdan Vulpescu, LPC Clermont-Ferrand
+using std::endl;
+using std::cout;
+using std::ofstream;
/// \cond CLASSIMP
ClassImp(AliMUONTriggerIO)
/// \endcond
Bool_t trigx = kFALSE;
// read two lut addresses at once, 32768/2=16384 times
- fread(buffer,fgkLocalLutSize,1,flut);
+ if (fread(buffer,fgkLocalLutSize,1,flut) == 0) {
+ AliWarning("Error reading the LUT file");
+ return;
+ }
// create the 32767 addresses for the 4-bits lpt and hpt half-bytes
for (UShort_t ilut = 0; ilut < fgkLocalLutSize*2; ilut += 2)
ReadLocalLUT(lut,fRegionalTrigger.LocalBoardId(i),flut);
}
+ //
+ // 1st/2nd cut code pt cut [GeV/c]
+ //
+ // 0 0.5 (a.k.a. Apt)
+ // 1 1.0 (a.k.a. Lpt)
+ // 2 1.7 (a.k.a. Hpt)
+ // 3 4.2 (a.k.a. infinity)
+ // 4 free
+ // .
+ // .
+ // .
+ //15 default (for backward compatibility)
+
+ UChar_t lutCode = 0xFF;
+
+ if (!fread(&lutCode,1,1,flut)) {
+ AliWarning("No LUT info in the file (old version)");
+ }
+ AliInfo(Form("LUT code: 0x%02x",lutCode));
+
fclose(flut);
-
+
+ lut.SetLutCode(lutCode);
+
return kTRUE;
}
{
/// Fill the various masks store from files
- if ( !regionalFile || strlen(regionalFile)==0 )
+ if ( !regionalConfig || !regionalFile || strlen(regionalFile)==0 )
{
AliError("Must have a regional file name to proceeed");
return kFALSE;
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);
// 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;
//_____________________________________________________________________________
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()) {
- TIter next(regionalConfig->CreateCrateIterator());
- AliMUONTriggerCrateConfig* crate;
-
- while ( ( crate = static_cast<AliMUONTriggerCrateConfig*>(next()) ) )
- {
- 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);