1 #ifndef __JSUPPORT__JTREESCANNER__
2 #define __JSUPPORT__JTREESCANNER__
28 namespace JPP {
using namespace JSUPPORT; }
53 template<
class JClass_t>
55 public JPointer< JChainReader<JClass_t> >
101 gErrorIgnoreLevel = kError;
115 template<
class JClass_t = JNullType,
class JEvaluator_t = JNullType>
137 template<
class JDerived_t,
class JBase_t>
142 public JEquals< JTreeScanner<JAssertConversion<JDerived_t, JBase_t>, JNullType> >
192 return (this->getLimit() ==
object.getLimit() &&
193 this->getFilelist() ==
object.getFilelist());
213 if (counter < this->getLowerLimit()) {
214 skip(this->getLowerLimit() - counter);
217 return (counter < this->getEntries() &&
218 counter < this->getUpperLimit());
229 if (this->hasNext()) {
231 this->
get()->GetEvent(counter++);
233 ps.reset(this->
get()->getAddress());
264 using namespace JROOT;
266 this->setLimit(limit);
270 this->
get()->Reset();
274 TFile* file = TFile::Open(i->c_str());
278 if (file->GetListOfKeys()->Contains(this->
get()->getTreeName())) {
279 this->
get()->Add(i->c_str());
288 actionAtFileOpen<JDerived_t>(this->
get()->GetCurrentFile());
289 actionAtFileOpen<JBase_t> (this->
get()->GetCurrentFile());
300 return this->
get()->GetEntries();
312 if (index >= 0 && index < this->getEntries()) {
314 this->
get()->GetEvent(index);
316 return this->
get()->getAddress();
341 return JDerived_t::Class_Name();
356 template<
class JClass_t>
358 public JTreeScanner<JAssertConversion<JClass_t, JClass_t>, JNullType>
401 template<
class JDerived_t,
class JBase_t,
class JEvaluator_t>
404 public JTreeScanner<JAssertConversion<JDerived_t, JBase_t>, JNullType>
426 const double __value) :
441 return first.value < second.value;
452 friend inline bool operator<(
const JEntry_t& entry,
const double value)
454 return entry.value < value;
495 const JEvaluator_t& evaluator = JEvaluator_t()) :
511 const JEvaluator_t& evaluator = JEvaluator_t()) :
525 if (this->hasNext()) {
527 this->
get()->GetEvent(
queue[this->counter++].index);
529 ps.reset(this->
get()->getAddress());
552 setBranchStatus(this->
get()->GetBranch(this->
get()->getBranchName()),
BRANCH_PATTERN,
false);
554 queue.resize(this->getEntries());
556 typename queue_type::iterator out =
queue.begin();
558 for (Long64_t i = 0, n0 = 0; i != this->getEntries(); ++i, ++out) {
560 const Long64_t n1 = (100 * (i + 1)) / this->getEntries();
564 STATUS(left << setw(24) << this->
get()->GetName() << right <<
' ' << setw(3) << n1 <<
"%\r");
DEBUG(endl);
569 this->
get()->GetEvent(i);
571 const data_type* p = this->
get()->getAddress();
577 this->
get()->SetBranchStatus(
"*", 1);
591 if (index >= 0 && index < (Long64_t)
queue.size()) {
593 this->
get()->GetEvent(
queue[index].index);
595 return this->
get()->getAddress();
610 virtual Long64_t
find(
const double value)
const override
614 if (!
queue.empty()) {
616 typename queue_type::const_iterator p = lower_bound(
queue.begin(),
queue.end(), value);
618 if (p ==
queue.end()) {
620 return queue.size() - 1;
622 }
else if (p ==
queue.begin()) {
628 typename queue_type::const_iterator q = p--;
630 if (value - p->value < q->value - value)
654 if (branch != NULL) {
656 TObjArray* array = branch->GetListOfBranches();
658 for (Int_t i = 0; i != array->GetEntries(); ++i) {
660 TBranch* p = (TBranch*) array->At(i);
662 if (p != NULL &&
string(p->GetName()).find(pattern) != string::npos) {
664 if (p->GetSplitLevel() == 0) {
666 NOTICE(
"Set status of branch " << p->GetName() <<
" to " << status << endl);
668 p->SetStatus(status);
672 setBranchStatus(p, pattern, status);
689 template<
class JClass_t,
class JEvaluator_t>
691 public JTreeScanner<JAssertConversion<JClass_t, JClass_t>, JEvaluator_t>
707 const JEvaluator_t& evaluator = JEvaluator_t()) :
721 const JEvaluator_t& evaluator = JEvaluator_t()) :
virtual const pointer_type & next() override
Get next element.
virtual void configure(const JMultipleFileScanner_t &file_list, const JLimit &limit) override
Configure.
virtual Long64_t find(const double value) const override
Find index of element that is closest in value to given value.
JTreeScanner(const JMultipleFileScanner_t &file_list, const JLimit &limit=JLimit())
Constructor.
JTreeScanner(const JMultipleFileScanner_t &file_list, const JLimit &limit, const JEvaluator_t &evaluator=JEvaluator_t())
Constructor.
JEntry_t(const Long64_t __index, const double __value)
Constructor.
virtual bool hasNext() override
Check availability of next element.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
unsigned int skip_type
Type definition for number of objects to skip.
JTreeScanner(const JMultipleFileScanner_t &file_list, const JEvaluator_t &evaluator=JEvaluator_t())
Constructor.
then echo Submitting reweighting and histogram comparison jobs to nikhef stbc batch queue
static void setBranchStatus(TBranch *branch, const char *pattern, const bool status)
Set status of branch.
JTreeScannerInterface< JBase_t >::pointer_type pointer_type
JTreeScanner(const JMultipleFileScanner_t &file_list, const JLimit &limit, const JEvaluator_t &evaluator=JEvaluator_t())
Constructor.
Type definition for counter for ROOT TTree and auxiliary methods.
JTreeScanner(const JMultipleFileScanner_t &file_list, const JEvaluator_t &evaluator=JEvaluator_t())
Constructor.
Auxialiary class to assert type conversion.
Long64_t counter_type
Type definition for counter.
friend bool operator<(const JEntry_t &entry, const double value)
Comparison between TChain entry and value.
virtual void rewind() override
Rewind.
JTreeScanner()
Default constructor.
bool is_valid() const
Check validity of pointer.
Template definition for direct access of elements in ROOT TChain.
JTreeScanner()
Default constructor.
virtual skip_type skip(const skip_type ns) override
Skip items.
Auxiliary interface for direct access of elements in ROOT TChain.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
Auxiliary class for template TChain reading.
virtual data_type * getEntry(Long64_t index) override
Get entry at given index.
virtual void configure(const JMultipleFileScanner_t &file_list, const JLimit &limit) override
Configure.
bool equals(const JTreeScanner &object) const
Check equality.
virtual Long64_t getEntries() const override
Get number of entries.
Scanning of objects from a single file according a format that follows from the extension of each fil...
virtual data_type * getEntry(Long64_t index) override
Get entry at given index.
friend bool operator<(const JEntry_t &first, const JEntry_t &second)
Comparison between two TChain entries.
std::ostream & rewind(std::ostream &out)
Rewind character.
virtual const pointer_type & next() override
Get next element.
Auxiliary class for defining the range of iterations of objects.
JTreeScannerInterface< JBase_t, JEvaluator_t >::pointer_type pointer_type
TChain reading for template data type.
JTreeScanner()
Default constructor.
Template definition of auxiliary base class for comparison of data structures.
Long64_t index
index in TChain
std::vector< JEntry_t > queue_type
Type definition of internal queue for ordering the elements in the TChain.
Auxiliary class for no type definition.
Template implementation of class that holds pointer to object(s).
Data type dependent action methods for customised ROOT version management.
virtual counter_type getCounter() const override
Get internal counter.
JMultipleFileScanner_t getFilelist() const
Get file list.
~JTreeScanner_t()
Destructor.
virtual const char * getClassName() const override
Get actual class name.
General purpose messaging.
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
JTreeScanner(const JTreeScanner &input)
Copy constructor.
static const char *const BRANCH_PATTERN
Pattern match for names of sub-branches that will not be read when ordering elements in a TTree...
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Base class for JTreeScanner.
JEntry_t()
Default constructor.
Auxiliary base class for list of file names.
JTreeScanner(const JTreeScanner &input)
Copy constructor.
General purpose class for object reading from a list of file names.
JTreeScanner(const JMultipleFileScanner_t &file_list, const JLimit &limit=JLimit())
Constructor.
double value
corresponding value
JTreeScanner()
Default constructor.
JTreeScanner_t()
Default constructor.
#define DEBUG(A)
Message macros.
Auxiliary class for handling debug parameter within a class.