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){
28 for(
int iColor=0; iColor<n_colors; ++iColor){
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;
92 Ort::SessionOptions sessionOptions;
93 sessionOptions.SetIntraOpNumThreads( 1 );
94 sessionOptions.SetGraphOptimizationLevel( ORT_ENABLE_BASIC );
98 sessionOptions.DisableCpuMemArena();
101 Ort::AllocatorWithDefaultOptions allocator;
104 m_env = std::make_unique< Ort::Env >(ORT_LOGGING_LEVEL_WARNING,
"");
116 char* input_name =
m_session->GetInputNameAllocated(i, allocator).release();
120 Ort::TypeInfo type_info =
m_session->GetInputTypeInfo(i);
121 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
122 ONNXTensorElementDataType
type = tensor_info.GetElementType();
140 char* output_name =
m_session->GetOutputNameAllocated(i, allocator).release();
144 Ort::TypeInfo type_info =
m_session->GetOutputTypeInfo(i);
145 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
146 ONNXTensorElementDataType
type = tensor_info.GetElementType();
160 return StatusCode::SUCCESS;
171 std::vector<float> input_tensor_values(input_tensor_size);
179 int output_tensor_values = output_tensor_values_[testSample];
182 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
183 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());
184 assert(input_tensor.IsTensor());
187 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
190 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
191 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
194 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
195 float ConstScore = -999;
197 for (
int i = 0; i < arrSize; i++){
199 if (ConstScore<floatarr[i]){
200 ConstScore = floatarr[i];
204 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
229 int output_tensor_values = output_tensor_values_[testSample];
232 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
233 std::vector<Ort::Value> input_tensors;
234 for (
long unsigned int i=0; i<constituents.size(); i++) {
237 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.at(i).
size())};
239 input_tensors.push_back(Ort::Value::CreateTensor<float>(
241 constituents.at(i).data(), constituents.at(i).size(), const_dim.data(), const_dim.size()
247 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
250 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
251 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
254 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
255 float ConstScore = -999;
257 for (
int i = 0; i < arrSize; i++){
259 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
260 if (ConstScore<floatarr[i]){
261 ConstScore = floatarr[i];
265 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
290 int output_tensor_values = output_tensor_values_[testSample];
293 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
294 std::vector<Ort::Value> input_tensors;
297 std::vector<float> constituents_values;
298 for (
long unsigned int i=0; i<constituents.size(); i++) {
299 for (
long unsigned int j=0; j<7; j++) {
300 constituents_values.push_back(constituents.at(i).at(j));
304 std::vector<float> interactions_values;
305 for (
long unsigned int i=0; i<interactions.size(); i++) {
306 for (
long unsigned int k=0; k<interactions.size(); k++) {
307 for (
long unsigned int j=0; j<4; j++) {
308 interactions_values.push_back(interactions.at(i).at(k).at(j));
313 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), 7};
314 input_tensors.push_back(Ort::Value::CreateTensor<float>(
316 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
320 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(constituents.size()),
static_cast<int64_t
>(constituents.size()), 4};
321 input_tensors.push_back(Ort::Value::CreateTensor<float>(
323 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
328 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
331 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
332 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
335 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
336 float ConstScore = -999;
338 for (
int i = 0; i < arrSize; i++){
340 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
341 if (ConstScore<floatarr[i]){
342 ConstScore = floatarr[i];
346 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
353 double JSSMLTool::retrieveConstituentsScore(std::vector<std::vector<float>> constituents, std::vector<std::vector<std::vector<float>>> interactions, std::vector<std::vector<float>> mask)
const {
372 int output_tensor_values = output_tensor_values_[testSample];
375 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
376 std::vector<Ort::Value> input_tensors;
379 std::vector<float> constituents_values;
380 for (
long unsigned int j=0; j<7; j++) {
381 for (
long unsigned int i=0; i<constituents.size(); i++) {
382 constituents_values.push_back(constituents.at(i).at(j));
386 std::vector<float> interactions_values;
387 for (
long unsigned int k=0; k<4; k++) {
388 for (
long unsigned int i=0; i<interactions.size(); i++) {
389 for (
long unsigned int j=0; j<interactions.size(); j++) {
390 interactions_values.push_back(interactions.at(i).at(j).at(k));
395 std::vector<float> mask_values;
396 for (
long unsigned int j=0; j<1; j++) {
397 for (
long unsigned int i=0; i<mask.size(); i++) {
398 mask_values.push_back(mask.at(i).at(j));
402 std::vector<int64_t> const_dim = {1, 7,
static_cast<int64_t
>(constituents.size())};
403 input_tensors.push_back(Ort::Value::CreateTensor<float>(
405 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
409 std::vector<int64_t> inter_dim = {1, 4,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size())};
410 input_tensors.push_back(Ort::Value::CreateTensor<float>(
412 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
416 std::vector<int64_t> mask_dim = {1, 1,
static_cast<int64_t
>(mask.size())};
417 input_tensors.push_back(Ort::Value::CreateTensor<float>(
419 mask_values.data(), mask_values.size(), mask_dim.data(), mask_dim.size()
424 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
427 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
428 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
431 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
432 float ConstScore = -999;
434 for (
int i = 0; i < arrSize; i++){
436 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
437 if (ConstScore<floatarr[i]){
438 ConstScore = floatarr[i];
442 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
464 const int nParticleVariables = 9;
465 const int nInteractionVariables = 4;
472 int output_tensor_values = output_tensor_values_[testSample];
475 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
476 std::vector<Ort::Value> input_tensors;
479 std::vector<float> constituents_values;
480 for (
const auto& c : constituents)
481 constituents_values.insert(constituents_values.end(), c.begin(), c.end());
483 std::vector<float> interactions_values;
484 for (
const auto& inter_i : interactions) {
485 for (
const auto& inter_j : inter_i)
486 interactions_values.insert(interactions_values.end(), inter_j.begin(), inter_j.end());
489 std::vector<uint8_t> mask_values;
490 for (
const auto& m : mask)
491 mask_values.push_back(m[0]);
493 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), nParticleVariables};
494 input_tensors.push_back(Ort::Value::CreateTensor<float>(
496 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
500 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size()), nInteractionVariables};
501 input_tensors.push_back(Ort::Value::CreateTensor<float>(
503 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
507 std::vector<int64_t> mask_dim = {1,
static_cast<int64_t
>(mask.size())};
508 input_tensors.push_back(Ort::Value::CreateTensor<bool>(
510 reinterpret_cast<bool*
>(mask_values.data()),
511 mask_values.size(), mask_dim.data(), mask_dim.size()
516 assert(output_tensors.front().IsTensor());
519 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
520 auto info = output_tensors.front().GetTensorTypeAndShapeInfo();
521 size_t arrSize = info.GetElementCount();
524 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
525 std::vector<float> ConstScores;
526 for (
long unsigned int i = 0; i < arrSize; i++){
528 ConstScores.push_back(floatarr[i]);
542 size_t input_tensor_size =
m_nvars;
543 std::vector<float> input_tensor_values(
m_nvars);
551 int output_tensor_values = output_tensor_values_[testSample];
554 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
557 Ort::Value input1 = Ort::Value::CreateTensor<float>(memory_info,
const_cast<float*
>(input_tensor_values.data()), input_tensor_size,
m_input_node_dims.data(),
m_input_node_dims.size());
558 std::vector<float>
empty = {1.};
562 std::vector<Ort::Value> input_tensor;
563 std::vector<int64_t> aaa = {1,
m_nvars};
564 input_tensor.emplace_back(
565 Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size, aaa.data(), aaa.size())
567 input_tensor.emplace_back(
570 input_tensor.emplace_back(
573 input_tensor.emplace_back(
578 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
581 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
582 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
585 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
586 float HLScore = -999;
588 for (
int i = 0; i < arrSize; i++){
590 if (HLScore<floatarr[i]){
591 HLScore = floatarr[i];
595 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")