20 #include <TDatabasePDG.h>
39 const TString& resolutionFunction,
int genre) {
49 f.GetString().c_str(), -1e15, 1.e16);
58 , mKinematicFunction(NULL)
67 , mKinematicFunction(NULL)
69 Init(variable, resolution, genre);
74 , mSmeared(that.mSmeared)
75 , mKinematicFunction(NULL)
77 , mDimensions(that.mDimensions) {
105 std::vector<double>
args;
106 for (
unsigned i(0); i < vars.size(); ++i) {
115 if (
false &&
abs(prt.
Id())==11){
117 std::cout <<
" ====================== mSmeared = " <<
mSmeared << std::endl;
119 std::cout <<
" orig eta = " << prt.
GetEta()<< std::endl;
120 std::cout <<
"unsmeared " << unsmeared << std::endl;
121 std::cout <<
"resolution " << resolution << std::endl;
122 std::cout <<
"smeared " << smeared << std::endl;
123 std::cout <<
"mSmeared " <<
mSmeared << std::endl;
127 std::cerr <<
"Formula = " <<
mKinematicFunction->GetFormula()->GetExpFormula() << std::endl;
140 if ( std::isnan(
GetVariable (out,
mSmeared ) ) ) cout <<
"Problem. smeared is " << smeared <<
" but propagated nan in " <<
mSmeared<< endl;
150 std::cout <<
"Device smearing " << name <<
" with sigma(" << name <<