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

TRecordAssociationTable.hh

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


CLDAQ - a Class Library for DataAcQuisition (Version 1.14.3)
Go IWAI -- goiwai at users.sourceforge.jp