Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:58

0001 #ifndef BBC_BBCMONDRAW_H
0002 #define BBC_BBCMONDRAW_H
0003 
0004 #include "BbcMonDefs.h"
0005 
0006 #include <onlmon/OnlMonDraw.h>
0007 #include <onlmon/triggerEnum.h>
0008 
0009 #include <string>
0010 #include <fstream>
0011 //#include <fcntl.h>
0012 
0013 class OnlMonDB;
0014 class TCanvas;
0015 class TGraphErrors;
0016 class TPad;
0017 class TStyle;
0018 class TPaveText;
0019 class TText;
0020 class TArc;
0021 class TLine;
0022 class TBox;
0023 class TH1;
0024 class TH2;
0025 class TGraph;
0026 class TArrow;
0027 class TF1;
0028 class TLatex;
0029 class TSpectrum;
0030 
0031 class BbcMonDraw : public OnlMonDraw
0032 {
0033  public:
0034   explicit BbcMonDraw(const std::string &name);
0035 
0036   ~BbcMonDraw() override;
0037 
0038   int Init() override;
0039   int Draw(const std::string &what = "ALL") override;
0040   int MakeHtml(const std::string &what = "ALL") override;
0041   int SavePlot(const std::string &what = "ALL", const std::string &type = "png") override;
0042 
0043  protected:
0044   TStyle *bbcStyle = nullptr;
0045 
0046   int MakeCanvas(const std::string &name);
0047   int DrawFirst(const std::string &what = "ALL");
0048   int DrawSecond(const std::string &what = "ALL");
0049   int DrawHistory(const std::string &what = "ALL");
0050   int TimeOffsetTicks = -1;
0051 
0052   int Warning(TPad *pad, const float x, const float y, const int r, const std::string &msg);
0053   int ClearWarning(void);
0054 
0055   void GetMinBiasTrigName();
0056 
0057   OnlMonDB *dbvars = nullptr;
0058 
0059   
0060   // vtx to MCR variables
0061   int sendflag{0};      // 0 = don't send, 1 = send
0062   std::string sendflagfname;
0063   int GetSendFlag();
0064   int UpdateSendFlag(const int flag);
0065 
0066   // reset zvtx variables
0067   int zresetflag{0};      // 0 = don't send, 1 = send
0068   std::string zresetflagfname;
0069   int GetZResetFlag();
0070   int UpdateZResetFlag(const int flag);
0071  
0072   // bad gl1 variables
0073   int gl1badflag{0};      // 0 = normal, 1 = gl1bad
0074   std::string gl1badflagfname;
0075   int GetGL1BadFlag();
0076   int UpdateGL1BadFlag(const int flag);
0077 
0078   TCanvas *TC[nCANVAS] = {nullptr};
0079   TPad *transparent[nCANVAS] = {nullptr};
0080 
0081   TPad *Pad[6] = {nullptr};
0082 
0083   // for all Pages
0084   TPad *PadTop[nCANVAS] = {};
0085   TPaveText *PaveTop = nullptr;
0086   TText *TextTop = nullptr;
0087   TPad *PadAutoUpdate[nCANVAS] = {nullptr};
0088 
0089   TPaveText *PaveWarning[BbcMonDefs::MAX_WARNING] = {};
0090   TArc *ArcWarning[BbcMonDefs::MAX_WARNING] = {};
0091   TPad *PadWarning[BbcMonDefs::MAX_WARNING] = {};
0092   int nPadWarning[BbcMonDefs::MAX_WARNING] = {};
0093   int nWarning = 0;
0094 
0095   TH1 *Trigs{nullptr};
0096 
0097   // for the 1st Page
0098   TPad *PadZVertex = nullptr;
0099   TPad *PadRunZVertex = nullptr;
0100   TPad *PadZVertexSummary = nullptr;
0101   TH2 *SouthHitMap = nullptr;
0102   TPad *PadSouthHitMap = nullptr;
0103   TH2 *NorthHitMap = nullptr;
0104   TPad *PadNorthHitMap = nullptr;
0105 
0106   // for 2nd Page
0107   TH1 *HitTime[nSIDE] = {};
0108   TPad *PadHitTime[nSIDE] = {};
0109   TLine *LineHitTime[nSIDE][2] = {};
0110   TArrow *ArrowHitTime[nSIDE] = {};
0111   TText *TextHitTime[nSIDE] = {};
0112   TF1 *FitHitTime[nSIDE] = {};
0113 
0114   TH1 *AvrHitTime = nullptr;
0115   TPad *PadAvrHitTime = nullptr;
0116   TLine *LineAvrHitTime[2] = {};
0117   TArrow *ArrowAvrHitTime = nullptr;
0118   TText *TextAvrHitTime = nullptr;
0119   TF1 *FitAvrHitTime = nullptr;
0120 
0121   TH1 *SouthHitTime = nullptr;
0122   TPad *PadSouthHitTime = nullptr;
0123   TLine *LineSouthHitTime[2] = {};
0124   TArrow *ArrowSouthHitTime = nullptr;
0125   TText *TextSouthHitTime = nullptr;
0126   TF1 *FitSouthHitTime = nullptr;
0127 
0128   TH1 *NorthHitTime = nullptr;
0129   TPad *PadNorthHitTime = nullptr;
0130   TLine *LineNorthHitTime[2] = {};
0131   TArrow *ArrowNorthHitTime = nullptr;
0132   TText *TextNorthHitTime = nullptr;
0133   TF1 *FitNorthHitTime = nullptr;
0134 
0135   TH2 *TimeWave = nullptr;
0136   TPad *PadTimeWave = nullptr;
0137 
0138   TH2 *ChargeWave = nullptr;
0139   TPad *PadChargeWave = nullptr;
0140 
0141   TLine *LineTzeroZvtx[4] = {};
0142   TText *TextTzeroZvtx = nullptr;
0143 
0144   TPad *PadBbcSummary = nullptr;
0145   // TText * TextBbcSummaryHitTime = nullptr;
0146   TText *TextBbcSummaryHitTime[2] = {};
0147   TText *TextBbcSummaryGlobalOffset[2] = {};
0148   TText *TextBbcSummaryZvertex = nullptr;
0149   // TText * TextBbcSummaryTrigRate = nullptr;
0150   TLatex *TextBbcSummaryTrigRate = nullptr;
0151 
0152   TH1 *Zvtx{nullptr};
0153   TH1 *Zvtx_alltrigger{nullptr};
0154   TH1 *Zvtx_ns{nullptr};
0155   TH1 *Zvtx_10{nullptr};
0156   TH1 *Zvtx_30{nullptr};
0157   TH1 *Zvtx_60{nullptr};
0158   TH1 *Zvtx_ns_chk{nullptr};
0159   TH1 *Zvtx_10_chk{nullptr};
0160   TH1 *Zvtx_30_chk{nullptr};
0161   TH1 *Zvtx_60_chk{nullptr};
0162   TH1 *Zvtx_zdcns{nullptr};
0163   TH1 *Zvtx_emcal{nullptr};
0164   TH1 *Zvtx_hcal{nullptr};
0165   TH1 *Zvtx_emcalmbd{nullptr};
0166   TH1 *Zvtx_hcalmbd{nullptr};
0167   TH1 *RunVtx{nullptr};
0168   TH1 *RunVtxErr{nullptr};
0169   TH1 *RunVtxTime{nullptr};
0170   TH1 *EmptyHist{nullptr};
0171   TGraphErrors *gRunVtx{nullptr};
0172   TGraph *gRunAvgVtx{nullptr};
0173   TF1 *FitZvtx{nullptr};
0174   TF1 *FitZDCvtx{nullptr};
0175   TLine *LineZvtx[2] = {};
0176   TArrow *ArrowZvtx = nullptr;
0177   TText *TextZvtx = nullptr;
0178   TText *TextZvtxNorth = nullptr;
0179   TText *TextZvtxSouth = nullptr;
0180 
0181   TH2 *ArmHit = nullptr;
0182   TPad *PadArmHit = nullptr;
0183   TText *TextArmHit = nullptr;
0184   TArc *ArcArmHit = nullptr;
0185 
0186   // for 3rd Page
0187   // Triggered Monitor
0188   TH1 *South_Nhit{ nullptr };
0189   TH1 *North_Nhit{ nullptr };
0190   TH1 *Nhit_emcal[2]{ nullptr, nullptr };
0191   TH1 *Nhit_hcal[2]{ nullptr, nullptr };
0192   TH1 *Nhit_emcalmbd[2]{ nullptr, nullptr };
0193   TH1 *Nhit_hcalmbd[2]{ nullptr, nullptr };
0194   TPad *PadNhits{ nullptr };
0195   TPad *PadNhitsHCAL{ nullptr };
0196   TPad *PadNhitsEMCAL{ nullptr };
0197   TPad *PadZvtx{ nullptr };
0198   TPad *PadZvtxHCAL{ nullptr };
0199   TPad *PadZvtxEMCAL{ nullptr };
0200 
0201   TH1 *SouthChargeSum = nullptr;
0202   TH1 *NorthChargeSum = nullptr;
0203   TPad *PadChargeSum = nullptr;
0204   TText *TextSouthChargeSum = nullptr;
0205   TText *TextNorthChargeSum = nullptr;
0206 
0207   TPad *PadButton = nullptr;
0208   TPad *PadMultiView = nullptr;
0209   TH1 *MultiView1F = nullptr;
0210   TH2 *MultiView2F = nullptr;
0211   TPad *PadWarnings = nullptr;
0212   TPaveText *PaveWarnings = nullptr;
0213 
0214   TPad *PadAdc = nullptr;
0215   TH2 *Adc = nullptr;
0216 
0217   // for 4th Page
0218   // It is for Only Expert
0219   TPad *PadTzeroZVertex = nullptr;
0220   TText *TextZVertexExpress = nullptr;
0221   TText *TextZVertexNotice = nullptr;
0222   TGraphErrors *TdcOver[nSIDE] = {};
0223   TPad *PadTdcOver[nSIDE] = {};
0224   TLine *LineTdcOver[nSIDE][2] = {};
0225   TBox *BoxTdcOver[nSIDE] = {};
0226   TH1 *FrameTdcOver[nSIDE] = {};
0227 
0228   TGraph *nHit[nTRIGGER][nSIDE] = {};
0229   TPad *PadnHit[nSIDE] = {};
0230   TLine *LinenHit[nTRIGGER][nSIDE][2] = {};
0231   TBox *BoxnHit[nTRIGGER][nSIDE] = {};
0232   TPad *PadnHitStatus = nullptr;
0233   TText *TextnHitStatus = nullptr;
0234   TH1 *FramenHit[nSIDE] = {};
0235 
0236   TH1 * ZvrtxAuto[TriggerEnum::NUM_MBD_TRIGGERS] {nullptr};
0237 
0238   TGraphErrors *RunningZ{nullptr};
0239 
0240   //  TText * TextZVertex[3] = {};
0241   // TText * TextZVertex_scale[3] = {};
0242   // TText * TextZVertex[4] = {};
0243   // TText * TextZVertex_scale[4] = {};
0244   // TText * TextZVertex_mean[4] = {};
0245   TText *TextZVertex[5] = {};        // RUN11 pp
0246   TText *TextZVertex_scale[5] = {};  // RUN11 pp
0247   TText *TextZVertex_mean[5] = {};   // RUN11 pp
0248 
0249   TLatex *TextZvtxStatus[5] = {};
0250 
0251   TH2 *TzeroZvtx = nullptr;
0252 
0253   // Scale down factor
0254   TH1 *Prescale_hist = nullptr;
0255   TSpectrum *tspec = nullptr;
0256 
0257   std::string TrigName;
0258 
0259  private:
0260   int DrawDeadServer(TPad *transparent_pad) override;
0261 };
0262 
0263 #endif /* BBC_BBCMONDRAW_H */