00001
00010 #ifndef SIMHEADERCNV_H
00011 #define SIMHEADERCNV_H
00012
00013 #include "RootIOSvc/RootIOTypedCnv.h"
00014 #include "PerSimEvent/PerSimHeader.h"
00015 #include "Event/SimHeader.h"
00016
00017 #include "PerSimEvent/PerSimHitCollection.h"
00018 #include "Event/SimHitCollection.h"
00019
00020 #include "PerSimEvent/PerSimParticleHistory.h"
00021 #include "Event/SimParticleHistory.h"
00022
00023 #include "Event/SimTrack.h"
00024
00025
00026 #include <vector>
00027 #include <map>
00028
00029 class SimHeaderCnv : public RootIOTypedCnv<PerSimHeader,
00030 DayaBay::SimHeader>
00031 {
00032 public:
00033 static const CLID& classID() {
00034 return DayaBay::CLID_SimHeader;
00035 }
00036
00037 SimHeaderCnv(ISvcLocator* svc);
00038 virtual ~SimHeaderCnv();
00039
00040
00043 StatusCode PerToTran(const PerSimHeader& tobj,
00044 DayaBay::SimHeader& dobj);
00045
00048 StatusCode TranToPer(const DayaBay::SimHeader& dobj,
00049 PerSimHeader& tobj);
00050
00051 StatusCode fillRepRefs(IOpaqueAddress* addr, DataObject* dobj);
00052 StatusCode fillObjRefs(IOpaqueAddress* addr, DataObject* dobj);
00053
00054 private:
00055
00056
00057 DayaBay::SimParticleHistory* convert(std::vector<DayaBay::SimTrack*>& timap,
00058 DayaBay::SimHeader& sh,
00059 const PerSimParticleHistory& pph);
00060
00061 PerSimParticleHistory* convert(std::map<const DayaBay::SimTrack*,int>& trackMap,
00062 const DayaBay::SimParticleHistory& ph);
00063
00064
00065 DayaBay::SimHitCollection* convert(std::vector<DayaBay::SimTrack*>& timap,
00066 const PerSimHitCollection& phc);
00067
00068 PerSimHitCollection* convert(std::map<const DayaBay::SimTrack*,int>& trackMap,
00069 const DayaBay::SimHitCollection& hc);
00070
00071
00072 DayaBay::SimUnobservableStatisticsHeader* convert(const PerSimUnobservableStatistics& pstat);
00073 PerSimUnobservableStatistics* convert(const DayaBay::SimUnobservableStatisticsHeader& stat);
00074
00075
00076
00077 void relate(DayaBay::SimHeader& sh);
00078
00079
00080 int m_maxNoPHtoS , m_NoPHtoSmsgs ;
00081
00082
00083 bool m_pruneSimHits;
00084 };
00085
00086 #endif // SIMHEADERCNV_H