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
20
21#include <memory>
22#include <iosfwd>
23#include <map>
24#include <vector>
25#include <TObject.h>
26
27namespace SH
28{
40 std::string dbg (const SampleHandler& obj, unsigned verbosity = 0);
41
42
49
50
51
59 class SampleHandler : public TObject
60 {
61 //
62 // public interface
63 //
64
69 public:
70 void testInvariant () const;
71
72
79 public:
81
82
89 public:
91
92
97 public:
99
100
107 public:
109
110
119 public:
120 void add (Sample *sample);
121
122
132 public:
133 void add (std::unique_ptr<Sample> sample);
134
135
145 public:
146 void add (SamplePtr& sample);
147
148
158 public:
159 void add (SamplePtr&& sample);
160
161
170 public:
171 void add (const SampleHandler& sh);
172
173
182 public:
183 void addWithPrefix (const SampleHandler& sh, const std::string& prefix);
184
185
193 public:
194 void remove (const std::string& name);
195
196
205 public:
206 void remove (const Sample *sample);
207
208
217 public:
218 Sample *get (const std::string& name);
219
220
229 public:
230 const Sample *get (const std::string& name) const;
231
232
241 public:
243
244
255 public:
256 SampleHandler find (const std::string& tags) const;
257
258
270 public:
271 Sample *findBySource (const std::string& name) const;
272
273
283 public:
284 SampleHandler findByName (const std::string& pattern) const;
285
286
294 public:
295 void print () const;
296
297
307 public:
308 void printContent () const;
309
310
322 public:
323 void save (const std::string& directory) const;
324
325
337 public:
338 void load (const std::string& directory);
339
340
354 public:
355 void updateLocation (const std::string& from, const std::string& to);
356
357
369 public:
370 void fetch (const SampleHandler& source);
371
372
382 public:
383 void fetchDefaults (const SampleHandler& source);
384
385
399 public:
400 bool check_complete (const SampleHandler& source) const;
401
402
415 public:
416 void setMetaDouble (const std::string& name, double value);
417
418
431 public:
432 void setMetaString (const std::string& name, const std::string& value);
433
434
449 public:
450 void setMetaDouble (const std::string& pattern, const std::string& name,
451 double value);
452
453
468 public:
469 void setMetaString (const std::string& pattern, const std::string& name,
470 const std::string& value);
471
472
474 public:
475 typedef std::vector<Sample*>::const_iterator iterator;
476
477
482 public:
483 iterator begin () const;
484
485
490 public:
491 iterator end () const;
492
493
498 public:
499 std::size_t size () const;
500
501
507 public:
508 Sample *operator [] (std::size_t index) const;
509
510
516 public:
517 Sample *at (std::size_t index) const;
518
519
520
521 //
522 // private interface
523 //
524
525 friend void swap (SampleHandler& a, SampleHandler& b);
526
528 private:
529 std::vector<SH::Sample*> m_samples;
530
532 private:
533 typedef std::vector<SH::Sample*>::const_iterator SamplesIter;
534
536 private:
537 typedef std::vector<SH::Sample*>::iterator SamplesMIter;
538
540 private:
541 std::map<std::string,SH::SamplePtr> m_named;
542
544 private:
545 typedef std::map<std::string,SH::SamplePtr>::iterator NamedIter;
546
548 private:
549 typedef std::map<std::string,SH::SamplePtr>::iterator NamedMIter;
550
551 ClassDef (SampleHandler, 1)
552 };
553}
554
555#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(SamplePtr &sample)
add a 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
std::vector< SH::Sample * >::const_iterator SamplesIter
the iterator for m_samples
void testInvariant() const
test the invariant of this object
std::size_t size() const
the number of samples contained
std::map< std::string, SH::SamplePtr >::iterator NamedIter
the iterator for m_named
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
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
std::vector< SH::Sample * >::iterator SamplesMIter
the mutable iterator for m_samples
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
std::vector< Sample * >::const_iterator iterator
the iterator to use
void print() const
print the debugging output to the screen
std::map< std::string, SH::SamplePtr > m_named
the list of samples by name
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::vector< SH::Sample * > m_samples
the list of samples managed
std::map< std::string, SH::SamplePtr >::iterator NamedMIter
the mutable iterator for m_named
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.
void updateLocation(const std::string &from, const std::string &to)
update all file references starting with from to to
void add(Sample *sample)
add a sample to the handler
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(SamplePtr &&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.
void add(std::unique_ptr< Sample > sample)
add a sample to the handler
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
A smart pointer class that holds a single Sample object.
Definition SamplePtr.h:35
a base class that manages a set of files belonging to a particular data set and the associated meta-d...
Definition Sample.h:54
A class that manages a list of tags for identifying samples.
Definition TagList.h:48
std::vector< std::string > tags
Definition hcg.cxx:105
This module provides a lot of global definitions, forward declarations and includes that are used by ...
Definition PrunDriver.h:15
Definition index.py:1