File indexing completed on 2026-06-02 08:51:47
0001 #ifndef DVMP_OBSERVABLE_H
0002 #define DVMP_OBSERVABLE_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <ElementaryUtils/parameters/Parameters.h>
0012 #include <map>
0013 #include <string>
0014
0015 #include "../../../beans/automation/BaseObjectData.h"
0016 #include "../../../beans/gpd/GPDType.h"
0017 #include "../../../beans/List.h"
0018 #include "../../../beans/observable/DVMP/DVMPObservableKinematic.h"
0019 #include "../../../beans/observable/DVMP/DVMPObservableResult.h"
0020 #include "../../../utils/type/PhysicalType.h"
0021 #include "../Observable.h"
0022
0023 namespace PARTONS {
0024 class DVMPProcessModule;
0025 }
0026
0027 namespace PARTONS {
0028
0029
0030
0031
0032
0033
0034 class DVMPObservable: public Observable<DVMPObservableKinematic,
0035 DVMPObservableResult> {
0036
0037 public:
0038
0039 static const std::string DVMP_OBSERVABLE_MODULE_CLASS_NAME;
0040
0041
0042
0043
0044 virtual ~DVMPObservable();
0045
0046 virtual Observable* clone() const = 0;
0047 virtual std::string toString() const;
0048 virtual void resolveObjectDependencies();
0049 virtual void run();
0050 virtual void configure(const ElemUtils::Parameters ¶meters);
0051 virtual void prepareSubModules(
0052 const std::map<std::string, BaseObjectData>& subModulesData);
0053 virtual DVMPObservableResult compute(
0054 const DVMPObservableKinematic& kinematic,
0055 const List<GPDType> & gpdType = List<GPDType>());
0056 virtual List<GPDType> getListOfAvailableGPDTypeForComputation() const;
0057 virtual std::vector<double> test();
0058
0059
0060
0061
0062
0063
0064 DVMPProcessModule* getProcessModule() const;
0065
0066
0067
0068
0069 void setProcessModule(DVMPProcessModule* pProcessModule);
0070
0071 protected:
0072
0073
0074
0075
0076 DVMPObservable(const std::string &className);
0077
0078
0079
0080
0081
0082 DVMPObservable(const DVMPObservable& other);
0083
0084 virtual void initModule();
0085 virtual void isModuleWellConfigured();
0086 virtual PhysicalType<double> computeObservable(
0087 const DVMPObservableKinematic& kinematic,
0088 const List<GPDType>& gpdType) = 0;
0089
0090 DVMPProcessModule* m_pProcessModule;
0091 };
0092
0093 }
0094
0095 #endif