applying data type definition of {DAQRDOUT} instead of string
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTTrigger.cxx
CommitLineData
a9670afe 1/**************************************************************************
2 * This file is property of and copyright by the ALICE HLT Project *
3 * ALICE Experiment at CERN, All rights reserved. *
4 * *
5 * Primary Authors: Artur Szostak <artursz@iafrica.com> *
6 * for The ALICE HLT Project. *
7 * *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
5a806c0e 16
1b9a175e 17/// @file AliHLTTrigger.h
18/// @author Artur Szostak <artursz@iafrica.com>
19/// @date 12 Aug 2008
20/// @brief Implementation of the AliHLTTrigger base component class.
21///
22/// The AliHLTTrigger class is the base class from which all HLT trigger components
23/// should be derived.
24
4aa41877 25#include "AliHLTTrigger.h"
1b9a175e 26#include "AliHLTTriggerDecision.h"
5a806c0e 27
4aa41877 28ClassImp(AliHLTTrigger)
5a806c0e 29
5a806c0e 30
a9670afe 31AliHLTTrigger::AliHLTTrigger() :
32 AliHLTProcessor(),
33 fEventData(NULL),
34 fTriggerData(NULL),
35 fDecisionMade(false),
acc7214e 36 fClearInfo(true),
4adf50d6 37 fTriggerEventResult(0),
1b9a175e 38 fDescription(),
39 fReadoutList(),
40 fTriggerDomain()
5a806c0e 41{
5d79eb88 42 // Default constructor sets pointers to NULL.
5a806c0e 43}
44
5a806c0e 45
a9670afe 46AliHLTTrigger::~AliHLTTrigger()
5a806c0e 47{
5d79eb88 48 // Default destructor.
4adf50d6 49}
50
51
52void AliHLTTrigger::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
53{
5d79eb88 54 // Returns output data size estimate.
55 // See header file for more details.
4adf50d6 56
61074420 57 // Matthias 2009-07-03 this is presumably to small as the streamed object might be
58 // bigger. This is actually the case in root v5-24-00
59 // Just take 2x the size of the object
60 constBase = 2*sizeof(AliHLTTriggerDecision);
4adf50d6 61 inputMultiplier = 1;
5a806c0e 62}
63
5a806c0e 64
a9670afe 65int AliHLTTrigger::DoEvent(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
5a806c0e 66{
5d79eb88 67 // Sets the pointers to the evtData and trigData, then calls the DoTrigger to
68 // execute the actual trigger algorithm.
5a806c0e 69
a9670afe 70 fEventData = &evtData;
71 fTriggerData = &trigData;
72 fDecisionMade = false;
73 fTriggerEventResult = 0;
acc7214e 74 // Reset the description, readout list and trigger domain used by TriggerEvent
75 // if requested to do so.
76 if (fClearInfo)
77 {
78 fDescription = "";
79 fReadoutList.Clear();
80 fTriggerDomain.Clear();
81 }
a9670afe 82
83 int result = DoTrigger();
84 if (result != 0) return result;
85
86 // Fill in a default decision of false if none was made.
87 if (not fDecisionMade)
88 {
89 TriggerEvent(false);
90 }
4adf50d6 91
a9670afe 92 // Cleanup
93 fEventData = NULL;
94 fTriggerData = NULL;
95 return fTriggerEventResult;
5a806c0e 96}
97
5a806c0e 98
4654280e 99int AliHLTTrigger::TriggerEvent(bool value)
5a806c0e 100{
5d79eb88 101 // Sets the trigger decision for the current event.
102 // See header file for more details.
5a806c0e 103
4654280e 104 if (fTriggerEventResult != 0) return fTriggerEventResult; // Do not do anything if a previous call failed.
52f67e50 105 AliHLTTriggerDecision triggerResult(value, GetTriggerName(), fTriggerDomain, fDescription);
8b745301 106 // Append the readout list if it contains anything.
107 triggerResult.TriggerDomain().Add(fReadoutList);
4adf50d6 108 fTriggerEventResult = PushBack(&triggerResult, kAliHLTDataTypeTObject|kAliHLTDataOriginOut);
5d79eb88 109 if (fTriggerEventResult == 0) fDecisionMade = true;
4654280e 110 return fTriggerEventResult;
5d79eb88 111}
112
113
4654280e 114int AliHLTTrigger::TriggerEvent(
5d79eb88 115 AliHLTTriggerDecision* result, const AliHLTComponentDataType& type,
116 AliHLTUInt32_t spec
117 )
118{
119 // Sets a custom trigger decision for the current event.
120 // See header file for more details.
121
4654280e 122 if (fTriggerEventResult != 0) return fTriggerEventResult; // Do not do anything if a previous call failed.
5d79eb88 123 fTriggerEventResult = PushBack(result, type, spec);
124 if (fTriggerEventResult == 0) fDecisionMade = true;
4654280e 125 return fTriggerEventResult;
5d79eb88 126}
127
128
129void AliHLTTrigger::GetInputDataTypes(AliHLTComponentDataTypeList& list)
130{
131 // Calls the const version of this method.
132
133 // Assign to const temporary variable to make sure we call the constant version
134 // of the GetOutputDataTypes method.
135 const AliHLTTrigger* t = this;
4a0b19b6 136 t->GetInputDataTypes(list);
5d79eb88 137}
138
139
140int AliHLTTrigger::GetOutputDataTypes(AliHLTComponentDataTypeList& list)
141{
142 // Calls the const version of this method.
143
144 // Assign to const temporary variable to make sure we call the constant version
145 // of the GetOutputDataTypes method.
146 const AliHLTTrigger* t = this;
147 t->GetOutputDataTypes(list);
148 list.push_back(kAliHLTDataTypeTObject|kAliHLTDataOriginOut);
149 return list.size();
5a806c0e 150}
151