// $Id$
#include "AliMUONTriggerIO.h"
+#include "AliMUONTriggerLut.h"
+#include "AliMUONCalibParamNI.h"
+#include "AliMUONVStore.h"
-#include "AliLog.h"
#include "AliMpCDB.h"
#include "AliMpHelper.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
#include "AliMpLocalBoard.h"
#include "AliMpTriggerCrate.h"
-#include "AliMUONTriggerLut.h"
-#include "AliMUONCalibParamNI.h"
-#include "AliMUONVStore.h"
+#include "AliLog.h"
#include <Riostream.h>
#include <TSystem.h>
//_____________________________________________________________________________
AliMUONTriggerIO::AliMUONTriggerIO()
: TObject(),
- fTriggerCrates(true),
- fLocalBoards(true),
- fGlobalCrate(),
- fDDLs(22) // FIXME should be in cst
+ fRegionalTrigger(),
+ fGlobalCrate()
{
/// ctor
-
- fTriggerCrates.SetOwner(true);
- fTriggerCrates.SetSize(AliMpConstants::LocalBoardNofChannels());
-
- fLocalBoards.SetOwner(true);
- fLocalBoards.SetSize(AliMpConstants::TotalNofLocalBoards()); // included non-notified boards
}
//_____________________________________________________________________________
AliMUONTriggerIO::AliMUONTriggerIO(const char* regionalFileToRead)
:TObject(),
- fTriggerCrates(true),
- fLocalBoards(true),
- fGlobalCrate(),
- fDDLs(22)
+ fRegionalTrigger(),
+ fGlobalCrate()
{
/// ctor
ReadRegional(regionalFileToRead,0);
lut.SetContent("HptPlus",icirc,istripX,idev,iLptPlus);
}
-//_____________________________________________________________________________
-Int_t
-AliMUONTriggerIO::LocalBoardId(Int_t index) const
-{
- /// Return the i-th localBoardId, or -1 if index is out of bounds
- if ( index >= 0 && index < fLocalBoards.GetSize() )
- {
- AliMpLocalBoard* board = static_cast<AliMpLocalBoard*>(fLocalBoards.GetObject(index));
- return board->GetId();
- }
- return -1;
-}
-
//_____________________________________________________________________________
Int_t
AliMUONTriggerIO::ReadLocalMasks(const char* localFile, AliMUONVStore& localMasks) const
/// bit value 0 means enable, 1 means disable *
Int_t nDarc = 0;
- if (!AliMpDDLStore::ReadGlobalTrigger(fGlobalCrate, globalFile)) return 0;
+ if ( ! fGlobalCrate.ReadData(globalFile) ) return 0;
UChar_t mask = fGlobalCrate.GetFirstDarcDisable();
ULong_t vmeAddr = fGlobalCrate.GetFirstDarcVmeAddr();
/// determine the order in which local boards will appear in local
/// and lut files.
- if (!AliMpDDLStore::ReadRegionalTrigger(fTriggerCrates, fLocalBoards,
- fDDLs, regionalFile, false)) return 0;
-
+ if ( ! fRegionalTrigger.ReadData(regionalFile) ) return 0;
+
Int_t nCrates(0);
- for (Int_t iCrate = 0; iCrate < fTriggerCrates.GetSize(); ++iCrate)
+ for (Int_t iCrate = 0; iCrate < fRegionalTrigger.GetNofTriggerCrates(); ++iCrate)
{
- AliMpTriggerCrate* crate = static_cast<AliMpTriggerCrate*>(fTriggerCrates.GetObject(iCrate));
+ AliMpTriggerCrate* crate = fRegionalTrigger.GetTriggerCrateFast(iCrate);
if (warn)
{
return kFALSE;
}
- for (Int_t iCrate = 0; iCrate < fTriggerCrates.GetSize(); ++iCrate)
+ for (Int_t iCrate = 0; iCrate < fRegionalTrigger.GetNofTriggerCrates(); ++iCrate)
{
- AliMpTriggerCrate* crate = static_cast<AliMpTriggerCrate*>(fTriggerCrates.GetObject(iCrate));
+ AliMpTriggerCrate* crate = fRegionalTrigger.GetTriggerCrateFast(iCrate);
out << crate->GetName() << endl;
out << Form("%02x", crate->GetId()) << endl;
{
Int_t localBoardId = crate->GetLocalBoardId(iLocal);
- AliMpLocalBoard* board = static_cast<AliMpLocalBoard*>(fLocalBoards.GetValue(localBoardId));
+ AliMpLocalBoard* board = fRegionalTrigger.FindLocalBoard(localBoardId);
out << Form("%02d ", board->GetSlot())
<< board->GetName()
UShort_t maskBuffer[8];
- for (Int_t iCrate = 0; iCrate < fTriggerCrates.GetSize(); ++iCrate)
+ for (Int_t iCrate = 0; iCrate < fRegionalTrigger.GetNofTriggerCrates(); ++iCrate)
{
- AliMpTriggerCrate* crate = static_cast<AliMpTriggerCrate*>(fTriggerCrates.GetObject(iCrate));
+ AliMpTriggerCrate* crate = fRegionalTrigger.GetTriggerCrateFast(iCrate);
UShort_t mask = crate->GetMask(); // getting mask from current config
}
}
}
-
-//_____________________________________________________________________________
-AliMpTriggerCrate*
-AliMUONTriggerIO::GetTriggerCrate(TString name, Bool_t warn) const
-{
-/// Return trigger crate with given name
-
- AliMpTriggerCrate* crate
- = (AliMpTriggerCrate*) fTriggerCrates.GetValue(name.Data());
-
- if ( ! crate && warn ) {
- AliErrorStream()
- << "Trigger crate with name = " << name.Data() << " not defined." << endl;
- }
-
- return crate;
-}
//_____________________________________________________________________________
-AliMpLocalBoard*
-AliMUONTriggerIO::GetLocalBoard(Int_t localBoardId, Bool_t warn) const
-{
-/// Return bus patch with given Id
-
- AliMpLocalBoard* localBoard
- = (AliMpLocalBoard*) fLocalBoards.GetValue(localBoardId);
-
- if ( ! localBoard && warn ) {
- AliErrorStream()
- << "Local board with Id = " << localBoardId << " not defined." << endl;
- }
-
- return localBoard;
-}
-//______________________________________________________________________________
-AliMpDDL*
-AliMUONTriggerIO::GetDDL(Int_t ddlId, Bool_t warn) const
-{
-/// Return DDL for given ddlId
-
- AliMpDDL* ddl
- = (AliMpDDL*)fDDLs.At(ddlId);
-
- if ( ! ddl && warn ) {
- AliErrorStream()
- << "DDL with Id = " << ddlId << " not defined." << endl;
- }
+Int_t
+AliMUONTriggerIO::LocalBoardId(Int_t index) const
+{
+ /// Return the i-th localBoardId, or -1 if index is out of bounds
- return ddl;
+ AliMpLocalBoard* board = fRegionalTrigger.GetLocalBoard(index);
+ if ( ! board ) return -1;
+
+ return board->GetId();
}
//_____________________________________________________________________________
AliMpLocalBoard* boardMapping = reinterpret_cast<AliMpLocalBoard*>(value);
Int_t localBoardId = boardMapping->GetId();
- AliMpLocalBoard* board = static_cast<AliMpLocalBoard*>(fLocalBoards.GetValue(localBoardId));
+ AliMpLocalBoard* board = fRegionalTrigger.FindLocalBoard(localBoardId);
+ if ( ! board ) {
+ AliFatal("Board found in mapping but not in regional trigger");
+ return;
+ }
- if (board->GetCrate().CompareTo(boardMapping->GetCrate()) != 0)
+ if ( board->GetCrate().CompareTo(boardMapping->GetCrate()) != 0 )
{
AliWarning(Form("Crate Name different for board %d (%s %s)", localBoardId, boardMapping->GetCrate().Data(),
board->GetCrate().Data()));
if (modified)
{
+ AliMpDDLStore::Instance()->SetRegionalTrigger(fRegionalTrigger);
AliMpCDB::WriteDDLStore(false);
AliWarning("Wrote new version of mapping in databse");
if (writeFile)