File indexing completed on 2025-01-31 09:21:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 #ifndef CEXMC_ANGULAR_RANGE_HH
0045 #define CEXMC_ANGULAR_RANGE_HH
0046
0047 #include <vector>
0048 #include <iosfwd>
0049 #include <G4Types.hh>
0050
0051
0052 struct CexmcAngularRange
0053 {
0054 CexmcAngularRange()
0055 {}
0056
0057 CexmcAngularRange( G4double top_, G4double bottom_, G4int index_ ) :
0058 top( top_ ), bottom( bottom_ ), index( index_ )
0059 {}
0060
0061 G4double top;
0062
0063 G4double bottom;
0064
0065 G4int index;
0066
0067 template < typename Archive >
0068 void serialize( Archive & archive, const unsigned int version );
0069 };
0070
0071
0072 typedef std::vector< CexmcAngularRange > CexmcAngularRangeList;
0073
0074
0075 template < typename Archive >
0076 inline void CexmcAngularRange::serialize( Archive & archive,
0077 const unsigned int )
0078 {
0079 archive & top;
0080 archive & bottom;
0081 archive & index;
0082 }
0083
0084
0085 inline G4bool operator<( const CexmcAngularRange & left,
0086 const CexmcAngularRange & right )
0087 {
0088 if ( left.top != right.top )
0089 return left.top > right.top;
0090 if ( left.bottom != right.bottom )
0091 return left.bottom < right.bottom;
0092
0093 return false;
0094 }
0095
0096
0097 void GetNormalizedAngularRange( const CexmcAngularRangeList & src,
0098 CexmcAngularRangeList & dst );
0099
0100
0101 void GetAngularGaps( const CexmcAngularRangeList & src,
0102 CexmcAngularRangeList & dst );
0103
0104
0105 std::ostream & operator<<( std::ostream & out,
0106 const CexmcAngularRange & angularRange );
0107
0108
0109 std::ostream & operator<<( std::ostream & out,
0110 const CexmcAngularRangeList & angularRanges );
0111
0112
0113 #endif
0114