ROOT  6.06/09
Reference Guide
RooRealMPFE.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooRealMPFE.h,v 1.7 2007/05/11 09:11:30 verkerke Exp $
5  * Authors: *
6  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7  * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8  * *
9  * Copyright (c) 2000-2005, Regents of the University of California *
10  * and Stanford University. All rights reserved. *
11  * *
12  * Redistribution and use in source and binary forms, *
13  * with or without modification, are permitted according to the terms *
14  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15  *****************************************************************************/
16 #ifndef ROO_REAL_MPFE
17 #define ROO_REAL_MPFE
18 
19 #include "RooAbsReal.h"
20 #include "RooRealProxy.h"
21 #include "RooListProxy.h"
22 #include "RooArgList.h"
23 #include "RooMPSentinel.h"
24 #include "TStopwatch.h"
25 #include <vector>
26 
27 class RooArgSet ;
28 namespace RooFit { class BidirMMapPipe; }
29 
30 class RooRealMPFE : public RooAbsReal {
31 public:
32  // Constructors, assignment etc
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();
37 
38  void calculate() const ;
39  virtual Double_t getValV(const RooArgSet* nset=0) const ;
40  void standby() ;
41 
42  void setVerbose(Bool_t clientFlag=kTRUE, Bool_t serverFlag=kTRUE) ;
43 
44  void applyNLLWeightSquared(Bool_t flag) ;
45 
46  void enableOffsetting(Bool_t flag) ;
47 
48  void followAsSlave(RooRealMPFE& master) { _updateMaster = &master ; }
49 
50  protected:
51 
52  // Function evaluation
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;
57 
60 
63 
64  void initialize() ;
65  void initVars() ;
66  void serverLoop() ;
67 
68  void doApplyNLLW2(Bool_t flag) ;
69 
70  RooRealProxy _arg ; // Function to calculate in parallel process
71  RooListProxy _vars ; // Variables
72  RooArgList _saveVars ; // Copy of variables
77  mutable Bool_t _forceCalc ;
79 
80  RooFit::BidirMMapPipe *_pipe; //! connection to child
81 
82  mutable std::vector<Bool_t> _valueChanged ; //! Flags if variable needs update on server-side
83  mutable std::vector<Bool_t> _constChanged ; //! Flags if variable needs update on server-side
84  RooRealMPFE* _updateMaster ; //! Update master
86  mutable Double_t _evalCarry; //!
87 
89 
90  ClassDef(RooRealMPFE,2) // Multi-process front-end for parallel calculation of a real valued function
91 };
92 
93 #endif
void initVars()
Initialize list of variables of front-end argument 'arg'.
void followAsSlave(RooRealMPFE &master)
Definition: RooRealMPFE.h:48
Double_t _evalCarry
Definition: RooRealMPFE.h:86
State _state
Definition: RooRealMPFE.h:59
Bool_t _verboseServer
Definition: RooRealMPFE.h:75
void initialize()
Initialize the remote process and message passing pipes between current process and remote process...
RooRealMPFE * _updateMaster
Flags if variable needs update on server-side.
Definition: RooRealMPFE.h:84
bool Bool_t
Definition: RtypesCore.h:59
virtual TObject * clone(const char *newname) const
Definition: RooRealMPFE.h:35
const Bool_t kFALSE
Definition: Rtypes.h:92
void applyNLLWeightSquared(Bool_t flag)
Control verbose messaging related to inter process communication on both client and server side...
virtual Double_t evaluate() const
Send message to server process to retrieve output value If error were logged use logEvalError() on re...
RooRealProxy _arg
Definition: RooRealMPFE.h:70
Bool_t _verboseClient
Definition: RooRealMPFE.h:74
Bool_t _calcInProgress
Definition: RooRealMPFE.h:73
Bool_t _retrieveDispatched
Update master.
Definition: RooRealMPFE.h:85
virtual Double_t getCarry() const
#define ClassDef(name, id)
Definition: Rtypes.h:254
std::vector< Bool_t > _constChanged
Flags if variable needs update on server-side.
Definition: RooRealMPFE.h:83
virtual ~RooRealMPFE()
Destructor.
void serverLoop()
Server loop of remote processes.
RooListProxy _vars
Definition: RooRealMPFE.h:71
void setVerbose(Bool_t clientFlag=kTRUE, Bool_t serverFlag=kTRUE)
Control verbose messaging related to inter process communication on both client and server side...
RooRealMPFE(const char *name, const char *title, RooAbsReal &arg, Bool_t calcInline=kFALSE)
Construct front-end object for object 'arg' whose evaluation will be calculated asynchronously in a s...
Definition: RooRealMPFE.cxx:79
void calculate() const
Client-side function that instructs server process to start asynchronuous (re)calculation of function...
RooArgList _saveVars
Definition: RooRealMPFE.h:72
void standby()
Terminate remote server process and return front-end class to standby mode.
BidirMMapPipe creates a bidirectional channel between the current process and a child it forks...
std::vector< Bool_t > _valueChanged
connection to child
Definition: RooRealMPFE.h:82
void enableOffsetting(Bool_t flag)
Control verbose messaging related to inter process communication on both client and server side...
virtual Double_t getValV(const RooArgSet *nset=0) const
If value needs recalculation and calculation has not beed started with a call to calculate() start it...
double Double_t
Definition: RtypesCore.h:55
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
RooAbsReal::ErrorLoggingMode _remoteEvalErrorLoggingState
Definition: RooRealMPFE.h:78
#define name(a, b)
Definition: linkTestLib0.cpp:5
Mother of all ROOT objects.
Definition: TObject.h:58
Bool_t _forceCalc
Definition: RooRealMPFE.h:77
virtual void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTracking=kTRUE)
Intercept call to optimize constant term in test statistics and forward it to object on server side...
void doApplyNLLW2(Bool_t flag)
const Bool_t kTRUE
Definition: Rtypes.h:91
RooFit::BidirMMapPipe * _pipe
Definition: RooRealMPFE.h:80
Bool_t _inlineMode
Definition: RooRealMPFE.h:76
static RooMPSentinel _sentinel
Definition: RooRealMPFE.h:88