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

#include <HltEventMaker.h>

Inheritance diagram for HltEventMaker:

Public Member Functions

 HltEventMaker (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Detailed Description

Definition at line 6 of file HltEventMaker.h.

Constructor & Destructor Documentation

◆ HltEventMaker()

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

Definition at line 19 of file HltEventMaker.cxx.

20 : Algorithm( name, pSvcLocator ) {
21 // Declare the properties
22}

Referenced by HltEventMaker().

Member Function Documentation

◆ execute()

StatusCode HltEventMaker::execute ( )

Definition at line 32 of file HltEventMaker.cxx.

32 {
33 MsgStream log( msgSvc(), name() );
34 log << MSG::DEBUG << "HltEventMaker: in execute()" << endmsg;
35
36 // Get the event header, print out event and run number
37 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
38 if ( !eventHeader )
39 {
40 log << MSG::FATAL << "Could not find Event Header" << endmsg;
41 return StatusCode::FAILURE;
42 }
43
44 int eventId = eventHeader->eventNumber();
45 int runId = eventHeader->runNumber();
46 log << MSG::INFO << "HltEventMaker: retrieved event: "
47 << " Event Number " << eventId << " run: " << runId << endmsg;
48
49 HltInf* aHlt = new HltInf();
50 // Get EventFilter information from TDS
51 SmartDataPtr<HltRawCol> hltRawCol( eventSvc(), "/Event/Hlt/HltRawCol" );
52 if ( !hltRawCol )
53 {
54 log << MSG::DEBUG << "Could not find HltRawCol!" << endmsg;
55 // return StatusCode::SUCCESS;
56 }
57 else
58 {
59 uint32_t type = 0, alg = 0, cri = 0, ver = 0;
60 float etot = 0;
61 uint32_t nmdc = 0xFF, ntof = 0xFF, nemc = 0xFF, nmuc = 0xFF;
62
63 HltRawCol::iterator iter = hltRawCol->begin();
64 for ( ; iter != hltRawCol->end(); iter++ )
65 {
66 Identifier id = ( *iter )->identify();
67 log << MSG::VERBOSE << "EventFilter info id: " << hex << id << ": "
68 << ( *iter )->getIntChannel() << "," << dec << ( *iter )->getFloatChannel()
69 << endmsg;
70 if ( HltID::is_eventtype( id ) ) aHlt->setEventType( type = ( *iter )->getIntChannel() );
71 if ( HltID::is_algorithm( id ) ) aHlt->setAlgProcess( alg = ( *iter )->getIntChannel() );
72 if ( HltID::is_criteria( id ) )
73 aHlt->setCriteriaTable( cri = ( *iter )->getIntChannel() );
74 if ( HltID::is_version( id ) ) aHlt->setVersion( ver = ( *iter )->getIntChannel() );
75 if ( HltID::is_energy( id ) )
76 aHlt->setTotalEnergy( etot = ( *iter )->getFloatChannel() );
77
78 uint32_t pureid = id & 0xFF;
79 if ( HltID::is_number( id ) )
80 {
81 uint32_t datanum = ( *iter )->getIntChannel();
82 aHlt->setNumber( datanum );
83 nmdc = datanum & 0xFF;
84 ntof = ( datanum & 0xFF00 ) >> 8;
85 nemc = ( datanum & 0xFF0000 ) >> 16;
86 nmuc = ( datanum & 0xFF000000 ) >> 24;
87 log << MSG::VERBOSE << nmdc << ", " << ntof << ", " << nemc << ", " << nmuc << endmsg;
88 }
89 else if ( HltID::is_mdc_inf( id ) ) { aHlt->push_mdc( ( *iter )->getIntChannel() ); }
90 else if ( HltID::is_tof_inf( id ) ) { aHlt->push_tof( ( *iter )->getIntChannel() ); }
91 else if ( HltID::is_emc_inf( id ) ) { aHlt->push_emc( ( *iter )->getIntChannel() ); }
92 else if ( HltID::is_muc_inf( id ) ) { aHlt->push_muc( ( *iter )->getIntChannel() ); }
93 else if ( HltID::is_con_inf( id ) )
94 {
95 if ( HltID::is_ncon( id ) ) aHlt->setNCON( ( *iter )->getIntChannel() );
96 else aHlt->push_con( ( *iter )->getIntChannel() );
97 }
98 }
99 log << MSG::DEBUG << "type=" << type << ", alg=" << alg << ", criteria=" << cri
100 << ", version=" << ver << ", energy=" << etot << endmsg;
101
102 m_ntot++;
103 }
104 // Register related event filter information to TDS for physics analysis
105 StatusCode sc;
106 DataObject* aHltInfEvent;
107 eventSvc()->findObject( "/Event/Hlt/HltInf", aHltInfEvent );
108 if ( aHltInfEvent != NULL )
109 {
110 SmartDataPtr<HltInf> hltInf( eventSvc(), "/Event/Hlt/HltInf" );
111 log << MSG::DEBUG << "old type=" << hltInf->getEventType()
112 << ", alg=" << hltInf->getAlgProcess() << ", criteria=" << hltInf->getCriteriaTable()
113 << ", version=" << hltInf->getVersion() << ", energy=" << hltInf->getTotalEnergy()
114 << endmsg;
115 // then unregister HltInf
116 sc = eventSvc()->unregisterObject( "/Event/Hlt/HltInf" );
117 delete aHltInfEvent; // it must be delete to avoid memory leakage
118 log << MSG::INFO << "Old HltInf has been unregistered" << endmsg;
119 if ( sc != StatusCode::SUCCESS )
120 {
121 log << MSG::FATAL << "Could not unregister HltInf" << endmsg;
122 return ( StatusCode::FAILURE );
123 }
124 }
125 sc = eventSvc()->registerObject( EventModel::Hlt::HltInf, aHlt );
126 if ( sc != StatusCode::SUCCESS )
127 {
128 log << MSG::FATAL << "Could not register HltInf" << endmsg;
129 return StatusCode::FAILURE;
130 }
131
132 return StatusCode::SUCCESS;
133}
Double_t etot
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
IMessageSvc * msgSvc()
void setAlgProcess(const unsigned int i)
void setCriteriaTable(const unsigned int i)
void setNumber(const unsigned int i)
void setNCON(const unsigned int i)
void setEventType(const unsigned int i)
void setTotalEnergy(const float etot)
void setVersion(const unsigned int i)
static bool is_ncon(const Identifier &id)
Definition HltID.cxx:103
static bool is_tof_inf(const Identifier &id)
Definition HltID.cxx:114
static bool is_version(const Identifier &id)
Definition HltID.cxx:85
static bool is_con_inf(const Identifier &id)
Definition HltID.cxx:129
static bool is_eventtype(const Identifier &id)
Definition HltID.cxx:67
static bool is_algorithm(const Identifier &id)
Definition HltID.cxx:73
static bool is_muc_inf(const Identifier &id)
Definition HltID.cxx:124
static bool is_criteria(const Identifier &id)
Definition HltID.cxx:79
static bool is_emc_inf(const Identifier &id)
Definition HltID.cxx:119
static bool is_number(const Identifier &id)
Definition HltID.cxx:97
static bool is_mdc_inf(const Identifier &id)
Definition HltID.cxx:109
static bool is_energy(const Identifier &id)
Definition HltID.cxx:91
virtual void push_muc(uint32_t data)
virtual void push_mdc(uint32_t data)
virtual void push_tof(uint32_t data)
virtual void push_con(uint32_t data)
virtual void push_emc(uint32_t data)

◆ finalize()

StatusCode HltEventMaker::finalize ( )

Definition at line 135 of file HltEventMaker.cxx.

135 {
136 MsgStream log( msgSvc(), name() );
137 log << MSG::DEBUG << "==> Finalize HltEventMaker" << endmsg;
138 log << MSG::ALWAYS << m_ntot << " events are converted." << endmsg;
139 return StatusCode::SUCCESS;
140}

◆ initialize()

StatusCode HltEventMaker::initialize ( )

Definition at line 24 of file HltEventMaker.cxx.

24 {
25 MsgStream log( msgSvc(), name() );
26 log << MSG::DEBUG << "HltEventMaker: in initialize()" << endmsg;
27 m_ntot = 0;
28
29 return StatusCode::SUCCESS;
30}

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