Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooUnblindUniform.cxx
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitModels *
4  * @(#)root/roofit:$Id$
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 
17 /** \class RooUnblindUniform
18  \ingroup Roofit
19 
20 Implementation of BlindTools' offset blinding method.
21 A RooUnblindUniform object is a real-valued function
22 object, constructed from a parameter to be blinded and a
23 set of config parameters to change the blinding method.
24 When supplied to a PDF in lieu of the regular parameter,
25 a transformation will be applied such that the likelihood is computed with the actual
26 value of the parameter, but RooFit (, the user, MINUIT) see only
27 the transformed (blinded) value. The transformation is chosen such that
28 the error of the blind parameter is identical to that
29 of the original parameter.
30 **/
31 
32 #include "RooFit.h"
33 
34 #include "RooArgSet.h"
35 #include "RooArgSet.h"
36 #include "RooUnblindUniform.h"
37 
38 
39 using namespace std;
40 
41 ClassImp(RooUnblindUniform);
42 
43 ////////////////////////////////////////////////////////////////////////////////
44 /// Default constructor
45 
46 RooUnblindUniform::RooUnblindUniform()
47 {
48 }
49 
50 ////////////////////////////////////////////////////////////////////////////////
51 /// Constructor from a given RooAbsReal (to hold the blinded value) and a set
52 /// of blinding parameters.
53 /// \param name Name of this transformation
54 /// \param title Title (for plotting)
55 /// \param blindString String to initialise the random generator
56 /// \param scale Scale the offset. High values make the blinding more violent.
57 /// \param blindValue The parameter to be blinded. After the fit, this parameter will
58 /// only hold the blinded values.
59 
60 RooUnblindUniform::RooUnblindUniform(const char *name, const char *title,
61  const char *blindString, Double_t scale, RooAbsReal& blindValue)
62  : RooAbsHiddenReal(name,title),
63  _value("value","Uniform blinded value",this,blindValue),
64  _blindEngine(blindString,RooBlindTools::full,0.,scale)
65 {
66 }
67 
68 ////////////////////////////////////////////////////////////////////////////////
69 /// Copy constructor
70 
71 RooUnblindUniform::RooUnblindUniform(const RooUnblindUniform& other, const char* name) :
72  RooAbsHiddenReal(other, name),
73  _value("asym",this,other._value),
74  _blindEngine(other._blindEngine)
75 {
76 }
77 
78 ////////////////////////////////////////////////////////////////////////////////
79 /// Destructor
80 
81 RooUnblindUniform::~RooUnblindUniform()
82 {
83 }
84 
85 ////////////////////////////////////////////////////////////////////////////////
86 /// Evaluate RooBlindTools unhide-offset method on blind value
87 
88 Double_t RooUnblindUniform::evaluate() const
89 {
90  return _blindEngine.UnHideUniform(_value);
91 }