Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:17:26

0001 #ifndef TRIGGER_LL1OUTV1_H
0002 #define TRIGGER_LL1OUTV1_H
0003 
0004 #include "LL1Out.h"
0005 #include "TriggerDefs.h"
0006 
0007 #include <iostream>
0008 #include <map>
0009 #include <string>
0010 #include <utility>
0011 #include <vector>
0012 
0013 ///
0014 class LL1Outv1 : public LL1Out
0015 {
0016  public:
0017   typedef std::map<unsigned int, std::vector<unsigned int>*> Map;
0018   typedef Map::const_iterator ConstIter;
0019   typedef Map::iterator Iter;
0020   typedef std::pair<Iter, Iter> Range;
0021   typedef std::pair<ConstIter, ConstIter> ConstRange;
0022 
0023   ///
0024   LL1Outv1();
0025 
0026   LL1Outv1(const std::string& triggertype, const std::string& ll1type);
0027   ///
0028   ~LL1Outv1() override;
0029 
0030   /// Clear Event from memory
0031   void Reset() override;
0032 
0033   void identify(std::ostream& out = std::cout) const override;
0034 
0035   /// isValid returns non zero if object contains vailid data
0036   int isValid() const override;
0037 
0038   // Get Trigger Type
0039   std::string getLL1Type() const override { return m_ll1_type; }
0040 
0041   // Set Trigger Type
0042   void setLL1Type(std::string& ll1type) override { m_ll1_type = ll1type; }
0043   void setTriggerType(std::string& triggertype) override { m_trigger_type = triggertype; }
0044 
0045   TriggerDefs::TriggerKey getTriggerKey() const override { return m_trigger_key; }
0046   void setTriggerKey(TriggerDefs::TriggerKey key) override { m_trigger_key = key; }
0047 
0048   std::vector<unsigned int>* GetTriggerBits() override { return m_trigger_bits; }
0049   std::vector<unsigned int>* get_word(int word) override { return m_trigger_words[word]; }
0050   bool passesTrigger() override;
0051 
0052   bool passesThreshold(int ith) override;
0053 
0054   std::vector<std::pair<TriggerDefs::TriggerSumKey, unsigned short>> getTriggeredSums() override;
0055   std::vector<TriggerDefs::TriggerSumKey> getTriggeredSumKeys(int ith = 0) override;
0056   std::vector<TriggerDefs::TriggerPrimKey> getTriggeredPrimitives() override { return m_triggered_primitives; }
0057 
0058   void addTriggeredSum(TriggerDefs::TriggerSumKey sk, unsigned short bit) override;
0059   void addTriggeredPrimitive(TriggerDefs::TriggerPrimKey pk) override;
0060 
0061   void add_word(int key, std::vector<unsigned int>* trigger_words) override { m_trigger_words[key] = trigger_words; }
0062 
0063   void set_event_number(unsigned int evt) override { m_event_number = evt; }
0064   unsigned int get_event_number() override { return m_event_number; }
0065   void set_clock_number(unsigned int clk) override { m_clock_number = clk; }
0066   unsigned int get_clock_number() override { return m_clock_number; }
0067 
0068   ConstRange getTriggerWords() const override;
0069   Range getTriggerWords() override;
0070 
0071  protected:
0072   int idx{0};
0073   unsigned int m_event_number{0};
0074   unsigned int m_clock_number{0};
0075   unsigned int m_thresholds[10]{0};
0076 
0077   TriggerDefs::TriggerKey m_trigger_key = TriggerDefs::TRIGGERKEYMAX;
0078   TriggerDefs::TriggerId m_triggerid = TriggerDefs::TriggerId::noneTId;
0079 
0080   std::string m_ll1_type{"NONE"};
0081   std::string m_trigger_type{"NONE"};
0082   std::vector<unsigned int>* m_trigger_bits{nullptr};
0083   std::vector<std::pair<unsigned int, unsigned short>> m_triggered_sums = {};
0084 
0085   std::vector<unsigned int> m_triggered_primitives = {};
0086 
0087   Map m_trigger_words{};
0088 
0089  private:  // so the ClassDef does not show up with doc++
0090   ClassDefOverride(LL1Outv1, 1);
0091 };
0092 
0093 #endif