40                          __begin + delimiter[1],
 
   41                          __begin + delimiter[2]);
 
   47       const size_t n = (N - 1) >> 1;
 
   53                          __begin + delimiter[ n ],
 
   54                          __begin + delimiter[N-1]);
 
   93       return std::numeric_limits<T>::max();
 
  105 int main(
int argc, 
char **argv)
 
  114     JParser<> zap(
"Example program to test performance of merge sort.");
 
  121   catch(
const exception &error) {
 
  122     FATAL(error.what() << endl);
 
  128   if (rate_Hz <= 0.0) {
 
  129     FATAL(
"Rate " << rate_Hz << 
" < 0 Hz." << endl);
 
  132   const double period = 1.0e9 / rate_Hz;      
 
  134   const double Tmin   = 0.0;                  
 
  135   const double Tmax   = 1.0e8;                
 
  138   const int NUMBER_OF_MODULES = 115 * 18;
 
  142   typedef double                     hit_type; 
 
  143   typedef JElement<hit_type>         JElement_t;
 
  153   size_t number_of_hits = 0;
 
  157     for (
double t1 = Tmin + gRandom->Exp(period); t1 < Tmax; t1 += gRandom->Exp(period), ++number_of_hits) {
 
  161     NOTICE(
"PMT[" << setw(2) << 
i << 
"]  " << input[
i].size() << endl);
 
  169     JTimer(
"std::inplace_merge"),
 
  177     for (
int i = 0; 
i != NUMBER_OF_MODULES; ++
i) {
 
  184         copy(input[
i].begin(), input[
i].end(), back_inserter(buffer));
 
  187       std::sort(buffer.begin(), buffer.end());
 
  191       ASSERT(buffer.size() == number_of_hits,         
"Test std::sort.");
 
  192       ASSERT(is_sorted(buffer.begin(), buffer.end()), 
"Test std::sort.");
 
  201     for (
int i = 0; 
i != NUMBER_OF_MODULES; ++
i) {
 
  208         n += input[
i].size();
 
  213       JBuffer1D::iterator out = buffer.begin();      
 
  219         out = 
copy(input[
i].begin(), input[
i].end(), out);
 
  221         delimiter[
i+1] = 
distance(buffer.begin(), out);
 
  224       inplace_merge(buffer.begin(), delimiter.size(), delimiter.data());
 
  228       ASSERT(buffer.size() == number_of_hits,         
"Test std::inplace_merge.");
 
  229       ASSERT(is_sorted(buffer.begin(), buffer.end()), 
"Test std::inplace_merge.");
 
  235     JMergeSort<hit_type> merge;
 
  237     for (
int i = 0; 
i != NUMBER_OF_MODULES; ++
i) {
 
  243       merge(input, buffer);
 
  247       ASSERT(buffer.size() == number_of_hits,         
"Test JMergeSort.");
 
  248       ASSERT(is_sorted(buffer.begin(), buffer.end()), 
"Test JMergeSort.");
 
  253   for (
int i = 0; 
i != 
sizeof(timer)/
sizeof(timer[0]); ++
i) {
 
  254     timer[
i].print(cout, 
false);
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
static const JGroup< double > & getElement
 
#define ASSERT(A,...)
Assert macro. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
do set_variable OUTPUT_DIRECTORY $WORKDIR T
 
General purpose messaging. 
 
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
 
Utility class to parse command line options. 
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module. 
 
void putEndMarker(std::vector< JElement_t, JAllocator_t > &buffer, const JElement_t &value)
Put end marker.