00001
00002
00003
00004
00005 #ifndef FROOT_TFndLmdMon
00006 #define FROOT_TFndLmdMon
00007
00009
00010
00011
00012
00013
00014
00015
00017
00018 #include "FROOT.h"
00019
00020 #include "TObject.h"
00021 #include "TDatime.h"
00022 #include "TObjArray.h"
00023 #include "TFile.h"
00024 #ifdef _FND_ONL_USE_MAP_FILES_
00025 #include "TMapFile.h"
00026 #endif
00027 #include "TH1.h"
00028 #include "TH2.h"
00029 #include "TCanvas.h"
00030 #include "TLine.h"
00031 #include "TString.h"
00032 #include "TDirectory.h"
00033 #include <stdlib.h>
00034 #include <Riostream.h>
00035 #include <time.h>
00036
00037 #include "TObject.h"
00038
00039 class TFndHdt;
00040 class TFndRun;
00041 class TFndGenInfo;
00042 class TFndHLmd;
00043
00044 using namespace FROOT;
00045
00046 class TFndLmdMon : public TObject {
00047
00048 protected:
00049 Int_t shmflg;
00050 TFile *fout;
00051 TFile *flmd;
00052
00053 Double_t fZetaAdjust[2];
00054
00055
00056
00057 #if defined _FND_ONL_USE_MAP_FILES_
00058 TMapFile *mlmd;
00059 TMapFile *mlmd_adc[2];
00060 TMapFile *mlmd_tdc[2];
00061 #elif defined _FND_ONL_USE_SHARED_FILES_
00062 TFile *mlmd;
00063 TFile *mlmd_adc[2];
00064 TFile *mlmd_tdc[2];
00065 #endif
00066
00067
00068 Bool_t fMustRecoverHistos;
00069
00070 TString fSharedMemName_Main;
00071 TString fSharedMemName_Adc[2];
00072 TString fSharedMemName_Tdc[2];
00073
00074 TString fSharedFileName_Main;
00075 TString fSharedFileName_Adc[2];
00076 TString fSharedFileName_Tdc[2];
00077
00078
00079
00080 TH1F *lmdmult;
00081 TH1F *lmdmult_good;
00082 TH2F *lmd_i_o_mult;
00083 TH2F *lmdmap;
00084 TH2F *lmdmap_good;
00085 TH2F *lmdmapadc0;
00086 TH2F *lmdmapadc;
00087 TH2F *lmdmapadce;
00088 TH2F *lmdmapadcp;
00089
00090 TH2F *lmdmaptdc0;
00091 TH2F *lmdmaptdc;
00092 TH2F *lmdmaptdce;
00093 TH2F *lmdmaptdcp;
00094
00095 TH2F *lmd_all_mapadctdc[K_N_LMD_TOT_CHAMS];
00096 TH2F *lmd_all_adc_tdc[K_N_LMD_TOT_CHAMS];
00097 TH1F *lmd_all_adce[K_N_LMD_TOT_CHAMS];
00098 TH1F *lmd_all_adcp[K_N_LMD_TOT_CHAMS];
00099 TH1F *lmd_all_mul[K_N_LMD_TOT_CHAMS];
00100
00101 TH1F *lmd_all_aepat[K_N_LMD_TOT_CHAMS];
00102 TH1F *lmd_all_appat[K_N_LMD_TOT_CHAMS];
00103 TH1F *lmd_all_tepat[K_N_LMD_TOT_CHAMS];
00104 TH1F *lmd_all_tppat[K_N_LMD_TOT_CHAMS];
00105
00106 TH1F *lmd_all_vp[K_N_LMD_TOT_CHAMS];
00107 TH1F *lmd_all_crg[K_N_LMD_TOT_CHAMS];
00108 TH2F *lmd_all_zet[K_N_LMD_TOT_CHAMS];
00109 TH2F *lmd_all_adc[K_N_LMD_TOT_CHAMS];
00110 TH1F *lmd_all_tdce[K_N_LMD_TOT_CHAMS];
00111 TH1F *lmd_all_tdcp[K_N_LMD_TOT_CHAMS];
00112 TH1F *lmd_all_tdf[K_N_LMD_TOT_CHAMS];
00113 TH1F *lmd_all_tmean[K_N_LMD_TOT_CHAMS];
00114 TH2F *lmd_all_tdc[K_N_LMD_TOT_CHAMS];
00115
00116 TH1F *lmd_all_dhits[K_N_LMD_TOT_CHAMS];
00117 TH2F *lmd_all_dhits_tdc_dopp[K_N_LMD_TOT_CHAMS];
00118 TH2F *lmd_all_dhits_adc_dopp[K_N_LMD_TOT_CHAMS];
00119 TH2F *lmd_all_dhits_tdc_cell[K_N_LMD_TOT_CHAMS];
00120 TH2F *lmd_all_dhits_adc_cell[K_N_LMD_TOT_CHAMS];
00121
00122 static const Int_t n_lmd_hist = 272;
00123 TH1F *lmdadce[n_lmd_hist];
00124 TH1F *lmdadcp[n_lmd_hist];
00125 TH1F *lmdcrg[n_lmd_hist];
00126 TH1F *lmdzet[n_lmd_hist];
00127 TH1F *lmdtdce[n_lmd_hist];
00128 TH1F *lmdtdcp[n_lmd_hist];
00129 TH1F *lmdtdf[n_lmd_hist];
00130 TH1F *lmdtmean[n_lmd_hist];
00131
00132 TH1F *lmd1d;
00133 TH2F *lmd2d;
00134 TLine *fLine;
00135
00136 void WriteHistos(TFile *file);
00137 void Init();
00138
00139 void InitHistos(const Int_t &lmd_adc_bins,const Double_t &lmd_adc_min,const Double_t &lmd_adc_max,const Int_t &lmd_tdc_bins,const Double_t &lmd_tdc_min,const Double_t &lmd_tdc_max);
00140 void OpenSharedFiles(const TString &fmode);
00141
00142 public:
00143
00144 TFndLmdMon(const TString &fmode,Int_t lmd_adc_bins=52,Double_t lmd_adc_min = 0.,Double_t lmd_adc_max = 4160.,Int_t lmd_tdc_bins=52,Double_t lmd_tdc_min = 0.,Double_t lmd_tdc_max = 2200.);
00145 TFndLmdMon();
00146 TFndLmdMon(const TFndLmdMon &lmdmon);
00147 TFndLmdMon(TString *filename);
00148 ~TFndLmdMon();
00149
00150 void Fill();
00151 void Fill(const TClonesArray &LmdHits);
00152 void Update(Bool_t purge=kTRUE);
00153 void ResetHistos();
00154
00155 void WriteToFile(TString filename=0,Bool_t IsShared = kFALSE);
00156
00157 TH2F *LmdAllAdcTdc(Int_t idx) { return lmd_all_adc_tdc[idx]; }
00158 TH1F *LmdAllAdcE(Int_t idx) { return lmd_all_adce[idx]; }
00159 TH1F *LmdAllAdcP(Int_t idx) { return lmd_all_adcp[idx]; }
00160 TH1F *LmdAllMul(Int_t idx) { return lmd_all_mul[idx]; }
00161
00162 TH1F *LmdAllAdcEPat(Int_t idx) { return lmd_all_aepat[idx]; }
00163 TH1F *LmdAllAdcPPat(Int_t idx) { return lmd_all_appat[idx]; }
00164 TH1F *LmdAllTdcEPat(Int_t idx) { return lmd_all_tepat[idx]; }
00165 TH1F *LmdAllTdcPPat(Int_t idx) { return lmd_all_tppat[idx]; }
00166
00167 TH1F *LmdAllCrg(Int_t idx) { return lmd_all_crg[idx]; }
00168 TH2F *LmdAllZet(Int_t idx) { return lmd_all_zet[idx]; }
00169 TH2F *LmdAllAdc(Int_t idx) { return lmd_all_adc[idx]; }
00170 TH1F *LmdAllTdcE(Int_t idx) { return lmd_all_tdce[idx]; }
00171 TH1F *LmdAllTdcP(Int_t idx) { return lmd_all_tdcp[idx]; }
00172 TH1F *LmdAllTdf(Int_t idx) { return lmd_all_tdf[idx]; }
00173 TH1F *LmdAllTmean(Int_t idx) { return lmd_all_tmean[idx]; }
00174 TH2F *LmdAllTdc(Int_t idx) { return lmd_all_tdc[idx]; }
00175 TH2F *LmdAllMapAdcTdc(Int_t idx) { return lmd_all_mapadctdc[idx]; }
00176
00177 TH1F *LmdAdcE(Int_t idx) { return lmdadce[idx]; }
00178 TH1F *LmdAdcP(Int_t idx) { return lmdadcp[idx]; }
00179 TH1F *LmdCrg(Int_t idx) { return lmdcrg[idx]; }
00180 TH1F *LmdZet(Int_t idx) { return lmdzet[idx]; }
00181 TH1F *LmdTdcE(Int_t idx) { return lmdtdce[idx]; }
00182 TH1F *LmdTdcP(Int_t idx) { return lmdtdcp[idx]; }
00183 TH1F *LmdTmean(Int_t idx) { return lmdtmean[idx]; }
00184 TH1F *LmdTdf(Int_t idx) { return lmdtdf[idx]; }
00185 void TimeCalibration(Int_t,Int_t,Int_t,Float_t scal = 2.2);
00186 void TimeCalibration(Int_t,Int_t,Float_t scal = 2.2);
00187 void TimeCalibration(Float_t scal = 2.2);
00188
00189 void ChargeCalibration(Int_t,Int_t,Int_t);
00190 void ChargeCalibration(Int_t,Int_t);
00191 void ChargeCalibration();
00192
00193 void PedestalsEvaluation();
00194
00195 void WritePedestalsToMsql();
00196 void WritePedestalsToMsql(Int_t runtime);
00197
00198 void WriteTimeToMsql(Int_t runtime,Char_t *ev_type);
00199 void WriteChargeToMsql();
00200 void WriteChargeToMsql(Int_t runtime);
00201 void Add(TFndLmdMon *lmdmon);
00202
00203 ClassDef(TFndLmdMon,1)
00204 };
00205
00206 #endif // FROOT_TFndLmdMon
00207
00208