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

IrfCalHitCnv.cpp

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 //
00003 // Implementation of class  :  IrfCalHitCnv
00004 //
00005 // Desciption               :  Gaudi converter for IrfCalHit
00006 //------------------------------------------------------------------------------
00007 
00008 #define IrfCalHitCnv_CPP 
00009 
00010 // Include files
00011 #include "GaudiKernel/CnvFactory.h"
00012 #include "GaudiKernel/IDataProviderSvc.h"
00013 #include "GlastEvent/TopLevel/ObjectVector.h"
00014 #include "GlastEvent/Irf/IrfCalHit.h"
00015 #include "GaudiKernel/IGlastDetSvc.h"
00016 
00017 #include "src/EventSelector/IRFConverter.h"
00018 
00019 #include "GlastSvc/Irf/IrfCalHitCnv.h"
00020 
00031 
00032 static CnvFactory<IrfCalHitCnv> s_factory;
00033 const ICnvFactory& IrfCalHitCnvFactory = s_factory;
00034 
00036 StatusCode IrfCalHitCnv::createObj(IOpaqueAddress* pAddress, DataObject*& refpObject)   {
00037   refpObject = new IrfCalHitVector();
00038   StatusCode status = updateObj(pAddress, refpObject);
00039   if ( !status.isSuccess() )   {
00040     delete refpObject;
00041     refpObject = 0;
00042   }
00043   return status;
00044 }
00045 
00047 StatusCode IrfCalHitCnv::updateObj(IOpaqueAddress* pAddress, DataObject* pObject)   {
00048   ObjectVector<IrfCalHit>* calHitList  = dynamic_cast<ObjectVector<IrfCalHit>*>(pObject);
00049   if ( 0 != calHitList )    {
00050 
00051       // read in the ACD data via the GlastDetector::accept method
00052       IRFConverter myConverter;
00053       m_detSvc->accept(myConverter);
00054       
00055       // iterate over the tiles and store in the pObject vector
00056       ObjectVector<IrfCalHit>* mcCalData = myConverter.getIrfCalHits();// Change this
00057       for (ObjectVector<IrfCalHit>::const_iterator it = mcCalData->begin(); it != mcCalData->end(); it++) {
00058           IrfCalHit * mcCalHit = new IrfCalHit();
00059           mcCalHit->setEnergy((*it)->energy());
00060           mcCalHit->setMinusResponse((*it)->minusResponse());
00061           mcCalHit->setPlusResponse((*it)->plusResponse());
00062           calHitList->push_back(mcCalHit);
00063       }
00064 
00065       return StatusCode::SUCCESS;
00066   }
00067 
00068   return StatusCode::FAILURE;
00069 }
00070 
00072 const CLID& IrfCalHitCnv::classID()    {
00073   return ObjectVector<IrfCalHit>::classID(); 
00074 }
00075 
00077 IrfCalHitCnv::IrfCalHitCnv(ISvcLocator* svc) 
00078 : BaseCnv(classID(), svc)
00079 {
00080 
00081   declareObject("/Event/Irf/IrfCalHits", objType(), "PASS");
00082 }
00083 
00085 IrfCalHitCnv::~IrfCalHitCnv(){ }

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