1 #ifndef ALIRSNEXPRESSION_H
2 #define ALIRSNEXPRESSION_H
7 #include "AliRsnCutSet.h"
12 @author Martin Vala <Martin.Vala@cern.ch>
15 // These are the valid operators types.
17 class AliRsnExpression : public TObject
22 // operators for complex cut expressions
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* theValue) { sCutSet = theValue; }
40 AliRsnCutSet* GetCutSet() const { return sCutSet; }
43 TString fVname; // Variable name
44 static AliRsnCutSet *sCutSet;
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
63 ///////////////////////////////////////////////////////////////////////////
65 class AliRsnVariableExpression: public AliRsnExpression
68 AliRsnVariableExpression(TString a) : AliRsnExpression() { fVname = a; };
69 ~AliRsnVariableExpression() {}
70 virtual Bool_t Value(TObjArray& pgm);
71 virtual TString Unparse() const { return fVname; }
73 ClassDef(AliRsnVariableExpression, 1); // Class to define a variable expression