ATLAS Offline Software
Loading...
Searching...
No Matches
SampleHandler.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SAMPLE_HANDLER_SAMPLE_HANDLER_HH
6#define SAMPLE_HANDLER_SAMPLE_HANDLER_HH
7
8//
9// Distributed under the Boost Software License, Version 1.0.
10// (See accompanying file LICENSE_1_0.txt or copy at
11// http://www.boost.org/LICENSE_1_0.txt)
12
13// Please feel free to contact me (krumnack@iastate.edu) for bug
14// reports, feature suggestions, praise and complaints.
15
16
17
19
20#include <boost/iterator/transform_iterator.hpp>
21#include <memory>
22#include <iosfwd>
23#include <map>
24#include <span>
25#include <vector>
26#include <TObject.h>
27
28namespace SH
29{
41 std::string dbg (const SampleHandler& obj, unsigned verbosity = 0);
42
43
50
51
52
60 class SampleHandler : public TObject
61 {
62 //
63 // public interface
64 //
65
70 public:
71 void testInvariant () const;
72
73
80 public:
82
83
90 public:
92
93
98 public:
100
101
108 public:
110
111
120 public:
121 void add (const Sample& sample);
122
123
133 public:
134 void add (std::shared_ptr<Sample> sample);
135
136
145 public:
146 void add (const SampleHandler& sh);
147
148
157 public:
158 void addWithPrefix (const SampleHandler& sh, const std::string& prefix);
159
160
168 public:
169 void remove (const std::string& name);
170
171
180 public:
181 void remove (const Sample *sample);
182
183
192 public:
193 Sample *get (const std::string& name);
194
195
204 public:
205 const Sample *get (const std::string& name) const;
206
207
216 public:
218
219
230 public:
231 SampleHandler find (const std::string& tags) const;
232
233
245 public:
246 Sample *findBySource (const std::string& name) const;
247
248
258 public:
259 SampleHandler findByName (const std::string& pattern) const;
260
261
269 public:
270 void print () const;
271
272
282 public:
283 void printContent () const;
284
285
297 public:
298 void save (const std::string& directory) const;
299
300
312 public:
313 void load (const std::string& directory);
314
315
329 public:
330 void updateLocation (const std::string& from, const std::string& to);
331
332
344 public:
345 void fetch (const SampleHandler& source);
346
347
357 public:
358 void fetchDefaults (const SampleHandler& source);
359
360
374 public:
375 bool check_complete (const SampleHandler& source) const;
376
377
390 public:
391 void setMetaDouble (const std::string& name, double value);
392
393
406 public:
407 void setMetaString (const std::string& name, const std::string& value);
408
409
424 public:
425 void setMetaDouble (const std::string& pattern, const std::string& name,
426 double value);
427
428
443 public:
444 void setMetaString (const std::string& pattern, const std::string& name,
445 const std::string& value);
446
447
454 private:
456 {
457 Sample *operator () (const std::shared_ptr<Sample>& p) const;
458 };
459
460
462 public:
463 typedef boost::transform_iterator<
465 std::vector<std::shared_ptr<Sample>>::const_iterator> iterator;
466
467
472 public:
473 iterator begin () const;
474
475
480 public:
481 iterator end () const;
482
483
488 public:
489 std::size_t size () const;
490
491
497 public:
498 Sample *operator [] (std::size_t index) const;
499
500
506 public:
507 Sample *at (std::size_t index) const;
508
509
511 public:
512 std::span<std::shared_ptr<Sample>> samples ();
513
514
515
516 //
517 // private interface
518 //
519
520 friend void swap (SampleHandler& a, SampleHandler& b);
521
523 private:
524 std::vector<std::shared_ptr<Sample>> m_samples;
525
527 private:
528 std::map<std::string,std::shared_ptr<Sample>> m_named;
529
530 ClassDef (SampleHandler, 1)
531 };
532}
533
534#endif
static Double_t a
void save(const std::string &directory) const
save the list of samples to the given directory
void swap(SampleHandler &a, SampleHandler &b)
standard swap
void add(const Sample &sample)
add a copy of the sample to the handler
void remove(const Sample *sample)
remove the given sample
void setMetaString(const std::string &name, const std::string &value)
set the meta-data string with the given name for all samples.
void printContent() const
print the debugging output to the screen
iterator begin() const
the begin iterator to use
void testInvariant() const
test the invariant of this object
std::size_t size() const
the number of samples contained
Sample * get(const std::string &name)
get the sample with the given name
Sample * at(std::size_t index) const
the sample with the given index
boost::transform_iterator< SamplePtrToRawSample, std::vector< std::shared_ptr< Sample > >::const_iterator > iterator
the iterator to use
SampleHandler find(const std::string &tags) const
find all samples which have at least one of the given tags.
SampleHandler()
standard constructor
bool check_complete(const SampleHandler &source) const
whether we have all samples from the source SampleHandler.
~SampleHandler()
standard destructor
SampleHandler findByName(const std::string &pattern) const
find samples by pattern on the name
Sample * findBySource(const std::string &name) const
find a sample by the name in the source sample handler
Sample * operator[](std::size_t index) const
the sample with the given index
void print() const
print the debugging output to the screen
void setMetaString(const std::string &pattern, const std::string &name, const std::string &value)
set the meta-data double with the given name for samples matching a pattern.
std::span< std::shared_ptr< Sample > > samples()
the samples accessed via smart pointer
SampleHandler & operator=(const SampleHandler &that)
standard assignment operator
void addWithPrefix(const SampleHandler &sh, const std::string &prefix)
add all samples from the given SampleHandler to this one, with prefix prepended to their name
void remove(const std::string &name)
remove the given sample
void setMetaDouble(const std::string &name, double value)
set the meta-data double with the given name for all samples.
std::vector< std::shared_ptr< Sample > > m_samples
the list of samples managed
void updateLocation(const std::string &from, const std::string &to)
update all file references starting with from to to
void setMetaDouble(const std::string &pattern, const std::string &name, double value)
set the meta-data double with the given name for samples matching a pattern.
const Sample * get(const std::string &name) const
get the sample with the given name
iterator end() const
the end iterator to use
void load(const std::string &directory)
load all the samples from the given directory
SampleHandler find(const TagList &tags) const
find all samples which have at least one of the given tags.
void add(std::shared_ptr< Sample > sample)
add a sample to the handler
std::string dbg(const SampleHandler &obj, unsigned verbosity=0)
the debugging info of this object
void fetchDefaults(const SampleHandler &source)
fetch the meta-data for all that samples that don't have it in this sample.
SampleHandler(const SampleHandler &that)
standard copy constructor
void fetch(const SampleHandler &source)
fetch the meta-data for all samples that are also in the source sample handler.
void add(const SampleHandler &sh)
add all samples from the given SampleHandler to this one
std::map< std::string, std::shared_ptr< Sample > > m_named
the list of samples by name
a base class that manages a set of files belonging to a particular data set and the associated meta-d...
Definition Sample.h:57
A class that manages a list of tags for identifying samples.
Definition TagList.h:48
std::vector< std::string > tags
Definition hcg.cxx:107
This module provides a lot of global definitions, forward declarations and includes that are used by ...
Definition PrunDriver.h:15
Definition index.py:1
functor mapping a shared_ptr<Sample> to the raw Sample* it points to.
Sample * operator()(const std::shared_ptr< Sample > &p) const