#include <MdcNoiseAna.h>
Public Member Functions | |
StatusCode | execute () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | finalize () |
StatusCode | initialize () |
StatusCode | initialize () |
MdcNoiseAna (const std::string &name, ISvcLocator *pSvcLocator) | |
MdcNoiseAna (const std::string &name, ISvcLocator *pSvcLocator) | |
Private Member Functions | |
StatusCode | bookNTuple () |
StatusCode | bookNTuple () |
Private Attributes | |
NTuple::Array< long > | m_cell |
NTuple::Array< long > | m_cell |
int | m_debug |
bool | m_dropHot |
NTuple::Item< long > | m_eventNo |
NTuple::Item< long > | m_eventNo |
int | m_hist |
bool | m_keepBadTdc |
bool | m_keepUnmatch |
NTuple::Array< long > | m_layer |
NTuple::Array< long > | m_layer |
int | m_maxMdcDigi |
NTuple::Item< long > | m_nDigi |
NTuple::Item< long > | m_nDigi |
NTuple::Item< long > | m_nTk |
NTuple::Item< long > | m_nTk |
NTuple::Array< long > | m_ovfl |
NTuple::Array< long > | m_ovfl |
NTuple::Array< double > | m_phi |
NTuple::Array< double > | m_phi |
RawDataProviderSvc * | m_rawDataProviderSvc |
RawDataProviderSvc * | m_rawDataProviderSvc |
NTuple::Array< double > | m_rc |
NTuple::Array< double > | m_rc |
NTuple::Array< double > | m_rt |
NTuple::Array< double > | m_rt |
NTuple::Item< long > | m_runNo |
NTuple::Item< long > | m_runNo |
NTuple::Item< double > | m_t0 |
NTuple::Item< double > | m_t0 |
NTuple::Item< long > | m_t0Stat |
NTuple::Item< long > | m_t0Stat |
NTuple::Item< double > | m_timing |
NTuple::Item< double > | m_timing |
NTuple::Array< long > | m_tNum |
NTuple::Array< long > | m_tNum |
NTuple::Tuple * | m_tuple |
NTuple::Tuple * | m_tuple |
NTuple::Array< long > | m_wire |
NTuple::Array< long > | m_wire |
NTuple::Array< double > | m_xMid |
NTuple::Array< double > | m_xMid |
NTuple::Array< double > | m_yMid |
NTuple::Array< double > | m_yMid |
|
00026 : 00027 Algorithm(name, pSvcLocator) { 00028 declareProperty("maxMdcDigi", m_maxMdcDigi= 0); 00029 declareProperty("keepBadTdc", m_keepBadTdc= 0); 00030 declareProperty("dropHot", m_dropHot= 0); 00031 declareProperty("keepUnmatch", m_keepUnmatch= 0); 00032 00033 declareProperty("hist", m_hist = false); 00034 declareProperty("debug", m_debug= false); 00035 }
|
|
|
|
|
|
00160 { 00161 MsgStream log(msgSvc(), name()); 00162 StatusCode sc = StatusCode::SUCCESS; 00163 00164 NTuplePtr nt1(ntupleSvc(), "FILE_MdcNoiseAna/t"); 00165 if ( nt1 ) { m_tuple = nt1;} 00166 m_tuple = ntupleSvc()->book ("FILE_MdcNoiseAna/t", CLID_ColumnWiseTuple, "rangom trigger"); 00167 if ( m_tuple ) { 00168 sc = m_tuple->addItem ("t0", m_t0); 00169 sc = m_tuple->addItem ("t0Stat", m_t0Stat); 00170 sc = m_tuple->addItem ("runNo", m_runNo); 00171 sc = m_tuple->addItem ("eventNo", m_eventNo); 00172 sc = m_tuple->addItem ("nTk", m_nTk); 00173 sc = m_tuple->addItem ("nDigi", m_nDigi, 0, 10000); 00174 sc = m_tuple->addIndexedItem ("layer", m_nDigi, m_layer); 00175 sc = m_tuple->addIndexedItem ("cell", m_nDigi, m_cell); 00176 sc = m_tuple->addIndexedItem ("gwire", m_nDigi, m_wire); 00177 sc = m_tuple->addIndexedItem ("rt", m_nDigi, m_rt); 00178 sc = m_tuple->addIndexedItem ("rc", m_nDigi, m_rc); 00179 sc = m_tuple->addIndexedItem ("ovfl", m_nDigi, m_ovfl); 00180 } 00181 }
|
|
|
|
00061 { 00062 MsgStream log(msgSvc(), name()); 00063 StatusCode sc = StatusCode::SUCCESS; 00064 00065 // Get event header 00066 SmartDataPtr<Event::EventHeader> evtHead(eventSvc(),"/Event/EventHeader"); 00067 int t_eventNo=-1; 00068 if (evtHead) { 00069 t_eventNo = evtHead->eventNumber(); 00070 }else{ 00071 log << MSG::WARNING<< "Could not retrieve event header" << endreq; 00072 } 00073 00074 00075 //Get event time 00076 long t_t0 = -1; 00077 long t_t0Stat = -1; 00078 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00079 if (aevtimeCol) { 00080 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin(); 00081 t_t0 = (*iter_evt)->getTest(); 00082 t_t0Stat = (*iter_evt)->getStat(); 00083 }else{ 00084 log << MSG::WARNING << "Could not find RecEsTimeCol" << endreq; 00085 } 00086 00087 // Get MdcDigi collection 00088 uint32_t getDigiFlag = 0; 00089 getDigiFlag += m_maxMdcDigi; 00090 if(m_dropHot) getDigiFlag |= MdcRawDataProvider::b_dropHot; 00091 if(m_keepBadTdc) getDigiFlag |= MdcRawDataProvider::b_keepBadTdc; 00092 if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch; 00093 MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag); 00094 00095 SmartDataPtr<MdcDigiCol> mdcDigiCol(eventSvc(),"/Event/Digi/MdcDigiCol"); 00096 if (sc!=StatusCode::SUCCESS) { 00097 log << MSG::WARNING << "Could not find MdcDigiCol!" << endreq; 00098 } 00099 00100 00101 if(m_debug>0) { 00102 std::cout<< "evtNo:"<<t_eventNo << " digiCol "<<mdcDigiCol->size()<<" DigiVec "<<mdcDigiVec.size()<< std::endl; 00103 } 00104 if ( mdcDigiVec.size()==0) { 00105 log << MSG::WARNING << t_eventNo 00106 <<"No digi or could not find event in MdcDigiVec" << endreq; 00107 return StatusCode::SUCCESS; 00108 } 00109 00110 // fill hist 00111 MdcDigiCol::iterator iter = mdcDigiVec.begin(); 00112 int t_i =0; 00113 for (;iter != mdcDigiVec.end(); iter++,++t_i ) { 00114 00115 const MdcDigi* digi =const_cast<const MdcDigi*> (*iter); 00116 double rt = RawDataUtil::MdcTime(digi->getTimeChannel()); 00117 double rc = RawDataUtil::MdcCharge(digi->getChargeChannel()); 00118 int layer = MdcID::layer(digi->identify()); 00119 int cell = MdcID::wire(digi->identify()); 00120 00121 if (m_hist && m_tuple){ 00122 m_layer[t_i] = layer; 00123 m_cell[t_i] = cell; 00124 m_wire[t_i] = Constants::nWireBeforeLayer[layer] + cell; 00125 m_rt[t_i] = rt; 00126 m_rc[t_i] = rc; 00127 m_ovfl[t_i] = (*iter)->getOverflow(); 00128 } 00129 } 00130 00131 SmartDataPtr<RecMdcTrackCol> trackList(eventSvc(),EventModel::Recon::RecMdcTrackCol); 00132 if (!trackList) { 00133 RecMdcTrackCol *trackList= new RecMdcTrackCol; 00134 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcTrackCol, trackList); 00135 if(!sc.isSuccess()) { 00136 log << MSG::FATAL << " Could not register RecMdcTrack collection" <<endreq; 00137 } 00138 } 00139 if(m_hist && m_tuple){ 00140 m_runNo = evtHead->runNumber(); 00141 m_eventNo = evtHead->eventNumber(); 00142 m_nDigi = mdcDigiVec.size(); 00143 m_nTk = trackList->size(); 00144 m_t0 = t_t0; 00145 m_t0Stat = t_t0Stat; 00146 m_tuple->write(); 00147 } 00148 00149 return StatusCode::SUCCESS; 00150 }
|
|
|
|
00153 { 00154 MsgStream log(msgSvc(), name()); 00155 log << MSG::INFO << "in finalize()" << endreq; 00156 return StatusCode::SUCCESS; 00157 }
|
|
|
|
00038 { 00039 MsgStream log(msgSvc(), name()); 00040 StatusCode sc; 00041 00042 IRawDataProviderSvc* irawDataProviderSvc; 00043 sc = service ("RawDataProviderSvc", irawDataProviderSvc); 00044 m_rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*> (irawDataProviderSvc); 00045 if ( sc.isFailure() ){ 00046 log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq; 00047 return StatusCode::FAILURE; 00048 } 00049 if (m_hist){ 00050 sc = bookNTuple(); 00051 if (!sc.isSuccess()) { 00052 log << MSG::FATAL<< " Could not book NTuple" << endreq; 00053 return StatusCode::FAILURE; 00054 } 00055 } 00056 00057 return StatusCode::SUCCESS; 00058 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|