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:
Will produce the file daqconfig.tcl
The --output allows you to explicitly specify the full output filename e.g.
translates the daqconfig.tcl into the file myexperiment.yaml
There are some differences between the experiments that can be generated by mvlcgenerate and those supported by VMUSBReadout. These are enumerated here:
When interpreting the daqconfig script a Tcl interpreter is used, as it is by VMUSBReadout. Additonally the environment variable MVLC_TRANSLATOR.
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.
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:
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.
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
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.
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.