00001
00024
00025 #ifndef CLDAQ__TEXTRACTOR_HH
00026 #define CLDAQ__TEXTRACTOR_HH
00027
00028 #include "Tglobals.h"
00029 #include "TMatrixElement.hh"
00030 #include "TDataElementList.hh"
00031
00032 class TDataRecord;
00033 class TDataSection;
00034 class TDataSegment;
00035 class TDataElement;
00036
00037
00057 class TExtractor
00058 {
00059
00060 protected:
00061 Tstring theExtractorID;
00062 TMatrixElement theMatrixElement;
00063 Tint theSamplingRate;
00064 Tbool theDataFoundStatus;
00065 Tbool theFillMatrixStatus;
00066
00067 public:
00068 TExtractor( const Tstring& id, Tobject_t objecttype, Tint nevents = 0, Tint usec = 0 );
00069 virtual ~TExtractor();
00070
00071 public:
00072 virtual Tvoid Extract() = 0;
00073
00074 public:
00075 TDataSection FindDataSection( const TDataRecord& record, const Tstring& sectionid );
00076 TDataSegment FindDataSegment( const TDataSection& section, const Tstring& segmentid );
00077 TDataSegment FindDataSegment( const TDataRecord& record, const Tstring& sectionid, const Tstring& segmentid );
00078 TDataSegment FindDataSegment( const TDataRecord& record, Tstring id[ 2 ] );
00079 TDataElement FindDataElement( const TDataSegment& segment, const Tstring& elementid );
00080 TDataElement FindDataElement( const TDataRecord& record, const Tstring& sectionid, const Tstring& segmentid, const Tstring& elementid );
00081 TDataElement FindDataElement( const TDataRecord& record, Tstring id[ 3 ] );
00082 TDataElement FindDataElement( const TDataRecord& record, const TstringList& id );
00083
00084 public:
00085 const TMatrixElement& GetMatrixElement() const;
00086 TMatrixElement& GetMatrixElement();
00087 Tvoid SetMatrixElement( const TMatrixElement& matrix );
00088 const Tstring& GetExtractorID() const;
00089 Tvoid SetExtractorID( const Tstring& id );
00090 Tint GetSamplingRate() const;
00091 Tvoid SetSamplingRate( Tint usec );
00092 Tbool DoesDataFound() const;
00093 Tbool DoesMatrixFill() const;
00094 Tbool DoesExtractSuccess() const;
00095
00096 public:
00097 Tvoid FillMatrix( const TDataElementList& list );
00098
00099 protected:
00100 Tvoid fillMatrixAs1DHistogram( const TDataElementList& list );
00101 Tvoid fillMatrixAs2DHistogram( const TDataElementList& list );
00102 Tvoid fillMatrixAsGraph( const TDataElementList& list );
00103 Tvoid fillMatrixAsNtuple( const TDataElementList& list );
00104
00105 };
00106
00107 inline const TMatrixElement& TExtractor::GetMatrixElement() const
00108 {
00109 return theMatrixElement;
00110 }
00111
00112 inline TMatrixElement& TExtractor::GetMatrixElement()
00113 {
00114 return theMatrixElement;
00115 }
00116
00117 inline Tvoid TExtractor::SetMatrixElement( const TMatrixElement& matrix )
00118 {
00119 theMatrixElement = matrix;
00120 return;
00121 }
00122
00123 inline const Tstring& TExtractor::GetExtractorID() const
00124 {
00125 return theExtractorID;
00126 }
00127
00128 inline Tvoid TExtractor::SetExtractorID( const Tstring& id )
00129 {
00130 theExtractorID = id;
00131 return;
00132 }
00133
00134 inline Tbool TExtractor::DoesDataFound() const
00135 {
00136 return theDataFoundStatus;
00137 }
00138
00139 inline Tbool TExtractor::DoesMatrixFill() const
00140 {
00141 return theFillMatrixStatus;
00142 }
00143
00144 inline Tbool TExtractor::DoesExtractSuccess() const
00145 {
00146 return DoesMatrixFill() && DoesDataFound();
00147 }
00148
00149 inline Tint TExtractor::GetSamplingRate() const
00150 {
00151 return theSamplingRate;
00152 }
00153
00154 inline Tvoid TExtractor::SetSamplingRate( Tint usec )
00155 {
00156 theSamplingRate = usec;
00157 return;
00158 }
00159
00160 #endif