File indexing completed on 2025-08-06 08:17:49
0001 #include "KFParticle_triggerInfo.h"
0002
0003 #include <calotrigger/TriggerRunInfo.h>
0004 #include <ffarawobjects/Gl1Packet.h>
0005 #include <phool/getClass.h>
0006
0007 #include <TTree.h>
0008
0009 KFParticle_triggerInfo::KFParticle_triggerInfo()
0010 : triggeranalyzer(nullptr)
0011 {
0012 }
0013
0014 KFParticle_triggerInfo::~KFParticle_triggerInfo() = default;
0015
0016 bool KFParticle_triggerInfo::buildTriggerBranches(PHCompositeNode *topNode, TTree *m_tree)
0017 {
0018
0019 auto gl1packet = findNode::getClass<Gl1Packet>(topNode, "GL1RAWHIT");
0020 if (!gl1packet)
0021 {
0022 gl1packet = findNode::getClass<Gl1Packet>(topNode, "GL1Packet");
0023 if (!gl1packet)
0024 {
0025 return false;
0026 }
0027 }
0028
0029 auto triggerruninfo = findNode::getClass<TriggerRunInfo>(topNode, "TriggerRunInfo");
0030 if (!triggerruninfo)
0031 {
0032 return false;
0033 }
0034
0035 size_t pos;
0036 std::string undrscr = "_";
0037 std::string nothing = "";
0038 std::map<std::string, std::string> forbiddenStrings;
0039 forbiddenStrings[" "] = undrscr;
0040 forbiddenStrings[","] = nothing;
0041 forbiddenStrings["/"] = undrscr;
0042 forbiddenStrings["&"] = "and";
0043 forbiddenStrings["="] = "eq";
0044 forbiddenStrings["<"] = "l";
0045 forbiddenStrings[">"] = "g";
0046 forbiddenStrings["+"] = "plus";
0047 forbiddenStrings["-"] = "minus";
0048 forbiddenStrings["*"] = "star";
0049
0050 std::string trigger_header = "trigger_";
0051
0052 triggeranalyzer->decodeTriggers(topNode);
0053
0054 for (int i = 0; i < nTriggerBits; ++i)
0055 {
0056 std::string triggerName = triggeranalyzer->getTriggerName(i);
0057
0058 if (triggerName.find("unknown") != std::string::npos)
0059 {
0060 continue;
0061 }
0062
0063 std::string branchName = trigger_header + triggeranalyzer->getTriggerName(i);
0064
0065 for (auto const& [badString, goodString] : forbiddenStrings)
0066 {
0067 while ((pos = branchName.find(badString)) != std::string::npos)
0068 {
0069 branchName.replace(pos, 1, goodString);
0070 }
0071 }
0072
0073 std::string branchNameType = branchName + "/O";
0074 m_tree->Branch(branchName.c_str(), &m_trigger_bit[i], branchNameType.c_str());
0075 }
0076
0077 return true;
0078 }
0079
0080 void KFParticle_triggerInfo::fillTriggerBranches(PHCompositeNode *topNode)
0081 {
0082 triggeranalyzer->decodeTriggers(topNode);
0083 for (int i = 0; i < nTriggerBits; ++i)
0084 {
0085 std::string triggerName = triggeranalyzer->getTriggerName(i);
0086
0087 if (triggerName.find("unknown") != std::string::npos)
0088 {
0089 continue;
0090 }
0091
0092 m_trigger_bit[i] = triggeranalyzer->didTriggerFire(i);
0093 }
0094 }
0095
0096 void KFParticle_triggerInfo::resetTriggerBranches()
0097 {
0098 for (int i = 0; i < nTriggerBits; ++i)
0099 {
0100 m_trigger_bit[i] = std::numeric_limits<bool>::quiet_NaN();
0101 }
0102 }