Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /jana2/src/libraries/JANA/Utils/JEventLevel.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // Copyright 2024, Jefferson Science Associates, LLC.
0002 // Subject to the terms in the LICENSE file found in the top-level directory.
0003 
0004 #pragma once
0005 #include <JANA/JException.h>
0006 #include <ostream>
0007 #include <sstream>
0008 
0009 enum class JEventLevel { Run, Subrun, SlowControls, Timeslice, Block, PhysicsEvent, Subevent, Task, None };
0010 
0011 inline std::ostream& operator<<(std::ostream& os, JEventLevel level) {
0012     switch (level) {
0013         case JEventLevel::Run: os << "Run"; break;
0014         case JEventLevel::Subrun: os << "Subrun"; break;
0015         case JEventLevel::Timeslice: os << "Timeslice"; break;
0016         case JEventLevel::Block: os << "Block"; break;
0017         case JEventLevel::SlowControls: os << "SlowControls"; break;
0018         case JEventLevel::PhysicsEvent: os << "PhysicsEvent"; break;
0019         case JEventLevel::Subevent: os << "Subevent"; break;
0020         case JEventLevel::Task: os << "Task"; break;
0021         default: os << "None"; break;
0022     }
0023     return os;
0024 }
0025 
0026 inline char toChar(JEventLevel level) {
0027     switch (level) {
0028         case JEventLevel::Run: return 'R';
0029         case JEventLevel::Subrun: return 'r';
0030         case JEventLevel::Timeslice: return 'T';
0031         case JEventLevel::Block: return 'B';
0032         case JEventLevel::SlowControls: return 'C';
0033         case JEventLevel::PhysicsEvent: return 'P';
0034         case JEventLevel::Subevent: return 'p';
0035         case JEventLevel::Task: return 't';
0036         default: return 'X';
0037     }
0038 }
0039 
0040 inline std::string toString(JEventLevel level) {
0041     std::stringstream ss;
0042     ss << level;
0043     return ss.str();
0044 }
0045 
0046 inline JEventLevel parseEventLevel(const std::string& level) {
0047     if (level == "Run") return JEventLevel::Run;
0048     if (level == "Subrun") return JEventLevel::Subrun;
0049     if (level == "Timeslice") return JEventLevel::Timeslice;
0050     if (level == "Block") return JEventLevel::Block;
0051     if (level == "SlowControls") return JEventLevel::SlowControls;
0052     if (level == "PhysicsEvent") return JEventLevel::PhysicsEvent;
0053     if (level == "Subevent") return JEventLevel::Subevent;
0054     if (level == "Task") return JEventLevel::Task;
0055     if (level == "None") return JEventLevel::None;
0056     throw JException("Invalid JEventLevel '%s'", level.c_str());
0057 }
0058 
0059 
0060 inline JEventLevel next_level(JEventLevel current_level) {
0061     switch (current_level) {
0062         case JEventLevel::Run: return JEventLevel::Subrun;
0063         case JEventLevel::Subrun: return JEventLevel::Timeslice;
0064         case JEventLevel::Timeslice: return JEventLevel::Block;
0065         case JEventLevel::Block: return JEventLevel::SlowControls;
0066         case JEventLevel::SlowControls: return JEventLevel::PhysicsEvent;
0067         case JEventLevel::PhysicsEvent: return JEventLevel::Subevent;
0068         case JEventLevel::Subevent: return JEventLevel::Task;
0069         case JEventLevel::Task: return JEventLevel::None;
0070         default: return JEventLevel::None;
0071     }
0072 }