File indexing completed on 2025-08-06 08:17:12
0001 #include "Gl1BcoDump.h"
0002
0003 #include <fun4all/Fun4AllReturnCodes.h>
0004 #include <fun4all/SubsysReco.h> // for SubsysReco
0005
0006 #include <fun4all/Fun4AllHistoManager.h>
0007
0008 #include <phool/PHCompositeNode.h>
0009 #include <phool/PHDataNode.h>
0010 #include <phool/PHNode.h> // for PHNode
0011 #include <phool/PHNodeIterator.h> // for PHNodeIterator
0012 #include <phool/getClass.h>
0013
0014 #include <Event/Event.h>
0015 #include <Event/packet.h>
0016
0017 #include <TFile.h>
0018 #include <TSystem.h>
0019 #include <TTree.h>
0020
0021 #include <iostream> // for operator<<, endl, basic_ost...
0022 #include <set>
0023 #include <utility> // for pair
0024 #include <vector> // for vector
0025
0026
0027 Gl1BcoDump::Gl1BcoDump(const std::string &name)
0028 : SubsysReco(name)
0029 {
0030 }
0031
0032
0033 int Gl1BcoDump::InitRun(PHCompositeNode * )
0034 {
0035 if (outfilename.empty())
0036 {
0037 std::cout << "no output filename given" << std::endl;
0038 gSystem->Exit(1);
0039 }
0040
0041 outfile = new TFile(outfilename.c_str(), "RECREATE");
0042 ttree = new TTree("bco", "bco");
0043 ttree->Branch("id", &m_id);
0044 ttree->Branch("evt", &m_evt);
0045 ttree->Branch("bco", &m_bco);
0046 ttree->Branch("bcodiff", &m_bcodiff);
0047 return Fun4AllReturnCodes::EVENT_OK;
0048 }
0049
0050
0051 int Gl1BcoDump::process_event(PHCompositeNode *topNode)
0052 {
0053 Event *evt = findNode::getClass<Event>(topNode, "PRDF");
0054 if (!evt)
0055 {
0056 std::cout << "No Event found" << std::endl;
0057 exit(1);
0058 }
0059
0060 int EventSequence = evt->getEvtSequence();
0061 Packet *packet = evt->getPacket(14001);
0062 if (!packet)
0063 {
0064
0065 return Fun4AllReturnCodes::ABORTEVENT;
0066 }
0067
0068 uint64_t bco = (uint64_t) packet->lValue(0, "BCO") & 0xFFFFFFFFFFU;
0069 if (lastbco > 0)
0070 {
0071 int64_t diffbco = bco - lastbco;
0072 m_id = 14001;
0073 m_evt = EventSequence;
0074 m_bco = bco;
0075 m_bcodiff = diffbco;
0076 ttree->Fill();
0077 }
0078 lastbco = bco;
0079 delete packet;
0080 return Fun4AllReturnCodes::EVENT_OK;
0081 }
0082
0083
0084 int Gl1BcoDump::End(PHCompositeNode * )
0085 {
0086 outfile->cd();
0087 ttree->Write();
0088 outfile->Close();
0089 delete outfile;
0090 return Fun4AllReturnCodes::EVENT_OK;
0091 }