From: <ro...@us...> - 2009-04-09 21:10:22
|
Revision: 2121 http://nscldaq.svn.sourceforge.net/nscldaq/?rev=2121&view=rev Author: ron-fox Date: 2009-04-09 21:10:18 +0000 (Thu, 09 Apr 2009) Log Message: ----------- Document the sbs/VME device support. Added Paths: ----------- trunk/nextgen/sbs/vmemodules/DeviceSupport.xml Added: trunk/nextgen/sbs/vmemodules/DeviceSupport.xml =================================================================== --- trunk/nextgen/sbs/vmemodules/DeviceSupport.xml (rev 0) +++ trunk/nextgen/sbs/vmemodules/DeviceSupport.xml 2009-04-09 21:10:18 UTC (rev 2121) @@ -0,0 +1,11764 @@ +<!-- chapter libraries --> + +<chapter> + <title>SBS VME Module level device support software</title> + <para> + This section of the reference manual describes C++ support for + electronics (VME and CAMAC) that is used at the NSCL. + All of this software is in the <emphasis>DeviceSupport</emphasis> + library. With the exception of the base CAMAC support, all devices + have C++ class level support. base CAMAC support is provided as a set + of macros. + </para> + <para> + Each page of the manual describes the required header file. To incorporate any + of the device suppor modules described in this part, you must link to the + device support library. If <replaceable>$DAQROOT</replaceable> is the + top level of the nsclDAQ installation (/usr/opt/daq/<replaceable>version</replaceable> + for version <replaceable>version</replaceable> at the NSCL), link by adding the following + command switches: + <screen> +<command>-L$DAQROOT/lib -lDeviceSupport -lException $(VMELIBS) -Wl,"-rpath=$DAQROOT/lib"</command> + </screen> + The <command>-Wl,"-rpath=$DAQROOT/lib"</command> ensures that at run time, the shared libraries + that make up the device support software will be located and loaded. + <command>$(VMELIBS)</command> is + the set of library switches needed to link the VME support software described in + the previous part. + </para> + +</chapter> + +<!-- /chapter --> + +<!-- manpage 3daq --> + + <refentry id="CADC2530"> + <refmeta> + <refentrytitle>CADC2530</refentrytitle> + <manvolnum>3DeviceSupport</manvolnum> + </refmeta> + <refnamediv> + <refname>CADC2530</refname> + <refpurpose>Support the Hytec NADC 2530 Peak sensing ADC.</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <programlisting> + #include <CADC2530.h> + </programlisting> + <classsynopsis> + <ooclass><classname>CADC2530</classname></ooclass> + <constructorsynopsis> + <methodname>CADC2530</methodname> + <methodparam> + <type>int</type> <parameter>crateNum</parameter><initializer>0</initializer> + </methodparam> + <methodparam> + <type>long</type> <parameter>nBase</parameter> <initializer>0</initializer> + </methodparam> + </constructorsynopsis> + <destructorsynopsis> + <methodname>~CADC2530</methodname> + <void /> + </destructorsynopsis> + <methodsynopsis> + <modifier>static</modifier> + <type>bool</type> + <methodname>checkCard</methodname> + <methodparam> + <type>int</type> <parameter>nCrate</parameter> + </methodparam> + <methodparam> + <type>long</type> <parameter>nBase</parameter> + </methodparam> + <methodparam> + <type>unsigned short&</type> <parameter>devType</parameter> + </methodparam> + <methodparam> + <type>unsigned short&</type> <parameter>mfgId</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <modifier>static</modifier> <type>unsigned short</type> + <methodname>volt2lld</methodname> + <methodparam> + <type>double</type> <parameter>volts</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <modifier>static</modifier> <type>unsigned short</type> + <methodname>volt2uld</methodname> + <methodparam> + <type>double</type> <parameter>volts</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>int</type> <methodname>readListEvents</methodname> + <methodparam> + <type>void*</type> <parameter>buffer</parameter> + </methodparam> + <methodparam> + <type>int&</type> <parameter>nEvents</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>int</type> <methodname>readHistogramChannel</methodname> + <methodparam> + <type>void*</type> <parameter>buffer</parameter> + </methodparam> + <methodparam> + <type>int</type> <parameter>channel</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>clearHistogramMemory</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>resetCard</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>clearListAddress</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>unsigned int</type> <methodname>getListAddress</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>arm</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>disarm</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> <methodname>isArmed</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>modeHistogram</methodname> + <methodparam> + <type>bool</type> <parameter>individualGates</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>modeGate</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> <methodname>dataReady</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>enableGate</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>disableGate</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>enableZeroCnv</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>disableZeroCnv</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>dataReadyOnEvent</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>dataReadyOnFullness</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>setLLD</methodname> + <methodparam> + <type>unsigned short</type> <parameter>register</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>unsigned short</type> <methodname>getLLD</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>setULD</methodname> + <methodparam> + <type>unsigned short</type> <parameter>register</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>unsigned short</type> <methodname>getULD</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>clearFullnessFlags</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> <methodname>isChannelFull</methodname> + <methodparam> + <type>unsigned short</type> <parameter>channel</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> <methodname>channelHasData</methodname> + <methodparam> + <type>unsigned short</type> <parameter>channel</parameter> + </methodparam> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> <methodname>isListFull</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> <methodname>isListHalfFull</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>unsigned int</type> <methodname>getEventCounter</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>void</type> <methodname>clearEventCounter</methodname> + <void /> + </methodsynopsis> + </classsynopsis> + </refsynopsisdiv> + <refsect1> + <title>Description</title> + <para> + The Hytec NADC 2530 is an 8 channel high resolution ADC. + The area of application is intended to be high resolution + gamma spectroscopy. This class provides support for this module. + While the target for this support is the NSCLDAQ readout frameworks, + support is general and does not assume it will be used within + NSCLDAQ. + </para> + <para> + The NADC 2530 can produce either list mode (event by event) data + or it can be programmed to produce full resolution histograms. + The <classname>CADC2530</classname> + class supports both modes of operation. + </para> + </refsect1> + <refsect1> + <title> + Public member functions + </title> + <constructorsynopsis> + <methodname>CADC2530</methodname> + <methodparam> + <type>int</type> <parameter>crateNum</parameter><initializer>0</initializer> + </methodparam> + <methodparam> + <type>long</type> <parameter>nBase</parameter> <initializer>0</initializer> + </methodparam> + </constructorsynopsis> + <para> + Constructs an instance of a + <classname>CADC2530</classname> + class. The object created allows you to manipulate a single + module. + <parameter>crateNum</parameter> is the VME crate in which the + module lives. For single crate systems, this is + <literal>0</literal> for multi-crate systems, use the + <application>cratelocator</application> application to + determine which crate is which. + <parameter>nBase</parameter> + is the base address that has been assigned to the module via + it's addressing jumper block. + </para> + <para> + It is an error, which results in an + <classname>std::string</classname> + exception being thrown for the crate and base address to + not correspond to an NADC 2530 module. + </para> + <destructorsynopsis> + <methodname>~CADC2530</methodname> + <void /> + </destructorsynopsis> + <para> + Releases all mapping and memory resources associated with a + previously constructed + <classname>CADC2530</classname> module. + </para> + <methodsynopsis> + <modifier>static</modifier> + <type>bool</type> + <methodname>checkCard</methodname> + <methodparam> + <type>int</type> <parameter>nCrate</parameter> + </methodparam> + <methodparam> + <type>long</type> <parameter>nBase</parameter> + </methodparam> + <methodparam> + <type>unsigned short&</type> <parameter>devType</parameter> + </methodparam> + <methodparam> + <type>unsigned short&</type> <parameter>mfgId</parameter> + </methodparam> + </methodsynopsis> + <para> + Determines if the base address + <parameter>nBase</parameter> + in VME crate + <parameter>nCrate</parameter> + corresponds to an NADC 2530 module. + If it does, <literal>true</literal> + is returned, otherwise + <literal>false</literal> + </para> + <para> + The <parameter>devType</parameter> and + <parameter>mfgId</parameter> parameters are output parameters + that will be filled in with the module's device and manufacturer + id's respectively. + </para> + <methodsynopsis> + <modifier>static</modifier> <type>unsigned short</type> + <methodname>volt2lld</methodname> + <methodparam> + <type>double</type> <parameter>volts</parameter> + </methodparam> + </methodsynopsis> + <para> + The NADC 2530 module can constrain converted channels to lie + between a lower and upper leve threshold. This threshold + is common across all channels in the module. The relationship + between voltage and the value of the register is a non-linear + formula described in the NADC2530 manual. + </para> + <para> + This method converts floating point voltages into a value + that can be passed to the + <methodname>setLLD</methodname> function of a specific + module object. + </para> + <methodsynopsis> + <modifier>static</modifier> <type>unsigned short</type> + <methodname>volt2uld</methodname> + <methodparam> + <type>double</type> <parameter>volts</parameter> + </methodparam> + </methodsynopsis> + <para> + The NADC 2530 module can constrain converted channels to lie + between a lower and upper leve threshold. This threshold + is common across all channels in the module. The relationship + between voltage and the value of the register is a non-linear + formula described in the NADC2530 manual. + </para> + <para> + This method converts floating point voltages into a value + that can be passed to the + <methodname>setULD</methodname> function of a specific + module object. + </para> + <methodsynopsis> + <type>int</type> <methodname>readListEvents</methodname> + <methodparam> + <type>void*</type> <parameter>buffer</parameter> + </methodparam> + <methodparam> + <type>int&</type> <parameter>nEvents</parameter> + </methodparam> + </methodsynopsis> + <para> + Reads at most <parameter>nEvents</parameter> complete events + from the module's list memory to the memory pointed to by + <parameter>buffer</parameter>. + The <parameter>buffer</parameter> + should be at least <literal>40*nEvents</literal> bytes long + to be able to accomodate the worst case data needs. + </para> + <para> + On return, + <parameter>nEvents</parameter> + is modified to be the number of events actually read. + The function returns the number of bytes of data read. + For this to make sense, the module must be in + list mode rather than histogram mode. If the module is in + histogram mode, undefined, bad things will happen. + </para> + <methodsynopsis> + <type>int</type> <methodname>readHistogramChannel</methodname> + <methodparam> + <type>void*</type> <parameter>buffer</parameter> + </methodparam> + <methodparam> + <type>int</type> <parameter>channel</parameter> + </methodparam> + </methodsynopsis> + <para> + Reads the channels of a histogram. The module must be in + histogram mode. + </para> + <para> + The histogram is read into the storage pointed to by + <parameter>buffer</parameter>. + <parameter>channel</parameter> selects which channel, + <literal>1</literal> through <literal>8</literal> is transferred. + </para> + <para> + <parameter>buffer</parameter> + must be at least 8192 <type>uint32_t</type> long. Each channel + of the histogram occupies one longword of <parameter>buffer</parameter>. + </para> + <methodsynopsis> + <type>void</type> <methodname>clearHistogramMemory</methodname> + <void /> + </methodsynopsis> + <para> + Clears all the channels of all of the histograms in the module. + The module should be in histogram mode. + </para> + <methodsynopsis> + <type>void</type> <methodname>resetCard</methodname> + <void /> + </methodsynopsis> + <para> + Resets the card to its factory default mode. + </para> + <methodsynopsis> + <type>void</type> <methodname>clearListAddress</methodname> + <void /> + </methodsynopsis> + <para> + In list mode, the module contains list memory. The list address + is the offset to this memor in which the next event will be stored. + invoking this member function resets that offset to zero. + </para> + <methodsynopsis> + <type>unsigned int</type> <methodname>getListAddress</methodname> + <void /> + </methodsynopsis> + <para> + Returns the current value of the list offset. + </para> + <methodsynopsis> + <type>void</type> <methodname>arm</methodname> + <void /> + </methodsynopsis> + <para> + Arms the module. Arming the module is what starts it taking data, + or histogramming, depending on the mode. + </para> + <methodsynopsis> + <type>void</type> <methodname>disarm</methodname> + <void /> + </methodsynopsis> + <para> + Disarms the module. Disarming the module stops data taking + or histogramming. + </para> + <methodsynopsis> + <type>bool</type> <methodname>isArmed</methodname> + <void /> + </methodsynopsis> + <para> + Returns <literal>true</literal> if the module is armed. + </para> + <methodsynopsis> + <type>void</type> <methodname>modeHistogram</methodname> + <methodparam> + <type>bool</type> <parameter>individualGates</parameter> + </methodparam> + </methodsynopsis> + <para> + Sets the module in histogramming mode. If + <parameter>individualGatse</parameter> is + <literal>true</literal>, adc channels + digitize when their associated gate input tells them to. + If <literal>false</literal> the adcs self trigger. + </para> + <methodsynopsis> + <type>void</type> <methodname>modeGate</methodname> + <void /> + </methodsynopsis> + <para> + This method is only useful in list mode. It informs the module + to take data when the common gate is strobed. + </para> + <methodsynopsis> + <type>bool</type> <methodname>dataReady</methodname> + <void /> + </methodsynopsis> + <para> + Returns + <literal>true</literal> + if the module is in list mode and has at least one event ready + to be read from list memory. + </para> + <methodsynopsis> + <type>void</type> <methodname>enableGate</methodname> + <void /> + </methodsynopsis> + <para> + Enables the front panel master gate. + </para> + <methodsynopsis> + <type>void</type> <methodname>disableGate</methodname> + <void /> + </methodsynopsis> + <para> + Disables the front panel master gate. + </para> + <methodsynopsis> + <type>void</type> <methodname>enableZeroCnv</methodname> + <void /> + </methodsynopsis> + <para> + Enables the inclusion of conversions below the low level + discriminator in the list mode data. + </para> + <methodsynopsis> + <type>void</type> <methodname>disableZeroCnv</methodname> + <void /> + </methodsynopsis> + <para> + Disables the inclusion of conversions below the low level + discriminator setting in list mode data (enables zero supression). + </para> + <methodsynopsis> + <type>void</type> <methodname>dataReadyOnEvent</methodname> + <void /> + </methodsynopsis> + <para> + Enables the setting of the data ready condition when the first + event is stored. + </para> + <methodsynopsis> + <type>void</type> <methodname>dataReadyOnFullness</methodname> + <void /> + </methodsynopsis> + <para> + Enables the setting of data ready only when either a histogram + channel overflows (histogram mode), or when the list mode + memory is full. + </para> + <methodsynopsis> + <type>void</type> <methodname>setLLD</methodname> + <methodparam> + <type>unsigned short</type> <parameter>register</parameter> + </methodparam> + </methodsynopsis> + <para> + Sets the value of the lower level discriminator for the ADC. + <parameter>register</parameter> should be a value returned from + <methodname>volt2lld</methodname>. + </para> + <methodsynopsis> + <type>unsigned short</type> <methodname>getLLD</methodname> + <void /> + </methodsynopsis> + <para> + Returns the low level discriminator value. This is the computed + DAC value for the LLD, not the voltage. The DAC value is + related to the voltage as follows: + <literal> + <![CDATA[DAC = (((V/3.2764)/(0.25/4095)) <<2)&0x3ffc]]> + </literal> + </para> + <methodsynopsis> + <type>void</type> <methodname>setULD</methodname> + <methodparam> + <type>unsigned short</type> <parameter>register</parameter> + </methodparam> + </methodsynopsis> + <para> + Sets the DAC of the upper level discriminator. + <parameter>register</parameter> + should be a value returned from + <methodname>volt2uld</methodname>. + </para> + <methodsynopsis> + <type>unsigned short</type> <methodname>getULD</methodname> + <void /> + </methodsynopsis> + <para> + Returns the value of the upper level discriminator DAC register. + This is related to the voltage as follows: + <literal> + <![CDATA[DAC = ((((V/3.2764)-2)/(0.25/4095))<<2)&0x3FFC]]> + </literal> + </para> + <methodsynopsis> + <type>void</type> <methodname>clearFullnessFlags</methodname> + <void /> + </methodsynopsis> + <para> + Clears any fullness condition. + </para> + <methodsynopsis> + <type>bool</type> <methodname>isChannelFull</methodname> + <methodparam> + <type>unsigned short</type> <parameter>channel</parameter> + </methodparam> + </methodsynopsis> + <para> + Returns + <literal>true</literal> + if the histogram for the specified + <parameter>channel</parameter> + has overflowed. + </para> + <methodsynopsis> + <type>bool</type> <methodname>channelHasData</methodname> + <methodparam> + <type>unsigned short</type> <parameter>channel</parameter> + </methodparam> + </methodsynopsis> + <para> + Returns <literal>true</literal> if the histogram for the + specified <parameter>channel</parameter> + has at least one channel with 1/2 full scale counts. + </para> + <methodsynopsis> + <type>bool</type> <methodname>isListFull</methodname> + <void /> + </methodsynopsis> + <para> + Returns <literal>true</literal> if the list mode memory + is full. Current firmware will actually set the state to full + if the memory has insufficient room for the worst case event + (40 bytes/10 32 bit longwords). This ensures that the + list memory will only contain complete events. + </para> + <methodsynopsis> + <type>bool</type> <methodname>isListHalfFull</methodname> + <void /> + </methodsynopsis> + <para> + Returns <literal>true</literal> if the module is in listmode + and the list memory is more than 1/2 full. + </para> + <methodsynopsis> + <type>unsigned int</type> <methodname>getEventCounter</methodname> + <void /> + </methodsynopsis> + <para> + Returns the number of events that have been acquired since the + last clear. + </para> + <methodsynopsis> + <type>void</type> <methodname>clearEventCounter</methodname> + <void /> + </methodsynopsis> + <para> + Clears the event counter. + </para> + </refsect1> + </refentry> + + <refentry id="CAENcard"> + + <refmeta> + <refentrytitle>CAENcard</refentrytitle> + <manvolnum>3DeviceSupport</manvolnum> + </refmeta> + + <refnamediv> + <refname>CAENcard</refname> + <refpurpose>Support for the CAEN 32 bit digitizers</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <programlisting> +#include <CAENcard.h> + </programlisting> + <classsynopsis language="c++"> + <ooclass><classname>CAENcard</classname></ooclass> + <constructorsynopsis> + <methodname>CAENcard</methodname> + <methodparam><type>int</type> <parameter>slotNum</parameter><initializer>-1</initializer></methodparam> + <methodparam><type>int</type> <parameter>crateNum</parameter><initializer>0</initializer></methodparam> + <methodparam><type>bool</type> <parameter>fGeo</parameter><initializer>true</initializer></methodparam> + <methodparam><type>long</type> <parameter>nBase</parameter><initializer>0</initializer></methodparam> + </constructorsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getPhysicalCrate</methodname> + <void /> + <modifier>const</modifier> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getSlot</methodname> + <void /> <modifier>const</modifier> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> + <methodname>isGeo</methodname> + <void /><modifier>const</modifier> + </methodsynopsis> + <methodsynopsis> + <type>unsigned long</type> + <methodname>getBase</methodname> + <void /> <modifier>const</modifier> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getSerial</methodname> + <void /><modifier>const</modifier> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getHardwareRev</methodname> + <void /><modifier>const</modifier> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>cardType</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getFirmware</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getCrate</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>setCrate</methodname> + <methodparam><type>int</type> <parameter>crateNum</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>setThreshold</methodname> + <methodparam><type>int</type> <parameter>ch</parameter></methodparam> + <methodparam><type>int</type> <parameter>threshold</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>keepUnderThresholdData()</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>discardUnderThresholdData</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>keepOverflowData</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>discardOverflowData</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>keepInvalidData</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>discardInvalidData</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>commonStart</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>commonStop</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>setRange</methodname> + <methodparam><type>int</type> <parameter>range</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>setPedestalCurrent</methodname> + <methodparam><type>int</type> <parameter>ped</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>cardOff</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>cardOn</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <void /><methodname>channelOff</methodname> + <methodparam><type>int</type> <parameter>ch</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>channelOn</methodname> + <methodparam><type>int</type> <parameter>ch</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>resetEventCounter</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>clearData</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>reset</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>dataPresent</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> + <methodname>gdataPresent</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> + <methodname>Busy</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> + <methodname>gBusy</methodname> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> + <methodname>MEBFull</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>bool</type> + <methodname>MEBEmpty</methodname> + <void /> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>readEvent</methodname> + <methodparam><type>void*</type> <parameter>buf</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>readEvent</methodname> + <methodparam><type>DAQWordBuffer&</type> <parameter>wbuf</parameter></methodparam> + <methodparam><type>int</type> <parameter>offset</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>readEvent</methodname> + <methodparam><type>DAQWordBufferPtr&</type> <parameter>wp</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>getIped</methodname> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>setFastClearWindow</methodname> + <methodparam><type>int</type> <parameter>n</parameter></methodparam> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>enableSmallThresholds</methodname> + <void/> + </methodsynopsis> + <methodsynopsis> + <void /> + <methodname>disableSmallThresholds</methodname><void /> + </methodsynopsis> + <methodsynopsis> + <type>int</type> + <methodname>EventCount</methodname> + </methodsynopsis> + </classsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + <para> + This class provides support for several 32 channel CAEN VME digitizers. + The CAEN V775, V785, V792, V862, 11785 are essentially software compatible (they + are all based on the same base board of a 32 channel peak sensing ADC with differing + daughter board front ends. + </para> + <para> + These modules have both 16 and 32 channel versions. The 16 channel versions look + exactly like the 32 channel versions except that only the even channels + have been populated. + </para> + <para> + Some modules are capable of <firstterm>geographic addressing</firstterm>. + In this mode, the base address of the module is determined by the VME slot + in which it is installed. To be used in geographical addressing mode, the + module must have three connectors to the backplane as must the backplane as the + slot number is encoded on the middle connector of the backplane. + </para> + </refsect1> + <refsect1> + <title>Public member functions</title> + <para> + <variablelist> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef> <function>CAENcard</function></funcdef> + <paramdef><type>int</type> <parameter>slotNum</parameter>=-1</paramdef> + <paramdef><type>int</type> <parameter>crateNum</parameter>=0</paramdef> + <paramdef><type>bool</type> <parameter>fGeo</parameter>=true</paramdef> + <paramdef><type>long</type> <parameter>nBase</parameter>=0</paramdef> + </funcprototype> + </funcsynopsis> + </term> + <listitem> + <para> + Constructs a CAENcard object to communicate with a digitizer. + <parameter>slotNum</parameter> is the geographical address of the + module, <parameter>fGeo</parameter> is true, this is the slot the + module is installed. If not, this is the geographical address + that is assigned to the module in software (virtual slot). + </para> + <para> + <parameter>crateNum</parameter> is the VME crate number. If + omitted, this is assumed to be 0, which is suitable for a single + crate system. See the reference page for <command>cratelocator</command> + for information about how to determine which crate is which + </para> + <para> + If <parameter>fGeo</parameter> is false, the module requires a + <parameter>nBase</parameter> parameter to specify the base address + set in the rotary switches of the module. Otherwise, the + module's bases address is gotten from the physical slot of the + crate. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>getPhysicalCrate</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returnst the crate number the module is specified to be installed in. + This is the <parameter>crateNum</parameter> parameter passed to + the constructor. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>getSlot</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the module virtual slot number. This is just the value of + the <parameter>slotNum</parameter> parameter given to the + constructor for this module. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>bool</type> <function>isGeo</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns <literal>true</literal> if the module was constructed via + a geograhpical address. <literal>false</literal> is returned if + base addressing was used to construct the module. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>unsigned long</type> <function>getBase</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the module base address. This value is only well defined + if geographical addressing was <emphasis>not</emphasis> + used to construct the module. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>getSerial</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the serial number of the module. This is the same as the number + stamped on the serial number tag on the faceplate of the module. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>getHardwareRev</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the hardware version register from the module PROM. + It is not clear to me what this is or what the format is. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>cardType</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the model number of the card, e.g. <literal>785</literal> + for a V785 peak sensing adc. Submodel information (e.g. N for NIM) is + not returned by this function. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>getFirmware</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the firmware revision of the module. This is the version + of the firmware chip plugged into the lower left hand side of + the module as you hold it connectors facing to the left. The + firmware is returned as a 16 bit number with the top byte the major + version (the part to the left of the decimal point), the bottom byte + the minor version. So a return value of 0x0901 corresponds to + firmware revision 9.01. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>int</type> <function>getCrate</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Returns the value of the crate register of the module. At construction + time, this is programmed to be the physical crate number. + Calling <function>setCrate</function>, however can change the + value of this register making it a virtual crate number. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>setCrate</function></funcdef> + <paramdef><type>int</type> <parameter>crateNum</parameter></paramdef> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Sets the crate register of the module to <parameter>crateNum</parameter> + This value will be reported as the module crate number in the + data returned from the module. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>setThreshold</function></funcdef> + <paramdef><type>int</type> <parameter>ch</parameter></paramdef> + <paramdef><type>int</type> <parameter>threshold</parameter></paramdef> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Sets the threshold of one or all channels to <parameter>threshold</parameter>. + What this means depends on whether small or large thresholds are + enabled (the default is large thresholds). If small thresholds are + enabled, the threshold value is multiplied by 2 and applied to the + incoming data. Large threshold multiply this value by + 16. + </para> + <para> + If the <parameter>ch</parameter> value is not <literal>-1</literal>, + it designates the channel to program (remember that a 16 channel + module only uses the even numbered channels of the digitizer so + ignore the front panel numbering). If <literal>-1</literal> + all threshold registers are set to the common value + <parameter>threshold</parameter> + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>keepUnderThresholdData</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + If called, the module will not supress data that is under the + threshold. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>discardUnderThresholdData</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + If called the module will supress data that is under the threshold + value. A key to getting this module to work efficiently is to + set appropriate threshold values and then to call this function. If + this is not done, you will get 34 longwords of data from this + module for each event, rather than only receiving channels that + have useful data. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>keepOverflowData</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + If called, the module will retain data that has overflowed. + This is usually important for a TDC. Overflow data indicates a + channel did not have an input and over-ranged. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>discardOverflowData</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + If this is called, the module will discard data that has overflowed. + This is mostly useful for TDC modules, to discard overranged times. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>keepInvalidData</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + I'm not 100% sure what effect this has on the module. If data + are <firstterm>invalid</firstterm> (whatever that means), they + will nonetheless appear in the data stream from the module + (presumably with the valid bit clear). + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>discardInvalidData</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + Again see above. If data are <firstterm>invalid</firstterm> they + will be discarded from the data stream. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>commonStart</function></funcdef> + <void /> + </funcprototype></funcsynopsis> + </term> + <listitem> + <para> + If the module is a TDC it is set in common start mode. + The gate input is a start and the individual channel + inputs stop that channel. If the module is not a TDC, + a <classname>std::string</classname> exception will be thrown + explaining this fact. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <funcsynopsis><funcprototype> + <funcdef><type>void</type> <function>commonStop</function></funcdef> + <void /> + ... [truncated message content] |