File indexing completed on 2025-02-14 03:16:40
0001 #ifndef FWCore_Utilities_Transition_h
0002 #define FWCore_Utilities_Transition_h
0003
0004
0005
0006
0007
0008 #include "FWCore/Utilities/interface/BranchType.h"
0009 #include <type_traits>
0010
0011 namespace edm {
0012 enum class Transition {
0013 Event,
0014 BeginLuminosityBlock,
0015 EndLuminosityBlock,
0016 BeginRun,
0017 EndRun,
0018 BeginProcessBlock,
0019 EndProcessBlock,
0020 AccessInputProcessBlock,
0021 NumberOfTransitions,
0022 NumberOfEventSetupTransitions = BeginProcessBlock
0023 };
0024
0025 constexpr unsigned int kNumberOfEventSetupTransitions =
0026 static_cast<unsigned int>(Transition::NumberOfEventSetupTransitions);
0027
0028
0029 constexpr BranchType convertToBranchType(Transition iValue) {
0030 constexpr BranchType branches[] = {InEvent, InLumi, InLumi, InRun, InRun, InProcess, InProcess};
0031 return branches[static_cast<std::underlying_type<Transition>::type>(iValue)];
0032 }
0033
0034 constexpr Transition convertToTransition(BranchType iValue) {
0035 constexpr Transition trans[] = {
0036 Transition::Event, Transition::BeginLuminosityBlock, Transition::BeginRun, Transition::BeginProcessBlock};
0037 return trans[iValue];
0038 }
0039
0040 constexpr bool isEndTransition(Transition iValue) {
0041 return iValue == Transition::EndLuminosityBlock or iValue == Transition::EndRun or
0042 iValue == Transition::EndProcessBlock;
0043 }
0044
0045 }
0046 #endif