IInteractionChainReweighting.h
Go to the documentation of this file.
1 #ifndef IINTERACTIONCHAINREWEIGHTING_H
2 #define IINTERACTIONCHAINREWEIGHTING_H
3 
4 #include "InteractionChainData.h"
5 #include "ParameterTable.h"
6 #include <vector>
7 
8 namespace NeutrinoFluxReweight{
9 
10  /*! \class InteractionChainReweightingInterface
11  * \brief The interface for classes that reweight a chain of interactions, as needed for MIPP.
12  *
13  * There is a 1 to 1 mapping between instances of IInteractionChainReweighting classes and universes (i.e., one object per universe.
14  * The constructor for these classes should look like myChainReweighting( ParameterTable& cv_pars, ParameterTable& univ_pars);
15  *
16  */
18  public:
19 
21 
22  //! Look through the InteractionChainData input and identify those Interactions that can be reweighted as part of a chain. We return a vector indicating which elements will be assigned a weight by calculateWeight
23  virtual std::vector<bool> canReweight(const InteractionChainData&) = 0;
24 
25  //! calculate a weight for this interaction chain given the central value parameters and the parameters for this universe. The weight is something like: f(cv)/f(MC) * f(univ)/f(cv) where cv in this case corresponds to the best value of the parameter, given the data. If univ_pars=cv_pars then we are calculating a central value weight. Note, canReweight() should be called to determine which elements of the chain are covered by the weight returned by calculateWeight()
26  virtual double calculateWeight(const InteractionChainData&) =0;
27 
28  };
29 
30 }
31 #endif
Information about the chain of interactions leading to a neutrino.
virtual std::vector< bool > canReweight(const InteractionChainData &)=0
Look through the InteractionChainData input and identify those Interactions that can be reweighted as...
virtual double calculateWeight(const InteractionChainData &)=0
calculate a weight for this interaction chain given the central value parameters and the parameters f...