18{
19 VariantExampleTool ::
20 VariantExampleTool (const std::string& name)
22 {}
23
24
25
27 initialize ()
28 {
29
30
32 return StatusCode::SUCCESS;
33 }
34
35
36
37 void VariantExampleTool ::
39 {
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 std::vector<columnar::ObjectId<MyVariantDef>> variantParticles;
58 variantParticles.reserve (
electrons.size() + muons.size());
59 for (auto electron : electrons)
60 variantParticles.push_back(electron);
61 for (auto muon : muons)
62 variantParticles.push_back(muon);
63
64 for (auto& variantParticle : variantParticles)
65 {
66
67
68
69
70
71
72
73 if (!ptAcc.isAvailable(variantParticle))
74 {
76 throw std::runtime_error("pt is not available");
77 }
78 }
79
80
81 std::sort (variantParticles.begin(), variantParticles.end(),
82 [&](
const auto&
a,
const auto& b) {
83 return ptAcc(a) > ptAcc(b);
84 });
85
86
87 for (std::size_t rank = 0; rank < variantParticles.size(); ++rank)
88 {
89 ptRankDec(variantParticles[rank]) = rank;
90 }
91
92
93 std::sort (variantParticles.begin(), variantParticles.end(),
94 [&](
const auto&
a,
const auto& b) {
95 return std::abs (etaAcc(a)) < std::abs (etaAcc(b));
96 });
97
98
99 for (std::size_t rank = 0; rank < variantParticles.size(); ++rank)
100 {
101
102
103
104
105 if (auto castObject = variantParticles[rank].tryGetVariant<columnar::ElectronDef>())
106 etaRankSpecialDec(*castObject) = rank;
107 }
108 }
109
110
111
112 void VariantExampleTool ::
114 {
115 std::vector<columnar::ObjectId<MyVariantDef>> variantParticles;
116
117
118
119
120
121
122
124 {
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 callSingleEvent (electronsHandle(event), muonsHandle (event));
145 }
146 }
147}
::StatusCode StatusCode
StatusCode definition for legacy code.
ObjectRange< EventContextDef > EventContextRange
ObjectId< EventContextDef > EventContextId
ObjectRange< MuonDef > MuonRange
ObjectRange< ElectronDef > ElectronRange
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.