Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// Standard header files go here
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <sstream>
#include <vector>
#include <list>
#include <algorithm> // for std::sort
#include <utility> // For std::pair
#include <cassert>
// Includes check for correct Boost version(s)
#include <common/GGlobalDefines.hpp>
// Boost header files go here
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/algorithm/string/trim.hpp>
#include <boost/cast.hpp>
#ifndef GOMEGAPIINDIVIDUALLS_HPP_
#define GOMEGAPIINDIVIDUALLS_HPP_
// For Microsoft-compatible compilers
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
// GenEvA header files go here
#include <hap/GRandomT.hpp>
#include <common/GCommonEnums.hpp>
#include <common/GExceptions.hpp>
#include <geneva/GConstrainedDoubleObject.hpp>
#include <geneva/GConstrainedDoubleObjectCollection.hpp>
#include <geneva/GDoubleGaussAdaptor.hpp>
#include <geneva/GObjectExpectationChecksT.hpp>
#include <geneva/GParameterObjectCollection.hpp>
#include <geneva/GParameterSet.hpp>
#include "PwaUtils/AbsStates.hh"
#include "PwaUtils/DataUtils.hh"
#include "Examples/pbarpToOmegaPiLS/OmegaPiDataLS.hh"
// #include "Examples/pbarpToOmegaPi/OmegaPiEventList.hh"
// #include "Examples/pbarpToOmegaPi/pbarpToOmegaPi0States.hh"
#include "Examples/pbarpToOmegaPiLS/AbsOmegaPiLhLS.hh"
namespace Gem
{
namespace Pawian
{
/************************************************************************************************/
/**
* This individual performs a partial wave analysis using the Geneva library
*/
class GOmegaPiIndividualLS
:public Gem::Geneva::GParameterSet
{
///////////////////////////////////////////////////////////////////////
friend class boost::serialization::access;
template<typename Archive>
void serialize(Archive & ar, const unsigned int) {
using boost::serialization::make_nvp;
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Gem::Geneva::GParameterSet);
}
///////////////////////////////////////////////////////////////////////
public:
/** @brief A constructor that initializes the object with a likelihood calculator */
GOmegaPiIndividualLS(boost::shared_ptr<AbsOmegaPiLhLS>);
/** @brief The standard copy constructor */
GOmegaPiIndividualLS(const GOmegaPiIndividualLS&);
/** @brief The destructor */
virtual ~GOmegaPiIndividualLS();
/** @brief Loads user-specified data */
virtual void loadConstantData(boost::shared_ptr<GObject>);
/** @brief A standard assignment operator */
const GOmegaPiIndividualLS& operator=(const GOmegaPiIndividualLS&);
/** @brief Gives access to the likelihood calculator */
boost::shared_ptr<AbsOmegaPiLhLS> omegaPiLhPtr() const;
/** @brief Gives access to the fit parameters */
bool getFitParams(OmegaPiDataLS::fitParamVal&);
/** @brief Prints the fit parameters */
void printFitParams(OmegaPiDataLS::fitParamVal&);
protected:
/** @brief Loads the data of another GOmegaPiIndividualLS */
virtual void load_(const Gem::Geneva::GObject*);
/** Creates a deep clone of this object */
virtual Gem::Geneva::GObject* clone_() const;
/** @brief The actual fitness calculation takes place here */
virtual double fitnessCalculation();
private:
/** @brief The default constructor. Intentionally private */
GOmegaPiIndividualLS();
boost::shared_ptr<AbsOmegaPiLhLS> _omegaPiLhPtr; ///< Holds the likelihood calculator
};
/*************************************************************************************************/
} /* namespace Pawian */
} /* namespace Gem */
BOOST_CLASS_EXPORT_KEY(Gem::Pawian::GOmegaPiIndividualLS)
#endif /* GOMEGAPIINDIVIDUALLS_HPP_ */