mvlcgenerate

Name

mvlcgenerate -- Generate config files for the mvlc fribdaq-readout program

Synopsis

mvlcgenerate [--output=outfile] [--template=template-file] infile

DESCRIPTION

The Mesytec MVLC controller is a list driven VME controller that can be connected to NSCLDAQ either via a USB or an Ethernet connection. FRIB has contributed the program fribdaq-readout that can setup the MVLC to contribute data to an FRIB/NSCLDAQ ringbuffer. At the FRIB, this program is located in: /usr/opt/mesytec-mvlc/version/bin/frbidaq-readout where version is a software version of the MVLC driver software. ls /usr/opt/mesytec-mvlc to see the available versions. We suggest you use the most recent (highest) version number.

The fribdaq-readout program requires a configuration file in YAML (yet another markup language) format to describe the experiment. mvlcgenerate takes a VMUSBReadout daqconfig.tcl and translates it into the YAML expected by fribdaq-readout

The only required command line value is the name of the VMUSBReadout configuration file to be translated. By default, the output filename will be the same as the input filename but with the file type changed to .yaml. For example, the command line:


$DAQBIN/mvlcgenerate daqconfig.tcl
        

Will produce the file daqconfig.tcl

The --output allows you to explicitly specify the full output filename e.g.


$DAQBIN/mvlcgenerate --output=myexperiment.yaml daqconfig.tcl
            

translates the daqconfig.tcl into the file myexperiment.yaml

Differences from VMUSBReadout

There are some differences between the experiments that can be generated by mvlcgenerate and those supported by VMUSBReadout. These are enumerated here:

  1. When interpreting the daqconfig script a Tcl interpreter is used, as it is by VMUSBReadout. Additonally the environment variable MVLC_TRANSLATOR.

  2. The only trigger supported by the stack are nim1 and scaler the nim1 trigger is the event stack which is triggered by the NIN input 1 on the MVLC module. The -delay is supported for that stack. The scaler trigger is a periodic stack that is run every two seconds and is intended to readout scaler data. The -period is accepted but ignored. Interrupt driven stacks are not supported.

  3. The CAEN 32 channel digitizers are supported but, due to the non-interactive nature of the translator, the actual CAEN digitizer type cannot be determined at run-time. The additional configuration option: -type can be specified with the value adc tdc or -tdc to specificy which device speicific initializations must be done. If not specified, the default value is adc. Consider the following code snippet that determines if the mvlcgenerate is being used and defines a module to be a tdc if so:

    
set istranslator [array names ::env MVLC_TRANSLATOR]
    ...
    adc create tdc -base 0x12340000
    if {$istranslator ne ""} {
        adc config tdc -type tdc
    }                           
    ... 
                                

  4. The Mesytec MDPP digitizer commands are supported, however the handling of the -triggersource and -triggeroutput values is slightly different. The value 0x400 was a special value that did not modify the module's current settings. This is not supported, the full, desired trigger value must be specified. The -printregisters was a debugging option that produced a detailed dump of the device registers after initialization. This is not supported. Finally, the 16 input qdc device mdpp16qdc was not documented but was present and supported by the translator.

  5. The CAEN Multihit TDC modules are supported, however you must specify the model used. This is done with the -model configuration option which can be one of V1190A, V1190B, V1290A or V1290N. IF -model is not specified, it defaults to v1190A

  6. Support for the SIS3316 was added to the VMUSBReadout as of NSCLDAQ version 12.1 but is not supported by the translator at this time because its initialization is highly interactive with them module.

Custom templates

In the event you want to use an event trigger other than the default, the translator can be told via the --template option to use a custom template YAML. There are some requirements for that.

Use mvme to generate the template file, by specifying your desired trigger and exporting the resulting configuration to yaml. If you want a periodic stack, e.g. for scaler readout, you should creatre a second emtpy event stack and configure its condition to be Periodc (via MVLC StackTimer) and then set the period to be whatever you want it to be.

When running mvlcgenerate, specify the --template to point to the configuration you saved.

FILES