checked all PHA parameters. added DataClass.h and macro.h
This commit is contained in:
parent
c0f9aa5eba
commit
cb722ba86b
54
DataClass.h
Normal file
54
DataClass.h
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#ifndef DATA_H
|
||||||
|
#define DATA_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
#include <cmath>
|
||||||
|
#include <cstring> ///memset
|
||||||
|
#include <iostream> ///cout
|
||||||
|
#include <bitset>
|
||||||
|
|
||||||
|
#include "CAENDigitizer.h"
|
||||||
|
#include "CAENDigitizerType.h"
|
||||||
|
|
||||||
|
#include "macro.h"
|
||||||
|
|
||||||
|
class Data{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
int nByte; /// number of byte
|
||||||
|
char *buffer; /// readout buffer
|
||||||
|
uint32_t NumEvents[MaxNChannels];
|
||||||
|
uint32_t AllocatedSize;
|
||||||
|
uint32_t BufferSize;
|
||||||
|
CAEN_DGTZ_DPP_PHA_Event_t *Events[MaxNChannels]; /// events buffer
|
||||||
|
CAEN_DGTZ_DPP_PHA_Waveforms_t *Waveform[MaxNChannels]; /// waveforms buffer
|
||||||
|
|
||||||
|
public:
|
||||||
|
Data(){
|
||||||
|
nByte = 0;
|
||||||
|
buffer = NULL;
|
||||||
|
AllocatedSize = 0;
|
||||||
|
BufferSize = 0;
|
||||||
|
for( int i = 0 ; i < MaxNChannels; i++){
|
||||||
|
NumEvents[i] = 0;
|
||||||
|
Events[i] = NULL;
|
||||||
|
Waveform[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
~Data(){
|
||||||
|
for( int i = 0 ; i < MaxNChannels; i++){
|
||||||
|
delete Events [i];
|
||||||
|
delete Waveform [i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -11,7 +11,6 @@ Digitizer::Digitizer(){
|
||||||
ADCFullSize = 0;
|
ADCFullSize = 0;
|
||||||
ch2ns = 0;
|
ch2ns = 0;
|
||||||
BoardInfo = {};
|
BoardInfo = {};
|
||||||
DPPControl2Adress = Register::DPP::PHA::DPPAlgorithmControl2;
|
|
||||||
|
|
||||||
VMEBaseAddress = 0;
|
VMEBaseAddress = 0;
|
||||||
LinkType = CAEN_DGTZ_USB; /// default USB
|
LinkType = CAEN_DGTZ_USB; /// default USB
|
||||||
|
@ -20,6 +19,8 @@ Digitizer::Digitizer(){
|
||||||
|
|
||||||
channelMask = 0xFFFF;
|
channelMask = 0xFFFF;
|
||||||
|
|
||||||
|
data = new Data();
|
||||||
|
|
||||||
ret = -1;
|
ret = -1;
|
||||||
isConnected = false;
|
isConnected = false;
|
||||||
|
|
||||||
|
@ -32,6 +33,8 @@ Digitizer::Digitizer(int boardID, int portID){
|
||||||
|
|
||||||
Digitizer::~Digitizer(){
|
Digitizer::~Digitizer(){
|
||||||
CloseDigitizer();
|
CloseDigitizer();
|
||||||
|
|
||||||
|
delete data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Digitizer::Reset(){
|
void Digitizer::Reset(){
|
||||||
|
@ -107,8 +110,8 @@ int Digitizer::OpenDigitizer(int boardID, int portID, bool verbose){
|
||||||
case 0x85: printf("\tDPP-ZLE for x751 boards \n"); break;
|
case 0x85: printf("\tDPP-ZLE for x751 boards \n"); break;
|
||||||
case 0x86: printf("\tDPP-PSD for x743 boards \n"); break;
|
case 0x86: printf("\tDPP-PSD for x743 boards \n"); break;
|
||||||
case 0x87: printf("\tDPP-QDC for x740 boards \n"); break;
|
case 0x87: printf("\tDPP-QDC for x740 boards \n"); break;
|
||||||
case 0x88: printf("\tDPP-PSD for x730 boards \n"); DPPControl2Adress = Register::DPP::PSD::DPPAlgorithmControl2; break;
|
case 0x88: printf("\tDPP-PSD for x730 boards \n"); break;
|
||||||
case 0x8B: printf("\tDPP-PHA for x730 boards \n"); DPPControl2Adress = Register::DPP::PHA::DPPAlgorithmControl2; break;
|
case 0x8B: printf("\tDPP-PHA for x730 boards \n"); break;
|
||||||
case 0x8C: printf("\tDPP-ZLE for x730 boards \n"); break;
|
case 0x8C: printf("\tDPP-ZLE for x730 boards \n"); break;
|
||||||
case 0x8D: printf("\tDPP-DAW for x730 boards \n"); break;
|
case 0x8D: printf("\tDPP-DAW for x730 boards \n"); break;
|
||||||
}
|
}
|
||||||
|
@ -298,8 +301,8 @@ void Digitizer::SetChannelMask(uint32_t mask){
|
||||||
ErrorMsg("SetChannelMask");
|
ErrorMsg("SetChannelMask");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Digitizer::SetRecordLength(unsigned int ns, int ch) { WriteRegister( Register::DPP::RecordLength, ns / ch2ns / 8 , ch); ErrorMsg("SetRecordLength"); }
|
void Digitizer::SetRecordLength(unsigned int ns, int ch) { WriteRegister( Register::DPP::RecordLength_G, ns / ch2ns / 8 , ch); ErrorMsg("SetRecordLength"); }
|
||||||
void Digitizer::SetEventAggregation(unsigned int numEvent, int ch) { WriteRegister( Register::DPP::NumberEventsPerAggregate, numEvent, ch); ErrorMsg("SetEventAggregation"); }
|
void Digitizer::SetEventAggregation(unsigned int numEvent, int ch) { WriteRegister( Register::DPP::NumberEventsPerAggregate_G,numEvent, ch); ErrorMsg("SetEventAggregation"); }
|
||||||
void Digitizer::SetInputDynamicRange(unsigned int TwoVol_0_or_halfVol_1, int ch){ WriteRegister( Register::InputDynamicRange, TwoVol_0_or_halfVol_1, ch); ErrorMsg("SetInputDynamicRange");}
|
void Digitizer::SetInputDynamicRange(unsigned int TwoVol_0_or_halfVol_1, int ch){ WriteRegister( Register::InputDynamicRange, TwoVol_0_or_halfVol_1, ch); ErrorMsg("SetInputDynamicRange");}
|
||||||
void Digitizer::SetPreTriggerSample(unsigned int nSample, int ch) { WriteRegister( Register::DPP::PreTrigger, nSample / 4, ch); ErrorMsg("SetPreTriggerSample");}
|
void Digitizer::SetPreTriggerSample(unsigned int nSample, int ch) { WriteRegister( Register::DPP::PreTrigger, nSample / 4, ch); ErrorMsg("SetPreTriggerSample");}
|
||||||
void Digitizer::SetPreTriggerDuration(unsigned int ns, int ch) { WriteRegister( Register::DPP::PreTrigger, ns / ch2ns / 4, ch); ErrorMsg("SetPreTriggerSample");}
|
void Digitizer::SetPreTriggerDuration(unsigned int ns, int ch) { WriteRegister( Register::DPP::PreTrigger, ns / ch2ns / 4, ch); ErrorMsg("SetPreTriggerSample");}
|
||||||
|
@ -307,6 +310,7 @@ void Digitizer::SetDCOffset(float offsetPrecentage, int ch)
|
||||||
void Digitizer::SetVetoWidth(uint32_t bit, int ch) { WriteRegister( Register::DPP::VetoWidth, bit, ch); ErrorMsg("SetVetoWidth");}
|
void Digitizer::SetVetoWidth(uint32_t bit, int ch) { WriteRegister( Register::DPP::VetoWidth, bit, ch); ErrorMsg("SetVetoWidth");}
|
||||||
|
|
||||||
void Digitizer::SetTriggerPolarity(bool RiseingIsZero, int ch ){
|
void Digitizer::SetTriggerPolarity(bool RiseingIsZero, int ch ){
|
||||||
|
if ( DPPType >= 128 ) return; /// do thing for DPP firmware
|
||||||
if( ch < 0 ) {
|
if( ch < 0 ) {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
for (int i = 0; i < NChannel; i++){
|
for (int i = 0; i < NChannel; i++){
|
||||||
|
@ -366,7 +370,7 @@ void Digitizer::SetBits(uint32_t address, unsigned int bitValue, unsigned int bi
|
||||||
uint32_t bit ;
|
uint32_t bit ;
|
||||||
uint32_t bitmask = (uint(pow(2, bitLength)-1) << bitSmallestPos);
|
uint32_t bitmask = (uint(pow(2, bitLength)-1) << bitSmallestPos);
|
||||||
if (ch < 0 ) ch = 0; /// take ch-0
|
if (ch < 0 ) ch = 0; /// take ch-0
|
||||||
bit = ReadRegister(address, 0);
|
bit = ReadRegister(address, ch);
|
||||||
bit = (bit & ~bitmask) | (bitValue << bitSmallestPos);
|
bit = (bit & ~bitmask) | (bitValue << bitSmallestPos);
|
||||||
WriteRegister(address, bit, ch);
|
WriteRegister(address, bit, ch);
|
||||||
if( ret != 0 ) ErrorMsg("SetBits");
|
if( ret != 0 ) ErrorMsg("SetBits");
|
||||||
|
|
|
@ -9,16 +9,13 @@
|
||||||
#include <iostream> ///cout
|
#include <iostream> ///cout
|
||||||
#include <bitset>
|
#include <bitset>
|
||||||
|
|
||||||
//#include <TQObject.h>
|
|
||||||
//#include <RQ_OBJECT.h>
|
|
||||||
|
|
||||||
#include "CAENDigitizer.h"
|
#include "CAENDigitizer.h"
|
||||||
#include "CAENDigitizerType.h"
|
#include "CAENDigitizerType.h"
|
||||||
|
|
||||||
|
#include "macro.h"
|
||||||
|
#include "DataClass.h"
|
||||||
#include "RegisterAddress.h"
|
#include "RegisterAddress.h"
|
||||||
|
|
||||||
#define MaxNChannels 16
|
|
||||||
#define MaxRecordLength 0x3fff * 8
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -65,7 +62,7 @@ class Digitizer{
|
||||||
void SetPreTriggerDuration(unsigned int ns, int ch = -1 );
|
void SetPreTriggerDuration(unsigned int ns, int ch = -1 );
|
||||||
void SetDCOffset(float offsetPrecentage, int ch = -1);
|
void SetDCOffset(float offsetPrecentage, int ch = -1);
|
||||||
void SetVetoWidth(uint32_t bit, int ch = -1); /// See manual
|
void SetVetoWidth(uint32_t bit, int ch = -1); /// See manual
|
||||||
void SetTriggerPolarity(bool RiseingIsZero, int ch = -1);
|
void SetTriggerPolarity(bool RiseingIsZero, int ch = -1); ///not used for DPP firmware
|
||||||
|
|
||||||
void SetBits(uint32_t address, unsigned int bitValue, unsigned int bitLength, unsigned int bitSmallestPos, int ch = -1);
|
void SetBits(uint32_t address, unsigned int bitValue, unsigned int bitLength, unsigned int bitSmallestPos, int ch = -1);
|
||||||
void SetDPPAlgorithmControl(uint32_t bit, int ch = -1);
|
void SetDPPAlgorithmControl(uint32_t bit, int ch = -1);
|
||||||
|
@ -96,20 +93,20 @@ class Digitizer{
|
||||||
int boardID; /// board identity
|
int boardID; /// board identity
|
||||||
int handle; /// i don't know why, but better separete the handle from boardID
|
int handle; /// i don't know why, but better separete the handle from boardID
|
||||||
int NChannel; /// number of channel
|
int NChannel; /// number of channel
|
||||||
int ADCbits; /// ADC bit
|
int ADCbits; /// ADC bit
|
||||||
int DPPType; /// DPP verion
|
int DPPType; /// DPP verion
|
||||||
unsigned int ADCFullSize; /// pow(2, ADCbits) - 1
|
unsigned int ADCFullSize; /// pow(2, ADCbits) - 1
|
||||||
float ch2ns; /// channel to ns
|
float ch2ns; /// channel to ns
|
||||||
CAEN_DGTZ_BoardInfo_t BoardInfo;
|
CAEN_DGTZ_BoardInfo_t BoardInfo;
|
||||||
uint32_t DPPControl2Adress;
|
|
||||||
|
|
||||||
///----- adjustable parameters
|
///----- adjustable parameters
|
||||||
|
uint32_t channelMask ; /// the channel mask from NChannel
|
||||||
uint32_t VMEBaseAddress; /// For direct USB or Optical-link connection, VMEBaseAddress must be 0
|
uint32_t VMEBaseAddress; /// For direct USB or Optical-link connection, VMEBaseAddress must be 0
|
||||||
CAEN_DGTZ_ConnectionType LinkType;
|
CAEN_DGTZ_ConnectionType LinkType;
|
||||||
CAEN_DGTZ_IOLevel_t IOlev; /// TTL signal (1 = 1.5 to 5V, 0 = 0 to 0.7V ) or NIM signal (1 = -1 to -0.8V, 0 = 0V)
|
CAEN_DGTZ_IOLevel_t IOlev; /// TTL signal (1 = 1.5 to 5V, 0 = 0 to 0.7V ) or NIM signal (1 = -1 to -0.8V, 0 = 0V)
|
||||||
CAEN_DGTZ_DPP_AcqMode_t AcqMode;
|
CAEN_DGTZ_DPP_AcqMode_t AcqMode;
|
||||||
|
|
||||||
uint32_t channelMask ; /// the channel mask from NChannel
|
Data * data;
|
||||||
|
|
||||||
///------- other parameters
|
///------- other parameters
|
||||||
int ret; /// return value, refer to CAEN_DGTZ_ErrorCode
|
int ret; /// return value, refer to CAEN_DGTZ_ErrorCode
|
||||||
|
|
|
@ -43,11 +43,12 @@ void DigitizerPHA::SetBaselineSampling(unsigned int bit, int ch) {
|
||||||
void DigitizerPHA::SetRollOverFlag(bool isRollOver, int ch) { SetBits(Register::DPP::DPPAlgorithmControl, isRollOver, 1, 26, ch); ErrorMsg("SetRollOverFlag");}
|
void DigitizerPHA::SetRollOverFlag(bool isRollOver, int ch) { SetBits(Register::DPP::DPPAlgorithmControl, isRollOver, 1, 26, ch); ErrorMsg("SetRollOverFlag");}
|
||||||
void DigitizerPHA::SetPileUpFlag(bool isPileUpFlag, int ch) { SetBits(Register::DPP::DPPAlgorithmControl, isPileUpFlag, 1, 27, ch); ErrorMsg("SetPileUpFlag");}
|
void DigitizerPHA::SetPileUpFlag(bool isPileUpFlag, int ch) { SetBits(Register::DPP::DPPAlgorithmControl, isPileUpFlag, 1, 27, ch); ErrorMsg("SetPileUpFlag");}
|
||||||
|
|
||||||
void DigitizerPHA::SetExtra2WordOption(unsigned int bit, int ch) { SetBits(Register::DPP::PHA::DPPAlgorithmControl2, bit, 3, 8, ch); ErrorMsg("PHA-SetExtra2WordOption");}
|
void DigitizerPHA::SetExtra2WordOption(unsigned int bit, int ch) { SetBits(Register::DPP::PHA::DPPAlgorithmControl2_G, bit, 3, 8, ch); ErrorMsg("PHA-SetExtra2WordOption");}
|
||||||
|
|
||||||
void DigitizerPHA::SetTriggerThreshold(unsigned int threshold, int ch ) { WriteRegister(Register::DPP::PHA::TriggerThreshold, threshold & 0x03FF, ch); ErrorMsg("PHA-SetTriggerThreshold");}
|
void DigitizerPHA::SetTriggerThreshold(unsigned int threshold, int ch ) { WriteRegister(Register::DPP::PHA::TriggerThreshold, threshold & 0x03FF, ch); ErrorMsg("PHA-SetTriggerThreshold");}
|
||||||
void DigitizerPHA::SetTriggerHoldOff(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::TriggerHoldOffWidth, nSample & 0x03FF, ch); ErrorMsg("PHA-SetTriggerHoldOff"); }
|
void DigitizerPHA::SetTriggerHoldOff(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::TriggerHoldOffWidth, nSample & 0x03FF, ch); ErrorMsg("PHA-SetTriggerHoldOff"); }
|
||||||
void DigitizerPHA::SetTriggerSmoothingFactor(unsigned int bit, int ch ) { WriteRegister(Register::DPP::PHA::RCCR2SmoothingFactor, bit & 0x0001, ch); ErrorMsg("PHA-SetTriggerSmoothingFactor");}
|
void DigitizerPHA::SetTriggerSmoothingFactor(unsigned int bit, int ch ) { WriteRegister(Register::DPP::PHA::RCCR2SmoothingFactor, bit & 0x001F, ch); ErrorMsg("PHA-SetTriggerSmoothingFactor");}
|
||||||
|
void DigitizerPHA::SetTriggerOutputWidth(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::ShapedTriggerWidth, nSample & 0x03FF, ch); ErrorMsg("PHA-SetTriggerOutputWidth");}
|
||||||
void DigitizerPHA::SetInputRiseTime(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::InputRiseTime, nSample & 0x00FF, ch); ErrorMsg("PHA-SetInputRiseTime");}
|
void DigitizerPHA::SetInputRiseTime(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::InputRiseTime, nSample & 0x00FF, ch); ErrorMsg("PHA-SetInputRiseTime");}
|
||||||
void DigitizerPHA::SetTrapezoidRiseTime(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::TrapezoidRiseTime, nSample & 0x0FFF, ch); ErrorMsg("PHA-SetTrapezoidRiseTime");}
|
void DigitizerPHA::SetTrapezoidRiseTime(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::TrapezoidRiseTime, nSample & 0x0FFF, ch); ErrorMsg("PHA-SetTrapezoidRiseTime");}
|
||||||
void DigitizerPHA::SetTrapezoidFlatTop(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::TrapezoidFlatTop, nSample & 0x0FFF, ch); ErrorMsg("PHA-SetTrapezoidFlatTop");}
|
void DigitizerPHA::SetTrapezoidFlatTop(unsigned int nSample, int ch ) { WriteRegister(Register::DPP::PHA::TrapezoidFlatTop, nSample & 0x0FFF, ch); ErrorMsg("PHA-SetTrapezoidFlatTop");}
|
||||||
|
@ -116,7 +117,7 @@ void DigitizerPHA::GetChannelSettingFromDigitizer(int ch){
|
||||||
int pileUp = int(value[0] >> 27) & 0x1;
|
int pileUp = int(value[0] >> 27) & 0x1;
|
||||||
|
|
||||||
///DPP algorithm Control 2
|
///DPP algorithm Control 2
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::DPPAlgorithmControl2 + (ch << 8), value);
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::DPPAlgorithmControl2_G + (ch << 8), value);
|
||||||
cout <<" DPP algorithm Control 2: 0b" << bitset<32>(value[0]) << endl;
|
cout <<" DPP algorithm Control 2: 0b" << bitset<32>(value[0]) << endl;
|
||||||
|
|
||||||
int extras2WordOption = int(value[0] >> 8) & 0x3;
|
int extras2WordOption = int(value[0] >> 8) & 0x3;
|
||||||
|
@ -132,14 +133,12 @@ void DigitizerPHA::GetChannelSettingFromDigitizer(int ch){
|
||||||
printf(" ch2ns : %.0f ns\n", ch2ns);
|
printf(" ch2ns : %.0f ns\n", ch2ns);
|
||||||
|
|
||||||
printf("==========----- input \n");
|
printf("==========----- input \n");
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::RecordLength + (ch << 8), value); printf("%24s %5d samples = %5.0f ns \n", "Record Length", ((value[0] * 8) & MaxRecordLength), ((value[0] * 8) & MaxRecordLength) * ch2ns); ///Record length
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::RecordLength_G + (ch << 8), value); printf("%24s %5d samples = %5.0f ns \n", "Record Length", ((value[0] * 8) & MaxRecordLength), ((value[0] * 8) & MaxRecordLength) * ch2ns); ///Record length
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PreTrigger + (ch << 8), value); printf("%24s %5d samples = %5.0f ns \n", "Pre-tigger", value[0] * 4, value[0] * 4 * ch2ns); ///Pre-trigger
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PreTrigger + (ch << 8), value); printf("%24s %5d samples = %5.0f ns \n", "Pre-tigger", value[0] * 4, value[0] * 4 * ch2ns); ///Pre-trigger
|
||||||
printf("%24s %5.0f samples, DPP-[20:22]\n", "baseline mean", pow(4, 1 + baseline)); ///Ns baseline
|
printf("%24s %5.0f samples, DPP-[20:22]\n", "baseline mean", pow(4, 1 + baseline)); ///Ns baseline
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::ChannelDCOffset + (ch << 8), value); printf("%24s %.2f %% of %d\n", "DC offset", value[0] * 100./ ADCFullSize, ADCFullSize); ///DC offset
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::ChannelDCOffset + (ch << 8), value); printf("%24s %.2f %% of %d\n", "DC offset", value[0] * 100./ ADCFullSize, ADCFullSize); ///DC offset
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::InputDynamicRange + (ch << 8), value); printf("%24s %.1f Vpp \n", "input Dynamic", value[0] == 0 ? 2 : 0.5); ///InputDynamic
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::InputDynamicRange + (ch << 8), value); printf("%24s %.1f Vpp \n", "input Dynamic", value[0] == 0 ? 2 : 0.5); ///InputDynamic
|
||||||
printf("%24s %s, DPP-[16]\n", "polarity", polarity == 0 ? "Positive" : "negative"); ///Polarity
|
printf("%24s %s, DPP-[16]\n", "polarity", polarity == 0 ? "Positive" : "negative"); ///Polarity
|
||||||
CAEN_DGTZ_TriggerPolarity_t * triggerPolarity;
|
|
||||||
CAEN_DGTZ_GetTriggerPolarity(handle, ch, triggerPolarity); printf("%24s %s \n", "trigger polarity", triggerPolarity[0] == 0 ? "Positive" : "negative"); ///Polarity
|
|
||||||
|
|
||||||
printf("==========----- discriminator \n");
|
printf("==========----- discriminator \n");
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::TriggerThreshold + (ch << 8), value); printf("%24s %4d LSB\n", "Threshold", value[0]); ///Threshold
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::TriggerThreshold + (ch << 8), value); printf("%24s %4d LSB\n", "Threshold", value[0]); ///Threshold
|
||||||
|
@ -162,7 +161,7 @@ void DigitizerPHA::GetChannelSettingFromDigitizer(int ch){
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::FineGain + (ch << 8), value); printf("%24s %d \n", "Energy fine gain", value[0]); ///Energy fine gain
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::FineGain + (ch << 8), value); printf("%24s %d \n", "Energy fine gain", value[0]); ///Energy fine gain
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::ChannelADCTemperature + (ch << 8), value); printf("%24s %d C\n", "Temperature", value[0]); ///Temperature
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::ChannelADCTemperature + (ch << 8), value); printf("%24s %d C\n", "Temperature", value[0]); ///Temperature
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::RiseTimeValidationWindow + (ch << 8), value); printf("%24s %.0f ns \n", "RiseTime Vaild Win.", value[0] * ch2ns);
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::RiseTimeValidationWindow + (ch << 8), value); printf("%24s %.0f ns \n", "RiseTime Vaild Win.", value[0] * ch2ns);
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::NumberEventsPerAggregate + (ch << 8), value); printf("%24s %d \n", "Event Aggregate", value[0] & 0x3FF);
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::NumberEventsPerAggregate_G + (ch << 8), value); printf("%24s %d \n", "Event Aggregate", value[0] & 0x3FF);
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::ChannelStopAcquisition + (ch << 8), value); printf("%24s %d = %s \n", "Stop Acq bit", value[0] & 1 , (value[0] & 1 ) == 0 ? "Run" : "Stop");
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::PHA::ChannelStopAcquisition + (ch << 8), value); printf("%24s %d = %s \n", "Stop Acq bit", value[0] & 1 , (value[0] & 1 ) == 0 ? "Run" : "Stop");
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::ChannelStatus + (ch << 8), value); printf("%24s 0x%x \n", "Status bit", (value[0] & 0xff) );
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::ChannelStatus + (ch << 8), value); printf("%24s 0x%x \n", "Status bit", (value[0] & 0xff) );
|
||||||
CAEN_DGTZ_ReadRegister(handle, Register::DPP::AMCFirmwareRevision + (ch << 8), value); printf("%24s 0x%x \n", "AMC firmware rev.", value[0] );
|
CAEN_DGTZ_ReadRegister(handle, Register::DPP::AMCFirmwareRevision + (ch << 8), value); printf("%24s 0x%x \n", "AMC firmware rev.", value[0] );
|
||||||
|
|
|
@ -32,6 +32,7 @@ class DigitizerPHA : public Digitizer {
|
||||||
void SetTriggerHoldOff(unsigned int nSample, int ch = -1 );
|
void SetTriggerHoldOff(unsigned int nSample, int ch = -1 );
|
||||||
void SetTriggerSmoothingFactor(unsigned int bit, int ch = -1 );
|
void SetTriggerSmoothingFactor(unsigned int bit, int ch = -1 );
|
||||||
void SetInputRiseTime(unsigned int nSample, int ch = -1);
|
void SetInputRiseTime(unsigned int nSample, int ch = -1);
|
||||||
|
void SetTriggerOutputWidth(unsigned int nSample, int ch = -1);
|
||||||
|
|
||||||
void SetTrapezoidRiseTime(unsigned int nSample, int ch = -1 );
|
void SetTrapezoidRiseTime(unsigned int nSample, int ch = -1 );
|
||||||
void SetTrapezoidFlatTop(unsigned int nSample, int ch = -1 );
|
void SetTrapezoidFlatTop(unsigned int nSample, int ch = -1 );
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
// Do NOT change. Changes will be lost next time file is generated
|
// Do NOT change. Changes will be lost next time file is generated
|
||||||
|
|
||||||
#define R__DICTIONARY_FILENAME FSUDAQDict
|
#define R__DICTIONARY_FILENAME FSUDAQDict
|
||||||
#define R__NO_DEPRECATION
|
|
||||||
|
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
@ -34,14 +33,14 @@
|
||||||
|
|
||||||
#include "TDataMember.h"
|
#include "TDataMember.h"
|
||||||
|
|
||||||
|
// Since CINT ignores the std namespace, we need to do so in this file.
|
||||||
|
namespace std {} using namespace std;
|
||||||
|
|
||||||
// Header files passed as explicit arguments
|
// Header files passed as explicit arguments
|
||||||
#include "FSUDAQ.h"
|
#include "FSUDAQ.h"
|
||||||
|
|
||||||
// Header files passed via #pragma extra_include
|
// Header files passed via #pragma extra_include
|
||||||
|
|
||||||
// The generated code does not explicitly qualify STL entities
|
|
||||||
namespace std {} using namespace std;
|
|
||||||
|
|
||||||
namespace ROOT {
|
namespace ROOT {
|
||||||
static TClass *MainWindow_Dictionary();
|
static TClass *MainWindow_Dictionary();
|
||||||
static void MainWindow_TClassManip(TClass*);
|
static void MainWindow_TClassManip(TClass*);
|
||||||
|
@ -52,7 +51,7 @@ namespace ROOT {
|
||||||
// Function generating the singleton type initializer
|
// Function generating the singleton type initializer
|
||||||
static TGenericClassInfo *GenerateInitInstanceLocal(const ::MainWindow*)
|
static TGenericClassInfo *GenerateInitInstanceLocal(const ::MainWindow*)
|
||||||
{
|
{
|
||||||
::MainWindow *ptr = nullptr;
|
::MainWindow *ptr = 0;
|
||||||
static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(::MainWindow));
|
static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(::MainWindow));
|
||||||
static ::ROOT::TGenericClassInfo
|
static ::ROOT::TGenericClassInfo
|
||||||
instance("MainWindow", "FSUDAQ.h", 25,
|
instance("MainWindow", "FSUDAQ.h", 25,
|
||||||
|
@ -66,14 +65,14 @@ namespace ROOT {
|
||||||
}
|
}
|
||||||
TGenericClassInfo *GenerateInitInstance(const ::MainWindow*)
|
TGenericClassInfo *GenerateInitInstance(const ::MainWindow*)
|
||||||
{
|
{
|
||||||
return GenerateInitInstanceLocal((::MainWindow*)nullptr);
|
return GenerateInitInstanceLocal((::MainWindow*)0);
|
||||||
}
|
}
|
||||||
// Static variable to force the class initialization
|
// Static variable to force the class initialization
|
||||||
static ::ROOT::TGenericClassInfo *_R__UNIQUE_DICT_(Init) = GenerateInitInstanceLocal((const ::MainWindow*)nullptr); R__UseDummy(_R__UNIQUE_DICT_(Init));
|
static ::ROOT::TGenericClassInfo *_R__UNIQUE_DICT_(Init) = GenerateInitInstanceLocal((const ::MainWindow*)0x0); R__UseDummy(_R__UNIQUE_DICT_(Init));
|
||||||
|
|
||||||
// Dictionary for non-ClassDef classes
|
// Dictionary for non-ClassDef classes
|
||||||
static TClass *MainWindow_Dictionary() {
|
static TClass *MainWindow_Dictionary() {
|
||||||
TClass* theClass =::ROOT::GenerateInitInstanceLocal((const ::MainWindow*)nullptr)->GetClass();
|
TClass* theClass =::ROOT::GenerateInitInstanceLocal((const ::MainWindow*)0x0)->GetClass();
|
||||||
MainWindow_TClassManip(theClass);
|
MainWindow_TClassManip(theClass);
|
||||||
return theClass;
|
return theClass;
|
||||||
}
|
}
|
||||||
|
@ -101,40 +100,42 @@ namespace {
|
||||||
void TriggerDictionaryInitialization_FSUDAQDict_Impl() {
|
void TriggerDictionaryInitialization_FSUDAQDict_Impl() {
|
||||||
static const char* headers[] = {
|
static const char* headers[] = {
|
||||||
"FSUDAQ.h",
|
"FSUDAQ.h",
|
||||||
nullptr
|
0
|
||||||
};
|
};
|
||||||
static const char* includePaths[] = {
|
static const char* includePaths[] = {
|
||||||
"/home/splitpole/cern/root/include/",
|
"/usr/local/cern/include",
|
||||||
"/home/splitpole/FSUDAQ/",
|
"/home/catrina/FSUDAQ/",
|
||||||
nullptr
|
0
|
||||||
};
|
};
|
||||||
static const char* fwdDeclCode = R"DICTFWDDCLS(
|
static const char* fwdDeclCode = R"DICTFWDDCLS(
|
||||||
#line 1 "FSUDAQDict dictionary forward declarations' payload"
|
#line 1 "FSUDAQDict dictionary forward declarations' payload"
|
||||||
#pragma clang diagnostic ignored "-Wkeyword-compat"
|
#pragma clang diagnostic ignored "-Wkeyword-compat"
|
||||||
#pragma clang diagnostic ignored "-Wignored-attributes"
|
#pragma clang diagnostic ignored "-Wignored-attributes"
|
||||||
#pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
|
#pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
|
||||||
extern int __Cling_AutoLoading_Map;
|
extern int __Cling_Autoloading_Map;
|
||||||
class __attribute__((annotate("$clingAutoload$FSUDAQ.h"))) MainWindow;
|
class __attribute__((annotate("$clingAutoload$FSUDAQ.h"))) MainWindow;
|
||||||
)DICTFWDDCLS";
|
)DICTFWDDCLS";
|
||||||
static const char* payloadCode = R"DICTPAYLOAD(
|
static const char* payloadCode = R"DICTPAYLOAD(
|
||||||
#line 1 "FSUDAQDict dictionary payload"
|
#line 1 "FSUDAQDict dictionary payload"
|
||||||
|
|
||||||
|
#ifndef G__VECTOR_HAS_CLASS_ITERATOR
|
||||||
|
#define G__VECTOR_HAS_CLASS_ITERATOR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define _BACKWARD_BACKWARD_WARNING_H
|
#define _BACKWARD_BACKWARD_WARNING_H
|
||||||
// Inline headers
|
|
||||||
#include "FSUDAQ.h"
|
#include "FSUDAQ.h"
|
||||||
|
|
||||||
#undef _BACKWARD_BACKWARD_WARNING_H
|
#undef _BACKWARD_BACKWARD_WARNING_H
|
||||||
)DICTPAYLOAD";
|
)DICTPAYLOAD";
|
||||||
static const char* classesHeaders[] = {
|
static const char* classesHeaders[]={
|
||||||
"MainWindow", payloadCode, "@",
|
"MainWindow", payloadCode, "@",
|
||||||
nullptr
|
nullptr};
|
||||||
};
|
|
||||||
static bool isInitialized = false;
|
static bool isInitialized = false;
|
||||||
if (!isInitialized) {
|
if (!isInitialized) {
|
||||||
TROOT::RegisterModule("FSUDAQDict",
|
TROOT::RegisterModule("FSUDAQDict",
|
||||||
headers, includePaths, payloadCode, fwdDeclCode,
|
headers, includePaths, payloadCode, fwdDeclCode,
|
||||||
TriggerDictionaryInitialization_FSUDAQDict_Impl, {}, classesHeaders, /*hasCxxModule*/false);
|
TriggerDictionaryInitialization_FSUDAQDict_Impl, {}, classesHeaders, /*has no C++ module*/false);
|
||||||
isInitialized = true;
|
isInitialized = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
7
Makefile
7
Makefile
|
@ -11,6 +11,7 @@ CAENLIBS = -lCAENDigitizer
|
||||||
|
|
||||||
ROOTLIBS = `root-config --cflags --glibs`
|
ROOTLIBS = `root-config --cflags --glibs`
|
||||||
|
|
||||||
|
#OBJS = DataClass.o DigitizerClass.o DigitizerPHA.o DigitizerPSD.o FSUDAQ.o
|
||||||
OBJS = DigitizerClass.o DigitizerPHA.o DigitizerPSD.o FSUDAQ.o
|
OBJS = DigitizerClass.o DigitizerPHA.o DigitizerPSD.o FSUDAQ.o
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
@ -20,7 +21,11 @@ all : test FSUDAQ
|
||||||
clean :
|
clean :
|
||||||
/bin/rm -f $(OBJS) test FSUDAQ FSUDAQDict.cxx *.pcm
|
/bin/rm -f $(OBJS) test FSUDAQ FSUDAQDict.cxx *.pcm
|
||||||
|
|
||||||
DigitizerClass.o : DigitizerClass.cpp DigitizerClass.h RegisterAddress.h
|
|
||||||
|
#DataClass.o : DataClass.h macro.h
|
||||||
|
# $(CC) $(COPTS) -c DataClass.h -o DataClass.o
|
||||||
|
|
||||||
|
DigitizerClass.o : DigitizerClass.cpp DigitizerClass.h RegisterAddress.h macro.h DataClass.h
|
||||||
$(CC) $(COPTS) -c DigitizerClass.cpp
|
$(CC) $(COPTS) -c DigitizerClass.cpp
|
||||||
|
|
||||||
DigitizerPHA.o : DigitizerPHA.cpp DigitizerPHA.h DigitizerClass.o
|
DigitizerPHA.o : DigitizerPHA.cpp DigitizerPHA.h DigitizerClass.o
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
#ifndef REGISTERADDRESS_H
|
#ifndef REGISTERADDRESS_H
|
||||||
#define REGISTERADDRESS_H
|
#define REGISTERADDRESS_H
|
||||||
|
|
||||||
|
///=======
|
||||||
|
/// All 0x1XXX registers are either indiviual or Group
|
||||||
|
/// Indiviual register are all independence
|
||||||
|
/// Group register, 2m and 2m+1 channels setting are shared. and the name will have _G as prefix
|
||||||
|
/// Most 0x8XXX registers are common, which share for all channel
|
||||||
|
|
||||||
namespace Register {
|
namespace Register {
|
||||||
|
|
||||||
|
@ -11,7 +16,7 @@ namespace Register {
|
||||||
static uint32_t InputDynamicRange = 0x1028; /// R/W
|
static uint32_t InputDynamicRange = 0x1028; /// R/W
|
||||||
static uint32_t ChannelPulseWidth = 0x1070; /// R/W
|
static uint32_t ChannelPulseWidth = 0x1070; /// R/W
|
||||||
static uint32_t ChannelTriggerThreshold = 0x1080; /// R/W
|
static uint32_t ChannelTriggerThreshold = 0x1080; /// R/W
|
||||||
static uint32_t CoupleSelfTriggerLogic = 0x1084; /// R/W
|
static uint32_t CoupleSelfTriggerLogic_G = 0x1084; /// R/W
|
||||||
static uint32_t ChannelStatus = 0x1088; /// R
|
static uint32_t ChannelStatus = 0x1088; /// R
|
||||||
static uint32_t AMCFirmwareRevision = 0x108C; /// R
|
static uint32_t AMCFirmwareRevision = 0x108C; /// R
|
||||||
static uint32_t ChannelDCOffset = 0x1098; /// R/W
|
static uint32_t ChannelDCOffset = 0x1098; /// R/W
|
||||||
|
@ -62,19 +67,19 @@ namespace Register {
|
||||||
///====== Common for PHA and PSD
|
///====== Common for PHA and PSD
|
||||||
namespace DPP {
|
namespace DPP {
|
||||||
|
|
||||||
static uint32_t RecordLength = 0x1020; /// R/W
|
static uint32_t RecordLength_G = 0x1020; /// R/W
|
||||||
static uint32_t InputDynamicRange = 0x1028; /// R/W
|
static uint32_t InputDynamicRange = 0x1028; /// R/W
|
||||||
static uint32_t NumberEventsPerAggregate = 0x1034; /// R/W
|
static uint32_t NumberEventsPerAggregate_G = 0x1034; /// R/W
|
||||||
static uint32_t PreTrigger = 0x1038; /// R/W
|
static uint32_t PreTrigger = 0x1038; /// R/W
|
||||||
static uint32_t TriggerThreshold = 0x106C; /// R/W
|
static uint32_t TriggerThreshold = 0x106C; /// R/W
|
||||||
static uint32_t TriggerHoldOffWidth = 0x1074; /// R/W
|
static uint32_t TriggerHoldOffWidth = 0x1074; /// R/W
|
||||||
static uint32_t DPPAlgorithmControl = 0x1080; /// R/W
|
static uint32_t DPPAlgorithmControl = 0x1080; /// R/W
|
||||||
static uint32_t ChannelStatus = 0x1088; /// R
|
static uint32_t ChannelStatus = 0x1088; /// R
|
||||||
static uint32_t AMCFirmwareRevision = 0x108C; /// R
|
static uint32_t AMCFirmwareRevision = 0x108C; /// R
|
||||||
static uint32_t ChannelDCOffset = 0x1098; /// R/W
|
static uint32_t ChannelDCOffset = 0x1098; /// R/W
|
||||||
static uint32_t ChannelADCTemperature = 0x10A8; /// R
|
static uint32_t ChannelADCTemperature = 0x10A8; /// R
|
||||||
static uint32_t IndividualSoftwareTrigger = 0x10C0; /// W
|
static uint32_t IndividualSoftwareTrigger = 0x10C0; /// W
|
||||||
static uint32_t VetoWidth = 0x10D4; /// R/W
|
static uint32_t VetoWidth = 0x10D4; /// R/W
|
||||||
|
|
||||||
static uint32_t BoardConfiguration = 0x8000; /// R/W
|
static uint32_t BoardConfiguration = 0x8000; /// R/W
|
||||||
static uint32_t AggregateOrganization = 0x800C; /// R/W
|
static uint32_t AggregateOrganization = 0x800C; /// R/W
|
||||||
|
@ -131,7 +136,7 @@ namespace Register {
|
||||||
static uint32_t TriggerHoldOffWidth = 0x1074; /// R/W OK
|
static uint32_t TriggerHoldOffWidth = 0x1074; /// R/W OK
|
||||||
static uint32_t PeakHoldOff = 0x1078; /// R/W OK
|
static uint32_t PeakHoldOff = 0x1078; /// R/W OK
|
||||||
static uint32_t ShapedTriggerWidth = 0x1084; /// R/W not sure
|
static uint32_t ShapedTriggerWidth = 0x1084; /// R/W not sure
|
||||||
static uint32_t DPPAlgorithmControl2 = 0x10A0; /// R/W OK
|
static uint32_t DPPAlgorithmControl2_G = 0x10A0; /// R/W OK
|
||||||
static uint32_t FineGain = 0x10C4; /// R/W OK
|
static uint32_t FineGain = 0x10C4; /// R/W OK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +154,7 @@ namespace Register {
|
||||||
static uint32_t TriggerHoldOffWidth = 0x1074; /// R/W
|
static uint32_t TriggerHoldOffWidth = 0x1074; /// R/W
|
||||||
static uint32_t ThresholdForPSDCut = 0x1078; /// R/W
|
static uint32_t ThresholdForPSDCut = 0x1078; /// R/W
|
||||||
static uint32_t PureGapThreshold = 0x107C; /// R/W
|
static uint32_t PureGapThreshold = 0x107C; /// R/W
|
||||||
static uint32_t DPPAlgorithmControl2 = 0x1084; /// R/W
|
static uint32_t DPPAlgorithmControl2_G = 0x1084; /// R/W
|
||||||
static uint32_t EarlyBaselineFreeze = 0x10D8; /// R/W
|
static uint32_t EarlyBaselineFreeze = 0x10D8; /// R/W
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
8
macro.h
Normal file
8
macro.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef MACRO_H
|
||||||
|
#define MACRO_H
|
||||||
|
|
||||||
|
|
||||||
|
#define MaxNChannels 16
|
||||||
|
#define MaxRecordLength 0x3fff * 8
|
||||||
|
|
||||||
|
#endif
|
76
test.cpp
76
test.cpp
|
@ -7,45 +7,77 @@ int main(int argc, char* argv[]){
|
||||||
//DigitizerPSD * psd = new DigitizerPSD();
|
//DigitizerPSD * psd = new DigitizerPSD();
|
||||||
|
|
||||||
dig[0].OpenDigitizer(0,0, true);
|
dig[0].OpenDigitizer(0,0, true);
|
||||||
dig[1].OpenDigitizer(1,0, true);
|
//dig[1].OpenDigitizer(1,0, true);
|
||||||
|
|
||||||
//psd->OpenDigitizer(2,0);
|
//psd->OpenDigitizer(2,0);
|
||||||
|
|
||||||
|
|
||||||
printf("======================= \n");
|
printf("======================= \n");
|
||||||
|
|
||||||
//dig[0].SetDCOffset(0.2);
|
dig[0].SetRecordLength(3000);
|
||||||
//dig[0].SetDCOffset(0.3, 1);
|
dig[0].SetPreTriggerDuration(600);
|
||||||
|
dig[0].SetBaselineSampling(1);
|
||||||
|
dig[0].SetDCOffset(0.2);
|
||||||
|
dig[0].SetInputDynamicRange(0);
|
||||||
|
dig[0].SetPulsePolarity(0);
|
||||||
|
|
||||||
//dig[0].SetRecordLength(2000);
|
dig[0].SetTriggerThreshold(320);
|
||||||
//dig[0].SetEventAggregation(0);
|
dig[0].SetTriggerHoldOff(20);
|
||||||
//dig[0].SetInputDynamicRange(0);
|
dig[0].SetTriggerSmoothingFactor(4);
|
||||||
//dig[0].SetPreTriggerDuration(500);
|
dig[0].SetTriggerOutputWidth(50);
|
||||||
//dig[0].SetDCOffset(0.1);
|
dig[0].SetInputRiseTime(16);
|
||||||
//dig[0].SetTriggerPolarity(0);
|
|
||||||
|
|
||||||
dig[0].SetTrapezoidRescaling(31);
|
dig[0].SetTrapezoidRescaling(31);
|
||||||
dig[0].SetPeakSampling(3);
|
dig[0].SetTrapezoidRiseTime(100);
|
||||||
dig[0].SetPulsePolarity(1);
|
dig[0].SetTrapezoidFlatTop(50);
|
||||||
dig[0].SetBaselineSampling(4);
|
dig[0].SetDecayTime(5000);
|
||||||
dig[0].SetRollOverFlag(0);
|
dig[0].SetPeakingTime(20);
|
||||||
|
dig[0].SetPeakingHoldOff(100);
|
||||||
|
dig[0].SetPeakSampling(2);
|
||||||
|
|
||||||
|
dig[0].SetEnergyFineGain(2);
|
||||||
|
dig[0].SetRiseTimeValidWindow(10);
|
||||||
|
dig[0].SetEventAggregation(3);
|
||||||
|
dig[0].SetRollOverFlag(1);
|
||||||
dig[0].SetPileUpFlag(1);
|
dig[0].SetPileUpFlag(1);
|
||||||
|
dig[0].SetExtra2WordOption(2);
|
||||||
|
|
||||||
//dig[0].SetPulsePolarity(0, 1);
|
|
||||||
|
|
||||||
//for( int ch = 0; ch < dig[0].GetNChannel(); ch++){
|
dig[0].SetRecordLength(1000, 2);
|
||||||
// uint32_t data = dig[0].ReadRegister((uint32_t) RegisterDPP::ChannelDCOffset, ch);
|
dig[0].SetPreTriggerDuration(400, 2);
|
||||||
// printf(" %d %% \n", data );
|
dig[0].SetBaselineSampling(3, 2);
|
||||||
//}
|
dig[0].SetDCOffset(0.4, 2);
|
||||||
|
dig[0].SetInputDynamicRange(1, 2);
|
||||||
|
dig[0].SetPulsePolarity(1, 2);
|
||||||
|
|
||||||
|
dig[0].SetTriggerThreshold(220, 2);
|
||||||
|
dig[0].SetTriggerHoldOff(40, 2);
|
||||||
|
dig[0].SetTriggerSmoothingFactor(2, 2);
|
||||||
|
dig[0].SetTriggerOutputWidth(100, 2);
|
||||||
|
dig[0].SetInputRiseTime(100, 2);
|
||||||
|
|
||||||
|
dig[0].SetTrapezoidRescaling(31, 2);
|
||||||
|
dig[0].SetTrapezoidRiseTime(150, 2);
|
||||||
|
dig[0].SetTrapezoidFlatTop(100, 2);
|
||||||
|
dig[0].SetDecayTime(6000, 2);
|
||||||
|
dig[0].SetPeakingTime(30, 2);
|
||||||
|
dig[0].SetPeakingHoldOff(150, 2);
|
||||||
|
dig[0].SetPeakSampling(3, 2);
|
||||||
|
|
||||||
|
dig[0].SetEnergyFineGain(5, 2);
|
||||||
|
dig[0].SetRiseTimeValidWindow(40, 2);
|
||||||
|
dig[0].SetEventAggregation(5, 2);
|
||||||
|
dig[0].SetRollOverFlag(0, 2);
|
||||||
|
dig[0].SetPileUpFlag(0, 2);
|
||||||
|
dig[0].SetExtra2WordOption(0, 2);
|
||||||
|
|
||||||
//dig[0].SetTriggerThreshold(200);
|
|
||||||
//dig[0].SetTriggerHoldOff(100);
|
|
||||||
|
|
||||||
dig[0].PrintBoardConfiguration();
|
dig[0].PrintBoardConfiguration();
|
||||||
dig[0].GetChannelSettingFromDigitizer(0);
|
dig[0].GetChannelSettingFromDigitizer(0);
|
||||||
dig[0].GetChannelSettingFromDigitizer(1);
|
dig[0].GetChannelSettingFromDigitizer(2);
|
||||||
|
|
||||||
//dig[0].SetAcqMode("mixed");
|
|
||||||
|
dig[0].SetAcqMode("mixed");
|
||||||
|
|
||||||
delete [] dig;
|
delete [] dig;
|
||||||
//delete psd;
|
//delete psd;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user