BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EFTest.cxx
Go to the documentation of this file.
1#include "GaudiKernel/SmartDataPtr.h"
2// #include "GaudiKernel/PropertyMgr.h"
3#include "EventModel/Event.h"
4#include "EventModel/EventHeader.h"
5#include "HltEvent/DstHltInf.h"
6#include "HltEvent/HltInf.h"
7#include "Identifier/HltID.h"
8
10
11#include "EventFilter/EFTest.h"
12
13EFTest::EFTest( const std::string& name, ISvcLocator* pSvcLocator )
14 : Algorithm( name, pSvcLocator ) {
15 // Declare the properties
16 // declareProperty("Cut", m_acolCut = 10);
17 declareProperty( "OutputLevel", m_outputLevel = MSG::NIL );
18}
19
21
22StatusCode EFTest::initialize() {
23
24 MsgStream log( msgSvc(), name() );
25 log << MSG::INFO << "in initialize()" << endmsg;
26 // user code
27
28 StatusCode status = StatusCode::SUCCESS;
29 NTuplePtr nt1( ntupleSvc(), "FILE1/EventFilter" );
30 if ( nt1 ) m_tuple = nt1;
31 else
32 {
33 m_tuple =
34 ntupleSvc()->book( "FILE1/EventFilter", CLID_ColumnWiseTuple, "EventFilter N-Tuple" );
35 if ( m_tuple )
36 {
37 status = m_tuple->addItem( "type", m_type );
38 status = m_tuple->addItem( "alg", m_alg );
39 status = m_tuple->addItem( "endEE", m_endEE );
40 status = m_tuple->addItem( "version", m_version );
41 status = m_tuple->addItem( "etot", m_etot );
42 status = m_tuple->addItem( "nMDCdata", m_nmdc0 );
43 status = m_tuple->addItem( "nTOFdata", m_ntof0 );
44 status = m_tuple->addItem( "nEMCdata", m_nemc0 );
45 status = m_tuple->addItem( "nMUCdata", m_nmuc0 );
46 status = m_tuple->addItem( "nCONdata", m_ncon0 );
47 status = m_tuple->addItem( "nMDCfill", m_nmdc, 0, (int)HltID::getID_MDC_MAX() );
48 status = m_tuple->addItem( "nTOFfill", m_ntof, 0, (int)HltID::getID_TOF_MAX() );
49 status = m_tuple->addItem( "nEMCfill", m_nemc, 0, (int)HltID::getID_EMC_MAX() );
50 status = m_tuple->addItem( "nMUCfill", m_nmuc, 0, (int)HltID::getID_MUC_MAX() );
51 status = m_tuple->addItem( "nCONfill", m_ncon, 0, 100 );
52 status = m_tuple->addIndexedItem( "MDCdata", m_nmdc, m_mdcData );
53 status = m_tuple->addIndexedItem( "TOFdata", m_ntof, m_tofData );
54 status = m_tuple->addIndexedItem( "EMCdata", m_nemc, m_emcData );
55 status = m_tuple->addIndexedItem( "MUCdata", m_nmuc, m_mucData );
56 status = m_tuple->addIndexedItem( "CONdata", m_ncon, m_conData );
57 if ( !status )
58 {
59 log << MSG::ERROR << " Cannot add item into N-tuple" << endmsg;
60 return status;
61 }
62 }
63 else
64 {
65 log << MSG::ERROR << " Cannot book N-tuple:" << long( m_tuple ) << endmsg;
66 return StatusCode::FAILURE;
67 }
68 }
69
70 return StatusCode::SUCCESS;
71}
72
73StatusCode EFTest::execute() {
74
75 MsgStream log( msgSvc(), name() );
76 log << MSG::INFO << "in execute()" << endmsg;
77
79 {
80 // this event refused by event filter
81 log << MSG::DEBUG << "this event refused by event filter: " << EventFilter::getName()
82 << endmsg;
83 // user code
84 }
85 else
86 {
87 // this event accepted by event filter
88 log << MSG::DEBUG << "this event accepteded by event filter: " << EventFilter::getName()
89 << endmsg;
90 // user code
91 }
92 SmartDataPtr<HltInf> hlt( eventSvc(), "/Event/Hlt/HltInf" );
93 bool dstFlag = false;
94 if ( !hlt )
95 {
96 log << MSG::WARNING << "Could not find Event HltInf (try DstHltInf now)" << endmsg;
97 SmartDataPtr<DstHltInf> hltDst( eventSvc(), "/Event/Hlt/DstHltInf" );
98 if ( !hltDst )
99 {
100 log << MSG::FATAL << "Could not find Event DstHltInf too ( please re-generate data)"
101 << endmsg;
102 return ( StatusCode::FAILURE );
103 }
104 else
105 {
106 hlt = hltDst;
107 dstFlag = true;
108 }
109 }
110
111 uint32_t type = hlt->getEventType();
112 for ( int i = 0; i < 32; i++ )
113 {
114 if ( ( 1 << i ) & type ) m_type = i;
115 }
116 m_alg = hlt->getAlgProcess();
117 m_endEE = hlt->getCriteriaTable();
118 m_version = hlt->getVersion();
119 m_etot = hlt->getTotalEnergy();
120 m_nmdc0 = hlt->getNMDC();
121 m_ntof0 = hlt->getNTOF();
122 m_nemc0 = hlt->getNEMC();
123 m_nmuc0 = hlt->getNMUC();
124 m_ncon0 = hlt->getNCON();
125 m_nmdc = 0;
126 m_ntof = 0;
127 m_nemc = 0;
128 m_nmuc = 0;
129 m_ncon = 0;
130 if ( !dstFlag )
131 {
132 vector<uint32_t>::iterator it;
133
134 vector<uint32_t> mdcData = hlt->getDataVec( HltID::MDC );
135 it = mdcData.begin();
136 for ( ; it != mdcData.end(); it++, m_nmdc++ )
137 {
138 if ( m_nmdc > 1 ) m_mdcData[m_nmdc] = *( (float*)&( *it ) );
139 else m_mdcData[m_nmdc] = *it; //*((int*) &(*it));
140 }
141
142 vector<uint32_t> tofData = hlt->getDataVec( HltID::TOF );
143 it = tofData.begin();
144 for ( ; it != tofData.end(); it++, m_ntof++ )
145 {
146 if ( m_ntof > 0 ) m_tofData[m_ntof] = *( (float*)&( *it ) );
147 else m_tofData[m_ntof] = *it; //*((int*) &(*it));
148 }
149
150 vector<uint32_t> emcData = hlt->getDataVec( HltID::EMC );
151 it = emcData.begin();
152 for ( ; it != emcData.end(); it++, m_nemc++ )
153 {
154 if ( !( m_nemc == 0 || m_nemc == 7 || m_nemc == 8 ) )
155 m_emcData[m_nemc] = *( (float*)&( *it ) );
156 else m_emcData[m_nemc] = *it; //*((int*) &(*it));
157 }
158
159 vector<uint32_t> mucData = hlt->getDataVec( HltID::MUC );
160 it = mucData.begin();
161 for ( ; it != mucData.end(); it++, m_nmuc++ )
162 {
163 if ( m_nmuc > 1 ) m_mucData[m_nmuc] = *( (float*)&( *it ) );
164 else m_mucData[m_nmuc] = *it; //*((int*) &(*it));
165 }
166
167 vector<uint32_t> conData = hlt->getDataVec( HltID::CON );
168 it = conData.begin();
169 for ( ; it != conData.end(); it++, m_ncon++ )
170 {
171 m_conData[m_ncon] = *it; //*((int*) &(*it));
172 }
173 }
174
175 m_tuple->write();
176
177 return StatusCode::SUCCESS;
178}
179
180StatusCode EFTest::finalize() {
181
182 MsgStream log( msgSvc(), name() );
183 log << MSG::INFO << "in finalize()" << endmsg;
184 // event number
185 long unsigned ntot = EventFilter::getNEvt();
186 long unsigned npass = EventFilter::getNPass();
187 log << MSG::ALWAYS << "=========================================" << endmsg << "total "
188 << ntot << " events with " << npass << " effective events " << endmsg
189 << "=========================================" << endmsg;
190 // user code
191
192 return StatusCode::SUCCESS;
193}
INTupleSvc * ntupleSvc()
IMessageSvc * msgSvc()
StatusCode finalize()
Definition EFTest.cxx:180
~EFTest()
Definition EFTest.cxx:20
StatusCode execute()
Definition EFTest.cxx:73
EFTest(const std::string &name, ISvcLocator *pSvcLocator)
Definition EFTest.cxx:13
StatusCode initialize()
Definition EFTest.cxx:22
static long unsigned getNEvt()
Definition EventFilter.h:17
static long unsigned getNPass()
Definition EventFilter.h:18
static const std::string & getName()
Definition EventFilter.h:16
static bool getResult()
Definition EventFilter.h:19