File indexing completed on 2025-08-05 08:17:26
0001
0002
0003 #ifndef TRIGGER_LL1PACKETGETTER_H
0004 #define TRIGGER_LL1PACKETGETTER_H
0005
0006 #include "TriggerDefs.h"
0007
0008 #include <fun4all/SubsysReco.h>
0009
0010 #include <limits>
0011 #include <map>
0012 #include <string>
0013 #include <utility>
0014 #include <vector>
0015
0016 class PHCompositeNode;
0017 class LL1Out;
0018 class TriggerPrimitive;
0019 class TriggerPrimitiveContainer;
0020
0021 class LL1PacketGetter : public SubsysReco
0022 {
0023 public:
0024 explicit LL1PacketGetter(const std::string &name = "LL1PacketGetter", const std::string &trigger = "NONE", const std::string &ll1 = "NONE");
0025 ~LL1PacketGetter() override = default;
0026
0027 int InitRun(PHCompositeNode *topNode) override;
0028 int process_event(PHCompositeNode *topNode) override;
0029 int CreateNodeTree(PHCompositeNode *topNode);
0030
0031 void setTriggerType(const std::string &name);
0032
0033 void set_dataflag(bool flag)
0034 {
0035 m_isdata = flag;
0036 return;
0037 }
0038
0039 private:
0040 std::string m_trigger{"NONE"};
0041 std::string m_ll1{"NONE"};
0042
0043 std::string m_triggerprimitive_nodename{"NONE"};
0044 std::string m_triggerprimitive_ll1_nodename{"NONE"};
0045 std::string m_ll1_nodename{"NONE"};
0046
0047 LL1Out *m_ll1out{nullptr};
0048 TriggerPrimitiveContainer *m_trigger_primitives{nullptr};
0049 TriggerPrimitiveContainer *m_trigger_primitives_ll1{nullptr};
0050 TriggerPrimitive *_trigger_primitive{nullptr};
0051 std::map<unsigned int, std::vector<unsigned int>> *_trigger_words{nullptr};
0052
0053 std::map<unsigned int, std::pair<int, int>> m_prim_sum_map{};
0054 std::map<unsigned int, std::pair<int, int>> m_packet_map{};
0055 std::map<unsigned int, int> m_word_map{};
0056 TriggerDefs::TriggerId m_triggerid{TriggerDefs::TriggerId::noneTId};
0057 unsigned int m_triggerkey{0};
0058 TriggerDefs::DetectorId m_detectorid{TriggerDefs::DetectorId::noneDId};
0059 TriggerDefs::PrimitiveId m_primitiveid{TriggerDefs::PrimitiveId::nonePId};
0060 std::vector<unsigned int> *_sum{nullptr};
0061
0062 int m_packet_low{std::numeric_limits<int>::min()};
0063 int m_packet_high{std::numeric_limits<int>::min()};
0064
0065 int m_nchannels{256};
0066 int m_nchannels_per_primitive{0};
0067 int m_nprimitives{0};
0068 int m_ntriggerwords{0};
0069 bool m_isdata{true};
0070 bool m_no_ll1out{false};
0071 };
0072
0073 #endif