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