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
0031 void Reset() override;
0032
0033 void identify(std::ostream& out = std::cout) const override;
0034
0035
0036 int isValid() const override;
0037
0038
0039 std::string getLL1Type() const override { return m_ll1_type; }
0040
0041
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:
0090 ClassDefOverride(LL1Outv1, 1);
0091 };
0092
0093 #endif