-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Analytic initialisation #41
base: main
Are you sure you want to change the base?
Conversation
It looks like if only one operator is used in the fit and the analytic initialisation is used, the code is not working. I get the error message
Things are fine if I run with a different initialisation. |
Fixed now! |
…net_release into analytic_initialisation
@J-M-Moore I am getting a KeyError:
Do you know what is going on? |
I think it is to do with cuts, I will fix it |
It was to do with cuts, it is fixed now :) |
…ncluded as BSM sets in fit
…ation, just to see what we should be getting
[ERROR]: Bad configuration encountered:
|
I think it is important that we can still run a standard runcard on this branch without having to specify anything on analytic initialisation. So I think there should be some default values used when things like |
Something is wrong with the scales, if they are different from 1.0, they affect both the initialisation and the final writing, making the automatic initialisation not usable. |
I pushed a small fix, in which the scales multiply the initialisation values, not divide. I think this was the source of the problem as now things seem to be working no matter the value of the scales. If the values from the table are divided by the scale, the Wilson coefficient needs to be multiplied, so that the theoretical prediction given by This was not introduced in this PR, when initialising in 0 we were not noticing the problem, other kind of initialisation were affected. |
if num_initial > 0: | ||
initial_values = tf.concat(initial_values, 0) | ||
initial_values = tf.math.divide(initial_values, self.scales) | ||
initial_values = tf.math.multiply(initial_values, self.scales) | ||
|
||
if num_initial > 0: | ||
initial_values = tf.concat(initial_values, 0) | ||
initial_values = tf.reshape(initial_values, (num_initial,)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand why here there is the same if statement done twice, can't it all be done in one single if?
This PR adds the option to initialise the simu parameters to their analytic minimum. Currently uses the analytic minimum of the chi2 evaluated on the experimental dataset, but allows for any user-defined PDF set to produce the predictions (which can be different from the fixed PDF used in a fixed PDF fit).