|
|
|||
File indexing completed on 2026-06-02 08:51:49
0001 #ifndef COLLINEAR_DISTRIBUTION_SERVICE_H 0002 #define COLLINEAR_DISTRIBUTION_SERVICE_H 0003 0004 /** 0005 * @file CollinearDistributionService.h 0006 * @author Valerio BERTONE (CEA Saclay) 0007 * @date July 18, 2020 0008 * @version 1.0 0009 */ 0010 0011 #include <string> 0012 0013 #include "../beans/collinear_distribution/CollinearDistributionKinematic.h" 0014 #include "../beans/collinear_distribution/CollinearDistributionResult.h" 0015 #include "../beans/collinear_distribution/CollinearDistributionType.h" 0016 #include "../beans/List.h" 0017 #include "../ServiceObjectTyped.h" 0018 0019 namespace PARTONS { 0020 class CollinearDistributionModule; 0021 } /* namespace PARTONS */ 0022 0023 namespace PARTONS { 0024 0025 /** 0026 * @class CollinearDistributionService 0027 * 0028 * @brief Class to handle and compute collinear-distribution modules. 0029 */ 0030 class CollinearDistributionService: public ServiceObjectTyped<CollinearDistributionKinematic, CollinearDistributionResult> { 0031 0032 public: 0033 0034 static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. 0035 0036 static const std::string COLLINEAR_DISTRIBUTION_SERVICE_COMPUTE_SINGLE_KINEMATIC; ///< Name of the XML task used to compute a collinear-distribution at given kinematics. 0037 static const std::string COLLINEAR_DISTRIBUTION_SERVICE_COMPUTE_MANY_KINEMATIC; ///< Name of the XML task used to compute collinear-distributions for a list of kinematics. 0038 0039 /** 0040 * Default destructor. 0041 */ 0042 virtual ~CollinearDistributionService(); 0043 0044 virtual void resolveObjectDependencies(); 0045 virtual void computeTask(Task &task); 0046 0047 /** 0048 * Computes collinear-distribution model at specific kinematics. 0049 * 0050 * @param colldistKinematic collinear-distribution kinematic. 0051 * @param pCollinearDistributionModule CollinearDistributionModule to use. 0052 * @param colldistType List of CollinearDistributionType to compute. Default: all the CollinearDistributionTypes available with the CollinearDistributionModule. 0053 * @return CollinearDistributionResult 0054 */ 0055 CollinearDistributionResult computeSingleKinematic(const CollinearDistributionKinematic &colldistKinematic, 0056 CollinearDistributionModule* pCollinearDistributionModule, const List<CollinearDistributionType>& colldistType = 0057 List<CollinearDistributionType>()) const; 0058 0059 /** 0060 * Computes a collinear-distribution model for a list of kinematics. 0061 * 0062 * @param colldistKinematicList List of CollinearDistributionKinematics. 0063 * @param pCollinearDistributionModule CollinearDistributionModule to use for the computation. 0064 * @param colldistTypeList List of CollinearDistributionType to compute. Default: all the CollinearDistributionTypes available with the CollinearDistributionModule. 0065 * @param storeInDB Boolean to store the results and kinematics on the database. Default: false. 0066 * @return List of CollinearDistributionResults. 0067 */ 0068 List<CollinearDistributionResult> computeManyKinematic( 0069 const List<CollinearDistributionKinematic> &colldistKinematicList, CollinearDistributionModule* pCollinearDistributionModule, 0070 const List<CollinearDistributionType>& colldistTypeList = List<CollinearDistributionType>()); 0071 0072 /** 0073 * Devises the CollinearDistributionModule from an automation task. 0074 * 0075 * @param task Automation task. 0076 * @return CollinearDistributionModule pointer. 0077 */ 0078 CollinearDistributionModule* newCollinearDistributionModuleFromTask(const Task &task) const; 0079 0080 /** 0081 * Devises the collinear-distribution kinematics from an automation task. 0082 * 0083 * @param task Automation task. 0084 * @return collinear-distribution kinematics. 0085 */ 0086 CollinearDistributionKinematic newKinematicFromTask(const Task &task) const; 0087 0088 /** 0089 * Devises the collinear-distribution kinematics from an automation task. 0090 * 0091 * @param task Automation task. 0092 * @return List of collinear-distribution kinematics. 0093 */ 0094 List<CollinearDistributionKinematic> newListOfKinematicFromTask(const Task &task) const; 0095 0096 protected: 0097 0098 /** 0099 * Default constructor used by the registry. 0100 */ 0101 CollinearDistributionService(const std::string &className); 0102 0103 private: 0104 0105 /** 0106 * Method used in the automated interface to compute collinear-distribution. 0107 * @param task Automated XML task. 0108 * @return CollinearDistributionResult object. 0109 */ 0110 CollinearDistributionResult computeSingleKinematicTask(Task &task); 0111 0112 /** 0113 * Method used in the automated interface to compute collinear-distributions for a list of kinematics. 0114 * @param task Automated XML task. 0115 * @return List of collinear-distribution results. 0116 */ 0117 List<CollinearDistributionResult> computeManyKinematicTask(Task &task); 0118 0119 /** 0120 * Method used to derive an intersection of available collinear-distribution types from the various underlying modules. 0121 * @param pCollinearDistributionModule CollinearDistributionModule used for the computation. 0122 * @param colldistTypeList List of desired collinear-distribution types to compute. 0123 * @return List of collinear-distribution types. 0124 */ 0125 List<CollinearDistributionType> getFinalCollinearDistributionTypeList(CollinearDistributionModule* pCollinearDistributionModule, 0126 const List<CollinearDistributionType> &colldistTypeList) const; 0127 }; 0128 0129 } /* namespace PARTONS */ 0130 0131 #endif /* COLLINEAR_DISTRIBUTION_SERVICE_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|