Logo ROOT   6.08/07
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 
58  enum State { Initialize,Client,Server,Inline } ;
60 
61  enum Message { SendReal=0, SendCat, Calculate, Retrieve, ReturnValue, Terminate,
62  ConstOpt, Verbose, LogEvalError, ApplyNLLW2, EnableOffset, CalculateNoOffset } ;
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 followAsSlave(RooRealMPFE &master)
Definition: RooRealMPFE.h:48
virtual void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTrackingOpt=kTRUE)
Forward constant term optimization management calls to component test statistics. ...
Double_t _evalCarry
Definition: RooRealMPFE.h:86
State _state
Definition: RooRealMPFE.h:59
Bool_t _verboseServer
Definition: RooRealMPFE.h:75
RooRealMPFE * _updateMaster
Flags if variable needs update on server-side.
Definition: RooRealMPFE.h:84
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
RooRealProxy _arg
Definition: RooRealMPFE.h:70
Bool_t _verboseClient
Definition: RooRealMPFE.h:74
void evaluate(typename Architecture_t::Matrix_t &A, EActivationFunction f)
Apply the given activation function to each value in the given matrix A.
Definition: Functions.h:85
Bool_t _calcInProgress
Definition: RooRealMPFE.h:73
Bool_t _retrieveDispatched
Update master.
Definition: RooRealMPFE.h:85
RooRealMPFE is the multi-processor front-end for parallel calculation of RooAbsReal objects...
Definition: RooRealMPFE.h:30
#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
RooListProxy _vars
Definition: RooRealMPFE.h:71
virtual Double_t getCarry() const
void Initialize(Bool_t useTMVAStyle=kTRUE)
Definition: tmvaglob.cxx:176
RooArgList _saveVars
Definition: RooRealMPFE.h:72
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
RooListProxy is the concrete proxy for RooArgList objects.
Definition: RooListProxy.h:26
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
RooAbsTestStatistic is the abstract base class for all test statistics.
RooAbsReal::ErrorLoggingMode _remoteEvalErrorLoggingState
Definition: RooRealMPFE.h:78
RooMPSentinel is a singleton class that keeps track of all parellel execution processes for goodness-...
Definition: RooMPSentinel.h:23
Mother of all ROOT objects.
Definition: TObject.h:37
Bool_t _forceCalc
Definition: RooRealMPFE.h:77
virtual TObject * clone(const char *newname) const
Definition: RooRealMPFE.h:35
RooRealProxy is the concrete proxy for RooAbsReal objects A RooRealProxy is the general mechanism to ...
Definition: RooRealProxy.h:23
const Bool_t kTRUE
Definition: Rtypes.h:91
void initialize(typename Architecture_t::Matrix_t &A, EInitialization m)
Definition: Functions.h:257
char name[80]
Definition: TGX11.cxx:109
RooFit::BidirMMapPipe * _pipe
Definition: RooRealMPFE.h:80
Bool_t _inlineMode
Definition: RooRealMPFE.h:76
static RooMPSentinel _sentinel
Definition: RooRealMPFE.h:88