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 {
23 // operators for complex cut expressions
25 kOpAND = 1, // AND '&'
27 kOpNOT // Unary negation '!'
30 AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0) {}
31 AliRsnExpression(TString exp);
32 virtual ~AliRsnExpression();
33 AliRsnExpression(const AliRsnExpression &exp);
34 AliRsnExpression &operator= (const AliRsnExpression &exp);
36 virtual Bool_t Value(TObjArray &vars);
37 virtual TString Unparse() const;
39 void SetCutSet(AliRsnCutSet *const theValue) { fgCutSet = theValue; }
40 AliRsnCutSet *GetCutSet() const { return fgCutSet; }
43 TString fVname; // Variable name
44 static AliRsnCutSet *fgCutSet; // global cutset
47 AliRsnExpression *fArg1; // left argument
48 AliRsnExpression *fArg2; // right argument
49 Int_t fOperator; // operator
51 AliRsnExpression(int op, AliRsnExpression *a);
52 AliRsnExpression(int op, AliRsnExpression *a, AliRsnExpression *b);
54 TObjArray *Tokenize(TString str) const;
55 static AliRsnExpression *Element(TObjArray &st, Int_t &i);
56 static AliRsnExpression *Primary(TObjArray &st, Int_t &i);
57 static AliRsnExpression *Expression(TObjArray &st, Int_t &i);
59 ClassDef(AliRsnExpression, 1); // Class to evaluate an expression