1#include "GaudiKernel/MsgStream.h"
2#include "GaudiKernel/ISvcLocator.h"
3#include "GaudiKernel/IDataProviderSvc.h"
4#include "GaudiKernel/Bootstrap.h"
5#include "GaudiKernel/IMessageSvc.h"
6#include "GaudiKernel/StatusCode.h"
7#include "GaudiKernel/SmartDataPtr.h"
8#include "ReconEvent/ReconEvent.h"
9#include "TofRecEvent/RecTofTrack.h"
10#include "TofRecEvent/RecBTofCalHit.h"
11#include "TofRecEvent/RecETofCalHit.h"
12#include "TofRec/TofTrack.h"
13#include "TofRec/TofRecTDS.h"
18 return StatusCode::SUCCESS;
24 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc);
25 MsgStream log(
msgSvc,
"TofRecTDS");
26 log << MSG::INFO <<
"Initialize: TofRecTDS::RegisterNullRecTofTrack()" << endreq;
28 IDataProviderSvc* eventSvc;
29 Gaudi::svcLocator()->service(
"EventDataSvc", eventSvc);
35 DataObject *aRecTofTrackCol;
36 eventSvc->findObject(
"/Event/Recon/RecTofTrackCol", aRecTofTrackCol );
37 if( aRecTofTrackCol != NULL ) {
38 sc = eventSvc->unregisterObject(
"/Event/Recon/RecTofTrackCol" );
39 if( sc != StatusCode::SUCCESS ) {
40 log << MSG::FATAL <<
"Initialize: Could not unregister RecTofTrack collection!" << endreq;
41 delete recTofTrackCol;
42 return StatusCode::FAILURE;
45 delete aRecTofTrackCol;
47 sc = eventSvc->registerObject(
"/Event/Recon/RecTofTrackCol", recTofTrackCol);
48 if( sc != StatusCode::SUCCESS ) {
49 log << MSG::FATAL <<
"Initialize: TofRec could not register Null Rec TOF track collection!" << endreq;
50 delete recTofTrackCol;
51 return StatusCode::FAILURE;
54 return StatusCode::SUCCESS;
58StatusCode
TofRecTDS::RegisterTDS(
int runNumber,
int eventNumber, std::vector<TofTrack*>*& tofTrackVec,
bool forCalibration, std::string calibData ) {
61 if( forCalibration ) {
62 if(
RegisterRecBTofCalHitCol( runNumber, eventNumber, tofTrackVec, calibData ) == StatusCode::FAILURE )
return StatusCode::FAILURE;
63 if(
RegisterRecETofCalHitCol( runNumber, eventNumber, tofTrackVec, calibData ) == StatusCode::FAILURE )
return StatusCode::FAILURE;
65 return StatusCode::SUCCESS;
71 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc);
72 MsgStream log(
msgSvc,
"TofRecTDS");
74 IDataProviderSvc* eventSvc;
75 Gaudi::svcLocator()->service(
"EventDataSvc", eventSvc);
78 DataObject *aReconEvent ;
79 eventSvc->findObject(
"/Event/Recon",aReconEvent);
80 if(aReconEvent==NULL) {
81 log << MSG::INFO <<
"TofRecTDS::RegisterReconEvent()" << endreq;
83 StatusCode sc = eventSvc->registerObject(
"/Event/Recon",aReconEvent);
84 if(sc!=StatusCode::SUCCESS) {
85 log << MSG::FATAL <<
"TofRec could not register ReconEvent!" <<endreq;
86 return StatusCode::FAILURE;
89 return StatusCode::SUCCESS;
95 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc);
96 MsgStream log(
msgSvc,
"TofRecTDS");
97 log << MSG::INFO <<
"TofRecTDS::RegisterRecTofTrack()" << endreq;
99 IDataProviderSvc* eventSvc;
100 Gaudi::svcLocator()->service(
"EventDataSvc", eventSvc);
104 std::vector<TofTrack*>::iterator
iter = tofTrackVec->begin();
105 for( ;
iter < tofTrackVec->end();
iter++ ) {
106 (*iter)->convert2RecTofTrackCol( recTofTrackCol );
111 DataObject *aRecTofTrackCol;
112 eventSvc->findObject(
"/Event/Recon/RecTofTrackCol", aRecTofTrackCol );
113 if( aRecTofTrackCol != NULL ) {
115 sc = eventSvc->unregisterObject(
"/Event/Recon/RecTofTrackCol" );
117 delete aRecTofTrackCol;
119 if( sc != StatusCode::SUCCESS ) {
120 log << MSG::FATAL <<
"Could not unregister RecTofTrack collection!" << endreq;
122 RecTofTrackCol::iterator iter_tof = recTofTrackCol->begin();
123 for( ; iter_tof!=recTofTrackCol->end(); iter_tof++ ) {
126 recTofTrackCol->clear();
127 delete recTofTrackCol;
129 std::vector<TofTrack*>::iterator iter_data = tofTrackVec->begin();
130 for( ; iter_data!=tofTrackVec->end(); iter_data++ ) {
133 tofTrackVec->clear();
136 return StatusCode::FAILURE;
140 sc = eventSvc->registerObject(
"/Event/Recon/RecTofTrackCol", recTofTrackCol);
141 if( sc != StatusCode::SUCCESS ) {
142 log << MSG::FATAL <<
"TofRec could not register Rec TOF track collection!" << endreq;
143 RecTofTrackCol::iterator iter_tof = recTofTrackCol->begin();
144 for( ; iter_tof!=recTofTrackCol->end(); iter_tof++ ) {
147 recTofTrackCol->clear();
148 delete recTofTrackCol;
149 return StatusCode::FAILURE;
152 return StatusCode::SUCCESS;
158 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc);
159 MsgStream log(
msgSvc,
"TofRecTDS");
160 log << MSG::INFO <<
"TofRecTDS::RegisterRecBTofCalHitCol()" << endreq;
162 IDataProviderSvc* eventSvc;
163 Gaudi::svcLocator()->service(
"EventDataSvc", eventSvc);
167 std::vector<TofTrack*>::iterator
iter = tofTrackVec->begin();
168 for( ;
iter < tofTrackVec->end();
iter++ ) {
172 (*iter)->convert2RecBTofCalHitCol( runNumber, eventNumber, recBTofCalHitCol, m_calibData );
178 DataObject *aRecBTofCalHitCol;
179 eventSvc->findObject(
"/Event/Recon/RecBTofCalhitCol", aRecBTofCalHitCol );
180 if( aRecBTofCalHitCol != NULL ) {
181 scb = eventSvc->unregisterObject(
"/Event/Recon/RecBTofCalHitCol" );
182 if( scb != StatusCode::SUCCESS ) {
183 log << MSG::FATAL <<
"Could not unregister RecBTofCalHit collection!" << endreq;
185 RecBTofCalHitCol::iterator iter_btof = recBTofCalHitCol->begin();
186 for( ; iter_btof!=recBTofCalHitCol->end(); iter_btof++ ) {
189 recBTofCalHitCol->clear();
190 delete recBTofCalHitCol;
192 std::vector<TofTrack*>::iterator iter_data = tofTrackVec->begin();
193 for( ; iter_data!=tofTrackVec->end(); iter_data++ ) {
196 tofTrackVec->clear();
199 return StatusCode::FAILURE;
203 StatusCode sh1 = eventSvc->registerObject(
"/Event/Recon/RecBTofCalHitCol", recBTofCalHitCol);
204 if(sh1!=StatusCode::SUCCESS) {
205 log << MSG::FATAL <<
"TofRec could not register BTOF CalHit collection!!" << endreq;
206 RecBTofCalHitCol::iterator iter_btof = recBTofCalHitCol->begin();
207 for( ; iter_btof!=recBTofCalHitCol->end(); iter_btof++ ) {
210 recBTofCalHitCol->clear();
211 delete recBTofCalHitCol;
212 return StatusCode::FAILURE;
215 return StatusCode::SUCCESS;
221 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc);
222 MsgStream log(
msgSvc,
"TofRecTDS");
223 log << MSG::INFO <<
"TofRecTDS::RegisterRecETofCalHitCol()" << endreq;
225 IDataProviderSvc* eventSvc;
226 Gaudi::svcLocator()->service(
"EventDataSvc", eventSvc);
230 if( tofTrackVec->size() != 2 )
return StatusCode::SUCCESS;
231 std::vector<TofTrack*>::iterator iter1 = tofTrackVec->begin();
232 std::vector<TofTrack*>::iterator iter2 = iter1+1;
233 if( (*iter1)->tdc1() < 0.0 || (*iter2)->tdc1() < 0.0 )
return StatusCode::SUCCESS;
234 if(
abs( (*iter1)->tdc1() - (*iter2)->tdc1() ) > 2.0 )
return StatusCode::SUCCESS;
240 std::vector<TofTrack*>::iterator
iter = tofTrackVec->begin();
241 for( ;
iter < tofTrackVec->end();
iter++ ) {
244 (*iter)->convert2RecETofCalHitCol( runNumber, eventNumber, recETofCalHitCol, m_calibData );
251 DataObject *aRecETofCalHitCol;
252 eventSvc->findObject(
"/Event/Recon/RecETofCalhitCol", aRecETofCalHitCol );
253 if( aRecETofCalHitCol != NULL ) {
254 sce = eventSvc->unregisterObject(
"/Event/Recon/RecETofCalHitCol" );
255 if( sce != StatusCode::SUCCESS ) {
256 log << MSG::FATAL <<
"Could not unregister RecETofCalHit collection!" << endreq;
258 RecETofCalHitCol::iterator iter_etof = recETofCalHitCol->begin();
259 for( ; iter_etof!=recETofCalHitCol->end(); iter_etof++ ) {
262 recETofCalHitCol->clear();
263 delete recETofCalHitCol;
265 std::vector<TofTrack*>::iterator iter_data = tofTrackVec->begin();
266 for( ; iter_data!=tofTrackVec->end(); iter_data++ ) {
269 tofTrackVec->clear();
272 return StatusCode::FAILURE;
276 StatusCode sh2 = eventSvc->registerObject(
"/Event/Recon/RecETofCalHitCol",recETofCalHitCol);
277 if(sh2!=StatusCode::SUCCESS) {
278 log << MSG::FATAL <<
"TofRec could not register ETOF CalHit collection!!" << endreq;
279 RecETofCalHitCol::iterator iter_etof = recETofCalHitCol->begin();
280 for( ; iter_etof!=recETofCalHitCol->end(); iter_etof++ ) {
283 recETofCalHitCol->clear();
284 delete recETofCalHitCol;
285 return StatusCode::FAILURE;
288 return StatusCode::SUCCESS;
double abs(const EvtComplex &c)
ObjectVector< RecBTofCalHit > RecBTofCalHitCol
ObjectVector< RecETofCalHit > RecETofCalHitCol
ObjectVector< RecTofTrack > RecTofTrackCol
StatusCode RegisterRecTofTrackCol(std::vector< TofTrack * > *&tofTrackVec)
StatusCode RegisterTDS(int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, bool m_forCalibration, std::string m_calibData)
StatusCode RegisterNullRecTofTrackCol()
StatusCode RegisterRecETofCalHitCol(int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, std::string calibData)
StatusCode RegisterRecBTofCalHitCol(int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, std::string calibData)
StatusCode InitializeTDS()
StatusCode RegisterReconEvent()