Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/ThePEG/Utilities/Interval.tcc is written in an unsupported language. File is not indexed.

0001 // -*- C++ -*-
0002 //
0003 // Interval.tcc is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 
0010 
0011 
0012 namespace ThePEG {
0013 
0014 template <typename T, typename CMP>
0015 template <typename Iterator>
0016 bool Interval<T,CMP>::check(Iterator first, Iterator last) {
0017   while ( first != last ) if ( includes(*first++) ) return true;
0018   return false;
0019 }
0020 
0021 template <typename T, typename CMP>
0022 template <typename Iterator>
0023 bool Interval<T,CMP>::checkAll(Iterator first, Iterator last) {
0024   while ( first != last ) if ( !includes(*first++) ) return false;
0025   return true;
0026 }
0027 
0028 template <typename T, typename CMP>
0029 std::vector< Interval<T,CMP> > Interval<T,CMP>::split(Interval<T,CMP> i, T x) {
0030   std::vector< Interval<T,CMP> > intervals;
0031   Interval<T,CMP> low = i.chopLower(x);
0032   if ( low.check() ) intervals.push_back(low);
0033   intervals.push_back(x);
0034   return intervals;
0035 }
0036   
0037 
0038 template <typename T, typename CMP>
0039 template <typename Iterator>
0040 std::vector< Interval<T,CMP> >
0041 Interval<T,CMP>::split(Interval<T,CMP> i, Iterator first, Iterator last) {
0042   typedef std::vector< Interval<T,CMP> > IVec;
0043   IVec intervals;
0044   if ( first != last ) {
0045     Interval<T,CMP> low = i.chopLower(*first++);
0046     IVec loints;
0047     if ( low.check() ) loints = split(low, first, last);
0048     IVec hiints = split(i, first, last);
0049     intervals.insert(intervals.end(), loints.begin(), loints.end());
0050     intervals.insert(intervals.end(), hiints.begin(), hiints.end());
0051   } else
0052     intervals = IVec(1, i);
0053   return intervals;
0054 }
0055 
0056 template <typename T, typename CMP>
0057 CMP Interval<T,CMP>::cmp;
0058 
0059 
0060 
0061 }