メインページ   モジュール   名前空間一覧   クラス階層   アルファベット順一覧   構成   ファイル一覧   構成メンバ   ファイルメンバ   関連ページ    

TRecordAssociationTable.hh

解説を見る。
00001 // ============================================================================
00002 //  $Id: TRecordAssociationTable.hh,v 1.1 2004/03/01 02:36:25 goiwai Exp $
00003 //  $Name: CLDAQ-1-12-00 $
00004 //  $Log: TRecordAssociationTable.hh,v $
00005 //  Revision 1.1  2004/03/01 02:36:25  goiwai
00006 //  RecordDisplay用のクラス群を置きました.
00007 //  お蔵入りになってたものに手直しを加えたものですが,
00008 //  まだ不充分な点も在ります.徐々に修正していきたいと思います.
00009 //  DataRecordオブジェクトを表示するためのツール群なのでRecordDisplayと呼
00010 //  んでいます,多分にオフライン要素が強いです.
00011 //  オンラインよりにしたものを後でEventDisplay(Eventを表示)としてコミット
00012 //  します.
00013 //
00014 // ============================================================================
00015 #ifdef __CLDAQ_ROOT_USE
00016 #ifndef CLDAQ__TRECORDASSOCIATIONTABLE_HH
00017 #define CLDAQ__TRECORDASSOCIATIONTABLE_HH
00018 
00019 #include <TH1.h>
00020 #include "Tglobals.h"
00021 #include "TRecordDisplayCanvas.hh"
00022 #include "TRecordAssociationList.hh"
00023 #include "TRecordAssociation.hh"
00024 
00025 class TRecordDisplayCanvas;
00026 class TH1D;
00027 
00028 class TRecordAssociationTable
00029 {
00030 
00031   private:
00032     TRecordAssociationList theAssociationList;
00033 
00034   public:
00035     TRecordAssociationTable();
00036     TRecordAssociationTable( const TRecordAssociationList& list );
00037     TRecordAssociationTable( const TRecordAssociationTable& right );
00038     ~TRecordAssociationTable();
00039 
00040   public:
00041     const TRecordAssociationTable& operator=( const TRecordAssociationTable& right );
00042     Tbool operator==( const TRecordAssociationTable& right ) const;
00043     Tbool operator!=( const TRecordAssociationTable& right ) const;
00044 
00045   public:
00046     friend Tostream& operator<<( Tostream& tos, const TRecordAssociationTable& right );
00047 
00048   public:
00049     const TRecordAssociationList& GetAssociationList() const;
00050     TRecordAssociationList& GetAssociationList();
00051     Tvoid SetAssociationList( const TRecordAssociationList& list );
00052 
00053   public:
00054     Tint FindAssociation( const TRecordAssociation& asso ) const;
00055     Tint FindAssociation( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00056     Tint FindAssociation( Tstring* tags ) const;
00057 
00058     Tbool HasAssociation( const TRecordAssociation& asso ) const;
00059     Tbool HasAssociation( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00060     Tbool HasAssociation( Tstring* tags ) const;
00061 
00062     Tvoid AddAssociation( const TRecordAssociation& asso );
00063     Tvoid AddAssociation( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag );
00064     Tvoid AddAssociation( Tstring* tags );
00065 
00066     Tvoid SetNumberOfBins( Tint index, Tint nbin );
00067     Tvoid SetNumberOfBins( const TRecordAssociation& asso, Tint nbin );
00068     Tvoid SetNumberOfBins( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, Tint nbin );
00069     Tvoid SetNumberOfBins( Tstring* tags, Tint nbin );
00070 
00071     Tvoid SetMinimumX( Tint index, Tdouble xmin );
00072     Tvoid SetMinimumX( const TRecordAssociation& asso, Tdouble xmin );
00073     Tvoid SetMinimumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, Tdouble xmin );
00074     Tvoid SetMinimumX( Tstring* tags, Tdouble xmin );
00075 
00076     Tvoid SetMaximumX( Tint index, Tdouble xmax );
00077     Tvoid SetMaximumX( const TRecordAssociation& asso, Tdouble xmax );
00078     Tvoid SetMaximumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, Tdouble xmax );
00079     Tvoid SetMaximumX( Tstring* tags, Tdouble xmax );
00080 
00081     Tvoid SetCanvas( Tint index, TRecordDisplayCanvas* cv );
00082     Tvoid SetCanvas( const TRecordAssociation& asso, TRecordDisplayCanvas* cv );
00083     Tvoid SetCanvas( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, TRecordDisplayCanvas* cv );
00084     Tvoid SetCanvas( Tstring* tags, TRecordDisplayCanvas* cv );
00085 
00086     Tvoid SetHistogram( Tint index, TH1D* h );
00087     Tvoid SetHistogram( const TRecordAssociation& asso, TH1D* h );
00088     Tvoid SetHistogram( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, TH1D* h );
00089     Tvoid SetHistogram( Tstring* tags, TH1D* h );
00090 
00091     Tint GetNumberOfBins( Tint index ) const;
00092     Tint GetNumberOfBins( const TRecordAssociation& asso ) const;
00093     Tint GetNumberOfBins( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00094     Tint GetNumberOfBins( Tstring* tags ) const;
00095 
00096     Tdouble GetMinimumX( Tint index ) const;
00097     Tdouble GetMinimumX( const TRecordAssociation& asso ) const;
00098     Tdouble GetMinimumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00099     Tdouble GetMinimumX( Tstring* tags ) const;
00100 
00101     Tdouble GetMaximumX( Tint index ) const;
00102     Tdouble GetMaximumX( const TRecordAssociation& asso ) const;
00103     Tdouble GetMaximumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00104     Tdouble GetMaximumX( Tstring* tags ) const;
00105 
00106     TRecordDisplayCanvas* GetCanvas( Tint index ) const;
00107     TRecordDisplayCanvas* GetCanvas( const TRecordAssociation& asso ) const;
00108     TRecordDisplayCanvas* GetCanvas( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00109     TRecordDisplayCanvas* GetCanvas( Tstring* tags ) const;
00110 
00111     TH1D* GetHistogram( Tint index ) const;
00112     TH1D* GetHistogram( const TRecordAssociation& asso ) const;
00113     TH1D* GetHistogram( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00114     TH1D* GetHistogram( Tstring* tags ) const;
00115 
00116     Tbool IsValid( Tint index ) const;
00117     Tbool IsValid( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const;
00118     Tbool IsValid( Tstring* tags ) const;
00119     Tbool IsValid( const TRecordAssociation& asso ) const;
00120 
00121     Tint Size() const;
00122     Tbool Empty() const;
00123 
00124 };
00125 
00126 inline const TRecordAssociationList& TRecordAssociationTable::GetAssociationList() const
00127 {
00128   return theAssociationList;
00129 }
00130 
00131 inline TRecordAssociationList& TRecordAssociationTable::GetAssociationList()
00132 {
00133   return theAssociationList;
00134 }
00135 
00136 inline Tvoid TRecordAssociationTable::SetAssociationList( const TRecordAssociationList& list )
00137 {
00138   theAssociationList = list;
00139   return;
00140 }
00141 
00142 inline Tint TRecordAssociationTable::FindAssociation( const TRecordAssociation& asso ) const
00143 {
00144   for ( Tsize_t i = 0; i < theAssociationList.size(); i ++ ) {
00145     if ( theAssociationList[ i ] == asso ) {
00146       return i;
00147     }
00148   }
00149   return -1;
00150 }
00151 
00152 inline Tint TRecordAssociationTable::FindAssociation( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00153 {
00154   return FindAssociation( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00155 }
00156 
00157 inline Tint TRecordAssociationTable::FindAssociation( Tstring* tags ) const
00158 {
00159   return FindAssociation( tags[0], tags[1], tags[2], tags[3] );
00160 }
00161 
00162 inline Tbool TRecordAssociationTable::HasAssociation( const TRecordAssociation& asso ) const
00163 {
00164   if ( FindAssociation( asso ) < 0 ) {
00165     return Tfalse;
00166   } else {
00167     return Ttrue;
00168   }
00169 }
00170 
00171 inline Tbool TRecordAssociationTable::HasAssociation( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00172 {
00173   return HasAssociation( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00174 }
00175 
00176 inline Tbool TRecordAssociationTable::HasAssociation( Tstring* tags ) const
00177 {
00178   return HasAssociation( tags[0], tags[1], tags[2], tags[3] );
00179 }
00180 
00181 inline Tvoid TRecordAssociationTable::AddAssociation( const TRecordAssociation& asso )
00182 {
00183   if ( !HasAssociation( asso ) ) {
00184     theAssociationList.push_back( asso );
00185   }
00186   return;
00187 }
00188 
00189 inline Tvoid TRecordAssociationTable::AddAssociation( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag )
00190 {
00191   AddAssociation( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00192   return;
00193 }
00194 
00195 inline Tvoid TRecordAssociationTable::AddAssociation( Tstring* tags )
00196 {
00197   AddAssociation( tags[0], tags[1], tags[2], tags[3] );
00198   return;
00199 }
00200 
00201 inline Tvoid TRecordAssociationTable::SetNumberOfBins( Tint index, Tint nbin )
00202 {
00203   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00204     theAssociationList[ index ].SetNumberOfBins( nbin );
00205   }
00206   return;
00207 }
00208 
00209 inline Tvoid TRecordAssociationTable::SetNumberOfBins( const TRecordAssociation& asso, Tint nbin )
00210 {
00211   SetNumberOfBins( FindAssociation( asso ), nbin );
00212   return;
00213 }
00214 
00215 inline Tvoid TRecordAssociationTable::SetNumberOfBins( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, Tint nbin )
00216 {
00217   SetNumberOfBins( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ), nbin );
00218   return;
00219 }
00220 
00221 inline Tvoid TRecordAssociationTable::SetNumberOfBins( Tstring* tags, Tint nbin )
00222 {
00223   SetNumberOfBins( tags[0], tags[1], tags[2], tags[3], nbin );
00224   return;
00225 }
00226 
00227 inline Tvoid TRecordAssociationTable::SetMinimumX( Tint index, Tdouble xmin )
00228 {
00229   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00230     theAssociationList[ index ].SetMinimumX( xmin );
00231   }
00232   return;
00233 }
00234 
00235 inline Tvoid TRecordAssociationTable::SetMinimumX( const TRecordAssociation& asso, Tdouble xmin )
00236 {
00237   SetMinimumX( FindAssociation( asso ), xmin );
00238   return;
00239 }
00240 
00241 inline Tvoid TRecordAssociationTable::SetMinimumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, Tdouble xmin )
00242 {
00243   SetMinimumX( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ), xmin );
00244   return;
00245 }
00246 
00247 inline Tvoid TRecordAssociationTable::SetMinimumX( Tstring* tags, Tdouble xmin )
00248 {
00249   SetMinimumX( tags[0], tags[1], tags[2], tags[3], xmin );
00250   return;
00251 }
00252 
00253 inline Tvoid TRecordAssociationTable::SetMaximumX( Tint index, Tdouble xmax )
00254 {
00255   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00256     theAssociationList[ index ].SetMaximumX( xmax );
00257   }
00258   return;
00259 }
00260 
00261 inline Tvoid TRecordAssociationTable::SetMaximumX( const TRecordAssociation& asso, Tdouble xmax )
00262 {
00263   SetMaximumX( FindAssociation( asso ), xmax );
00264   return;
00265 }
00266 
00267 inline Tvoid TRecordAssociationTable::SetMaximumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, Tdouble xmax )
00268 {
00269   SetMaximumX( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ), xmax );
00270   return;
00271 }
00272 
00273 inline Tvoid TRecordAssociationTable::SetMaximumX( Tstring* tags, Tdouble xmax )
00274 {
00275   SetMaximumX( tags[0], tags[1], tags[2], tags[3], xmax );
00276   return;
00277 }
00278 
00279 inline Tvoid TRecordAssociationTable::SetCanvas( Tint index, TRecordDisplayCanvas* cv )
00280 {
00281   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00282     theAssociationList[ index ].SetCanvas( cv );
00283   }
00284   return;
00285 }
00286 
00287 inline Tvoid TRecordAssociationTable::SetCanvas( const TRecordAssociation& asso, TRecordDisplayCanvas* cv )
00288 {
00289   SetCanvas( FindAssociation( asso ), cv );
00290   return;
00291 }
00292 
00293 inline Tvoid TRecordAssociationTable::SetCanvas( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, TRecordDisplayCanvas* cv )
00294 {
00295   SetCanvas( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ), cv );
00296   return;
00297 }
00298 
00299 inline Tvoid TRecordAssociationTable::SetCanvas( Tstring* tags, TRecordDisplayCanvas* cv )
00300 {
00301   SetCanvas( tags[0], tags[1], tags[2], tags[3], cv );
00302   return;
00303 }
00304 
00305 inline Tvoid TRecordAssociationTable::SetHistogram( Tint index, TH1D* h )
00306 {
00307   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00308     theAssociationList[ index ].SetHistogram( h );
00309   }
00310   return;
00311 }
00312 
00313 inline Tvoid TRecordAssociationTable::SetHistogram( const TRecordAssociation& asso, TH1D* h )
00314 {
00315   SetHistogram( FindAssociation( asso ), h );
00316   return;
00317 }
00318 
00319 inline Tvoid TRecordAssociationTable::SetHistogram( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag, TH1D* h )
00320 {
00321   SetHistogram( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ), h );
00322   return;
00323 }
00324 
00325 inline Tvoid TRecordAssociationTable::SetHistogram( Tstring* tags, TH1D* h )
00326 {
00327   SetHistogram( tags[0], tags[1], tags[2], tags[3], h );
00328   return;
00329 }
00330 
00331 inline Tint TRecordAssociationTable::GetNumberOfBins( Tint index ) const
00332 {
00333   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00334     return theAssociationList[ index ].GetNumberOfBins();
00335   } else {
00336     return -1;
00337   }
00338 }
00339 
00340 inline Tint TRecordAssociationTable::GetNumberOfBins( const TRecordAssociation& asso ) const
00341 {
00342   return GetNumberOfBins( FindAssociation( asso ) );
00343 }
00344 
00345 inline Tint TRecordAssociationTable::GetNumberOfBins( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00346 {
00347   return GetNumberOfBins( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00348 }
00349 
00350 inline Tint TRecordAssociationTable::GetNumberOfBins( Tstring* tags ) const
00351 {
00352   return GetNumberOfBins( tags[0], tags[1], tags[2], tags[3] );
00353 }
00354 
00355 inline Tdouble TRecordAssociationTable::GetMinimumX( Tint index ) const
00356 {
00357   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00358     return theAssociationList[ index ].GetMinimumX();
00359   } else {
00360     return DBL_MAX;
00361   }
00362 }
00363 
00364 inline Tdouble TRecordAssociationTable::GetMinimumX( const TRecordAssociation& asso ) const
00365 {
00366   return GetMinimumX( FindAssociation( asso ) );
00367 }
00368 
00369 inline Tdouble TRecordAssociationTable::GetMinimumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00370 {
00371   return GetMinimumX( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00372 }
00373 
00374 inline Tdouble TRecordAssociationTable::GetMinimumX( Tstring* tags ) const
00375 {
00376   return GetMinimumX( tags[0], tags[1], tags[2], tags[3] );
00377 }
00378 
00379 inline Tdouble TRecordAssociationTable::GetMaximumX( Tint index ) const
00380 {
00381   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00382     return theAssociationList[ index ].GetMaximumX();
00383   } else {
00384     return DBL_MIN;
00385   }
00386 }
00387 
00388 inline Tdouble TRecordAssociationTable::GetMaximumX( const TRecordAssociation& asso ) const
00389 {
00390   return GetMaximumX( FindAssociation( asso ) );
00391 }
00392 
00393 inline Tdouble TRecordAssociationTable::GetMaximumX( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00394 {
00395   return GetMaximumX( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00396 }
00397 
00398 inline Tdouble TRecordAssociationTable::GetMaximumX( Tstring* tags ) const
00399 {
00400   return GetMaximumX( tags[0], tags[1], tags[2], tags[3] );
00401 }
00402 
00403 inline TRecordDisplayCanvas* TRecordAssociationTable::GetCanvas( Tint index ) const
00404 {
00405   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00406     return theAssociationList[ index ].GetCanvas();
00407   } else {
00408     return 0;
00409   }
00410 }
00411 
00412 inline TRecordDisplayCanvas* TRecordAssociationTable::GetCanvas( const TRecordAssociation& asso ) const
00413 {
00414   return GetCanvas( FindAssociation( asso ) );
00415 }
00416 
00417 inline TRecordDisplayCanvas* TRecordAssociationTable::GetCanvas( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00418 {
00419   return GetCanvas( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00420 }
00421 
00422 inline TRecordDisplayCanvas* TRecordAssociationTable::GetCanvas( Tstring* tags ) const
00423 {
00424   return GetCanvas( tags[0], tags[1], tags[2], tags[3] );
00425 }
00426 
00427 inline TH1D* TRecordAssociationTable::GetHistogram( Tint index ) const
00428 {
00429   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00430     return theAssociationList[ index ].GetHistogram();
00431   } else {
00432     return 0;
00433   }
00434 }
00435 
00436 inline TH1D* TRecordAssociationTable::GetHistogram( const TRecordAssociation& asso ) const
00437 {
00438   return GetHistogram( FindAssociation( asso ) );
00439 }
00440 
00441 inline TH1D* TRecordAssociationTable::GetHistogram( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00442 {
00443   return GetHistogram( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00444 }
00445 
00446 inline TH1D* TRecordAssociationTable::GetHistogram( Tstring* tags ) const
00447 {
00448   return GetHistogram( tags[0], tags[1], tags[2], tags[3] );
00449 }
00450 
00451 inline Tbool TRecordAssociationTable::IsValid( Tint index ) const
00452 {
00453   if ( index >= 0 && index < (Tint)theAssociationList.size() ) {
00454     return theAssociationList[ index ].IsValid();
00455   } else {
00456     return Tfalse;
00457   }
00458 }
00459 
00460 inline Tbool TRecordAssociationTable::IsValid( const TRecordAssociation& asso ) const
00461 {
00462   return IsValid( FindAssociation( asso ) );
00463 }
00464 
00465 inline Tbool TRecordAssociationTable::IsValid( const Tstring& recordtag, const Tstring& sectiontag, const Tstring& segmenttag, const Tstring& elementtag ) const
00466 {
00467   return IsValid( TRecordAssociation( recordtag, sectiontag, segmenttag, elementtag ) );
00468 }
00469 
00470 inline Tbool TRecordAssociationTable::IsValid( Tstring* tags ) const
00471 {
00472   return IsValid( tags[0], tags[1], tags[2], tags[3] );
00473 }
00474 
00475 inline Tint TRecordAssociationTable::Size() const
00476 {
00477   return (Tint)theAssociationList.size();
00478 }
00479 
00480 inline Tbool TRecordAssociationTable::Empty() const
00481 {
00482   if ( Size() == 0 ) {
00483     return Ttrue;
00484   } else {
00485     return Tfalse;
00486   }
00487 }
00488 
00489 #endif
00490 #endif

CLDAQ - a Class Library for Data AcQuisition (Version 1.12.0)
Go IWAI <goiwai@users.sourceforge.jp>