TVirtualFitter - Length of Parameter's Name

From: Kirsten Schnorr <Kirsten.Schnorr_at_gmx.de>
Date: Sat, 22 Aug 2009 12:40:22 +0200


Hey Rootlings,

I'm not sure whether this is actually a bug or me not being able to read the documentation... But I think I should report it anyway. I'm using ROOT 5.18.00. I recently used Minuit2 (to fit data with a gaussian signal and a first order polynomial background) like this:

	TVirtualFitter::SetDefaultFitter("Minuit2");
	TVirtualFitter *fitter = TVirtualFitter::Fitter(0, 3);

At first my parameter declaration looked like that (there were more, but as an example):

	fitter->SetParameter(1, "background slope", 0, 0.1, 0, 0);
	fitter->SetParameter(2, "signal variance", 15, 0.1, 0, 0);

That worked. I wanted to add limits, though. When I did I received the error:

	ROOT::Minuit2::MnUserTransformation::Index(const char*)
	const: Assertion `ipar != fParameters.end()' failed.

I didn't really know what that should tell me, tried a little and gave up on that for a moment. While trying other things I noticed that the output of the parameter's names was cut off. I thought that was just how the output is formated and that it was not really important. Nevertheless I shortened the names for better readability.

Later I wanted to get the limits working and magically they just worked. I did some guesses on what change actually made them work and found the length of the parameter name mustn't be more than 10 characters. This sheds some light on what the error means, too, I suppose...

Is this actually a bug? If so is it already known/addressed in newer versions?
If not maybe one should (as a quick workaround) add another assertion on the string length, so atleast the error actually says what's wrong and not some indexing things!?
If it is already fixed I hope atleast people using older versions of root having the same problem can now google it ;)

Best Regards,

Kirsten Received on Sat Aug 22 2009 - 12:40:28 CEST

This archive was generated by hypermail 2.2.0 : Sat Aug 22 2009 - 17:50:02 CEST