00001
00002
00003
00004
00005 #ifndef FROOT_TFndStbMon
00006 #define FROOT_TFndStbMon
00007
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020
00021 #include "FROOT.h"
00022
00023 #include "TObject.h"
00024 #include "TClonesArray.h"
00025 #include "TFile.h"
00026 #ifdef _FND_ONL_USE_MAP_FILES_
00027 #include "TMapFile.h"
00028 #endif
00029 #include "TH1.h"
00030 #include "TH2.h"
00031 #include "TCanvas.h"
00032 #include "TLine.h"
00033
00034 using namespace FROOT;
00035
00036 class TFndHdt;
00037
00038 class TFndStbMon : public TObject {
00039
00040 protected:
00041
00042 Int_t shmflg;
00043 TFile *fout;
00044 TFile *fstb;
00045
00046 #if defined _FND_ONL_USE_MAP_FILES_
00047 TMapFile *fShmStbMain;
00048 TMapFile *fShmStbTdc[K_N_STB_CROWNS];
00049 #elif defined _FND_ONL_USE_SHARED_FILES_
00050 TFile *fShmStbMain;
00051 TFile *fShmStbTdc[K_N_STB_CROWNS];
00052 #endif
00053
00054
00055 Bool_t fMustRecoverHistos;
00056
00057 TString fSharedMemName_Main;
00058 TString fSharedMemName_Tdc[K_N_STB_CROWNS];
00059
00060 TString fSharedFileName_Main;
00061 TString fSharedFileName_Tdc[K_N_STB_CROWNS];
00062
00063
00064
00065 TH1F *stbmult;
00066 TH2F *stbmaptdc;
00067
00068 TH1F *stb_pattern[K_N_STB_CROWNS];
00069
00070 TH1F *stbtdc[K_N_STB_CROWNS][K_N_STB_TUBES];
00071 TH1F *stb1d;
00072 TH2F *stb2d;
00073 TLine *fLine;
00074
00075 private:
00076 void Init();
00077 void InitHistos(const Int_t &stb_tdc_bins,const Double_t &stb_tdc_min,const Double_t &stb_tdc_max);
00078 void OpenSharedFiles(const TString &fmode);
00079
00080 public:
00081
00082 TFndStbMon(const TString &fmode,Int_t stb_tdc_bins=50,Double_t stb_tdc_min=1000.,Double_t stb_tdc_max=3000.);
00083 TFndStbMon();
00084 TFndStbMon(TString *filename);
00085 ~TFndStbMon();
00086 void Fill();
00087 void Fill(const TClonesArray &StbHit);
00088 void Update(Bool_t purge=kTRUE);
00089 void ResetHistos();
00090 void WriteToFile(TString filename=0,Bool_t IsShared = kFALSE);
00091
00092
00093
00094
00095
00096
00097
00098
00099 void Add(TFndStbMon *stbmon);
00100 inline TH1F *StbMult() { return stbmult; }
00101
00102 inline TH2F *StbMapTdc() { return stbmaptdc; }
00103 inline TH1F *StbTdc(Int_t crown, Int_t tube) { return stbtdc[crown-1][tube-1]; }
00104 inline TH1F *StbPattern(Int_t crown) { return stb_pattern[crown-1]; }
00105
00106 ClassDef(TFndStbMon,1)
00107 };
00108
00109 #endif // FROOT_TFndStbMon
00110
00111
00112
00113
00114
00115