]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/trigger/test/TriggerConfig.C
Updates for unit testing software triggers.
[u/mrichter/AliRoot.git] / HLT / trigger / test / TriggerConfig.C
1 // $Id:  $
2 /**************************************************************************
3  * This file is property of and copyright by the ALICE HLT Project        *
4  * ALICE Experiment at CERN, All rights reserved.                         *
5  *                                                                        *
6  * Primary Authors: Artur Szostak <artursz@iafrica.com>                   *
7  *                  for The ALICE HLT Project.                            *
8  *                                                                        *
9  * Permission to use, copy, modify and distribute this software and its   *
10  * documentation strictly for non-commercial purposes is hereby granted   *
11  * without fee, provided that the above copyright notice appears in all   *
12  * copies and that both the copyright notice and this permission notice   *
13  * appear in the supporting documentation. The authors make no claims     *
14  * about the suitability of this software for any purpose. It is          *
15  * provided "as is" without express or implied warranty.                  *
16  **************************************************************************/
17
18 /// @file   TriggerConfig.C
19 /// @author Artur Szostak <artursz@iafrica.com>
20 /// @date   28 Oct 2009
21 /// @brief  Implementation of the global trigger menu configuration routines.
22 ///
23 /// The TriggerConfig routine generates a global trigger menu configuration used
24 /// to test the AliHLTGlobalTriggerComponent class.
25
26 /**
27  * Initialise a trigger menu to test a configuration where all trigger menu entries
28  * have different priority values. Thus only the first trigger menu item that
29  * matches is activated.
30  */
31 void PriorityGroupTestConfig()
32 {
33         AliHLTGlobalTriggerConfig config("Priority group test config");
34         config.AddItem(3, "triggerTPC && triggerSSD", "triggerSSD", "Fast SSD trigger");
35         config.AddItem(2, "triggerMUON || triggerSSD", "triggerMUON | triggerSSD", "MUON trigger");
36         config.AddItem(1, "triggerTPC", "triggerTPC | triggerMUON | triggerSSD", "TPC trigger");
37         config.SetDefaultTriggerDescription("No trigger");
38 }
39
40 /**
41  * Initialise a trigger menu to test a configuration where all trigger menu entries
42  * have the same priority values. Thus all entries form a single priority group and
43  * multiple items can be matched with the trigger input.
44  */
45 void SingleGroupTestConfig()
46 {
47         AliHLTGlobalTriggerConfig config("Single group test config");
48         config.AddItem("triggerTPC", "triggerTPC", "TPC trigger");
49         config.AddItem("triggerMUON", "triggerMUON", "MUON trigger");
50         config.AddItem("triggerSSD", "triggerSSD", "SSD trigger");
51         config.SetDefaultConditionOperator("||");
52         config.SetDefaultDomainOperator("|");
53 }
54
55 /**
56  * Create a trigger menu configuration to test the prescalar mechanism.
57  */
58 void PrescalarTestConfig()
59 {
60         AliHLTGlobalTriggerConfig config("Prescalar test config");
61         config.AddItem(2, "triggerTPC", "triggerTPC", 3, "TPC trigger");
62         config.AddItem(1, "triggerMUON", "triggerMUON", "MUON trigger");
63         config.SetDefaultConditionOperator("||");
64         config.SetDefaultTriggerDescription("No trigger");
65         config.SetDefaultTriggerDomain(AliHLTTriggerDomain("*******:HLT "));
66 }
67
68 /**
69  * Create a trigger menu configuration to test the trigger menu symbol mechanism.
70  */
71 void SymbolTestConfig()
72 {
73         AliHLTGlobalTriggerConfig config("Symbol test config");
74         config.AddSymbol("domain-All", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:***,-DAQRDOUT:TST\")");
75         config.AddSymbol("PHOSclusters", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:PHOS\")");
76         config.AddSymbol("PHOStracks", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"TRACKS:PHOS\")");
77         config.AddSymbol("domainPHOS", "AliHLTTriggerDomain", "", "PHOSclusters | PHOStracks");
78         config.AddSymbol("triggerTPC", "bool", "this->Result()", "false", "AliHLTTriggerDecision");
79         config.AddSymbol("trigClasses", "AliHLTUInt64_t", "this->GetTriggerClasses()", "0x0", "AliHLTEventSummary");
80         config.AddItem(2, "true", "domain-All", 4, "Pass through");
81         config.AddItem(1, "trigClasses == 0x2", "triggerTPC | domainPHOS", "Trigger class 2");
82 }
83
84 /**
85  * This will make a complex configuration that uses multiple features of the
86  * trigger menu configuration system.
87  */
88 void ComplexTestConfig()
89 {
90         AliHLTGlobalTriggerConfig config("Complex test config");
91         config.AddSymbol("domain-All", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:***,-DAQRDOUT:TST\")");
92         config.AddSymbol("PHOSclusters", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:PHOS\")");
93         config.AddSymbol("PHOStracks", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"TRACKS:PHOS\")");
94         config.AddSymbol("domainPHOS", "AliHLTTriggerDomain", "", "PHOSclusters | PHOStracks");
95         config.AddItem(4, "true", "domain-All", 7, "Pass through");
96         config.AddItem(3, "triggerSSD", "triggerSSD |", "SSD trigger 1");
97         config.AddItem(3, "triggerMUON", "triggerMUON", "MUON trigger 1");
98         config.AddItem(2, "triggerSSD ||", "triggerSSD | domainPHOS", "SSD trigger 2");
99         config.AddItem(2, "triggerMUON ||", "triggerMUON", "MUON trigger 2");
100         config.AddItem(1, "triggerTPC", "triggerTPC | triggerSSD | triggerMUON", "Slow trigger");
101         config.SetDefaultTriggerDomain(AliHLTTriggerDomain("*******:MUON"));
102         config.SetDefaultConditionOperator("&&");
103 }
104
105 /**
106  * This will make a configuration that will test software triggers.
107  */
108 void SoftwareTriggersTestConfig()
109 {
110         AliHLTGlobalTriggerConfig config("Software triggers test config");
111         config.AddSymbol("domainPHOS", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:PHOS\")");
112         config.AddSymbol("domainSPD", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:SPD\")");
113         config.AddItem(5, "START_OF_DATA", "START_OF_DATA", "Start of data");
114         config.AddItem(4, "END_OF_DATA", "END_OF_DATA", "End of data");
115         config.AddItem(3, "SOFTWARE", "domainSPD | SOFTWARE", "Software trigger");
116         config.AddItem(2, "CALIBRATION", "domainPHOS", "Calibration trigger");
117         config.AddItem(1, "triggerMUON", "triggerMUON", "MUON trigger");
118 }
119
120 /**
121  * Top level configuration routine for the global trigger component tests.
122  */
123 void TriggerConfig(int version = 0)
124 {
125         switch (version)
126         {
127         case 0: PriorityGroupTestConfig(); break;
128         case 1: SingleGroupTestConfig(); break;
129         case 2: PrescalarTestConfig(); break;
130         case 3: SymbolTestConfig(); break;
131         case 4: ComplexTestConfig(); break;
132         case 5: SoftwareTriggersTestConfig(); break;
133         default: AliHLTGlobalTriggerConfig config("Empty test config");
134         }
135 }