Project

General

Profile

SebApp Config Parameters

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 SEBs 1-9 (the SEBs connected to the nine TPC crates). SEB 10 is different because it handles the PMT and trigger crate, so the SEB 10 parameters are described separately here.

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

sebAppseb01: [  {
  controller:{
    slot : 0
  }
  • controller:
    • slot:
  neviscard_controller:{
    bus : 0x9
    device_id : 0x4
    vendor_id : 0x1172
  }
  neviscard_nu:{
    bus : 0x5
    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
    compress : true
    delay_after_trigger : 0
    dma_buffer_size : 2e5
    dmastrategy : disrespect
    fragment_id : 1
    max_internal_trigger : 1e9
    maxpoll : 2e8
    min_fragment_size : 25e6
    name : "sebpriv01" 
    port : 33421
    sink : assembler
    source : dma
    trigger_source : EXT
    type : "TPC" 
    xmit_timesize : 3199
  }
  registration:{
    name : "sebpriv01" 
    recipe : 2stream_new
    trigger_source : EXT
    type : "TPC" 
  }
  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 : "sebpriv01" 
    port : 33421
    sink : file
    source : dump
    type : "TPC" 
    xmit_timesize : 3199
  }
  • nu_stream: Parameters that govern the neutrino (triggered) data stream.
  • 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: The type of crate/data being taken. Should be "TPC" for SEBs 1-9. Unknown what this is currently being used for.
  • sn_stream: Parameters that govern the supernova data stream.

Both nu_stream and sn_stream must have some or all of the following parameters defined:

  • 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 and 1e11 for all sn_stream
  • compress:
  • 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:
  • delay_after_trigger (nu_stream only):
  • fragment_id (nu_stream only): 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 (eg. fragment_id : 1 in sebAppseb01, fragment_id : 2 in sebAppseb02, etc.), and must be unique for each SEB.
  • max_internal_trigger (nu_stream only):
  • maxpoll (nu_stream only):
  • min_fragment_size (sn_stream only):
  • data_dir_name (sn_stream only):
  • data_file_name (sn_stream only):
  • file_size (sn_stream only):
  • maxpoll (sn_stream only):
  • 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.
  • 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 as standard for the neutrino stream, and dump for the sn 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 "TPC" for SEBs 1-9.
  • xmit_timesize:
  tpc:{
    channels : 64
    slots : 0x7ff00
  }
  • tpc:
    • channels: Number of channels in the TPC for each FEM. Maximum of 64, and I don't think we ever use anything besides 64 here.
    • slots: Bitmask specifying the slots TPC FEMs are located on the crate.
  xmit:{
    nu_compress : true
    nu_source : dma
    slot : 7
    sn_compress : true
    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 as standard for the TPC SEBs. 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:
  zero_suppression:{
    params:{
      channel_threshold : true
      load_threshold_mean : 2
      load_threshold_variance : 3
      postsample : 7
      presample : 7
    }
    slot10:{
      ch0 : 25
      ch1 : 25
      ch10 : 25
      ch11 : 25
      ... repeated for channels 0 - 63 inclusive (equal to 25 for all channels) ... 
      pol0 : 2
      pol1 : 2
      pol10 : 2
     ... repeated for pol0 - pol63 inclusive (equal to 2 for all) ...
    }
... repeated for all slots being used...
}  ]
  • Which slots should be used? Seems to change for different SEBs. Where is that configured?
  • zero_suppression:
    • channel_threshold:
    • load_threshold_mean:
    • load_threshold_variance:
    • postsample:
    • presample:
  • slotX: (All of this section is repeated for all slots used on the SEB. Which exact slots are used seems to vary from SEB to SEB, and are probably set in the tpc.slots parameter bitmask, but should not change now.)
    • chX: (Repeated for ch0-ch63 inclusive)
    • polX: (Repeated for pol0-pol63 inclusive)