Jpp  18.2.1-ARCA-DF-PATCH
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | Private Attributes | List of all members
JSUPPORT::JMultipleFileScanner< Head > Class Template Referenceabstract

Template specialisation of JMultipleFileScanner for Monte Carlo header. More...

#include <JMonteCarloFileSupportkit.hh>

Inheritance diagram for JSUPPORT::JMultipleFileScanner< Head >:
JSUPPORT::JMultipleFileScanner<> JLANG::JRewindableAbstractObjectIterator< T > JLANG::JRewindableObjectIterator< T > JLANG::JRewindableObjectIterator< T > JLANG::JAbstractObjectIterator< T > JLANG::JObjectIterator< T > JLANG::JRewindable< T > JLANG::JObjectIterator< T > JLANG::JRewindable< T > JLANG::JObjectIterator< T >

Public Types

typedef
JMultipleFileScanner::input_type 
input_type
 
typedef
JRewindableObjectIterator
< JNullType >::pointer_type 
pointer_type
 
typedef JObjectIterator< T >
::pointer_type 
pointer_type
 

Public Member Functions

 JMultipleFileScanner ()
 Default constructor. More...
 
 JMultipleFileScanner (const JMultipleFileScanner_t &file_list)
 Copy constructor. More...
 
virtual void rewind () override
 Rewind. More...
 
virtual bool setObject (Head &object) override
 Set object. More...
 
const HeadgetHeader ()
 Get Monte Carlo Header. More...
 
const std::stringgetFilename () const
 Get current file name. More...
 
counter_type getCounter () const
 Get counter. More...
 
virtual bool hasNext () override
 Check availability of next element. More...
 
virtual const pointer_typenext () override
 Get next element. More...
 
virtual skip_type skip (const skip_type ns) override
 Skip items. More...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 
virtual bool hasNext () override
 Check availability of next element. More...
 
virtual const pointer_typenext () override
 Get next element. More...
 
virtual bool setObject (T &object)=0
 Set object. More...
 

Static Public Attributes

static bool merge = false
 Allow merging of files w/o header. More...
 

Protected Attributes

JFileScanner< JNullTypescanner
 
unsigned int index
 
counter_type counter
 
T object
 object More...
 
bool has_next
 status More...
 

Private Attributes

bool do_next
 

Detailed Description

template<>
class JSUPPORT::JMultipleFileScanner< Head >

Template specialisation of JMultipleFileScanner for Monte Carlo header.

This class re-implements the methods rewind and setObject of the JLANG::JRewindableAbstractObjectIterator interface so that all header objects in the complete file list are read and added. It provides for the method JSUPPORT::getHeader which returns the sum of all headers.

Definition at line 406 of file JMonteCarloFileSupportkit.hh.

Member Typedef Documentation

Definition at line 309 of file JMultipleFileScanner.hh.

Definition at line 310 of file JMultipleFileScanner.hh.

template<class T>
typedef JObjectIterator<T>::pointer_type JLANG::JAbstractObjectIterator< T >::pointer_type
inherited

Definition at line 39 of file JAbstractObjectIterator.hh.

Constructor & Destructor Documentation

Copy constructor.

The file list is copied.

Parameters
file_listJMultipleFileScanner

Definition at line 427 of file JMonteCarloFileSupportkit.hh.

Member Function Documentation

virtual void JSUPPORT::JMultipleFileScanner< Head >::rewind ( )
inlineoverridevirtual

Rewind.

Reimplemented from JSUPPORT::JMultipleFileScanner<>.

Definition at line 439 of file JMonteCarloFileSupportkit.hh.

virtual bool JSUPPORT::JMultipleFileScanner< Head >::setObject ( Head object)
inlineoverridevirtual

Set object.

Parameters
objectreference to object to be set
Returns
true if set; else false

Definition at line 451 of file JMonteCarloFileSupportkit.hh.

452  {
453  if (do_next) {
454 
455  using namespace JLANG;
456 
457  JHead header;
458 
459  do_next = false;
460 
461  unsigned int count = 0;
462 
464 
465  for (const_iterator i = this->begin(); i != this->end(); ++i) {
466 
467  scanner.open(i->c_str());
468 
469  if (scanner.hasNext()) {
470 
471  const JHead buffer = *scanner.next();
472 
473  if (count == 0)
474  header = buffer;
475  else if (header.match(buffer))
476  header.add(buffer);
477  else
478  THROW(JException, "JMultipleFileScanner<Head>::setObject(): inconsistent headers.");
479 
480  ++count;
481  }
482 
483  scanner.close();
484  }
485 
486  copy(header, object);
487 
488  if (count != 0 && count != this->size()) {
489  if (!merge) {
490  THROW(JException, "JMultipleFileScanner<Head>::setObject(): missing header(s): " << count << " != " << this->size());
491  }
492  }
493 
494  return count != 0;
495 
496  } else {
497 
498  return false;
499  }
500  }
General exception.
Definition: JException.hh:24
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
static bool merge
Allow merging of files w/o header.
virtual void open(const char *file_name) override
Open file.
Definition: JFileScanner.hh:78
virtual const pointer_type & next()=0
Get next element.
Monte Carlo run header.
Definition: JHead.hh:1234
virtual bool hasNext()=0
Check availability of next element.
JHead & add(const JHead &header)
Addition of headers.
Definition: JHead.hh:1529
virtual void close() override
Close device.
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162
Object reading from file.
Definition: JFileScanner.hh:37
const Head& JSUPPORT::JMultipleFileScanner< Head >::getHeader ( )
inline

Get Monte Carlo Header.

Returns
header

Definition at line 508 of file JMonteCarloFileSupportkit.hh.

509  {
510  const Head* p = NULL;
511 
512  if (!this->hasNext() || (p = this->next()) == NULL) {
513  THROW(JNullPointerException, "JMultipleFileScanner<Head>::getHeader(): Missing Header.");
514  }
515 
516  rewind();
517 
518  return *p;
519  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
Exception for null pointer operation.
Definition: JException.hh:232
virtual bool hasNext() override
Check availability of next element.
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
Definition: Head.hh:65
virtual const pointer_type & next() override
Get next element.
const std::string& JSUPPORT::JMultipleFileScanner< JNullType >::getFilename ( ) const
inlineinherited

Get current file name.

Note that this method should only be called when method hasNext() returns true.

Returns
file name

Definition at line 371 of file JMultipleFileScanner.hh.

372  {
373  return this->at(index);
374  }
counter_type JSUPPORT::JMultipleFileScanner< JNullType >::getCounter ( ) const
inlineinherited

Get counter.

Returns
counter

Definition at line 382 of file JMultipleFileScanner.hh.

383  {
384  return counter;
385  }
virtual bool JSUPPORT::JMultipleFileScanner< JNullType >::hasNext ( )
inlineoverridevirtualinherited

Check availability of next element.

Returns
true if the iteration has more elements; else false

Implements JLANG::JObjectIterator< T >.

Definition at line 409 of file JMultipleFileScanner.hh.

410  {
411  if (is_valid()) {
412 
413  if (counter < getUpperLimit() && index != this->size()) {
414 
415  // first time around
416 
417  if (!scanner.is_open()) {
418  scanner.open(getFilename().c_str());
419  }
420 
421  if (counter < getLowerLimit()) {
422  counter += scanner.skip(getLowerLimit() - counter);
423  }
424 
425  if (!scanner.hasNext()) {
426 
427  scanner.close();
428 
429  ++index;
430 
431  return hasNext();
432  }
433 
434  return true;
435 
436  } else {
437 
438  // last time around
439 
440  if (scanner.is_open()) {
441  scanner.close();
442  }
443 
444  scanner.reset();
445  }
446  }
447 
448  return false;
449  }
bool is_valid(const json &js)
Check validity of JSon data.
virtual skip_type skip(const skip_type ns)
Skip items.
virtual void open(const char *file_name) override
Open file.
Definition: JFileScanner.hh:78
virtual bool hasNext() override
Check availability of next element.
virtual bool hasNext()=0
Check availability of next element.
virtual bool is_open() const override
Check is device is open.
const std::string & getFilename() const
Get current file name.
virtual void close() override
Close device.
virtual void reset() override
Reset pointer.
virtual const pointer_type& JSUPPORT::JMultipleFileScanner< JNullType >::next ( )
inlineoverridevirtualinherited

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 457 of file JMultipleFileScanner.hh.

458  {
459  ++counter;
460 
461  return scanner.next();
462  }
virtual const pointer_type & next()=0
Get next element.
virtual skip_type JSUPPORT::JMultipleFileScanner< JNullType >::skip ( const skip_type  ns)
inlineoverridevirtualinherited

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented in JSUPPORT::JMultipleFileScanner< JTypeList< JHead_t, JTail_t > >.

Definition at line 471 of file JMultipleFileScanner.hh.

472  {
473  skip_type i = 0;
474 
475  while (this->hasNext() && i != ns) {
476  i += scanner.skip(ns - i);
477  }
478 
479  counter += i;
480 
481  return i;
482  }
unsigned int skip_type
Type definition for number of objects to skip.
virtual skip_type skip(const skip_type ns)
Skip items.
std::vector< size_t > ns
virtual bool hasNext() override
Check availability of next element.
template<class T>
virtual skip_type JLANG::JObjectIterator< T >::skip ( const skip_type  ns)
inlinevirtualinherited

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented in JLANG::JPipe< T >, JLANG::JPipe< JTail_t >, JLANG::JPipe< JHead_t >, JLANG::JSTDObjectIterator< T >, JLANG::JAbstractObjectReader< T >, JLANG::JAbstractObjectReader< const event_type >, JLANG::JAbstractObjectReader< JNullType >, JLANG::JAbstractObjectReader< const T >, JLANG::JAbstractObjectReader< JTail_t >, JLANG::JAbstractObjectReader< JHead_t >, JLANG::JAbstractObjectReader< KM3NETDAQ::KM3NETDAQ::JDAQEvent >, and JLANG::JAbstractObjectReader< JDAQSummaryslice >.

Definition at line 90 of file JObjectIterator.hh.

91  {
92  skip_type i = 0;
93 
94  for ( ; i != ns && hasNext(); ++i) {
95  next();
96  }
97 
98  return i;
99  }
unsigned int skip_type
Type definition for number of objects to skip.
std::vector< size_t > ns
virtual const pointer_type & next()=0
Get next element.
virtual bool hasNext()=0
Check availability of next element.
template<class T>
virtual bool JLANG::JAbstractObjectIterator< T >::hasNext ( )
inlineoverridevirtualinherited

Check availability of next element.

Returns
true if the iteration has more elements; else false

Implements JLANG::JObjectIterator< T >.

Definition at line 56 of file JAbstractObjectIterator.hh.

57  {
58  if (!has_next) {
59  has_next = this->setObject(object);
60  }
61 
62  return has_next;
63  }
virtual bool setObject(T &object)=0
Set object.
template<class T>
virtual const pointer_type& JLANG::JAbstractObjectIterator< T >::next ( )
inlineoverridevirtualinherited

Get next element.

Returns
pointer to element

Implements JLANG::JObjectIterator< T >.

Definition at line 71 of file JAbstractObjectIterator.hh.

72  {
73  if (has_next)
74  ps.reset(&this->object);
75  else
76  ps.reset(NULL);
77 
78  has_next = false;
79 
80  return ps;
81  }
virtual void reset() override
Reset pointer.
Definition: JPointer.hh:84
template<class T>
virtual bool JLANG::JAbstractObjectIterator< T >::setObject ( T object)
pure virtualinherited

Member Data Documentation

bool JSUPPORT::JMultipleFileScanner< Head >::merge = false
static

Allow merging of files w/o header.

Initialisation of merge option.

Definition at line 521 of file JMonteCarloFileSupportkit.hh.

bool JSUPPORT::JMultipleFileScanner< Head >::do_next
private

Definition at line 524 of file JMonteCarloFileSupportkit.hh.

Definition at line 486 of file JMultipleFileScanner.hh.

unsigned int JSUPPORT::JMultipleFileScanner< JNullType >::index
protectedinherited

Definition at line 487 of file JMultipleFileScanner.hh.

counter_type JSUPPORT::JMultipleFileScanner< JNullType >::counter
protectedinherited

Definition at line 488 of file JMultipleFileScanner.hh.

template<class T>
T JLANG::JAbstractObjectIterator< T >::object
protectedinherited

object

Definition at line 34 of file JAbstractObjectIterator.hh.

template<class T>
bool JLANG::JAbstractObjectIterator< T >::has_next
protectedinherited

status

Definition at line 35 of file JAbstractObjectIterator.hh.


The documentation for this class was generated from the following file: