Difference between revisions of "Equipment List Parameters"

From MidasWiki
Jump to navigation Jump to search
Line 1: Line 1:
== Explanation of Equipment List Parameters ==
+
== Links ==
 
 
Links
 
[[Equipment Declaration]]
 
<div id="B">B</div>
 
  
 
[[#Equipment Name]] [[#EventID]] [[#TriggerMask]]  [[#Equipment Type]]  [[#Test1]]  [[#Buffer]]
 
[[#Equipment Name]] [[#EventID]] [[#TriggerMask]]  [[#Equipment Type]]  [[#Test1]]  [[#Buffer]]
  
[[#Equipment Type]] [[Equipment Flags#EQ_PERIODIC|EQ_PERIODIC]] [[Equipment Flags#EQ_POLLED|EQ_POLLED]] [[Equipment Flags#EQ_INTERRUPT|Q_INTERRUPT]] [[Equipment Flags#EQ_MULTITHREAD|Q_MULTITHREAD]] [[Equipment Flags#EQ_SLOW|EQ_SLOW]]  [[Equipment Flags#EQ_MANUAL_TRIG|EQ_MANUAL_TRIG]]  [[Equipment Flags#EQ_EB|EQ_EB]] [[Equipment Flags#EQ_FRAGMENTED|EQ_FRAGMENTED]]  
+
[[#Equipment Type]] [[Equipment Flags#EQ_PERIODIC|EQ_PERIODIC]] [[Equipment Flags#EQ_POLLED|EQ_POLLED]] [[Equipment Flags#EQ_INTERRUPT|EQ_INTERRUPT]] [[Equipment Flags#EQ_MULTITHREAD|Q_MULTITHREAD]] [[Equipment Flags#EQ_SLOW|EQ_SLOW]]  [[Equipment Flags#EQ_MANUAL_TRIG|EQ_MANUAL_TRIG]]  [[Equipment Flags#EQ_EB|EQ_EB]] [[Equipment Flags#EQ_FRAGMENTED|EQ_FRAGMENTED]]  
  
 
[[#MirroredInODB]]
 
[[#MirroredInODB]]
  
==Introduction==
+
==Equipment List ==
The Equipment declaration in the frontend uses the EQUIPMENT structure defined in ''midas.h'' in the MIDAS package. Only those fields that are needed by the frontend are
+
The ''Equipment List'' is a declaration of the equipment(s) in a frontend using the ''EQUIPMENT structure'' defined in ''midas.h'' in the MIDAS package.  
included (see example below). Some of these parameters are copied to the ODB <span style="color: purple;">''/Equipment/<equipment-name>/Common''</span> subdirectory when the frontend is initialized.
+
 
 +
Only those fields that are needed by the frontend to define the equipments are included (see [[Example Equipment List declaration in a frontend|example]] below). The contents of these fields (or parameters) determine the properties of each equipment. Some of these parameters are copied to the ODB <span style="color: purple;">''/Equipment/<equipment-name>/Common''</span> subdirectory when the frontend is initialized.
  
Each of the parameters found in the frontend Equipment Declaration are described below.
+
Each parameter found in a frontend Equipment List is described below under [[#Explanation of Equipment List parameters|Explanation of Equipment List parameters]].
  
==Example Equipment declaration in a frontend ==
+
==Example Equipment List declaration in a frontend ==
  
  
Line 23: Line 20:
  
 
  /*-- Equipment list ------------------------------------------------*/
 
  /*-- Equipment list ------------------------------------------------*/
 
+
                            //
 
  EQUIPMENT equipment[] = {
 
  EQUIPMENT equipment[] = {
 
+
                            //
 
   {"Trigger",              /* equipment name */
 
   {"Trigger",              /* equipment name */
 
     {1, 0,                  /* event ID, trigger mask */
 
     {1, 0,                  /* event ID, trigger mask */
Line 42: Line 39:
 
     read_trigger_event,      /* readout routine */
 
     read_trigger_event,      /* readout routine */
 
     },
 
     },
 
+
                            //
 
   {"Scaler",                /* equipment name */
 
   {"Scaler",                /* equipment name */
 
     {2, 0,                  /* event ID, trigger mask */
 
     {2, 0,                  /* event ID, trigger mask */
Line 59: Line 56:
 
     read_scaler_event,      /* readout routine */
 
     read_scaler_event,      /* readout routine */
 
     },
 
     },
 
+
                            //
 
   {""}
 
   {""}
 
  };
 
  };
  
  
== EQUIPMENT Structure parameters ==
+
== Explanation of Equipment List parameters ==
 
===Equipment Name===
 
===Equipment Name===
Each equipment has to be assigned a unique Name. The name will be the reference name of the equipment generating the event. Examples of typical equipment Names are "Trigger","Scaler","Epics".
+
This [[#Equipment List|Equipment List Parameter]] defines the name of the equipment. Each equipment name must be unique (i.e. no two equipments in the same experiment may have the same name). The name will be the reference name of the equipment generating the event. Examples of typical Equipment Names are "Trigger","Scaler","Epics".
  
 
===EventID===
 
===EventID===
Each equipment has to be associated with a  unique event ID . The event ID will be part of the event header of that particular equipment.
+
This [[#Equipment List|Equipment List Parameter]] defines the event ID for this equipment. Each equipment has to be associated with a  unique event ID . The event ID will be part of the event header of that particular equipment.
  
 
===TriggerMask===
 
===TriggerMask===
If  the equipment [[#Type|Type]] is  [[#EQ_INTERRUPT|EQ_INTERRUPT]] or [[#EQ_MULTITHREAD|EQ_MULTITHREAD]], each equipment must be associated with a unique Trigger Mask  In this case, the Trigger Mask can be modified dynamically by the readout routine to define a  [[subevent type]] on an event-by-event basis. This can be used to mix "physics events" (from a physics trigger) and "calibration events" (from a clock for example) in one run and identify them later. Both parameters are declared as 16-bit values. If the Trigger Mask is used in a single bit-wise mode, 16 is the maximum number of different masks available.   
+
This [[#Equipment List|Equipment List Parameter]] is active when the equipment [[#Type|Type]] is  [[#EQ_INTERRUPT|EQ_INTERRUPT]] or [[#EQ_MULTITHREAD|EQ_MULTITHREAD]]. In this case, each equipment must be associated with a unique Trigger Mask. The Trigger Mask can be modified dynamically by the readout routine to define a  [[subevent type]] on an event-by-event basis. This can be used to mix "physics events" (from a physics trigger) and "calibration events" (from a clock for example) in one run and identify them later. Both parameters are declared as 16-bit values. If the Trigger Mask is used in a single bit-wise mode, 16 is the maximum number of different masks available.   
 +
 
 +
If not active, set to 0.
  
 
<div id="MirroredInODB"></div>
 
<div id="MirroredInODB"></div>
 
===Buffer===
 
===Buffer===
Specifies the name of the Buffer to which the event will be sent. After composition of an equipment, the Midas  [[Frontend Operation#Frontend|Frontend]] ''mfe.c''
+
This [[#Equipment List|Equipment List Parameter]] specifies the name of the Buffer to which the event will be sent. After composition of an equipment, the Midas  [[Frontend Operation#Frontend|Frontend]] ''mfe.c''
 
takes over the sending of this event to the buffer (usually the SYSTEM buffer) on the back-end computer  where it may be sent to the data logger [([mlogger]]) and the [[analyser]].
 
takes over the sending of this event to the buffer (usually the SYSTEM buffer) on the back-end computer  where it may be sent to the data logger [([mlogger]]) and the [[analyser]].
  
Line 85: Line 84:
  
 
===Type===
 
===Type===
Type specifies the type of equipment, and should be set to one of the Equipment Flags EQ_XXX selected from the [[Equipment Flags|list of valid Equipment Flags]], i.e. one of
+
This [[#Equipment List|Equipment List Parameter]] specifies the type of equipment, and should be set to one of the Equipment Flags EQ_XXX selected from the [[Equipment Flags|list of valid Equipment Flags]], i.e. one of
 
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
 
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
 
* [[Equipment Flags#EQ_PERIODIC|EQ_PERIODIC]]
 
* [[Equipment Flags#EQ_PERIODIC|EQ_PERIODIC]]
Line 98: Line 97:
  
 
===Source===
 
===Source===
This field (i.e. the  interrupt or event source) is only used if the equipment [[#Type|Type]] is set to  [[Equipment Flags#EQ_INTERRUPT|EQ_INTERRUPT]] or [[Equipment Flags#EQ_MULTITHREAD|EQ_MULTITHREAD]]. The interrupt Source field is a bit-wise pattern representing the interrupt that is allowed to trigger the call to the  [[readout routine]]. The  @ref  FE_poll_or_interrupt_readout_routine "example"  shows a CAMAC or VME source for the interrupt. A MACRO (LAM_SOURCE) calculates the bit pattern from the parameters (Crate,Slot).  
+
This [[#Equipment List|Equipment List Parameter]]  (i.e. the  interrupt or event source) is only used if the equipment [[#Type|Type]] is set to  [[Equipment Flags#EQ_INTERRUPT|EQ_INTERRUPT]] or [[Equipment Flags#EQ_MULTITHREAD|EQ_MULTITHREAD]]. The interrupt Source field is a bit-wise pattern representing the interrupt that is allowed to trigger the call to the  [[readout routine]]. The  @ref  FE_poll_or_interrupt_readout_routine "example"  shows a CAMAC or VME source for the interrupt. A MACRO (LAM_SOURCE) calculates the bit pattern from the parameters (Crate,Slot).  
  
 
If not using an interrupt, this field is set to 1.
 
If not using an interrupt, this field is set to 1.
Line 104: Line 103:
  
 
===Format===
 
===Format===
Specifies the data format used for generating the event. Only [[Event Structure#MIDAS Format Event|"MIDAS"]] and  [[Event Structure#FIXED Format Event|"FIXED"]] formats are valid in the frontend. The format must agree with the way the event is composed in the equipment [[readout routine]].  It tells the system how to interpret an event when it is copied to the ODB or displayed in a user-readable form. Data in MIDAS and/or FIXED format from the frontend can be saved by the MIDAS data logger [[Mlogger|mlogger]] in a number of formats (see  [[Keys in the ODB /Logger/Channels tree #/Logger/Channels/0/Settings/Format | mlogger format]] ).
+
This [[#Equipment List|Equipment List Parameter]] specifies the data format used for generating the event. Only [[Event Structure#MIDAS Format Event|"MIDAS"]] and  [[Event Structure#FIXED Format Event|"FIXED"]] formats are valid in the frontend. The format must agree with the way the event is composed in the equipment [[readout routine]].  It tells the system how to interpret an event when it is copied to the ODB or displayed in a user-readable form. Data in MIDAS and/or FIXED format from the frontend can be saved by the MIDAS data logger [[Mlogger|mlogger]] in a number of formats (see  [[Keys in the ODB /Logger/Channels tree #/Logger/Channels/0/Settings/Format | mlogger format]] ).
 
'''NOTE'''
 
'''NOTE'''
 
*MIDAS or FIXED data format can be mixed at the frontend level, but <span style="color:darkcyan;">''mlogger''</span> is not able to handle this format diversity on a event-by-event basis.  
 
*MIDAS or FIXED data format can be mixed at the frontend level, but <span style="color:darkcyan;">''mlogger''</span> is not able to handle this format diversity on a event-by-event basis.  
Line 112: Line 111:
  
 
===Enabled===
 
===Enabled===
Enable switch for the equipment. Only when enabled (i.e. TRUE) is this equipment active.
+
This [[#Equipment List|Equipment List Parameter]] is the enable switch for the equipment. Only when enabled (i.e. TRUE) is this equipment active.
  
  
 
===ReadOn===
 
===ReadOn===
Specifies when the read-out of an event occurs or is enabled (i.e. on which transition state(s) and/or on which run state(s) respectively) by using a combination of  
+
This [[#Equipment List|Equipment List Parameter]] specifies when the read-out of an event occurs or is enabled (i.e. on which transition state(s) and/or on which run state(s) respectively) by using a combination of  
 
[[ReadOn Flags]].
 
[[ReadOn Flags]].
 
<div style="column-count:5;-moz-column-count:5;-webkit-column-count:5">
 
<div style="column-count:5;-moz-column-count:5;-webkit-column-count:5">
Line 134: Line 133:
  
 
===Period===
 
===Period===
Time interval for [[Equipment Flags#EQ_PERIODIC|EQ_PERIODIC]] equipment or time out value in the case of [[Equipment Flags#EQ_POLLED|EQ_POLLED]] or [[Equipment Flags#EQ_MULTITHREAD|EQ_MULTITHREAD]] equipments (units are milliseconds).
+
This [[#Equipment List|Equipment List Parameter]] specifies the time interval for [[Equipment Flags#EQ_PERIODIC|EQ_PERIODIC]] equipment or time out value in the case of [[Equipment Flags#EQ_POLLED|EQ_POLLED]] or [[Equipment Flags#EQ_MULTITHREAD|EQ_MULTITHREAD]] equipments (units are milliseconds).
  
 
===Event limit===
 
===Event limit===
Specifies the number of events to be taken prior to forcing an End-of-Run  [[Run States and Transitions#transition]]. The value 0 disables this option.
+
This [[#Equipment List|Equipment List Parameter]] specifies the number of events to be taken prior to forcing an End-of-Run  [[Run States and Transitions#transition]]. The value 0 disables this option.
  
 
===Number of subevents===
 
===Number of subevents===
Enables the [[Super Event]] capability if &gt; 0 . Specifies the maximum number of sub-events in the [[Super Event]]. (Not applicable to  
+
This [[#Equipment List|Equipment List Parameter]] enables the [[Super Event]] capability if &gt; 0 . Specifies the maximum number of sub-events in the [[Super Event]]. (Not applicable to [[Event Structure#FIXED Format Event|FIXED format]] events.)
[[Event Structure#FIXED Format Event|FIXED format]] events.)
+
 
 +
===Log History===
 +
This [[#Equipment List|Equipment List Parameter]] enables/disables the @ref  [[history system]] for that equipment. The value (positive in seconds) specifies the time interval between subsequent history events. A positive value enables history logging, in which case the event data will also be sent automatically to the ODB in the
 +
<span style="color: purple; font-style:italic;">/equipment/<equipment-name>/variables</span> tree.
 +
 
 +
To disable history logging of this event, set this parameter to 0.
 +
 
 +
 
 +
<div id="EventTrigger"></div> <div id="ManualTriggerMode"></div>
 +
===Readout Routine===
 +
This [[#Equipment List|Equipment List Parameter]]  contains the name of the user-written function to be called when the event is triggered. The name of this routine is specified by the user. This readout routine must be present in the frontend code. It will be called at an
 +
event trigger, which will occur under one of these conditions depending on the [[Equipment List Parameters#Type|Type]] parameter.
 +
 
 +
;polled mode : the poll_event() routine has detected a trigger request while polling on a trigger source.
 +
;interrupt mode : an interrupt has occurred whose source is pre-defined in the interrupt_configure() routine.
 +
;periodic modes : trigger occurs periodically at a time interval specified by the [[Equipment List Parameters#Period|Period]] parameter.
 +
;manual trigger mode : trigger occurs when
 +
:: 1. the  [[manual trigger button]] is pressed on the web interface or
 +
:: 2. a client requests an event by  @ref FE_backend_Manual_Trigger "triggering the event sending mechanism" via a RPC.
 +
 
 +
Click for further details of a @ref FE_poll_event "poll_event routine" and an  @ref FE_interrupt_event "interrupt routine".

Revision as of 18:14, 30 October 2013

Links

#Equipment Name #EventID #TriggerMask #Equipment Type #Test1 #Buffer

#Equipment Type EQ_PERIODIC EQ_POLLED EQ_INTERRUPT Q_MULTITHREAD EQ_SLOW EQ_MANUAL_TRIG EQ_EB EQ_FRAGMENTED

#MirroredInODB

Equipment List

The Equipment List is a declaration of the equipment(s) in a frontend using the EQUIPMENT structure defined in midas.h in the MIDAS package.

Only those fields that are needed by the frontend to define the equipments are included (see example below). The contents of these fields (or parameters) determine the properties of each equipment. Some of these parameters are copied to the ODB /Equipment/<equipment-name>/Common subdirectory when the frontend is initialized.

Each parameter found in a frontend Equipment List is described below under Explanation of Equipment List parameters.

Example Equipment List declaration in a frontend

An example of an Equipment declaration in a frontend is shown below:

/*-- Equipment list ------------------------------------------------*/
                            //
EQUIPMENT equipment[] = {
                            //
  {"Trigger",               /* equipment name */
   {1, 0,                   /* event ID, trigger mask */
    "SYSTEM",               /* event buffer */
    EQ_POLLED,              /* equipment type */
    LAM_SOURCE(0, 0xFFFFFF),        /* event source crate 0, all stations */
    "MIDAS",                /* format */
    TRUE,                   /* enabled */
    RO_RUNNING |            /* read only when running */
    RO_ODB,                 /* and update ODB */
    100,                    /* poll for 100ms */
    0,                      /* stop run after this event limit */
    0,                      /* number of sub events */
    0,                      /* don't log history */
    "", "", "",},
   read_trigger_event,      /* readout routine */
   },
                            //
  {"Scaler",                /* equipment name */
   {2, 0,                   /* event ID, trigger mask */
    "SYSTEM",               /* event buffer */
    EQ_PERIODIC | EQ_MANUAL_TRIG,   /* equipment type */
    0,                      /* event source */
    "MIDAS",                /* format */
    TRUE,                   /* enabled */
    RO_RUNNING | RO_TRANSITIONS |   /* read when running and on transitions */
    RO_ODB,                 /* and update ODB */
    10000,                  /* read every 10 sec */
    0,                      /* stop run after this event limit */
    0,                      /* number of sub events */
    0,                      /* log history */
    "", "", "",},
   read_scaler_event,       /* readout routine */
   },
                            //
  {""}
};


Explanation of Equipment List parameters

Equipment Name

This Equipment List Parameter defines the name of the equipment. Each equipment name must be unique (i.e. no two equipments in the same experiment may have the same name). The name will be the reference name of the equipment generating the event. Examples of typical Equipment Names are "Trigger","Scaler","Epics".

EventID

This Equipment List Parameter defines the event ID for this equipment. Each equipment has to be associated with a unique event ID . The event ID will be part of the event header of that particular equipment.

TriggerMask

This Equipment List Parameter is active when the equipment Type is EQ_INTERRUPT or EQ_MULTITHREAD. In this case, each equipment must be associated with a unique Trigger Mask. The Trigger Mask can be modified dynamically by the readout routine to define a subevent type on an event-by-event basis. This can be used to mix "physics events" (from a physics trigger) and "calibration events" (from a clock for example) in one run and identify them later. Both parameters are declared as 16-bit values. If the Trigger Mask is used in a single bit-wise mode, 16 is the maximum number of different masks available.

If not active, set to 0.

Buffer

This Equipment List Parameter specifies the name of the Buffer to which the event will be sent. After composition of an equipment, the Midas Frontend mfe.c takes over the sending of this event to the buffer (usually the SYSTEM buffer) on the back-end computer where it may be sent to the data logger [([mlogger]]) and the analyser.

  • If this field is left empty, (i.e. set to ""), the readout function associated with that equipment will still be performed, but the actual event won't be sent to the buffer. Instead, that particular equipment can be mirrored in the ODB if the RO_ODB flag is turned on (see @ref FE_RO_ODB_example "example"). The ODB is updated with a new event approximately every second. Note that this feature is generally used only for testing or monitoring, as writing large amounts of data to the ODB takes time.
  • By using a buffer other than the SYSTEM buffer, Event Filtering can be implemented.
  • If using an Event Builder ( i.e. a secondary stage on the back-end to collect and assemble events coming from different buffers in order to compose a larger event) , a dedicated buffer can be specified. In this case the EQ_EB flag must be turned on, and the events coming from the Frontend are called fragments.


Type

This Equipment List Parameter specifies the type of equipment, and should be set to one of the Equipment Flags EQ_XXX selected from the list of valid Equipment Flags, i.e. one of

Source

This Equipment List Parameter (i.e. the interrupt or event source) is only used if the equipment Type is set to EQ_INTERRUPT or EQ_MULTITHREAD. The interrupt Source field is a bit-wise pattern representing the interrupt that is allowed to trigger the call to the readout routine. The @ref FE_poll_or_interrupt_readout_routine "example" shows a CAMAC or VME source for the interrupt. A MACRO (LAM_SOURCE) calculates the bit pattern from the parameters (Crate,Slot).

If not using an interrupt, this field is set to 1.


Format

This Equipment List Parameter specifies the data format used for generating the event. Only "MIDAS" and "FIXED" formats are valid in the frontend. The format must agree with the way the event is composed in the equipment readout routine. It tells the system how to interpret an event when it is copied to the ODB or displayed in a user-readable form. Data in MIDAS and/or FIXED format from the frontend can be saved by the MIDAS data logger mlogger in a number of formats (see mlogger format ). NOTE

  • MIDAS or FIXED data format can be mixed at the frontend level, but mlogger is not able to handle this format diversity on a event-by-event basis.
In practice, the data format (MIDAS/FIXED) should be identical throughout one equipment definition. Different equipments can, of course, have different formats in the same frontend.
  • ROOT format cannot be specified in the equipment definition. To save raw data in ROOT format, the #Bank definition must be supplied, and a conversion to ROOT format is done by the data logger ).
  • For FIXED events, the Bank definition parameter may contain the Init String.

Enabled

This Equipment List Parameter is the enable switch for the equipment. Only when enabled (i.e. TRUE) is this equipment active.


ReadOn

This Equipment List Parameter specifies when the read-out of an event occurs or is enabled (i.e. on which transition state(s) and/or on which run state(s) respectively) by using a combination of ReadOn Flags.

NOTE
These flags can be combined with the logical OR operator,e.g. RO_RUNNING | RO_TRANSITIONS means that the event is read out when

running and additionally on all transitions.

Period

This Equipment List Parameter specifies the time interval for EQ_PERIODIC equipment or time out value in the case of EQ_POLLED or EQ_MULTITHREAD equipments (units are milliseconds).

Event limit

This Equipment List Parameter specifies the number of events to be taken prior to forcing an End-of-Run Run States and Transitions#transition. The value 0 disables this option.

Number of subevents

This Equipment List Parameter enables the Super Event capability if > 0 . Specifies the maximum number of sub-events in the Super Event. (Not applicable to FIXED format events.)

Log History

This Equipment List Parameter enables/disables the @ref history system for that equipment. The value (positive in seconds) specifies the time interval between subsequent history events. A positive value enables history logging, in which case the event data will also be sent automatically to the ODB in the /equipment/<equipment-name>/variables tree.

To disable history logging of this event, set this parameter to 0.


Readout Routine

This Equipment List Parameter contains the name of the user-written function to be called when the event is triggered. The name of this routine is specified by the user. This readout routine must be present in the frontend code. It will be called at an event trigger, which will occur under one of these conditions depending on the Type parameter.

polled mode
the poll_event() routine has detected a trigger request while polling on a trigger source.
interrupt mode
an interrupt has occurred whose source is pre-defined in the interrupt_configure() routine.
periodic modes
trigger occurs periodically at a time interval specified by the Period parameter.
manual trigger mode
trigger occurs when
1. the manual trigger button is pressed on the web interface or
2. a client requests an event by @ref FE_backend_Manual_Trigger "triggering the event sending mechanism" via a RPC.

Click for further details of a @ref FE_poll_event "poll_event routine" and an @ref FE_interrupt_event "interrupt routine".