// @(#)root/roostats:$Id$
// Authors: Kevin Belasco        17/06/2009
// Authors: Kyle Cranmer         17/06/2009
/*************************************************************************
 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOSTATS_UniformProposal
#define ROOSTATS_UniformProposal

#ifndef ROOT_Rtypes
#include "Rtypes.h"
#endif

#ifndef ROOSTATS_ProposalFunction
#include "RooStats/ProposalFunction.h"
#endif

#ifndef ROO_ARG_SET
#include "RooArgSet.h"
#endif
#ifndef ROO_MSG_SERVICE
#include "RooMsgService.h"
#endif
#ifndef ROO_REAL_VAR
#include "RooRealVar.h"
#endif
#ifndef ROOT_TIterator
#include "TIterator.h"
#endif

namespace RooStats {

   class UniformProposal : public ProposalFunction {

   public:
      UniformProposal() : ProposalFunction() {}

      // Populate xPrime with a new proposed point
      virtual void Propose(RooArgSet& xPrime, RooArgSet& x);

      // Determine whether or not the proposal density is symmetric for
      // points x1 and x2 - that is, whether the probabilty of reaching x2
      // from x1 is equal to the probability of reaching x1 from x2
      virtual Bool_t IsSymmetric(RooArgSet& x1, RooArgSet& x2);

      // Return the probability of proposing the point x1 given the starting
      // point x2
      virtual Double_t GetProposalDensity(RooArgSet& x1, RooArgSet& x2);

      virtual ~UniformProposal() {}

      ClassDef(UniformProposal,1) // A concrete implementation of ProposalFunction, that uniformly samples the parameter space.
   };
}

#endif
 UniformProposal.h:1
 UniformProposal.h:2
 UniformProposal.h:3
 UniformProposal.h:4
 UniformProposal.h:5
 UniformProposal.h:6
 UniformProposal.h:7
 UniformProposal.h:8
 UniformProposal.h:9
 UniformProposal.h:10
 UniformProposal.h:11
 UniformProposal.h:12
 UniformProposal.h:13
 UniformProposal.h:14
 UniformProposal.h:15
 UniformProposal.h:16
 UniformProposal.h:17
 UniformProposal.h:18
 UniformProposal.h:19
 UniformProposal.h:20
 UniformProposal.h:21
 UniformProposal.h:22
 UniformProposal.h:23
 UniformProposal.h:24
 UniformProposal.h:25
 UniformProposal.h:26
 UniformProposal.h:27
 UniformProposal.h:28
 UniformProposal.h:29
 UniformProposal.h:30
 UniformProposal.h:31
 UniformProposal.h:32
 UniformProposal.h:33
 UniformProposal.h:34
 UniformProposal.h:35
 UniformProposal.h:36
 UniformProposal.h:37
 UniformProposal.h:38
 UniformProposal.h:39
 UniformProposal.h:40
 UniformProposal.h:41
 UniformProposal.h:42
 UniformProposal.h:43
 UniformProposal.h:44
 UniformProposal.h:45
 UniformProposal.h:46
 UniformProposal.h:47
 UniformProposal.h:48
 UniformProposal.h:49
 UniformProposal.h:50
 UniformProposal.h:51
 UniformProposal.h:52
 UniformProposal.h:53
 UniformProposal.h:54
 UniformProposal.h:55
 UniformProposal.h:56
 UniformProposal.h:57
 UniformProposal.h:58
 UniformProposal.h:59
 UniformProposal.h:60
 UniformProposal.h:61