ROOT logo
/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitCore                                                       *
 * @(#)root/roofitcore:$Id: RooConvGenContext.cxx 28259 2009-04-16 16:21:16Z wouter $
 * Authors:                                                                  *
 *   WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu       *
 *   DK, David Kirkby,    UC Irvine,         dkirkby@uci.edu                 *
 *                                                                           *
 * Copyright (c) 2000-2005, Regents of the University of California          *
 *                          and Stanford University. All rights reserved.    *
 *                                                                           *
 * Redistribution and use in source and binary forms,                        *
 * with or without modification, are permitted according to the terms        *
 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
 *****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
// 
// BEGIN_HTML
// RooConvGenContext is an efficient implementation of the generator context
// specific for RooAbsAnaConvPdf objects. The physics model is generated
// with a truth resolution model and the requested resolution model is generated
// separately as a PDF. The convolution variable of the physics model is 
// subsequently explicitly smeared with the resolution model distribution.
// END_HTML
//

#include "RooFit.h"

#include "RooMsgService.h"
#include "RooConvGenContext.h"
#include "RooAbsAnaConvPdf.h"
#include "RooNumConvPdf.h"
#include "RooFFTConvPdf.h"
#include "RooProdPdf.h"
#include "RooDataSet.h"
#include "RooArgSet.h"
#include "RooTruthModel.h"
#include "Riostream.h"


ClassImp(RooConvGenContext)
;
  

//_____________________________________________________________________________
RooConvGenContext::RooConvGenContext(const RooAbsAnaConvPdf &model, const RooArgSet &vars, 
	 			     const RooDataSet *prototype, const RooArgSet* auxProto, Bool_t verbose) :
  RooAbsGenContext(model,vars,prototype,auxProto,verbose), _pdfVarsOwned(0), _modelVarsOwned(0)
{
  // Constructor for specialized generator context for analytical convolutions. 
  // 
  // Builds a generator for the physics PDF convoluted with the truth model
  // and a generator for the resolution model as PDF. Events are generated
  // by sampling events from the p.d.f and smearings from the resolution model
  // and adding these to obtain a distribution of events consistent with the
  // convolution of these two. The advantage of this procedure is so that
  // both p.d.f and resolution model can take advantage of any internal
  // generators that may be defined.

  cxcoutI(Generation) << "RooConvGenContext::ctor() setting up special generator context for analytical convolution p.d.f. " << model.GetName() 
		      << " for generation of observable(s) " << vars << endl ;

  // Clone PDF and change model to internal truth model
  _pdfCloneSet = (RooArgSet*) RooArgSet(model).snapshot(kTRUE) ;
  if (!_pdfCloneSet) {
    coutE(Generation) << "RooConvGenContext::RooConvGenContext(" << GetName() << ") Couldn't deep-clone PDF, abort," << endl ;
    RooErrorHandler::softAbort() ;
  }

  RooAbsAnaConvPdf* pdfClone = (RooAbsAnaConvPdf*) _pdfCloneSet->find(model.GetName()) ;
  RooTruthModel truthModel("truthModel","Truth resolution model",(RooRealVar&)*pdfClone->convVar()) ;
  pdfClone->changeModel(truthModel) ;
  ((RooRealVar*)pdfClone->convVar())->removeRange() ;

  // Create generator for physics X truth model
  _pdfVars = (RooArgSet*) pdfClone->getObservables(&vars) ; ;
  _pdfGen = pdfClone->genContext(*_pdfVars,prototype,auxProto,verbose) ;  

  // Clone resolution model and use as normal PDF
  _modelCloneSet = (RooArgSet*) RooArgSet(*model._convSet.at(0)).snapshot(kTRUE) ;
  if (!_modelCloneSet) {
    coutE(Generation) << "RooConvGenContext::RooConvGenContext(" << GetName() << ") Couldn't deep-clone resolution model, abort," << endl ;
    RooErrorHandler::softAbort() ;
  }
  RooResolutionModel* modelClone = (RooResolutionModel*) 
    _modelCloneSet->find(model._convSet.at(0)->GetName())->Clone("smearing") ;
  _modelCloneSet->addOwned(*modelClone) ;
  modelClone->changeBasis(0) ;
  modelClone->convVar().removeRange() ;

  // Create generator for resolution model as PDF
  _modelVars = (RooArgSet*) modelClone->getObservables(&vars) ;

  _modelVars->add(modelClone->convVar()) ;
  _convVarName = modelClone->convVar().GetName() ;
  _modelGen = modelClone->genContext(*_modelVars,prototype,auxProto,verbose) ;

  if (prototype) {
    _pdfVars->add(*prototype->get()) ;
    _modelVars->add(*prototype->get()) ;  
  }

  // WVE ADD FOR DEBUGGING
  if (auxProto) {
    _pdfVars->add(*auxProto) ;
    _modelVars->add(*auxProto) ;
  }

//   cout << "RooConvGenContext::ctor(" << this << "," << GetName() << ") _pdfVars = " << _pdfVars << " "  ; _pdfVars->Print("1") ;
//   cout << "RooConvGenContext::ctor(" << this << "," << GetName() << ") _modelVars = " << _modelVars << " " ; _modelVars->Print("1") ;
}



//_____________________________________________________________________________
RooConvGenContext::RooConvGenContext(const RooNumConvPdf &model, const RooArgSet &vars, 
	 			     const RooDataSet *prototype, const RooArgSet* auxProto, Bool_t verbose) :
  RooAbsGenContext(model,vars,prototype,auxProto,verbose)
{
  // Constructor for specialized generator context for numerical convolutions. 
  // 
  // Builds a generator for the physics PDF convoluted with the truth model
  // and a generator for the resolution model as PDF. Events are generated
  // by sampling events from the p.d.f and smearings from the resolution model
  // and adding these to obtain a distribution of events consistent with the
  // convolution of these two. The advantage of this procedure is so that
  // both p.d.f and resolution model can take advantage of any internal
  // generators that may be defined.

  cxcoutI(Generation) << "RooConvGenContext::ctor() setting up special generator context for numeric convolution p.d.f. " << model.GetName() 
			<< " for generation of observable(s) " << vars << endl ;

  // Create generator for physics X truth model
  _pdfVarsOwned = (RooArgSet*) model.conv().clonePdf().getObservables(&vars)->snapshot(kTRUE) ;
  _pdfVars = new RooArgSet(*_pdfVarsOwned) ;
  _pdfGen = ((RooAbsPdf&)model.conv().clonePdf()).genContext(*_pdfVars,prototype,auxProto,verbose) ;  
  _pdfCloneSet = 0 ;

  // Create generator for resolution model as PDF
  _modelVarsOwned = (RooArgSet*) model.conv().cloneModel().getObservables(&vars)->snapshot(kTRUE) ;
  _modelVars = new RooArgSet(*_modelVarsOwned) ;
  _convVarName = model.conv().cloneVar().GetName() ;
  _modelGen = ((RooAbsPdf&)model.conv().cloneModel()).genContext(*_modelVars,prototype,auxProto,verbose) ;
  _modelCloneSet = 0 ;

  if (prototype) {
    _pdfVars->add(*prototype->get()) ;
    _modelVars->add(*prototype->get()) ;  
  }
}



//_____________________________________________________________________________
RooConvGenContext::RooConvGenContext(const RooFFTConvPdf &model, const RooArgSet &vars, 
	 			     const RooDataSet *prototype, const RooArgSet* auxProto, Bool_t verbose) :
  RooAbsGenContext(model,vars,prototype,auxProto,verbose)
{
  // Constructor for specialized generator context for FFT numerical convolutions.
  // 
  // Builds a generator for the physics PDF convoluted with the truth model
  // and a generator for the resolution model as PDF. Events are generated
  // by sampling events from the p.d.f and smearings from the resolution model
  // and adding these to obtain a distribution of events consistent with the
  // convolution of these two. The advantage of this procedure is so that
  // both p.d.f and resolution model can take advantage of any internal
  // generators that may be defined.

  cxcoutI(Generation) << "RooConvGenContext::ctor() setting up special generator context for fft convolution p.d.f. " << model.GetName() 
			<< " for generation of observable(s) " << vars << endl ;

  _convVarName = model._x.arg().GetName() ;

  // Create generator for physics model
  _pdfCloneSet = (RooArgSet*) RooArgSet(model._pdf1.arg()).snapshot(kTRUE) ;
  RooAbsPdf* pdfClone = (RooAbsPdf*) _pdfCloneSet->find(model._pdf1.arg().GetName()) ;
  RooRealVar* cvPdf = (RooRealVar*) _pdfCloneSet->find(model._x.arg().GetName()) ;
  cvPdf->removeRange() ;
  RooArgSet* tmp1 = pdfClone->getObservables(&vars) ;
  _pdfVarsOwned = (RooArgSet*) tmp1->snapshot(kTRUE) ;
  _pdfVars = new RooArgSet(*_pdfVarsOwned) ;
  _pdfGen = pdfClone->genContext(*_pdfVars,prototype,auxProto,verbose) ;  

  // Create generator for resolution model
  _modelCloneSet = (RooArgSet*) RooArgSet(model._pdf2.arg()).snapshot(kTRUE) ;
  RooAbsPdf* modelClone = (RooAbsPdf*) _modelCloneSet->find(model._pdf2.arg().GetName()) ;
  RooRealVar* cvModel = (RooRealVar*) _modelCloneSet->find(model._x.arg().GetName()) ;
  cvModel->removeRange() ;
  RooArgSet* tmp2 = modelClone->getObservables(&vars) ;
  _modelVarsOwned = (RooArgSet*) tmp2->snapshot(kTRUE) ;
  _modelVars = new RooArgSet(*_modelVarsOwned) ;
  _modelGen = modelClone->genContext(*_pdfVars,prototype,auxProto,verbose) ;  

  delete tmp1 ;
  delete tmp2 ;

  if (prototype) {
    _pdfVars->add(*prototype->get()) ;
    _modelVars->add(*prototype->get()) ;  
  }
}



//_____________________________________________________________________________
RooConvGenContext::~RooConvGenContext()
{
  // Destructor

  // Destructor. Delete all owned subgenerator contexts
  delete _pdfGen ;
  delete _modelGen ;
  delete _pdfCloneSet ;
  delete _modelCloneSet ;
  delete _modelVars ;
  delete _pdfVars ;
  delete _pdfVarsOwned ;
  delete _modelVarsOwned ;
}



//_____________________________________________________________________________
void RooConvGenContext::attach(const RooArgSet& args) 
{
  // Attach given set of arguments to internal clones of
  // pdf and resolution model

  // Find convolution variable in input and output sets
  RooRealVar* cvModel = (RooRealVar*) _modelVars->find(_convVarName) ;
  RooRealVar* cvPdf   = (RooRealVar*) _pdfVars->find(_convVarName) ;

  // Replace all servers in _pdfVars and _modelVars with those in theEvent, except for the convolution variable  
  RooArgSet* pdfCommon = (RooArgSet*) args.selectCommon(*_pdfVars) ;
  pdfCommon->remove(*cvPdf,kTRUE,kTRUE) ;

  RooArgSet* modelCommon = (RooArgSet*) args.selectCommon(*_modelVars) ;
  modelCommon->remove(*cvModel,kTRUE,kTRUE) ;

  _pdfGen->attach(*pdfCommon) ;
  _modelGen->attach(*modelCommon) ;  

  delete pdfCommon ;
  delete modelCommon ;
}


//_____________________________________________________________________________
void RooConvGenContext::initGenerator(const RooArgSet &theEvent)
{
  // One-time initialization of generator context, attaches
  // the context to the supplied event container

  // Find convolution variable in input and output sets
  _cvModel = (RooRealVar*) _modelVars->find(_convVarName) ;
  _cvPdf   = (RooRealVar*) _pdfVars->find(_convVarName) ;
  _cvOut   = (RooRealVar*) theEvent.find(_convVarName) ;

  // Replace all servers in _pdfVars and _modelVars with those in theEvent, except for the convolution variable  
  RooArgSet* pdfCommon = (RooArgSet*) theEvent.selectCommon(*_pdfVars) ;
  pdfCommon->remove(*_cvPdf,kTRUE,kTRUE) ;
  _pdfVars->replace(*pdfCommon) ;
  delete pdfCommon ;

  RooArgSet* modelCommon = (RooArgSet*) theEvent.selectCommon(*_modelVars) ;
  modelCommon->remove(*_cvModel,kTRUE,kTRUE) ;
  _modelVars->replace(*modelCommon) ;
  delete modelCommon ;

  // Initialize component generators
  _pdfGen->initGenerator(*_pdfVars) ;
  _modelGen->initGenerator(*_modelVars) ;
}



//_____________________________________________________________________________
void RooConvGenContext::generateEvent(RooArgSet &theEvent, Int_t remaining)
{
  // Generate a single event 

  while(1) {

    // Generate pdf and model data
    _modelGen->generateEvent(*_modelVars,remaining) ;
    _pdfGen->generateEvent(*_pdfVars,remaining) ;    
    
    // Construct smeared convolution variable
    Double_t convValSmeared = _cvPdf->getVal() + _cvModel->getVal() ;
    if (_cvOut->isValidReal(convValSmeared)) {
      // Smeared value in acceptance range, transfer values to output set
      theEvent = *_modelVars ;
      theEvent = *_pdfVars ;
      _cvOut->setVal(convValSmeared) ;
      return ;
    }
  }
}



//_____________________________________________________________________________
void RooConvGenContext::setProtoDataOrder(Int_t* lut)
{
  // Set the traversal order for events in the prototype dataset
  // The argument is a array of integers with a size identical
  // to the number of events in the prototype dataset. Each element
  // should contain an integer in the range 1-N.

  RooAbsGenContext::setProtoDataOrder(lut) ;
  _modelGen->setProtoDataOrder(lut) ;
  _pdfGen->setProtoDataOrder(lut) ;
}


//_____________________________________________________________________________
void RooConvGenContext::printMultiline(ostream &os, Int_t content, Bool_t verbose, TString indent) const 
{
  // Print the details of this generator context

  RooAbsGenContext::printMultiline(os,content,verbose,indent) ;
  os << indent << "--- RooConvGenContext ---" << endl ;
  os << indent << "List of component generators" << endl ;

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