Back to home page

Project CMSSW displayed by LXR

 
 

    


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 Transition: The allowed framework transitions
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   //Useful for converting EndBranchType to BranchType
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 }  // namespace edm
0046 #endif