Project

General

Profile

SebApp Config Parameters - seb10

sebApp is the process that collects data and sends it to the event builder. One instance runs on each SEB. It uses multi-threaded handling, so we have different threads that handle the NU and SN streams.

This page covers the config parameters for sebApp on SEB 10 (the SEBs connected to the PMT and trigger crate). SEBs 1-9 are different because they handles the TPC crates; so the SEB 1-9 parameters are described separately here.

SEB10 also contains a GPS card. The GPC signal is sent to the trigger board to give us a map of frame and sample numbers to real time. The map is updated on SEB10 once every second, and that information is sent with the data to the event builder.

An example of config parameters for sebAppseb10 is shown below (from config 681, PHYSICS_BNB_NUMI_MUCS_EXT6990mHz_SWTrigger_2Stream_LowThreshold50_c2.fcl), with explanations of the various parameters.

sebAppseb10: [  {
  controller:{
    slot : 0
  }
  gps:{
    enabled : true
  }
  • controller:
    • slot:
  • gps : Parameters to control whether we listen to the GPS for timing information
    • enabled: Do we get our timing information from the GPS? True/False
  neviscard_controller:{
    bus : 0x3
    device_id : 0x4
    vendor_id : 0x1172
  }
  neviscard_nu:{
    bus : 0x44
    device_id : 0x4
    vendor_id : 0x1172
  }
  neviscard_sn:{
    bus : 0x4
    device_id : 0x4
    vendor_id : 0x1172
  }
  • neviscard_controller:
  • neviscard_nu:
  • neviscard_sn:

Each of these three contains the following parameters:

  • bus:
  • device_id:
  • vendor_id:
  nu_stream:{
    circular_buffer_size : 1e9
    delay_after_trigger : 0
    dma_buffer_size : 1e5
    dmastrategy : disrespect
    fragment_id : 10
    max_internal_trigger : 0
    maxpoll : 6e8
    min_fragment_size : 1e6
    name : "sebpriv10" 
    port : 33421
    sink : assembler
    source : dma_pmt
    trigger_source : EXT
    type : "PMT" 
    xmit_timesize : 3199
  }
  • nu_stream: Parameters that govern the neutrino (triggered) data stream.
    • circular_buffer_size: Sets the size of the circular buffer (in bytes) in sebApp, for fragment production. The circular buffer size is configurable but it's a trade-off - if you have a large circular buffer there is less memory space left over for data storage. Currently (in config 681, PHYSICS_BNB_NUMI_MUCS_EXT6990mHz_SWTrigger_2Stream_LowThreshold50_c2.fcl) set to 1e9 for all nu_stream.
    • delay_after_trigger:
    • dma_buffer_size: Size of DMA buffer (in bytes) in the PCIe cards. This value can be changed by a few words, though, based on the dmastrategy parameter below.
    • dmastrategy:
    • fragment_id: Integer specifying the fragment ID reported to the EVB (so it knows if it has all fragments in an event). Should be set equal to the SEB number (ie. fragment_id : 10 in sebAppseb10), and must be unique for each stream and SEB.
    • max_internal_trigger :
    • maxpoll:
    • name: Name of the PC the sebApp is running on. This needs to match the names listed in /etc/hosts on evb, as this name is searched in order to get the IP address. Probably should match the name set in assemblerAppevb (ie. "sebpriv10").
    • port: The port number for the socket connection. This must be unique for each socket connection, and identical to the SEB port set in assemblerAppevb.
    • sink: Key word for specifying the FragmentSink of the data stream. Options include assembler (used for the "triggered" neutrino stream, meaning that fragments are sent to the assembler) or dump (used for the SN stream, meaning that data are written to local disk).
    • source: Key word specifying the FragmentSource of the data stream. For the "triggered" neutrino stream, this can be -- among other options -- dma, xmitbinfile, and deadbeef. We are using dma_pmt as standard for the PMTs in the neutrino stream.
    • trigger_source: Another key word for the hwutils recipe to be implemented, mostly for optioning between different trigger inputs. Currently, a string compare in configManager decides which recipe to run based on this parameter, after picking a general recipe using the recipe parameter.
    • type: Should be "PMT" for SEB 10.
    • xmit_timesize:
  pmt4:{
    beam_mult : 40
    beam_thres : 4095
    channels : 40
    cos_mult : 40
    cos_thres : 4095
    enable_bottom : 0x0
    enable_middle : 0x0
    enable_top : 0xffff
    pmt_beam1_read_delay : 10
    pmt_beam1_read_size : 1500
    pmt_beam1_trig_delay : 256
    pmt_beam1_trig_size : 0
    pmt_beam2_read_delay : 10
    pmt_beam2_read_size : 1500
    pmt_beam2_trig_delay : 256
    pmt_beam2_trig_size : 0
    pmt_blocksize : 0xffff
    pmt_deadtime : 45
    pmt_delay0 : 4
    pmt_delay1 : 12
    pmt_mich_mul : 0
    pmt_mich_thres : 0
    pmt_mich_window : 0
    pmt_precount : 3
    pmt_width : 5
    pmt_words : 40
    threshold0 : 80
    threshold1 : 1000
    threshold2 : 4095
    threshold3 : 4095
  }
  pmt5:{
    beam_mult : 40
    beam_thres : 4095
    channels : 40
    cos_mult : 40
    cos_thres : 4095
    enable_bottom : 0xffff
    enable_middle : 0xffff
    enable_top : 0xffff
    pmt_beam1_read_delay : 10
    pmt_beam1_read_size : 1500
    pmt_beam1_trig_delay : 256
    pmt_beam1_trig_size : 0
    pmt_beam2_read_delay : 10
    pmt_beam2_read_size : 1500
    pmt_beam2_trig_delay : 256
    pmt_beam2_trig_size : 0
    pmt_blocksize : 0xffff
    pmt_deadtime : 45
    pmt_delay0 : 4
    pmt_delay1 : 12
    pmt_mich_mul : 0
    pmt_mich_thres : 0
    pmt_mich_window : 0
    pmt_precount : 3
    pmt_width : 5
    pmt_words : 40
    threshold0 : 5
    threshold1 : 90
    threshold2 : 4095
    threshold3 : 4095
  }
  pmt6:{
    beam_mult : 40
    beam_thres : 4095
    channels : 40
    cos_mult : 40
    cos_thres : 4095
    enable_bottom : 0xffff
    enable_middle : 0xffff
    enable_top : 0xffff
    pmt_beam1_read_delay : 10
    pmt_beam1_read_size : 1500
    pmt_beam1_trig_delay : 256
    pmt_beam1_trig_size : 0
    pmt_beam2_read_delay : 10
    pmt_beam2_read_size : 1500
    pmt_beam2_trig_delay : 256
    pmt_beam2_trig_size : 0
    pmt_blocksize : 0xffff
    pmt_deadtime : 45
    pmt_delay0 : 4
    pmt_delay1 : 12
    pmt_mich_mul : 0
    pmt_mich_thres : 0
    pmt_mich_window : 0
    pmt_precount : 3
    pmt_width : 5
    pmt_words : 40
    threshold0 : 5
    threshold1 : 140
    threshold2 : 4095
    threshold3 : 4095
  }
Note that pmt4/5/6 here does not stand for "PMT number 4" etc. Instead, the numbers refer to the FEMs, and number according to the slot that each FEM is in. The mapping is:
  • pmt4: High-gain beam
  • pmt5: Low gain
  • pmt6: High-gain cosmic

For each of the three PMTs above, the following parameters are defined:

  • beam_mult:
  • beam_thres:
  • channels: Number of PMT channels for each FEM.
  • cos_mult:
  • cos_thres:
  • enable_bottom:
  • enable_middle:
  • enable_top:
  • pmt_beam1_read_delay:
  • pmt_beam1_read_size:
  • pmt_beam1_trig_delay:
  • pmt_beam1_trig_size:
  • pmt_beam2_read_delay:
  • pmt_beam2_read_size:
  • pmt_beam2_trig_delay:
  • pmt_beam2_trig_size:
  • pmt_blocksize:
  • pmt_deadtime:
  • pmt_delay0:
  • pmt_delay1:
  • pmt_mich_mul:
  • pmt_mich_thres:
  • pmt_mich_window:
  • pmt_precount:
  • pmt_width:
  • pmt_words:
  • threshold0:
  • threshold1: Discriminator threshold, in units such that 140=7PE (so 20 units per PE). For example, if you wanted to lower the high-gain cosmic discriminator threshold by 0.5 PE, you would change this number in pmt6 from 140 to 130.
  • threshold2:
  • threshold3:
  registration:{
    name : "sebpriv10" 
    recipe : 2stream_new
    trigger_source : EXT
    type : "PMT" 
  }
  • registration:
    • name: Name of the PC the sebApp is running on. This needs to match the names listed in /etc/hosts on evb, as this name is searched in order to get the IP address. Probably should match the name set in assemblerAppevb.
    • recipe: Key word for the hwutils recipe to be implemented. Currently, a string compare in configManager decides which recipe to run based on this parameter. Note that the readout firmware is hardcoded in the recipe, which means that you should NOT change the recipe unless the change has been approved by the Nevis readout team.
    • trigger_source: Another key word for the hwutils recipe to be implemented, mostly for optioning between different trigger inputs. Currently, a string compare in configManager decides which recipe to run based on this parameter, after picking a general recipe using the recipe parameter.
    • type: Should be "PMT" for SEB 10.
  sn_stream:{
    circular_buffer_size : 1e11
    compress : true
    data_dir_name : "/datalocal/supernova" 
    data_file_name : "2StreamTest" 
    dma_buffer_size : 4e6
    dmastrategy : disrespect
    file_size : 16e8
    maxpoll : 1e8
    name : "sebpriv10" 
    port : 33421
    sink : file
    source : dump
    type : "PMT" 
    xmit_timesize : 3199
  }
  • sn_stream: Parameters that govern the supernova data stream.
    • circular_buffer_size: Sets the size of the circular buffer (in bytes) in sebApp, for fragment production. The circular buffer size is configurable but it's a trade-off - if you have a large circular buffer there is less memory space left over for data storage. Currently (in config 681, PHYSICS_BNB_NUMI_MUCS_EXT6990mHz_SWTrigger_2Stream_LowThreshold50_c2.fcl) set to 1e11 for all sn_stream
    • compress:
    • data_dir_name:
    • data_file_name:
    • dma_buffer_size: Size of DMA buffer (in bytes) in the PCIe cards. This value can be changed by a few words, though, based on the dmastrategy parameter below.
    • dmastrategy:
    • file_size:
    • name: Name of the PC the sebApp is running on. This needs to match the names listed in /etc/hosts on evb, as this name is searched in order to get the IP address. Probably should match the name set in assemblerAppevb (ie. "sebpriv10" for SEB 10).
    • port: The port number for the socket connection. This must be unique for each socket connection, and identical to the SEB port set in assemblerAppevb.
    • sink: Key word for specifying the FragmentSink of the data stream. Options include assembler (used for the "triggered" neutrino stream, meaning that fragments are sent to the assembler) or dump (used for the SN stream, meaning that data are written to local disk).
    • source: Key word specifying the FragmentSource of the data stream. We are using dump as standard for the PMTs in the SN stream.
    • type: Should be "PMT" for SEB 10.
    • xmit_timesize:
  trg_stream:{
    circular_buffer_size : 4e4
    dma_buffer_size : 1e3
    fragment_id : 11
    name : "sebpriv10" 
    port : 33422
    sink : assembler
    source : trg
    type : "TRIGGER" 
  }
  • trg_stream: SEB 10 is special - it also has the trigger stream (as well as the nu/sn stream with the PMT information from the detector). These parameters control that.
    • circular buffer size:
    • dma_buffer_size: Size of DMA buffer (in bytes) in the PCIe cards. This value can be changed by a few words, though, based on the dmastrategy parameter.
    • fragment_id: Integer specifying the fragment ID reported to the EVB (so it knows if it has all fragments in an event). Should be set equal to the SEB number (ie. fragment_id : 10 in sebAppseb10), and must be unique for each stream and SEB. Should always be set to 11 for the trigger stream.
    • name: Name of the PC the sebApp is running on. This needs to match the names listed in /etc/hosts on evb, as this name is searched in order to get the IP address. Probably should match the name set in assemblerAppevb. (ie. "sebpriv10" for SEB 10).
    • port: The port number for the socket connection. This must be unique for each socket connection, and identical to the SEB port set in assemblerAppevb.
    • sink: Key word for specifying the FragmentSink of the data stream. Options include assembler (used for the "triggered" neutrino stream and the trigger stream, meaning that fragments are sent to the assembler) or dump (used for the SN stream, meaning that data are written to local disk).
    • source: Key word specifying the FragmentSource of the data stream. Should be trg for the trigger stream.
    • type:
  trigger:{
    deadtime : 0xfa
    framesize : 25599
    g1delay : 0x10
    g1end : 0x1
    g1start : 0x1
    g1width : 0x20
    g2delay : 0x10
    g2end : 0x20
    g2start : 0x1
    g2width : 0x20
    prescale0 : 0
    prescale1 : 0
    prescale8 : 0
    prescale9 : 0
    slot : 2
    timeinfo_directory : "/data/uboonedaq/metadata" 
    trigmask0 : 0
    trigmask1 : 0
    trigmask8 : 0x132
  }
  • trigger:
    • deadtime:
    • framesize:
    • g1delay:
    • g1end:
    • g1start:
    • g1width:
    • g2delay:
    • g2end:
    • g2start:
    • g2width:
    • prescale0:
    • prescale1:
    • prescale8:
    • prescale9:
    • slot:
    • timeinfo_directory:
    • trigmask0:
    • trigmask1:
    • trigmask8: see RC - Expert Hardware Trigger Bits
  xmit:{
    nu_source : dma_pmt
    slot : 3
    sn_source : dump
    timesize : 3199
  }
}  ]
  • xmit:
    • nu_compress:
    • nu_source: Key word specifying the FragmentSource of the "triggered" neutrino data stream. This can be -- among other options -- dma, xmitbinfile, and deadbeef. We are using dma_pmt as standard for the PMTs. Should match the parameters set in nu_stream.source above.
    • slot:
    • sn_compress:
    • sn_source: Key word specifying the FragmentSource of the supernova data stream. We are using dump as standard for the SN stream. Should match the parameters set in sn_stream.source above.
    • timesize: