#ifndef __TQVECTORAUXOBSERVABLE__
#define __TQVECTORAUXOBSERVABLE__
#include "QFramework/TQObservable.h"
class TQVectorAuxObservable : public TQObservable {
protected:
TQObservable* fSubObservable = NULL;
TQObservable* fIndexObservable = NULL;
mutable Long64_t fCachedEntry;
mutable double fCachedValue;
mutable TString fFullExpression;
public:
virtual int getNevaluations() const override;
virtual double getValue() const override;
virtual double getValueAt(int index) const override;
inline virtual TQObservable::ObservableType getObservableType() const override {return this->fObservableType;}
virtual TObjArray* getBranchNames() const override;
virtual Long64_t getCurrentEntry() const override;
enum Operation {AND,OR,SUM,SUMABS,AVG,AVGABS,LEN,MAX,MIN,MAXABS,MINABS,NORM,PROD,NTRUE,NFALSE,AT,INDICES,invalid};
protected:
virtual bool initializeSelf() override;
virtual bool finalizeSelf() override;
double getValueAtINDICES(int index) const;
protected:
TString fExpression = "";
TString fVecExpression = "";
TString fIndexExpression = "";
TQVectorAuxObservable::Operation fOperation = TQVectorAuxObservable::Operation::invalid;
TQObservable::ObservableType fObservableType = TQObservable::ObservableType::unknown;
public:
inline TQVectorAuxObservable::Operation getOperation() const {return this->fOperation;}
void setOperation(TQVectorAuxObservable::Operation op);
static TString getOperationName(TQVectorAuxObservable::Operation op);
static TString getPrefix(TQVectorAuxObservable::Operation op);
static TQVectorAuxObservable::Operation readPrefix(TString& expression);
virtual bool hasExpression() const override;
virtual const TString& getExpression() const override;
virtual void setExpression(const TString& expr) override;
inline virtual bool isPrefixRequired() const override {return true;} ;
TQVectorAuxObservable();
TQVectorAuxObservable(const TString& expression);
virtual ~TQVectorAuxObservable();
public:
virtual TString getActiveExpression() const override;
public:
DECLARE_OBSERVABLE_FACTORY(TQVectorAuxObservable,TString expr)
ClassDefOverride(TQVectorAuxObservable, 0);
};
#endif
TQVectorAuxObservable.h:1 TQVectorAuxObservable.h:2 TQVectorAuxObservable.h:3 TQVectorAuxObservable.h:4 TQVectorAuxObservable.h:5 TQVectorAuxObservable.h:6 TQVectorAuxObservable.h:7 TQVectorAuxObservable.h:8 TQVectorAuxObservable.h:9 TQVectorAuxObservable.h:10 TQVectorAuxObservable.h:11 TQVectorAuxObservable.h:12 TQVectorAuxObservable.h:13 TQVectorAuxObservable.h:14 TQVectorAuxObservable.h:15 TQVectorAuxObservable.h:16 TQVectorAuxObservable.h:17 TQVectorAuxObservable.h:18 TQVectorAuxObservable.h:19 TQVectorAuxObservable.h:20 TQVectorAuxObservable.h:21 TQVectorAuxObservable.h:22 TQVectorAuxObservable.h:23 TQVectorAuxObservable.h:24 TQVectorAuxObservable.h:25 TQVectorAuxObservable.h:26 TQVectorAuxObservable.h:27 TQVectorAuxObservable.h:28 TQVectorAuxObservable.h:29 TQVectorAuxObservable.h:30 TQVectorAuxObservable.h:31 TQVectorAuxObservable.h:32 TQVectorAuxObservable.h:33 TQVectorAuxObservable.h:34 TQVectorAuxObservable.h:35 TQVectorAuxObservable.h:36 TQVectorAuxObservable.h:37 TQVectorAuxObservable.h:38 TQVectorAuxObservable.h:39 TQVectorAuxObservable.h:40 TQVectorAuxObservable.h:41 TQVectorAuxObservable.h:42 TQVectorAuxObservable.h:43 TQVectorAuxObservable.h:44 TQVectorAuxObservable.h:45 TQVectorAuxObservable.h:46 TQVectorAuxObservable.h:47 TQVectorAuxObservable.h:48 TQVectorAuxObservable.h:49 TQVectorAuxObservable.h:50 TQVectorAuxObservable.h:51 TQVectorAuxObservable.h:52 TQVectorAuxObservable.h:53 TQVectorAuxObservable.h:54 TQVectorAuxObservable.h:55 TQVectorAuxObservable.h:56 TQVectorAuxObservable.h:57 TQVectorAuxObservable.h:58 TQVectorAuxObservable.h:59 TQVectorAuxObservable.h:60 TQVectorAuxObservable.h:61 TQVectorAuxObservable.h:62 TQVectorAuxObservable.h:63 TQVectorAuxObservable.h:64 TQVectorAuxObservable.h:65 TQVectorAuxObservable.h:66