Back to home page

sPhenix code displayed by LXR

 
 

    


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 }  // Constructor
0013 
0014 KFParticle_triggerInfo::~KFParticle_triggerInfo() = default;  // Destructor
0015 
0016 bool KFParticle_triggerInfo::buildTriggerBranches(PHCompositeNode *topNode, TTree *m_tree)
0017 {
0018   //First, check whether we actually have the right information
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 }