// ----------------------------------------------------------------------------- // ----- 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), 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), fiTriggerRejection(0), fuNbCtsTrigChs(0), 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), 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), fiTriggerRejection(0), fuNbCtsTrigChs(0), 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; }