diff --git a/Event/EventTPCnv/CMakeLists.txt b/Event/EventTPCnv/CMakeLists.txt index a9c7c1a5abc73994463bfa7473c328f955a861f6..df1162dd4f90a65e6fb150f36a413cc60dfea794 100644 --- a/Event/EventTPCnv/CMakeLists.txt +++ b/Event/EventTPCnv/CMakeLists.txt @@ -35,9 +35,37 @@ atlas_add_dictionary( OLD_EventTPCnvDict INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib EventInfo TestTools AthenaKernel EventTPCnv ) -atlas_add_test( vectorize_test - SOURCES - test/vectorize_test.cxx - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib EventInfo TestTools AthenaKernel EventTPCnv ) +foreach( name + EventIDCnv_p1_test + EventIDCnv_p2_test + EventInfoCnv_p1_test + EventInfoCnv_p2_test + EventInfoCnv_p3_test + EventInfoCnv_p4_test + EventStreamInfoCnv_p1_test + EventStreamInfoCnv_p2_test + EventStreamInfoCnv_p3_test + EventTypeCnv_p1_test + EventTypeCnv_p2_test + EventTypeCnv_p3_test + MergedEventInfoCnv_p1_test + MergedEventInfoCnv_p2_test + PileUpEventInfoCnv_p1_test + PileUpEventInfoCnv_p2_test + PileUpEventInfoCnv_p3_test + PileUpEventInfoCnv_p4_test + PileUpEventInfoCnv_p5_test + TriggerInfoCnv_p1_test + TriggerInfoCnv_p2_test + TriggerInfoCnv_p3_test + AtlasMcWeight_test + vectorize_test + ) + atlas_add_test( ${name} + SOURCES + test/${name}.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib EventInfo TestTools AthenaKernel EventTPCnv ) + +endforeach() diff --git a/Event/EventTPCnv/EventTPCnv/AtlasMcWeight.h b/Event/EventTPCnv/EventTPCnv/AtlasMcWeight.h index ea5a9a0fc95a3ac58cdfc4976f1f9f9c58ee5c1a..78d388a32fdc77962ada0aa24bb529a7fe25f399 100644 --- a/Event/EventTPCnv/EventTPCnv/AtlasMcWeight.h +++ b/Event/EventTPCnv/EventTPCnv/AtlasMcWeight.h @@ -12,7 +12,7 @@ * * @author Paolo Calafiura <pcalafiura@lbl.gov>, Borut Kersevan <borut.kersevan@cern.ch> * - * $Id: AtlasMcWeight.h 542280 2013-03-25 12:34:31Z schaffer $ + * $Id: AtlasMcWeight.h 764382 2016-07-26 15:37:04Z ssnyder $ */ namespace AtlasMcWeight { @@ -22,6 +22,7 @@ namespace AtlasMcWeight { /// Convert weight from unsigned to double double decode(number_type binnedWeight); + number_type encode(double weight); } #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h index 4a5fee3428761a725f719286534ff1097c0ad402..a0e9abb38a8a76d1d3a84bfbf8840df309fdbd48 100644 --- a/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h @@ -5,6 +5,7 @@ #ifndef EVENTATHENAPOOL_EVENTIDCNV_P1_H #define EVENTATHENAPOOL_EVENTIDCNV_P1_H +#include "EventInfo/EventID.h" #include "EventTPCnv/EventID_p1.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" @@ -13,8 +14,13 @@ class MsgStream; class EventIDCnv_p1 : public T_AthenaPoolTPCnvBase<EventID, EventID_p1> { public: EventIDCnv_p1() {} - virtual void persToTrans(const EventID_p1* persObj, EventID* transObj, MsgStream &log) ; - virtual void transToPers(const EventID* transObj, EventID_p1* persObj, MsgStream &log) ; + virtual void persToTrans(const EventID_p1* persObj, EventID* transObj, MsgStream &log) override; + virtual void transToPers(const EventID* transObj, EventID_p1* persObj, MsgStream &log) override; + void persToTrans(const EventID_p1* persObj, EventID* transObj, MsgStream &log) const; + void transToPers(const EventID* transObj, EventID_p1* persObj, MsgStream &log) const; + + virtual EventID* createTransient (const EventID_p1* persObj, MsgStream& log) override; + EventID* createTransient (const EventID_p1* persObj, MsgStream& log) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventIDCnv_p2.h b/Event/EventTPCnv/EventTPCnv/EventIDCnv_p2.h index c163bf367f4971315e7152866bf4611f9e0ec184..5fa51043b2aa66d57d6960facffa9bfe2c9ece5c 100644 --- a/Event/EventTPCnv/EventTPCnv/EventIDCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/EventIDCnv_p2.h @@ -5,11 +5,12 @@ #ifndef EVENTATHENAPOOL_EVENTIDCNV_P2_H #define EVENTATHENAPOOL_EVENTIDCNV_P2_H #include <vector> +class EventID; class EventIDCnv_p2 { public: EventIDCnv_p2() {} - virtual void persToTrans(std::vector<unsigned int>::const_iterator & nnnnpersObj, EventID* transObj) ; - virtual void transToPers(const EventID* transObj, std::vector<unsigned int> &persObj) ; + void persToTrans(std::vector<unsigned int>::const_iterator & nnnnpersObj, EventID* transObj) const; + void transToPers(const EventID* transObj, std::vector<unsigned int> &persObj) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h index d1c0bad3ba95a908a713d01a73c782c8f0bb9d54..7a86776a33ff2c432825e399934796eceb0b6157 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h @@ -13,11 +13,14 @@ class MsgStream; class EventInfoCnv_p1 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p1> { public: EventInfoCnv_p1() {} - virtual void persToTrans(const EventInfo_p1* persObj, EventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const EventInfo* transObj, EventInfo_p1* persObj, MsgStream &log) ; + virtual void persToTrans(const EventInfo_p1* persObj, EventInfo* transObj, MsgStream &log) override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p1* persObj, MsgStream &log) override; + void persToTrans(const EventInfo_p1* persObj, EventInfo* transObj, MsgStream &log) const; + void transToPers(const EventInfo* transObj, EventInfo_p1* persObj, MsgStream &log) const; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p1* persObj, MsgStream &log); + virtual EventInfo *createTransient( const EventInfo_p1* persObj, MsgStream &log) override; + EventInfo *createTransient( const EventInfo_p1* persObj, MsgStream &log) const; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h index 0a4ddde7f8b33d93d0d94f550a7a3bb1d21b6b25..dbd9c29b196ff6741572269a40f7a975cd0d4cce 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h @@ -6,17 +6,22 @@ #define EVENTATHENAPOOL_EVENTINFOCNV_P2_H #include "EventTPCnv/EventInfo_p2.h" +#include "EventInfo/EventInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class EventInfoCnv_p2 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p2> { public: EventInfoCnv_p2() {} - virtual void persToTrans(const EventInfo_p2* persObj, EventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const EventInfo* transObj, EventInfo_p2* persObj, MsgStream &log) ; + virtual void persToTrans(const EventInfo_p2* persObj, EventInfo* transObj, MsgStream &log) override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p2* persObj, MsgStream &log) override; + + void persToTrans(const EventInfo_p2* persObj, EventInfo* transObj, MsgStream &log) const; + void transToPers(const EventInfo* transObj, EventInfo_p2* persObj, MsgStream &log) const; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p2* persObj, MsgStream &log); + virtual EventInfo *createTransient( const EventInfo_p2* persObj, MsgStream &log) override; + EventInfo *createTransient( const EventInfo_p2* persObj, MsgStream &log) const; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h index cb649a34349382ed6b969267fe3d61326c8f83e1..84d12821da3b675791cb251daa8179c832b52c3b 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h @@ -6,17 +6,22 @@ #define EVENTATHENAPOOL_EVENTINFOCNV_P3_H #include "EventTPCnv/EventInfo_p3.h" +#include "EventInfo/EventInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class EventInfoCnv_p3 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p3> { public: EventInfoCnv_p3() {} - virtual void persToTrans(const EventInfo_p3* persObj, EventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const EventInfo* transObj, EventInfo_p3* persObj, MsgStream &log) ; + virtual void persToTrans(const EventInfo_p3* persObj, EventInfo* transObj, MsgStream &log) override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p3* persObj, MsgStream &log) override; + + void persToTrans(const EventInfo_p3* persObj, EventInfo* transObj, MsgStream &log) const; + void transToPers(const EventInfo* transObj, EventInfo_p3* persObj, MsgStream &log) const; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p3* persObj, MsgStream &log); + virtual EventInfo *createTransient( const EventInfo_p3* persObj, MsgStream &log) override; + EventInfo *createTransient( const EventInfo_p3* persObj, MsgStream &log) const; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h index 5bef2e20941075ec45687bdc1a356e387883465a..de23426dd30a2823fe6c52b2f75e86b06725c6b8 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h @@ -6,17 +6,23 @@ #define EVENTATHENAPOOL_EVENTINFOCNV_P4_H #include "EventTPCnv/EventInfo_p4.h" +#include "EventInfo/EventInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class EventInfoCnv_p4 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p4> { public: EventInfoCnv_p4() {} - virtual void persToTrans(const EventInfo_p4* persObj, EventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const EventInfo* transObj, EventInfo_p4* persObj, MsgStream &log) ; + virtual void persToTrans(const EventInfo_p4* persObj, EventInfo* transObj, MsgStream &log) override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p4* persObj, MsgStream &log) override; + + void persToTrans(const EventInfo_p4* persObj, EventInfo* transObj, MsgStream &log) const; + void transToPers(const EventInfo* transObj, EventInfo_p4* persObj, MsgStream &log) const; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p4* persObj, MsgStream &log); + virtual EventInfo *createTransient( const EventInfo_p4* persObj, MsgStream &log) override; + + EventInfo *createTransient( const EventInfo_p4* persObj, MsgStream &log) const; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h index 76f91cfb5a00c6202380fc7c0a232b632d8ef083..01491394badd4475825c9dc5918ccce815ac45c6 100644 --- a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h @@ -6,14 +6,20 @@ #define EVENTATHENAPOOL_EVENTTYPECNV_P1_H #include "EventTPCnv/EventType_p1.h" +#include "EventInfo/EventType.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class EventTypeCnv_p1 : public T_AthenaPoolTPCnvBase<EventType, EventType_p1> { public: EventTypeCnv_p1() {} - virtual void persToTrans(const EventType_p1* persObj, EventType* transObj, MsgStream &log); - virtual void transToPers(const EventType* transObj, EventType_p1* persObj, MsgStream &log); + virtual void persToTrans(const EventType_p1* persObj, EventType* transObj, MsgStream &log) override; + virtual void transToPers(const EventType* transObj, EventType_p1* persObj, MsgStream &log) override; + void persToTrans(const EventType_p1* persObj, EventType* transObj, MsgStream &log) const; + void transToPers(const EventType* transObj, EventType_p1* persObj, MsgStream &log) const; + + virtual EventType* createTransient (const EventType_p1* persObj, MsgStream& log) override; + EventType* createTransient (const EventType_p1* persObj, MsgStream& log) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p2.h b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p2.h index b6acd149dec250a03294407b2ec32d481acec0f4..cacc5c303e360de8eb2f2d1d5a9ac08fdbf2bb45 100644 --- a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p2.h @@ -4,12 +4,14 @@ #ifndef EVENTATHENAPOOL_EVENTTYPECNV_P2_H #define EVENTATHENAPOOL_EVENTTYPECNV_P2_H +class EventType; #include <vector> class EventTypeCnv_p2{ public: - void persToTrans(std::vector<unsigned int>::const_iterator &persObj, EventType* transObj, int version, bool bugcompat); - void transToPers(const EventType* transObj, std::vector<unsigned int> &persObj); + EventTypeCnv_p2() {} + void persToTrans(std::vector<unsigned int>::const_iterator &persObj, EventType* transObj, int version, bool bugcompat) const; + void transToPers(const EventType* transObj, std::vector<unsigned int> &persObj) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h index df9eaefd79312a38351906db9c6a87b5f50f05ed..b7227da81e93878b1a8424c7e1b70e5f3941a11b 100644 --- a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h @@ -6,14 +6,20 @@ #define EVENTATHENAPOOL_EVENTTYPECNV_P3_H #include "EventTPCnv/EventType_p3.h" +#include "EventInfo/EventType.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class EventTypeCnv_p3 : public T_AthenaPoolTPCnvBase<EventType, EventType_p3> { public: EventTypeCnv_p3() {} - virtual void persToTrans(const EventType_p3* persObj, EventType* transObj, MsgStream &log); - virtual void transToPers(const EventType* transObj, EventType_p3* persObj, MsgStream &log); + virtual void persToTrans(const EventType_p3* persObj, EventType* transObj, MsgStream &log) override; + virtual void transToPers(const EventType* transObj, EventType_p3* persObj, MsgStream &log) override; + void persToTrans(const EventType_p3* persObj, EventType* transObj, MsgStream &log) const; + void transToPers(const EventType* transObj, EventType_p3* persObj, MsgStream &log) const; + + virtual EventType* createTransient (const EventType_p3* persObj, MsgStream& log) override; + EventType* createTransient (const EventType_p3* persObj, MsgStream& log) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h index 2ff766fcabeddd5f635fdd7cdc0f3a9e37b610cd..fc03c87fe6193f454f72e4976b3f4e4faec39670 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h @@ -6,6 +6,7 @@ #define EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P3_H #include "EventTPCnv/PileUpEventInfo_p3.h" +#include "EventInfo/PileUpEventInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h index 3c52c70e1e7418ba9bfd6edd157b1c179c1da8ee..c0a99f3754193ae56dde705c730d5a252152f8f3 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h @@ -6,6 +6,7 @@ #define EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P4_H #include "EventTPCnv/PileUpEventInfo_p4.h" +#include "EventInfo/PileUpEventInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h index 14a188a822f425702348b5b3d62ad286309d23cb..f8d2ebbad97301df06021b2db9f348690341f516 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h @@ -6,6 +6,7 @@ #define EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P5_H #include "EventTPCnv/PileUpEventInfo_p5.h" +#include "EventInfo/PileUpEventInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; diff --git a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h index 48fb9c08f6b629dc3df99847980f7bc479567acd..2e9bbcc1d5235c0f2a8b9049e7bac07e542fc3db 100644 --- a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h @@ -6,14 +6,23 @@ #define EVENTATHENAPOOL_TRIGGERINFOCNV_P1_H #include "EventTPCnv/TriggerInfo_p1.h" +#include "EventInfo/TriggerInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class TriggerInfoCnv_p1 : public T_AthenaPoolTPCnvBase<TriggerInfo, TriggerInfo_p1> { public: TriggerInfoCnv_p1() {} - virtual void persToTrans(const TriggerInfo_p1* persObj, TriggerInfo* transObj, MsgStream &log) ; - virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p1* persObj, MsgStream &log) ; + virtual void persToTrans(const TriggerInfo_p1* persObj, TriggerInfo* transObj, MsgStream &log) override; + virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p1* persObj, MsgStream &log) override; + void persToTrans(const TriggerInfo_p1* persObj, TriggerInfo* transObj, MsgStream &log) const; + void transToPers(const TriggerInfo* transObj, TriggerInfo_p1* persObj, MsgStream &log) const; + + virtual TriggerInfo* createTransient (const TriggerInfo_p1* persObj, MsgStream& log) override; + TriggerInfo* createTransient (const TriggerInfo_p1* persObj, MsgStream& log) const; + + virtual TriggerInfo_p1* createPersistent (const TriggerInfo* transObj, MsgStream& log) override; + TriggerInfo_p1* createPersistent (const TriggerInfo* transObj, MsgStream& log) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h index ab14fe083a4bafbc0357566ddd8dd40d64d776e2..191b4cfdd44360d207c43a4b42577e7b463bac2f 100644 --- a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h @@ -6,14 +6,20 @@ #define EVENTATHENAPOOL_TRIGGERINFOCNV_P2_H #include "EventTPCnv/TriggerInfo_p2.h" +#include "EventInfo/TriggerInfo.h" #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; class TriggerInfoCnv_p2 : public T_AthenaPoolTPCnvBase<TriggerInfo, TriggerInfo_p2> { public: TriggerInfoCnv_p2() {} - virtual void persToTrans(const TriggerInfo_p2* persObj, TriggerInfo* transObj, MsgStream &log) ; - virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p2* persObj, MsgStream &log) ; + virtual void persToTrans(const TriggerInfo_p2* persObj, TriggerInfo* transObj, MsgStream &log) override; + virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p2* persObj, MsgStream &log) override; + void persToTrans(const TriggerInfo_p2* persObj, TriggerInfo* transObj, MsgStream &log) const; + void transToPers(const TriggerInfo* transObj, TriggerInfo_p2* persObj, MsgStream &log) const; + + virtual TriggerInfo* createTransient (const TriggerInfo_p2* persObj, MsgStream& log) override; + TriggerInfo* createTransient (const TriggerInfo_p2* persObj, MsgStream& log) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p3.h b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p3.h index c09fe0ed4f1a271ce5bb92c06cc5257e85af32de..94b4e3456de8b5166f856509f540ac25bbc9d4bc 100644 --- a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p3.h @@ -4,12 +4,15 @@ #ifndef EVENTATHENAPOOL_TRIGGERINFOCNV_P3_H #define EVENTATHENAPOOL_TRIGGERINFOCNV_P3_H +class TriggerInfo; +#include <vector> class MsgStream; class TriggerInfoCnv_p3 { public: - void persToTrans(std::vector<unsigned int>::const_iterator &persObj, TriggerInfo* transObj, bool bugcompat); - void transToPers(const TriggerInfo* transObj, std::vector<unsigned int> &persObj); + TriggerInfoCnv_p3() {} + void persToTrans(std::vector<unsigned int>::const_iterator &persObj, TriggerInfo* transObj, bool bugcompat) const; + void transToPers(const TriggerInfo* transObj, std::vector<unsigned int> &persObj) const; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/TriggerInfo_p2.h b/Event/EventTPCnv/EventTPCnv/TriggerInfo_p2.h index c451e1f1cf9a854ff158236d3bdf5260a6fc4e26..524537671b56a943c852677b74f981eeaf936493 100644 --- a/Event/EventTPCnv/EventTPCnv/TriggerInfo_p2.h +++ b/Event/EventTPCnv/EventTPCnv/TriggerInfo_p2.h @@ -13,6 +13,7 @@ */ #include <vector> +#include <string> class TriggerInfo_p2 { public: diff --git a/Event/EventTPCnv/cmt/requirements b/Event/EventTPCnv/cmt/requirements index 1de508f8f713e32a04dee42533d384b1c003bcfc..34cb1e9ec27a73d2c8d58d2963c2a49b02dfab84 100644 --- a/Event/EventTPCnv/cmt/requirements +++ b/Event/EventTPCnv/cmt/requirements @@ -12,6 +12,8 @@ use AthenaPoolCnvSvc AthenaPoolCnvSvc-* Database/AthenaPOOL private +use GaudiInterface GaudiInterface-* External +use CxxUtils CxxUtils-* Control use AthenaKernel AthenaKernel-* Control end_private @@ -26,4 +28,28 @@ apply_pattern lcgdict dict=OLD_EventTPCnv selectionfile=OLD_selection.xml heade private use TestTools TestTools-* AtlasTest +apply_pattern UnitTest_run unit_test=EventIDCnv_p1 +apply_pattern UnitTest_run unit_test=EventIDCnv_p2 +apply_pattern UnitTest_run unit_test=EventInfoCnv_p1 +apply_pattern UnitTest_run unit_test=EventInfoCnv_p2 +apply_pattern UnitTest_run unit_test=EventInfoCnv_p3 +apply_pattern UnitTest_run unit_test=EventInfoCnv_p4 +apply_pattern UnitTest_run unit_test=EventStreamInfoCnv_p1 +apply_pattern UnitTest_run unit_test=EventStreamInfoCnv_p2 +apply_pattern UnitTest_run unit_test=EventStreamInfoCnv_p3 +apply_pattern UnitTest_run unit_test=EventTypeCnv_p1 +apply_pattern UnitTest_run unit_test=EventTypeCnv_p2 +apply_pattern UnitTest_run unit_test=EventTypeCnv_p3 +apply_pattern UnitTest_run unit_test=MergedEventInfoCnv_p1 +apply_pattern UnitTest_run unit_test=MergedEventInfoCnv_p2 +apply_pattern UnitTest_run unit_test=PileUpEventInfoCnv_p1 +apply_pattern UnitTest_run unit_test=PileUpEventInfoCnv_p2 +apply_pattern UnitTest_run unit_test=PileUpEventInfoCnv_p3 +apply_pattern UnitTest_run unit_test=PileUpEventInfoCnv_p4 +apply_pattern UnitTest_run unit_test=PileUpEventInfoCnv_p5 +apply_pattern UnitTest_run unit_test=TriggerInfoCnv_p1 +apply_pattern UnitTest_run unit_test=TriggerInfoCnv_p2 +apply_pattern UnitTest_run unit_test=TriggerInfoCnv_p3 +apply_pattern UnitTest_run unit_test=AtlasMcWeight apply_pattern UnitTest_run unit_test=vectorize + diff --git a/Event/EventTPCnv/share/AtlasMcWeight_test.ref b/Event/EventTPCnv/share/AtlasMcWeight_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/AtlasMcWeight_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventIDCnv_p1_test.ref b/Event/EventTPCnv/share/EventIDCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventIDCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventIDCnv_p2_test.ref b/Event/EventTPCnv/share/EventIDCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventIDCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventInfoCnv_p1_test.ref b/Event/EventTPCnv/share/EventInfoCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventInfoCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventInfoCnv_p2_test.ref b/Event/EventTPCnv/share/EventInfoCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventInfoCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventInfoCnv_p3_test.ref b/Event/EventTPCnv/share/EventInfoCnv_p3_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventInfoCnv_p3_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventInfoCnv_p4_test.ref b/Event/EventTPCnv/share/EventInfoCnv_p4_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventInfoCnv_p4_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventStreamInfoCnv_p1_test.ref b/Event/EventTPCnv/share/EventStreamInfoCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventStreamInfoCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventStreamInfoCnv_p2_test.ref b/Event/EventTPCnv/share/EventStreamInfoCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventStreamInfoCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventStreamInfoCnv_p3_test.ref b/Event/EventTPCnv/share/EventStreamInfoCnv_p3_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventStreamInfoCnv_p3_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventTypeCnv_p1_test.ref b/Event/EventTPCnv/share/EventTypeCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventTypeCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventTypeCnv_p2_test.ref b/Event/EventTPCnv/share/EventTypeCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventTypeCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/EventTypeCnv_p3_test.ref b/Event/EventTPCnv/share/EventTypeCnv_p3_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/EventTypeCnv_p3_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/MergedEventInfoCnv_p1_test.ref b/Event/EventTPCnv/share/MergedEventInfoCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/MergedEventInfoCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/MergedEventInfoCnv_p2_test.ref b/Event/EventTPCnv/share/MergedEventInfoCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/MergedEventInfoCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/PileUpEventInfoCnv_p1_test.ref b/Event/EventTPCnv/share/PileUpEventInfoCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/PileUpEventInfoCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/PileUpEventInfoCnv_p2_test.ref b/Event/EventTPCnv/share/PileUpEventInfoCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/PileUpEventInfoCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/PileUpEventInfoCnv_p3_test.ref b/Event/EventTPCnv/share/PileUpEventInfoCnv_p3_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/PileUpEventInfoCnv_p3_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/PileUpEventInfoCnv_p4_test.ref b/Event/EventTPCnv/share/PileUpEventInfoCnv_p4_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/PileUpEventInfoCnv_p4_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/PileUpEventInfoCnv_p5_test.ref b/Event/EventTPCnv/share/PileUpEventInfoCnv_p5_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/PileUpEventInfoCnv_p5_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/TriggerInfoCnv_p1_test.ref b/Event/EventTPCnv/share/TriggerInfoCnv_p1_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/TriggerInfoCnv_p1_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/TriggerInfoCnv_p2_test.ref b/Event/EventTPCnv/share/TriggerInfoCnv_p2_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/TriggerInfoCnv_p2_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/share/TriggerInfoCnv_p3_test.ref b/Event/EventTPCnv/share/TriggerInfoCnv_p3_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5 --- /dev/null +++ b/Event/EventTPCnv/share/TriggerInfoCnv_p3_test.ref @@ -0,0 +1 @@ +test1 diff --git a/Event/EventTPCnv/src/AtlasMcWeight.cxx b/Event/EventTPCnv/src/AtlasMcWeight.cxx index a528ec825bd1e47619d9b618b86b52340aa39270..cce71009bbb89cfb1d9ffa08822b368797b23921 100644 --- a/Event/EventTPCnv/src/AtlasMcWeight.cxx +++ b/Event/EventTPCnv/src/AtlasMcWeight.cxx @@ -7,7 +7,7 @@ * * @author Paolo Calafiura <pcalafiura@lbl.gov>, Borut Kersevan <borut.kersevan@cern.ch> * - * $Id: AtlasMcWeight.cxx 566179 2013-10-20 09:27:11Z schaffer $ + * $Id: AtlasMcWeight.cxx 764382 2016-07-26 15:37:04Z ssnyder $ */ #include <iostream> #include <limits> @@ -15,6 +15,8 @@ #include <cmath> #include "EventTPCnv/AtlasMcWeight.h" +#include "GaudiKernel/StatusCode.h" +#include "GaudiKernel/GaudiException.h" /* #define AMC_DEBUG 1 */ @@ -58,3 +60,32 @@ AtlasMcWeight::decode(number_type binnedWeight) { return wt_decode; } + +AtlasMcWeight::number_type +AtlasMcWeight::encode(double weight) { + int exponent = int(floor(log10(fabs(weight)))+1); + if ( abs(exponent) > 9 ) { + throw GaudiException( "The MC weight abs value is bigger than 1E9,encoding failed","AtlasMcWeight", StatusCode::FAILURE ); + } + + number_type wt_prec = int(fabs(weight)*pow(10,(NPLACES-1-exponent))); + number_type wt_exp = abs(exponent); + int d_sign = ( weight > 0. ? 0 : 1 ); + int e_sign = ( exponent > 0. ? 0 : 1 ); + number_type wt_pref = d_sign+2*e_sign; + + char senc[12]; + snprintf(senc,12,"%d%d%d",wt_pref, wt_exp, wt_prec); + number_type wt_encode=atoll(senc); + +#ifdef AMC_DEBUG + std::cout << " AtlasMcWeight::encode weight = " << weight << std::endl; + printf("encode parts =%d %d %d \n", wt_pref, wt_exp, wt_prec); + printf("encoded string=%s \n", senc); + std::cout << " weight=" << weight << std::endl; + std::cout << " str weight=" << senc << std::endl; + std::cout << " exp weight=" << atoll(senc) << std::endl; + std::cout << " encoded weight=" << wt_encode << std::endl; +#endif + return wt_encode; +} diff --git a/Event/EventTPCnv/src/EventIDCnv_p1.cxx b/Event/EventTPCnv/src/EventIDCnv_p1.cxx index 855aa41f489e77d4fdb08dd85fd5c4a046689665..af2f2b20feeeaa3e2f1f0ea2838bd53af30b3670 100644 --- a/Event/EventTPCnv/src/EventIDCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventIDCnv_p1.cxx @@ -2,37 +2,58 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventID.h" -#undef private -#undef protected - #include "EventTPCnv/EventIDCnv_p1.h" +#include "CxxUtils/make_unique.h" + +void EventIDCnv_p1::transToPers(const EventID* trans, EventID_p1* pers, MsgStream &log) +{ + const EventIDCnv_p1* cthis = this; + cthis->transToPers (trans, pers, log); +} + +void EventIDCnv_p1::transToPers(const EventID* trans, EventID_p1* pers, MsgStream &) const { + pers->m_run_number = trans->run_number(); + pers->m_event_number = trans->event_number(); + pers->m_time_stamp = trans->time_stamp(); + pers->m_time_stamp_ns_offset = trans->time_stamp_ns_offset(); + pers->m_lumiBlock = trans->lumi_block(); + pers->m_bunch_crossing_id = trans->bunch_crossing_id(); + pers->m_detector_mask0 = trans->detector_mask0(); + pers->m_detector_mask1 = trans->detector_mask1(); + pers->m_detector_mask2 = trans->detector_mask2(); + pers->m_detector_mask3 = trans->detector_mask3(); +} + +void EventIDCnv_p1::persToTrans(const EventID_p1* pers, EventID* trans, MsgStream &log) +{ + const EventIDCnv_p1* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void EventIDCnv_p1::persToTrans(const EventID_p1* pers, EventID* trans, MsgStream &) const { + trans->set_run_number (pers->m_run_number); + trans->set_event_number (pers->m_event_number); + trans->set_time_stamp (pers->m_time_stamp); + trans->set_time_stamp_ns_offset (pers->m_time_stamp_ns_offset); + trans->set_lumi_block (pers->m_lumiBlock); + trans->set_bunch_crossing_id (pers->m_bunch_crossing_id); + trans->set_detector_mask (pers->m_detector_mask0, + pers->m_detector_mask1, + pers->m_detector_mask2, + pers->m_detector_mask3); +} -void EventIDCnv_p1::transToPers(const EventID* trans, EventID_p1* pers, MsgStream &) { - pers->m_run_number = trans->m_run_number; - pers->m_event_number = trans->m_event_number; - pers->m_time_stamp = trans->m_time_stamp; - pers->m_time_stamp_ns_offset = trans->m_time_stamp_ns_offset; - pers->m_lumiBlock = trans->m_lumiBlock; - pers->m_bunch_crossing_id = trans->m_bunch_crossing_id; - pers->m_detector_mask0 = trans->m_detector_mask0; - pers->m_detector_mask1 = trans->m_detector_mask1; - pers->m_detector_mask2 = trans->m_detector_mask2; - pers->m_detector_mask3 = trans->m_detector_mask3; +EventID* EventIDCnv_p1::createTransient (const EventID_p1* persObj, MsgStream& log) +{ + const EventIDCnv_p1* cthis = this; + return cthis->createTransient (persObj, log); } -void EventIDCnv_p1::persToTrans(const EventID_p1* pers, EventID* trans, MsgStream &) { - trans->m_run_number = pers->m_run_number; - trans->m_event_number = pers->m_event_number; - trans->m_time_stamp = pers->m_time_stamp; - trans->m_time_stamp_ns_offset = pers->m_time_stamp_ns_offset; - trans->m_lumiBlock = pers->m_lumiBlock; - trans->m_bunch_crossing_id = pers->m_bunch_crossing_id; - trans->m_detector_mask0 = pers->m_detector_mask0; - trans->m_detector_mask1 = pers->m_detector_mask1; - trans->m_detector_mask2 = pers->m_detector_mask2; - trans->m_detector_mask3 = pers->m_detector_mask3; +EventID* EventIDCnv_p1::createTransient (const EventID_p1* persObj, MsgStream& log) const +{ + auto trans = CxxUtils::make_unique<EventID>(); + persToTrans(persObj, trans.get(), log); + return(trans.release()); } diff --git a/Event/EventTPCnv/src/EventIDCnv_p2.cxx b/Event/EventTPCnv/src/EventIDCnv_p2.cxx index 0cc27a1cfbca49c2ffeb2575134b91e62003da24..4937f16b769dce8da771f1f7a8dc3444a5b47dbd 100644 --- a/Event/EventTPCnv/src/EventIDCnv_p2.cxx +++ b/Event/EventTPCnv/src/EventIDCnv_p2.cxx @@ -2,37 +2,33 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventID.h" -#undef private -#undef protected - #include "EventTPCnv/EventIDCnv_p2.h" -void EventIDCnv_p2::persToTrans(std::vector<unsigned int>::const_iterator &i, EventID* trans) { - trans->m_run_number = (*i); ++i; - trans->m_event_number = (*i); ++i; - trans->m_time_stamp = (*i); ++i; - trans->m_time_stamp_ns_offset = (*i); ++i; - trans->m_lumiBlock = (*i); ++i; - trans->m_bunch_crossing_id = (*i); ++i; - trans->m_detector_mask0 = (*i); ++i; - trans->m_detector_mask1 = (*i); ++i; +void EventIDCnv_p2::persToTrans(std::vector<unsigned int>::const_iterator &i, EventID* trans) const { + trans->set_run_number (*i); ++i; + trans->set_event_number (*i); ++i; + trans->set_time_stamp (*i); ++i; + trans->set_time_stamp_ns_offset (*i); ++i; + trans->set_lumi_block (*i); ++i; + trans->set_bunch_crossing_id (*i); ++i; + EventID::number_type detector_mask0 = (*i); ++i; + EventID::number_type detector_mask1 = (*i); ++i; + trans->set_detector_mask (detector_mask0, detector_mask1); // std::cout<<"persToTrans of EventID \t"<<trans->m_event_number<<std::endl; } -void EventIDCnv_p2::transToPers(const EventID* /*trans*/, std::vector<unsigned int>& /*pers*/) { +void EventIDCnv_p2::transToPers(const EventID* trans, std::vector<unsigned int>& pers) const { // Deprecated - writing out with _p1 RDS 2013/03 - // pers.push_back(trans->m_run_number); - // pers.push_back(trans->m_event_number); - // pers.push_back(trans->m_time_stamp); - // pers.push_back(trans->m_time_stamp_ns_offset); - // pers.push_back(trans->m_lumiBlock); - // pers.push_back(trans->m_bunch_crossing_id); - // pers.push_back(trans->m_detector_mask0); - // pers.push_back(trans->m_detector_mask1); - // // std::cout<<"transToPers of EventID \t"<<trans->m_event_number<<std::endl; + pers.push_back(trans->run_number()); + pers.push_back(trans->event_number()); + pers.push_back(trans->time_stamp()); + pers.push_back(trans->time_stamp_ns_offset()); + pers.push_back(trans->lumi_block()); + pers.push_back(trans->bunch_crossing_id()); + pers.push_back(trans->detector_mask0()); + pers.push_back(trans->detector_mask1()); + // std::cout<<"transToPers of EventID \t"<<trans->m_event_number<<std::endl; } diff --git a/Event/EventTPCnv/src/EventInfoCnv_p1.cxx b/Event/EventTPCnv/src/EventInfoCnv_p1.cxx index 2f18dd229d314191fd2b231ca77471718070d259..2fc8b16195bc7d376bcc865d19621fd5204ae85e 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p1.cxx @@ -2,13 +2,8 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventInfo.h" #include "EventInfo/EventType.h" -#undef private -#undef protected - #include "EventInfo/EventID.h" #include "EventInfo/TriggerInfo.h" @@ -18,51 +13,67 @@ #include "EventTPCnv/TriggerInfoCnv_p1.h" #include <math.h> -static EventIDCnv_p1 idConv; -static EventTypeCnv_p1 typeConv; -static TriggerInfoCnv_p1 trigInfoCnv; +static const EventIDCnv_p1 idConv; +static const EventTypeCnv_p1 typeConv; +static const TriggerInfoCnv_p1 trigInfoCnv; + +void EventInfoCnv_p1::transToPers(const EventInfo* trans, EventInfo_p1* pers, MsgStream &log) +{ + const EventInfoCnv_p1* cthis = this; + cthis->transToPers (trans, pers, log); +} -void EventInfoCnv_p1::transToPers(const EventInfo* trans, EventInfo_p1* pers, MsgStream &log) { - idConv.transToPers(trans->m_event_ID, &pers->m_event_ID, log); - typeConv.transToPers(trans->m_event_type, &pers->m_event_type, log); - if( trans->m_trigger_info ) { - pers->m_trigger_info = trigInfoCnv.createPersistent(trans->m_trigger_info, log); +void EventInfoCnv_p1::transToPers(const EventInfo* trans, EventInfo_p1* pers, MsgStream &log) const { + idConv.transToPers(trans->event_ID(), &pers->m_event_ID, log); + typeConv.transToPers(trans->event_type(), &pers->m_event_type, log); + if( trans->trigger_info() ) { + pers->m_trigger_info = trigInfoCnv.createPersistent(trans->trigger_info(), log); } } -void EventInfoCnv_p1::persToTrans(const EventInfo_p1* pers, EventInfo* trans, MsgStream &log) { - delete trans->m_event_ID; - trans->m_event_ID = idConv.createTransient(&pers->m_event_ID, log); - delete trans->m_event_type; - trans->m_event_type = typeConv.createTransient(&pers->m_event_type, log); +void EventInfoCnv_p1::persToTrans(const EventInfo_p1* pers, EventInfo* trans, MsgStream &log) +{ + const EventInfoCnv_p1* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void EventInfoCnv_p1::persToTrans(const EventInfo_p1* pers, EventInfo* trans, MsgStream &log) const { + trans->setEventID (idConv.createTransient(&pers->m_event_ID, log)); + EventType* event_type = typeConv.createTransient(&pers->m_event_type, log); if( pers->m_trigger_info) { - delete trans->m_trigger_info; - trans->m_trigger_info = trigInfoCnv.createTransient(pers->m_trigger_info, log); + trans->setTriggerInfo (trigInfoCnv.createTransient(pers->m_trigger_info, log)); // Fill MC event weight in transient EventType from persistent // TriggerInfo. This is only needed for MC events: if the // weight is zero, and TriggerInfo exists - was stored at end // of eventFilterInfo - static double MIN_WEIGHT = -1.0e+6; - static double MAX_WEIGHT = +1.0e+6; - static double BIN_WIDTH( (MAX_WEIGHT - MIN_WEIGHT) / + static const double MIN_WEIGHT = -1.0e+6; + static const double MAX_WEIGHT = +1.0e+6; + static const double BIN_WIDTH( (MAX_WEIGHT - MIN_WEIGHT) / std::numeric_limits<unsigned int>::max() ); - if (trans->m_event_type->mc_event_weight() == 0 && - trans->m_trigger_info->eventFilterInfo().size()) { - double weight = (MIN_WEIGHT + BIN_WIDTH * (double(trans->m_trigger_info->eventFilterInfo().back()) + 0.5)); + if (event_type->mc_event_weight() == 0 && + trans->trigger_info()->eventFilterInfo().size()) { + double weight = (MIN_WEIGHT + BIN_WIDTH * (double(trans->trigger_info()->eventFilterInfo().back()) + 0.5)); if (fabs(weight - 0.999775) < 0.0001) weight = 1.0; else if (fabs(weight + 0.999775) < 0.0001 ) weight = -1.0; - trans->m_event_type->set_mc_event_weight(weight); + event_type->set_mc_event_weight(weight); //trans->m_event_type->m_mc_event_weight = trans->m_trigger_info->eventFilterInfo().back(); } } + trans->setEventType (event_type); } // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p1::createTransient( const EventInfo_p1* persObj, MsgStream &log) { - std::auto_ptr<EventInfo> trans( new EventInfo(0,0,0) ); +EventInfo* EventInfoCnv_p1::createTransient( const EventInfo_p1* persObj, MsgStream &log) +{ + const EventInfoCnv_p1* cthis = this; + return cthis->createTransient (persObj, log); +} + +EventInfo* EventInfoCnv_p1::createTransient( const EventInfo_p1* persObj, MsgStream &log) const { + std::unique_ptr<EventInfo> trans( new EventInfo(0,0,0) ); persToTrans(persObj, trans.get(), log); return(trans.release()); } diff --git a/Event/EventTPCnv/src/EventInfoCnv_p2.cxx b/Event/EventTPCnv/src/EventInfoCnv_p2.cxx index 4ac15b6189894a264d9a43b3881269fc965da46a..1867250544c296b3e799d3c38e0fa74b810ab2bc 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p2.cxx @@ -2,12 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventInfo.h" -#undef private -#undef protected - #include "EventInfo/EventID.h" #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" @@ -18,40 +13,56 @@ #include "EventTPCnv/TriggerInfoCnv_p2.h" -static EventIDCnv_p1 idConv; -static EventTypeCnv_p1 typeConv; -static TriggerInfoCnv_p2 trigInfoCnv; +static const EventIDCnv_p1 idConv; +static const EventTypeCnv_p1 typeConv; +static const TriggerInfoCnv_p2 trigInfoCnv; + +void EventInfoCnv_p2::transToPers(const EventInfo* trans, EventInfo_p2* pers, MsgStream &log) +{ + const EventInfoCnv_p2* cthis = this; + cthis->transToPers (trans, pers, log); +} -void EventInfoCnv_p2::transToPers(const EventInfo* trans, EventInfo_p2* pers, MsgStream &log) { - idConv.transToPers(trans->m_event_ID, &pers->m_event_ID, log); - typeConv.transToPers(trans->m_event_type, &pers->m_event_type, log); - if( trans->m_trigger_info ) { - trigInfoCnv.transToPers(trans->m_trigger_info, &pers->m_trigger_info, log); +void EventInfoCnv_p2::transToPers(const EventInfo* trans, EventInfo_p2* pers, MsgStream &log) const { + idConv.transToPers(trans->event_ID(), &pers->m_event_ID, log); + typeConv.transToPers(trans->event_type(), &pers->m_event_type, log); + if( trans->trigger_info() ) { + trigInfoCnv.transToPers(trans->trigger_info(), &pers->m_trigger_info, log); } // Don't write out event flags if they are all == 0 - if (trans->m_event_flags.size()) { + const std::vector<unsigned int>& event_flags = trans->eventFlags(); + if (event_flags.size()) { bool copy = false; - for (unsigned int i = 0; i < trans->m_event_flags.size(); ++i) { - if (trans->m_event_flags[1]) { copy = true; break; } + for (unsigned int i = 0; i < event_flags.size(); ++i) { + if (event_flags[i]) { copy = true; break; } } - if (copy) pers->m_event_flags = trans->m_event_flags; + if (copy) pers->m_event_flags = event_flags; } } -void EventInfoCnv_p2::persToTrans(const EventInfo_p2* pers, EventInfo* trans, MsgStream &log) { - delete trans->m_event_ID; - trans->m_event_ID = idConv.createTransient(&pers->m_event_ID, log); - delete trans->m_event_type; - trans->m_event_type = typeConv.createTransient(&pers->m_event_type, log); - delete trans->m_trigger_info; - trans->m_trigger_info = trigInfoCnv.createTransient(&pers->m_trigger_info, log); +void EventInfoCnv_p2::persToTrans(const EventInfo_p2* pers, EventInfo* trans, MsgStream &log) +{ + const EventInfoCnv_p2* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void EventInfoCnv_p2::persToTrans(const EventInfo_p2* pers, EventInfo* trans, MsgStream &log) const { + trans->setEventID (idConv.createTransient(&pers->m_event_ID, log)); + trans->setEventType (typeConv.createTransient(&pers->m_event_type, log)); + trans->setTriggerInfo (trigInfoCnv.createTransient(&pers->m_trigger_info, log)); if (pers->m_event_flags.size()) trans->m_event_flags = pers->m_event_flags; } // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p2::createTransient( const EventInfo_p2* persObj, MsgStream &log) { - std::auto_ptr<EventInfo> trans( new EventInfo(0,0,0) ); +EventInfo* EventInfoCnv_p2::createTransient( const EventInfo_p2* persObj, MsgStream &log) +{ + const EventInfoCnv_p2* cthis = this; + return cthis->createTransient (persObj, log); +} + +EventInfo* EventInfoCnv_p2::createTransient( const EventInfo_p2* persObj, MsgStream &log) const { + std::unique_ptr<EventInfo> trans( new EventInfo(0,0,0) ); persToTrans(persObj, trans.get(), log); return(trans.release()); } diff --git a/Event/EventTPCnv/src/EventInfoCnv_p3.cxx b/Event/EventTPCnv/src/EventInfoCnv_p3.cxx index c72818ff4d152346f6ba0033cbde9ff64d37a07e..4670b25d0278048885654451d2af08a7eb79fd18 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p3.cxx @@ -2,12 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventInfo.h" -#undef private -#undef protected - #include "EventInfo/EventID.h" #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" @@ -17,12 +12,19 @@ #include "EventTPCnv/EventTypeCnv_p2.h" #include "EventTPCnv/TriggerInfoCnv_p3.h" -static EventIDCnv_p2 idConv; -static EventTypeCnv_p2 typeConv; -static TriggerInfoCnv_p3 trigInfoCnv; +static const EventIDCnv_p2 idConv; +static const EventTypeCnv_p2 typeConv; +static const TriggerInfoCnv_p3 trigInfoCnv; + +void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, MsgStream &log) +{ + const EventInfoCnv_p3* cthis = this; + return cthis->persToTrans (pers, trans, log); +} -void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, MsgStream &/* log */) { +void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, MsgStream &/* log */) const { + *trans = EventInfo(); std::vector<unsigned int>::const_iterator i= pers->m_AllTheData.begin(); int vers = (*i); i++; @@ -30,11 +32,18 @@ void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, Ms bool bugcompat = (vers&(1<<24)) == 0; - idConv.persToTrans (i, trans->m_event_ID); - typeConv.persToTrans(i, trans->m_event_type, (vers>>6)&0x003f, bugcompat ); + EventID *t = new EventID(); + idConv.persToTrans(i, t); + trans->setEventID (t); + + EventType *et = new EventType(); + typeConv.persToTrans(i, et, (vers>>6)&0x003f, bugcompat ); + trans->setEventType (et);; if ((vers>>12)&0x003f){ // if there is trigger info - trigInfoCnv.persToTrans(i, trans->m_trigger_info, bugcompat); + TriggerInfo *ti = new TriggerInfo(); + trigInfoCnv.persToTrans(i, ti, bugcompat); + trans->setTriggerInfo (ti); } else *trans->m_trigger_info = TriggerInfo(); @@ -53,7 +62,14 @@ void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, Ms } -void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, MsgStream &/* log */) { +void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, MsgStream &log) +{ + const EventInfoCnv_p3* cthis = this; + cthis->transToPers (trans, pers, log); +} + +void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, MsgStream &/* log */) const +{ // std::cout<<"transToPers of EventInfo ..."<<std::endl; pers->m_AllTheData.reserve(34); @@ -97,8 +113,14 @@ void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, Ms // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p3::createTransient( const EventInfo_p3* persObj, MsgStream &log) { - std::auto_ptr<EventInfo> trans( new EventInfo() ); +EventInfo* EventInfoCnv_p3::createTransient( const EventInfo_p3* persObj, MsgStream &log) +{ + const EventInfoCnv_p3* cthis = this; + return cthis->createTransient (persObj, log); +} + +EventInfo* EventInfoCnv_p3::createTransient( const EventInfo_p3* persObj, MsgStream &log) const { + std::unique_ptr<EventInfo> trans( new EventInfo() ); persToTrans(persObj, trans.get(), log); return(trans.release()); } diff --git a/Event/EventTPCnv/src/EventInfoCnv_p4.cxx b/Event/EventTPCnv/src/EventInfoCnv_p4.cxx index 9e59248508ac3403747d13d11aca00c5a41d18f3..4b47b88b751c36e8f8d6b8b2a1224f0858e3f52a 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p4.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p4.cxx @@ -2,12 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventInfo.h" -#undef private -#undef protected - #include "EventInfo/EventID.h" #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" @@ -18,12 +13,18 @@ #include "EventTPCnv/TriggerInfoCnv_p2.h" -static EventIDCnv_p1 idConv; -static EventTypeCnv_p3 typeConv; -static TriggerInfoCnv_p2 trigInfoCnv; +static const EventIDCnv_p1 idConv; +static const EventTypeCnv_p3 typeConv; +static const TriggerInfoCnv_p2 trigInfoCnv; + +void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, MsgStream &log) +{ + const EventInfoCnv_p4* cthis = this; + cthis->transToPers (trans, pers, log); +} -void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, MsgStream &log) { +void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, MsgStream &log) const { idConv.transToPers(trans->m_event_ID, &pers->m_event_ID, log); typeConv.transToPers(trans->m_event_type, &pers->m_event_type, log); if( trans->m_trigger_info ) { @@ -39,7 +40,13 @@ void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, Ms } } -void EventInfoCnv_p4::persToTrans(const EventInfo_p4* pers, EventInfo* trans, MsgStream &log) { +void EventInfoCnv_p4::persToTrans(const EventInfo_p4* pers, EventInfo* trans, MsgStream &log) +{ + const EventInfoCnv_p4* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void EventInfoCnv_p4::persToTrans(const EventInfo_p4* pers, EventInfo* trans, MsgStream &log) const { delete trans->m_event_ID; trans->m_event_ID = idConv.createTransient(&pers->m_event_ID, log); delete trans->m_event_type; @@ -50,8 +57,15 @@ void EventInfoCnv_p4::persToTrans(const EventInfo_p4* pers, EventInfo* trans, Ms } // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p4::createTransient( const EventInfo_p4* persObj, MsgStream &log) { - std::auto_ptr<EventInfo> trans( new EventInfo(0,0,0) ); +EventInfo* EventInfoCnv_p4::createTransient( const EventInfo_p4* persObj, MsgStream &log) const { + std::unique_ptr<EventInfo> trans( new EventInfo(0,0,0) ); persToTrans(persObj, trans.get(), log); return(trans.release()); } + +EventInfo* EventInfoCnv_p4::createTransient( const EventInfo_p4* persObj, MsgStream &log) +{ + const EventInfoCnv_p4* cthis = this; + return cthis->createTransient (persObj, log); +} + diff --git a/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx b/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx index 48af3f741ae18338fed69a66a99b69ebae3fd010..46501c183e00b46101a847a3a728e44ccedbcbdf 100644 --- a/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx @@ -8,41 +8,40 @@ * $Id: EventStreamInfoCnv_p1.cxx,v 1.4 2009-03-18 17:40:57 gemmeren Exp $ **/ -#define private public -#define protected public #include "EventInfo/EventStreamInfo.h" -#undef private -#undef protected - #include "EventInfo/EventType.h" #include "EventTPCnv/EventStreamInfoCnv_p1.h" #include "EventTPCnv/EventTypeCnv_p1.h" -static EventTypeCnv_p1 typeConv; +static const EventTypeCnv_p1 typeConv; void EventStreamInfoCnv_p1::persToTrans(const EventStreamInfo_p1* pers, EventStreamInfo* trans, MsgStream &log) { - trans->m_numberOfEvents = pers->m_numberOfEvents; - trans->m_runNumbers = pers->m_runNumbers; - trans->m_lumiBlockNumbers = pers->m_lumiBlockNumbers; - trans->m_processingTags = pers->m_processingTags; - trans->m_itemList = pers->m_itemList; - trans->m_eventTypes.clear(); + *trans = EventStreamInfo(); + trans->addEvent (pers->m_numberOfEvents); + for (unsigned int rn : pers->m_runNumbers) + trans->insertRunNumber (rn); + for (unsigned int lbn : pers->m_lumiBlockNumbers) + trans->insertLumiBlockNumber (lbn); + for (const std::string& tag : pers->m_processingTags) + trans->insertProcessingTag (tag); + for (const std::pair<CLID, std::string>& p : pers->m_itemList) + trans->insertItemList (p.first, p.second); for (const EventType_p1& ptype : pers->m_eventTypes) { std::unique_ptr<EventType> p (typeConv.createTransient(&ptype, log)); - trans->m_eventTypes.insert(*p); + trans->insertEventType(*p); } } void EventStreamInfoCnv_p1::transToPers(const EventStreamInfo* trans, EventStreamInfo_p1* pers, MsgStream &log) { - pers->m_numberOfEvents = trans->m_numberOfEvents; - pers->m_runNumbers = trans->m_runNumbers; - pers->m_lumiBlockNumbers = trans->m_lumiBlockNumbers; - pers->m_processingTags = trans->m_processingTags; - pers->m_itemList = trans->m_itemList; + pers->m_numberOfEvents = trans->getNumberOfEvents(); + pers->m_runNumbers = trans->getRunNumbers(); + pers->m_lumiBlockNumbers = trans->getLumiBlockNumbers(); + pers->m_processingTags = trans->getProcessingTags(); + pers->m_itemList = trans->getItemList(); pers->m_eventTypes.clear(); - for (const EventType& ttype : trans->m_eventTypes) + for (const EventType& ttype : trans->getEventTypes()) { EventType_p1 ptype; typeConv.transToPers(&ttype, &ptype, log); diff --git a/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx b/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx index ee9e54a6b7c49d5e1b01c52d53cba6ff0bab5348..4bf9b5ceaf1c63d44dd903132d6c428c1f21c8a1 100644 --- a/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx @@ -8,68 +8,50 @@ * $Id: EventStreamInfoCnv_p2.cxx,v 1.1 2009-03-18 17:42:45 gemmeren Exp $ **/ -#define private public -#define protected public #include "EventInfo/EventStreamInfo.h" -#undef private -#undef protected - #include "EventInfo/EventType.h" #include "EventTPCnv/EventStreamInfoCnv_p2.h" #include "EventTPCnv/EventTypeCnv_p1.h" -static EventTypeCnv_p1 typeConv; +static const EventTypeCnv_p1 typeConv; void EventStreamInfoCnv_p2::persToTrans(const EventStreamInfo_p2* pers, EventStreamInfo* trans, MsgStream &log) { - trans->m_numberOfEvents = pers->m_numberOfEvents; - - trans->m_runNumbers.clear(); - trans->m_runNumbers.insert (pers->m_runNumbers.begin(), - pers->m_runNumbers.end()); - - trans->m_lumiBlockNumbers.clear(); - trans->m_lumiBlockNumbers.insert (pers->m_lumiBlockNumbers.begin(), - pers->m_lumiBlockNumbers.end()); - - trans->m_processingTags.clear(); - trans->m_processingTags.insert (pers->m_processingTags.begin(), - pers->m_processingTags.end()); - - trans->m_itemList.clear(); - trans->m_itemList.insert (pers->m_itemList.begin(), - pers->m_itemList.end()); - - trans->m_eventTypes.clear(); - std::set<EventType>::iterator lastType = trans->m_eventTypes.begin(); - for (const EventType_p1& ptype : pers->m_eventTypes) { + *trans = EventStreamInfo(); + trans->addEvent (pers->m_numberOfEvents); + for (unsigned int rn : pers->m_runNumbers) + trans->insertRunNumber (rn); + for (unsigned int lbn : pers->m_lumiBlockNumbers) + trans->insertLumiBlockNumber (lbn); + for (const std::string& tag : pers->m_processingTags) + trans->insertProcessingTag (tag); + for (const std::pair<CLID, std::string>& p : pers->m_itemList) + trans->insertItemList (p.first, p.second); + for (const EventType_p1& ptype : pers->m_eventTypes) + { std::unique_ptr<EventType> p (typeConv.createTransient(&ptype, log)); - lastType = trans->m_eventTypes.insert(lastType, *p); + trans->insertEventType(*p); } } void EventStreamInfoCnv_p2::transToPers(const EventStreamInfo* trans, EventStreamInfo_p2* pers, MsgStream &log) { - pers->m_numberOfEvents = trans->m_numberOfEvents; + pers->m_numberOfEvents = trans->getNumberOfEvents(); - pers->m_runNumbers.reserve(trans->m_runNumbers.size()); - pers->m_runNumbers.assign (trans->m_runNumbers.begin(), - trans->m_runNumbers.end()); + pers->m_runNumbers.assign (trans->getRunNumbers().begin(), + trans->getRunNumbers().end()); - pers->m_lumiBlockNumbers.reserve(trans->m_lumiBlockNumbers.size()); - pers->m_lumiBlockNumbers.assign (trans->m_lumiBlockNumbers.begin(), - trans->m_lumiBlockNumbers.end()); + pers->m_lumiBlockNumbers.assign (trans->getLumiBlockNumbers().begin(), + trans->getLumiBlockNumbers().end()); - pers->m_processingTags.reserve(trans->m_processingTags.size()); - pers->m_processingTags.assign (trans->m_processingTags.begin(), - trans->m_processingTags.end()); + pers->m_processingTags.assign (trans->getProcessingTags().begin(), + trans->getProcessingTags().end()); - pers->m_itemList.reserve(trans->m_itemList.size()); - pers->m_itemList.assign (trans->m_itemList.begin(), - trans->m_itemList.end()); + pers->m_itemList.assign (trans->getItemList().begin(), + trans->getItemList().end()); - pers->m_eventTypes.reserve(trans->m_eventTypes.size()); + pers->m_eventTypes.reserve(trans->getEventTypes().size()); pers->m_eventTypes.clear(); - for (const EventType& ttype : trans->m_eventTypes) { + for (const EventType& ttype : trans->getEventTypes()) { EventType_p1 ptype; typeConv.transToPers(&ttype, &ptype, log); pers->m_eventTypes.push_back(ptype); diff --git a/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx b/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx index 8b979767a2fdea4aadd0c3d009f90349c57b3895..4113a2f159558f046c99eef68217da6d861c7be1 100644 --- a/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx @@ -8,68 +8,51 @@ * $Id: EventStreamInfoCnv_p3.cxx,v 1.1 2009-03-18 17:42:45 gemmeren Exp $ **/ -#define private public -#define protected public #include "EventInfo/EventStreamInfo.h" -#undef private -#undef protected - #include "EventInfo/EventType.h" #include "EventTPCnv/EventStreamInfoCnv_p3.h" #include "EventTPCnv/EventTypeCnv_p3.h" -static EventTypeCnv_p3 typeConv; +static const EventTypeCnv_p3 typeConv; void EventStreamInfoCnv_p3::persToTrans(const EventStreamInfo_p3* pers, EventStreamInfo* trans, MsgStream &log) { - trans->m_numberOfEvents = pers->m_numberOfEvents; - - trans->m_runNumbers.clear(); - trans->m_runNumbers.insert (pers->m_runNumbers.begin(), - pers->m_runNumbers.end()); - - trans->m_lumiBlockNumbers.clear(); - trans->m_lumiBlockNumbers.insert (pers->m_lumiBlockNumbers.begin(), - pers->m_lumiBlockNumbers.end()); - - trans->m_processingTags.clear(); - trans->m_processingTags.insert (pers->m_processingTags.begin(), - pers->m_processingTags.end()); - - trans->m_itemList.clear(); - trans->m_itemList.insert (pers->m_itemList.begin(), - pers->m_itemList.end()); - - trans->m_eventTypes.clear(); - std::set<EventType>::iterator lastType = trans->m_eventTypes.begin(); - for (const EventType_p3& ptype : pers->m_eventTypes) { + *trans = EventStreamInfo(); + trans->addEvent (pers->m_numberOfEvents); + + for (unsigned int rn : pers->m_runNumbers) + trans->insertRunNumber (rn); + for (unsigned int lbn : pers->m_lumiBlockNumbers) + trans->insertLumiBlockNumber (lbn); + for (const std::string& tag : pers->m_processingTags) + trans->insertProcessingTag (tag); + for (const std::pair<CLID, std::string>& p : pers->m_itemList) + trans->insertItemList (p.first, p.second); + for (const EventType_p3& ptype : pers->m_eventTypes) + { std::unique_ptr<EventType> p (typeConv.createTransient(&ptype, log)); - lastType = trans->m_eventTypes.insert(lastType, *p); + trans->insertEventType(*p); } } void EventStreamInfoCnv_p3::transToPers(const EventStreamInfo* trans, EventStreamInfo_p3* pers, MsgStream &log) { - pers->m_numberOfEvents = trans->m_numberOfEvents; + pers->m_numberOfEvents = trans->getNumberOfEvents(); - pers->m_runNumbers.reserve(trans->m_runNumbers.size()); - pers->m_runNumbers.assign (trans->m_runNumbers.begin(), - trans->m_runNumbers.end()); + pers->m_runNumbers.assign (trans->getRunNumbers().begin(), + trans->getRunNumbers().end()); - pers->m_lumiBlockNumbers.reserve(trans->m_lumiBlockNumbers.size()); - pers->m_lumiBlockNumbers.assign (trans->m_lumiBlockNumbers.begin(), - trans->m_lumiBlockNumbers.end()); + pers->m_lumiBlockNumbers.assign (trans->getLumiBlockNumbers().begin(), + trans->getLumiBlockNumbers().end()); - pers->m_processingTags.reserve(trans->m_processingTags.size()); - pers->m_processingTags.assign (trans->m_processingTags.begin(), - trans->m_processingTags.end()); + pers->m_processingTags.assign (trans->getProcessingTags().begin(), + trans->getProcessingTags().end()); - pers->m_itemList.reserve(trans->m_itemList.size()); - pers->m_itemList.assign (trans->m_itemList.begin(), - trans->m_itemList.end()); + pers->m_itemList.assign (trans->getItemList().begin(), + trans->getItemList().end()); - pers->m_eventTypes.reserve(trans->m_eventTypes.size()); + pers->m_eventTypes.reserve(trans->getEventTypes().size()); pers->m_eventTypes.clear(); - for (const EventType& ttype : trans->m_eventTypes) { + for (const EventType& ttype : trans->getEventTypes()) { EventType_p3 ptype; typeConv.transToPers(&ttype, &ptype, log); pers->m_eventTypes.push_back(ptype); diff --git a/Event/EventTPCnv/src/EventTypeCnv_p1.cxx b/Event/EventTPCnv/src/EventTypeCnv_p1.cxx index 731f54667dbeef49066a71c17966bfc1dbbf6b8c..1e562c26c8e3f5e203ef1200ac2d5d9baccb09f2 100644 --- a/Event/EventTPCnv/src/EventTypeCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventTypeCnv_p1.cxx @@ -2,23 +2,52 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventType.h" -#undef private -#undef protected - #include "EventTPCnv/EventTypeCnv_p1.h" +#include "CxxUtils/make_unique.h" + +void EventTypeCnv_p1::transToPers(const EventType* trans, EventType_p1* pers, MsgStream &log) +{ + const EventTypeCnv_p1* cthis = this; + cthis->transToPers (trans, pers, log); +} -void EventTypeCnv_p1::transToPers(const EventType* /*trans*/, EventType_p1* /*pers*/, MsgStream &) { + +void EventTypeCnv_p1::transToPers(const EventType* trans, EventType_p1* pers, MsgStream &) const { // Deprecated - writing out with _p3 RDS 2013/10 - // pers->m_user_type = trans->m_user_type; - // pers->m_bit_mask = trans->m_bit_mask; - // pers->m_mc_event_weight = trans->m_mc_event_weights[0]; + pers->m_user_type = trans->user_type_raw(); + pers->m_bit_mask = trans->bit_mask(); + pers->m_mc_event_weight = 0; + if (trans->n_mc_event_weights() > 0) + pers->m_mc_event_weight = trans->mc_event_weight(0); +} + +void EventTypeCnv_p1::persToTrans(const EventType_p1* pers, EventType* trans, MsgStream &log) +{ + const EventTypeCnv_p1* cthis = this; + cthis->persToTrans (pers, trans, log); } -void EventTypeCnv_p1::persToTrans(const EventType_p1* pers, EventType* trans, MsgStream &) { - trans->m_user_type = pers->m_user_type; - trans->m_bit_mask = pers->m_bit_mask; - trans->m_mc_event_weights[0] = (float)pers->m_mc_event_weight; +void EventTypeCnv_p1::persToTrans(const EventType_p1* pers, EventType* trans, MsgStream &) const { + *trans = EventType(); + trans->set_user_type (pers->m_user_type); + for (size_t i = 0; i < pers->m_bit_mask.size(); i++) { + if (pers->m_bit_mask[i]) + trans->add_type (i); + } + trans->set_mc_event_weight ((float)pers->m_mc_event_weight, 0, 1); } + +EventType* EventTypeCnv_p1::createTransient (const EventType_p1* persObj, MsgStream& log) +{ + const EventTypeCnv_p1* cthis = this; + return cthis->createTransient (persObj, log); +} + +EventType* EventTypeCnv_p1::createTransient (const EventType_p1* persObj, MsgStream& log) const +{ + auto trans = CxxUtils::make_unique<EventType>(); + persToTrans(persObj, trans.get(), log); + return(trans.release()); +} + diff --git a/Event/EventTPCnv/src/EventTypeCnv_p2.cxx b/Event/EventTPCnv/src/EventTypeCnv_p2.cxx index d38438b1df638cbb1cb2119374a0f035c0ed26b4..bc8f0b79242903a4471b827ae9ffab93440dc619 100644 --- a/Event/EventTPCnv/src/EventTypeCnv_p2.cxx +++ b/Event/EventTPCnv/src/EventTypeCnv_p2.cxx @@ -2,40 +2,51 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventType.h" -#undef private -#undef protected #include <iostream> #include "EventTPCnv/EventTypeCnv_p2.h" #include "EventTPCnv/vectorize.h" #include "EventTPCnv/AtlasMcWeight.h" -void EventTypeCnv_p2::persToTrans(std::vector<unsigned int>::const_iterator &i, EventType* trans, int version, bool bugcompat){ +void EventTypeCnv_p2::persToTrans(std::vector<unsigned int>::const_iterator &i, EventType* trans, int version, bool bugcompat) const{ // std::cout<<"persToTrans of EventType ..."<<std::endl; - UITostr(trans->m_user_type, i, bugcompat); - UITobitmap(trans->m_bit_mask,i, bugcompat); + *trans = EventType(); + + std::string user_type; + UITostr(user_type, i, bugcompat); + trans->set_user_type (user_type); + + std::vector<bool> bit_mask; + UITobitmap(bit_mask,i, bugcompat); + for (size_t ii = 0; ii < bit_mask.size(); ii++) { + if (bit_mask[ii]) + trans->add_type (ii); + } + // we now decode here instead of in EventType - trans->m_mc_event_weights[0] = (float)AtlasMcWeight::decode((*i)); ++i; + float event_weight = (float)AtlasMcWeight::decode((*i)); ++i; + trans->set_mc_event_weight (event_weight, 0, 1); if(version>2){ - trans->m_mc_channel_number = (*i); ++i; - trans->m_mc_event_number = (*i); ++i; + trans->set_mc_channel_number (*i); ++i; + trans->set_mc_event_number (*i); ++i; } // std::cout<<"persToTrans of EventType ver: "<<version<<"\t weight:"<<trans->m_mc_event_weight<<std::endl; } -void EventTypeCnv_p2::transToPers(const EventType* /*trans*/, std::vector<unsigned int> &/*pers*/){ +void EventTypeCnv_p2::transToPers(const EventType* trans, std::vector<unsigned int> &pers) const { // Deprecated - writing out with _p3 RDS 2013/03 // // std::cout<<"transToPers of EventType ..."<<std::endl; -// strToUI(trans->m_user_type,pers); -// bitmapToUI(trans->m_bit_mask,pers); -// pers.push_back(trans->m_mc_event_weight); -// pers.push_back(trans->m_mc_channel_number); -// pers.push_back(trans->m_mc_event_number); + strToUI(trans->user_type_raw(),pers); + bitmapToUI(trans->bit_mask(),pers); + double wt = 0; + if (trans->n_mc_event_weights() > 0) + wt = trans->mc_event_weight(0); + pers.push_back(AtlasMcWeight::encode(wt)); + pers.push_back(trans->mc_channel_number()); + pers.push_back(trans->mc_event_number()); // // std::cout<<"transToPers of EventType. weight: "<<trans->m_mc_event_weight<<std::endl; } diff --git a/Event/EventTPCnv/src/EventTypeCnv_p3.cxx b/Event/EventTPCnv/src/EventTypeCnv_p3.cxx index 45ea52b8af235f666e3123c69fac2b64ffc690bb..81a41b3bdf35a60676868faf20783ea371012d07 100644 --- a/Event/EventTPCnv/src/EventTypeCnv_p3.cxx +++ b/Event/EventTPCnv/src/EventTypeCnv_p3.cxx @@ -2,26 +2,63 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/EventType.h" -#undef private -#undef protected - #include "EventTPCnv/EventTypeCnv_p3.h" +#include "CxxUtils/make_unique.h" + +void EventTypeCnv_p3::transToPers(const EventType* trans, EventType_p3* pers, MsgStream &log) +{ + const EventTypeCnv_p3* cthis = this; + cthis->transToPers (trans, pers, log); +} + +void EventTypeCnv_p3::transToPers(const EventType* trans, EventType_p3* pers, MsgStream &) const { + pers->m_bit_mask = trans->bit_mask(); + pers->m_user_type = trans->user_type_raw(); + + { + unsigned int nwt = trans->n_mc_event_weights(); + pers->m_mc_event_weights.resize (nwt); + for (unsigned int i=0; i < nwt; i++) + pers->m_mc_event_weights[i] = trans->mc_event_weight(i); + } + pers->m_mc_channel_number = trans->mc_channel_number(); + pers->m_mc_event_number = trans->mc_event_number(); +} + +void EventTypeCnv_p3::persToTrans(const EventType_p3* pers, EventType* trans, MsgStream &log) +{ + const EventTypeCnv_p3* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void EventTypeCnv_p3::persToTrans(const EventType_p3* pers, EventType* trans, MsgStream &) const { + *trans = EventType(); + + for (size_t i = 0; i < pers->m_bit_mask.size(); i++) { + if (pers->m_bit_mask[i]) + trans->add_type (i); + } + + size_t nwt = pers->m_mc_event_weights.size(); + for (size_t i = 0; i < nwt; i++) { + trans->set_mc_event_weight (pers->m_mc_event_weights[i], i, nwt); + } + + trans->set_user_type (pers->m_user_type); + trans->set_mc_channel_number (pers->m_mc_channel_number); + trans->set_mc_event_number (pers->m_mc_event_number); +} -void EventTypeCnv_p3::transToPers(const EventType* trans, EventType_p3* pers, MsgStream &) { - pers->m_bit_mask = trans->m_bit_mask; - pers->m_user_type = trans->m_user_type; - pers->m_mc_event_weights = trans->m_mc_event_weights; - pers->m_mc_channel_number = trans->m_mc_channel_number; - pers->m_mc_event_number = trans->m_mc_event_number; +EventType* EventTypeCnv_p3::createTransient (const EventType_p3* persObj, MsgStream& log) +{ + const EventTypeCnv_p3* cthis = this; + return cthis->createTransient (persObj, log); } -void EventTypeCnv_p3::persToTrans(const EventType_p3* pers, EventType* trans, MsgStream &) { - trans->m_bit_mask = pers->m_bit_mask; - trans->m_user_type = pers->m_user_type; - trans->m_mc_event_weights = pers->m_mc_event_weights; - trans->m_mc_channel_number = pers->m_mc_channel_number; - trans->m_mc_event_number = pers->m_mc_event_number; +EventType* EventTypeCnv_p3::createTransient (const EventType_p3* persObj, MsgStream& log) const +{ + auto trans = CxxUtils::make_unique<EventType>(); + persToTrans(persObj, trans.get(), log); + return(trans.release()); } diff --git a/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx b/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx index 998d9c89fb308102d07b27d3e0c0c7e00287dab2..7b734480f11fc44c573acf9a344ccfc265ddeb23 100644 --- a/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx @@ -2,12 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/MergedEventInfo.h" -#undef private -#undef protected - #include "EventInfo/EventID.h" #include "EventTPCnv/MergedEventInfoCnv_p1.h" @@ -15,16 +10,22 @@ #include "EventTPCnv/EventIDCnv_p1.h" -static EventIDCnv_p1 idConv; -static EventInfoCnv_p1 baseConv; +static const EventIDCnv_p1 idConv; +static const EventInfoCnv_p1 baseConv; void MergedEventInfoCnv_p1::transToPers(const MergedEventInfo* trans, MergedEventInfo_p1* pers, MsgStream &log) { baseConv.transToPers(trans, pers, log); - idConv.transToPers(&trans->m_newEventID, &pers->m_newEventID, log); + idConv.transToPers(trans->event_ID(), &pers->m_newEventID, log); } void MergedEventInfoCnv_p1::persToTrans(const MergedEventInfo_p1* pers, MergedEventInfo* trans, MsgStream &log) { - baseConv.persToTrans(pers, trans, log); - idConv.persToTrans(&pers->m_newEventID, &trans->m_newEventID, log); + EventInfo base; + baseConv.persToTrans(pers, &base, log); + EventID newid; + idConv.persToTrans(&pers->m_newEventID, &newid, log); + *trans = MergedEventInfo (base, + newid.run_number(), + newid.event_number(), + newid.time_stamp()); } diff --git a/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx b/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx index 6f047f240d2179e350b9d3a2480580876e18314a..2d3dd23c997df15bf8b9c63794f44beff99302ec 100644 --- a/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx @@ -2,12 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/MergedEventInfo.h" -#undef private -#undef protected - #include "EventInfo/EventID.h" #include "EventTPCnv/MergedEventInfoCnv_p2.h" @@ -15,17 +10,23 @@ #include "EventTPCnv/EventIDCnv_p2.h" -static EventIDCnv_p2 idConv; -static EventInfoCnv_p3 baseConv; +static const EventIDCnv_p2 idConv; +static const EventInfoCnv_p3 baseConv; void MergedEventInfoCnv_p2::persToTrans(const MergedEventInfo_p2* pers, MergedEventInfo* trans, MsgStream &log) { - baseConv.persToTrans(pers, trans, log); - std::vector<unsigned int>::const_iterator i=pers->m_newEventIDdata.begin(); - idConv.persToTrans(i, &trans->m_newEventID); + EventInfo base; + baseConv.persToTrans(pers, &base, log); + std::vector<unsigned int>::const_iterator i=pers->m_newEventIDdata.begin(); + EventID newid; + idConv.persToTrans(i, &newid); + *trans = MergedEventInfo (base, + newid.run_number(), + newid.event_number(), + newid.time_stamp()); } void MergedEventInfoCnv_p2::transToPers(const MergedEventInfo* trans, MergedEventInfo_p2* pers, MsgStream &log) { baseConv.transToPers(trans, pers, log); - idConv.transToPers(&trans->m_newEventID, pers->m_newEventIDdata); + idConv.transToPers(trans->event_ID(), pers->m_newEventIDdata); } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx index 0a90c55bce3d07486a3b84fe21fc2c4127b698f8..7529e0718986256976858616df24b1faee151f6b 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx @@ -2,17 +2,11 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/PileUpEventInfo.h" -#undef private -#undef protected - - #include "EventTPCnv/PileUpEventInfoCnv_p1.h" #include "EventTPCnv/EventInfoCnv_p1.h" -static EventInfoCnv_p1 evInfoConv; +static const EventInfoCnv_p1 evInfoConv; namespace { const int MODULO(100000); @@ -22,13 +16,13 @@ namespace { void PileUpEventInfoCnv_p1::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p1* pers, MsgStream &log) { evInfoConv.transToPers(trans, pers, log); - size_t sub_ev_n = trans->m_subEvents.size(); - pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); + size_t sub_ev_n = std::distance (sub_iter, trans->endSubEvt()); + pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo_p1::SubEvVect_t::iterator p_sub_iter = pers->m_subEvents.begin(); while( sub_iter!=trans->endSubEvt() ) { - short time = sub_iter->m_timeIndex.m_time; - short index = sub_iter->m_timeIndex.m_index; + short time = sub_iter->time(); + short index = sub_iter->index(); p_sub_iter->m_timeIndex = (time - MINTIME) + MODULO * index; evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); p_sub_iter++; sub_iter++; @@ -37,18 +31,20 @@ void PileUpEventInfoCnv_p1::transToPers(const PileUpEventInfo* trans, PileUpEven void PileUpEventInfoCnv_p1::persToTrans(const PileUpEventInfo_p1* pers, PileUpEventInfo* trans, MsgStream &log) { + *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); PileUpEventInfo_p1::SubEvVect_t::const_iterator p_sub_iter = pers->m_subEvents.begin(); - trans->m_subEvents.clear(); while( p_sub_iter != pers->m_subEvents.end() ) { - PileUpEventInfo::SubEvent sub_event; - sub_event.m_timeIndex.m_index = static_cast<short>( (p_sub_iter->m_timeIndex) * (1./MODULO) ); - unsigned long index = MODULO*sub_event.m_timeIndex.m_index; - sub_event.m_timeIndex.m_time = static_cast<short>( MINTIME+(p_sub_iter->m_timeIndex-index) ); - sub_event.m_timeIndex.m_type = PileUpTimeEventIndex::Unknown; - sub_event.pSubEvt = evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log); - trans->m_subEvents.push_back( sub_event ); + short index1 = static_cast<short>( (p_sub_iter->m_timeIndex)*(1./MODULO) ); + unsigned long index = MODULO*index1; + + trans->addSubEvt (static_cast<short>( MINTIME+(p_sub_iter->m_timeIndex-index) ), + //index1 + PileUpTimeEventIndex::Unknown, + std::unique_ptr<EventInfo> + (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + nullptr); p_sub_iter++; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx index 42da0ad2bb86899d46ba374e73353bd2858be98c..3d7296e28d5d5b866f5e04d42e90e37e7b21ae1c 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx @@ -2,17 +2,11 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/PileUpEventInfo.h" -#undef private -#undef protected - - #include "EventTPCnv/PileUpEventInfoCnv_p2.h" #include "EventTPCnv/EventInfoCnv_p2.h" -static EventInfoCnv_p2 evInfoConv; +static const EventInfoCnv_p2 evInfoConv; namespace { const int MODULO(100000); @@ -22,13 +16,13 @@ namespace { void PileUpEventInfoCnv_p2::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p2* pers, MsgStream &log) { evInfoConv.transToPers(trans, pers, log); - size_t sub_ev_n = trans->m_subEvents.size(); - pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); + size_t sub_ev_n = std::distance (sub_iter, trans->endSubEvt()); + pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo_p2::SubEvVect_t::iterator p_sub_iter = pers->m_subEvents.begin(); while( sub_iter!=trans->endSubEvt() ) { - short time = sub_iter->m_timeIndex.m_time; - short index = sub_iter->m_timeIndex.m_index; + short time = sub_iter->time(); + short index = sub_iter->index(); p_sub_iter->m_timeIndex = (time - MINTIME) + MODULO * index; evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); p_sub_iter++; sub_iter++; @@ -37,18 +31,20 @@ void PileUpEventInfoCnv_p2::transToPers(const PileUpEventInfo* trans, PileUpEven void PileUpEventInfoCnv_p2::persToTrans(const PileUpEventInfo_p2* pers, PileUpEventInfo* trans, MsgStream &log) { + *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); PileUpEventInfo_p2::SubEvVect_t::const_iterator p_sub_iter = pers->m_subEvents.begin(); - trans->m_subEvents.clear(); while( p_sub_iter != pers->m_subEvents.end() ) { - PileUpEventInfo::SubEvent sub_event; - sub_event.m_timeIndex.m_index = static_cast<short>( (p_sub_iter->m_timeIndex) * (1./MODULO) ); - unsigned long index = MODULO*sub_event.m_timeIndex.m_index; - sub_event.m_timeIndex.m_time = static_cast<short>( MINTIME+(p_sub_iter->m_timeIndex-index) ); - sub_event.m_timeIndex.m_type = PileUpTimeEventIndex::Unknown; - sub_event.pSubEvt = evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log); - trans->m_subEvents.push_back( sub_event ); + short index1 = static_cast<short>( (p_sub_iter->m_timeIndex)*(1./MODULO) ); + unsigned long index = MODULO*index1; + + trans->addSubEvt (static_cast<short>( MINTIME+(p_sub_iter->m_timeIndex-index) ), + //index1 + PileUpTimeEventIndex::Unknown, + std::unique_ptr<EventInfo> + (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + nullptr); p_sub_iter++; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx index 95144d6d756314206f55773c61ff003cd1c618a8..470d547c82d9bbf64ed213178d3c294bcb208bec 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx @@ -2,29 +2,23 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/PileUpEventInfo.h" -#undef private -#undef protected - - #include "EventTPCnv/PileUpEventInfoCnv_p3.h" #include "EventTPCnv/EventInfoCnv_p2.h" -static EventInfoCnv_p2 evInfoConv; +static const EventInfoCnv_p2 evInfoConv; void PileUpEventInfoCnv_p3::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p3* pers, MsgStream &log) { evInfoConv.transToPers(trans, pers, log); - size_t sub_ev_n = trans->m_subEvents.size(); - pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); + size_t sub_ev_n = std::distance (sub_iter, trans->endSubEvt()); + pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo_p3::SubEvVect_t::iterator p_sub_iter = pers->m_subEvents.begin(); while( sub_iter!=trans->endSubEvt() ) { - p_sub_iter->m_time = sub_iter->m_timeIndex.m_time; - p_sub_iter->m_index = sub_iter->m_timeIndex.m_index; - p_sub_iter->m_type = static_cast<short>(sub_iter->m_timeIndex.m_type); + p_sub_iter->m_time = sub_iter->time(); + p_sub_iter->m_index = sub_iter->index(); + p_sub_iter->m_type = static_cast<short>(sub_iter->type()); evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); p_sub_iter++; sub_iter++; } @@ -32,17 +26,17 @@ void PileUpEventInfoCnv_p3::transToPers(const PileUpEventInfo* trans, PileUpEven void PileUpEventInfoCnv_p3::persToTrans(const PileUpEventInfo_p3* pers, PileUpEventInfo* trans, MsgStream &log) { + *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); PileUpEventInfo_p3::SubEvVect_t::const_iterator p_sub_iter = pers->m_subEvents.begin(); - trans->m_subEvents.clear(); while( p_sub_iter != pers->m_subEvents.end() ) { - PileUpEventInfo::SubEvent sub_event; - sub_event.m_timeIndex.m_time = p_sub_iter->m_time; - sub_event.m_timeIndex.m_index = p_sub_iter->m_index; - sub_event.m_timeIndex.m_type = static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type); - sub_event.pSubEvt = evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log); - trans->m_subEvents.push_back( sub_event ); + trans->addSubEvt (p_sub_iter->m_time, + //p_sub_iter->m_index, + static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type), + std::unique_ptr<EventInfo> + (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + nullptr); p_sub_iter++; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx index 1cfe4c13b36f8ea6fa1b86cc05a2abae899849f5..97134c94ae8cb9a3bd9f5bef6e09bdd997da212a 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx @@ -2,29 +2,23 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/PileUpEventInfo.h" -#undef private -#undef protected - - #include "EventTPCnv/PileUpEventInfoCnv_p4.h" #include "EventTPCnv/EventInfoCnv_p3.h" -static EventInfoCnv_p3 evInfoConv; +static const EventInfoCnv_p3 evInfoConv; void PileUpEventInfoCnv_p4::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p4* pers, MsgStream &log) { evInfoConv.transToPers(trans, pers, log); - size_t sub_ev_n = trans->m_subEvents.size(); - pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); + size_t sub_ev_n = std::distance (sub_iter, trans->endSubEvt()); + pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo_p4::SubEvVect_t::iterator p_sub_iter = pers->m_subEvents.begin(); while( sub_iter!=trans->endSubEvt() ) { - p_sub_iter->m_time = sub_iter->m_timeIndex.m_time; - p_sub_iter->m_index = sub_iter->m_timeIndex.m_index; - p_sub_iter->m_type = static_cast<short>(sub_iter->m_timeIndex.m_type); + p_sub_iter->m_time = sub_iter->time(); + p_sub_iter->m_index = sub_iter->index(); + p_sub_iter->m_type = static_cast<short>(sub_iter->type()); evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); p_sub_iter++; sub_iter++; } @@ -32,17 +26,17 @@ void PileUpEventInfoCnv_p4::transToPers(const PileUpEventInfo* trans, PileUpEven void PileUpEventInfoCnv_p4::persToTrans(const PileUpEventInfo_p4* pers, PileUpEventInfo* trans, MsgStream &log) { + *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); PileUpEventInfo_p4::SubEvVect_t::const_iterator p_sub_iter = pers->m_subEvents.begin(); - trans->m_subEvents.clear(); while( p_sub_iter != pers->m_subEvents.end() ) { - PileUpEventInfo::SubEvent sub_event; - sub_event.m_timeIndex.m_time = p_sub_iter->m_time; - sub_event.m_timeIndex.m_index = p_sub_iter->m_index; - sub_event.m_timeIndex.m_type = static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type); - sub_event.pSubEvt = evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log); - trans->m_subEvents.push_back( sub_event ); + trans->addSubEvt (p_sub_iter->m_time, + //p_sub_iter->m_index, + static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type), + std::unique_ptr<EventInfo> + (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + nullptr); p_sub_iter++; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx index 71b7e0ef3b06d053d1da5b7a374e7f3715a81094..2fa60dd6078e794ac54bb9689d92157484e7ac82 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx @@ -2,17 +2,11 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/PileUpEventInfo.h" -#undef private -#undef protected - - #include "EventTPCnv/PileUpEventInfoCnv_p5.h" #include "EventTPCnv/EventInfoCnv_p4.h" -static EventInfoCnv_p4 evInfoConv; +static const EventInfoCnv_p4 evInfoConv; void PileUpEventInfoCnv_p5::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p5* pers, MsgStream &log) { evInfoConv.transToPers(trans, pers, log); @@ -23,10 +17,12 @@ void PileUpEventInfoCnv_p5::transToPers(const PileUpEventInfo* trans, PileUpEven pers->m_subEvents.resize(sub_ev_n); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); PileUpEventInfo_p5::SubEvVect_t::iterator p_sub_iter = pers->m_subEvents.begin(); + size_t sub_ev_n = std::distance (sub_iter, trans->endSubEvt()); + pers->m_subEvents.resize(sub_ev_n); while( sub_iter!=trans->endSubEvt() ) { - p_sub_iter->m_time = sub_iter->m_timeIndex.m_time; - p_sub_iter->m_index = sub_iter->m_timeIndex.m_index; - p_sub_iter->m_type = static_cast<short>(sub_iter->m_timeIndex.m_type); + p_sub_iter->m_time = sub_iter->time(); + p_sub_iter->m_index = sub_iter->index(); + p_sub_iter->m_type = static_cast<short>(sub_iter->type()); evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); p_sub_iter++; sub_iter++; } @@ -35,17 +31,17 @@ void PileUpEventInfoCnv_p5::transToPers(const PileUpEventInfo* trans, PileUpEven void PileUpEventInfoCnv_p5::persToTrans(const PileUpEventInfo_p5* pers, PileUpEventInfo* trans, MsgStream &log) { + *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); PileUpEventInfo_p5::SubEvVect_t::const_iterator p_sub_iter = pers->m_subEvents.begin(); - trans->m_subEvents.clear(); while( p_sub_iter != pers->m_subEvents.end() ) { - PileUpEventInfo::SubEvent sub_event; - sub_event.m_timeIndex.m_time = p_sub_iter->m_time; - sub_event.m_timeIndex.m_index = p_sub_iter->m_index; - sub_event.m_timeIndex.m_type = static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type); - sub_event.pSubEvt = evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log); - trans->m_subEvents.push_back( sub_event ); + trans->addSubEvt (p_sub_iter->m_time, + //p_sub_iter->m_index, + static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type), + std::unique_ptr<EventInfo> + (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + nullptr); p_sub_iter++; } } diff --git a/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx b/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx index 26f9c2800d73334a434cbd544b495a99b9fc5ffb..13750f96ca00f27e7018f108a09ae09167e47646 100644 --- a/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx @@ -2,35 +2,71 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/TriggerInfo.h" -#undef private -#undef protected - #include "EventTPCnv/TriggerInfoCnv_p1.h" +#include "CxxUtils/make_unique.h" -void TriggerInfoCnv_p1::transToPers(const TriggerInfo* , TriggerInfo_p1*, MsgStream &) +void TriggerInfoCnv_p1::transToPers(const TriggerInfo* trans, TriggerInfo_p1* pers, MsgStream &log) +{ + const TriggerInfoCnv_p1* cthis = this; + cthis->transToPers (trans, pers, log); +} + +void TriggerInfoCnv_p1::transToPers(const TriggerInfo* trans, TriggerInfo_p1* pers, MsgStream &) const { // Deprecated, p2 is used for writing -// pers->m_extendedLevel1ID = trans->m_extendedLevel1ID; -// pers->m_level1TriggerType = trans->m_level1TriggerType; -// pers->m_level2TriggerInfo = trans->m_level2TriggerInfo; -// pers->m_eventFilterInfo = trans->m_eventFilterInfo; + pers->m_extendedLevel1ID = trans->extendedLevel1ID(); + pers->m_level1TriggerType = trans->level1TriggerType(); + pers->m_level2TriggerInfo = 0; + if (!trans->level2TriggerInfo().empty()) + pers->m_level2TriggerInfo = trans->level2TriggerInfo()[0]; + pers->m_eventFilterInfo = trans->eventFilterInfo(); } -void TriggerInfoCnv_p1::persToTrans(const TriggerInfo_p1* pers, TriggerInfo* trans, MsgStream &) +void TriggerInfoCnv_p1::persToTrans(const TriggerInfo_p1* pers, TriggerInfo* trans, MsgStream &log) { - trans->m_extendedLevel1ID = pers->m_extendedLevel1ID; - trans->m_level1TriggerType = pers->m_level1TriggerType; + const TriggerInfoCnv_p1* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void TriggerInfoCnv_p1::persToTrans(const TriggerInfo_p1* pers, TriggerInfo* trans, MsgStream &) const +{ + trans->setExtendedLevel1ID (pers->m_extendedLevel1ID); + trans->setLevel1TriggerType (pers->m_level1TriggerType); // For backwards compatibility - add pers->m_level2TriggerInfo to // trans vector if not zero if (pers->m_level2TriggerInfo != 0) { - trans->m_level2TriggerInfo.push_back(pers->m_level2TriggerInfo); + std::vector<TriggerInfo::number_type> l2info {pers->m_level2TriggerInfo}; + trans->setLevel2TriggerInfo (std::move (l2info)); } - trans->m_eventFilterInfo = pers->m_eventFilterInfo; + trans->setEventFilterInfo (pers->m_eventFilterInfo); +} + + +TriggerInfo* TriggerInfoCnv_p1::createTransient (const TriggerInfo_p1* persObj, MsgStream& log) +{ + const TriggerInfoCnv_p1* cthis = this; + return cthis->createTransient (persObj, log); } +TriggerInfo* TriggerInfoCnv_p1::createTransient (const TriggerInfo_p1* persObj, MsgStream& log) const +{ + auto trans = CxxUtils::make_unique<TriggerInfo>(); + persToTrans(persObj, trans.get(), log); + return(trans.release()); +} +TriggerInfo_p1* TriggerInfoCnv_p1::createPersistent (const TriggerInfo* transObj, MsgStream& log) +{ + const TriggerInfoCnv_p1* cthis = this; + return cthis->createPersistent (transObj, log); +} + +TriggerInfo_p1* TriggerInfoCnv_p1::createPersistent (const TriggerInfo* transObj, MsgStream& log) const +{ + auto pers = CxxUtils::make_unique<TriggerInfo_p1>(); + transToPers(transObj, pers.get(), log); + return(pers.release()); +} diff --git a/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx b/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx index e257629d59e2f629934b689c7609eb1a894d5007..688da97479ecb5ac0f33f286e8629200065ba026 100644 --- a/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx @@ -2,43 +2,68 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/TriggerInfo.h" -#undef private -#undef protected - #include "EventTPCnv/TriggerInfoCnv_p2.h" +#include "CxxUtils/make_unique.h" + +void TriggerInfoCnv_p2::transToPers(const TriggerInfo* trans, TriggerInfo_p2* pers, MsgStream &log) +{ + const TriggerInfoCnv_p2* cthis = this; + cthis->transToPers (trans, pers, log); +} -void TriggerInfoCnv_p2::transToPers(const TriggerInfo* trans, TriggerInfo_p2* pers, MsgStream &) { - - pers->m_statusElement = trans->m_statusElement; - pers->m_extendedLevel1ID = trans->m_extendedLevel1ID; - pers->m_level1TriggerType = trans->m_level1TriggerType; - pers->m_level1TriggerInfo = trans->m_level1TriggerInfo; - pers->m_level2TriggerInfo = trans->m_level2TriggerInfo; - pers->m_eventFilterInfo = trans->m_eventFilterInfo; - pers->m_streamTags.resize(trans->m_streamTags.size()); - for (unsigned int i = 0; i < trans->m_streamTags.size(); ++i) { - pers->m_streamTags[i].m_name = trans->m_streamTags[i].m_name; - pers->m_streamTags[i].m_type = trans->m_streamTags[i].m_type; - pers->m_streamTags[i].m_obeysLumiblock = trans->m_streamTags[i].m_obeysLumiblock; +void TriggerInfoCnv_p2::transToPers(const TriggerInfo* trans, TriggerInfo_p2* pers, MsgStream &) const { + + pers->m_statusElement = trans->statusElement(); + pers->m_extendedLevel1ID = trans->extendedLevel1ID(); + pers->m_level1TriggerType = trans->level1TriggerType(); + pers->m_level1TriggerInfo = trans->level1TriggerInfo(); + pers->m_level2TriggerInfo = trans->level2TriggerInfo(); + pers->m_eventFilterInfo = trans->eventFilterInfo(); + size_t sz = trans->streamTags().size(); + pers->m_streamTags.resize(sz); + for (unsigned int i = 0; i < sz; ++i) { + const TriggerInfo::StreamTag& st = trans->streamTags()[i]; + pers->m_streamTags[i].m_name = st.name(); + pers->m_streamTags[i].m_type = st.type(); + pers->m_streamTags[i].m_obeysLumiblock = st.obeysLumiblock(); } } -void TriggerInfoCnv_p2::persToTrans(const TriggerInfo_p2* pers, TriggerInfo* trans, MsgStream &) { +void TriggerInfoCnv_p2::persToTrans(const TriggerInfo_p2* pers, TriggerInfo* trans, MsgStream &log) +{ + const TriggerInfoCnv_p2* cthis = this; + cthis->persToTrans (pers, trans, log); +} + +void TriggerInfoCnv_p2::persToTrans(const TriggerInfo_p2* pers, TriggerInfo* trans, MsgStream &) const { - trans->m_statusElement = pers->m_statusElement; - trans->m_extendedLevel1ID = pers->m_extendedLevel1ID; - trans->m_level1TriggerType = pers->m_level1TriggerType; - trans->m_level1TriggerInfo = pers->m_level1TriggerInfo; - trans->m_level2TriggerInfo = pers->m_level2TriggerInfo; - trans->m_eventFilterInfo = pers->m_eventFilterInfo; - trans->m_streamTags.resize(pers->m_streamTags.size()); + trans->setStatusElement (pers->m_statusElement); + trans->setExtendedLevel1ID (pers->m_extendedLevel1ID); + trans->setLevel1TriggerType (pers->m_level1TriggerType); + trans->setLevel1TriggerInfo (pers->m_level1TriggerInfo); + trans->setLevel2TriggerInfo (pers->m_level2TriggerInfo); + trans->setEventFilterInfo (pers->m_eventFilterInfo); + std::vector<TriggerInfo::StreamTag> st; + st.reserve(pers->m_streamTags.size()); for (unsigned int i = 0; i < pers->m_streamTags.size(); ++i) { - trans->m_streamTags[i].m_name = pers->m_streamTags[i].m_name; - trans->m_streamTags[i].m_type = pers->m_streamTags[i].m_type; - trans->m_streamTags[i].m_obeysLumiblock = pers->m_streamTags[i].m_obeysLumiblock; + st.emplace_back (pers->m_streamTags[i].m_name, + pers->m_streamTags[i].m_type, + pers->m_streamTags[i].m_obeysLumiblock); } + trans->setStreamTags (std::move (st)); +} + +TriggerInfo* TriggerInfoCnv_p2::createTransient (const TriggerInfo_p2* persObj, MsgStream& log) +{ + const TriggerInfoCnv_p2* cthis = this; + return cthis->createTransient (persObj, log); +} + +TriggerInfo* TriggerInfoCnv_p2::createTransient (const TriggerInfo_p2* persObj, MsgStream& log) const +{ + auto trans = CxxUtils::make_unique<TriggerInfo>(); + persToTrans(persObj, trans.get(), log); + return(trans.release()); } diff --git a/Event/EventTPCnv/src/TriggerInfoCnv_p3.cxx b/Event/EventTPCnv/src/TriggerInfoCnv_p3.cxx index 9dd7505ce5c3507fc4ac8fc92ece76aeec9b82a3..e72e4956b0589130e5cab5eaa92443d2056a10b4 100644 --- a/Event/EventTPCnv/src/TriggerInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/TriggerInfoCnv_p3.cxx @@ -2,70 +2,99 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "EventInfo/TriggerInfo.h" -#undef private -#undef protected - #include "EventTPCnv/TriggerInfoCnv_p3.h" #include "EventTPCnv/vectorize.h" -void TriggerInfoCnv_p3::persToTrans(std::vector<unsigned int>::const_iterator &i, TriggerInfo* trans, bool bugcompat){ - trans->m_statusElement = (*i); ++i; - trans->m_extendedLevel1ID = (*i); ++i; - trans->m_level1TriggerType = (*i); ++i; +void TriggerInfoCnv_p3::persToTrans(std::vector<unsigned int>::const_iterator &i, TriggerInfo* trans, bool bugcompat) const{ + trans->setStatusElement (*i); ++i; + trans->setExtendedLevel1ID (*i); ++i; + trans->setLevel1TriggerType (*i); ++i; // std::cout<<"persToTrans of TriggerInfo\t"<<trans->m_level1TriggerType<<std::endl; - - unsigned int size=(*i); ++i; - trans->m_level1TriggerInfo.resize(size); - for (unsigned int w=0;w<size;w++) {trans->m_level1TriggerInfo[w]=(*i); ++i;} - size=(*i); ++i; - trans->m_level2TriggerInfo.resize(size); - for (unsigned int w=0;w<size;w++) {trans->m_level2TriggerInfo[w]=(*i); ++i;} - size=(*i); ++i; - trans->m_eventFilterInfo.resize(size); - for (unsigned int w=0;w<size;w++) {trans->m_eventFilterInfo[w]=(*i); ++i;} - -// std::cout<<"persToTrans of TriggerInfo\t"<<trans->m_eventFilterInfo.size()<<std::endl; - size=(*i); ++i; - trans->m_streamTags.resize(size); - for (unsigned int w=0;w<size;w++) { - UITostr(trans->m_streamTags[w].m_name,i, bugcompat); - UITostr(trans->m_streamTags[w].m_type,i, bugcompat); + + { + unsigned int size=(*i); ++i; + std::vector<TriggerInfo::number_type> l1info (i, i+size); i += size; + trans->setLevel1TriggerInfo (std::move (l1info)); } - std::vector<bool> t; - UITobitmap(t, i, bugcompat); - for (unsigned int w=0;w<size;w++) { - trans->m_streamTags[w].m_obeysLumiblock=t[w]; -// std::cout<<"persToTrans of TriggerInfo \t"<<trans->m_streamTags[w].m_obeysLumiblock<<std::endl; + + { + unsigned int size=(*i); ++i; + std::vector<TriggerInfo::number_type> l2info (i, i+size); i += size; + trans->setLevel2TriggerInfo (std::move (l2info)); + } + + { + unsigned int size=(*i); ++i; + std::vector<TriggerInfo::number_type> efinfo (i, i+size); i += size; + trans->setEventFilterInfo (std::move (efinfo)); + } + +// std::cout<<"persToTrans of TriggerInfo\t"<<trans->m_eventFilterInfo.size()<<std::endl; + { + unsigned int size=(*i); ++i; + std::vector<std::string> names(size); + std::vector<std::string> types(size); + for (unsigned int w=0;w<size;w++) { + UITostr(names[w],i, bugcompat); + UITostr(types[w],i, bugcompat); + } + + std::vector<bool> t; + UITobitmap(t, i, bugcompat); + + std::vector<TriggerInfo::StreamTag> st; + st.reserve (size); + for (unsigned int w=0;w<size;w++) { + st.emplace_back (std::move(names[w]), std::move(types[w]), t[w]); + } + + trans->setStreamTags (std::move (st)); } } -void TriggerInfoCnv_p3::transToPers(const TriggerInfo* trans, std::vector<unsigned int> &pers){ - pers.push_back(trans->m_statusElement); - pers.push_back(trans->m_extendedLevel1ID); - pers.push_back(trans->m_level1TriggerType); - // std::cout<<"transToPers of TriggerInfo \t"<<trans->m_level1TriggerType<<std::endl; - pers.push_back(trans->m_level1TriggerInfo.size()); - std::copy (trans->m_level1TriggerInfo.begin(), trans->m_level1TriggerInfo.end(), std::back_inserter (pers)); - pers.push_back(trans->m_level2TriggerInfo.size()); - std::copy (trans->m_level2TriggerInfo.begin(), trans->m_level2TriggerInfo.end(), std::back_inserter (pers)); - pers.push_back(trans->m_eventFilterInfo.size()); - std::copy (trans->m_eventFilterInfo.begin(), trans->m_eventFilterInfo.end(), std::back_inserter (pers)); - - // std::cout<<"transToPers of TriggerInfo \t"<<trans->m_eventFilterInfo.size()<<std::endl; - pers.push_back(trans->m_streamTags.size()); - std::vector<bool> t; t.reserve(trans->m_streamTags.size()); - for (unsigned int i = 0; i < trans->m_streamTags.size(); ++i) { - strToUI(trans->m_streamTags[i].m_name,pers); - strToUI(trans->m_streamTags[i].m_type,pers); - t.push_back(trans->m_streamTags[i].m_obeysLumiblock); +void TriggerInfoCnv_p3::transToPers(const TriggerInfo* trans, std::vector<unsigned int> &pers) const{ + pers.push_back(trans->statusElement()); + pers.push_back(trans->extendedLevel1ID()); + pers.push_back(trans->level1TriggerType()); + + { + const std::vector<TriggerInfo::number_type>& l1info = + trans->level1TriggerInfo(); + // std::cout<<"transToPers of TriggerInfo \t"<<trans->m_level1TriggerType<<std::endl; + pers.push_back(l1info.size()); + std::copy (l1info.begin(), l1info.end(), std::back_inserter (pers)); + } + + { + const std::vector<TriggerInfo::number_type>& l2info = + trans->level2TriggerInfo(); + pers.push_back(l2info.size()); + std::copy (l2info.begin(), l2info.end(), std::back_inserter (pers)); + } + + { + const std::vector<TriggerInfo::number_type>& efinfo = + trans->eventFilterInfo(); + pers.push_back(efinfo.size()); + std::copy (efinfo.begin(), efinfo.end(), std::back_inserter (pers)); + } + + { + size_t sz = trans->streamTags().size(); + // std::cout<<"transToPers of TriggerInfo \t"<<trans->m_eventFilterInfo.size()<<std::endl; + pers.push_back(sz); + std::vector<bool> t; t.reserve(sz); + for (unsigned int i = 0; i < sz; ++i) { + const TriggerInfo::StreamTag& st = trans->streamTags()[i]; + strToUI(st.name(), pers); + strToUI(st.type(), pers); + t.push_back(st.obeysLumiblock()); // std::cout<<"transToPers of TriggerInfo "<<trans->m_streamTags[i].m_obeysLumiblock<<std::endl; + } + bitmapToUI(t, pers); } - bitmapToUI(t, pers); - } diff --git a/Event/EventTPCnv/test/AtlasMcWeight_test.cxx b/Event/EventTPCnv/test/AtlasMcWeight_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b0f482ff94e96459b65be7bd3a7643fb59723dc2 --- /dev/null +++ b/Event/EventTPCnv/test/AtlasMcWeight_test.cxx @@ -0,0 +1,51 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/AtlasMcWeight_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/AtlasMcWeight.h" +#include "TestTools/leakcheck.h" +#include "TestTools/FLOATassert.h" +#include <cstdlib> +#include <cassert> +#include <iostream> + + +void testit (double w, unsigned int n, double w2) +{ + unsigned int nn = AtlasMcWeight::encode (w); + if (nn != n) { + std::cout << "encode for " << w << " fails; " << n << " " << nn << "\n"; + std::abort(); + } + assert (nn == n); + assert (Athena_test::isEqual (AtlasMcWeight::decode (nn), w2)); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + testit (123.5, 312350000, 123.5); + testit (-123.5, 1312350000, -123.5); + testit (0.125, 2012500000, 0.125); + testit (-0.125, 3012500000, -0.125); +} + + +int main() +{ + test1(); + return 0; +} + diff --git a/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx b/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..996cbf1d90ac0bd1976ece278d2a42967bc9798e --- /dev/null +++ b/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx @@ -0,0 +1,66 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventIDCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventIDCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventID.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + assert (p1.detector_mask2() == p2.detector_mask2()); + assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void testit (const EventID& trans1) +{ + MsgStream log (0, "test"); + EventIDCnv_p1 cnv; + EventID_p1 pers; + cnv.transToPers (&trans1, &pers, log); + EventID trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventID trans1 (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx b/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..02c54e39bbf8c8d4ecbdbc9c4577315dc8a05feb --- /dev/null +++ b/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx @@ -0,0 +1,67 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventIDCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventIDCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventID.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + assert (0 == p2.detector_mask2()); + assert (0 == p2.detector_mask3()); +} + + +void testit (const EventID& trans1) +{ + EventIDCnv_p2 cnv; + std::vector<unsigned int> pers; + cnv.transToPers (&trans1, pers); + + EventID trans2; + std::vector<unsigned int>::const_iterator it = pers.begin(); + cnv.persToTrans (it, &trans2); + assert (it == pers.end()); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventID trans1 (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..fdd22ea5078ed353f624381a4f71b65ce0267465 --- /dev/null +++ b/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx @@ -0,0 +1,167 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventInfoCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventInfoCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventInfo.h" +#include "EventInfo/EventID.h" +#include "EventInfo/EventType.h" +#include "EventInfo/TriggerInfo.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + //assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + //assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p2.level2TriggerInfo().size() == 1); + assert (p1.level2TriggerInfo()[0] == p2.level2TriggerInfo()[0]); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + //assert (p1.streamTags().size() == p2.streamTags().size()); + //for (size_t i = 0; i < p1.streamTags().size(); i++) + // compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + +#if 0 + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +#endif +} + + +void testit (const EventInfo& trans1) +{ + MsgStream log (0, "test"); + EventInfoCnv_p1 cnv; + EventInfo_p1 pers; + cnv.transToPers (&trans1, &pers, log); + EventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + auto id = CxxUtils::make_unique<EventID> (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3); + etype->add_type (13); + etype->add_type (25); + etype->add_type (101); + etype->set_user_type ("utype"); + etype->set_mc_event_weight (1.5, 0); + etype->set_mc_event_weight (2.5, 1); + etype->set_mc_event_weight (3.5, 2); + etype->set_mc_channel_number (123); + etype->set_mc_event_number (345); + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + + EventInfo trans1 (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + trans1.setEventFlags (ii, i*100+3); + trans1.setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + trans1.setActualInteractionsPerCrossing (123.5); + trans1.setAverageInteractionsPerCrossing (321.5); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..1477e368c1575c6b6ab42672e42f30fc4e9269d3 --- /dev/null +++ b/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx @@ -0,0 +1,175 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventInfoCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventInfoCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventInfo.h" +#include "EventInfo/EventID.h" +#include "EventInfo/EventType.h" +#include "EventInfo/TriggerInfo.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void testit (const EventInfo& trans1) +{ + MsgStream log (0, "test"); + EventInfoCnv_p2 cnv; + EventInfo_p2 pers; + cnv.transToPers (&trans1, &pers, log); + EventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + auto id = CxxUtils::make_unique<EventID> (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3); + etype->add_type (13); + etype->add_type (25); + etype->add_type (101); + etype->set_user_type ("utype"); + etype->set_mc_event_weight (1.5, 0); + etype->set_mc_event_weight (2.5, 1); + etype->set_mc_event_weight (3.5, 2); + etype->set_mc_channel_number (123); + etype->set_mc_event_number (345); + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + + EventInfo trans1 (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + trans1.setEventFlags (ii, i*100+3); + trans1.setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + trans1.setActualInteractionsPerCrossing (123.5); + trans1.setAverageInteractionsPerCrossing (321.5); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..348a1acb4602e688951f6f0f4a600dbe2124b8a9 --- /dev/null +++ b/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx @@ -0,0 +1,175 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventInfoCnv_p3_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventInfoCnv_p3.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventInfo.h" +#include "EventInfo/EventID.h" +#include "EventInfo/EventType.h" +#include "EventInfo/TriggerInfo.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (p1.mc_event_weight(0) == p2.mc_event_weight(0)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void testit (const EventInfo& trans1) +{ + MsgStream log (0, "test"); + EventInfoCnv_p3 cnv; + EventInfo_p3 pers; + cnv.transToPers (&trans1, &pers, log); + EventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + auto id = CxxUtils::make_unique<EventID> (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3); + etype->add_type (13); + etype->add_type (25); + etype->add_type (101); + etype->set_user_type ("utype"); + etype->set_mc_event_weight (1.5, 0); + etype->set_mc_event_weight (2.5, 1); + etype->set_mc_event_weight (3.5, 2); + etype->set_mc_channel_number (123); + etype->set_mc_event_number (345); + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + + EventInfo trans1 (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + trans1.setEventFlags (ii, i*100+3); + trans1.setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + trans1.setActualInteractionsPerCrossing (123.5); + trans1.setAverageInteractionsPerCrossing (321.5); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..de086bec8e2e2dad0f66089755cd4bf9afec65ab --- /dev/null +++ b/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx @@ -0,0 +1,176 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventInfoCnv_p4_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventInfoCnv_p4.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventInfo.h" +#include "EventInfo/EventID.h" +#include "EventInfo/EventType.h" +#include "EventInfo/TriggerInfo.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + assert (p1.detector_mask2() == p2.detector_mask2()); + assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p1.n_mc_event_weights() == p2.n_mc_event_weights()); + for (unsigned int i = 0; i < p1.n_mc_event_weights(); i++) + assert (p1.mc_event_weight(i) == p2.mc_event_weight(i)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void testit (const EventInfo& trans1) +{ + MsgStream log (0, "test"); + EventInfoCnv_p4 cnv; + EventInfo_p4 pers; + cnv.transToPers (&trans1, &pers, log); + EventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + auto id = CxxUtils::make_unique<EventID> (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3); + etype->add_type (13); + etype->add_type (25); + etype->add_type (101); + etype->set_user_type ("utype"); + etype->set_mc_event_weight (1.5, 0); + etype->set_mc_event_weight (2.5, 1); + etype->set_mc_event_weight (3.5, 2); + etype->set_mc_channel_number (123); + etype->set_mc_event_number (345); + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + + EventInfo trans1 (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + trans1.setEventFlags (ii, i*100+3); + trans1.setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + trans1.setActualInteractionsPerCrossing (123.5); + trans1.setAverageInteractionsPerCrossing (321.5); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..37a3bd2025c150ba8e589e4844322a4f7b96fac1 --- /dev/null +++ b/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx @@ -0,0 +1,125 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventStreamInfoCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventStreamInfo.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const EventStreamInfo& p1, + const EventStreamInfo& p2) +{ + assert (p1.getNumberOfEvents() == p2.getNumberOfEvents()); + assert (p1.getRunNumbers() == p2.getRunNumbers()); + assert (p1.getLumiBlockNumbers() == p2.getLumiBlockNumbers()); + assert (p1.getProcessingTags() == p2.getProcessingTags()); + assert (p1.getItemList() == p2.getItemList()); + const std::set<EventType>& s1 = p1.getEventTypes(); + const std::set<EventType>& s2 = p2.getEventTypes(); + assert (s1.size() == s2.size()); + std::set<EventType>::const_iterator it1 = s1.begin(); + std::set<EventType>::const_iterator it2 = s2.begin(); + for (; it1 != s1.end(); ++it1, ++it2) + compare (*it1, *it2); +} + + +void testit (const EventStreamInfo& trans1) +{ + MsgStream log (0, "test"); + EventStreamInfoCnv_p1 cnv; + EventStreamInfo_p1 pers; + cnv.transToPers (&trans1, &pers, log); + EventStreamInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventStreamInfo trans1; + trans1.addEvent (1234); + trans1.insertRunNumber(234); + trans1.insertRunNumber(345); + trans1.insertLumiBlockNumber(456); + trans1.insertLumiBlockNumber(567); + trans1.insertLumiBlockNumber(678); + trans1.insertProcessingTag("asd"); + trans1.insertProcessingTag("sdf"); + trans1.insertItemList(321, "gfd"); + trans1.insertItemList(432, "lkj"); + + EventType etype1; + etype1.add_type (3); + etype1.add_type (13); + etype1.add_type (25); + etype1.add_type (101); + etype1.set_user_type ("utype"); + etype1.set_mc_event_weight (1.5, 0); + etype1.set_mc_event_weight (2.5, 1); + etype1.set_mc_event_weight (3.5, 2); + etype1.set_mc_channel_number (123); + etype1.set_mc_event_number (345); + + EventType etype2; + etype2.add_type (13); + etype2.add_type (113); + etype2.add_type (125); + etype2.add_type (1101); + etype2.set_user_type ("xtype"); + etype2.set_mc_event_weight (11.5, 0); + etype2.set_mc_event_weight (12.5, 1); + etype2.set_mc_event_weight (13.5, 2); + etype2.set_mc_channel_number (1123); + etype2.set_mc_event_number (1345); + + trans1.insertEventType (etype1); + trans1.insertEventType (etype2); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..784ff5c40ee1a4d40e46050ccb537a8e3e08ec4a --- /dev/null +++ b/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx @@ -0,0 +1,125 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventStreamInfoCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventStreamInfo.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const EventStreamInfo& p1, + const EventStreamInfo& p2) +{ + assert (p1.getNumberOfEvents() == p2.getNumberOfEvents()); + assert (p1.getRunNumbers() == p2.getRunNumbers()); + assert (p1.getLumiBlockNumbers() == p2.getLumiBlockNumbers()); + assert (p1.getProcessingTags() == p2.getProcessingTags()); + assert (p1.getItemList() == p2.getItemList()); + const std::set<EventType>& s1 = p1.getEventTypes(); + const std::set<EventType>& s2 = p2.getEventTypes(); + assert (s1.size() == s2.size()); + std::set<EventType>::const_iterator it1 = s1.begin(); + std::set<EventType>::const_iterator it2 = s2.begin(); + for (; it1 != s1.end(); ++it1, ++it2) + compare (*it1, *it2); +} + + +void testit (const EventStreamInfo& trans1) +{ + MsgStream log (0, "test"); + EventStreamInfoCnv_p2 cnv; + EventStreamInfo_p2 pers; + cnv.transToPers (&trans1, &pers, log); + EventStreamInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventStreamInfo trans1; + trans1.addEvent (1234); + trans1.insertRunNumber(234); + trans1.insertRunNumber(345); + trans1.insertLumiBlockNumber(456); + trans1.insertLumiBlockNumber(567); + trans1.insertLumiBlockNumber(678); + trans1.insertProcessingTag("asd"); + trans1.insertProcessingTag("sdf"); + trans1.insertItemList(321, "gfd"); + trans1.insertItemList(432, "lkj"); + + EventType etype1; + etype1.add_type (3); + etype1.add_type (13); + etype1.add_type (25); + etype1.add_type (101); + etype1.set_user_type ("utype"); + etype1.set_mc_event_weight (1.5, 0); + etype1.set_mc_event_weight (2.5, 1); + etype1.set_mc_event_weight (3.5, 2); + etype1.set_mc_channel_number (123); + etype1.set_mc_event_number (345); + + EventType etype2; + etype2.add_type (13); + etype2.add_type (113); + etype2.add_type (125); + etype2.add_type (1101); + etype2.set_user_type ("xtype"); + etype2.set_mc_event_weight (11.5, 0); + etype2.set_mc_event_weight (12.5, 1); + etype2.set_mc_event_weight (13.5, 2); + etype2.set_mc_channel_number (1123); + etype2.set_mc_event_number (1345); + + trans1.insertEventType (etype1); + trans1.insertEventType (etype2); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..032e17bdcddd953da66f1c8abb455c41311d3d2c --- /dev/null +++ b/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx @@ -0,0 +1,126 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventStreamInfoCnv_p3.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventStreamInfo.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p1.n_mc_event_weights() == p2.n_mc_event_weights()); + for (unsigned int i = 0; i < p1.n_mc_event_weights(); i++) + assert (p1.mc_event_weight(i) == p2.mc_event_weight(i)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const EventStreamInfo& p1, + const EventStreamInfo& p2) +{ + assert (p1.getNumberOfEvents() == p2.getNumberOfEvents()); + assert (p1.getRunNumbers() == p2.getRunNumbers()); + assert (p1.getLumiBlockNumbers() == p2.getLumiBlockNumbers()); + assert (p1.getProcessingTags() == p2.getProcessingTags()); + assert (p1.getItemList() == p2.getItemList()); + const std::set<EventType>& s1 = p1.getEventTypes(); + const std::set<EventType>& s2 = p2.getEventTypes(); + assert (s1.size() == s2.size()); + std::set<EventType>::const_iterator it1 = s1.begin(); + std::set<EventType>::const_iterator it2 = s2.begin(); + for (; it1 != s1.end(); ++it1, ++it2) + compare (*it1, *it2); +} + + +void testit (const EventStreamInfo& trans1) +{ + MsgStream log (0, "test"); + EventStreamInfoCnv_p3 cnv; + EventStreamInfo_p3 pers; + cnv.transToPers (&trans1, &pers, log); + EventStreamInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventStreamInfo trans1; + trans1.addEvent (1234); + trans1.insertRunNumber(234); + trans1.insertRunNumber(345); + trans1.insertLumiBlockNumber(456); + trans1.insertLumiBlockNumber(567); + trans1.insertLumiBlockNumber(678); + trans1.insertProcessingTag("asd"); + trans1.insertProcessingTag("sdf"); + trans1.insertItemList(321, "gfd"); + trans1.insertItemList(432, "lkj"); + + EventType etype1; + etype1.add_type (3); + etype1.add_type (13); + etype1.add_type (25); + etype1.add_type (101); + etype1.set_user_type ("utype"); + etype1.set_mc_event_weight (1.5, 0); + etype1.set_mc_event_weight (2.5, 1); + etype1.set_mc_event_weight (3.5, 2); + etype1.set_mc_channel_number (123); + etype1.set_mc_event_number (345); + + EventType etype2; + etype2.add_type (13); + etype2.add_type (113); + etype2.add_type (125); + etype2.add_type (1101); + etype2.set_user_type ("xtype"); + etype2.set_mc_event_weight (11.5, 0); + etype2.set_mc_event_weight (12.5, 1); + etype2.set_mc_event_weight (13.5, 2); + etype2.set_mc_channel_number (1123); + etype2.set_mc_event_number (1345); + + trans1.insertEventType (etype1); + trans1.insertEventType (etype2); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx b/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..00b238653e6650e26dedfca26d12b2a664ea1c61 --- /dev/null +++ b/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx @@ -0,0 +1,80 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventTypeCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventTypeCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventType.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void testit (const EventType& trans1) +{ + MsgStream log (0, "test"); + EventTypeCnv_p1 cnv; + EventType_p1 pers; + cnv.transToPers (&trans1, &pers, log); + EventType trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventType trans1; + trans1.add_type (3); + trans1.add_type (13); + trans1.add_type (25); + trans1.add_type (101); + trans1.set_user_type ("utype"); + trans1.set_mc_event_weight (1.5, 0); + trans1.set_mc_event_weight (2.5, 1); + trans1.set_mc_event_weight (3.5, 2); + trans1.set_mc_channel_number (123); + trans1.set_mc_event_number (345); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx b/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..8b45738a1c89998e2fc906f2879d222118f81fb1 --- /dev/null +++ b/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx @@ -0,0 +1,81 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventTypeCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventTypeCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventType.h" +#include <cassert> +#include <iostream> + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (p1.mc_event_weight(0) == p2.mc_event_weight(0)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void testit (const EventType& trans1) +{ + EventTypeCnv_p2 cnv; + std::vector<unsigned int> pers; + cnv.transToPers (&trans1, pers); + EventType trans2; + std::vector<unsigned int>::const_iterator it = pers.begin(); + int versionToWrite = 2 | (3<<6) | (3<<12) | (1<<18) | (1<<24); + cnv.persToTrans (it, &trans2, versionToWrite, false); + assert (it == pers.end()); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventType trans1; + trans1.add_type (3); + trans1.add_type (13); + trans1.add_type (25); + trans1.add_type (101); + trans1.set_user_type ("utype"); + trans1.set_mc_event_weight (1.5, 0); + trans1.set_mc_event_weight (2.5, 1); + trans1.set_mc_event_weight (3.5, 2); + trans1.set_mc_channel_number (123); + trans1.set_mc_event_number (345); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx b/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7fea5c94293b5266f0ef7743eae88c98801e2df8 --- /dev/null +++ b/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx @@ -0,0 +1,81 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/EventTypeCnv_p3_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/EventTypeCnv_p3.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/EventType.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p1.n_mc_event_weights() == p2.n_mc_event_weights()); + for (unsigned int i = 0; i < p1.n_mc_event_weights(); i++) + assert (p1.mc_event_weight(i) == p2.mc_event_weight(i)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void testit (const EventType& trans1) +{ + MsgStream log (0, "test"); + EventTypeCnv_p3 cnv; + EventType_p3 pers; + cnv.transToPers (&trans1, &pers, log); + EventType trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + EventType trans1; + trans1.add_type (3); + trans1.add_type (13); + trans1.add_type (25); + trans1.add_type (101); + trans1.set_user_type ("utype"); + trans1.set_mc_event_weight (1.5, 0); + trans1.set_mc_event_weight (2.5, 1); + trans1.set_mc_event_weight (3.5, 2); + trans1.set_mc_channel_number (123); + trans1.set_mc_event_number (345); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..a6f47ec7751846a7b96d468465ec57abcf793dda --- /dev/null +++ b/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx @@ -0,0 +1,178 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/MergedEventInfoCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/MergedEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + //assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + //assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p2.level2TriggerInfo().size() == 1); + assert (p1.level2TriggerInfo()[0] == p2.level2TriggerInfo()[0]); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + //assert (p1.streamTags().size() == p2.streamTags().size()); + //for (size_t i = 0; i < p1.streamTags().size(); i++) + // compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + +#if 0 + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +#endif +} + + +void compare (const MergedEventInfo& p1, + const MergedEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const MergedEventInfo& trans1) +{ + MsgStream log (0, "test"); + MergedEventInfoCnv_p1 cnv; + MergedEventInfo_p1 pers; + cnv.transToPers (&trans1, &pers, log); + MergedEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + auto id = CxxUtils::make_unique<EventID> (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3); + etype->add_type (13); + etype->add_type (25); + etype->add_type (101); + etype->set_user_type ("utype"); + etype->set_mc_event_weight (1.5, 0); + etype->set_mc_event_weight (2.5, 1); + etype->set_mc_event_weight (3.5, 2); + etype->set_mc_channel_number (123); + etype->set_mc_event_number (345); + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + + EventInfo info1 (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + info1.setEventFlags (ii, i*100+3); + info1.setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + info1.setActualInteractionsPerCrossing (123.5); + info1.setAverageInteractionsPerCrossing (321.5); + + MergedEventInfo trans1 (info1, 333, 444, 555); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..c6d215a7f6012e7adfce1ba93c6b07b04e4058a0 --- /dev/null +++ b/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx @@ -0,0 +1,186 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/MergedEventInfoCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/MergedEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (p1.mc_event_weight(0) == p2.mc_event_weight(0)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void compare (const MergedEventInfo& p1, + const MergedEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const MergedEventInfo& trans1) +{ + MsgStream log (0, "test"); + MergedEventInfoCnv_p2 cnv; + MergedEventInfo_p2 pers; + cnv.transToPers (&trans1, &pers, log); + MergedEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + auto id = CxxUtils::make_unique<EventID> (1234, 2345, 3456, 4567, 5678, 6789, + 4321, 5432, 6543, 7654); + + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3); + etype->add_type (13); + etype->add_type (25); + etype->add_type (101); + etype->set_user_type ("utype"); + etype->set_mc_event_weight (1.5, 0); + etype->set_mc_event_weight (2.5, 1); + etype->set_mc_event_weight (3.5, 2); + etype->set_mc_channel_number (123); + etype->set_mc_event_number (345); + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + + EventInfo info1 (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + info1.setEventFlags (ii, i*100+3); + info1.setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + info1.setActualInteractionsPerCrossing (123.5); + info1.setAverageInteractionsPerCrossing (321.5); + + MergedEventInfo trans1 (info1, 333, 444, 555); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d0a77ac90a9ec1256a4220f7d034712616ad375f --- /dev/null +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx @@ -0,0 +1,252 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/PileUpEventInfoCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/PileUpEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> +#include <sstream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + //assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + //assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p2.level2TriggerInfo().size() == 1); + assert (p1.level2TriggerInfo()[0] == p2.level2TriggerInfo()[0]); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + //assert (p1.streamTags().size() == p2.streamTags().size()); + //for (size_t i = 0; i < p1.streamTags().size(); i++) + // compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + +#if 0 + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +#endif +} + + +void compare (const PileUpEventInfo::SubEvent& p1, + const PileUpEventInfo::SubEvent& p2) +{ + assert (p1.time() == p2.time()); + assert (p1.index() == p2.index()); + assert (p2.type() == PileUpTimeEventIndex::Unknown); + assert (p1.BCID() == p2.BCID()); + compare (*p1.pSubEvt, *p2.pSubEvt); +} + + +void compare (const PileUpEventInfo& p1, + const PileUpEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + + PileUpEventInfo::SubEvent::const_iterator beg1 = p1.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end1 = p1.endSubEvt(); + PileUpEventInfo::SubEvent::const_iterator beg2 = p2.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end2 = p2.endSubEvt(); + assert (std::distance (beg1, end1) == + std::distance (beg2, end2)); + for (; beg1 != end1; ++beg1, ++beg2) + compare (*beg1, *beg2); + + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const PileUpEventInfo& trans1) +{ + MsgStream log (0, "test"); + PileUpEventInfoCnv_p1 cnv; + PileUpEventInfo_p1 pers; + cnv.transToPers (&trans1, &pers, log); + PileUpEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +std::string stroffs (const char* s, int offs) +{ + std::ostringstream os; + os << s << offs; + return os.str(); +} + + +std::unique_ptr<EventID> make_id (int offs) +{ + return CxxUtils::make_unique<EventID> (1234+offs, 2345+offs, 3456+offs, + 4567+offs, 5678+offs, 6789+offs, + 4321+offs, 5432+offs, + 6543+offs, 7654+offs); +} + + +std::unique_ptr<EventType> make_type (int offs) +{ + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3+offs); + etype->add_type (13+offs); + etype->add_type (25+offs); + etype->add_type (101+offs); + etype->set_user_type (stroffs ("utype", offs)); + etype->set_mc_event_weight (1.5+offs, 0); + etype->set_mc_event_weight (2.5+offs, 1); + etype->set_mc_event_weight (3.5+offs, 2); + etype->set_mc_channel_number (123+offs); + etype->set_mc_event_number (345+offs); + + return etype; +} + + +std::unique_ptr<TriggerInfo> make_tinfo (TriggerInfo::number_type offs) +{ + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back (stroffs("asd", offs), + stroffs("zzz", offs), true, + std::set<TriggerInfo::number_type> {3+offs, 4+offs}, + std::set<TriggerInfo::number_type> {5+offs, 10+offs, 12+offs}); + streamTags.emplace_back (stroffs("fds", offs), + stroffs("qwe", offs), false, + std::set<TriggerInfo::number_type> {13+offs, 14+offs}, + std::set<TriggerInfo::number_type> {15+offs, 110+offs, 112+offs}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123+offs, + 234+offs, + 345+offs, + std::vector<TriggerInfo::number_type> {6+offs, 7+offs, 8+offs}, + std::vector<TriggerInfo::number_type> {9+offs, 10+offs}, + std::vector<TriggerInfo::number_type> {11+offs, 12+offs, 13+offs, 14+offs}, + streamTags); + + return tinfo; +} + + +std::unique_ptr<EventInfo> make_ei (int offs) +{ + std::unique_ptr<EventID> id = make_id (offs); + std::unique_ptr<EventType> etype = make_type (offs); + std::unique_ptr<TriggerInfo> tinfo = make_tinfo (offs); + + auto ei = CxxUtils::make_unique<EventInfo> (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + ei->setEventFlags (ii, i*100+3); + ei->setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + ei->setActualInteractionsPerCrossing (123.5); + ei->setAverageInteractionsPerCrossing (321.5); + + return ei; +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + PileUpEventInfo trans1 (make_id(0).release(), + make_type(0).release(), + make_tinfo(0).release()); + trans1.addSubEvt (123, 432, PileUpTimeEventIndex::Signal, *make_ei(100), nullptr); + trans1.addSubEvt (223, 632, PileUpTimeEventIndex::Cavern, *make_ei(200), nullptr); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..bc31546d4ba584ca3023d60d9efde535c8e1f36c --- /dev/null +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx @@ -0,0 +1,249 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/PileUpEventInfoCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/PileUpEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> +#include <sstream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void compare (const PileUpEventInfo::SubEvent& p1, + const PileUpEventInfo::SubEvent& p2) +{ + assert (p1.time() == p2.time()); + assert (p1.index() == p2.index()); + assert (p2.type() == PileUpTimeEventIndex::Unknown); + assert (p1.BCID() == p2.BCID()); + compare (*p1.pSubEvt, *p2.pSubEvt); +} + + +void compare (const PileUpEventInfo& p1, + const PileUpEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + + PileUpEventInfo::SubEvent::const_iterator beg1 = p1.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end1 = p1.endSubEvt(); + PileUpEventInfo::SubEvent::const_iterator beg2 = p2.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end2 = p2.endSubEvt(); + assert (std::distance (beg1, end1) == + std::distance (beg2, end2)); + for (; beg1 != end1; ++beg1, ++beg2) + compare (*beg1, *beg2); + + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const PileUpEventInfo& trans1) +{ + MsgStream log (0, "test"); + PileUpEventInfoCnv_p2 cnv; + PileUpEventInfo_p2 pers; + cnv.transToPers (&trans1, &pers, log); + PileUpEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +std::string stroffs (const char* s, int offs) +{ + std::ostringstream os; + os << s << offs; + return os.str(); +} + + +std::unique_ptr<EventID> make_id (int offs) +{ + return CxxUtils::make_unique<EventID> (1234+offs, 2345+offs, 3456+offs, + 4567+offs, 5678+offs, 6789+offs, + 4321+offs, 5432+offs, + 6543+offs, 7654+offs); +} + + +std::unique_ptr<EventType> make_type (int offs) +{ + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3+offs); + etype->add_type (13+offs); + etype->add_type (25+offs); + etype->add_type (101+offs); + etype->set_user_type (stroffs ("utype", offs)); + etype->set_mc_event_weight (1.5+offs, 0); + etype->set_mc_event_weight (2.5+offs, 1); + etype->set_mc_event_weight (3.5+offs, 2); + etype->set_mc_channel_number (123+offs); + etype->set_mc_event_number (345+offs); + + return etype; +} + + +std::unique_ptr<TriggerInfo> make_tinfo (TriggerInfo::number_type offs) +{ + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back (stroffs("asd", offs), + stroffs("zzz", offs), true, + std::set<TriggerInfo::number_type> {3+offs, 4+offs}, + std::set<TriggerInfo::number_type> {5+offs, 10+offs, 12+offs}); + streamTags.emplace_back (stroffs("fds", offs), + stroffs("qwe", offs), false, + std::set<TriggerInfo::number_type> {13+offs, 14+offs}, + std::set<TriggerInfo::number_type> {15+offs, 110+offs, 112+offs}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123+offs, + 234+offs, + 345+offs, + std::vector<TriggerInfo::number_type> {6+offs, 7+offs, 8+offs}, + std::vector<TriggerInfo::number_type> {9+offs, 10+offs}, + std::vector<TriggerInfo::number_type> {11+offs, 12+offs, 13+offs, 14+offs}, + streamTags); + + return tinfo; +} + + +std::unique_ptr<EventInfo> make_ei (int offs) +{ + std::unique_ptr<EventID> id = make_id (offs); + std::unique_ptr<EventType> etype = make_type (offs); + std::unique_ptr<TriggerInfo> tinfo = make_tinfo (offs); + + auto ei = CxxUtils::make_unique<EventInfo> (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + ei->setEventFlags (ii, i*100+3); + ei->setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + ei->setActualInteractionsPerCrossing (123.5); + ei->setAverageInteractionsPerCrossing (321.5); + + return ei; +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + PileUpEventInfo trans1 (make_id(0).release(), + make_type(0).release(), + make_tinfo(0).release()); + trans1.addSubEvt (123, 432, PileUpTimeEventIndex::Signal, *make_ei(100), nullptr); + trans1.addSubEvt (223, 632, PileUpTimeEventIndex::Cavern, *make_ei(200), nullptr); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..8350e5d970f8f31052f5b204fffb9a61e3f36142 --- /dev/null +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx @@ -0,0 +1,249 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/PileUpEventInfoCnv_p3.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/PileUpEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> +#include <sstream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (static_cast<unsigned int>(p1.mc_event_weight(0)) == p2.mc_event_weight(0)); + //assert (p1.mc_channel_number() == p2.mc_channel_number()); + //assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void compare (const PileUpEventInfo::SubEvent& p1, + const PileUpEventInfo::SubEvent& p2) +{ + assert (p1.time() == p2.time()); + assert (p1.index() == p2.index()); + assert (p1.type() == p2.type()); + assert (p1.BCID() == p2.BCID()); + compare (*p1.pSubEvt, *p2.pSubEvt); +} + + +void compare (const PileUpEventInfo& p1, + const PileUpEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + + PileUpEventInfo::SubEvent::const_iterator beg1 = p1.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end1 = p1.endSubEvt(); + PileUpEventInfo::SubEvent::const_iterator beg2 = p2.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end2 = p2.endSubEvt(); + assert (std::distance (beg1, end1) == + std::distance (beg2, end2)); + for (; beg1 != end1; ++beg1, ++beg2) + compare (*beg1, *beg2); + + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const PileUpEventInfo& trans1) +{ + MsgStream log (0, "test"); + PileUpEventInfoCnv_p3 cnv; + PileUpEventInfo_p3 pers; + cnv.transToPers (&trans1, &pers, log); + PileUpEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +std::string stroffs (const char* s, int offs) +{ + std::ostringstream os; + os << s << offs; + return os.str(); +} + + +std::unique_ptr<EventID> make_id (int offs) +{ + return CxxUtils::make_unique<EventID> (1234+offs, 2345+offs, 3456+offs, + 4567+offs, 5678+offs, 6789+offs, + 4321+offs, 5432+offs, + 6543+offs, 7654+offs); +} + + +std::unique_ptr<EventType> make_type (int offs) +{ + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3+offs); + etype->add_type (13+offs); + etype->add_type (25+offs); + etype->add_type (101+offs); + etype->set_user_type (stroffs ("utype", offs)); + etype->set_mc_event_weight (1.5+offs, 0); + etype->set_mc_event_weight (2.5+offs, 1); + etype->set_mc_event_weight (3.5+offs, 2); + etype->set_mc_channel_number (123+offs); + etype->set_mc_event_number (345+offs); + + return etype; +} + + +std::unique_ptr<TriggerInfo> make_tinfo (TriggerInfo::number_type offs) +{ + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back (stroffs("asd", offs), + stroffs("zzz", offs), true, + std::set<TriggerInfo::number_type> {3+offs, 4+offs}, + std::set<TriggerInfo::number_type> {5+offs, 10+offs, 12+offs}); + streamTags.emplace_back (stroffs("fds", offs), + stroffs("qwe", offs), false, + std::set<TriggerInfo::number_type> {13+offs, 14+offs}, + std::set<TriggerInfo::number_type> {15+offs, 110+offs, 112+offs}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123+offs, + 234+offs, + 345+offs, + std::vector<TriggerInfo::number_type> {6+offs, 7+offs, 8+offs}, + std::vector<TriggerInfo::number_type> {9+offs, 10+offs}, + std::vector<TriggerInfo::number_type> {11+offs, 12+offs, 13+offs, 14+offs}, + streamTags); + + return tinfo; +} + + +std::unique_ptr<EventInfo> make_ei (int offs) +{ + std::unique_ptr<EventID> id = make_id (offs); + std::unique_ptr<EventType> etype = make_type (offs); + std::unique_ptr<TriggerInfo> tinfo = make_tinfo (offs); + + auto ei = CxxUtils::make_unique<EventInfo> (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + ei->setEventFlags (ii, i*100+3); + ei->setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + ei->setActualInteractionsPerCrossing (123.5); + ei->setAverageInteractionsPerCrossing (321.5); + + return ei; +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + PileUpEventInfo trans1 (make_id(0).release(), + make_type(0).release(), + make_tinfo(0).release()); + trans1.addSubEvt (123, 432, PileUpTimeEventIndex::Signal, *make_ei(100), nullptr); + trans1.addSubEvt (223, 632, PileUpTimeEventIndex::Cavern, *make_ei(200), nullptr); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..4b91aeb77cabf705e9d6622d6f85345222793e21 --- /dev/null +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx @@ -0,0 +1,249 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/PileUpEventInfoCnv_p4.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/PileUpEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> +#include <sstream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + //assert (p1.detector_mask2() == p2.detector_mask2()); + //assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p2.n_mc_event_weights() == 1); + assert (p1.mc_event_weight(0) == p2.mc_event_weight(0)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void compare (const PileUpEventInfo::SubEvent& p1, + const PileUpEventInfo::SubEvent& p2) +{ + assert (p1.time() == p2.time()); + assert (p1.index() == p2.index()); + assert (p1.type() == p2.type()); + assert (p1.BCID() == p2.BCID()); + compare (*p1.pSubEvt, *p2.pSubEvt); +} + + +void compare (const PileUpEventInfo& p1, + const PileUpEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + + PileUpEventInfo::SubEvent::const_iterator beg1 = p1.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end1 = p1.endSubEvt(); + PileUpEventInfo::SubEvent::const_iterator beg2 = p2.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end2 = p2.endSubEvt(); + assert (std::distance (beg1, end1) == + std::distance (beg2, end2)); + for (; beg1 != end1; ++beg1, ++beg2) + compare (*beg1, *beg2); + + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const PileUpEventInfo& trans1) +{ + MsgStream log (0, "test"); + PileUpEventInfoCnv_p4 cnv; + PileUpEventInfo_p4 pers; + cnv.transToPers (&trans1, &pers, log); + PileUpEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +std::string stroffs (const char* s, int offs) +{ + std::ostringstream os; + os << s << offs; + return os.str(); +} + + +std::unique_ptr<EventID> make_id (int offs) +{ + return CxxUtils::make_unique<EventID> (1234+offs, 2345+offs, 3456+offs, + 4567+offs, 5678+offs, 6789+offs, + 4321+offs, 5432+offs, + 6543+offs, 7654+offs); +} + + +std::unique_ptr<EventType> make_type (int offs) +{ + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3+offs); + etype->add_type (13+offs); + etype->add_type (25+offs); + etype->add_type (101+offs); + etype->set_user_type (stroffs ("utype", offs)); + etype->set_mc_event_weight (1.5+offs, 0); + etype->set_mc_event_weight (2.5+offs, 1); + etype->set_mc_event_weight (3.5+offs, 2); + etype->set_mc_channel_number (123+offs); + etype->set_mc_event_number (345+offs); + + return etype; +} + + +std::unique_ptr<TriggerInfo> make_tinfo (TriggerInfo::number_type offs) +{ + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back (stroffs("asd", offs), + stroffs("zzz", offs), true, + std::set<TriggerInfo::number_type> {3+offs, 4+offs}, + std::set<TriggerInfo::number_type> {5+offs, 10+offs, 12+offs}); + streamTags.emplace_back (stroffs("fds", offs), + stroffs("qwe", offs), false, + std::set<TriggerInfo::number_type> {13+offs, 14+offs}, + std::set<TriggerInfo::number_type> {15+offs, 110+offs, 112+offs}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123+offs, + 234+offs, + 345+offs, + std::vector<TriggerInfo::number_type> {6+offs, 7+offs, 8+offs}, + std::vector<TriggerInfo::number_type> {9+offs, 10+offs}, + std::vector<TriggerInfo::number_type> {11+offs, 12+offs, 13+offs, 14+offs}, + streamTags); + + return tinfo; +} + + +std::unique_ptr<EventInfo> make_ei (int offs) +{ + std::unique_ptr<EventID> id = make_id (offs); + std::unique_ptr<EventType> etype = make_type (offs); + std::unique_ptr<TriggerInfo> tinfo = make_tinfo (offs); + + auto ei = CxxUtils::make_unique<EventInfo> (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + ei->setEventFlags (ii, i*100+3); + ei->setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + ei->setActualInteractionsPerCrossing (123.5); + ei->setAverageInteractionsPerCrossing (321.5); + + return ei; +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + PileUpEventInfo trans1 (make_id(0).release(), + make_type(0).release(), + make_tinfo(0).release()); + trans1.addSubEvt (123, 432, PileUpTimeEventIndex::Signal, *make_ei(100), nullptr); + trans1.addSubEvt (223, 632, PileUpTimeEventIndex::Cavern, *make_ei(200), nullptr); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3b7d80e3cb8c3ee22d952b2809b5537223c05e24 --- /dev/null +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx @@ -0,0 +1,251 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/PileUpEventInfoCnv_p5.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/PileUpEventInfo.h" +#include "EventInfo/TriggerInfo.h" +#include "EventInfo/EventType.h" +#include "EventInfo/EventID.h" +#include "CxxUtils/make_unique.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> +#include <sstream> + + +void compare (const EventID& p1, + const EventID& p2) +{ + assert (p1.run_number() == p2.run_number()); + assert (p1.event_number() == p2.event_number()); + assert (p1.time_stamp() == p2.time_stamp()); + assert (p1.time_stamp_ns_offset() == p2.time_stamp_ns_offset()); + assert (p1.lumi_block() == p2.lumi_block()); + assert (p1.bunch_crossing_id() == p2.bunch_crossing_id()); + assert (p1.detector_mask0() == p2.detector_mask0()); + assert (p1.detector_mask1() == p2.detector_mask1()); + assert (p1.detector_mask2() == p2.detector_mask2()); + assert (p1.detector_mask3() == p2.detector_mask3()); +} + + +void compare (const EventType& p1, + const EventType& p2) +{ + EventType::BitMaskIterator beg1 = p1.bit_mask_begin(); + EventType::BitMaskIterator end1 = p1.bit_mask_end(); + EventType::BitMaskIterator beg2 = p2.bit_mask_begin(); + EventType::BitMaskIterator end2 = p2.bit_mask_end(); + assert (end1-beg1 == end2-beg2); + assert (std::equal (beg1, end1, beg2)); + + assert (p1.user_type() == p2.user_type()); + assert (p1.get_detdescr_tags() == p2.get_detdescr_tags()); + + assert (p1.n_mc_event_weights() == p2.n_mc_event_weights()); + for (unsigned int i = 0; i < p1.n_mc_event_weights(); i++) + assert (p1.mc_event_weight(i) == p2.mc_event_weight(i)); + assert (p1.mc_channel_number() == p2.mc_channel_number()); + assert (p1.mc_event_number() == p2.mc_event_number()); +} + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void compare (const EventInfo& p1, + const EventInfo& p2) +{ + compare (*p1.event_ID(), *p2.event_ID()); + compare (*p1.event_type(), *p2.event_type()); + compare (*p1.trigger_info(), *p2.trigger_info()); + compare (*p1.trigger_info(), *p2.trigger_info()); + + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + assert (p1.eventFlags(ii) == p2.eventFlags(ii)); + assert (p1.errorState(ii) == p2.errorState(ii)); + } + + assert (p1.actualInteractionsPerCrossing() == p2.actualInteractionsPerCrossing()); + assert (p1.averageInteractionsPerCrossing() == p2.averageInteractionsPerCrossing()); +} + + +void compare (const PileUpEventInfo::SubEvent& p1, + const PileUpEventInfo::SubEvent& p2) +{ + assert (p1.time() == p2.time()); + assert (p1.index() == p2.index()); + assert (p1.type() == p2.type()); + assert (p1.BCID() == p2.BCID()); + compare (*p1.pSubEvt, *p2.pSubEvt); +} + + +void compare (const PileUpEventInfo& p1, + const PileUpEventInfo& p2) +{ + compare (static_cast<const EventInfo&>(p1), + static_cast<const EventInfo&>(p2)); + + //PileUpEventInfo::SubEvent::const_iterator beg1 = p1.beginSubEvt(); + //PileUpEventInfo::SubEvent::const_iterator end1 = p1.endSubEvt(); + PileUpEventInfo::SubEvent::const_iterator beg2 = p2.beginSubEvt(); + PileUpEventInfo::SubEvent::const_iterator end2 = p2.endSubEvt(); + assert (beg2 == end2); + //assert (std::distance (beg1, end1) == + // std::distance (beg2, end2)); + //for (; beg1 != end1; ++beg1, ++beg2) + // compare (*beg1, *beg2); + + compare (*p1.event_ID(), *p2.event_ID()); +} + + +void testit (const PileUpEventInfo& trans1) +{ + MsgStream log (0, "test"); + PileUpEventInfoCnv_p5 cnv; + PileUpEventInfo_p5 pers; + cnv.transToPers (&trans1, &pers, log); + PileUpEventInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +std::string stroffs (const char* s, int offs) +{ + std::ostringstream os; + os << s << offs; + return os.str(); +} + + +std::unique_ptr<EventID> make_id (int offs) +{ + return CxxUtils::make_unique<EventID> (1234+offs, 2345+offs, 3456+offs, + 4567+offs, 5678+offs, 6789+offs, + 4321+offs, 5432+offs, + 6543+offs, 7654+offs); +} + + +std::unique_ptr<EventType> make_type (int offs) +{ + auto etype = CxxUtils::make_unique<EventType>(); + etype->add_type (3+offs); + etype->add_type (13+offs); + etype->add_type (25+offs); + etype->add_type (101+offs); + etype->set_user_type (stroffs ("utype", offs)); + etype->set_mc_event_weight (1.5+offs, 0); + etype->set_mc_event_weight (2.5+offs, 1); + etype->set_mc_event_weight (3.5+offs, 2); + etype->set_mc_channel_number (123+offs); + etype->set_mc_event_number (345+offs); + + return etype; +} + + +std::unique_ptr<TriggerInfo> make_tinfo (TriggerInfo::number_type offs) +{ + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back (stroffs("asd", offs), + stroffs("zzz", offs), true, + std::set<TriggerInfo::number_type> {3+offs, 4+offs}, + std::set<TriggerInfo::number_type> {5+offs, 10+offs, 12+offs}); + streamTags.emplace_back (stroffs("fds", offs), + stroffs("qwe", offs), false, + std::set<TriggerInfo::number_type> {13+offs, 14+offs}, + std::set<TriggerInfo::number_type> {15+offs, 110+offs, 112+offs}); + auto tinfo = CxxUtils::make_unique<TriggerInfo> + (123+offs, + 234+offs, + 345+offs, + std::vector<TriggerInfo::number_type> {6+offs, 7+offs, 8+offs}, + std::vector<TriggerInfo::number_type> {9+offs, 10+offs}, + std::vector<TriggerInfo::number_type> {11+offs, 12+offs, 13+offs, 14+offs}, + streamTags); + + return tinfo; +} + + +std::unique_ptr<EventInfo> make_ei (int offs) +{ + std::unique_ptr<EventID> id = make_id (offs); + std::unique_ptr<EventType> etype = make_type (offs); + std::unique_ptr<TriggerInfo> tinfo = make_tinfo (offs); + + auto ei = CxxUtils::make_unique<EventInfo> (id.release(), etype.release(), tinfo.release()); + for (unsigned int i = 0; i < EventInfo::nDets; i++) { + EventInfo::EventFlagSubDet ii = static_cast<EventInfo::EventFlagSubDet>(i); + ei->setEventFlags (ii, i*100+3); + ei->setErrorState (ii, static_cast<EventInfo::EventFlagErrorState>(i%3)); + } + ei->setActualInteractionsPerCrossing (123.5); + ei->setAverageInteractionsPerCrossing (321.5); + + return ei; +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + PileUpEventInfo trans1 (make_id(0).release(), + make_type(0).release(), + make_tinfo(0).release()); + trans1.addSubEvt (123, 432, PileUpTimeEventIndex::Signal, *make_ei(100), nullptr); + trans1.addSubEvt (223, 632, PileUpTimeEventIndex::Cavern, *make_ei(200), nullptr); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..55f4f367342b7d1b8bc9292e27b7afc1d4ec950d --- /dev/null +++ b/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx @@ -0,0 +1,81 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/TriggerInfoCnv_p1_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/TriggerInfoCnv_p1.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/TriggerInfo.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + //assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + //assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p2.level2TriggerInfo().size() == 1); + assert (p1.level2TriggerInfo()[0] == p2.level2TriggerInfo()[0]); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + //assert (p1.streamTags().size() == p2.streamTags().size()); + //for (size_t i = 0; i < p1.streamTags().size(); i++) + // compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void testit (const TriggerInfo& trans1) +{ + MsgStream log (0, "test"); + TriggerInfoCnv_p1 cnv; + TriggerInfo_p1 pers; + cnv.transToPers (&trans1, &pers, log); + TriggerInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + TriggerInfo trans1 + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..24e56af4d3a654c91db48facd616fd0ffe3d8fe5 --- /dev/null +++ b/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx @@ -0,0 +1,91 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/TriggerInfoCnv_p2_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/TriggerInfoCnv_p2.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/TriggerInfo.h" +#include "GaudiKernel/MsgStream.h" +#include <cassert> +#include <iostream> + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void testit (const TriggerInfo& trans1) +{ + MsgStream log (0, "test"); + TriggerInfoCnv_p2 cnv; + TriggerInfo_p2 pers; + cnv.transToPers (&trans1, &pers, log); + TriggerInfo trans2; + cnv.persToTrans (&pers, &trans2, log); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + TriggerInfo trans1 + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +} diff --git a/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..8f0ea4a03431e3c8bfbcaba602dbb97b9e788fb5 --- /dev/null +++ b/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx @@ -0,0 +1,91 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file EventTPCnv/test/TriggerInfoCnv_p3_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2016 + * @brief Regression tests. + */ + +#undef NDEBUG +#include "EventTPCnv/TriggerInfoCnv_p3.h" +#include "TestTools/leakcheck.h" +#include "EventInfo/TriggerInfo.h" +#include <cassert> +#include <iostream> + + +void compare (const TriggerInfo::StreamTag& p1, + const TriggerInfo::StreamTag& p2) +{ + assert (p1.name() == p2.name()); + assert (p1.type() == p2.type()); + assert (p1.obeysLumiblock() == p2.obeysLumiblock()); + //assert (p1.robs() == p2.robs()); + //assert (p1.dets() == p2.dets()); +} + + +void compare (const TriggerInfo& p1, + const TriggerInfo& p2) +{ + assert (p1.statusElement() == p2.statusElement()); + assert (p1.extendedLevel1ID() == p2.extendedLevel1ID()); + assert (p1.level1TriggerType() == p2.level1TriggerType()); + assert (p1.level1TriggerInfo() == p2.level1TriggerInfo()); + assert (p1.level2TriggerInfo() == p2.level2TriggerInfo()); + assert (p1.eventFilterInfo() == p2.eventFilterInfo()); + + assert (p1.streamTags().size() == p2.streamTags().size()); + for (size_t i = 0; i < p1.streamTags().size(); i++) + compare (p1.streamTags()[i], p2.streamTags()[i]); +} + + +void testit (const TriggerInfo& trans1) +{ + TriggerInfoCnv_p3 cnv; + std::vector<unsigned int> pers; + cnv.transToPers (&trans1, pers); + std::vector<unsigned int>::const_iterator it = pers.begin(); + TriggerInfo trans2; + cnv.persToTrans (it, &trans2, false); + assert (it == pers.end()); + compare (trans1, trans2); +} + + +void test1() +{ + std::cout << "test1\n"; + Athena_test::Leakcheck check; + + + std::vector<TriggerInfo::StreamTag> streamTags; + streamTags.emplace_back ("asd", "zzz", true, + std::set<TriggerInfo::number_type> {3, 4}, + std::set<TriggerInfo::number_type> {5, 10, 12}); + streamTags.emplace_back ("fds", "qwe", false, + std::set<TriggerInfo::number_type> {13, 14}, + std::set<TriggerInfo::number_type> {15, 110, 112}); + TriggerInfo trans1 + (123, + 234, + 345, + std::vector<TriggerInfo::number_type> {6, 7, 8}, + std::vector<TriggerInfo::number_type> {9, 10}, + std::vector<TriggerInfo::number_type> {11, 12, 13, 14}, + streamTags); + + testit (trans1); +} + + +int main() +{ + test1(); + return 0; +}