TOF/TFndTofMon.h

00001 // @(#)fROOT/TOF:$Name:  $:$Id: TFndTofMon.h,v 1.15 2007/09/05 12:04:20 Diego_Faso Exp $
00002 // Revision Author: Diego Faso <mailto:faso@to.infn.it>, 2005/06/24
00003 // Original Author: Piergiorgio Cerello <mailto:cerello@to.infn.it>, 2000
00004 
00005 #ifndef FROOT_TFndTofMon
00006 #define FROOT_TFndTofMon
00007 
00009 //                                                    //
00010 //                     TFndTofMon                     //
00011 // The description of the Tof online monitor          //
00012 // is analogous to the GTS one (take it as reference) //
00013 //                                                    //
00015 
00016 #include "FROOT.h"
00017 
00018 #include "TObject.h"
00019 #ifdef _FND_ONL_USE_MAP_FILES_
00020 #include "TMapFile.h"
00021 #endif
00022 
00023 #include "TH1.h"
00024 #include "TH2.h"
00025 #include "TCanvas.h"
00026 #include "TLine.h"
00027 
00028 #include "TFndHdt.h"
00029 
00030 class TFndTofMon : public TObject {
00031   
00032  protected:
00033 
00034   Int_t    shmflg;   // Shared Memory flag
00035   TFile    *fout;
00036   TFile    *ftof;    // Tof histogram file
00037 
00038 
00039 #if defined _FND_ONL_USE_MAP_FILES_
00040   TMapFile *mtof;      // main TOF shared memory
00041   TMapFile *mtof_adc;  // ADC TOF shared memory
00042   TMapFile *mtof_tdc;  // TDC TOF shared memory
00043 #elif defined _FND_ONL_USE_SHARED_FILES_
00044   TFile *mtof;      // main TOF shared memory
00045   TFile *mtof_adc;  // ADC TOF shared memory
00046   TFile *mtof_tdc;  // TDC TOF shared memory
00047 #endif
00048   
00049   // ---
00050   Bool_t fMustRecoverHistos; // true if a recovery must be performed after a break
00051   
00052   TString fSharedMemName_Main;
00053   TString fSharedMemName_Adc;
00054   TString fSharedMemName_Tdc;
00055   TString fSharedFileName_Main;
00056   TString fSharedFileName_Adc;
00057   TString fSharedFileName_Tdc;
00058 
00059   // --- histograms 
00060   
00061   TCanvas *tof_mon_adc;      // Canvas for ADC
00062   TCanvas *tof_mon_tdc;      // Canvas for TDC
00063   TCanvas *tof_mon_adc_tdc;  // Canvas for ADC & TDC
00064 
00065   TH1F *tofmult;      // TOF multiplicity
00066   TH2F *tof_i_o_mult; // TOF inner vs outer multiplicity
00067   TH1F *tofmap;       // TOF pattern
00068   TH1F *tofmapadc0;   // TOF ADC pattern (e || p != 0)
00069   TH1F *tofmapadc;    // TOF ADC pattern (e && p != 0)
00070   TH1F *tofmapadce;   // TOF ADC pattern (e)
00071   TH1F *tofmapadcp;   // TOF ADC pattern (p)
00072 
00073   TH1F *tofmaptdc0;   // TOF TDC pattern (e || p != 0)
00074   TH1F *tofmaptdc;    // TOF TDC pattern (e && p != 0)
00075   TH1F *tofmaptdce;   // TOF TDC pattern (e)
00076   TH1F *tofmaptdcp;   // TOF TDC pattern (p)
00077   TH2F *tofcorr[2];   // tof correlations
00078 
00079   TH1F *tofmapmt;     // TOF MT pattern
00080    
00081   static const Int_t n_tof_hist = 84;   // Number of slabs
00082   TH2F *tof_mapadctdc[n_tof_hist];      // ADC vs TDC existence 
00083   TH2F *tof_adc_tdc[n_tof_hist];        // ADC vs TDC 
00084   TH1F *tofadce[n_tof_hist];            // e-side ADC
00085   TH1F *tofadcp[n_tof_hist];            // p-side ADC
00086   TH1F *tofcrg[n_tof_hist];             // ADC (p+e)
00087   TH2F *tofadc[n_tof_hist];             // ADC (p vs e)
00088   TH1F *tofzet[n_tof_hist];             // ADC asymmetry
00089   TH1F *toftdce[n_tof_hist];            // e-side TDC
00090   TH1F *toftdcp[n_tof_hist];            // p-side TDC
00091   TH1F *toftdf[n_tof_hist];             // Time difference
00092   TH1F *toftmn[n_tof_hist];             // Mean Time
00093   TH1F *toftmn_hw[n_tof_hist];          // Hardware Mean Time
00094   TH2F *toftdc[n_tof_hist];             // TDC (p vs e)
00095   TH1F *tof1d;
00096   TH2F *tof2d;
00097    
00098  private:
00099   void Init(); // common initialization (used by all ctors)  
00100   void InitHistos(const Int_t &tof_adc_bins,const Double_t &tof_adc_min,const Double_t &tof_adc_max,const Int_t &tof_tdc_bins,const Double_t &tof_tdc_min,const Double_t &tof_tdc_max); // try to recover histograms from shared file (if still available...)
00101   void OpenSharedFiles(const TString &fmode); // will handle shared memories/files creation
00102 
00103 
00104  public:
00105 
00106   TFndTofMon();                // Constructor for Consumer
00107   TFndTofMon(const TString &fmode,Int_t tof_adc_bins=52,Double_t tof_adc_min = 0.,Double_t tof_adc_max = 4160.,Int_t tof_tdc_bins=50,Double_t tof_tdc_min = 0.,Double_t tof_tdc_max = 4160.);             // Constructor for Producer
00108   TFndTofMon(TString *filename);         // Constructor from ROOT filename
00109   ~TFndTofMon();                         // Destructor
00110   void Fill();
00111   void Fill(const TClonesArray &TofHits);
00112   void Update(Bool_t purge=kTRUE);       // Update shared memories 
00113   void ResetHistos();
00114 
00115   /*   void DisplaySlab(Int_t slab); // Display slab "slab" */
00116   /*   void CloseSlabDisplay(); // Close slab display windows */
00117   void WriteToFile(TString file=0,Bool_t IsShared = kFALSE); // Write histograms to file
00118   TH1F *TofMult() { return tofmult; } // TOF multiplicity
00119   TH2F *TofMultIO() { return tof_i_o_mult; } // TOF inner vs outer multiplicity
00120   TH2F *TofCorr(Int_t i) { return tofcorr[i]; } // tof correlations
00121   TH1F *TofMap() { return tofmap; }      // TOF pattern
00122   TH1F *TofMapAdc0() { return tofmapadc0; }  // TOF ADC pattern (p || e != 0)
00123   TH1F *TofMapAdc() { return tofmapadc; }   // TOF ADC pattern (p && e != 0)
00124   TH1F *TofMapAdcP() { return tofmapadcp; }  // TOF ADC pattern (p)
00125   TH1F *TofMapAdcE() { return tofmapadce; }  // TOF ADC pattern (e)
00126 
00127   TH1F *TofMapTdc0() { return tofmaptdc0; }  // TOF TDC pattern (p || e != 0)
00128   TH1F *TofMapTdc() { return tofmaptdc; }   // TOF TDC pattern (p && e != 0)
00129   TH1F *TofMapTdcP() { return tofmaptdcp; }  // TOF TDC pattern (p)
00130   TH1F *TofMapTdcE() { return tofmaptdce; }  // TOF TDC pattern (e)
00131   TH2F *TofMapAdcTdc(Int_t idx) { return tof_mapadctdc[idx]; } // ADC vs TDC existence 
00132   TH1F *TofMapMT() { return tofmapmt; }      // TOF MT pattern
00133   TH2F *TofAdcTdc(Int_t idx) { return tof_adc_tdc[idx]; } // ADC vs TDC 
00134   TH1F *TofAdcP(Int_t idx) { return tofadcp[idx]; } // p-side ADC
00135   TH1F *TofAdcE(Int_t idx) { return tofadce[idx]; } // e-side ADC
00136   TH1F *TofCrg(Int_t idx) { return tofcrg[idx]; }  // ADC (p+e)
00137   TH2F *TofAdc(Int_t idx) { return tofadc[idx]; }  // ADC (p vs e)
00138   TH1F *TofZet(Int_t idx) { return tofzet[idx]; }  // ADC asymmetry
00139   TH1F *TofTdcP(Int_t idx) { return toftdcp[idx]; } // p-side TDC
00140   TH1F *TofTdcE(Int_t idx) { return toftdce[idx]; } // e-side TDC
00141   TH1F *TofTdf(Int_t idx) { return toftdf[idx]; }  // Time difference
00142   TH1F *TofTmn(Int_t idx) { return toftmn[idx]; }  // Mean Time
00143   TH1F *TofTmnHW(Int_t idx) { return toftmn_hw[idx]; }  // HW Mean Time
00144   TH2F *TofTdc(Int_t idx) { return toftdc[idx]; }  // TDC (p vs e)
00145   void Add(TFndTofMon *tofmon); // merge histograms
00146 
00147   ClassDef(TFndTofMon,1)      // The TOF monitor
00148   };
00149 
00150 #endif // FROOT_TFndTofMon
00151 

Generated on Tue Oct 16 15:40:48 2007 by  doxygen 1.5.2