ROOT logo
//
// AliRsnExpresion class is used to
// handle operators &|!
// in AliRsnCut
//
// authors: Martin Vala (martin.vala@cern.ch)
//          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
//

#ifndef ALIRSNEXPRESSION_H
#define ALIRSNEXPRESSION_H

#include <TObject.h>

class TObjArray;
#include "AliRsnCutSet.h"
class AliRsnVariableExpression;

class AliRsnExpression : public TObject {

public:

   // operators for complex cut expressions
   enum ECutOp {
      kOpAND = 1, // AND '&'
      kOpOR,      // OR '|'
      kOpNOT      // Unary negation '!'
   };

   AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0)  {}
   AliRsnExpression(TString exp);
   virtual    ~AliRsnExpression();
   AliRsnExpression(const AliRsnExpression &exp);
   AliRsnExpression    &operator= (const AliRsnExpression &exp);

   virtual Bool_t     Value(TObjArray &vars);
   virtual TString     Unparse() const;

   void SetCutSet(AliRsnCutSet *const theValue) { fgCutSet = theValue; }
   AliRsnCutSet *GetCutSet() const { return fgCutSet; }


   TString                     fVname;   // Variable name
   static AliRsnCutSet        *fgCutSet; // global cutset

private:
   AliRsnExpression           *fArg1;         // left argument
   AliRsnExpression           *fArg2;         // right argument
   Int_t                       fOperator;     // operator

   AliRsnExpression(int op, AliRsnExpression *a);
   AliRsnExpression(int op, AliRsnExpression *a, AliRsnExpression *b);

   TObjArray    *Tokenize(TString str) const;
   static AliRsnExpression    *Element(TObjArray &st, Int_t &i);
   static AliRsnExpression    *Primary(TObjArray &st, Int_t &i);
   static AliRsnExpression    *Expression(TObjArray &st, Int_t &i);

   ClassDef(AliRsnExpression, 1);    // Class to evaluate an expression
};

#endif
 AliRsnExpression.h:1
 AliRsnExpression.h:2
 AliRsnExpression.h:3
 AliRsnExpression.h:4
 AliRsnExpression.h:5
 AliRsnExpression.h:6
 AliRsnExpression.h:7
 AliRsnExpression.h:8
 AliRsnExpression.h:9
 AliRsnExpression.h:10
 AliRsnExpression.h:11
 AliRsnExpression.h:12
 AliRsnExpression.h:13
 AliRsnExpression.h:14
 AliRsnExpression.h:15
 AliRsnExpression.h:16
 AliRsnExpression.h:17
 AliRsnExpression.h:18
 AliRsnExpression.h:19
 AliRsnExpression.h:20
 AliRsnExpression.h:21
 AliRsnExpression.h:22
 AliRsnExpression.h:23
 AliRsnExpression.h:24
 AliRsnExpression.h:25
 AliRsnExpression.h:26
 AliRsnExpression.h:27
 AliRsnExpression.h:28
 AliRsnExpression.h:29
 AliRsnExpression.h:30
 AliRsnExpression.h:31
 AliRsnExpression.h:32
 AliRsnExpression.h:33
 AliRsnExpression.h:34
 AliRsnExpression.h:35
 AliRsnExpression.h:36
 AliRsnExpression.h:37
 AliRsnExpression.h:38
 AliRsnExpression.h:39
 AliRsnExpression.h:40
 AliRsnExpression.h:41
 AliRsnExpression.h:42
 AliRsnExpression.h:43
 AliRsnExpression.h:44
 AliRsnExpression.h:45
 AliRsnExpression.h:46
 AliRsnExpression.h:47
 AliRsnExpression.h:48
 AliRsnExpression.h:49
 AliRsnExpression.h:50
 AliRsnExpression.h:51
 AliRsnExpression.h:52
 AliRsnExpression.h:53
 AliRsnExpression.h:54
 AliRsnExpression.h:55
 AliRsnExpression.h:56
 AliRsnExpression.h:57
 AliRsnExpression.h:58
 AliRsnExpression.h:59
 AliRsnExpression.h:60
 AliRsnExpression.h:61
 AliRsnExpression.h:62