// ----------------------------------------------------------------------------- // ----- TMbsUnpackTofPar source file ----- // ----- ----- // ----- created by C. Simon on 2014-03-18 ----- // ----- ----- // ----- based on TMbsUnpackTofPar by P.-A. Loizeau ----- // ----- https://subversion.gsi.de/fairroot/cbmroot/development/ploizeau/ ----- // ----- main/unpack/tof/TMbsUnpackTofPar.cxx ----- // ----- revision 21645, 2013-09-06 ----- // ----------------------------------------------------------------------------- #include "TMbsUnpackTofPar.h" // TOF headers #include "TofDef.h" // FAIR headers #include "FairLogger.h" #include "FairParamList.h" // ROOT headers ClassImp(TMbsUnpackTofPar) TMbsUnpackTofPar::TMbsUnpackTofPar() : FairParGenericSet("TMbsUnpackTofPar","Mbs Unpack parameters for the ToF","TestDefaultContext"), fiMbsSourceMode(0), fuCbmOutOn(0), fuVftxDebug(0), fuNbVmeBoards(0), fiMbsVmeMapping(), fuNbNonVmeBoards(0), fiNonVmeMapping(), fuNbScalerB(0), fuNbScalerActiveB(0), fuNbTriglog(0), fuNbTriglogActive(0), fuNbScalOrMu(0), fuNbScalOrMuActive(0), fuNbTdc(0), fuNbTdcActive(0), fuNbV1290(0), fuNbVftx(0), fuNbGet4(0), fuTrbSebNb(0), fuTrbTdcNb(0), fuTrbHubNb(0), fMapFpgaAddrToInDataFlag(), fMapFpgaAddrToTrbSebAddr(), fMapTrbSebAddrToFpgaNb(), fMapTrbSebAddrToFpgaInDataNb(), fMapTrbSebAddrToUnpackTdcNb(), fMapTrbSebAddrToTrbSebIndex(), fMapTrbSebIndexToTrbSebAddr(), fMapFpgaAddrToActiveTdcIndex(), fMapActiveTdcIndexToFpgaAddr(), fiTriggerRejection(0), fuNbCtsTrigChs(0), fiCtsTriggerMap(), fiTrbTdcBitMode(0) { } TMbsUnpackTofPar::TMbsUnpackTofPar(const char* name, const char* title, const char* context, Int_t iMode ) : FairParGenericSet(name,title,context), fiMbsSourceMode(iMode), fuCbmOutOn(0), fuVftxDebug(0), fuNbVmeBoards(0), fiMbsVmeMapping(), fuNbNonVmeBoards(0), fiNonVmeMapping(), fuNbScalerB(0), fuNbScalerActiveB(0), fuNbTriglog(0), fuNbTriglogActive(0), fuNbScalOrMu(0), fuNbScalOrMuActive(0), fuNbTdc(0), fuNbTdcActive(0), fuNbV1290(0), fuNbVftx(0), fuNbGet4(0), fuTrbSebNb(0), fuTrbTdcNb(0), fuTrbHubNb(0), fMapFpgaAddrToInDataFlag(), fMapFpgaAddrToTrbSebAddr(), fMapTrbSebAddrToFpgaNb(), fMapTrbSebAddrToFpgaInDataNb(), fMapTrbSebAddrToUnpackTdcNb(), fMapTrbSebAddrToTrbSebIndex(), fMapTrbSebIndexToTrbSebAddr(), fMapFpgaAddrToActiveTdcIndex(), fMapActiveTdcIndexToFpgaAddr(), fiTriggerRejection(0), fuNbCtsTrigChs(0), fiCtsTriggerMap(), fiTrbTdcBitMode(0) { } TMbsUnpackTofPar::~TMbsUnpackTofPar() { } void TMbsUnpackTofPar::clear(void) { status = kFALSE; resetInputVersions(); fiMbsSourceMode = 0; fuCbmOutOn = 0; fuVftxDebug = 0; fuNbVmeBoards = 0; fuNbNonVmeBoards = 0; fuNbScalerB = 0; fuNbScalerActiveB = 0; fuNbTriglog = 0; fuNbTriglogActive = 0; fuNbScalOrMu = 0; fuNbScalOrMuActive = 0; fuNbTdc = 0; fuNbTdcActive = 0; fuNbV1290 = 0; fuNbVftx = 0; fuNbGet4 = 0; fuTrbSebNb = 0; fuTrbTdcNb = 0; fuTrbHubNb = 0; fuNbCtsTrigChs = 0; fiTrbTdcBitMode = 0; fMapFpgaAddrToInDataFlag.clear(); fMapFpgaAddrToTrbSebAddr.clear(); fMapTrbSebAddrToFpgaNb.clear(); fMapTrbSebAddrToFpgaInDataNb.clear(); fMapTrbSebAddrToUnpackTdcNb.clear(); fMapTrbSebAddrToTrbSebIndex.clear(); fMapTrbSebIndexToTrbSebAddr.clear(); fMapFpgaAddrToActiveTdcIndex.clear(); fMapActiveTdcIndexToFpgaAddr.clear(); } void TMbsUnpackTofPar::putParams(FairParamList* l) { if (!l) { return; } l->add("MbsSourceMode", fiMbsSourceMode); l->add("WriteDataInCbmOut", (Int_t)fuCbmOutOn); l->add("VftxDebug", (Int_t)fuVftxDebug); l->add("MbsNbVmeBoards", (Int_t)fuNbVmeBoards); l->add("MbsVmeMapping", fiMbsVmeMapping); l->add("NbNonVmeBoards", (Int_t)fuNbNonVmeBoards); l->add("NonVmeMapping", fiNonVmeMapping); l->add("TriggerRejection", fiTriggerRejection); l->add("NbCtsTrigChs", (Int_t)fuNbCtsTrigChs); l->add("CtsTriggerMap", fiCtsTriggerMap); l->add("TrbTdcBitMode", fiTrbTdcBitMode); } Bool_t TMbsUnpackTofPar::getParams(FairParamList* l) { if (!l) { return kFALSE; } clear(); LOG(DEBUG2)<<"Get the MBS unpack parameters."<fill("MbsSourceMode", &fiMbsSourceMode) ) return kFALSE; Int_t iTempCaster = 0; if ( ! l->fill("WriteDataInCbmOut", &iTempCaster) ) return kFALSE; fuCbmOutOn = (UInt_t)iTempCaster; iTempCaster = 0; if ( ! l->fill("VftxDebug", &iTempCaster) ) return kFALSE; fuVftxDebug = (UInt_t)iTempCaster; iTempCaster = 0; if ( ! l->fill("MbsNbVmeBoards", &iTempCaster) ) return kFALSE; fuNbVmeBoards = (UInt_t)iTempCaster; if( 0 < fuNbVmeBoards ) { fiMbsVmeMapping.Set( fuNbVmeBoards * tofMbs::kuNbFieldsMapping ); if ( ! l->fill("MbsVmeMapping", &fiMbsVmeMapping) ) return kFALSE; } iTempCaster = 0; if ( ! l->fill("NbNonVmeBoards", &iTempCaster) ) return kFALSE; fuNbNonVmeBoards = (UInt_t)iTempCaster; if( 0 < fuNbNonVmeBoards ) { fiNonVmeMapping.Set( fuNbNonVmeBoards * tofMbs::kuNbFieldsMapping ); if ( ! l->fill("NonVmeMapping", &fiNonVmeMapping) ) return kFALSE; } // if( 0 < fuNbNonVmeBoards ) if ( ! l->fill("TriggerRejection", &fiTriggerRejection) ) return kFALSE; iTempCaster = 0; if ( ! l->fill("NbCtsTrigChs", &iTempCaster) ) { LOG(WARNING)<<"Field 'NbCtsTrigChs' not existing in the unpack parameter file!"<fill("CtsTriggerMap", &fiCtsTriggerMap) ) { LOG(WARNING)<<"Field 'CtsTriggerMap' not existing in the unpack parameter file!"<fill("TrbTdcBitMode", &fiTrbTdcBitMode) ) { LOG(WARNING)<<"Field 'TrbTdcBitMode' not existing in the unpack parameter file!"< Index "<>32, (uFullTag&0xFFFFFFFF) )< Index "< Unknown board type " < Unknown board type " < Unknown board type " < Unknown board type " < Index "<> uChannel) & 0x1); } } return bUnpack; } UInt_t TMbsUnpackTofPar::GetFirstTrbTrigger(UChar_t cTriggerType, UInt_t uTriggerPattern) { UInt_t uFirstPattern = uTriggerPattern; for( UInt_t uChannel = 0; uChannel < fuNbCtsTrigChs; uChannel++) { if( (uFirstPattern >> uChannel) & 0x1 ) { if( (UChar_t)GetCtsTrigMappingField(uChannel,tofMbs::TriggerType) != cTriggerType) { uFirstPattern = uFirstPattern ^ (0x1 << uChannel); } } } return uFirstPattern; }