2 // AliRsnExpresion class is used to
3 // handle operators &|!
6 // authors: Martin Vala (martin.vala@cern.ch)
7 // Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
10 #ifndef ALIRSNEXPRESSION_H
11 #define ALIRSNEXPRESSION_H
16 #include "AliRsnCutSet.h"
17 class AliRsnVariableExpression;
19 class AliRsnExpression : public TObject
24 // operators for complex cut expressions
28 kOpNOT // Unary negation '!'
31 AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0) {}
32 AliRsnExpression(TString exp);
33 virtual ~AliRsnExpression();
34 AliRsnExpression(const AliRsnExpression& exp);
35 AliRsnExpression& operator= (const AliRsnExpression& exp);
37 virtual Bool_t Value(TObjArray & vars);
38 virtual TString Unparse() const;
40 void SetCutSet(AliRsnCutSet* const theValue) { fgCutSet = theValue; }
41 AliRsnCutSet* GetCutSet() const { return fgCutSet; }
44 TString fVname; // Variable name
45 static AliRsnCutSet *fgCutSet; // global cutset
48 AliRsnExpression* fArg1; // left argument
49 AliRsnExpression* fArg2; // right argument
50 Int_t fOperator; // operator
52 AliRsnExpression(int op, AliRsnExpression* a);
53 AliRsnExpression(int op, AliRsnExpression* a, AliRsnExpression* b);
55 TObjArray* Tokenize(TString str) const;
56 static AliRsnExpression* Element(TObjArray &st, Int_t &i);
57 static AliRsnExpression* Primary(TObjArray &st, Int_t &i);
58 static AliRsnExpression* Expression(TObjArray &st, Int_t &i);
60 ClassDef(AliRsnExpression, 1); // Class to evaluate an expression