File indexing completed on 2025-08-06 08:17:26
0001 #include "TimerStats.h"
0002
0003 #include <cdbobjects/CDBTTree.h>
0004
0005 #include <ffaobjects/EventHeader.h>
0006
0007 #include <fun4all/Fun4AllReturnCodes.h>
0008 #include <fun4all/Fun4AllServer.h>
0009 #include <fun4all/SubsysReco.h> // for SubsysReco
0010
0011 #include <phool/PHCompositeNode.h>
0012 #include <phool/PHIODataNode.h> // for PHIODataNode
0013 #include <phool/getClass.h>
0014
0015 #include <map> // for _Rb_tree_iterator
0016
0017 TimerStats::TimerStats(const std::string &name)
0018 : SubsysReco(name)
0019 {
0020 }
0021
0022 int TimerStats::InitRun(PHCompositeNode * )
0023 {
0024 delete cdbttree;
0025 cdbttree = new CDBTTree(outfilename);
0026 return Fun4AllReturnCodes::EVENT_OK;
0027 }
0028
0029 int TimerStats::process_event(PHCompositeNode *topNode)
0030 {
0031 iev++;
0032 Fun4AllServer *se = Fun4AllServer::instance();
0033 EventHeader *evtheader = findNode::getClass<EventHeader>(topNode, "EventHeader");
0034 if (evtheader)
0035 {
0036 iev = evtheader->get_EvtSequence();
0037 }
0038 else
0039 {
0040 iev++;
0041 }
0042 for (auto iter = se->timer_begin(); iter != se->timer_end(); ++iter)
0043 {
0044 cdbttree->SetFloatValue(iev, iter->first, iter->second.elapsed());
0045 }
0046 return Fun4AllReturnCodes::EVENT_OK;
0047 }
0048
0049 int TimerStats::End(PHCompositeNode * )
0050 {
0051 cdbttree->Commit();
0052 cdbttree->WriteCDBTTree();
0053 delete cdbttree;
0054 return Fun4AllReturnCodes::EVENT_OK;
0055 }