Back to home page

sPhenix code displayed by LXR

 
 

    


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;  // OG is 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   // default xingshift
0043   int defaultxingshift = 0;
0044   // for additional xingshift
0045   int xingshift = 0;
0046   int addxingshift = -999;
0047 
0048   uint64_t scalercounts[NTRIG][NBUNCHES]{};
0049 
0050   /*
0051   //Set default spin patterns to 111x111_P1
0052   int blueSpinPattern[NBUNCHES] = {1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,10,10,10,10,10,10,10,10,10};
0053   int yellSpinPattern[NBUNCHES] = {1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,10,10,10,10,10,10,10,10,10};
0054   */
0055 
0056   // Set default spin patterns to all unfilled
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   // uint64_t scalercounts[NTRIG][NBUNCHES]{};
0129 };
0130 
0131 #endif /* SPIN_SPINMON_H */