| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

SimReadoutEventCnv.cc

Go to the documentation of this file.
00001 #include "SimReadoutEventCnv.h"
00002 #include "PerBaseEvent/HeaderObjectCnv.h"
00003 #include "ReadoutEventCnv.h"
00004 
00005 using namespace DayaBay;
00006 using namespace std;
00007 
00008 SimReadoutHeaderCnv::SimReadoutHeaderCnv(ISvcLocator* svc)
00009   : RootIOTypedCnv<PerSimReadoutHeader,SimReadoutHeader>("PerSimReadoutHeader",
00010                                                          classID(),svc)
00011 {
00012 
00013   m_saveSimReadouts = true;
00014   char* pruneSimReadouts = getenv("NUWA_PRUNESIMREADOUTS");
00015   if (pruneSimReadouts) {
00016     m_saveSimReadouts = false;
00017   }
00018 }
00019 
00020 
00021 SimReadoutHeaderCnv::~SimReadoutHeaderCnv()
00022 {
00023 }
00024 
00025 StatusCode SimReadoutHeaderCnv::PerToTran(const PerSimReadoutHeader& perobj,
00026                                           DayaBay::SimReadoutHeader& tranobj)
00027 {
00028   MsgStream log(msgSvc(), "SimReadoutHeaderCnv::PerToTran");
00029 
00030   StatusCode sc = HeaderObjectCnv::toTran(perobj,tranobj);
00031   if (sc.isFailure()) return sc;
00032   
00033   vector<PerSimReadout*> in_vec = perobj.readouts;
00034   vector<PerSimReadout*>::iterator it;
00035   
00036   for(it = in_vec.begin(); it != in_vec.end(); ++it)
00037   {
00038     SimReadout* simReadout = convert(**it);
00039     simReadout->setHeader(&tranobj);
00040     tranobj.readouts().push_back(simReadout);
00041   }
00042   return StatusCode::SUCCESS;
00043 }                                       
00044 
00045 StatusCode SimReadoutHeaderCnv::TranToPer(
00046                                       const DayaBay::SimReadoutHeader& tranobj,
00047                                       PerSimReadoutHeader& perobj)
00048 {
00049   MsgStream log(msgSvc(), "SimReadoutHeaderCnv::TranToPer");
00050   perobj.clear();
00051   StatusCode sc = HeaderObjectCnv::toPer(tranobj,perobj);
00052   if (sc.isFailure()) return sc;
00053 
00054   if(m_saveSimReadouts){
00055     const vector<SimReadout*>& in_vec = tranobj.readouts();
00056     vector<SimReadout*>::const_iterator it;
00057 
00058     for(it=in_vec.begin();it!=in_vec.end();++it){
00059       perobj.readouts.push_back( convert(**it) );
00060     }
00061   }
00062   return StatusCode::SUCCESS;
00063   
00064 }
00065 
00066 StatusCode SimReadoutHeaderCnv::fillRepRefs(IOpaqueAddress*, DataObject* dobj)
00067 {
00068     MsgStream log(msgSvc(), "SimReadoutHeaderCnv::fillRepRefs");
00069     SimReadoutHeader* rh = dynamic_cast<SimReadoutHeader*>(dobj);
00070 
00071     log << MSG::DEBUG
00072         << "Saving links to " << rh->inputHeaders().size() 
00073         << " input headers" << endreq;
00074 
00075     StatusCode sc = HeaderObjectCnv::fillPer(m_rioSvc,*rh,*m_perOutObj);
00076     if (sc.isFailure()) {
00077         log << MSG::ERROR << "Failed to fill HeaderObject part" << endreq;
00078         return sc;
00079     }
00080 
00081     // ... fill SimReadoutHeader part...
00082     return sc;
00083 }
00084 
00085 StatusCode SimReadoutHeaderCnv::fillObjRefs(IOpaqueAddress*, DataObject* dobj)
00086 {
00087     MsgStream log(msgSvc(), "SimReadoutHeaderCnv::fillObjRefs");
00088     HeaderObject* hobj = dynamic_cast<HeaderObject*>(dobj);
00089     StatusCode sc = HeaderObjectCnv::fillTran(m_rioSvc,*m_perInObj,*hobj);
00090     if (sc.isFailure()) {
00091         log << MSG::ERROR << "Failed to fill HeaderObject part" << endreq;
00092         return sc;
00093     }
00094 
00095     log << MSG::DEBUG
00096         << "Restored links to " << hobj->inputHeaders().size() 
00097         << " input headers" << endreq;
00098 
00099     // ... fill SimReadoutHeader part...
00100     return sc;
00101 }
00102 
00103 PerSimReadout* SimReadoutHeaderCnv::convert(const DayaBay::SimReadout& simRo){
00104   PerSimReadout* perSimRo = new PerSimReadout;
00105   ReadoutHeaderCnv *readoutHeaderCnv 
00106     = dynamic_cast<ReadoutHeaderCnv*>( this->otherConverter(CLID_ReadoutHeader) );
00107   if(!readoutHeaderCnv){
00108     return 0;
00109   }
00110   perSimRo->readout = readoutHeaderCnv->convert( *(simRo.readout()) );
00111   return perSimRo;
00112 }
00113 
00114 SimReadout*  SimReadoutHeaderCnv::convert(const PerSimReadout& perSimRo)
00115 {
00116   SimReadout* simRo = new SimReadout;
00117   ReadoutHeaderCnv *readoutHeaderCnv 
00118     = dynamic_cast<ReadoutHeaderCnv*>( this->otherConverter(CLID_ReadoutHeader) );
00119   if(!readoutHeaderCnv){
00120     return 0;
00121   }
00122 
00123   Readout* readout = 0;
00124   if( perSimRo.readout!=0 ) {
00125     readout = readoutHeaderCnv->convert( *(perSimRo.readout) );
00126   }
00127   simRo->setReadout(readout);
00128   return simRo;
00129 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:30:32 2011 for PerReadoutEvent by doxygen 1.4.7