-
Notifications
You must be signed in to change notification settings - Fork 7
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
Add a library of process dependent options #1949
Add a library of process dependent options #1949
Conversation
8057378
to
efc3d74
Compare
Ok, this is now ready. Not sure if it will pass the test, it might be missing some The idea is that we can move forward without having to wait for people to implement the relevant stuff for every process. @andreab1997 thanks for offering to help with this, in principle we need a process type for jets / dijets / ttbar so that the data in master is ok and it would be great if you also add one for herajet / heradijet for @t7phy's dis+j |
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 can already foresee that this will become a module rather then just a file ... i.e. I would move _dis_xq2map
and DIS
to process_options/dis.py
etc.
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.
Eventually we can. The file should be treated as a module indeed.
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'd say it is time 🙃
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.
The problem is that we have a lot of DIS_XYZ
that are basically equivalent so it is not clear what should be its own module and that shouldn't.
There would be a lot of files with one line that seems confusing to me.
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 agree and I wouldn't make one file for one process, but e.g. all the fully inclusive DIS and the ttbar stuff can go together
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.
nono, I mean all the fully inclusive DIS in one file and all the ttbar together in a separate one
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.
ah, okok
right, we can separate by commondata process indeed since they should always branch from there.
I'll do that when I finish creating all other xq2 map (it should be possible to copy automatically all the ones that use k1/k2/k3)
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 would suggest e.g.:
fully_inclusive_dis.py
-> DIS,DIS_NC,DIS_CC,DIS_NCEherajet.py
-> HERAJET, HERADIJEThqp.py
-> HQP_YQ, HQP_YQQ, HQP_PTQ
if that corresponds to CD process (not sure) (names are place holders)
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.
The cd processes should be DIS
, Z0
, WPWM
, TTBAR
, JETS
, DIJETS
some might be the same, but that way someone reading the commondata file knows immediately inside which file they should look (or maybe options_dis.py
the name of the file is less important).
Right now, specially the ttb and vector boson ones are a mess to find.
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 think grouping by cd process is a good idea. And then inside DIJETS
one can always do from JETS import HERAJET
42b3989
to
b7b8424
Compare
efc3d74
to
6c406fd
Compare
955f054
to
bb57fe2
Compare
6c406fd
to
980f671
Compare
bb57fe2
to
6d05ace
Compare
980f671
to
d233f17
Compare
6d05ace
to
c5bee75
Compare
d233f17
to
5773393
Compare
1be7e8d
to
3aefd4a
Compare
5a5d287
to
a626d1b
Compare
d8c7f5d
to
1a8bf48
Compare
Greetings from your nice fit 🤖 !
Check the report carefully, and please buy me a ☕ , or better, a GPU 😉! |
1a8bf48
to
7e6599a
Compare
The fitbot there act as a check that old theories can still be used (the fitbot uses theory 200... it will soon be changed to theory 700). There are small changes in the fitbot (while the regression tests have not changed) because there are some dataset for which the precision of the data has changed (e.g., we had 4 digits before and now have 5), but it is only a few LHCB and maybe maybe jets, so it doesn't show up in any regression. I will submit another fitbot just before the merge to update the reference bot. This is a comparison to the last baseline ( And this one is the same fit but this time the names of the runcard have also been updated: https://vp.nnpdf.science/QaBlf8XvSmSe8UWMvzIy3g== In both cases they are <60 replica fits. The fits have been done with this commit 1a8bf48 which corresponds to this one 7e6599a before the rebase on top of the last batch of comments in the other branch. |
Thanks for doing this check. I can't see anything that hints at a bug |
07cf9e1
into
final_reader_for_new_commondata_mk2
Right now, how validphys understands the data depends on how the process is defined.
This is done in various different places:
For cuts in
filters.py
:nnpdf/validphys2/src/validphys/filters.py
Line 19 in f9e8c4b
For labels in the (old) parser:
nnpdf/validphys2/src/validphys/commondataparser.py
Line 17 in f9e8c4b
How to create the xq2map depends on the kinematic transformation:
nnpdf/validphys2/src/validphys/plotoptions/kintransforms.py
Line 72 in f9e8c4b
And there's somewhere also a list of process description labels.
Then there's DIS which can be DIS_NC, DIS_CC, DIS_ALL but sometimes they are considered equal sometimes they are not.
etc
That was a result of things done in several iterations and the necessity of producing results so we never had the time to sit down and put everything together in a sensible manner.
Now with the new commondata format, while there is a lot of stuff which is based on the old ways (kinematics and results transformations scattered around the code). We have an opportunity to start doing things well instead of adding yet another point of chaos.
Not only we have an opportunity but we have a necessity since right now the xQ2 plot is broken for ttbar and it there is no process type for DIS+J #1825
Note that some of the previous ones are redundant in the new format. No need for results transformations or custom labels because the person implementing the data can decide which kinematics variables to implement, plot and cut upon. The only important thing is the variables can be understood for the given process.
My proposal here is the following: create one single library of
process_options.py
which will collect all process-dependent options.Newly implemented data will be using this. The only public interface of this module is the
Processes
enum. When a dataset is loaded, the process type will be read and check against the accepted variables for that process. If it works, it's all ok. If it doesn't, the person implementing the dataset will need to either add a way for the process to understand the new one or choose a different set of variables.I've put a DIS example which covers a few of the situations that we would find.
I haven't put this directly on the reader because this is just a proposal I came up with.
The only other option I can think of is that we embrace the chaos but that would require either restricting new data to the same set of variables that old data used or including the necessary variables for the x-Q2 mapping into the dataset.