00001 #include "MdcDummyAlg/MdcDummy.h"
00002 #include "GaudiKernel/MsgStream.h"
00003 #include "GaudiKernel/AlgFactory.h"
00004 #include "GaudiKernel/ISvcLocator.h"
00005 #include "GaudiKernel/SmartDataPtr.h"
00006 #include "GaudiKernel/IDataProviderSvc.h"
00007 #include "GaudiKernel/PropertyMgr.h"
00008 #include "EventModel/EventHeader.h"
00009 #include "MdcRawEvent/MdcDigi.h"
00010 #include "TofRawEvent/TofDigi.h"
00011 #include "EmcRawEvent/EmcDigi.h"
00012 #include "McTruth/DecayMode.h"
00013
00014
00015
00016
00017
00018
00019
00020 #include <vector>
00021 #include <iostream>
00022
00023 using namespace std;
00024 using namespace Event;
00025
00027
00028 MdcDummy::MdcDummy(const std::string& name, ISvcLocator* pSvcLocator) :
00029 Algorithm(name, pSvcLocator)
00030 {
00031
00032 declareProperty("FittingMethod", m_fittingMethod = 2);
00033 declareProperty("ConfigFile", m_configFile = "MDCConfig.xml");
00034 }
00035
00036
00037 StatusCode MdcDummy::initialize(){
00038
00039 MsgStream log(msgSvc(), name());
00040 log << MSG::INFO << "in initialize()" << endreq;
00041
00042
00043 return StatusCode::SUCCESS;
00044 }
00045
00046
00047 StatusCode MdcDummy::execute() {
00048
00049 MsgStream log(msgSvc(), name());
00050 log << MSG::INFO << "in execute()" << endreq;
00051
00052
00053 int event, run;
00054
00055 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00056 if (!eventHeader) {
00057 log << MSG::FATAL << "Could not find Event Header" << endreq;
00058 return( StatusCode::FAILURE);
00059 }
00060 log << MSG::INFO << "MdcDummy: retrieved event: " << eventHeader->eventNumber() << " run: " << eventHeader->runNumber() << endreq;
00061
00062 int digiId;
00063
00064
00065 SmartDataPtr<DecayMode> decayMode(eventSvc(),"/Event/MC/DecayMode");
00066 if (!decayMode) {
00067 log << MSG::FATAL << "Could not find DecayMode" << endreq;
00068 return( StatusCode::FAILURE);
00069 }
00070 unsigned int size = 10;
00071 int decayId[10];
00072 decayMode->getData(decayId, size);
00073
00074 for (unsigned int index =0; index<10; index++) {
00075 log << MSG::INFO
00076 << " Decay Mode = " << decayId[index]
00077 << endreq;
00078 }
00079
00080
00081 SmartDataPtr<MdcDigiCol> mdcDigiCol(eventSvc(),"/Event/Digi/MdcDigiCol");
00082 if (!mdcDigiCol) {
00083 log << MSG::FATAL << "Could not find MDC digi" << endreq;
00084 return( StatusCode::FAILURE);
00085 }
00086
00087 MdcDigiCol::iterator iter1 = mdcDigiCol->begin();
00088 digiId = 0;
00089 for (;iter1 != mdcDigiCol->end(); iter1++, digiId++) {
00090 log << MSG::INFO << "MDC digit No: " << digiId << endreq;
00091
00092 log << MSG::INFO
00093 << " time_channel = " << (*iter1)->getTimeChannel()
00094 << " charge_channel = " << (*iter1)->getChargeChannel()
00095 << endreq;
00096 }
00097
00098
00099
00100 SmartDataPtr<TofDigiCol> tofDigiCol(eventSvc(),"/Event/Digi/TofDigiCol");
00101 if (!tofDigiCol) {
00102 log << MSG::FATAL << "Could not find TOF digi" << endreq;
00103 return( StatusCode::FAILURE);
00104 }
00105
00106 TofDigiCol::iterator iter2 = tofDigiCol->begin();
00107 digiId = 0;
00108 for (;iter2 != tofDigiCol->end(); iter2++, digiId++) {
00109 log << MSG::INFO << "TOF digit No: " << digiId << endreq;
00110
00111 }
00112
00113
00114 SmartDataPtr<EmcDigiCol> emcDigiCol(eventSvc(),"/Event/Digi/EmcDigiCol");
00115 if (!emcDigiCol) {
00116 log << MSG::FATAL << "Could not find EMC digi" << endreq;
00117 return( StatusCode::FAILURE);
00118 }
00119
00120 EmcDigiCol::iterator iter3 = emcDigiCol->begin();
00121 digiId = 0;
00122 for (;iter3 != emcDigiCol->end(); iter3++, digiId++) {
00123 log << MSG::INFO << "Emc digit No: " << digiId << endreq;
00124
00125 log << MSG::INFO
00126 << " time_channel = " << (*iter3)->getTimeChannel()
00127 << " charge_channel = " << (*iter3)->getChargeChannel()
00128 << endreq;
00129 }
00130
00131
00132 return StatusCode::SUCCESS;
00133 }
00134
00135
00136 StatusCode MdcDummy::finalize() {
00137
00138 MsgStream log(msgSvc(), name());
00139 log << MSG::INFO << "in finalize()" << endreq;
00140
00141 return StatusCode::SUCCESS;
00142 }