File indexing completed on 2026-06-02 08:51:43
0001 #ifndef OBSERVABLE_KINEMATIC_H
0002 #define OBSERVABLE_KINEMATIC_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <ElementaryUtils/parameters/Parameters.h>
0012 #include <string>
0013 #include <vector>
0014
0015 #include "../channel/ChannelType.h"
0016 #include "../Kinematic.h"
0017
0018 namespace PARTONS {
0019
0020
0021
0022
0023
0024
0025
0026
0027 class ObservableKinematic: public Kinematic {
0028
0029 public:
0030
0031
0032
0033
0034 virtual ~ObservableKinematic();
0035
0036 virtual void configure(const ElemUtils::Parameters ¶meters);
0037 virtual std::string toString() const;
0038
0039
0040
0041
0042
0043 void serialize(ElemUtils::Packet &packet) const;
0044
0045
0046
0047
0048
0049 void unserialize(ElemUtils::Packet &packet);
0050
0051
0052
0053
0054 void serializeIntoStdVector(std::vector<double>& vec) const;
0055
0056
0057
0058
0059 void unserializeFromStdVector(std::vector<double>::const_iterator& it,
0060 const std::vector<double>::const_iterator& end);
0061
0062
0063
0064
0065
0066 protected:
0067
0068
0069
0070
0071 ObservableKinematic(const std::string &className,
0072 ChannelType::Type channelType);
0073
0074
0075
0076
0077
0078 ObservableKinematic(const ObservableKinematic &other);
0079
0080 virtual void updateHashSum() const = 0;
0081 };
0082
0083
0084
0085
0086 ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
0087 ObservableKinematic& observableKinematic);
0088
0089
0090
0091
0092 ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
0093 ObservableKinematic& observableKinematic);
0094
0095 }
0096
0097 #endif