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 );
96 sessionOptions.DisableCpuMemArena();
99 Ort::AllocatorWithDefaultOptions allocator;
102 m_env = std::make_unique< Ort::Env >(ORT_LOGGING_LEVEL_WARNING,
"");
114 char* input_name =
m_session->GetInputNameAllocated(
i, allocator).release();
118 Ort::TypeInfo type_info =
m_session->GetInputTypeInfo(
i);
119 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
120 ONNXTensorElementDataType
type = tensor_info.GetElementType();
138 char* output_name =
m_session->GetOutputNameAllocated(
i, allocator).release();
142 Ort::TypeInfo type_info =
m_session->GetOutputTypeInfo(
i);
143 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
144 ONNXTensorElementDataType
type = tensor_info.GetElementType();
158 return StatusCode::SUCCESS;
169 std::vector<float> input_tensor_values(input_tensor_size);
177 int output_tensor_values = output_tensor_values_[testSample];
180 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
181 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());
182 assert(input_tensor.IsTensor());
185 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
188 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
189 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
192 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
193 float ConstScore = -999;
195 for (
int i = 0;
i < arrSize;
i++){
197 if (ConstScore<floatarr[
i]){
198 ConstScore = floatarr[
i];
202 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
227 int output_tensor_values = output_tensor_values_[testSample];
230 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
231 std::vector<Ort::Value> input_tensors;
232 for (
long unsigned int i=0;
i<constituents.size();
i++) {
235 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.at(
i).size())};
237 input_tensors.push_back(Ort::Value::CreateTensor<float>(
239 constituents.at(
i).data(), constituents.at(
i).size(), const_dim.data(), const_dim.size()
245 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
248 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
249 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
252 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
253 float ConstScore = -999;
255 for (
int i = 0;
i < arrSize;
i++){
258 if (ConstScore<floatarr[
i]){
259 ConstScore = floatarr[
i];
263 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
288 int output_tensor_values = output_tensor_values_[testSample];
291 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
292 std::vector<Ort::Value> input_tensors;
295 std::vector<float> constituents_values;
296 for (
long unsigned int i=0;
i<constituents.size();
i++) {
297 for (
long unsigned int j=0; j<7; j++) {
298 constituents_values.push_back(constituents.at(
i).at(j));
302 std::vector<float> interactions_values;
303 for (
long unsigned int i=0;
i<interactions.size();
i++) {
304 for (
long unsigned int k=0;
k<interactions.size();
k++) {
305 for (
long unsigned int j=0; j<4; j++) {
306 interactions_values.push_back(interactions.at(
i).at(
k).at(j));
311 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), 7};
312 input_tensors.push_back(Ort::Value::CreateTensor<float>(
314 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
318 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(constituents.size()),
static_cast<int64_t
>(constituents.size()), 4};
319 input_tensors.push_back(Ort::Value::CreateTensor<float>(
321 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
326 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
329 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
330 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
333 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
334 float ConstScore = -999;
336 for (
int i = 0;
i < arrSize;
i++){
339 if (ConstScore<floatarr[
i]){
340 ConstScore = floatarr[
i];
344 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
370 int output_tensor_values = output_tensor_values_[testSample];
373 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
374 std::vector<Ort::Value> input_tensors;
377 std::vector<float> constituents_values;
378 for (
long unsigned int j=0; j<7; j++) {
379 for (
long unsigned int i=0;
i<constituents.size();
i++) {
380 constituents_values.push_back(constituents.at(
i).at(j));
384 std::vector<float> interactions_values;
385 for (
long unsigned int k=0;
k<4;
k++) {
386 for (
long unsigned int i=0;
i<interactions.size();
i++) {
387 for (
long unsigned int j=0; j<interactions.size(); j++) {
388 interactions_values.push_back(interactions.at(
i).at(j).at(
k));
393 std::vector<float> mask_values;
394 for (
long unsigned int j=0; j<1; j++) {
395 for (
long unsigned int i=0;
i<
mask.size();
i++) {
396 mask_values.push_back(
mask.at(
i).at(j));
400 std::vector<int64_t> const_dim = {1, 7,
static_cast<int64_t
>(constituents.size())};
401 input_tensors.push_back(Ort::Value::CreateTensor<float>(
403 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
407 std::vector<int64_t> inter_dim = {1, 4,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size())};
408 input_tensors.push_back(Ort::Value::CreateTensor<float>(
410 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
414 std::vector<int64_t> mask_dim = {1, 1,
static_cast<int64_t
>(
mask.size())};
415 input_tensors.push_back(Ort::Value::CreateTensor<float>(
417 mask_values.data(), mask_values.size(), mask_dim.data(), mask_dim.size()
422 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
425 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
426 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
429 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
430 float ConstScore = -999;
432 for (
int i = 0;
i < arrSize;
i++){
435 if (ConstScore<floatarr[
i]){
436 ConstScore = floatarr[
i];
440 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
453 size_t input_tensor_size =
m_nvars;
454 std::vector<float> input_tensor_values(
m_nvars);
462 int output_tensor_values = output_tensor_values_[testSample];
465 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
469 std::vector<float> empty = {1.};
473 std::vector<Ort::Value> input_tensor;
474 std::vector<int64_t> aaa = {1,
m_nvars};
475 input_tensor.emplace_back(
476 Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size, aaa.data(), aaa.size())
478 input_tensor.emplace_back(
481 input_tensor.emplace_back(
484 input_tensor.emplace_back(
489 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
492 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
493 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
496 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
497 float HLScore = -999;
499 for (
int i = 0;
i < arrSize;
i++){
501 if (HLScore<floatarr[
i]){
502 HLScore = floatarr[
i];
506 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
519 {0,
"pT"}, {1,
"CNN"}, {2,
"D2"}, {3,
"nTracks"}, {4,
"ZCut12"},
520 {5,
"Tau1_wta"}, {6,
"Tau2_wta"}, {7,
"Tau3_wta"},
521 {8,
"KtDR"}, {9,
"Split12"}, {10,
"Split23"},
522 {11,
"ECF1"}, {12,
"ECF2"}, {13,
"ECF3"},
523 {14,
"Angularity"}, {15,
"FoxWolfram0"}, {16,
"FoxWolfram2"},
524 {17,
"Aplanarity"}, {18,
"PlanarFlow"}, {19,
"Qw"},
528 return StatusCode::SUCCESS;