Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-04-07 08:16:13

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   const int nPacketStatus{6};
0095 
0096   TH1 *Trigs{nullptr};
0097   TH1 *bbc_nevent_counter{nullptr};
0098 
0099   // for the 1st Page
0100   TPad *PadZVertex = nullptr;
0101   TPad *PadRunZVertex = nullptr;
0102   TPad *PadZVertexSummary = nullptr;
0103   TH2 *SouthHitMap = nullptr;
0104   TPad *PadSouthHitMap = nullptr;
0105   TH2 *NorthHitMap = nullptr;
0106   TPad *PadNorthHitMap = nullptr;
0107 
0108   // for 2nd Page
0109   TH1 *HitTime[nSIDE] = {};
0110   TPad *PadHitTime[nSIDE] = {};
0111   TLine *LineHitTime[nSIDE][2] = {};
0112   TArrow *ArrowHitTime[nSIDE] = {};
0113   TText *TextHitTime[nSIDE] = {};
0114   TF1 *FitHitTime[nSIDE] = {};
0115 
0116   TH1 *AvrHitTime = nullptr;
0117   TPad *PadAvrHitTime = nullptr;
0118   TLine *LineAvrHitTime[2] = {};
0119   TArrow *ArrowAvrHitTime = nullptr;
0120   TText *TextAvrHitTime = nullptr;
0121   TF1 *FitAvrHitTime = nullptr;
0122 
0123   TH1 *SouthHitTime = nullptr;
0124   TPad *PadSouthHitTime = nullptr;
0125   TLine *LineSouthHitTime[2] = {};
0126   TArrow *ArrowSouthHitTime = nullptr;
0127   TText *TextSouthHitTime = nullptr;
0128   TF1 *FitSouthHitTime = nullptr;
0129 
0130   TH1 *NorthHitTime = nullptr;
0131   TPad *PadNorthHitTime = nullptr;
0132   TLine *LineNorthHitTime[2] = {};
0133   TArrow *ArrowNorthHitTime = nullptr;
0134   TText *TextNorthHitTime = nullptr;
0135   TF1 *FitNorthHitTime = nullptr;
0136 
0137   TH2 *TimeWave = nullptr;
0138   TPad *PadTimeWave = nullptr;
0139 
0140   TH2 *ChargeWave = nullptr;
0141   TPad *PadChargeWave = nullptr;
0142 
0143   TLine *LineTzeroZvtx[4] = {};
0144   TText *TextTzeroZvtx = nullptr;
0145 
0146   TPad *PadBbcSummary = nullptr;
0147   // TText * TextBbcSummaryHitTime = nullptr;
0148   TText *TextBbcSummaryHitTime[2] = {};
0149   TText *TextBbcSummaryGlobalOffset[2] = {};
0150   TText *TextBbcSummaryZvertex = nullptr;
0151   // TText * TextBbcSummaryTrigRate = nullptr;
0152   TLatex *TextBbcSummaryTrigRate = nullptr;
0153 
0154   TH1 *Zvtx{nullptr};
0155   TH1 *Zvtx_alltrigger{nullptr};
0156   TH1 *Zvtx_ns{nullptr};
0157   TH1 *Zvtx_10{nullptr};
0158   TH1 *Zvtx_30{nullptr};
0159   TH1 *Zvtx_60{nullptr};
0160   TH1 *Zvtx_ns_chk{nullptr};
0161   TH1 *Zvtx_10_chk{nullptr};
0162   TH1 *Zvtx_30_chk{nullptr};
0163   TH1 *Zvtx_60_chk{nullptr};
0164   TH1 *Zvtx_zdcns{nullptr};
0165   TH1 *Zvtx_emcal{nullptr};
0166   TH1 *Zvtx_hcal{nullptr};
0167   TH1 *Zvtx_emcalmbd{nullptr};
0168   TH1 *Zvtx_hcalmbd{nullptr};
0169   TH1 *RunVtx{nullptr};
0170   TH1 *RunVtxErr{nullptr};
0171   TH1 *RunVtxTime{nullptr};
0172   TH1 *EmptyHist{nullptr};
0173   TGraphErrors *gRunVtx{nullptr};
0174   TGraph *gRunAvgVtx{nullptr};
0175   TF1 *FitZvtx{nullptr};
0176   TF1 *FitZDCvtx{nullptr};
0177   TLine *LineZvtx[2] = {};
0178   TArrow *ArrowZvtx = nullptr;
0179   TText *TextZvtx = nullptr;
0180   TText *TextZvtxNorth = nullptr;
0181   TText *TextZvtxSouth = nullptr;
0182 
0183   TH2 *ArmHit = nullptr;
0184   TPad *PadArmHit = nullptr;
0185   TText *TextArmHit = nullptr;
0186   TArc *ArcArmHit = nullptr;
0187 
0188   // for 3rd Page
0189   // Triggered Monitor
0190   TH1 *South_Nhit{ nullptr };
0191   TH1 *North_Nhit{ nullptr };
0192   TH1 *Nhit_emcal[2]{ nullptr, nullptr };
0193   TH1 *Nhit_hcal[2]{ nullptr, nullptr };
0194   TH1 *Nhit_emcalmbd[2]{ nullptr, nullptr };
0195   TH1 *Nhit_hcalmbd[2]{ nullptr, nullptr };
0196   TPad *PadNhits{ nullptr };
0197   TPad *PadNhitsHCAL{ nullptr };
0198   TPad *PadNhitsEMCAL{ nullptr };
0199   TPad *PadZvtx{ nullptr };
0200   TPad *PadZvtxHCAL{ nullptr };
0201   TPad *PadZvtxEMCAL{ nullptr };
0202   TPad *packetWarning{nullptr};
0203 
0204   TH1 *SouthChargeSum = nullptr;
0205   TH1 *NorthChargeSum = nullptr;
0206   TPad *PadChargeSum = nullptr;
0207   TText *TextSouthChargeSum = nullptr;
0208   TText *TextNorthChargeSum = nullptr;
0209 
0210   TPad *PadButton = nullptr;
0211   TPad *PadMultiView = nullptr;
0212   TH1 *MultiView1F = nullptr;
0213   TH2 *MultiView2F = nullptr;
0214   TPad *PadWarnings = nullptr;
0215   TPaveText *PaveWarnings = nullptr;
0216 
0217   TPad *PadAdc = nullptr;
0218   TH2 *Adc = nullptr;
0219 
0220   // for 4th Page
0221   // It is for Only Expert
0222   TPad *PadTzeroZVertex = nullptr;
0223   TText *TextZVertexExpress = nullptr;
0224   TText *TextZVertexNotice = nullptr;
0225   TGraphErrors *TdcOver[nSIDE] = {};
0226   TPad *PadTdcOver[nSIDE] = {};
0227   TLine *LineTdcOver[nSIDE][2] = {};
0228   TBox *BoxTdcOver[nSIDE] = {};
0229   TH1 *FrameTdcOver[nSIDE] = {};
0230 
0231   TGraph *nHit[nTRIGGER][nSIDE] = {};
0232   TPad *PadnHit[nSIDE] = {};
0233   TLine *LinenHit[nTRIGGER][nSIDE][2] = {};
0234   TBox *BoxnHit[nTRIGGER][nSIDE] = {};
0235   TPad *PadnHitStatus = nullptr;
0236   TText *TextnHitStatus = nullptr;
0237   TH1 *FramenHit[nSIDE] = {};
0238 
0239   TH1 * ZvrtxAuto[TriggerEnum::NUM_MBD_TRIGGERS] {nullptr};
0240 
0241   TGraphErrors *RunningZ{nullptr};
0242 
0243   //  TText * TextZVertex[3] = {};
0244   // TText * TextZVertex_scale[3] = {};
0245   // TText * TextZVertex[4] = {};
0246   // TText * TextZVertex_scale[4] = {};
0247   // TText * TextZVertex_mean[4] = {};
0248   TText *TextZVertex[5] = {};        // RUN11 pp
0249   TText *TextZVertex_scale[5] = {};  // RUN11 pp
0250   TText *TextZVertex_mean[5] = {};   // RUN11 pp
0251 
0252   TLatex *TextZvtxStatus[5] = {};
0253 
0254   TH2 *TzeroZvtx = nullptr;
0255 
0256   // Scale down factor
0257   TH1 *Prescale_hist = nullptr;
0258   TSpectrum *tspec = nullptr;
0259 
0260   std::string TrigName;
0261 
0262  private:
0263   int DrawDeadServer(TPad *transparent_pad) override;
0264 };
0265 
0266 #endif /* BBC_BBCMONDRAW_H */