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

TCS transverse target asymmetries (to be checked)

parent 24964faa
#ifndef TCSAUTCOSPHIMPHIS_
#define TCSAUTCOSPHIMPHIS_
/**
* @file TCSAutCosPhiMPhis.h
* @author Pawel Sznajder
* @author Oskar Grocholski
* @date November 8, 2019
* @version 1.0
*/
#include <string>
#include "../../../../beans/gpd/GPDType.h"
#include "../../../../beans/List.h"
#include "../../../../utils/type/PhysicalType.h"
#include "../TCSObservable.h"
namespace PARTONS {
/**
* @class TCSAutCosPhiMPhis
* @brief Asymmetry probing transverse target polarization \f$\cos(\phi - \phi_{S})\f$ component.
*
* Unit: none.
*/
class TCSAutCosPhiMPhis: public TCSObservable {
public:
/**
* Unique ID to automatically register the class in the registry.
*/
static const unsigned int classId;
/**
* Constructor.
* @param className Name of class.
*/
TCSAutCosPhiMPhis(const std::string &className);
/**
* Destructor.
*/
virtual ~TCSAutCosPhiMPhis();
virtual TCSAutCosPhiMPhis* clone() const;
protected:
/**
* Copy constructor.
* @param other Object to be copied.
*/
TCSAutCosPhiMPhis(const TCSAutCosPhiMPhis &other);
virtual PhysicalType<double> computeObservable(
const TCSObservableKinematic& kinematic,
const List<GPDType>& gpdType);
};
} /* namespace PARTONS */
#endif /* TCSAUTCOSPHIMPHIS_ */
#ifndef TCSAUTSINPHIMPHIS_
#define TCSAUTSINPHIMPHIS_
/**
* @file TCSAutSinPhiMPhis.h
* @author Pawel Sznajder
* @author Oskar Grocholski
* @date November 8, 2019
* @version 1.0
*/
#include <string>
#include "../../../../beans/gpd/GPDType.h"
#include "../../../../beans/List.h"
#include "../../../../utils/type/PhysicalType.h"
#include "../TCSObservable.h"
namespace PARTONS {
/**
* @class TCSAutSinPhiMPhis
* @brief Asymmetry probing transverse target polarization \f$\sin(\phi - \phi_{S})\f$ component.
*
* Unit: none.
*/
class TCSAutSinPhiMPhis: public TCSObservable {
public:
/**
* Unique ID to automatically register the class in the registry.
*/
static const unsigned int classId;
/**
* Constructor.
* @param className Name of class.
*/
TCSAutSinPhiMPhis(const std::string &className);
/**
* Destructor.
*/
virtual ~TCSAutSinPhiMPhis();
virtual TCSAutSinPhiMPhis* clone() const;
protected:
/**
* Copy constructor.
* @param other Object to be copied.
*/
TCSAutSinPhiMPhis(const TCSAutSinPhiMPhis &other);
virtual PhysicalType<double> computeObservable(
const TCSObservableKinematic& kinematic,
const List<GPDType>& gpdType);
};
} /* namespace PARTONS */
#endif /* TCSAUTSINPHIMPHIS_ */
#include "../../../../../../include/partons/modules/observable/TCS/asymmetry/TCSAutCosPhiMPhis.h"
#include <NumA/linear_algebra/vector/Vector3D.h>
#include "../../../../../../include/partons/beans/observable/ObservableResult.h"
#include "../../../../../../include/partons/BaseObjectRegistry.h"
#include "../../../../../../include/partons/modules/process/TCS/TCSProcessModule.h"
#include "../../../../../../include/partons/utils/type/PhysicalUnit.h"
namespace PARTONS {
const unsigned int TCSAutCosPhiMPhis::classId =
BaseObjectRegistry::getInstance()->registerBaseObject(
new TCSAutCosPhiMPhis("TCSAutCosPhiMPhis"));
TCSAutCosPhiMPhis::TCSAutCosPhiMPhis(const std::string &className) :
TCSObservable(className) {
}
TCSAutCosPhiMPhis::TCSAutCosPhiMPhis(const TCSAutCosPhiMPhis& other) :
TCSObservable(other) {
}
TCSAutCosPhiMPhis::~TCSAutCosPhiMPhis() {
}
TCSAutCosPhiMPhis* TCSAutCosPhiMPhis::clone() const {
return new TCSAutCosPhiMPhis(*this);
}
PhysicalType<double> TCSAutCosPhiMPhis::computeObservable(
const TCSObservableKinematic& kinematic, const List<GPDType>& gpdType) {
//evaluate
PhysicalType<double> A = m_pProcessModule->compute(1,
NumA::Vector3D(1., 0., 0.), kinematic, gpdType).getValue();
PhysicalType<double> B = m_pProcessModule->compute(-1,
NumA::Vector3D(-1., 0., 0.), kinematic, gpdType).getValue();
PhysicalType<double> C = m_pProcessModule->compute(1,
NumA::Vector3D(1., 0., 0.), kinematic, gpdType).getValue();
PhysicalType<double> D = m_pProcessModule->compute(-1,
NumA::Vector3D(-1., 0., 0.), kinematic, gpdType).getValue();
//combine
if ((A + B + C + D).getValue() == 0.) {
warn(__func__, "Asymmetry denominator is zero");
return PhysicalType<double>(0., PhysicalUnit::NONE);
}
//return
return ((A + B) - (C + D)) / (A + B + C + D);
}
} /* namespace PARTONS */
#include "../../../../../../include/partons/modules/observable/TCS/asymmetry/TCSAutSinPhiMPhis.h"
#include <NumA/linear_algebra/vector/Vector3D.h>
#include "../../../../../../include/partons/beans/observable/ObservableResult.h"
#include "../../../../../../include/partons/BaseObjectRegistry.h"
#include "../../../../../../include/partons/modules/process/TCS/TCSProcessModule.h"
#include "../../../../../../include/partons/utils/type/PhysicalUnit.h"
namespace PARTONS {
const unsigned int TCSAutSinPhiMPhis::classId =
BaseObjectRegistry::getInstance()->registerBaseObject(
new TCSAutSinPhiMPhis("TCSAutSinPhiMPhis"));
TCSAutSinPhiMPhis::TCSAutSinPhiMPhis(const std::string &className) :
TCSObservable(className) {
}
TCSAutSinPhiMPhis::TCSAutSinPhiMPhis(const TCSAutSinPhiMPhis& other) :
TCSObservable(other) {
}
TCSAutSinPhiMPhis::~TCSAutSinPhiMPhis() {
}
TCSAutSinPhiMPhis* TCSAutSinPhiMPhis::clone() const {
return new TCSAutSinPhiMPhis(*this);
}
PhysicalType<double> TCSAutSinPhiMPhis::computeObservable(
const TCSObservableKinematic& kinematic, const List<GPDType>& gpdType) {
//evaluate
PhysicalType<double> A = m_pProcessModule->compute(1,
NumA::Vector3D(0., 1., 0.), kinematic, gpdType).getValue();
PhysicalType<double> B = m_pProcessModule->compute(-1,
NumA::Vector3D(0., -1., 0.), kinematic, gpdType).getValue();
PhysicalType<double> C = m_pProcessModule->compute(1,
NumA::Vector3D(0., 1., 0.), kinematic, gpdType).getValue();
PhysicalType<double> D = m_pProcessModule->compute(-1,
NumA::Vector3D(0., -1., 0.), kinematic, gpdType).getValue();
//combine
if ((A + B + C + D).getValue() == 0.) {
warn(__func__, "Asymmetry denominator is zero");
return PhysicalType<double>(0., PhysicalUnit::NONE);
}
//return
return ((A + B) - (C + D)) / (A + B + C + D);
}
} /* namespace PARTONS */
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