1 #ifndef __JAANET__JEVTCATEGORYMAP__ 
    2 #define __JAANET__JEVTCATEGORYMAP__ 
   29 #include "JAAnet/JFluxDictionary.hh" 
   53     public std::map<JEvtCategoryHelper, T>
 
   95     template<
class ...Args>
 
   98                     const Args&            ...
args) :
 
  114       map_type::insert(std::make_pair(category, value));
 
  125     template<
class ...Args>
 
  154     public std::map<JEvtCategoryHelper, JEvtWeightFactorProduct>,
 
  155     public JClonable<JEvtWeightFactor, JEvtCategoryMap<JEvtWeightFactorProduct> >  
 
  212     template<
class ...Args>
 
  216                     const Args&                ...
args) :
 
  247     template<
class ...Args>
 
  250                     const Args&                ...
args) :
 
  269       if (i != this->end()) {
 
  270         i->second.join(product);
 
  272         map_type::insert(std::make_pair(category, product));
 
  288       if (i == this->end()) {
 
  292         map_type::insert(std::make_pair(category, product));
 
  296         i->second.push_back(factor);
 
  308     template<
class ...Args>
 
  326       for (
const_iterator i = 
object.cbegin(); i != 
object.cend(); ++i) {
 
  330         if (
j != this->end()) {
 
  331           j->second.join(i->second);
 
  333           this->
insert(j->first, 
j->second);
 
  351       for (
typename map_type::const_iterator i = this->cbegin(); i != this->cend(); ++i) {
 
  352         if (i->first.match(evt)) {
 
  353           return i->second.getFactor(evt);
 
  357       THROW(
JValueOutOfRange, 
"JEvtCategoryMap<JEvtWeightFactorHelper>::getFactor(): No event-weight factor for given event.");
 
  368       for (
typename map_type::const_iterator i = this->cbegin(); i != this->cend(); ++i) {
 
  369         if (!i->second.is_valid()) { 
return false; }
 
  383       return JEvtCategoryMapHelper(*
this, eqpars);
 
  394       return JEvtCategoryMapHelper(*
this, eqpars);
 
  404     std::istream& 
read(std::istream& in) 
override final 
  415       for (
JToken<';'> token1, token2; is >> token1 >> token2; ) {
 
  417         istringstream iss1(token1); 
 
  423         istringstream iss2(token2); 
 
  431           for (JEvtCategorySet::const_iterator i = categories.cbegin(); i != categories.cend(); ++i) {
 
  432             this->
insert(*i, factors);
 
  447     std::ostream& 
write(std::ostream& out) 
const override final 
  461     struct JEvtCategoryMapHelper :
 
  470       template<
class JEvtCategoryMap_type>
 
  478         for (
typename map_type::const_iterator i = 
map.cbegin(); i != 
map.cend(); ++i) {
 
  482           const string key = 
MAKE_STRING(
"category" << index);
 
  484           JProperties properties1 = i->first .getProperties();
 
  485           JProperties properties2 = i->second.getProperties();
 
  487           (*this)[key] = properties1.
join(properties2);
 
  513     public std::map<JEvtCategoryHelper, JFluxHelper>,
 
  514     public JClonable<JFlux, JEvtCategoryMap<JFluxHelper> >  
 
  572     template<
class ...Args>
 
  576                     const Args&            ...
args) :
 
  607     template<
class ...Args>
 
  610                     const Args&            ...
args) :
 
  626       map_type::insert(std::make_pair(category, 
flux));
 
  637     template<
class ...Args>
 
  657       for (
typename map_type::const_iterator i = this->cbegin(); i != this->cend(); ++i) {
 
  658         if (i->first.match(evt)) {
 
  659           return i->second.getFactor(evt);
 
  663       THROW(
JValueOutOfRange, 
"JEvtCategoryMap<JFluxHelper>::getFactor(): No flux factor for given event.");
 
  674       for (
typename map_type::const_iterator i = this->cbegin(); i != this->cend(); ++i) {
 
  675         if (!(i->second.is_valid())) { 
return false; }
 
  689       return JEvtCategoryMapHelper(*
this, eqpars);
 
  700       return JEvtCategoryMapHelper(*
this, eqpars);
 
  710     std::istream& 
read(std::istream& in) 
override final 
  715       static const JFluxDictionary dictionary(oscProb);
 
  723       for (
JToken<';'> token1, token2; is >> token1 >> token2; ) {
 
  725         istringstream iss1(token1); 
 
  731         istringstream iss2(token2); 
 
  735         if (iss2 >> fluxID) {
 
  737           JFluxHelper helper(dictionary.at(fluxID).getFlux());
 
  744             for (JEvtCategorySet::const_iterator i = categories.cbegin(); i != categories.cend(); ++i) {
 
  761     std::ostream& 
write(std::ostream& out) 
const override final 
  775     struct JEvtCategoryMapHelper :
 
  784       template<
class JEvtCategoryMap_type>
 
  792         for (
typename map_type::const_iterator i = 
map.cbegin(); i != 
map.cend(); ++i) {
 
  796           const string key = 
MAKE_STRING(
"category" << index);
 
  801           (*this)[key] = sub1.
join(sub2);
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
Classes and methods for defining muon bundle categories.
 
Classes and methods for defining neutrino interaction categories.
 
I/O formatting auxiliaries.
 
#define MAKE_STRING(A)
Make string.
 
Utility class to parse parameter values.
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Template specialisation for a map between event categories and event-weight factor products.
 
JProperties getProperties(const JEquationParameters &eqpars) override final
Get properties of this class.
 
bool is_valid() const override final
Check whether this event-weight factor is valid.
 
JProperties getProperties(const JEquationParameters &eqpars) const override final
Get properties of this class.
 
JEvtCategoryMap(const JOscProbHelper &oscProb, const JEvtCategoryHelper &category, const JEvtWeightFactorHelper &factor)
Constructor.
 
std::map< JEvtCategoryHelper, JEvtWeightFactorProduct > map_type
 
JEvtCategoryMap(const JOscProbHelper &oscProb)
Constructor.
 
JEvtCategoryMap_t & join(const JEvtCategoryMap_t &object)
Join this map between event categories and weight factors with a given map between event categories a...
 
JEvtCategoryMap< JEvtWeightFactorProduct > JEvtCategoryMap_t
 
JOscProbHelper oscProb
oscillation probability calculator
 
std::ostream & write(std::ostream &out) const override final
Write event-weight factor to output.
 
map_type::const_iterator const_iterator
 
double getFactor(const Evt &evt) const override final
Get weight factor of given event.
 
std::istream & read(std::istream &in) override final
Read map between event categories and event-weight factors.
 
map_type::iterator iterator
 
void insert(const JEvtCategoryHelper &category, const JEvtWeightFactorHelper &factor)
Insert event category.
 
JEvtCategoryMap()
Default constructor.
 
JEvtCategoryMap(const JOscProbHelper &oscProb, const JEvtCategoryHelper &category, const JEvtWeightFactorHelper &factor, const Args &...args)
Constructor.
 
void insert(const JEvtCategoryHelper &category, const JEvtWeightFactorProduct &product)
Insert pair of an event category and a product of event-weight factors.
 
JEvtCategoryMap(const JEvtCategoryHelper &category, const JEvtWeightFactorHelper &factor, const Args &...args)
Constructor.
 
void insert(const JEvtCategoryHelper &category, const JEvtWeightFactorHelper &factor, const Args &...args)
Insert pairs of event categories and event-weight factors.
 
JEvtCategoryMap(const JEvtCategoryHelper &category, const JEvtWeightFactorHelper &factor)
Constructor.
 
Template specialisation for a map between event categories and flux factors.
 
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) const override final
Get properties of this class.
 
JEvtCategoryMap(const JEvtCategoryHelper &category, const JFluxHelper &flux, const Args &...args)
Constructor.
 
bool is_valid() const override final
Check whether this flux factor is valid.
 
void insert(const JEvtCategoryHelper &category, const JFluxHelper &flux, const Args &...args)
Insert pairs of event categories and flux functions.
 
JEvtCategoryMap(const JOscProbHelper &oscProb)
Constructor.
 
std::map< JEvtCategoryHelper, JFluxHelper > map_type
 
JOscProbHelper oscProb
oscillation probability calculator
 
std::istream & read(std::istream &in) override final
Read map between event categories and flux factors.
 
map_type::const_iterator const_iterator
 
std::ostream & write(std::ostream &out) const override final
Write event-weight factor to output.
 
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) override final
Get properties of this class.
 
void insert(const JEvtCategoryHelper &category, const JFluxHelper &flux)
Insert pair of an event category and a flux function.
 
JEvtCategoryMap(const JOscProbHelper &oscProb, const JEvtCategoryHelper &category, const JFluxHelper &factor)
Constructor.
 
JEvtCategoryMap(const JEvtCategoryHelper &category, const JFluxHelper &flux)
Constructor.
 
map_type::iterator iterator
 
JEvtCategoryMap(const JOscProbHelper &oscProb, const JEvtCategoryHelper &category, const JFluxHelper &factor, const Args &...args)
Constructor.
 
JEvtCategoryMap< JFluxHelper > JEvtCategoryMap_t
 
JEvtCategoryMap()
Default constructor.
 
double getFactor(const Evt &evt) const override final
Get weight factor of given event.
 
Auxiliary class for reading a map of event categories.
 
void insert(const JEvtCategoryHelper &category, const T &value)
Insert pair of event category and value.
 
map_type::iterator iterator
 
JEvtCategoryMap()
Default constructor.
 
JEvtCategoryMap(const JEvtCategoryHelper &category, const T &value, const Args &...args)
Constructor.
 
void insert(const JEvtCategoryHelper &category, const T &value, const Args &...args)
Insert pairs of event categories and values.
 
JEvtCategoryMap(const JEvtCategoryHelper &category, const T &value)
Constructor.
 
std::map< JEvtCategoryHelper, T > map_type
 
map_type::const_iterator const_iterator
 
JEvtCategoryMap< T > JEvtCategoryMap_t
 
Utility class to parse parameter values.
 
JProperties & join(const JProperties &properties)
Join properties objects.
 
Simple data structure to support I/O of equations (see class JLANG::JEquation).
 
Wrapper class around STL stringstream class to facilitate optional loading of data from file.
 
void load()
Load data from file with name corresponding to current contents.
 
Wrapper class around string.
 
Exception for accessing a value in a collection that is outside of its range.
 
Extensions to Evt data format.
 
JProperties & getProperties(T &object, const JEquationParameters ¶meters=JEquationParameters(), const int debug=1)
Get properties of a given object.
 
bool fail(std::istream &in)
Check for stream state.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
static JStat getFileStatus
Function object for file status.
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
 
Helper class for event categories.
 
JEvtCategoryMapHelper(JEvtCategoryMap_type &map, const JEquationParameters &eqpars)
Constructor.
 
JEvtCategoryMapHelper(JEvtCategoryMap_type &map, const JEquationParameters &eqpars)
Constructor.
 
Container for a set of event categories.
 
Helper class for event-weight factor.
 
Class for product of event-weight factors.
 
static JEquationParameters & getEquationParameters()
Get equation parameters.
 
Helper class for flux function.
 
JFlux & getFlux() const
Get reference to flux function.
 
Low-level interface for retrieving the flux corresponding to a given event.
 
Template class for object cloning.
 
Helper class for oscillation probabilities.