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