#include <Riostream.h>
#include <TObjArray.h>
#include <TObjString.h>
#include "AliTriggerInteraction.h"
#include "AliTriggerInput.h"
#include "AliExpression.h"
#include "AliLog.h"
using std::endl;
using std::cout;
ClassImp(AliTriggerInteraction)
AliTriggerInteraction::AliTriggerInteraction():
TNamed()
{
}
AliTriggerInteraction::AliTriggerInteraction( TString & name, TString &logic ):
TNamed( name, logic )
{
}
AliTriggerInteraction::~AliTriggerInteraction()
{
}
AliTriggerInteraction::AliTriggerInteraction( const AliTriggerInteraction& interact ):
TNamed( interact )
{
}
AliTriggerInteraction& AliTriggerInteraction::operator=(const AliTriggerInteraction& interact)
{
if (this != &interact) {
TNamed::operator=(interact);
}
return *this;
}
Bool_t AliTriggerInteraction::CheckInputs(const TObjArray &inputs) const
{
TString logic( GetTitle() );
TObjArray* tokens = logic.Tokenize(" !&|()\t");
Int_t ntokens = tokens->GetEntriesFast();
for( Int_t i=0; i<ntokens; i++ ) {
TObjString* iname = (TObjString*)tokens->At( i );
AliTriggerInput *inp = (AliTriggerInput*)inputs.FindObject(iname->String().Data());
if (!inp) {
AliError( Form( "The trigger input (%s) is not available for Interaction (%s)",
iname->String().Data(), GetName() ) );
delete tokens;
return kFALSE;
}
if (inp->GetMask() == 0 || inp->GetMask() > (1<<24)) {
AliError( Form( "The trigger input (%s) is not among the first 4 trigger inputs used to create interactions. Interaction (%s) is invalid",
iname->String().Data(), GetName() ) );
delete tokens;
return kFALSE;
}
}
delete tokens;
return kTRUE;
}
Bool_t AliTriggerInteraction::IsActive(const TObjArray &inputs) const
{
TString logic( GetTitle() );
TObjArray* tokens = logic.Tokenize(" !&|()\t");
Int_t ntokens = tokens->GetEntriesFast();
for( Int_t i=0; i<ntokens; i++ ) {
TObjString* iname = (TObjString*)tokens->At( i );
AliTriggerInput *inp = (AliTriggerInput *)inputs.FindObject(iname->String());
if (!inp) {
AliError( Form( "The trigger input (%s) is not available for Interaction (%s)",
iname->String().Data(), GetName() ) );
delete tokens;
return kFALSE;
}
else {
if (!inp->IsActive()) {
AliWarning(Form("The interaction/function (%s) will be disabled, because the input (%s) is disabled",
GetName(),iname->String().Data()));
delete tokens;
return kFALSE;
}
}
}
delete tokens;
return kTRUE;
}
Bool_t AliTriggerInteraction::Trigger(const TObjArray& inputs ) const
{
AliExpression* exp = new AliExpression( GetTitle() );
Bool_t status = exp->Value( inputs );
delete exp;
return status;
}
void AliTriggerInteraction::Print( const Option_t* ) const
{
cout << "Trigger Interaction:" << endl;
cout << " Name: " << GetName() << endl;
cout << " Logic: " << GetTitle() << endl;
}
AliTriggerInteraction.cxx:1 AliTriggerInteraction.cxx:2 AliTriggerInteraction.cxx:3 AliTriggerInteraction.cxx:4 AliTriggerInteraction.cxx:5 AliTriggerInteraction.cxx:6 AliTriggerInteraction.cxx:7 AliTriggerInteraction.cxx:8 AliTriggerInteraction.cxx:9 AliTriggerInteraction.cxx:10 AliTriggerInteraction.cxx:11 AliTriggerInteraction.cxx:12 AliTriggerInteraction.cxx:13 AliTriggerInteraction.cxx:14 AliTriggerInteraction.cxx:15 AliTriggerInteraction.cxx:16 AliTriggerInteraction.cxx:17 AliTriggerInteraction.cxx:18 AliTriggerInteraction.cxx:19 AliTriggerInteraction.cxx:20 AliTriggerInteraction.cxx:21 AliTriggerInteraction.cxx:22 AliTriggerInteraction.cxx:23 AliTriggerInteraction.cxx:24 AliTriggerInteraction.cxx:25 AliTriggerInteraction.cxx:26 AliTriggerInteraction.cxx:27 AliTriggerInteraction.cxx:28 AliTriggerInteraction.cxx:29 AliTriggerInteraction.cxx:30 AliTriggerInteraction.cxx:31 AliTriggerInteraction.cxx:32 AliTriggerInteraction.cxx:33 AliTriggerInteraction.cxx:34 AliTriggerInteraction.cxx:35 AliTriggerInteraction.cxx:36 AliTriggerInteraction.cxx:37 AliTriggerInteraction.cxx:38 AliTriggerInteraction.cxx:39 AliTriggerInteraction.cxx:40 AliTriggerInteraction.cxx:41 AliTriggerInteraction.cxx:42 AliTriggerInteraction.cxx:43 AliTriggerInteraction.cxx:44 AliTriggerInteraction.cxx:45 AliTriggerInteraction.cxx:46 AliTriggerInteraction.cxx:47 AliTriggerInteraction.cxx:48 AliTriggerInteraction.cxx:49 AliTriggerInteraction.cxx:50 AliTriggerInteraction.cxx:51 AliTriggerInteraction.cxx:52 AliTriggerInteraction.cxx:53 AliTriggerInteraction.cxx:54 AliTriggerInteraction.cxx:55 AliTriggerInteraction.cxx:56 AliTriggerInteraction.cxx:57 AliTriggerInteraction.cxx:58 AliTriggerInteraction.cxx:59 AliTriggerInteraction.cxx:60 AliTriggerInteraction.cxx:61 AliTriggerInteraction.cxx:62 AliTriggerInteraction.cxx:63 AliTriggerInteraction.cxx:64 AliTriggerInteraction.cxx:65 AliTriggerInteraction.cxx:66 AliTriggerInteraction.cxx:67 AliTriggerInteraction.cxx:68 AliTriggerInteraction.cxx:69 AliTriggerInteraction.cxx:70 AliTriggerInteraction.cxx:71 AliTriggerInteraction.cxx:72 AliTriggerInteraction.cxx:73 AliTriggerInteraction.cxx:74 AliTriggerInteraction.cxx:75 AliTriggerInteraction.cxx:76 AliTriggerInteraction.cxx:77 AliTriggerInteraction.cxx:78 AliTriggerInteraction.cxx:79 AliTriggerInteraction.cxx:80 AliTriggerInteraction.cxx:81 AliTriggerInteraction.cxx:82 AliTriggerInteraction.cxx:83 AliTriggerInteraction.cxx:84 AliTriggerInteraction.cxx:85 AliTriggerInteraction.cxx:86 AliTriggerInteraction.cxx:87 AliTriggerInteraction.cxx:88 AliTriggerInteraction.cxx:89 AliTriggerInteraction.cxx:90 AliTriggerInteraction.cxx:91 AliTriggerInteraction.cxx:92 AliTriggerInteraction.cxx:93 AliTriggerInteraction.cxx:94 AliTriggerInteraction.cxx:95 AliTriggerInteraction.cxx:96 AliTriggerInteraction.cxx:97 AliTriggerInteraction.cxx:98 AliTriggerInteraction.cxx:99 AliTriggerInteraction.cxx:100 AliTriggerInteraction.cxx:101 AliTriggerInteraction.cxx:102 AliTriggerInteraction.cxx:103 AliTriggerInteraction.cxx:104 AliTriggerInteraction.cxx:105 AliTriggerInteraction.cxx:106 AliTriggerInteraction.cxx:107 AliTriggerInteraction.cxx:108 AliTriggerInteraction.cxx:109 AliTriggerInteraction.cxx:110 AliTriggerInteraction.cxx:111 AliTriggerInteraction.cxx:112 AliTriggerInteraction.cxx:113 AliTriggerInteraction.cxx:114 AliTriggerInteraction.cxx:115 AliTriggerInteraction.cxx:116 AliTriggerInteraction.cxx:117 AliTriggerInteraction.cxx:118 AliTriggerInteraction.cxx:119 AliTriggerInteraction.cxx:120 AliTriggerInteraction.cxx:121 AliTriggerInteraction.cxx:122 AliTriggerInteraction.cxx:123 AliTriggerInteraction.cxx:124 AliTriggerInteraction.cxx:125 AliTriggerInteraction.cxx:126 AliTriggerInteraction.cxx:127 AliTriggerInteraction.cxx:128 AliTriggerInteraction.cxx:129 AliTriggerInteraction.cxx:130 AliTriggerInteraction.cxx:131 AliTriggerInteraction.cxx:132 AliTriggerInteraction.cxx:133 AliTriggerInteraction.cxx:134 AliTriggerInteraction.cxx:135 AliTriggerInteraction.cxx:136 AliTriggerInteraction.cxx:137 AliTriggerInteraction.cxx:138 AliTriggerInteraction.cxx:139 AliTriggerInteraction.cxx:140 AliTriggerInteraction.cxx:141 AliTriggerInteraction.cxx:142 AliTriggerInteraction.cxx:143 AliTriggerInteraction.cxx:144 AliTriggerInteraction.cxx:145 AliTriggerInteraction.cxx:146 AliTriggerInteraction.cxx:147 AliTriggerInteraction.cxx:148 AliTriggerInteraction.cxx:149 AliTriggerInteraction.cxx:150 AliTriggerInteraction.cxx:151 AliTriggerInteraction.cxx:152 AliTriggerInteraction.cxx:153 AliTriggerInteraction.cxx:154 AliTriggerInteraction.cxx:155 AliTriggerInteraction.cxx:156 AliTriggerInteraction.cxx:157 AliTriggerInteraction.cxx:158 AliTriggerInteraction.cxx:159