/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Public Member Functions | Static Public Member Functions | Protected Attributes
RecHeaderCnv Class Reference

#include <RecEventCnv.h>

Inheritance diagram for RecHeaderCnv:
Inheritance graph
[legend]
Collaboration diagram for RecHeaderCnv:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 RecHeaderCnv (ISvcLocator *svc)
virtual ~RecHeaderCnv ()
StatusCode PerToTran (const PerRecHeader &tobj, DayaBay::RecHeader &dobj)
 Copy data from TObject based class of type TType to DataObject based class of type DOType.
StatusCode TranToPer (const DayaBay::RecHeader &dobj, PerRecHeader &tobj)
 Copy data from DataObject based class of type DOType to TObject based class of type TType.
StatusCode fillRepRefs (IOpaqueAddress *addr, DataObject *dobj)
StatusCode fillObjRefs (IOpaqueAddress *addr, DataObject *dobj)
PerType & getPerInputObject ()
PerType & getPerOutputObject ()
const RootIOBaseObjectgetBaseInputObject ()
const RootIOBaseObjectgetBaseOutputObject ()
virtual StatusCode PerToTran (const PerType &pobj, TranType &tobj)=0
virtual StatusCode TranToPer (const TranType &tobj, PerType &pobj)=0
virtual StatusCode TranObjectToPerObject (DataObject &dat, const RootOutputAddress &)
virtual StatusCode PerObjectToTranObject (DataObject *&dat)
virtual RootInputStreammakeInputStream (const RootInputAddress &ria)
virtual RootOutputStreammakeOutputStream (const RootOutputAddress &ria)
virtual long repSvcType () const
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual StatusCode createObj (IOpaqueAddress *addr, DataObject *&dat)
virtual StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress)
int commit (const RootOutputAddress &roa)
RootIOBaseCnvotherConverter (int clID)

Static Public Member Functions

static const CLID & classID ()
static unsigned char storageType ()
static const InterfaceID & interfaceID ()

Protected Attributes

std::string m_perclassName
PerType * m_perInObj
PerType * m_perOutObj
IRootIOSvcm_rioSvc
IConversionSvc * m_cnvSvc
RootInputStreamm_ris

Detailed Description

Definition at line 20 of file RecEventCnv.h.


Constructor & Destructor Documentation

RecHeaderCnv::RecHeaderCnv ( ISvcLocator *  svc)

Definition at line 8 of file RecEventCnv.cc.

    : RootIOTypedCnv<PerRecHeader,RecHeader>("PerRecHeader",
                                             classID(),svc)
{
}
RecHeaderCnv::~RecHeaderCnv ( ) [virtual]

Definition at line 14 of file RecEventCnv.cc.

{
}

Member Function Documentation

static const CLID& RecHeaderCnv::classID ( ) [inline, static]

Definition at line 24 of file RecEventCnv.h.

                                 {
        return DayaBay::CLID_RecHeader;
    }
StatusCode RecHeaderCnv::PerToTran ( const PerRecHeader tobj,
DayaBay::RecHeader dobj 
)

Copy data from TObject based class of type TType to DataObject based class of type DOType.

Definition at line 19 of file RecEventCnv.cc.

{
    MsgStream log(msgSvc(), "RecHeaderCnv::PerToTran");
    StatusCode sc = HeaderObjectCnv::toTran(perobj, tranobj);
    if(sc.isFailure()) return sc;

    DayaBay::RecTrigger& recTr = tranobj.recTrigger();
    recTr.setHeader(&tranobj);
    Detector det((Site::Site_t)perobj.site,
                 (DetectorId::DetectorId_t)perobj.detector);
    recTr.setDetector(det);
    recTr.setTriggerType(Trigger::TriggerType_t (perobj.triggerType));
    recTr.setTriggerNumber( perobj.triggerNumber );
    
    timespec value = {perobj.triggerTimeSec, perobj.triggerTimeNanoSec};
    TimeStamp tstamp(value);
    recTr.setTriggerTime(tstamp);
    
    recTr.setEnergy( perobj.energy );
    recTr.setRawEvis( perobj.rawEvis );
    recTr.setEnrec( perobj.enrec );
    recTr.setEprec( perobj.eprec );
    recTr.setPosition( CLHEP::HepLorentzVector(perobj.x, perobj.y, 
                                               perobj.z, perobj.t) );
    recTr.setDirection( CLHEP::HepLorentzVector(perobj.dx, perobj.dy, 
                                                perobj.dz, perobj.dt) );
    recTr.setEnergyStatus( perobj.energyStatus );
    recTr.setPositionStatus( perobj.positionStatus );
    recTr.setDirectionStatus( perobj.directionStatus );
    recTr.setEnergyQuality( perobj.energyQuality );
    recTr.setPositionQuality( perobj.positionQuality );
    recTr.setDirectionQuality( perobj.directionQuality );
    if(perobj.errorMatrixDim>0){
      CLHEP::HepMatrix errMatrix(perobj.errorMatrixDim,
                                 perobj.errorMatrixDim,
                                 0);
      for(int row=1; row<perobj.errorMatrixDim; row++){
        for(int col=1; col<perobj.errorMatrixDim; col++){
          int rcIndex = (row-1)*perobj.errorMatrixDim + (col-1);
          errMatrix(row,col) = perobj.errorMatrix[rcIndex];
        }
      }
      recTr.setErrorMatrix( errMatrix );
    }else{
      recTr.setErrorMatrix( CLHEP::HepMatrix() );
    }
    return StatusCode::SUCCESS;
}
StatusCode RecHeaderCnv::TranToPer ( const DayaBay::RecHeader dobj,
PerRecHeader tobj 
)

Copy data from DataObject based class of type DOType to TObject based class of type TType.

Definition at line 69 of file RecEventCnv.cc.

{
    MsgStream log(msgSvc(), "RecHeaderCnv::TranToPer");
    StatusCode sc = HeaderObjectCnv::toPer(tranobj,perobj);
    if (sc.isFailure()) return sc;
    const DayaBay::RecTrigger& recTr = tranobj.recTrigger();

    perobj.site = (recTr.detector()).site();
    perobj.detector = (recTr.detector()).detectorId();
    perobj.triggerType = recTr.triggerType();
    perobj.triggerNumber = recTr.triggerNumber();
    perobj.triggerTimeSec = recTr.triggerTime().GetSec();
    perobj.triggerTimeNanoSec = recTr.triggerTime().GetNanoSec();
    
    perobj.energy = recTr.energy();
    perobj.rawEvis = recTr.rawEvis();
    perobj.enrec = recTr.enrec();
    perobj.eprec = recTr.eprec();
    perobj.x = recTr.position().x();
    perobj.y = recTr.position().y();
    perobj.z = recTr.position().z();
    perobj.t = recTr.position().t();
    perobj.dx = recTr.direction().x();
    perobj.dy = recTr.direction().y();
    perobj.dz = recTr.direction().z();
    perobj.dt = recTr.direction().t();
    perobj.energyStatus = recTr.energyStatus();
    perobj.positionStatus = recTr.positionStatus();
    perobj.directionStatus = recTr.directionStatus();
    perobj.energyQuality = recTr.energyQuality();
    perobj.positionQuality = recTr.positionQuality();
    perobj.directionQuality = recTr.directionQuality();
    perobj.errorMatrixDim = recTr.errorMatrix().num_row();
    perobj.errorMatrix.resize(perobj.errorMatrixDim*perobj.errorMatrixDim);
    if(perobj.errorMatrixDim>0){
      for(int row=1; row<perobj.errorMatrixDim; row++){
        for(int col=1; col<perobj.errorMatrixDim; col++){
          int rcIndex = (row-1)*perobj.errorMatrixDim + (col-1);
          perobj.errorMatrix[rcIndex] = recTr.errorMatrix()(row,col);
        }
      }
    }

    return StatusCode::SUCCESS;
}
StatusCode RecHeaderCnv::fillRepRefs ( IOpaqueAddress *  addr,
DataObject *  dobj 
) [virtual]

Reimplemented from RootIOTypedCnv< PerRecHeader, DayaBay::RecHeader >.

Definition at line 116 of file RecEventCnv.cc.

                                                                      {
  
  MsgStream log(msgSvc(), "RecHeaderCnv::fillRepRefs");
  //MsgStream log(msgSvc(), "fillRepRefs");
  RecHeader* rh = dynamic_cast<RecHeader*>(dobj);

  log << MSG::DEBUG
      << "Saving links to " << rh->inputHeaders().size() 
      << " input headers" << endreq;
  
  StatusCode sc = HeaderObjectCnv::fillPer(m_rioSvc,*rh,*m_perOutObj);

  if (sc.isFailure()) {
    log << MSG::ERROR << "Failed to fill HeaderObject part" << endreq;
    return sc;
  }
  
  // ... fill RecHeader part...
  return sc;
}
StatusCode RecHeaderCnv::fillObjRefs ( IOpaqueAddress *  addr,
DataObject *  dobj 
) [virtual]

Reimplemented from RootIOTypedCnv< PerRecHeader, DayaBay::RecHeader >.

Definition at line 137 of file RecEventCnv.cc.

                                                                      {
  //MsgStream log(msgSvc(), "RecHeaderCnv::fillObjRefs");
  MsgStream log(msgSvc(), "fillObjRefs");
  HeaderObject* hobj = dynamic_cast<HeaderObject*>(dobj);

  StatusCode sc = HeaderObjectCnv::fillTran(m_rioSvc,*m_perInObj,*hobj);
  if (sc.isFailure()) {
    log << MSG::ERROR << "Failed to fill HeaderObject part" << endreq;
    return sc;
  }
  
  log << MSG::DEBUG
      << "Restored links to " << hobj->inputHeaders().size() 
      << " input headers" << endreq;
  
  // ... fill RecHeader part...
  return sc;
}
PerType & RootIOTypedCnv< class, class >::getPerInputObject ( ) [inherited]
PerType & RootIOTypedCnv< class, class >::getPerOutputObject ( ) [inherited]
const RootIOBaseObject * RootIOTypedCnv< class, class >::getBaseInputObject ( ) [virtual, inherited]

Implements RootIOBaseCnv.

const RootIOBaseObject * RootIOTypedCnv< class, class >::getBaseOutputObject ( ) [virtual, inherited]

Implements RootIOBaseCnv.

virtual StatusCode RootIOTypedCnv< class, class >::PerToTran ( const PerType &  pobj,
TranType &  tobj 
) [pure virtual, inherited]
virtual StatusCode RootIOTypedCnv< class, class >::TranToPer ( const TranType &  tobj,
PerType &  pobj 
) [pure virtual, inherited]
virtual StatusCode RootIOTypedCnv< class, class >::TranObjectToPerObject ( DataObject &  dat,
const RootOutputAddress  
) [virtual, inherited]

Implements RootIOBaseCnv.

virtual StatusCode RootIOTypedCnv< class, class >::PerObjectToTranObject ( DataObject *&  dat) [virtual, inherited]

Implements RootIOBaseCnv.

virtual RootInputStream * RootIOTypedCnv< class, class >::makeInputStream ( const RootInputAddress ria) [virtual, inherited]

Implements RootIOBaseCnv.

virtual RootOutputStream * RootIOTypedCnv< class, class >::makeOutputStream ( const RootOutputAddress ria) [virtual, inherited]

Implements RootIOBaseCnv.

virtual long RootIOTypedCnv< class, class >::repSvcType ( ) const [virtual, inherited]

Reimplemented from RootIOBaseCnv.

virtual StatusCode RootIOTypedCnv< class, class >::initialize ( ) [virtual, inherited]

Reimplemented from RootIOBaseCnv.

virtual StatusCode RootIOTypedCnv< class, class >::finalize ( ) [virtual, inherited]

Reimplemented from RootIOBaseCnv.

virtual StatusCode RootIOTypedCnv< class, class >::createObj ( IOpaqueAddress *  addr,
DataObject *&  dat 
) [virtual, inherited]

Reimplemented from RootIOBaseCnv.

virtual StatusCode RootIOTypedCnv< class, class >::createRep ( DataObject *  pObject,
IOpaqueAddress *&  refpAddress 
) [virtual, inherited]

Reimplemented from RootIOBaseCnv.

int RootIOTypedCnv< class, class >::commit ( const RootOutputAddress roa) [inherited]

Reimplemented from RootIOBaseCnv.

RootIOBaseCnv * RootIOTypedCnv< class, class >::otherConverter ( int  clID) [inherited]

Reimplemented from RootIOBaseCnv.

static unsigned char RootIOTypedCnv< class, class >::storageType ( ) [static, inherited]

Reimplemented from RootIOBaseCnv.

static const InterfaceID & RootIOTypedCnv< class, class >::interfaceID ( ) [static, inherited]

Reimplemented from RootIOBaseCnv.


Member Data Documentation

std::string RootIOTypedCnv< class, class >::m_perclassName [protected, inherited]
PerType * RootIOTypedCnv< class, class >::m_perInObj [protected, inherited]
PerType * RootIOTypedCnv< class, class >::m_perOutObj [protected, inherited]
IRootIOSvc * RootIOTypedCnv< class, class >::m_rioSvc [protected, inherited]

Reimplemented from RootIOBaseCnv.

IConversionSvc * RootIOTypedCnv< class, class >::m_cnvSvc [protected, inherited]

Reimplemented from RootIOBaseCnv.

RootInputStream * RootIOTypedCnv< class, class >::m_ris [protected, inherited]

Reimplemented from RootIOBaseCnv.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:00:35 for PerRecEvent by doxygen 1.7.4