Skip to content

Add new struct FkTable #68

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

Closed
cschwan opened this issue Jul 28, 2021 · 5 comments
Closed

Add new struct FkTable #68

cschwan opened this issue Jul 28, 2021 · 5 comments
Assignees

Comments

@cschwan
Copy link
Contributor

cschwan commented Jul 28, 2021

Add a new struct FkTable, which is a special case of Grid, but

  • has a single scale Q^2 for all Subgrids
  • guarantees that the x1 and x2 grids are the same for each Subgrid
  • has a simplified luminosity function, in the sense that each combination of initial-states appears only once
  • has exactly one order, with all powers set to zero, because all powers are added on top with each other with the right powers in the strong coupling constant
  • must contain the following metadata:
    • initial_state_1 and initial_state_2 are implicitly set to 2212 (proton) if not present in Grid, but for FkTable they must be explicitly set
    • lumi_id_types which is either pdg_mc_ids if the luminosity function uses MC PDG IDs (for the flavour basis), or evo_basis_ids for the evolution basis, which has the following possible ids: 21 (gluon), 22 (photon), 100 (V), 103 (V3), 108 (V8), 115 (V15), 124 (V24), 135 (V35), 200 (sigma), 203 (T3), 208 (T8), 215 (T15), 224 (T24) and 235 (T35)
    • more metadata to explicitly specify the evolution kernel operators that were used to produce the FkTable
  • must not contain any K-factors, which instead are built into table
@cschwan cschwan self-assigned this Jul 28, 2021
@alecandido
Copy link
Member

I agree this will simplify the interaction at boundaries (both eko and fit).

The moment you provide the implementation we can migrate the python interface, but there is not so much to actually migrate: being a special case of Grid will provide a similar API, so we can just test and fix few incompatibilities.

Personal interest: being that there is no inheritance, how are you going to implement this structure? My natural answer would have been to promote the API to a trait (with some default implementations), and have two trait implementers, but doing this a posteriori would require a massive code rework (and after all it's an approximation to subclassing, I'm too used to it...).

@cschwan
Copy link
Contributor Author

cschwan commented Jul 29, 2021

Personal interest: being that there is no inheritance, how are you going to implement this structure? My natural answer would have been to promote the API to a trait (with some default implementations), and have two trait implementers, but doing this a posteriori would require a massive code rework (and after all it's an approximation to subclassing, I'm too used to it...).

Like this 😄 :

struct FkTable {
    table: Grid,
}

@alecandido
Copy link
Member

That's a fair solution. Simple and effective 👌
Maybe inheritance might have been more suitable for the task, nevertheless it's bad that I feel lost without.

@cschwan
Copy link
Contributor Author

cschwan commented Aug 17, 2021

I added a first implementation in commit 497a446.

@cschwan
Copy link
Contributor Author

cschwan commented Sep 9, 2021

Implemented in the pyo3 branch: #51.

@cschwan cschwan closed this as completed Sep 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants