Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MdcNoiseAna Class Reference

#include <MdcNoiseAna.h>

List of all members.

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
RawDataProviderSvcm_rawDataProviderSvc
RawDataProviderSvcm_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


Constructor & Destructor Documentation

MdcNoiseAna::MdcNoiseAna const std::string &  name,
ISvcLocator *  pSvcLocator
 

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   }

MdcNoiseAna::MdcNoiseAna const std::string &  name,
ISvcLocator *  pSvcLocator
 


Member Function Documentation

StatusCode MdcNoiseAna::bookNTuple  )  [private]
 

StatusCode MdcNoiseAna::bookNTuple  )  [private]
 

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 }

StatusCode MdcNoiseAna::execute  ) 
 

StatusCode MdcNoiseAna::execute  ) 
 

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 }

StatusCode MdcNoiseAna::finalize  ) 
 

StatusCode MdcNoiseAna::finalize  ) 
 

00153                                  {
00154   MsgStream log(msgSvc(), name());
00155   log << MSG::INFO << "in finalize()" << endreq;
00156   return StatusCode::SUCCESS;
00157 }

StatusCode MdcNoiseAna::initialize  ) 
 

StatusCode MdcNoiseAna::initialize  ) 
 

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 }


Member Data Documentation

NTuple::Array<long> MdcNoiseAna::m_cell [private]
 

NTuple::Array<long> MdcNoiseAna::m_cell [private]
 

int MdcNoiseAna::m_debug [private]
 

bool MdcNoiseAna::m_dropHot [private]
 

NTuple::Item<long> MdcNoiseAna::m_eventNo [private]
 

NTuple::Item<long> MdcNoiseAna::m_eventNo [private]
 

int MdcNoiseAna::m_hist [private]
 

bool MdcNoiseAna::m_keepBadTdc [private]
 

bool MdcNoiseAna::m_keepUnmatch [private]
 

NTuple::Array<long> MdcNoiseAna::m_layer [private]
 

NTuple::Array<long> MdcNoiseAna::m_layer [private]
 

int MdcNoiseAna::m_maxMdcDigi [private]
 

NTuple::Item<long> MdcNoiseAna::m_nDigi [private]
 

NTuple::Item<long> MdcNoiseAna::m_nDigi [private]
 

NTuple::Item<long> MdcNoiseAna::m_nTk [private]
 

NTuple::Item<long> MdcNoiseAna::m_nTk [private]
 

NTuple::Array<long> MdcNoiseAna::m_ovfl [private]
 

NTuple::Array<long> MdcNoiseAna::m_ovfl [private]
 

NTuple::Array<double> MdcNoiseAna::m_phi [private]
 

NTuple::Array<double> MdcNoiseAna::m_phi [private]
 

RawDataProviderSvc* MdcNoiseAna::m_rawDataProviderSvc [private]
 

RawDataProviderSvc* MdcNoiseAna::m_rawDataProviderSvc [private]
 

NTuple::Array<double> MdcNoiseAna::m_rc [private]
 

NTuple::Array<double> MdcNoiseAna::m_rc [private]
 

NTuple::Array<double> MdcNoiseAna::m_rt [private]
 

NTuple::Array<double> MdcNoiseAna::m_rt [private]
 

NTuple::Item<long> MdcNoiseAna::m_runNo [private]
 

NTuple::Item<long> MdcNoiseAna::m_runNo [private]
 

NTuple::Item<double> MdcNoiseAna::m_t0 [private]
 

NTuple::Item<double> MdcNoiseAna::m_t0 [private]
 

NTuple::Item<long> MdcNoiseAna::m_t0Stat [private]
 

NTuple::Item<long> MdcNoiseAna::m_t0Stat [private]
 

NTuple::Item<double> MdcNoiseAna::m_timing [private]
 

NTuple::Item<double> MdcNoiseAna::m_timing [private]
 

NTuple::Array<long> MdcNoiseAna::m_tNum [private]
 

NTuple::Array<long> MdcNoiseAna::m_tNum [private]
 

NTuple::Tuple* MdcNoiseAna::m_tuple [private]
 

NTuple::Tuple* MdcNoiseAna::m_tuple [private]
 

NTuple::Array<long> MdcNoiseAna::m_wire [private]
 

NTuple::Array<long> MdcNoiseAna::m_wire [private]
 

NTuple::Array<double> MdcNoiseAna::m_xMid [private]
 

NTuple::Array<double> MdcNoiseAna::m_xMid [private]
 

NTuple::Array<double> MdcNoiseAna::m_yMid [private]
 

NTuple::Array<double> MdcNoiseAna::m_yMid [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:27:08 2011 for BOSS6.5.5 by  doxygen 1.3.9.1