2 // AliRsnExpresion class is used to handle operators &|! in AliRsnCut
4 // authors: Martin Vala (martin.vala@cern.ch)
5 // Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
8 #ifndef ALIRSNEXPRESSION_H
9 #define ALIRSNEXPRESSION_H
14 #include "AliRsnCutSet.h"
15 class AliRsnVariableExpression;
17 class AliRsnExpression : public TObject
22 // operators for complex cut expressions
26 kOpNOT // Unary negation '!'
29 AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0) {}
30 AliRsnExpression(TString exp);
31 virtual ~AliRsnExpression();
32 AliRsnExpression(const AliRsnExpression& exp);
33 AliRsnExpression& operator= (const AliRsnExpression& exp);
35 virtual Bool_t Value(TObjArray & vars);
36 virtual TString Unparse() const;
38 void SetCutSet(AliRsnCutSet* const theValue) { fgCutSet = theValue; }
39 AliRsnCutSet* GetCutSet() const { return fgCutSet; }
42 TString fVname; // Variable name
43 static AliRsnCutSet *fgCutSet;
46 AliRsnExpression* fArg1; // left argument
47 AliRsnExpression* fArg2; // right argument
48 Int_t fOperator; // operator
50 AliRsnExpression(int op, AliRsnExpression* a);
51 AliRsnExpression(int op, AliRsnExpression* a, AliRsnExpression* b);
53 TObjArray* Tokenize(TString str) const;
54 static AliRsnExpression* Element(TObjArray &st, Int_t &i);
55 static AliRsnExpression* Primary(TObjArray &st, Int_t &i);
56 static AliRsnExpression* Expression(TObjArray &st, Int_t &i);
58 ClassDef(AliRsnExpression, 1); // Class to evaluate an expression