ROOT logo
// @(#)root/roostats:$Id: ToyMCSamplerOld.h 42339 2011-11-30 23:54:18Z moneta $
// Author: Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke
// Additions and modifications by Mario Pelliccioni
/*************************************************************************
 * 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_ToyMCSamplerOld
#define ROOSTATS_ToyMCSamplerOld

//_________________________________________________
/*
BEGIN_HTML
<p>
ToyMCSamplerOld is a simple implementation of the TestStatSampler interface.
It generates Toy Monte Carlo for a given parameter point, and evaluates a 
test statistic that the user specifies (passed via the RooStats::TestStatistic interface).

Development notes: We need to provide a nice way for the user to:
<ul>
  <li>specify the number of toy experiments (needed to probe a given confidence level)</li>
  <li>specify if the number of events per toy experiment should be fixed (conditioning) or floating (unconditional)</li>
  <li>specify if any auxiliary observations should be fixed (conditioning) or floating (unconditional)</li>
  <li>specify if nuisance paramters should be part of the toy MC: eg: integrated out (Bayesian marginalization)</li>
</ul>

All of these should be made fairly explicit in the interface.
</p>
END_HTML
*/
//

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

#include <vector>
#include <string>
#include <sstream>

#include "RooStats/TestStatSampler.h"
#include "RooStats/SamplingDistribution.h"
#include "RooStats/TestStatistic.h"
#include "RooStats/RooStatsUtils.h"

#include "RooWorkspace.h"
#include "RooMsgService.h"
#include "RooAbsPdf.h"
#include "TRandom.h"

#include "RooDataSet.h"

namespace RooStats {

    class ToyMCSamplerOld : public TestStatSampler {


  public:
    ToyMCSamplerOld(TestStatistic &ts) {
      fTestStat = &ts;
      fWS = new RooWorkspace();
      fOwnsWorkspace = true;
      fDataName = "";
      fPdfName = "";
      fNullPOI = 0;
      fNuisParams=0;
      fObservables=0;
      fExtended = kTRUE;
      fRand = new TRandom();
      fCounter=0;
      fVarName = fTestStat->GetVarName();
      fLastDataSet = 0;
      fNevents = 0; 
      fNtoys = 0; 
      fSize = 0.05; 
    }

    virtual ~ToyMCSamplerOld() {
      if(fOwnsWorkspace) delete fWS;
      if(fRand) delete fRand;
      if(fLastDataSet) delete fLastDataSet;
    }
    
    // Extended interface to append to sampling distribution more samples
    virtual SamplingDistribution* AppendSamplingDistribution(RooArgSet& allParameters, 
							     SamplingDistribution* last, 
							     Int_t additionalMC) {

      Int_t tmp = fNtoys;
      fNtoys = additionalMC;
      SamplingDistribution* newSamples = GetSamplingDistribution(allParameters);
      fNtoys = tmp;

      if(last){
	last->Add(newSamples);
	delete newSamples;
	return last;
      }

      return newSamples;
    }

    // Main interface to get a SamplingDistribution
    virtual SamplingDistribution* GetSamplingDistribution(RooArgSet& allParameters) {
      std::vector<Double_t> testStatVec;
      //       cout << " about to generate sampling dist " << endl;

      RooFit::MsgLevel msglevel = RooMsgService::instance().globalKillBelow();
      RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR) ;

      for(Int_t i=0; i<fNtoys; ++i){
	//cout << " on toy number " << i << endl;
	//	RooAbsData* toydata = (RooAbsData*)GenerateToyData(allParameters);
	//	testStatVec.push_back( fTestStat->Evaluate(*toydata, allParameters) );
	//	delete toydata;

	RooDataSet* toydata = (RooDataSet*)GenerateToyData(allParameters);

	// note, evaluation always done at fNullPOI
	testStatVec.push_back( fTestStat->Evaluate(*toydata, *fNullPOI) );

	// want to clean up memory, but delete toydata causes problem with 
	// nll->setData(data, noclone) because pointer to last data set is no longer valid
	//	delete toydata; 

	// instead, delete previous data set
	if(fLastDataSet) delete fLastDataSet;
	fLastDataSet = toydata;
      }
     
       RooMsgService::instance().setGlobalKillBelow(msglevel);

      //      cout << " generated sampling dist " << endl;
      return new SamplingDistribution( "temp",//MakeName(allParameters).c_str(),
				       "Sampling Distribution of Test Statistic", testStatVec, fVarName );
    } 

     virtual RooAbsData* GenerateToyData(RooArgSet& allParameters) const {
       // This method generates a toy dataset for the given parameter point.


       //       cout << "fNevents = " << fNevents << endl;
       RooAbsPdf* pdf = fWS->pdf(fPdfName);
       if(!fObservables){
	 cout << "Observables not specified in ToyMCSamplerOld, will try to determine.  "
	      << "Will ignore all constant parameters, parameters of interest, and nuisance parameters." << endl;
	 RooArgSet* observables = pdf->getVariables();
	 RemoveConstantParameters(observables); // observables might be set constant, this is just a guess


	 if(fNullPOI) observables->remove(*fNullPOI, kFALSE, kTRUE);
	 if(fNuisParams) observables->remove(*fNuisParams, kFALSE, kTRUE);
	 cout << "will use the following as observables when generating data" << endl;
	 observables->Print();
	 fObservables=observables;
       } /*else {
	   cout << "obs set: will use the following as observables when generating data" << endl;
	   fObservables->Print();
	   }*/

       //fluctuate the number of events if fExtended is on.  
       // This is a bit slippery for number counting expts. where entry in data and

       /*
       // model is number of events, and so number of entries in data always =1.
       Int_t nEvents = fNevents;
       if(fExtended) {
	 if( pdf->expectedEvents(*fObservables) > 0){
	   // if PDF knows expected events use it instead
	   nEvents = fRand->Poisson(pdf->expectedEvents(*fObservables));
	 } else{
	   nEvents = fRand->Poisson(fNevents);
	 }
       }
       */

       // Set the parameters to desired values for generating toys
       RooArgSet* parameters = pdf->getParameters(fObservables);
       RooStats::SetParameters(&allParameters, parameters);

       /*       
	 cout << "expected events = " <<  pdf->expectedEvents(*observables) 
	    << "fExtended = " << fExtended
	    << "fNevents = " << fNevents << " fNevents " 
	    << "generating" << nEvents << " events " << endl;
       */
       
       RooFit::MsgLevel level = RooMsgService::instance().globalKillBelow();
       RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR) ;

       //       cout << "nEvents = " << nEvents << endl;
       RooAbsData* data = NULL;
       if(fExtended) {
	 data = (RooAbsData*)pdf->generate(*fObservables, RooFit::Extended());
       } else {
	 data = (RooAbsData*)pdf->generate(*fObservables, fNevents);
     }

       RooMsgService::instance().setGlobalKillBelow(level) ;
       delete parameters;
       return data;
     }

     // helper method to create meaningful names for sampling dist
     string MakeName(RooArgSet& /*params*/){
       std::ostringstream str;
       str<<"SamplingDist_"<< fCounter;
       fCounter++;
       std::string buf = str.str(); 
       return buf ;       
     }

      // Main interface to evaluate the test statistic on a dataset
     virtual Double_t EvaluateTestStatistic(RooAbsData& data, RooArgSet& allParameters) {
       return fTestStat->Evaluate(data, allParameters);
     }

      // Get the TestStatistic
      virtual TestStatistic* GetTestStatistic()  const {
	 return fTestStat;
      }  
    
      // Get the Confidence level for the test
      virtual Double_t ConfidenceLevel()  const {return 1.-fSize;}  

      // Common Initialization
      virtual void Initialize(RooAbsArg& /*testStatistic*/, 
			      RooArgSet& /*paramsOfInterest*/, 
			      RooArgSet& /*nuisanceParameters*/) {}

      //set the parameters for the toyMC generation
      virtual void SetNToys(const Int_t ntoy) {
        fNtoys = ntoy;
      }

      virtual void SetNEventsPerToy(const Int_t nevents) {
        fNevents = nevents;
      }


      virtual void SetExtended(const Bool_t isExtended) {
        fExtended = isExtended;
      }

      // Set the DataSet, add to the the workspace if not already there
      virtual void SetData(RooAbsData& data) {
	if(&data){
	  fWS->import(data);
	  fDataName = data.GetName();
	  fWS->Print();
	}
      }
      // Set the Pdf, add to the the workspace if not already there
      virtual void SetPdf(RooAbsPdf& pdf) { 
	if(&pdf){
	  fWS->import(pdf);
	  fPdfName = pdf.GetName();
	}
      }

      // specify the name of the dataset in the workspace to be used
      virtual void SetData(const char* name) {fDataName = name;}
      // specify the name of the PDF in the workspace to be used
      virtual void SetPdf(const char* name) {fPdfName = name;}
      // How to randomize the prior. Set to NULL to deactivate randomization.
      virtual void SetPriorNuisance(RooAbsPdf* /*not supported*/) {}

      // specify the values of parameters used when evaluating test statistic
      virtual void SetParametersForTestStat(const RooArgSet& nullpoi) {fNullPOI = (RooArgSet*)nullpoi.snapshot();}
      // specify the nuisance parameters (eg. the rest of the parameters)
      virtual void SetNuisanceParameters(const RooArgSet& set) {fNuisParams = &set;}
      // specify the observables in the dataset (needed to evaluate the test statistic)
      virtual void SetObservables(const RooArgSet& set) {fObservables = &set;}
      // specify the conditional observables
      virtual void SetGlobalObservables(const RooArgSet& ) {}

      // set the size of the test (rate of Type I error) ( Eg. 0.05 for a 95% Confidence Interval)
      virtual void SetTestSize(Double_t size) {fSize = size;}
      // set the confidence level for the interval (eg. 0.95 for a 95% Confidence Interval)
      virtual void SetConfidenceLevel(Double_t cl) {fSize = 1.-cl;}

      // Set the TestStatistic (want the argument to be a function of the data & parameter points
      virtual void SetTestStatistic(TestStatistic* testStat)   {
	fTestStat = testStat;
      }  

      // Set the name of the sampling distribution used for plotting
      void SetSamplingDistName(const char* name) { if(name) fSamplingDistName = name; }

      
   private:
      Double_t fSize;
      RooWorkspace* fWS; // a workspace that owns all the components to be used by the calculator
      Bool_t fOwnsWorkspace; // flag if this object owns its workspace
      string fSamplingDistName; // name of the model
      const char* fPdfName; // name of  common PDF in workspace
      const char* fDataName; // name of data set in workspace
      RooArgSet* fNullPOI; // the values of parameters used when evaluating test statistic
      const RooArgSet* fNuisParams;// RooArgSet specifying  nuisance parameters for interval
      mutable const RooArgSet* fObservables; // RooArgSet specifying the observables in the dataset (needed to evaluate the test statistic)
      TestStatistic* fTestStat; // pointer to the test statistic that is being sampled
      Int_t fNtoys; // number of toys to generate
      Int_t fNevents; // number of events per toy (may be ignored depending on settings)
      Bool_t fExtended; // if nEvents should fluctuate
      TRandom* fRand; // random generator
      TString fVarName; // name of test statistic

      Int_t fCounter; // counter for naming sampling dist objects

      RooDataSet* fLastDataSet; // work around for memory issues in nllvar->setData(data, noclone)

   protected:
      ClassDef(ToyMCSamplerOld,1)   // A simple implementation of the TestStatSampler interface
	};
}


#endif
 ToyMCSamplerOld.h:1
 ToyMCSamplerOld.h:2
 ToyMCSamplerOld.h:3
 ToyMCSamplerOld.h:4
 ToyMCSamplerOld.h:5
 ToyMCSamplerOld.h:6
 ToyMCSamplerOld.h:7
 ToyMCSamplerOld.h:8
 ToyMCSamplerOld.h:9
 ToyMCSamplerOld.h:10
 ToyMCSamplerOld.h:11
 ToyMCSamplerOld.h:12
 ToyMCSamplerOld.h:13
 ToyMCSamplerOld.h:14
 ToyMCSamplerOld.h:15
 ToyMCSamplerOld.h:16
 ToyMCSamplerOld.h:17
 ToyMCSamplerOld.h:18
 ToyMCSamplerOld.h:19
 ToyMCSamplerOld.h:20
 ToyMCSamplerOld.h:21
 ToyMCSamplerOld.h:22
 ToyMCSamplerOld.h:23
 ToyMCSamplerOld.h:24
 ToyMCSamplerOld.h:25
 ToyMCSamplerOld.h:26
 ToyMCSamplerOld.h:27
 ToyMCSamplerOld.h:28
 ToyMCSamplerOld.h:29
 ToyMCSamplerOld.h:30
 ToyMCSamplerOld.h:31
 ToyMCSamplerOld.h:32
 ToyMCSamplerOld.h:33
 ToyMCSamplerOld.h:34
 ToyMCSamplerOld.h:35
 ToyMCSamplerOld.h:36
 ToyMCSamplerOld.h:37
 ToyMCSamplerOld.h:38
 ToyMCSamplerOld.h:39
 ToyMCSamplerOld.h:40
 ToyMCSamplerOld.h:41
 ToyMCSamplerOld.h:42
 ToyMCSamplerOld.h:43
 ToyMCSamplerOld.h:44
 ToyMCSamplerOld.h:45
 ToyMCSamplerOld.h:46
 ToyMCSamplerOld.h:47
 ToyMCSamplerOld.h:48
 ToyMCSamplerOld.h:49
 ToyMCSamplerOld.h:50
 ToyMCSamplerOld.h:51
 ToyMCSamplerOld.h:52
 ToyMCSamplerOld.h:53
 ToyMCSamplerOld.h:54
 ToyMCSamplerOld.h:55
 ToyMCSamplerOld.h:56
 ToyMCSamplerOld.h:57
 ToyMCSamplerOld.h:58
 ToyMCSamplerOld.h:59
 ToyMCSamplerOld.h:60
 ToyMCSamplerOld.h:61
 ToyMCSamplerOld.h:62
 ToyMCSamplerOld.h:63
 ToyMCSamplerOld.h:64
 ToyMCSamplerOld.h:65
 ToyMCSamplerOld.h:66
 ToyMCSamplerOld.h:67
 ToyMCSamplerOld.h:68
 ToyMCSamplerOld.h:69
 ToyMCSamplerOld.h:70
 ToyMCSamplerOld.h:71
 ToyMCSamplerOld.h:72
 ToyMCSamplerOld.h:73
 ToyMCSamplerOld.h:74
 ToyMCSamplerOld.h:75
 ToyMCSamplerOld.h:76
 ToyMCSamplerOld.h:77
 ToyMCSamplerOld.h:78
 ToyMCSamplerOld.h:79
 ToyMCSamplerOld.h:80
 ToyMCSamplerOld.h:81
 ToyMCSamplerOld.h:82
 ToyMCSamplerOld.h:83
 ToyMCSamplerOld.h:84
 ToyMCSamplerOld.h:85
 ToyMCSamplerOld.h:86
 ToyMCSamplerOld.h:87
 ToyMCSamplerOld.h:88
 ToyMCSamplerOld.h:89
 ToyMCSamplerOld.h:90
 ToyMCSamplerOld.h:91
 ToyMCSamplerOld.h:92
 ToyMCSamplerOld.h:93
 ToyMCSamplerOld.h:94
 ToyMCSamplerOld.h:95
 ToyMCSamplerOld.h:96
 ToyMCSamplerOld.h:97
 ToyMCSamplerOld.h:98
 ToyMCSamplerOld.h:99
 ToyMCSamplerOld.h:100
 ToyMCSamplerOld.h:101
 ToyMCSamplerOld.h:102
 ToyMCSamplerOld.h:103
 ToyMCSamplerOld.h:104
 ToyMCSamplerOld.h:105
 ToyMCSamplerOld.h:106
 ToyMCSamplerOld.h:107
 ToyMCSamplerOld.h:108
 ToyMCSamplerOld.h:109
 ToyMCSamplerOld.h:110
 ToyMCSamplerOld.h:111
 ToyMCSamplerOld.h:112
 ToyMCSamplerOld.h:113
 ToyMCSamplerOld.h:114
 ToyMCSamplerOld.h:115
 ToyMCSamplerOld.h:116
 ToyMCSamplerOld.h:117
 ToyMCSamplerOld.h:118
 ToyMCSamplerOld.h:119
 ToyMCSamplerOld.h:120
 ToyMCSamplerOld.h:121
 ToyMCSamplerOld.h:122
 ToyMCSamplerOld.h:123
 ToyMCSamplerOld.h:124
 ToyMCSamplerOld.h:125
 ToyMCSamplerOld.h:126
 ToyMCSamplerOld.h:127
 ToyMCSamplerOld.h:128
 ToyMCSamplerOld.h:129
 ToyMCSamplerOld.h:130
 ToyMCSamplerOld.h:131
 ToyMCSamplerOld.h:132
 ToyMCSamplerOld.h:133
 ToyMCSamplerOld.h:134
 ToyMCSamplerOld.h:135
 ToyMCSamplerOld.h:136
 ToyMCSamplerOld.h:137
 ToyMCSamplerOld.h:138
 ToyMCSamplerOld.h:139
 ToyMCSamplerOld.h:140
 ToyMCSamplerOld.h:141
 ToyMCSamplerOld.h:142
 ToyMCSamplerOld.h:143
 ToyMCSamplerOld.h:144
 ToyMCSamplerOld.h:145
 ToyMCSamplerOld.h:146
 ToyMCSamplerOld.h:147
 ToyMCSamplerOld.h:148
 ToyMCSamplerOld.h:149
 ToyMCSamplerOld.h:150
 ToyMCSamplerOld.h:151
 ToyMCSamplerOld.h:152
 ToyMCSamplerOld.h:153
 ToyMCSamplerOld.h:154
 ToyMCSamplerOld.h:155
 ToyMCSamplerOld.h:156
 ToyMCSamplerOld.h:157
 ToyMCSamplerOld.h:158
 ToyMCSamplerOld.h:159
 ToyMCSamplerOld.h:160
 ToyMCSamplerOld.h:161
 ToyMCSamplerOld.h:162
 ToyMCSamplerOld.h:163
 ToyMCSamplerOld.h:164
 ToyMCSamplerOld.h:165
 ToyMCSamplerOld.h:166
 ToyMCSamplerOld.h:167
 ToyMCSamplerOld.h:168
 ToyMCSamplerOld.h:169
 ToyMCSamplerOld.h:170
 ToyMCSamplerOld.h:171
 ToyMCSamplerOld.h:172
 ToyMCSamplerOld.h:173
 ToyMCSamplerOld.h:174
 ToyMCSamplerOld.h:175
 ToyMCSamplerOld.h:176
 ToyMCSamplerOld.h:177
 ToyMCSamplerOld.h:178
 ToyMCSamplerOld.h:179
 ToyMCSamplerOld.h:180
 ToyMCSamplerOld.h:181
 ToyMCSamplerOld.h:182
 ToyMCSamplerOld.h:183
 ToyMCSamplerOld.h:184
 ToyMCSamplerOld.h:185
 ToyMCSamplerOld.h:186
 ToyMCSamplerOld.h:187
 ToyMCSamplerOld.h:188
 ToyMCSamplerOld.h:189
 ToyMCSamplerOld.h:190
 ToyMCSamplerOld.h:191
 ToyMCSamplerOld.h:192
 ToyMCSamplerOld.h:193
 ToyMCSamplerOld.h:194
 ToyMCSamplerOld.h:195
 ToyMCSamplerOld.h:196
 ToyMCSamplerOld.h:197
 ToyMCSamplerOld.h:198
 ToyMCSamplerOld.h:199
 ToyMCSamplerOld.h:200
 ToyMCSamplerOld.h:201
 ToyMCSamplerOld.h:202
 ToyMCSamplerOld.h:203
 ToyMCSamplerOld.h:204
 ToyMCSamplerOld.h:205
 ToyMCSamplerOld.h:206
 ToyMCSamplerOld.h:207
 ToyMCSamplerOld.h:208
 ToyMCSamplerOld.h:209
 ToyMCSamplerOld.h:210
 ToyMCSamplerOld.h:211
 ToyMCSamplerOld.h:212
 ToyMCSamplerOld.h:213
 ToyMCSamplerOld.h:214
 ToyMCSamplerOld.h:215
 ToyMCSamplerOld.h:216
 ToyMCSamplerOld.h:217
 ToyMCSamplerOld.h:218
 ToyMCSamplerOld.h:219
 ToyMCSamplerOld.h:220
 ToyMCSamplerOld.h:221
 ToyMCSamplerOld.h:222
 ToyMCSamplerOld.h:223
 ToyMCSamplerOld.h:224
 ToyMCSamplerOld.h:225
 ToyMCSamplerOld.h:226
 ToyMCSamplerOld.h:227
 ToyMCSamplerOld.h:228
 ToyMCSamplerOld.h:229
 ToyMCSamplerOld.h:230
 ToyMCSamplerOld.h:231
 ToyMCSamplerOld.h:232
 ToyMCSamplerOld.h:233
 ToyMCSamplerOld.h:234
 ToyMCSamplerOld.h:235
 ToyMCSamplerOld.h:236
 ToyMCSamplerOld.h:237
 ToyMCSamplerOld.h:238
 ToyMCSamplerOld.h:239
 ToyMCSamplerOld.h:240
 ToyMCSamplerOld.h:241
 ToyMCSamplerOld.h:242
 ToyMCSamplerOld.h:243
 ToyMCSamplerOld.h:244
 ToyMCSamplerOld.h:245
 ToyMCSamplerOld.h:246
 ToyMCSamplerOld.h:247
 ToyMCSamplerOld.h:248
 ToyMCSamplerOld.h:249
 ToyMCSamplerOld.h:250
 ToyMCSamplerOld.h:251
 ToyMCSamplerOld.h:252
 ToyMCSamplerOld.h:253
 ToyMCSamplerOld.h:254
 ToyMCSamplerOld.h:255
 ToyMCSamplerOld.h:256
 ToyMCSamplerOld.h:257
 ToyMCSamplerOld.h:258
 ToyMCSamplerOld.h:259
 ToyMCSamplerOld.h:260
 ToyMCSamplerOld.h:261
 ToyMCSamplerOld.h:262
 ToyMCSamplerOld.h:263
 ToyMCSamplerOld.h:264
 ToyMCSamplerOld.h:265
 ToyMCSamplerOld.h:266
 ToyMCSamplerOld.h:267
 ToyMCSamplerOld.h:268
 ToyMCSamplerOld.h:269
 ToyMCSamplerOld.h:270
 ToyMCSamplerOld.h:271
 ToyMCSamplerOld.h:272
 ToyMCSamplerOld.h:273
 ToyMCSamplerOld.h:274
 ToyMCSamplerOld.h:275
 ToyMCSamplerOld.h:276
 ToyMCSamplerOld.h:277
 ToyMCSamplerOld.h:278
 ToyMCSamplerOld.h:279
 ToyMCSamplerOld.h:280
 ToyMCSamplerOld.h:281
 ToyMCSamplerOld.h:282
 ToyMCSamplerOld.h:283
 ToyMCSamplerOld.h:284
 ToyMCSamplerOld.h:285
 ToyMCSamplerOld.h:286
 ToyMCSamplerOld.h:287
 ToyMCSamplerOld.h:288
 ToyMCSamplerOld.h:289
 ToyMCSamplerOld.h:290
 ToyMCSamplerOld.h:291
 ToyMCSamplerOld.h:292
 ToyMCSamplerOld.h:293
 ToyMCSamplerOld.h:294
 ToyMCSamplerOld.h:295
 ToyMCSamplerOld.h:296
 ToyMCSamplerOld.h:297
 ToyMCSamplerOld.h:298
 ToyMCSamplerOld.h:299
 ToyMCSamplerOld.h:300
 ToyMCSamplerOld.h:301
 ToyMCSamplerOld.h:302
 ToyMCSamplerOld.h:303
 ToyMCSamplerOld.h:304
 ToyMCSamplerOld.h:305
 ToyMCSamplerOld.h:306
 ToyMCSamplerOld.h:307
 ToyMCSamplerOld.h:308
 ToyMCSamplerOld.h:309
 ToyMCSamplerOld.h:310
 ToyMCSamplerOld.h:311
 ToyMCSamplerOld.h:312
 ToyMCSamplerOld.h:313
 ToyMCSamplerOld.h:314
 ToyMCSamplerOld.h:315
 ToyMCSamplerOld.h:316
 ToyMCSamplerOld.h:317
 ToyMCSamplerOld.h:318
 ToyMCSamplerOld.h:319
 ToyMCSamplerOld.h:320
 ToyMCSamplerOld.h:321
 ToyMCSamplerOld.h:322