00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __TLumiBlockRange__
00010 #define __TLumiBlockRange__
00011
00012 #include "TObject.h"
00013 #include <vector>
00014
00015 namespace Root {
00016
00017 class TLumiBlockRange : public TObject {
00018
00019 public:
00020
00021 TLumiBlockRange();
00022 TLumiBlockRange( const Int_t& start, const Int_t& end = 2147483647 );
00023 virtual ~TLumiBlockRange();
00024
00025 TLumiBlockRange(const Root::TLumiBlockRange& other) ;
00026 TLumiBlockRange& operator=(const TLumiBlockRange& other) ;
00027
00028 const Root::TLumiBlockRange GetOverlapWith(const TLumiBlockRange& other) const ;
00029 const std::vector<Root::TLumiBlockRange> GetPartOnlyIn(const TLumiBlockRange& other) const ;
00030 const std::vector<Root::TLumiBlockRange> GetPartNotIn(const TLumiBlockRange& other) const ;
00031
00032 Bool_t Contains( const Int_t& number ) const;
00033
00034 inline Int_t Begin() const { return m_begin; }
00035 inline Int_t End() const { return m_end; }
00036 inline Bool_t IsEmpty() const { return (Begin()>End()); }
00037
00038 inline void SetBegin(const Int_t& begin) { m_begin=begin; }
00039 inline void SetEnd(const Int_t& end) { m_end=end; }
00040
00041 void Summary() const ;
00042
00043 private:
00044
00045 Int_t m_begin;
00046 Int_t m_end;
00047
00048 ClassDef(TLumiBlockRange,1)
00049 };
00050 }
00051
00052 #endif
00053