Back to home page

sPhenix code displayed by LXR

 
 

    


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 * /*topNode*/)
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   //  evt->identify();
0060   int EventSequence = evt->getEvtSequence();
0061   Packet *packet = evt->getPacket(14001);
0062   if (!packet)
0063   {
0064     // evt->identify();
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 * /*topNode*/)
0085 {
0086   outfile->cd();
0087   ttree->Write();
0088   outfile->Close();
0089   delete outfile;
0090   return Fun4AllReturnCodes::EVENT_OK;
0091 }