8#ifndef MODULES_KINEMATIC_KINEMATICMODULE_H_
9#define MODULES_KINEMATIC_KINEMATICMODULE_H_
11#include <partons/beans/channel/ChannelType.h>
12#include <ElementaryUtils/string_utils/Formatter.h>
16#include "../EpicModuleObject.h"
17#include "../../beans/containers/KinematicRange.h"
24class ExperimentalConditions;
36template <
typename KinematicRangeType,
typename KinematicType>
54 const KinematicType &kin) = 0;
61 const KinematicType &kin) = 0;
72 PARTONS::ChannelType::Type channelType)
81 void changeKinematicRange(
KinematicRange& range,
bool isMin,
double value,
const std::string& name,
double divisionFactor = 10)
const {
91 warn(__func__, ElemUtils::Formatter() <<
"Range for variable " << name <<
" changed from " << old.toString() <<
" to " << range.toString());
Testable version of PARTONS::ModuleObject.
Definition: EpicModuleObject.h:26
Single event.
Definition: Event.h:36
Container to store experimental conditions.
Definition: ExperimentalConditions.h:29
Template for kinematic module.
Definition: KinematicModule.h:37
KinematicModule(const KinematicModule &other)
Definition: KinematicModule.h:79
virtual Event evaluate(const ExperimentalConditions &conditions, const KinematicType &kin)=0
virtual bool checkIfValid(const ExperimentalConditions &conditions, const KinematicType &kin)=0
virtual ~KinematicModule()
Definition: KinematicModule.h:43
virtual std::vector< KinematicRange > getKinematicRanges(const ExperimentalConditions &conditions, const KinematicRangeType &ranges)=0
KinematicModule(const std::string &className, PARTONS::ChannelType::Type channelType)
Definition: KinematicModule.h:71
Container to store a single kinematic range.
Definition: KinematicRange.h:29
void setMinMax(double min, double max)