#include "AliHLTTriggerMenu.h"
#include "Riostream.h"
#include <sstream>
ClassImp(AliHLTTriggerMenu)
AliHLTTriggerMenu::AliHLTTriggerMenu() :
TObject(),
fName("Unknown"),
fSymbols(AliHLTTriggerMenuSymbol::Class(), 100),
fItems(AliHLTTriggerMenuItem::Class(), 100),
fDefaultDescription(),
fDefaultDomain(),
fDefaultConditionOperator("||"),
fDefaultDomainOperator("|")
{
}
AliHLTTriggerMenu::~AliHLTTriggerMenu()
{
}
AliHLTTriggerMenu::AliHLTTriggerMenu(const AliHLTTriggerMenu& obj) :
TObject(obj),
fName(obj.fName),
fSymbols(AliHLTTriggerMenuSymbol::Class(), obj.fSymbols.GetEntriesFast()),
fItems(AliHLTTriggerMenuItem::Class(), obj.fItems.GetEntriesFast()),
fDefaultDescription(obj.fDefaultDescription),
fDefaultDomain(obj.fDefaultDomain),
fDefaultConditionOperator(obj.fDefaultConditionOperator),
fDefaultDomainOperator(obj.fDefaultDomainOperator)
{
for (UInt_t i = 0; i < obj.NumberOfSymbols(); i++)
{
AddSymbol(*obj.Symbol(i));
}
for (UInt_t i = 0; i < obj.NumberOfItems(); i++)
{
AddItem(*obj.Item(i));
}
}
AliHLTTriggerMenu& AliHLTTriggerMenu::operator = (const AliHLTTriggerMenu& obj)
{
if (this != &obj)
{
TObject::operator = (obj);
fName = obj.fName;
fSymbols.Clear();
for (UInt_t i = 0; i < obj.NumberOfSymbols(); i++)
{
AddSymbol(*obj.Symbol(i));
}
fItems.Clear();
for (UInt_t i = 0; i < obj.NumberOfItems(); i++)
{
AddItem(*obj.Item(i));
}
fDefaultDescription = obj.fDefaultDescription;
fDefaultDomain = obj.fDefaultDomain;
fDefaultConditionOperator = obj.fDefaultConditionOperator;
fDefaultDomainOperator = obj.fDefaultDomainOperator;
}
return *this;
}
void AliHLTTriggerMenu::Print(Option_t* option) const
{
cout << "HLT Trigger Menu: " << fName.Data();
TString opt = option;
if (opt.Contains("short"))
{
cout << ", contains " << NumberOfItems() << " entries." << endl;
return;
}
cout << endl;
size_t prescalarColWidth = 9;
size_t scaledownColWidth = 9;
size_t priorityColWidth = 8;
size_t resultColWidth = 6;
size_t conditionColWidth = 17;
size_t mergexprColWidth = 23;
size_t descColWidth = 11;
for (UInt_t i = 0; i < NumberOfItems(); i++)
{
std::stringstream buf;
buf.copyfmt(cout);
buf << Item(i)->PreScalar();
if (buf.str().length() > prescalarColWidth) prescalarColWidth = buf.str().length();
buf.str("");
buf << Item(i)->ScaleDown();
if (buf.str().length()+1 > scaledownColWidth) scaledownColWidth = buf.str().length()+1;
buf.str("");
buf << Item(i)->Priority();
if (buf.str().length() > priorityColWidth) priorityColWidth = buf.str().length();
size_t len = strlen(Item(i)->TriggerCondition());
if (len > conditionColWidth and len < 128) conditionColWidth = len;
len = strlen(Item(i)->MergeExpression());
if (len > mergexprColWidth and len < 128) mergexprColWidth = len;
len = strlen(Item(i)->Description());
if (len > descColWidth and len < 128) descColWidth = len;
}
cout << setw(prescalarColWidth) << "Prescalar" << " | "
<< setw(scaledownColWidth) << "Scaledown" << " | "
<< setw(priorityColWidth) << "Priority" << " | "
<< setw(resultColWidth) << "Result" << " | "
<< setw(conditionColWidth) << "Trigger condition" << " | "
<< setw(mergexprColWidth) << "Domain merge expression" << " | "
<< setw(descColWidth) << "Description" << setw(0) << endl;
cout << setfill('-') << setw(prescalarColWidth) << "-" << "-+-"
<< setw(scaledownColWidth) << "-" << "-+-"
<< setw(priorityColWidth) << "-" << "-+-"
<< setw(resultColWidth) << "-" << "-+-"
<< setw(conditionColWidth) << "-" << "-+-"
<< setw(mergexprColWidth) << "-" << "-+-"
<< setw(descColWidth) << "-" << setw(0) << setfill(' ') << endl;
for (UInt_t i = 0; i < NumberOfItems(); i++)
{
if (Item(i)->PreScalar() == 0)
cout << setw(prescalarColWidth) << "off" << " | ";
else
cout << setw(prescalarColWidth) << Item(i)->PreScalar() << " | ";
if (Item(i)->ScaleDown() == 1)
cout << setw(scaledownColWidth) << "none" << " | ";
else
cout << setw(scaledownColWidth-1) << Item(i)->ScaleDown()*100 << "% | ";
cout << setw(priorityColWidth) << Item(i)->Priority() << " | "
<< setw(resultColWidth) << (Item(i)->DefaultResult() ? "true" : "false") << " | "
<< setw(conditionColWidth) << Item(i)->TriggerCondition() << " | "
<< setw(mergexprColWidth) << Item(i)->MergeExpression() << " | "
<< setw(descColWidth) << Item(i)->Description() << setw(0) << endl;
}
if (NumberOfItems() == 0) cout << "(none)" << endl;
cout << "Symbol list:" << endl;
size_t nameColWidth = 4;
size_t typeColWidth = 9;
size_t classColWidth = 10;
size_t assignColWidth = 14;
size_t valueColWidth = 13;
for (UInt_t i = 0; i < NumberOfSymbols(); i++)
{
size_t len = strlen(Symbol(i)->RealName());
if (len > nameColWidth and len < 128) nameColWidth = len;
len = strlen(Symbol(i)->Type());
if (len > typeColWidth and len < 128) typeColWidth = len;
len = strlen(Symbol(i)->ObjectClass());
if (len > classColWidth and len < 128) classColWidth = len;
len = strlen(Symbol(i)->AssignExpression());
if (len > assignColWidth and len < 128) assignColWidth = len;
len = strlen(Symbol(i)->DefaultValue());
if (len > valueColWidth and len < 128) valueColWidth = len;
}
cout << setw(nameColWidth) << "Name"
<< " | " << setw(typeColWidth) << "Data type"
<< " | " << setw(24) << "Block type & spec"
<< " | " << setw(classColWidth) << "Class name"
<< " | " << setw(assignColWidth) << "Assigned value"
<< " | " << setw(valueColWidth) << "Default value"
<< setw(0) << endl;
cout << setw(nameColWidth) << setfill('-') << "-"
<< "-+-" << setw(typeColWidth) << "-"
<< "-+-" << setw(24) << "-"
<< "-+-" << setw(classColWidth) << "-"
<< "-+-" << setw(assignColWidth) << "-"
<< "-+-" << setw(valueColWidth) << "-"
<< setw(0) << setfill(' ') << endl;
for (UInt_t i = 0; i < NumberOfSymbols(); i++)
{
cout << setw(nameColWidth) << Symbol(i)->RealName() << " | "
<< setw(typeColWidth) << Symbol(i)->Type() << " | ";
Symbol(i)->BlockType().Print("noendl");
cout << " | " << setw(classColWidth) << Symbol(i)->ObjectClass()
<< " | " << setw(assignColWidth) << Symbol(i)->AssignExpression()
<< " | " << setw(valueColWidth) << Symbol(i)->DefaultValue()
<< setw(0) << endl;
}
if (NumberOfSymbols() == 0) cout << "(none)" << endl;
cout << "Default trigger condition operator: " << fDefaultConditionOperator << endl;
cout << " Default trigger domain operator: " << fDefaultDomainOperator << endl;
cout << " Default trigger description: \"" << fDefaultDescription << "\"" << endl;
cout << " Default global trigger result: " << (DefaultResult() ? "true" : "false") << "" << endl;
cout << "Default "; fDefaultDomain.Print();
}
void AliHLTTriggerMenu::Clear(Option_t* option)
{
fSymbols.Clear(option);
fItems.Clear(option);
}
void AliHLTTriggerMenu::AddSymbol(const AliHLTTriggerMenuSymbol& entry)
{
for (Int_t i = 0; i < fSymbols.GetEntriesFast(); i++)
{
const char* symbolname = static_cast<AliHLTTriggerMenuSymbol*>(fSymbols.UncheckedAt(i))->Name();
if ( strcmp(symbolname, entry.Name()) == 0 )
{
Warning("AliHLTTriggerMenu::AddSymbol",
"The symbol '%s' already exists in the trigger menu. Will not add the new entry.",
entry.RealName()
);
return;
}
}
new (fSymbols[fSymbols.GetEntriesFast()]) AliHLTTriggerMenuSymbol(entry);
}
AliHLTTriggerMenu.cxx:100 AliHLTTriggerMenu.cxx:101 AliHLTTriggerMenu.cxx:102 AliHLTTriggerMenu.cxx:103 AliHLTTriggerMenu.cxx:104 AliHLTTriggerMenu.cxx:105 AliHLTTriggerMenu.cxx:106 AliHLTTriggerMenu.cxx:107 AliHLTTriggerMenu.cxx:108 AliHLTTriggerMenu.cxx:109 AliHLTTriggerMenu.cxx:110 AliHLTTriggerMenu.cxx:111 AliHLTTriggerMenu.cxx:112 AliHLTTriggerMenu.cxx:113 AliHLTTriggerMenu.cxx:114 AliHLTTriggerMenu.cxx:115 AliHLTTriggerMenu.cxx:116 AliHLTTriggerMenu.cxx:117 AliHLTTriggerMenu.cxx:118 AliHLTTriggerMenu.cxx:119 AliHLTTriggerMenu.cxx:120 AliHLTTriggerMenu.cxx:121 AliHLTTriggerMenu.cxx:122 AliHLTTriggerMenu.cxx:123 AliHLTTriggerMenu.cxx:124 AliHLTTriggerMenu.cxx:125 AliHLTTriggerMenu.cxx:126 AliHLTTriggerMenu.cxx:127 AliHLTTriggerMenu.cxx:128 AliHLTTriggerMenu.cxx:129 AliHLTTriggerMenu.cxx:130 AliHLTTriggerMenu.cxx:131 AliHLTTriggerMenu.cxx:132 AliHLTTriggerMenu.cxx:133 AliHLTTriggerMenu.cxx:134 AliHLTTriggerMenu.cxx:135 AliHLTTriggerMenu.cxx:136 AliHLTTriggerMenu.cxx:137 AliHLTTriggerMenu.cxx:138 AliHLTTriggerMenu.cxx:139 AliHLTTriggerMenu.cxx:140 AliHLTTriggerMenu.cxx:141 AliHLTTriggerMenu.cxx:142 AliHLTTriggerMenu.cxx:143 AliHLTTriggerMenu.cxx:144 AliHLTTriggerMenu.cxx:145 AliHLTTriggerMenu.cxx:146 AliHLTTriggerMenu.cxx:147 AliHLTTriggerMenu.cxx:148 AliHLTTriggerMenu.cxx:149 AliHLTTriggerMenu.cxx:150 AliHLTTriggerMenu.cxx:151 AliHLTTriggerMenu.cxx:152 AliHLTTriggerMenu.cxx:153 AliHLTTriggerMenu.cxx:154 AliHLTTriggerMenu.cxx:155 AliHLTTriggerMenu.cxx:156 AliHLTTriggerMenu.cxx:157 AliHLTTriggerMenu.cxx:158 AliHLTTriggerMenu.cxx:159 AliHLTTriggerMenu.cxx:160 AliHLTTriggerMenu.cxx:161 AliHLTTriggerMenu.cxx:162 AliHLTTriggerMenu.cxx:163 AliHLTTriggerMenu.cxx:164 AliHLTTriggerMenu.cxx:165 AliHLTTriggerMenu.cxx:166 AliHLTTriggerMenu.cxx:167 AliHLTTriggerMenu.cxx:168 AliHLTTriggerMenu.cxx:169 AliHLTTriggerMenu.cxx:170 AliHLTTriggerMenu.cxx:171 AliHLTTriggerMenu.cxx:172 AliHLTTriggerMenu.cxx:173 AliHLTTriggerMenu.cxx:174 AliHLTTriggerMenu.cxx:175 AliHLTTriggerMenu.cxx:176 AliHLTTriggerMenu.cxx:177 AliHLTTriggerMenu.cxx:178 AliHLTTriggerMenu.cxx:179 AliHLTTriggerMenu.cxx:180 AliHLTTriggerMenu.cxx:181 AliHLTTriggerMenu.cxx:182 AliHLTTriggerMenu.cxx:183 AliHLTTriggerMenu.cxx:184 AliHLTTriggerMenu.cxx:185 AliHLTTriggerMenu.cxx:186 AliHLTTriggerMenu.cxx:187 AliHLTTriggerMenu.cxx:188 AliHLTTriggerMenu.cxx:189 AliHLTTriggerMenu.cxx:190 AliHLTTriggerMenu.cxx:191 AliHLTTriggerMenu.cxx:192 AliHLTTriggerMenu.cxx:193 AliHLTTriggerMenu.cxx:194 AliHLTTriggerMenu.cxx:195 AliHLTTriggerMenu.cxx:196 AliHLTTriggerMenu.cxx:197 AliHLTTriggerMenu.cxx:198 AliHLTTriggerMenu.cxx:199 AliHLTTriggerMenu.cxx:200 AliHLTTriggerMenu.cxx:201 AliHLTTriggerMenu.cxx:202 AliHLTTriggerMenu.cxx:203 AliHLTTriggerMenu.cxx:204 AliHLTTriggerMenu.cxx:205 AliHLTTriggerMenu.cxx:206 AliHLTTriggerMenu.cxx:207 AliHLTTriggerMenu.cxx:208 AliHLTTriggerMenu.cxx:209 AliHLTTriggerMenu.cxx:210 AliHLTTriggerMenu.cxx:211 AliHLTTriggerMenu.cxx:212 AliHLTTriggerMenu.cxx:213 AliHLTTriggerMenu.cxx:214 AliHLTTriggerMenu.cxx:215 AliHLTTriggerMenu.cxx:216 AliHLTTriggerMenu.cxx:217 AliHLTTriggerMenu.cxx:218 AliHLTTriggerMenu.cxx:219 AliHLTTriggerMenu.cxx:220 AliHLTTriggerMenu.cxx:221 AliHLTTriggerMenu.cxx:222 AliHLTTriggerMenu.cxx:223 AliHLTTriggerMenu.cxx:224 AliHLTTriggerMenu.cxx:225 AliHLTTriggerMenu.cxx:226 AliHLTTriggerMenu.cxx:227 AliHLTTriggerMenu.cxx:228 AliHLTTriggerMenu.cxx:229 AliHLTTriggerMenu.cxx:230 AliHLTTriggerMenu.cxx:231 AliHLTTriggerMenu.cxx:232 AliHLTTriggerMenu.cxx:233 AliHLTTriggerMenu.cxx:234 AliHLTTriggerMenu.cxx:235 AliHLTTriggerMenu.cxx:236 AliHLTTriggerMenu.cxx:237 AliHLTTriggerMenu.cxx:238 AliHLTTriggerMenu.cxx:239 AliHLTTriggerMenu.cxx:240 AliHLTTriggerMenu.cxx:241 AliHLTTriggerMenu.cxx:242 AliHLTTriggerMenu.cxx:243 AliHLTTriggerMenu.cxx:244 AliHLTTriggerMenu.cxx:245 AliHLTTriggerMenu.cxx:246 AliHLTTriggerMenu.cxx:247 AliHLTTriggerMenu.cxx:248 AliHLTTriggerMenu.cxx:249 AliHLTTriggerMenu.cxx:250 AliHLTTriggerMenu.cxx:251 AliHLTTriggerMenu.cxx:252 AliHLTTriggerMenu.cxx:253 AliHLTTriggerMenu.cxx:254 AliHLTTriggerMenu.cxx:255 AliHLTTriggerMenu.cxx:256