00001 #include "RecMakerAlg/RecMakerAlg.h"
00002
00003 #include "GaudiKernel/MsgStream.h"
00004 #include "GaudiKernel/AlgFactory.h"
00005 #include "GaudiKernel/ISvcLocator.h"
00006 #include "GaudiKernel/SmartDataPtr.h"
00007 #include "GaudiKernel/IDataProviderSvc.h"
00008 #include "GaudiKernel/PropertyMgr.h"
00009
00010 #include "TofRecEvent/RecTofTrack.h"
00011 #include "EmcRecEventModel/RecEmcShower.h"
00012 #include "MucRecEvent/RecMucTrack.h"
00013 #include "MucRecEvent/MucRecHit.h"
00014 #include "MdcRecEvent/RecMdcDedx.h"
00015 #include "MdcRecEvent/RecMdcDedxHit.h"
00016 #include "MdcRecEvent/RecMdcTrack.h"
00017 #include "MdcRecEvent/RecMdcHit.h"
00018 #include "ExtEvent/RecExtTrack.h"
00019 #include "ExtEvent/ExtMucHit.h"
00020 #include "MdcRecEvent/RecMdcKalTrack.h"
00021
00022 #include "EventModel/EventModel.h"
00023 #include "EventModel/EventHeader.h"
00024
00025
00026
00027 #include "DstEvent/DstEmcShower.h"
00028 #include "DstEvent/DstMdcTrack.h"
00029 #include "DstEvent/DstMucTrack.h"
00030 #include "DstEvent/DstMdcDedx.h"
00031
00032 #include "DstEvent/DstMdcKalTrack.h"
00033
00035
00036 RecMakerAlg::RecMakerAlg(const std::string& name, ISvcLocator* pSvcLocator) :
00037 Algorithm(name, pSvcLocator)
00038 {
00039 }
00040
00041
00042 StatusCode RecMakerAlg::initialize(){
00043
00044 MsgStream log(msgSvc(), name());
00045 log << MSG::INFO << "in initialize()" << endreq;
00046
00047 return StatusCode::SUCCESS;
00048 }
00049
00050
00051 StatusCode RecMakerAlg::execute() {
00052
00053 MsgStream log(msgSvc(), name());
00054 log << MSG::INFO << "in execute()" << endreq;
00055
00056
00057
00058 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00059 if (!eventHeader) {
00060 log << MSG::FATAL << "Could not find Event Header" << endreq;
00061 return( StatusCode::FAILURE);
00062 }
00063
00064 int eventId = eventHeader->eventNumber() ;
00065 int runId = eventHeader->runNumber();
00066 log << MSG::INFO << "event: " << eventId
00067 << " run: " <<runId << endreq;
00068
00069 StatusCode sc = StatusCode::SUCCESS ;
00070 int trackID;
00071
00072
00073 SmartDataPtr<RecMdcTrackCol> recMdcTrackCol(eventSvc(),"/Event/Recon/RecMdcTrackCol");
00074 if(!recMdcTrackCol)
00075 {
00076 log << MSG::INFO << "Could not find RecMdcTrackCol" << endreq;
00077 SmartDataPtr<DstMdcTrackCol> dstMdcTrackCol(eventSvc(),"/Event/Dst/DstMdcTrackCol");
00078 if (!dstMdcTrackCol) {
00079 log << MSG::INFO << "Could not find DstMdcTrackCol" << endreq;
00080 }
00081 else {
00082 RecMdcTrackCol* recMdcTrackCol = new RecMdcTrackCol();
00083 DstMdcTrackCol::iterator iter_mdc = dstMdcTrackCol->begin();
00084 trackID = 0;
00085 for (;iter_mdc != dstMdcTrackCol->end(); iter_mdc++, trackID++) {
00086 RecMdcTrack* recMdcTrack = new RecMdcTrack();
00087 *recMdcTrack = **iter_mdc;
00088 (*recMdcTrackCol).push_back(recMdcTrack);
00089 log << MSG::INFO
00090 << " Mdc Track ID = " << trackID
00091 << " Mdc Track Nster = " << (*iter_mdc)->nster()
00092 << endreq;
00093 }
00094 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcTrackCol,recMdcTrackCol);
00095 }
00096 }
00097
00098
00099 SmartDataPtr<RecMdcKalTrackCol> recMdcKalTrackCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol");
00100 if (!recMdcKalTrackCol) {
00101 log << MSG::INFO << "Could not find RecMdcKalTrackCol" << endreq;
00102 SmartDataPtr<DstMdcKalTrackCol> dstMdcKalTrackCol(eventSvc(),"/Event/Dst/DstMdcKalTrackCol");
00103 if(!dstMdcKalTrackCol) {
00104 log << MSG::INFO << "Could not find DstMdcKalTrackCol" << endreq;
00105 }
00106 else {
00107 RecMdcKalTrackCol* recMdcKalTrackCol = new RecMdcKalTrackCol();
00108 DstMdcKalTrackCol::iterator iter_mdc = dstMdcKalTrackCol->begin();
00109 trackID = 0;
00110 for (;iter_mdc != dstMdcKalTrackCol->end(); iter_mdc++, trackID++) {
00111 RecMdcKalTrack* recMdcKalTrack = new RecMdcKalTrack();
00112 *recMdcKalTrack = **iter_mdc;
00113 (*recMdcKalTrackCol).push_back(recMdcKalTrack);
00114 log << MSG::INFO
00115 << " MdcKalTrack ID = " << trackID
00116 << " MdcKalTrack Nster = " << (*iter_mdc)->nster()
00117 << " MdcKalTrack poca = " << (*iter_mdc)->poca()
00118 << endreq;
00119 }
00120 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcKalTrackCol, recMdcKalTrackCol);
00121 }
00122 }
00123
00124
00125 SmartDataPtr<RecMdcDedxCol> recMdcDedxCol(eventSvc(),"/Event/Recon/RecMdcDedxCol");
00126 if (!recMdcDedxCol) {
00127 log <<MSG::INFO << "Could not find RecMdcDedxCol" << endreq;
00128 SmartDataPtr<DstMdcDedxCol> dstMdcDedxCol(eventSvc(),"/Event/Dst/DstMdcDedxCol");
00129 if(!dstMdcDedxCol) {
00130 log <<MSG::INFO << "Could not find DstMdcDedxCol" << endreq;
00131 }
00132 else {
00133 RecMdcDedxCol* recMdcDedxCol = new RecMdcDedxCol();
00134 DstMdcDedxCol::iterator iter_mdc = dstMdcDedxCol->begin();
00135 trackID=0;
00136 for (;iter_mdc != dstMdcDedxCol->end(); iter_mdc++, trackID++) {
00137 RecMdcDedx* recMdcDedx = new RecMdcDedx();
00138 *recMdcDedx= **iter_mdc;
00139 (*recMdcDedxCol).push_back(recMdcDedx);
00140 log << MSG::INFO
00141 << " MdcDedx ID = " << trackID
00142 << " MdcDedx "
00143 << endreq;
00144 }
00145 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcDedxCol, recMdcDedxCol);
00146 }
00147 }
00148
00149
00150 SmartDataPtr<RecExtTrackCol> recExtTrackCol(eventSvc(),"/Event/Recon/RecExtTrackCol");
00151 if (!recExtTrackCol) {
00152 log <<MSG::INFO << "Could not find RecExtTrackCol" << endreq;
00153 SmartDataPtr<DstExtTrackCol> dstExtTrackCol(eventSvc(),"/Event/Dst/DstExtTrackCol");
00154 if(!dstExtTrackCol) {
00155 log <<MSG::INFO << "Could not find DstExtTrackCol" << endreq;
00156 }
00157 else {
00158 RecExtTrackCol* recExtTrackCol = new RecExtTrackCol();
00159 DstExtTrackCol::iterator iter_ext = dstExtTrackCol->begin();
00160 trackID=0;
00161 for (;iter_ext != dstExtTrackCol->end(); iter_ext++, trackID++) {
00162 RecExtTrack* recExtTrack = new RecExtTrack();
00163 *recExtTrack = **iter_ext;
00164 (*recExtTrackCol).push_back(recExtTrack);
00165 log << MSG::INFO
00166 << " ExtTrack ID = " << trackID
00167 << endreq;
00168 }
00169 sc = eventSvc()->registerObject(EventModel::Recon::RecExtTrackCol, recExtTrackCol);
00170 }
00171 }
00172
00173
00174 SmartDataPtr<RecTofTrackCol> tofTrackCol(eventSvc(),"/Event/Recon/RecTofTrackCol");
00175 if ( !tofTrackCol ) {
00176 log << MSG::INFO << "Could not find TofTrackCol" << endreq;
00177 SmartDataPtr<DstTofTrackCol> dstTofTrackCol(eventSvc(),"/Event/Dst/DstTofTrackCol");
00178 if(!dstTofTrackCol) {
00179 log << MSG::INFO << "Could not find DstTofTrackCol" << endreq;
00180 }
00181 else {
00182 RecTofTrackCol* recTofTrackCol = new RecTofTrackCol();
00183 DstTofTrackCol::iterator iter_tof = dstTofTrackCol->begin();
00184 for (;iter_tof != dstTofTrackCol->end(); iter_tof++) {
00185 RecTofTrack* recTofTrack = new RecTofTrack();
00186 *recTofTrack = **iter_tof;
00187 (*recTofTrackCol).push_back(recTofTrack);
00188 log << MSG::INFO
00189 << "Tof Track ID = " << (*iter_tof)->tofTrackID()
00190 << " Track ID = " << (*iter_tof)->trackID()
00191 << " Tof Counter ID = "<<(*iter_tof)->tofID()
00192 << " Quality = "<< (*iter_tof)->quality()
00193 << endreq;
00194 }
00195 sc = eventSvc()->registerObject(EventModel::Recon::RecTofTrackCol, recTofTrackCol);
00196 }
00197 }
00198
00199
00200
00201 SmartDataPtr<RecEmcShowerCol> recEmcShowerCol(eventSvc(),"/Event/Recon/RecEmcShowerCol");
00202 if (!recEmcShowerCol) {
00203 log << MSG::INFO << "Could not find RecEmcShowerCol" << endreq;
00204 SmartDataPtr<DstEmcShowerCol> dstEmcShowerCol(eventSvc(),"/Event/Dst/DstEmcShowerCol");
00205 if(!dstEmcShowerCol) {
00206 log << MSG::INFO << "Could not find DstEmcShowerCol" << endreq;
00207 }
00208 else {
00209 RecEmcShowerCol* recEmcShowerCol = new RecEmcShowerCol();
00210 DstEmcShowerCol::iterator iter_emc = dstEmcShowerCol->begin();
00211 trackID=0;
00212 for (;iter_emc != dstEmcShowerCol->end(); iter_emc++, trackID++) {
00213 RecEmcShower* recEmcShower = new RecEmcShower();
00214 *recEmcShower = **iter_emc;
00215 (*recEmcShowerCol).push_back(recEmcShower);
00216 log << MSG::INFO
00217 << " EmcShower ID = " << trackID
00218 << " EmcShower energy = " << (*iter_emc)->energy()
00219 << endreq;
00220 }
00221 sc = eventSvc()->registerObject(EventModel::Recon::RecEmcShowerCol, recEmcShowerCol);
00222 }
00223 }
00224
00225
00226 SmartDataPtr<RecMucTrackCol> recMucTrackCol(eventSvc(),"/Event/Recon/RecMucTrackCol");
00227 if (!recMucTrackCol) {
00228 log <<MSG::INFO << "Could not find RecMucTrackCol" << endreq;
00229 SmartDataPtr<DstMucTrackCol> dstMucTrackCol(eventSvc(),"/Event/Dst/DstMucTrackCol");
00230 if(!dstMucTrackCol) {
00231 log <<MSG::INFO << "Could not find DstMucTrackCol" << endreq;
00232 }
00233 else {
00234 RecMucTrackCol* recMucTrackCol = new RecMucTrackCol();
00235 DstMucTrackCol::iterator iter_muc = dstMucTrackCol->begin();
00236 trackID=0;
00237 for (;iter_muc != dstMucTrackCol->end(); iter_muc++, trackID++) {
00238 RecMucTrack* recMucTrack = new RecMucTrack();
00239 *recMucTrack = **iter_muc;
00240 (*recMucTrackCol).push_back(recMucTrack);
00241 log << MSG::INFO
00242 << " MucTrack ID = "<< trackID
00243 <<endreq;
00244 }
00245 sc = eventSvc()->registerObject(EventModel::Recon::RecMucTrackCol, recMucTrackCol);
00246 }
00247 }
00248 return sc;
00249 }
00250
00251
00252 StatusCode RecMakerAlg::finalize() {
00253
00254 MsgStream log(msgSvc(), name());
00255 log << MSG::INFO << "in finalize()" << endreq;
00256
00257 return StatusCode::SUCCESS;
00258 }