File indexing completed on 2025-08-05 08:20:30
0001 #ifndef SPIN_SPINMON_H
0002 #define SPIN_SPINMON_H
0003
0004 #include <onlmon/OnlMon.h>
0005
0006 class Event;
0007 class TH1;
0008 class TH2;
0009 class Packet;
0010 class eventReceiverClient;
0011
0012 class SpinMon : public OnlMon
0013 {
0014 public:
0015 SpinMon(const std::string &name = "SPINMON");
0016 virtual ~SpinMon();
0017
0018 int process_event(Event *evt);
0019 int Init();
0020 int BeginRun(const int runno);
0021 int Reset();
0022
0023 static const int NTRIG = 16;
0024 static const int NBUNCHES = 120;
0025
0026 private:
0027 Packet *p_gl1 = nullptr;
0028 Packet *pBlueSpin = nullptr;
0029 Packet *pYellSpin = nullptr;
0030 Packet *pBluePol = nullptr;
0031 Packet *pYellPol = nullptr;
0032 Packet *pBlueAsym = nullptr;
0033 Packet *pYellAsym = nullptr;
0034 Packet *pBlueIntPattern = nullptr;
0035 Packet *pYellIntPattern = nullptr;
0036 Packet *pBluePolPattern = nullptr;
0037 Packet *pYellPolPattern = nullptr;
0038 Packet *pBlueFillNumber = nullptr;
0039 Packet *pYellFillNumber = nullptr;
0040
0041 bool success = 0;
0042
0043 int defaultxingshift = 0;
0044
0045 int xingshift = 0;
0046 int addxingshift = -999;
0047
0048 uint64_t scalercounts[NTRIG][NBUNCHES]{};
0049
0050
0051
0052
0053
0054
0055
0056
0057 int blueSpinPattern[NBUNCHES] = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10};
0058 int yellSpinPattern[NBUNCHES] = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10};
0059
0060 int blueFillPattern[NBUNCHES] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
0061 int yellFillPattern[NBUNCHES] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
0062
0063 protected:
0064 int evtcnt = 0;
0065
0066 int CalculateCrossingShift(int &xingshift, uint64_t counts[NTRIG][NBUNCHES], bool &success);
0067
0068 eventReceiverClient *erc = {nullptr};
0069
0070 const int BLUE = 0;
0071 const int YELLOW = 1;
0072
0073 const int SPIN_UP = 0;
0074 const int SPIN_DOWN = 1;
0075 const int SPIN_UNPOL = 2;
0076
0077 const int packet_BLUESPIN = 14902;
0078 const int packet_YELLSPIN = 14903;
0079 const int packet_BLUEPOL = 14905;
0080 const int packet_BLUEASYM = 14906;
0081 const int packet_YELLPOL = 14907;
0082 const int packet_YELLASYM = 14908;
0083 const int packet_BLUEINTPATTERN = 14910;
0084 const int packet_BLUEPOLPATTERN = 14911;
0085 const int packet_YELLINTPATTERN = 14912;
0086 const int packet_YELLPOLPATTERN = 14913;
0087 const int packet_BLUEFILLNUMBER = 14915;
0088 const int packet_YELLFILLNUMBER = 14916;
0089 const int packetid_GL1 = 14001;
0090
0091 TH1 *hspinpatternBlue = nullptr;
0092 TH1 *hspinpatternYellow = nullptr;
0093
0094 TH1 *hpCspinpatternBlue = nullptr;
0095 TH1 *hpCspinpatternYellow = nullptr;
0096
0097 TH2 *pCspin_patternBlueUp = nullptr;
0098 TH2 *pCspin_patternBlueDown = nullptr;
0099 TH2 *pCspin_patternBlueUnpol = nullptr;
0100
0101 TH2 *pCspin_patternYellowUp = nullptr;
0102 TH2 *pCspin_patternYellowDown = nullptr;
0103 TH2 *pCspin_patternYellowUnpol = nullptr;
0104
0105 TH2 *spin_patternBlueUp = nullptr;
0106 TH2 *spin_patternBlueDown = nullptr;
0107 TH2 *spin_patternBlueUnpol = nullptr;
0108
0109 TH2 *spin_patternYellowUp = nullptr;
0110 TH2 *spin_patternYellowDown = nullptr;
0111 TH2 *spin_patternYellowUnpol = nullptr;
0112
0113 TH1 *hpolBlue = nullptr;
0114 TH1 *hpolYellow = nullptr;
0115
0116 TH1 *hxingshift = nullptr;
0117 TH1 *hfillnumber = nullptr;
0118 TH1 *hfilltypeBlue = nullptr;
0119 TH1 *hfilltypeYellow = nullptr;
0120
0121 TH1 *gl1_counter[NTRIG] = {nullptr};
0122
0123 TH1 *hCorrect = nullptr;
0124 TH1 *hAbortgap = nullptr;
0125 TH1 *hForbidden = nullptr;
0126
0127
0128
0129 };
0130
0131 #endif