Commit cbe60842 authored by Pawel Sznajder's avatar Pawel Sznajder
Browse files

add intersection with GPD types probed by a given meson

parent 4dc0e863
......@@ -10,6 +10,9 @@
#include <string>
#include "gpd/GPDType.h"
#include "List.h"
namespace ElemUtils {
class Packet;
} /* namespace ElemUtils */
......@@ -68,6 +71,11 @@ public:
*/
operator Type() const;
/**
* Get list of GPD types probed by the meson.
*/
List<GPDType> getPossibleGPDTypes() const;
/**
* Get string representation of type being assigned to a declared object of this class.
* @return String representation of assigned type.
......
......@@ -21,6 +21,35 @@ MesonType::operator MesonType::Type() const {
return m_type;
}
List<GPDType> MesonType::getPossibleGPDTypes() const {
List<GPDType> list;
//pseudo-scalars
if (m_type == PIMINUS || m_type == PI0 || m_type == PIPLUS) {
list.add(GPDType(GPDType::Ht));
list.add(GPDType(GPDType::Et));
list.add(GPDType(GPDType::HTrans));
list.add(GPDType(GPDType::ETrans));
}
//vector
else if (m_type == RHOMINUS || m_type == RHO0 || m_type == RHOPLUS
|| m_type == OMEGA || m_type == PHI || m_type == JPSI
|| m_type == UPSILON
) {
list.add(GPDType(GPDType::H));
list.add(GPDType(GPDType::E));
list.add(GPDType(GPDType::HTrans));
list.add(GPDType(GPDType::ETrans));
}
return list;
}
std::string MesonType::toString() const {
switch (m_type) {
......@@ -116,15 +145,15 @@ bool MesonType::operator <(const MesonType& other) const {
return (m_type < other.m_type);
}
ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
MesonType& mesonType) {
ElemUtils::Packet & operator <<(ElemUtils::Packet & packet,
MesonType & mesonType) {
mesonType.serialize(packet);
return packet;
}
ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
MesonType& mesonType) {
ElemUtils::Packet & operator >>(ElemUtils::Packet & packet,
MesonType & mesonType) {
mesonType.unserialize(packet);
return packet;
......
......@@ -19,6 +19,7 @@
#include "../../../../../include/partons/services/DVMPConvolCoeffFunctionService.h"
#include "../../../../../include/partons/ServiceObjectRegistry.h"
#include "../../../../../include/partons/utils/type/PhysicalUnit.h"
#include "../../../../../include/partons/utils/VectorUtils.h"
namespace PARTONS {
......@@ -528,10 +529,15 @@ void DVMPProcessModule::computeConvolCoeffFunction(
//check if different
if (isPreviousCCFKinematicDifferent(ccfKinematics)) {
//possible GPD types
List<GPDType> gpdTypePossible = VectorUtils::intersection(gpdType,
MesonType(kinematic.getMesonType()).getPossibleGPDTypes());
//evaluate
m_dvcsConvolCoeffFunctionResult =
Partons::getInstance()->getServiceObjectRegistry()->getDVMPConvolCoeffFunctionService()->computeSingleKinematic(
ccfKinematics, m_pConvolCoeffFunctionModule, gpdType);
ccfKinematics, m_pConvolCoeffFunctionModule,
gpdTypePossible);
//set corresponding kinematics
m_lastCCFKinematics = ccfKinematics;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment