Logo ROOT   6.16/01
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
27class RooArgSet ;
28namespace RooFit { class BidirMMapPipe; }
29
30class RooRealMPFE : public RooAbsReal {
31public:
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
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
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassDef(name, id)
Definition: Rtypes.h:324
BidirMMapPipe creates a bidirectional channel between the current process and a child it forks.
friend class RooRealMPFE
Definition: RooAbsArg.h:540
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
RooAbsTestStatistic is the abstract base class for all test statistics.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
RooListProxy is the concrete proxy for RooArgList objects.
Definition: RooListProxy.h:25
RooMPSentinel is a singleton class that keeps track of all parellel execution processes for goodness-...
Definition: RooMPSentinel.h:23
RooRealMPFE is the multi-processor front-end for parallel calculation of RooAbsReal objects.
Definition: RooRealMPFE.h:30
State _state
Definition: RooRealMPFE.h:59
RooFit::BidirMMapPipe * _pipe
Definition: RooRealMPFE.h:80
RooArgList _saveVars
Definition: RooRealMPFE.h:72
void calculate() const
Client-side function that instructs server process to start asynchronuous (re)calculation of function...
virtual Double_t getCarry() const
void applyNLLWeightSquared(Bool_t flag)
Control verbose messaging related to inter process communication on both client and server side.
void initialize()
Initialize the remote process and message passing pipes between current process and remote process.
virtual ~RooRealMPFE()
Destructor.
virtual Double_t evaluate() const
Send message to server process to retrieve output value If error were logged use logEvalError() on re...
void serverLoop()
Server loop of remote processes.
void standby()
Terminate remote server process and return front-end class to standby mode.
@ CalculateNoOffset
Definition: RooRealMPFE.h:62
static RooMPSentinel _sentinel
Definition: RooRealMPFE.h:88
RooListProxy _vars
Definition: RooRealMPFE.h:71
Bool_t _inlineMode
Definition: RooRealMPFE.h:76
void initVars()
Initialize list of variables of front-end argument 'arg'.
virtual TObject * clone(const char *newname) const
Definition: RooRealMPFE.h:35
RooRealMPFE * _updateMaster
Flags if variable needs update on server-side.
Definition: RooRealMPFE.h:84
void enableOffsetting(Bool_t flag)
Control verbose messaging related to inter process communication on both client and server side.
std::vector< Bool_t > _valueChanged
connection to child
Definition: RooRealMPFE.h:82
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...
void doApplyNLLW2(Bool_t flag)
Bool_t _calcInProgress
Definition: RooRealMPFE.h:73
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.
std::vector< Bool_t > _constChanged
Flags if variable needs update on server-side.
Definition: RooRealMPFE.h:83
Bool_t _forceCalc
Definition: RooRealMPFE.h:77
Bool_t _verboseServer
Definition: RooRealMPFE.h:75
RooRealProxy _arg
Definition: RooRealMPFE.h:70
void followAsSlave(RooRealMPFE &master)
Definition: RooRealMPFE.h:48
Bool_t _retrieveDispatched
Update master.
Definition: RooRealMPFE.h:85
Bool_t _verboseClient
Definition: RooRealMPFE.h:74
RooAbsReal::ErrorLoggingMode _remoteEvalErrorLoggingState
Definition: RooRealMPFE.h:78
Double_t _evalCarry
Definition: RooRealMPFE.h:86
void setVerbose(Bool_t clientFlag=kTRUE, Bool_t serverFlag=kTRUE)
Control verbose messaging related to inter process communication on both client and server side.
RooRealProxy is the concrete proxy for RooAbsReal objects A RooRealProxy is the general mechanism to ...
Definition: RooRealProxy.h:23
Mother of all ROOT objects.
Definition: TObject.h:37