Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:51:43

0001 #ifndef OBSERVABLE_KINEMATIC_H
0002 #define OBSERVABLE_KINEMATIC_H
0003 
0004 /**
0005  * @file ObservableKinematic.h
0006  * @author: Bryan BERTHOU (SPhN / CEA Saclay)
0007  * @date 26 November 2014
0008  * @version 1.0
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  * @class ObservableKinematic
0022  *
0023  * @brief Abstract class representing single observable kinematics.
0024  *
0025  * This class represents a single observable kinematics (none).
0026  */
0027 class ObservableKinematic: public Kinematic {
0028 
0029 public:
0030 
0031     /**
0032      * Destructor.
0033      */
0034     virtual ~ObservableKinematic();
0035 
0036     virtual void configure(const ElemUtils::Parameters &parameters);
0037     virtual std::string toString() const;
0038 
0039     /**
0040      * Serialize into given Packet.
0041      * @param packet Target Packet.
0042      */
0043     void serialize(ElemUtils::Packet &packet) const;
0044 
0045     /**
0046      * Retrieve data from given Packet.
0047      * @param packet Input Packet.
0048      */
0049     void unserialize(ElemUtils::Packet &packet);
0050 
0051     /**
0052      * Serialize to std::vector<double>.
0053      */
0054     void serializeIntoStdVector(std::vector<double>& vec) const;
0055 
0056     /**
0057      * Unserialize from std::vector<double>.
0058      */
0059     void unserializeFromStdVector(std::vector<double>::const_iterator& it,
0060             const std::vector<double>::const_iterator& end);
0061 
0062     //********************************************************
0063     //*** SETTERS AND GETTERS ********************************
0064     //********************************************************
0065 
0066 protected:
0067 
0068     /**
0069      * Default constructor.
0070      */
0071     ObservableKinematic(const std::string &className,
0072             ChannelType::Type channelType);
0073 
0074     /**
0075      * Copy constructor.
0076      * @param other Object to be copied.
0077      */
0078     ObservableKinematic(const ObservableKinematic &other);
0079 
0080     virtual void updateHashSum() const = 0;
0081 };
0082 
0083 /**
0084  * Stream operator to serialize class into Packet. See also GPDType::serialize().
0085  */
0086 ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
0087         ObservableKinematic& observableKinematic);
0088 
0089 /**
0090  * Stream operator to retrieve class from Packet. See also GPDType::unserialize().
0091  */
0092 ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
0093         ObservableKinematic& observableKinematic);
0094 
0095 } /* namespace PARTONS */
0096 
0097 #endif /* OBSERVABLE_KINEMATIC_H */