20 int n_rows = m_nPixelsX;
21 int n_cols = m_nPixelsY;
22 int n_colors = m_nPixelsZ;
24 std::vector<float> input_tensor_values(n_rows*n_cols*n_colors);
26 for(
int iRow=0; iRow<n_rows; ++iRow){
27 for(
int iColumn=0; iColumn<n_cols; ++iColumn){
29 input_tensor_values[ (n_colors*n_cols*iRow) + iColumn*n_colors +
iColor] = Images[
iColor].GetBinContent(iRow+1, iColumn+1);
34 return input_tensor_values;
42 std::vector<float> input_tensor_values(m_nvars);
45 for(
const auto &
var : JSSVars){
46 double mean = m_scaler.find(
var.first)->second[0];
47 double std = m_scaler.find(
var.first)->second[1];
48 JSSVars[
var.first] = (
var.second -
mean) / std;
52 for(
int v=0;
v<m_nvars; ++
v){
53 std::string
name = m_JSSInputMap.find(
v)->second;
54 input_tensor_values[
v] = JSSVars[
name];
57 return input_tensor_values;
65 std::vector<int> output_tensor_values(1);
67 output_tensor_values[0] = 1;
69 return output_tensor_values;
90 Ort::SessionOptions sessionOptions;
91 sessionOptions.SetIntraOpNumThreads( 1 );
92 sessionOptions.SetGraphOptimizationLevel( ORT_ENABLE_BASIC );
93 Ort::AllocatorWithDefaultOptions allocator;
94 m_env = std::make_unique< Ort::Env >(ORT_LOGGING_LEVEL_WARNING,
"");
106 char* input_name =
m_session->GetInputNameAllocated(
i, allocator).release();
110 Ort::TypeInfo type_info =
m_session->GetInputTypeInfo(
i);
111 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
112 ONNXTensorElementDataType
type = tensor_info.GetElementType();
130 char* output_name =
m_session->GetOutputNameAllocated(
i, allocator).release();
134 Ort::TypeInfo type_info =
m_session->GetOutputTypeInfo(
i);
135 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
136 ONNXTensorElementDataType
type = tensor_info.GetElementType();
150 return StatusCode::SUCCESS;
161 std::vector<float> input_tensor_values(input_tensor_size);
169 int output_tensor_values = output_tensor_values_[testSample];
172 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
173 Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size,
m_input_node_dims.data(),
m_input_node_dims.size());
174 assert(input_tensor.IsTensor());
177 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
180 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
181 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
184 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
185 float ConstScore = -999;
187 for (
int i = 0;
i < arrSize;
i++){
189 if (ConstScore<floatarr[
i]){
190 ConstScore = floatarr[
i];
194 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
219 int output_tensor_values = output_tensor_values_[testSample];
222 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
223 std::vector<Ort::Value> input_tensors;
224 for (
long unsigned int i=0;
i<constituents.size();
i++) {
227 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.at(
i).size())};
229 input_tensors.push_back(Ort::Value::CreateTensor<float>(
231 constituents.at(
i).data(), constituents.at(
i).size(), const_dim.data(), const_dim.size()
237 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
240 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
241 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
244 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
245 float ConstScore = -999;
247 for (
int i = 0;
i < arrSize;
i++){
250 if (ConstScore<floatarr[
i]){
251 ConstScore = floatarr[
i];
255 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
280 int output_tensor_values = output_tensor_values_[testSample];
283 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
284 std::vector<Ort::Value> input_tensors;
287 std::vector<float> constituents_values;
288 for (
long unsigned int i=0;
i<constituents.size();
i++) {
289 for (
long unsigned int j=0; j<7; j++) {
290 constituents_values.push_back(constituents.at(
i).at(j));
294 std::vector<float> interactions_values;
295 for (
long unsigned int i=0;
i<interactions.size();
i++) {
296 for (
long unsigned int k=0;
k<interactions.size();
k++) {
297 for (
long unsigned int j=0; j<4; j++) {
298 interactions_values.push_back(interactions.at(
i).at(
k).at(j));
303 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), 7};
304 input_tensors.push_back(Ort::Value::CreateTensor<float>(
306 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
310 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(constituents.size()),
static_cast<int64_t
>(constituents.size()), 4};
311 input_tensors.push_back(Ort::Value::CreateTensor<float>(
313 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
318 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
321 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
322 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
325 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
326 float ConstScore = -999;
328 for (
int i = 0;
i < arrSize;
i++){
331 if (ConstScore<floatarr[
i]){
332 ConstScore = floatarr[
i];
336 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
350 size_t input_tensor_size =
m_nvars;
351 std::vector<float> input_tensor_values(
m_nvars);
359 int output_tensor_values = output_tensor_values_[testSample];
362 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
366 std::vector<float> empty = {1.};
370 std::vector<Ort::Value> input_tensor;
371 std::vector<int64_t> aaa = {1,
m_nvars};
372 input_tensor.emplace_back(
373 Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size, aaa.data(), aaa.size())
375 input_tensor.emplace_back(
378 input_tensor.emplace_back(
381 input_tensor.emplace_back(
386 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
389 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
390 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
393 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
394 float HLScore = -999;
396 for (
int i = 0;
i < arrSize;
i++){
398 if (HLScore<floatarr[
i]){
399 HLScore = floatarr[
i];
403 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
416 {0,
"pT"}, {1,
"CNN"}, {2,
"D2"}, {3,
"nTracks"}, {4,
"ZCut12"},
417 {5,
"Tau1_wta"}, {6,
"Tau2_wta"}, {7,
"Tau3_wta"},
418 {8,
"KtDR"}, {9,
"Split12"}, {10,
"Split23"},
419 {11,
"ECF1"}, {12,
"ECF2"}, {13,
"ECF3"},
420 {14,
"Angularity"}, {15,
"FoxWolfram0"}, {16,
"FoxWolfram2"},
421 {17,
"Aplanarity"}, {18,
"PlanarFlow"}, {19,
"Qw"},
425 return StatusCode::SUCCESS;