Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

IrfTkrLayerCnv.cpp

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 //
00003 // Implementation of class :  IrfTkrLayerCnv
00004 //
00005 //
00006 //------------------------------------------------------------------------------
00007 #define IrfTkrLayerCnv_CPP 
00008 
00009 // Include files
00010 #include "GaudiKernel/CnvFactory.h"
00011 #include "GaudiKernel/IDataProviderSvc.h"
00012 #include "GlastEvent/TopLevel/ObjectVector.h"
00013 #include "GlastEvent/Irf/IrfTkrLayer.h"
00014 #include "GaudiKernel/IGlastDetSvc.h"
00015 
00016 #include "src/EventSelector/IRFConverter.h"
00017 
00018 // Inherited sources
00019 #include "GlastSvc/Irf/IrfTkrLayerCnv.h"
00020 
00025 
00026 static CnvFactory<IrfTkrLayerCnv> s_factory;
00027 const ICnvFactory& IrfTkrLayerCnvFactory = s_factory;
00028 
00030 StatusCode IrfTkrLayerCnv::createObj(IOpaqueAddress* pAddress, DataObject*& refpObject)   {
00031   refpObject = new IrfTkrLayerVector();
00032   StatusCode status = updateObj(pAddress, refpObject);
00033   if ( !status.isSuccess() )   {
00034     delete refpObject;
00035     refpObject = 0;
00036   }
00037   return status;
00038 }
00039 
00041 StatusCode IrfTkrLayerCnv::updateObj(IOpaqueAddress* pAddress, DataObject* pObject)   {
00042   ObjectVector<IrfTkrLayer>* silayerList  = dynamic_cast<ObjectVector<IrfTkrLayer>*>(pObject);
00043   if ( 0 != silayerList )    {
00044 
00045       // read in the TKR data via the GlastDetector::accept method
00046       IRFConverter myConverter;
00047       m_detSvc->accept(myConverter);
00048       
00049       // iterate over the tiles and store in the pObject vector
00050       ObjectVector<IrfTkrLayer>* tkrData = myConverter.getIrfTkrHits();// Very important method.
00051       for (ObjectVector<IrfTkrLayer>::const_iterator it = tkrData->begin(); it != tkrData->end(); it++) {
00052           IrfTkrLayer* layer = new IrfTkrLayer();
00053           layer->setMaxEnergy((*it)->MaxEnergy());
00054           layer->setId((*it)->id());
00055           // iterate over the hit strips
00056           for (ObjectVector<IrfTkrHit>::const_iterator hit = ((*it)->getHits())->begin(); hit != ((*it)->getHits())->end(); hit++) {
00057               IrfTkrHit* curHit = new IrfTkrHit();
00058               curHit->setEnergy((*hit)->energy());
00059               curHit->setId((*hit)->id());
00060               curHit->setNoise((*hit)->noise());
00061               layer->addHit(curHit);
00062           }
00063           silayerList->push_back(layer);
00064       }
00065 
00066       return StatusCode::SUCCESS;
00067   }
00068 
00069   return StatusCode::FAILURE;
00070 }
00071 
00073 const CLID& IrfTkrLayerCnv::classID()    {
00074   return ObjectVector<IrfTkrLayer>::classID(); 
00075 }
00076 
00078 IrfTkrLayerCnv::IrfTkrLayerCnv(ISvcLocator* svc) 
00079 : BaseCnv(classID(), svc)
00080 {
00081     declareObject("/Event/Irf/IrfTkrHits", objType(), "PASS");
00082 }
00083 
00085 IrfTkrLayerCnv::~IrfTkrLayerCnv(){ }

Generated at Wed Nov 21 12:21:13 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000