Commit 63b2ecc5 authored by Locatelli's avatar Locatelli
Browse files
parents 39f46f84 2486c15f
This diff is collapsed.
......@@ -20,18 +20,19 @@
#define CAENCFDCONTROLLER_H
#include "CAENAdcController.h"
#include "drivers/ioxos/cfd/CfdDriver.h"
//#include "drivers/ioxos/cfd/CfdDriver.h"
#include "drivers/caen_cfd/CAENCfdDriver.h"
namespace npp {
/*!
* \class CAENV1724Driver
* \brief Main class for the CAENV1724Driver device driver
* \class CAENV1725Driver
* \brief Main class for the CAENV1725Driver device driver
*
* \par
* Class for CAENV1724Driver driver. Implements DeviceDriver methods.
* Class for CAENV1725Driver driver. Implements DeviceDriver methods.
* \par
* The CAENV1724Driver device manages the global functionality of the CAEN V1724 VME Digitiser.
* The CAENV1724Driver device manages the global functionality of the CAEN V1725 VME Digitiser.
*/
class CAENCfdController: public CAENAdcController {
......@@ -56,44 +57,84 @@ public:
*/
virtual void postConfiguration();
// Global properties
Property<int32> delay;
Property<int32> attenuation;
// Channel property
Property<int32> trapezoidRise;
Property<int32> trapezoidFlat;
Property<int32> decayTime;
Property<int32> peaking;
Property<int32> bitShift;
Property<int32> channelOffset;
// Channels properties
Property<int32> nbBits;
Property<float64> signalDecayTime;
Property<float64> trapezoidFlatTop;
Property<float64> trapezoidRiseTime;
Property<float64> flatTopDelay;
Property<int32> triggerSmoothing;
Property<float64> signalRiseTime;
Property<int32> triggerThreshold;
Property<int32> baselineMean;
Property<int32> peakMean;
Property<float64> peakHoldOff;
Property<float64> baselineHoldOff;
Property<float64> triggerHoldOff;
Property<int32> triggerWindowSize;
Property<int32> triggerWindowEnable;
Property<int32> digitalGain;
Property<float64> trapezoidGain;
Property<int32> decimation;
Property<int32> cfdActive;
Property<int32> cfdFraction;
Property<int32> cfdDelay;
Property<int32> cfdSignalZero;
Property<int32> dynamicRange;
Property<int32> cfdTrap;
// Channels properties outside dppParam
Property<int32> useFirstDerivative;
protected:
DriverPtr<cfd::CfdDriver> m_CfdDriver;
DriverPtr<caen_cfd::CAENCfdDriver> m_dgtzDriver;
private:
void refreshDelayProperty(int32 aValue) throw (CannotSetValue);
void refreshAttenuationProperty(int32 aValue) throw (CannotSetValue);
void refreshTrapezoidRiseProperty(int32 aValue) throw (CannotSetValue);
void refreshTrapezoidFlatProperty(int32 aValue) throw (CannotSetValue);
void refreshDecayTimeProperty(int32 aValue) throw (CannotSetValue);
void refreshPeakingProperty(int32 aValue) throw (CannotSetValue);
void refreshBitShiftProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshChannelActiveProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshRecordLengthProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshDisplayChannelProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshChannelOffsetProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshNbChannelsProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshPulsePolarityProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshDisplayChannelProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshRecordLengthProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshcfdTrapProperty(int32 aValue) throw (CannotSetValue);
virtual void refreshDppAcqModeProperty(int32 aValue) throw (CannotSetValue);
virtual void updateBoardProperties();
void updateCfdProperties(int32 channel);
virtual void refreshChannelActiveProperty(int32 aValue) throw (CannotSetValue);
void refreshSignalDecayTime(float64 aValue) throw (CannotSetValue);
void refreshTrapezoidFlatTopProperty(float64 aValue) throw (CannotSetValue);
void refreshTrapezoidRiseTimeProperty(float64 aValue) throw (CannotSetValue);
void refreshFlatTopDelayProperty(float64 aValue) throw (CannotSetValue);
void refreshTriggerSmoothing(int32 aValue) throw (CannotSetValue);
void refreshSignalRiseTimeProperty(float64 aValue) throw (CannotSetValue);
void refreshTriggerThresholdProperty(int32 aValue) throw (CannotSetValue);
void refreshBaselineMean(int32 aValue) throw (CannotSetValue);
void refreshPeakMean(int32 aValue) throw (CannotSetValue);
void refreshPeaklineHoldOffProperty(float64 aValue) throw (CannotSetValue);
void refreshBaselineHoldOffProperty(float64 aValue) throw (CannotSetValue);
void refreshTriggerHoldOffProperty(float64 aValue) throw (CannotSetValue);
void refreshTriggerWindowSizeProperty(int32 aValue) throw (CannotSetValue);
void refreshTriggerWindowEnableProperty(int32 aValue) throw (CannotSetValue);
void refreshDigitalGainProperty(int32 aValue) throw (CannotSetValue);
void refreshTrapezoidGainProperty(float64 aValue) throw (CannotSetValue);
void refreshDecimationProperty(int32 aValue) throw (CannotSetValue);
void refreshDcOffsetProperty(int32 aValue) throw (CannotSetValue);
void refreshPreTriggerProperty(int32 aValue) throw (CannotSetValue);
void refreshPulsePolarityProperty(int32 aValue) throw (CannotSetValue);
void refreshUseFirstDerivativeProperty(int32 aValue) throw (CannotSetValue);
void refreshCfdActiveProperty(int32 aValue) throw (CannotSetValue);
void refreshCfdFractionProperty(int32 aValue) throw (CannotSetValue);
void refreshCfdDelayProperty(int32 aValue) throw (CannotSetValue);
void refreshCfdSignalZeroProperty(int32 aValue) throw (CannotSetValue);
void refreshDynamicRangeProperty(int32 aValue) throw (CannotSetValue);
virtual void updateBoardProperties();
void updateNbBitsProperty();
virtual void clearData();
virtual void writeParam();
virtual void initChannel(int32 aChannel);
void initBoard();
};
}
......
......@@ -364,7 +364,7 @@ void CAENPhaController::updateBoardProperties() {
if (modelName() == "V1724") {
cardType = lstdpp128::C1724_PHA_RT;
}
else if (modelName() == "V1730") {
else if (modelName() == "V1725") {
cardType = lstdpp128::C1730_PHA_RT;
}
channels.update(m_dgtzDriver->channels());
......
<module name="npp_s">
<controller class="npp::CAENCfdController"/>
<controller class="npp::CAENPhaController"/>
<controller class="npp::CAENCfdController"/>
<controller class="npp::CAENPksController"/>
<controller class="npp::CAENPsdController"/>
<controller class="npp::DPPAcquisitionController"/>
......
# Board Params
cfd_controller.boardParamsTitle=Board Parameters
cfd_controller.nbChannels=Nb channels:
cfd_controller.nbBits=Nb bits:
cfd_controller.acqMode=Acquisition mode:
cfd_controller.recordLength=Record length
cfd_controller.cfdTrap=Select Plot
# Channel General Settings
cfd_controller.generalSettingsTitle=General Settings
cfd_controller.recordLength=Record length
cfd_controller.displayChannel=Channel
cfd_controller.channelEnabled=Channel enabled
cfd_controller.pulsePolarity=Pulse polarity
cfd_controller.dcOffset=DC offset
cfd_controller.digitalGain=Digital gain
cfd_controller.decimation=Decimation
cfd_controller.enabledCheckedValue=1
cfd_controller.enabledUncheckedValue=0
cfd_controller.dynamicRange=Dynamic range
# Timing Filter
cfd_controller.selfTrigger=Self-trigger
cfd_controller.stenabledLabel=Enable
cfd_controller.stenabledValue=1
cfd_controller.stdisableLabel=Disable
cfd_controller.stdisableValue=0
cfd_controller.timingFilterTitle=Trigger and Timing Filter
cfd_controller.preTrigger=Pre-trigger
cfd_controller.threshold=Threshold
cfd_controller.triggerSmoothing=Smoothing
cfd_controller.signalRiseTime=Rise time
cfd_controller.triggerHoldOff=Trigger holdoff
cfd_controller.charge_sensitivity=Charge sens.
cfd_controller.fcversuslsb=fc/LSB
cfd_controller.20csValue=0
cfd_controller.20csLabel=20
cfd_controller.40csValue=1
cfd_controller.40csLabel=40
cfd_controller.80csValue=2
cfd_controller.80csLabel=80
cfd_controller.160csValue=3
cfd_controller.160csLabel=160
cfd_controller.320csValue=4
cfd_controller.320csLabel=320
cfd_controller.640csValue=5
cfd_controller.640csLabel=640
# Energy Filter
cfd_controller.energyFilterTitle=Energy Filter
cfd_controller.signalDecayTime=Decay time
cfd_controller.trapezoidlRiseTime=Trapezoid rise
cfd_controller.trapezoidFlatTop=Trapezoid flat-top
cfd_controller.baselineMean=Baseline mean
cfd_controller.shortGate=Short gate
cfd_controller.longGate=Long gate
cfd_controller.preGate=Pre gate
cfd_controller.trapezoidGain=Trapezoid gain
cfd_controller.flatTopDelay=Peaking delay
cfd_controller.peakMean=Peak mean
cfd_controller.baselineHoldOff=Baseline holdoff
cfd_controller.peakHoldOff=Peak holdoff
# Units
cfd_controller.lsbUnit=LSB
......@@ -56,6 +48,12 @@ cfd_controller.positiveLabel=Positive
cfd_controller.negativeValue=1
cfd_controller.negativeLabel=Negative
# Combo dynamic range
cfd_controller.twoValue=0
cfd_controller.twoLabel=2V
cfd_controller.zeroFiveValue=1
cfd_controller.zeroFiveLabel=0.5V
# Combo digital gain
cfd_controller.gain1Value=0
cfd_controller.gain1Label=1
......@@ -92,21 +90,19 @@ cfd_controller.smooth32Label=32
# Combo base mean
cfd_controller.base0Value=0
cfd_controller.base0Label=Fixed
cfd_controller.base8Value=1
cfd_controller.base8Label=8
cfd_controller.base16Value=2
cfd_controller.base0Label=0
cfd_controller.base16Value=1
cfd_controller.base16Label=16
cfd_controller.base32Value=3
cfd_controller.base32Label=32
cfd_controller.base64Value=4
cfd_controller.base64Value=2
cfd_controller.base64Label=64
cfd_controller.base128Value=5
cfd_controller.base128Label=128
cfd_controller.base256Value=6
cfd_controller.base256Value=3
cfd_controller.base256Label=256
cfd_controller.base512Value=7
cfd_controller.base512Label=512
cfd_controller.base1024Value=4
cfd_controller.base1024Label=1024
cfd_controller.base4096Value=5
cfd_controller.base4096Label=4096
cfd_controller.base16384Value=6
cfd_controller.base16384Label=16384
# Combo peak mean
cfd_controller.peak1Value=0
......@@ -123,6 +119,8 @@ cfd_controller.oscilloscopeValue=0
cfd_controller.oscilloscopeLabel=Oscilloscope
cfd_controller.histogramValue=1
cfd_controller.histogramLabel=Histogram
cfd_controller.waveformValue=2
cfd_controller.waveformLabel=Wave Form
# Plot group
cfd_controller.histogranPlotTitle=Energy histogram
......@@ -139,14 +137,36 @@ cfd_controller.peakingLegend=Peaking
cfd_controller.percentSuffix=%
cfd_controller.pn1CoincidencePlotTitle=E-dE
cfd_controller.cfdGlobalTitle=CFD global parameters
cfd_controller.channelOffset=Channel offset
# CFD parametres
cfd_controller.cfdParametersTitle=CFD Parameters
cfd_controller.cfdEnabled=Enable CFD
cfd_controller.enabledCheckedValue=1
cfd_controller.enabledUncheckedValue=0
cfd_controller.cfdTrapCheckedValue=1
cfd_controller.cfdTrapUncheckedValue=0
cfd_controller.fraction=Fraction
cfd_controller.delay=Delay
cfd_controller.attenuation=Attenuation
cfd_controller.cfdEnergyTitle=CFD Energy parameters
cfd_controller.pulse_polarity=Pulse polarity
cfd_controller.trapezoid_rise=Trapezoid rise
cfd_controller.trapezoid_flat=Trapezoid flat
cfd_controller.decay_time=Decay time
cfd_controller.peaking=Peaking
cfd_controller.bitShift=Bit shift
\ No newline at end of file
cfd_controller.signalZero=Baseline
cfd_controller.percentUnit=%
cfd_controller.2nSecUnit=2ns
cfd_controller.4nSecUnit=4ns
cfd_controller.adcUnit=channels
# Combo fraction
cfd_controller.25Value=0
cfd_controller.25Label=25
cfd_controller.50Value=1
cfd_controller.50Label=50
cfd_controller.100Value=3
cfd_controller.100Label=100
cfd_controller.CFDValue=1
cfd_controller.CFDLabel=CFD
cfd_controller.TrapValue=0
cfd_controller.TrapLabel=Trapezoid
......@@ -6,81 +6,114 @@
<strictly_positive/>
</property>
<property name="nb_bits" type="int32" max_length="3">
<strictly_positive/>
</property>
<property name="record_length" type="int32" max_length="6">
</property>
<property name="display_channel" type="int32" max_length="3">
<property_range min_property="min_range" max_property="max_range"/>
</property>
<property name="channel_offset" type="int32" max_length="3">
<property name="decay_time" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<property name="record_length" type="int32" max_length="6">
<property name="trapezoid_flat" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<!-- <property name="trigger_holdoff" type="float64" max_length="6"> -->
<!-- <decimal_format nb_decimal_places="2"/> -->
<!-- <strictly_positive/> -->
<!-- </property> -->
<property name="trapezoid_rise" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<!-- <property name="trigger_threshold" type="int32" max_length="3"> -->
<!-- <strictly_positive/> -->
<!-- </property> -->
<property name="flat_top" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<!-- <property name="self_trigger" type="int32"> -->
<!-- </property> -->
<property name="trigger_smoothing" type="int32">
</property>
<!-- <property name="charge_sensitivity" type="int32"> -->
<!-- </property> -->
<property name="rise_time" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<!-- <property name="short_gate" type="float64" max_length="6"> -->
<!-- <decimal_format nb_decimal_places="2"/> -->
<!-- <strictly_positive/> -->
<!-- </property> -->
<property name="trigger_threshold" type="int32" max_length="3">
<strictly_positive/>
</property>
<!-- <property name="long_gate" type="float64" max_length="6"> -->
<!-- <decimal_format nb_decimal_places="2"/> -->
<!-- <strictly_positive/> -->
<!-- </property> -->
<property name="base_mean" type="int32">
</property>
<!-- <property name="pre_gate" type="float64" max_length="6"> -->
<!-- <decimal_format nb_decimal_places="2"/> -->
<!-- <strictly_positive/> -->
<!-- </property> -->
<property name="peak_mean" type="int32">
</property>
<property name="trigger_validation" type="int32">
<property name="dynamic_range" type="int32">
</property>
<!-- <property name="base_mean" type="int32"> -->
<!-- </property> -->
<property name="peak_holdoff" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<property name="channel_active" type="int32">
<property name="base_holdoff" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<property name="pre_trigger" type="int32" max_length="4">
<property name="trigger_holdoff" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<property name="delay" type="int32">
<property name="trigger_window_size" type="float64" max_length="6">
<strictly_positive/>
</property>
<property name="attenuation" type="int32">
<property name="trigger_window_enable" type="int32">
</property>
<property name="pulse_polarity" type="int32">
<property name="digital_gain" type="int32">
</property>
<property name="trapezoid_rise" type="int32">
<property name="trapezoid_gain" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
<strictly_positive/>
</property>
<property name="trapezoid_flat" type="int32">
<property name="decimation" type="int32">
</property>
<property name="decay_time" type="int32">
<property name="channel_active" type="int32">
</property>
<property name="peaking" type="int32">
<property name="dc_offset" type="int32" max_length="4">
</property>
<property name="bit_shift" type="int32">
<property name="pre_trigger" type="int32" max_length="4">
<strictly_positive/>
</property>
<property name="pulse_polarity" type="int32">
</property>
<property name="use_first_derivative" type="int32">
</property>
<property name="cfd_delay" type="int32" max_length="4">
<strictly_positive/>
</property>
<property name="signal_zero" type="int32" max_length="4">
<strictly_positive/>
</property>
<!-- OSCILLOSCOPE CURVES -->
......
<plugin>
<controller type="cfd_controller" role="cfd_controller1"/>
<property_switcher role="cfd_controller1" property="dpp_acq_mode" switcher_key="useScopeSwitcher"/>
<property_switcher role="cfd_controller1" property="dpp_acq_mode" switcher_key="acqModeSwitcher"/>
<group title="cfd_controller.boardParamsTitle">
<text role="cfd_controller1" property="nb_channels" prefix="cfd_controller.nbChannels"/>
<label role="cfd_controller1" property="nb_bits" prefix="cfd_controller.nbBits"/>
<newLine/>
<combo role="cfd_controller1" property="dpp_acq_mode" prefix="cfd_controller.acqMode" valuesAndLabels="cfd_controller.oscilloscope,cfd_controller.histogram"/>
<switchable_composite switcher_key="useScopeSwitcher" switch_values="0">
<simple_label prefix="cfd_controller.recordLength"/>
<text role="cfd_controller1" property="record_length"/>
<combo role="cfd_controller1" property="dpp_acq_mode" prefix="cfd_controller.acqMode" valuesAndLabels="cfd_controller.oscilloscope,cfd_controller.histogram,cfd_controller.waveform"/>
<switchable_composite switcher_key="acqModeSwitcher" switch_values="0">
<text role="cfd_controller1" property="record_length" prefix="cfd_controller.recordLength"/>
<plot_launcher role="cfd_controller1" data="cfd_input_plot,cfd_trapezoid_plot,cfd_trigger_plot,cfd_peaking_plot" title="cfd_controller.inputPlotTitle" height="20"/>
<simple_label prefix="cfd_controller.cfdTrap"/>
<combo role="cfd_controller1" property="cfd_trap" valuesAndLabels="cfd_controller.CFD,cfd_controller.Trap"/>
</switchable_composite>
<switchable_composite switcher_key="acqModeSwitcher" switch_values="2">
<text role="cfd_controller1" property="record_length" prefix="cfd_controller.recordLength"/>
</switchable_composite>
</group>
<newLine/>
<group title="cfd_controller.generalSettingsTitle">
<simple_label prefix="cfd_controller.displayChannel"/>
<text role="cfd_controller1" property="display_channel"/>
<newLine/>
<table_composite nbColumns="4">
<simple_label prefix="cfd_controller.displayChannel"/>
<text role="cfd_controller1" property="display_channel"/>
<simple_label prefix="cfd_controller.dynamicRange"/>
<combo role="cfd_controller1" property="dynamic_range" valuesAndLabels="cfd_controller.two,cfd_controller.zeroFive"/>
<simple_label prefix="cfd_controller.channelEnabled"/>
<check role="cfd_controller1" property="channel_active" checkBoxValues="cfd_controller.enabled"/>
<simple_label prefix="cfd_controller.pulsePolarity"/>
<combo role="cfd_controller1" property="pulse_polarity" valuesAndLabels="cfd_controller.positive,cfd_controller.negative"/>
<simple_label prefix="cfd_controller.dcOffset"/>
<text role="cfd_controller1" property="dc_offset"/>
<simple_label prefix="cfd_controller.digitalGain"/>
<combo role="cfd_controller1" property="digital_gain" valuesAndLabels="cfd_controller.gain1,cfd_controller.gain2,cfd_controller.gain4,cfd_controller.gain8"/>
<simple_label prefix="cfd_controller.decimation"/>
<combo role="cfd_controller1" property="decimation" valuesAndLabels="cfd_controller.dec0,cfd_controller.dec2,cfd_controller.dec4,cfd_controller.dec8"/>
</table_composite>
</group>
<newLine/>
<!-- <composite alignment="top_left"> -->
<!-- <group title="cfd_controller.timingFilterTitle" alignment="top_left"> -->
<!-- <table_composite nbColumns="2"> -->
<!-- <simple_label prefix="cfd_controller.selfTrigger"/> -->
<!-- <combo role="cfd_controller1" property="self_trigger" valuesAndLabels="cfd_controller.stenabled,cfd_controller.stdisable"/> -->
<!-- <simple_label prefix="cfd_controller.preTrigger"/> -->
<!-- <text role="cfd_controller1" property="pre_trigger"/> -->
<!-- <simple_label prefix="cfd_controller.charge_sensitivity"/> -->
<!-- <combo role="cfd_controller1" property="charge_sensitivity" valuesAndLabels="cfd_controller.20cs,cfd_controller.40cs,cfd_controller.80cs,cfd_controller.160cs,cfd_controller.320cs,cfd_controller.640cs" suffix="cfd_controller.fcversuslsb"/> -->
<!-- <simple_label prefix="cfd_controller.baselineMean"/> -->
<!-- <combo role="cfd_controller1" property="base_mean" valuesAndLabels="cfd_controller.base0,cfd_controller.base8,cfd_controller.base16,cfd_controller.base32,cfd_controller.base64,cfd_controller.base128,cfd_controller.base256,cfd_controller.base512"/> -->
<!-- <simple_label prefix="cfd_controller.triggerHoldOff"/> -->
<!-- <text role="cfd_controller1" property="trigger_holdoff" suffix="cfd_controller.uSecUnit"/> -->
<!-- </table_composite> -->
<!-- </group> -->
<!-- <group title="cfd_controller.energyFilterTitle" alignment="top_left"> -->
<!-- <table_composite nbColumns="2"> -->
<!-- <simple_label prefix="cfd_controller.threshold"/> -->
<!-- <text role="cfd_controller1" property="trigger_threshold" suffix="cfd_controller.lsbUnit"/> -->
<!-- <simple_label prefix="cfd_controller.shortGate"/> -->
<!-- <text role="cfd_controller1" property="short_gate" suffix="cfd_controller.uSecUnit"/> -->
<!-- <simple_label prefix="cfd_controller.longGate"/> -->
<!-- <text role="cfd_controller1" property="long_gate" suffix="cfd_controller.uSecUnit"/> -->
<!-- <simple_label prefix="cfd_controller.preGate"/> -->
<!-- <text role="cfd_controller1" property="pre_gate" suffix="cfd_controller.uSecUnit"/> -->
<!-- </table_composite> -->
<!-- </group> -->
<newLine/>
<group title="cfd_controller.cfdGlobalTitle" alignment="top_left">
<composite alignment="top_left">
<group title="cfd_controller.timingFilterTitle" alignment="top_left">
<table_composite nbColumns="2">
<simple_label prefix="cfd_controller.preTrigger"/>
<text role="cfd_controller1" property="pre_trigger"/>
<simple_label prefix="cfd_controller.threshold"/>
<text role="cfd_controller1" property="trigger_threshold" suffix="cfd_controller.lsbUnit"/>
<simple_label prefix="cfd_controller.triggerSmoothing"/>
<combo role="cfd_controller1" property="trigger_smoothing" valuesAndLabels="cfd_controller.smooth1,cfd_controller.smooth2,cfd_controller.smooth4,cfd_controller.smooth8,cfd_controller.smooth16,cfd_controller.smooth32"/>
<simple_label prefix="cfd_controller.signalRiseTime"/>
<text role="cfd_controller1" property="rise_time" suffix="cfd_controller.uSecUnit"/>
<simple_label prefix="cfd_controller.triggerHoldOff"/>
<text role="cfd_controller1" property="trigger_holdoff" suffix="cfd_controller.uSecUnit"/>
</table_composite>
</group>
<group title="cfd_controller.energyFilterTitle" alignment="top_left">
<table_composite nbColumns="2">
<simple_label prefix="cfd_controller.channelOffset"/>
<text role="cfd_controller1" property="channel_offset"/>
<simple_label prefix="cfd_controller.delay"/>
<text role="cfd_controller1" property="delay"/>
<simple_label prefix="cfd_controller.attenuation"/>
<text role="cfd_controller1" property="attenuation"/>
<simple_label prefix="cfd_controller.signalDecayTime"/>
<text role="cfd_controller1" property="decay_time" suffix="cfd_controller.uSecUnit"/>
<simple_label prefix="cfd_controller.trapezoidlRiseTime"/>
<text role="cfd_controller1" property="trapezoid_rise" suffix="cfd_controller.uSecUnit"/>
<simple_label prefix="cfd_controller.trapezoidFlatTop"/>
<text role="cfd_controller1" property="trapezoid_flat" suffix="cfd_controller.uSecUnit"/>
<simple_label prefix="cfd_controller.baselineMean"/>
<combo role="cfd_controller1" property="base_mean" valuesAndLabels="cfd_controller.base0,cfd_controller.base16,cfd_controller.base64,cfd_controller.base256,cfd_controller.base1024,cfd_controller.base4096,cfd_controller.base16384"/>
<simple_label prefix="cfd_controller.trapezoidGain"/>
<text role="cfd_controller1" property="trapezoid_gain"/>
<simple_label prefix="cfd_controller.flatTopDelay" suffix="cfd_controller.uSecUnit"/>
<text role="cfd_controller1" property="flat_top"/>
<simple_label prefix="cfd_controller.peakMean"/>
<combo role="cfd_controller1" property="peak_mean" valuesAndLabels="cfd_controller.peak1,cfd_controller.peak4,cfd_controller.peak16,cfd_controller.peak64"/>
<simple_label prefix="cfd_controller.baselineHoldOff"/>
<text role="cfd_controller1" property="base_holdoff" suffix="cfd_controller.uSecUnit"/>