#ifndef _utl_MultiTrace_h_ #define _utl_MultiTrace_h_ /** \file MultiTrace.h \brief Multitraces */ #include #include namespace utl { /** \class LabeledTrace \brief A Trace with a label attached to it This is used to attach a source label (eg. electron, muon, gamma) to a Trace \author Stefano Argiro', Darko Veberic \date Jan 2003 \date 14 Nov 2005 revision \version $Id: MultiTrace.h 21160 2012-05-15 13:43:26Z javierg $ \ingroup stl time */ template class LabeledTrace : public LabeledObject > { public: LabeledTrace(const int label, Trace& trace) : LabeledObject >(label, trace) { } LabeledTrace(const std::pair*> pair) : LabeledObject >(pair) { } Trace& GetTrace() { return LabeledObject >::GetObject(); } const Trace& GetTrace() const { return LabeledObject >::GetObject(); } }; /*! \class MultiTrace \brief A collection of Trace,which provides methods to access different sources. \author Stefano Argiro', Darko Veberic \date Jan 2003 \date 14 Nov 2005 revision \version $Id: MultiTrace.h 21160 2012-05-15 13:43:26Z javierg $
  • MultiTrace::GetTrace(sevt::StationConstants::eElectron) gives the electron component,
  • MultiTrace::GetTrace(sevt::StationConstants::eMuon) gives the muon component
  • MultiTrace::GetTrace() or
  • MultiTrace::GetTrace(sevt::StationConstants::eTotal) gives the total
For the FD case examples are:
  • MultiTrace::GetTrace(fevt::FdConstants::eFluorDirect)
  • MultiTrace::GetTrace(fevt::FdConstants::eCherRayleighScattered)
\param T is the type stored in the trace Trace (double, int etc) \ingroup stl time */ template class MultiTrace : public MultiObject, LabeledTrace > { public: /// Returns the trace for /par source Trace& GetTrace(const int label = 0) { return MultiObject, LabeledTrace >::GetObject(label); } const Trace& GetTrace(const int label = 0) const { return MultiObject, LabeledTrace >::GetObject(label); } /** Creates a new Trace of size /par size and binning * /par binsize and assign source /par source */ void AddTrace(const int size, const double binSize, const int label) { this->AddObject(new Trace(size, binSize), label); } /** Copies trace in the internal list * and assign source /par source -The original can be deleted */ void AddTrace(const Trace& trace, const int label) { this->AddObject(trace, label); } void RemoveTrace(const int label) { MultiObject, LabeledTrace >::RemoveObject(label); } }; // To keep the forward declarations consistent // modify Trace-fwd when chaniging/adding below typedef utl::MultiTrace MultiTraceI; typedef utl::MultiTrace MultiTraceD; } #endif // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "cd ..; make -k" // End: