ROOT logo
//*****************************************************************************
// File: $RCSfile: $
//
// Author: Joern Wuestenfeld
//
// Version: $Revision $
// Modified by $Author $
//
//
//*****************************************************************************
//_HADES_CLASS_DESCRIPTION
///////////////////////////////////////////////////////////////////////////////
// HMdcUnpackePar
//
// Parameter container for the MDC unapcker.
// This container keeps all parameters that are needed for the unpacker of
// the MDC data.
//
// The most important one is the decodingVersion. This defines the structure
// in the raw data read from the hld file.
// The chamberInfo array tells the unpacker in which chamber to expect data,
// that is malformed and needs special treatment.
// The array excludeBlackListMask, excludeBlacklistAddress, recoverBlackListMask
// and recoverBlackListAddress contain information about the malformed datawords.
// The dataword is masked and the result is compared to the address (testXXX functions).
// The recoveryMethode tells the unpacker which function to call for data recovery,
// once the full subevent has been unpacked.
//
//*****************************************************************************
#include "hmdcunpackerpar.h"
#include "hades.h"
#include "hmessagemgr.h"
#include "hevent.h"
#include "heventheader.h"
#include "hpario.h"
#include "hdetpario.h"
#include "hparamlist.h"

ClassImp(HMdcUnpackerPar)

    HMdcUnpackerPar::HMdcUnpackerPar(const char* name, const char* title, const char* context)
    : HParCond(name,title,context)
{
    // Default constructor
    strcpy(detName,"Mdc");
    decodeVersion = -1;
    tdcMode = -1;
    doAddrCorr = -1;
	mapOutUnusedChannels = -1;
}

HMdcUnpackerPar::~HMdcUnpackerPar(void)
{
    //Destructor
}

Bool_t HMdcUnpackerPar::getParams(HParamList *l)
{
    // Retrive parameters from HParamLis,

    if (!l) return kFALSE;
    if(!(l->fill("decodeVersion", &decodeVersion))) return kFALSE;
    if(!(l->fill("tdcMode",&tdcMode))) return kFALSE;
    if(!(l->fill("doAddrCorr",&doAddrCorr))) return kFALSE;
    if(!(l->fill("doMapOutUnusedChannels",&mapOutUnusedChannels))) return kFALSE;
    return kTRUE;
}

Bool_t HMdcUnpackerPar::init(HParIo* inp,Int_t* set)
{
    // intitializes the container from an input
    HDetParIo* input=inp->getDetParIo("HCondParIo");
    if (input) return (input->init(this,set));
    return kFALSE;
}

void HMdcUnpackerPar::printParam(void)
{
    // Print out all parameters.
    SEPERATOR_msg("#",60);
    INFO_msg(10,HMessageMgr::DET_MDC,"HMdcUnpackerPar:");
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"decodeVersion:\t\t%d",decodeVersion);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"tdcMode:\t\t%d",tdcMode);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"addr. corr:\t\t%d",doAddrCorr);
	gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"map unused:\t\t%d",mapOutUnusedChannels);
    SEPERATOR_msg("#",60);
}

void HMdcUnpackerPar::putParams(HParamList *l)
{
    // Put the parameters to the list.
    if (!l) return;
    l->add("decodeVersion",decodeVersion);
    l->add("tdcMode",tdcMode);
    l->add("doAddrCorr",doAddrCorr);
	l->add("doMapOutUnusedChannels",mapOutUnusedChannels);
}

void HMdcUnpackerPar::setParamContext(const char *context)
{
    // Sets the context (normally done via the constructor)
    paramContext=context;
}

Int_t HMdcUnpackerPar::write(HParIo* output)
{
    // writes the container to an output
    HDetParIo* out=output->getDetParIo("HCondParIo");
    if (out) return out->write(this);
    return -1;
}

Int_t HMdcUnpackerPar::getDecodeVersion(void)
{
    // Return the decoding version to be used for the actual run.
    return decodeVersion;
}

Int_t HMdcUnpackerPar::getTdcMode(void)
{
    // Return the mode the TDC chis wher triggering:
    // The TDC can be operated in 2 different modes:
    // mode 0 (default) : trigger on leading and trailing edge
    // mode 1           : trigger on 2 leading edges:
    return tdcMode;
}

Int_t HMdcUnpackerPar::getDoAddrCorr(void)
{
    // Enable address correction of OEP dataword
    return doAddrCorr;
}

Int_t HMdcUnpackerPar::getMapUnusedChannels(void)
{
  // Return wether mapping out of unused channels should be done
  return mapOutUnusedChannels;
}
 hmdcunpackerpar.cc:1
 hmdcunpackerpar.cc:2
 hmdcunpackerpar.cc:3
 hmdcunpackerpar.cc:4
 hmdcunpackerpar.cc:5
 hmdcunpackerpar.cc:6
 hmdcunpackerpar.cc:7
 hmdcunpackerpar.cc:8
 hmdcunpackerpar.cc:9
 hmdcunpackerpar.cc:10
 hmdcunpackerpar.cc:11
 hmdcunpackerpar.cc:12
 hmdcunpackerpar.cc:13
 hmdcunpackerpar.cc:14
 hmdcunpackerpar.cc:15
 hmdcunpackerpar.cc:16
 hmdcunpackerpar.cc:17
 hmdcunpackerpar.cc:18
 hmdcunpackerpar.cc:19
 hmdcunpackerpar.cc:20
 hmdcunpackerpar.cc:21
 hmdcunpackerpar.cc:22
 hmdcunpackerpar.cc:23
 hmdcunpackerpar.cc:24
 hmdcunpackerpar.cc:25
 hmdcunpackerpar.cc:26
 hmdcunpackerpar.cc:27
 hmdcunpackerpar.cc:28
 hmdcunpackerpar.cc:29
 hmdcunpackerpar.cc:30
 hmdcunpackerpar.cc:31
 hmdcunpackerpar.cc:32
 hmdcunpackerpar.cc:33
 hmdcunpackerpar.cc:34
 hmdcunpackerpar.cc:35
 hmdcunpackerpar.cc:36
 hmdcunpackerpar.cc:37
 hmdcunpackerpar.cc:38
 hmdcunpackerpar.cc:39
 hmdcunpackerpar.cc:40
 hmdcunpackerpar.cc:41
 hmdcunpackerpar.cc:42
 hmdcunpackerpar.cc:43
 hmdcunpackerpar.cc:44
 hmdcunpackerpar.cc:45
 hmdcunpackerpar.cc:46
 hmdcunpackerpar.cc:47
 hmdcunpackerpar.cc:48
 hmdcunpackerpar.cc:49
 hmdcunpackerpar.cc:50
 hmdcunpackerpar.cc:51
 hmdcunpackerpar.cc:52
 hmdcunpackerpar.cc:53
 hmdcunpackerpar.cc:54
 hmdcunpackerpar.cc:55
 hmdcunpackerpar.cc:56
 hmdcunpackerpar.cc:57
 hmdcunpackerpar.cc:58
 hmdcunpackerpar.cc:59
 hmdcunpackerpar.cc:60
 hmdcunpackerpar.cc:61
 hmdcunpackerpar.cc:62
 hmdcunpackerpar.cc:63
 hmdcunpackerpar.cc:64
 hmdcunpackerpar.cc:65
 hmdcunpackerpar.cc:66
 hmdcunpackerpar.cc:67
 hmdcunpackerpar.cc:68
 hmdcunpackerpar.cc:69
 hmdcunpackerpar.cc:70
 hmdcunpackerpar.cc:71
 hmdcunpackerpar.cc:72
 hmdcunpackerpar.cc:73
 hmdcunpackerpar.cc:74
 hmdcunpackerpar.cc:75
 hmdcunpackerpar.cc:76
 hmdcunpackerpar.cc:77
 hmdcunpackerpar.cc:78
 hmdcunpackerpar.cc:79
 hmdcunpackerpar.cc:80
 hmdcunpackerpar.cc:81
 hmdcunpackerpar.cc:82
 hmdcunpackerpar.cc:83
 hmdcunpackerpar.cc:84
 hmdcunpackerpar.cc:85
 hmdcunpackerpar.cc:86
 hmdcunpackerpar.cc:87
 hmdcunpackerpar.cc:88
 hmdcunpackerpar.cc:89
 hmdcunpackerpar.cc:90
 hmdcunpackerpar.cc:91
 hmdcunpackerpar.cc:92
 hmdcunpackerpar.cc:93
 hmdcunpackerpar.cc:94
 hmdcunpackerpar.cc:95
 hmdcunpackerpar.cc:96
 hmdcunpackerpar.cc:97
 hmdcunpackerpar.cc:98
 hmdcunpackerpar.cc:99
 hmdcunpackerpar.cc:100
 hmdcunpackerpar.cc:101
 hmdcunpackerpar.cc:102
 hmdcunpackerpar.cc:103
 hmdcunpackerpar.cc:104
 hmdcunpackerpar.cc:105
 hmdcunpackerpar.cc:106
 hmdcunpackerpar.cc:107
 hmdcunpackerpar.cc:108
 hmdcunpackerpar.cc:109
 hmdcunpackerpar.cc:110
 hmdcunpackerpar.cc:111
 hmdcunpackerpar.cc:112
 hmdcunpackerpar.cc:113
 hmdcunpackerpar.cc:114
 hmdcunpackerpar.cc:115
 hmdcunpackerpar.cc:116
 hmdcunpackerpar.cc:117
 hmdcunpackerpar.cc:118
 hmdcunpackerpar.cc:119
 hmdcunpackerpar.cc:120
 hmdcunpackerpar.cc:121
 hmdcunpackerpar.cc:122
 hmdcunpackerpar.cc:123
 hmdcunpackerpar.cc:124
 hmdcunpackerpar.cc:125
 hmdcunpackerpar.cc:126
 hmdcunpackerpar.cc:127
 hmdcunpackerpar.cc:128
 hmdcunpackerpar.cc:129
 hmdcunpackerpar.cc:130
 hmdcunpackerpar.cc:131
 hmdcunpackerpar.cc:132
 hmdcunpackerpar.cc:133
 hmdcunpackerpar.cc:134
 hmdcunpackerpar.cc:135
 hmdcunpackerpar.cc:136
 hmdcunpackerpar.cc:137
 hmdcunpackerpar.cc:138