// @(#)root/roostats:$Id$
// Author: Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke, Nils Ruthmann
/*************************************************************************
 * 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 UPPER_LIMIT_MCS_MODULE
#define UPPER_LIMIT_MCS_MODULE

#include "RooAbsMCStudyModule.h"
#include <string>

class RooArgSet; 
class RooDataSet; 
class RooRealVar; 
class RooAbsPdf; 

namespace RooStats {

   class ProfileLikelihoodCalculator; 


class UpperLimitMCSModule : public RooAbsMCStudyModule {
public:


   UpperLimitMCSModule(const RooArgSet* poi, Double_t CL=0.95) ;
   UpperLimitMCSModule(const UpperLimitMCSModule& other) ;
   virtual ~UpperLimitMCSModule() ;

   Bool_t initializeInstance() ; 

   Bool_t initializeRun(Int_t /*numSamples*/) ; 
   RooDataSet* finalizeRun() ;

   //Bool_t processAfterFit(Int_t /*sampleNum*/)  ;
   Bool_t processBetweenGenAndFit(Int_t /*sampleNum*/) ;
	
private:

   std::string _parName ;  // Name of Nsignal parameter
   RooStats::ProfileLikelihoodCalculator* _plc;
   RooRealVar* _ul ;

   const RooArgSet* _poi;  // parameters of interest
   RooDataSet* _data ;     // Summary dataset to store results
   Double_t _cl;
   RooAbsPdf* _model;

   ClassDef(UpperLimitMCSModule,0) // MCStudy module to calculate upperlimit of a given poi
};

}

#endif

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