BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
GenRdmTrgIdxAlg Class Reference

#include <GenRdmTrgIdxAlg.h>

Inheritance diagram for GenRdmTrgIdxAlg:

Public Member Functions

 GenRdmTrgIdxAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~GenRdmTrgIdxAlg ()
virtual StatusCode initialize ()
 Algorithm initialization.
virtual StatusCode execute ()
 Algorithm execution.
virtual StatusCode finalize ()
 Algorithm finalization.

Detailed Description

Definition at line 11 of file GenRdmTrgIdxAlg.h.

Constructor & Destructor Documentation

◆ GenRdmTrgIdxAlg()

GenRdmTrgIdxAlg::GenRdmTrgIdxAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 11 of file GenRdmTrgIdxAlg.cxx.

12 : Algorithm( name, pSvcLocator ), m_fcount( 0 ) {
13 declareProperty( "RandomTriggerFiles", m_rdmFiles );
14}

Referenced by GenRdmTrgIdxAlg().

◆ ~GenRdmTrgIdxAlg()

GenRdmTrgIdxAlg::~GenRdmTrgIdxAlg ( )
virtual

Definition at line 16 of file GenRdmTrgIdxAlg.cxx.

16{}

Member Function Documentation

◆ execute()

StatusCode GenRdmTrgIdxAlg::execute ( )
virtual

Algorithm execution.

Definition at line 34 of file GenRdmTrgIdxAlg.cxx.

34 {
35 SmartDataPtr<TrigData> trigData( eventSvc(), EventModel::Trig::TrigData );
36 if ( trigData->getTrigChannel( 9 ) != 1 )
37 {
38 // this is not a random trigger event, pass it
39 return StatusCode::SUCCESS;
40 }
41
42 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
43 uint32_t evtNo = eventHeader->eventNumber();
44 uint32_t runNo = eventHeader->runNumber();
45
46 uint32_t thePos = 0;
47 const uint32_t* data = NULL;
48 uint32_t rdmEvtNo = 0xFFFFFFFF;
49
50 // std::cout << "BEGIN " << evtNo << std::endl;
51 do {
52 thePos = m_freader->raw_stream()->tellg();
53 try
54 { data = m_freader->nextEvent(); } catch ( ReachEndOfFile& e )
55 {
56 m_idxhandler->write(
57 RawFileTools::fname2idxname( m_freader->raw_stream()->currentFile() ) );
58 delete m_freader;
59 m_freader = NULL;
60 ++m_fcount;
61 if ( m_fcount < m_rdmFiles.size() )
62 {
63 m_freader = new SimpleRawReader( m_rdmFiles[m_fcount] );
64 rdmEvtNo = 0xFFFFFFFF;
65 continue;
66 }
67 else
68 {
69 fatal() << "can not find event " << evtNo << " in random trigger data files" << endmsg;
70 return StatusCode::FAILURE;
71 }
72 } catch ( RawFileException& e )
73 {
74 e.print();
75 throw e;
76 }
77
78 // std::cout << "run " << data[9+data[5]] << ", event " << data[8+data[5]] << std::endl;
79
80 if ( data[9 + data[5]] != runNo )
81 {
82 fatal() << "bad runNo in random trigger data" << endmsg;
83 return StatusCode::FAILURE;
84 }
85 rdmEvtNo = data[8 + data[5]];
86 } while ( rdmEvtNo != evtNo );
87
88 m_idxhandler->addPos( data[8 + data[5]], thePos );
89
90 return StatusCode::SUCCESS;
91}
int runNo
Definition DQA_TO_DB.cxx:13
TTree * data
virtual void print() const
std::string fname2idxname(const std::string &fname)

◆ finalize()

StatusCode GenRdmTrgIdxAlg::finalize ( )
virtual

Algorithm finalization.

Definition at line 93 of file GenRdmTrgIdxAlg.cxx.

93 {
94 if ( m_freader != NULL )
95 {
96 m_idxhandler->write(
97 RawFileTools::fname2idxname( m_freader->raw_stream()->currentFile() ) );
98 delete m_freader;
99 }
100 delete m_idxhandler;
101
102 return StatusCode::SUCCESS;
103}

◆ initialize()

StatusCode GenRdmTrgIdxAlg::initialize ( )
virtual

Algorithm initialization.

Definition at line 18 of file GenRdmTrgIdxAlg.cxx.

18 {
19 // StatusCode sc = GaudiAlgorithm::initialize(); // must be executed first
20 // StatusCode sc;
21
22 if ( m_rdmFiles.empty() )
23 {
24 error() << "RandomTriggerFiles is empty" << endmsg;
25 return StatusCode::FAILURE;
26 }
27
28 m_idxhandler = new EvtIdxHandler;
29 m_freader = new SimpleRawReader( m_rdmFiles[0] );
30
31 return StatusCode::SUCCESS;
32}

The documentation for this class was generated from the following files: