2 /**************************************************************************
3 * This file is property of and copyright by the ALICE HLT Project *
4 * ALICE Experiment at CERN, All rights reserved. *
6 * Primary Authors: Artur Szostak <artursz@iafrica.com> *
7 * for The ALICE HLT Project. *
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 **************************************************************************/
18 /// @file TriggerConfig.C
19 /// @author Artur Szostak <artursz@iafrica.com>
21 /// @brief Implementation of the global trigger menu configuration routines.
23 /// The TriggerConfig routine generates a global trigger menu configuration used
24 /// to test the AliHLTGlobalTriggerComponent class.
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.
31 void PriorityGroupTestConfig()
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");
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.
45 void SingleGroupTestConfig()
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("|");
56 * Create a trigger menu configuration to test the prescalar mechanism.
58 void PrescalarTestConfig()
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 "));
69 * Create a trigger menu configuration to test the trigger menu symbol mechanism.
71 void SymbolTestConfig()
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", "Double_t", "this->GetScalar(\"TrigClass\")", "0", "AliHLTScalars");
80 config.AddItem(2, "true", "domain-All", 4, "Pass through");
81 config.AddItem(1, "trigClasses == 0x2", "triggerTPC | domainPHOS", "Trigger class 2");
85 * This will make a complex configuration that uses multiple features of the
86 * trigger menu configuration system.
88 void ComplexTestConfig()
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("&&");
106 * This will make a configuration that will test software triggers.
108 void SoftwareTriggersTestConfig()
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");
121 * Top level configuration routine for the global trigger component tests.
123 void TriggerConfig(int version = 0)
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");