28 namespace RooFit { 
class BidirMMapPipe; }
 
   30 class RooRealMPFE : 
public RooAbsReal {
 
   33   RooRealMPFE(
const char *name, 
const char *title, RooAbsReal& arg, Bool_t calcInline=kFALSE) ;
 
   34   RooRealMPFE(
const RooRealMPFE& other, 
const char* name=0);
 
   35   virtual TObject* clone(
const char* newname)
 const { 
return new RooRealMPFE(*
this,newname); }
 
   36   virtual ~RooRealMPFE();
 
   38   void calculate() 
const ;
 
   39   virtual Double_t getValV(
const RooArgSet* nset=0) 
const ;
 
   42   void setVerbose(Bool_t clientFlag=kTRUE, Bool_t serverFlag=kTRUE) ;
 
   44   void applyNLLWeightSquared(Bool_t flag) ;
 
   46   void enableOffsetting(Bool_t flag) ;
 
   48   void followAsSlave(RooRealMPFE& master) { _updateMaster = &master ; }
 
   53   virtual Double_t evaluate() 
const ;
 
   54   friend class RooAbsTestStatistic ;
 
   55   virtual void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTracking=kTRUE) ;
 
   56   virtual Double_t getCarry() 
const;
 
   58   enum State { Initialize,Client,Server,Inline } ;
 
   61   enum Message { SendReal=0, SendCat, Calculate, Retrieve, ReturnValue, Terminate, 
 
   62        ConstOpt, Verbose, LogEvalError, ApplyNLLW2, EnableOffset, CalculateNoOffset } ;
 
   68   void doApplyNLLW2(Bool_t flag) ;
 
   72   RooArgList _saveVars ;  
 
   73   mutable Bool_t _calcInProgress ;
 
   74   Bool_t _verboseClient ;
 
   75   Bool_t _verboseServer ;
 
   77   mutable Bool_t _forceCalc ;
 
   78   mutable RooAbsReal::ErrorLoggingMode _remoteEvalErrorLoggingState ;
 
   80   RooFit::BidirMMapPipe *_pipe; 
 
   82   mutable std::vector<Bool_t> _valueChanged ; 
 
   83   mutable std::vector<Bool_t> _constChanged ; 
 
   84   RooRealMPFE* _updateMaster ; 
 
   85   mutable Bool_t _retrieveDispatched ; 
 
   86   mutable Double_t _evalCarry; 
 
   88   static RooMPSentinel _sentinel ;
 
   90   ClassDef(RooRealMPFE,2)