Comments (4)
This feature request is open for discussion
from qntools.
Good suggestion! I am very much in favour of implementing such a feature!
I have some rather technical questions:
-
If variations are part of the
StatCalculate
object and are therefore propagated through the calculations, we need to make sure that either allStatCalculate
objects which are part of the calculation of the observable include this variations, or it falls back to the reference if the variation is not found (e.g. when calculating a ratio and the variation is only present in the numerator). -
I guess it would be good to have a new base class so we do not have a recursive relation in the
StatsCalculate
object. I am not sure if a variation of a variation makes sense. -
We need to think about how to add new methods to
DataContainer<StatsCalculate>
objects. Right now we add the functionality by hand through template specialisation in the DataContainer header file. We might need many methods in future ... I haven't really though about how to solve this problem.
from qntools.
- I don't think we need to propagate systematics through the arithmetic operations (maybe for unary only). I guess (hope) we'll use this machinery on flow coefficients which are kinda final-state objects and shouldn't be modified anymore. If some operation is needed, user shall perform this operation upon all variations and then take care on systematics.
- I agree with you statement on 'variation of variation', but making the new entity requires many auxiliary objects to be introduced: all ToTGraph-s, conversions from/to StatCalculate, etc.
- Are you talking about polymorphic
DataContainer<T>
interface which depends onT
?
from qntools.
-
For example: <Q_A2, Q_2B> / R{Q_2B}, where the numerator is the observed flow and the denominator is the resolution correction. Would the systematic variations be added before calculation of this ratio or afterward.
If they are added before, we would need to treat it correctly when dividing. For example, a case could be where a systematic variation only affects the sub event A and not sub event B. If this is not included it should prevent calculations from happening after variations are added.
I would be in favour of including the "propagation of the variations" this functionality, as it would cover most of the systematic variations that I encountered.
I am open to discussing this in more detail. -
Yes that is true. Let's think what would make more sense. Maybe we could visualise the structure of the classes to help us decide.
-
I have to think about it I don't know how to solve it. I am open to ideas. I am referring to the template specialisations for example the lines starting at:
from qntools.
Related Issues (20)
- QnTools with old ROOT HOT 3
- Dedicated flag for switching on/of tests
- QnTools as a subproject (subdirectory)
- Backward compatibility
- New correlation weights management HOT 1
- Missing includes
- Problem with Bootstrap error in Qn::DataContainerStatCalculate HOT 2
- Segfault on destruction of CorrectionManager HOT 2
- AverageHelper: crash during Finalize HOT 3
- QnTools - correction logic HOT 7
- cumulants with particle weights.
- Problem with selection bins on axis with non-uniform-width binning HOT 4
- Non-uniform binnning for the QA histograms
- Qn::ToTGraph, counter is not incremented if Sumw <= 0
- nan values from StatCalculate::StdDevOfMeanFromBootstrapVariance HOT 1
- Deprecation of TROOT::GetImplicitMTPoolSize HOT 3
- Bootstrapping enhancements HOT 1
- googletest master->main HOT 1
- Improper use of the std::array::empty HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from qntools.