MultiTrace.h
Go to the documentation of this file.
1 #ifndef _utl_MultiTrace_h_
2 #define _utl_MultiTrace_h_
3 
4 #include <utl/MultiObject.h>
5 #include <utl/Trace.h>
6 
7 
8 namespace utl {
9 
23  template<typename T>
24  class LabeledTrace : public LabeledObject<Trace<T>> {
25 
27 
28  public:
29  LabeledTrace(const int label, Trace<T>& trace) : Base(label, trace) { }
30  LabeledTrace(const std::pair<int, Trace<T>*> pair) : Base(pair) { }
31 
33  const Trace<T>& GetTrace() const { return Base::GetObject(); }
34 
35  };
36 
37 
63  template<typename T>
64  class MultiTrace : public MultiObject<Trace<T>, LabeledTrace<T>> {
65 
67 
68  public:
70  Trace<T>& GetTrace(const int label = 0) { return Base::GetObject(label); }
71 
72  const Trace<T>& GetTrace(const int label = 0) const { return Base::GetObject(label); }
73 
76  void AddTrace(const int size, const double binSize, const int label)
77  { Base::AddObject(new Trace<T>(size, binSize), label); }
78 
81  void AddTrace(const Trace<T>& trace, const int label)
82  { Base::AddObject(trace, label); }
83 
84  void RemoveTrace(const int label) { Base::RemoveObject(label); }
85 
86  };
87 
88  // To keep the forward declarations consistent
89  // modify Trace-fwd when changing/adding below
90 
93 
94 }
95 
96 
97 #endif
void AddTrace(const int size, const double binSize, const int label)
Definition: MultiTrace.h:76
LabeledTrace(const int label, Trace< T > &trace)
Definition: MultiTrace.h:29
void RemoveTrace(const int label)
Definition: MultiTrace.h:84
MultiObject< Trace< T >, LabeledTrace< T > > Base
Definition: MultiTrace.h:66
const Trace< T > & GetTrace() const
Definition: MultiTrace.h:33
LabeledObject< Trace< T > > Base
Definition: MultiTrace.h:26
LabeledTrace(const std::pair< int, Trace< T > * > pair)
Definition: MultiTrace.h:30
Trace< T > & GetTrace()
Definition: MultiTrace.h:32
container for object and associated labels
Definition: MultiObject.h:71
void AddTrace(const Trace< T > &trace, const int label)
Definition: MultiTrace.h:81
utl::MultiTrace< int > MultiTraceI
Definition: MultiTrace.h:91
utl::MultiTrace< double > MultiTraceD
Definition: MultiTrace.h:92
Template class for a FADC data or calibrated data container. Use the typedefs (TraceD, TraceI, etc.) defined in Trace-fwd.h.
Definition: Trace-fwd.h:19
Trace< T > & GetTrace(const int label=0)
Returns the trace for /par source.
Definition: MultiTrace.h:70
A Trace with a label attached to it.
Definition: MultiTrace.h:24
A collection of Trace&lt;T&gt;,which provides methods to access different sources.
Definition: MultiTrace.h:64
Class for attaching a label to an object.
Definition: MultiObject.h:22
const Trace< T > & GetTrace(const int label=0) const
Definition: MultiTrace.h:72
void AddObject(const Trace< T > &obj, const int label)
add with deep copy of the object
Definition: MultiObject.h:128
Trace< T > & GetObject(const int label=0)

, generated on Tue Sep 26 2023.