Skip to content

Commit 246da9a

Browse files
committed
updates and fixes related to new version of libcxxwrap-julia
1 parent d062ad9 commit 246da9a

File tree

1 file changed

+17
-26
lines changed

1 file changed

+17
-26
lines changed

src/fastJetWrap.cc

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
#include "jlcxx/jlcxx.hpp"
2+
#include "jlcxx/stl.hpp"
3+
24
#include "fjcore.hh"
35
#include <vector>
46

57
using namespace std;
68
using namespace fjcore;
7-
namespace jlcxx
8-
{
9-
template<> struct IsBits<JetAlgorithm> : std::true_type {};
10-
template<> struct IsBits<RecombinationScheme> : std::true_type {};
11-
template<> struct IsBits<Strategy> : std::true_type {};
12-
}
9+
1310
JLCXX_MODULE define_julia_module(jlcxx::Module& fastjet)
1411
{
15-
fastjet.add_bits<JetAlgorithm>("JetAlgorithm");
12+
fastjet.add_bits<JetAlgorithm>("JetAlgorithm", jlcxx::julia_type("CppEnum"));
1613
fastjet.set_const("kt_algorithm", kt_algorithm);
1714
fastjet.set_const("cambridge_algorithm", cambridge_algorithm);
1815
fastjet.set_const("antikt_algorithm", antikt_algorithm);
@@ -24,7 +21,7 @@ JLCXX_MODULE define_julia_module(jlcxx::Module& fastjet)
2421
fastjet.set_const("plugin_algorithm", plugin_algorithm);
2522
fastjet.set_const("undefined_jet_algorithm", undefined_jet_algorithm);
2623

27-
fastjet.add_bits<RecombinationScheme>("RecombinationScheme");
24+
fastjet.add_bits<RecombinationScheme>("RecombinationScheme", jlcxx::julia_type("CppEnum"));
2825
fastjet.set_const("E_scheme", E_scheme);
2926
fastjet.set_const("pt_scheme", pt_scheme);
3027
fastjet.set_const("pt2_scheme", pt2_scheme);
@@ -36,7 +33,7 @@ JLCXX_MODULE define_julia_module(jlcxx::Module& fastjet)
3633
fastjet.set_const("WTA_modp_scheme", WTA_modp_scheme);
3734
fastjet.set_const("external_scheme", external_scheme);
3835

39-
fastjet.add_bits<Strategy>("Strategy");
36+
fastjet.add_bits<Strategy>("Strategy", jlcxx::julia_type("CppEnum"));
4037
fastjet.set_const("N2MHTLazy9AntiKtSeparateGhosts", N2MHTLazy9AntiKtSeparateGhosts);
4138
fastjet.set_const("N2MHTLazy9", N2MHTLazy9);
4239
fastjet.set_const("N2MHTLazy25", N2MHTLazy25);
@@ -91,33 +88,27 @@ JLCXX_MODULE define_julia_module(jlcxx::Module& fastjet)
9188
.method("squared_distance", &PseudoJet::squared_distance)
9289
.method("delta_R", &PseudoJet::delta_R)
9390
.method("delta_phi_to", &PseudoJet::delta_phi_to)
94-
.method("beam_distance", &PseudoJet::beam_distance)
95-
.method("four_mom", &PseudoJet::four_mom);
91+
.method("beam_distance", &PseudoJet::beam_distance);
92+
93+
// four_mom returns a valarray... There's no factory for this, yet, so we're just returning a vector here
94+
fastjet.method("four_mom", [](const PseudoJet& pj)->std::vector<double> {
95+
vector<double> mom(4);
96+
mom[0] = pj.px();
97+
mom[1] = pj.py();
98+
mom[2] = pj.pz();
99+
mom[4] = pj.e();
100+
return mom;
101+
});
96102

97103
// we mostly don't need the jet definition on the julia side.
98104
// only used to instantiate the clustering
99105
fastjet.add_type<JetDefinition>("JetDefinition")
100106
.constructor<const JetAlgorithm, double>();
101107

102-
fastjet.add_type<vector<PseudoJet>>("JetVec")
103-
.method("size", &vector<PseudoJet>::size);
104-
fastjet.method("at", [](const vector<PseudoJet>& vec, size_t i) {
105-
return vec.at(i);
106-
});
107-
108108
fastjet.method("constituents", [](const PseudoJet& pj) {
109109
return pj.constituents();
110110
});
111111

112-
fastjet.method("ClusterSequence", [](jlcxx::ArrayRef<jl_value_t*> vec, const JetDefinition& jd) {
113-
vector<PseudoJet> pjvec;
114-
for(jl_value_t* v : vec) {
115-
const PseudoJet& j = *jlcxx::unbox_wrapped_ptr<PseudoJet>(v);
116-
pjvec.push_back(j);
117-
}
118-
return ClusterSequence(pjvec, jd);
119-
});
120-
121112
fastjet.add_type<ClusterSequence>("ClusterSequence")
122113
.constructor<const std::vector<PseudoJet>&, const JetDefinition&>()
123114
.method("inclusive_jets", &ClusterSequence::inclusive_jets);

0 commit comments

Comments
 (0)