diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/CMakeLists.txt b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f42c12d99eb96b540f5b6c553e0e56dde26f0ca3
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/CMakeLists.txt
@@ -0,0 +1,78 @@
+################################################################################
+# Package: LUCID_EventTPCnv
+################################################################################
+
+# Declare the package name:
+atlas_subdir( LUCID_EventTPCnv )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PUBLIC
+                          Database/AthenaPOOL/AthenaPoolCnvSvc
+                          Database/AthenaPOOL/AthenaPoolUtilities
+                          ForwardDetectors/LUCID/LUCID_RawEvent
+                          ForwardDetectors/LUCID/LUCID_SimUtils/LUCID_SimEvent
+                          Generators/GeneratorObjectsTPCnv
+                          PRIVATE
+                          AtlasTest/TestTools
+                          DetectorDescription/Identifier
+                          GaudiKernel )
+
+# External dependencies:
+find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
+
+# Component(s) in the package:
+atlas_add_library( LUCID_EventTPCnv
+                   src/*.cxx
+                   PUBLIC_HEADERS LUCID_EventTPCnv
+                   PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                   LINK_LIBRARIES AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv AthenaPoolCnvSvcLib
+                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} TestTools Identifier GaudiKernel )
+
+atlas_add_dictionary( LUCID_EventTPCnvDict
+                      LUCID_EventTPCnv/LUCID_EventTPCnvDict.h
+                      LUCID_EventTPCnv/selection.xml
+                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_DigitCnv_p1_test
+                SOURCES
+                test/LUCID_DigitCnv_p1_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_DigitCnv_p2_test
+                SOURCES
+                test/LUCID_DigitCnv_p2_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_DigitContainerCnv_p1_test
+                SOURCES
+                test/LUCID_DigitContainerCnv_p1_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_DigitContainerCnv_p2_test
+                SOURCES
+                test/LUCID_DigitContainerCnv_p2_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_RawDataCnv_p1_test
+                SOURCES
+                test/LUCID_RawDataCnv_p1_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_RawDataContainerCnv_p1_test
+                SOURCES
+                test/LUCID_RawDataContainerCnv_p1_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
+atlas_add_test( LUCID_SimHitCnv_p1_test
+                SOURCES
+                test/LUCID_SimHitCnv_p1_test.cxx
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AthenaPoolUtilities LUCID_RawEvent LUCID_SimEvent GeneratorObjectsTPCnv TestTools Identifier GaudiKernel LUCID_EventTPCnv )
+
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/LUCID_EventTPCnv/LUCID_SimHitCnv_p1.h b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/LUCID_EventTPCnv/LUCID_SimHitCnv_p1.h
index ff9a45511af4818ffe22945221213a8e70ac99a4..a566be2460e0fb9a0d5185abedbfad0916038a06 100644
--- a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/LUCID_EventTPCnv/LUCID_SimHitCnv_p1.h
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/LUCID_EventTPCnv/LUCID_SimHitCnv_p1.h
@@ -6,6 +6,7 @@
 #define LUCID_SIMHITCNV_P1_H
 
 #include "LUCID_EventTPCnv/LUCID_SimHit_p1.h"
+#include "LUCID_SimEvent/LUCID_SimHit.h"
 
 #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h"
 
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/cmt/requirements b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/cmt/requirements
index d6a3d41668e7f63841023e3901d81738b3a46e55..d7e347306334aec97ed05fd58834a2718f1c04da 100644
--- a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/cmt/requirements
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/cmt/requirements
@@ -7,6 +7,7 @@ use AthenaPoolCnvSvc       AthenaPoolCnvSvc-*         Database/AthenaPOOL
 use GeneratorObjectsTPCnv  GeneratorObjectsTPCnv-*    Generators
 use AthenaPoolUtilities    AthenaPoolUtilities-*      Database/AthenaPOOL
 use LUCID_RawEvent 	   LUCID_RawEvent-*	      ForwardDetectors/LUCID
+use LUCID_SimEvent         LUCID_SimEvent-*           ForwardDetectors/LUCID/LUCID_SimUtils
 
 include_dirs "$(LUCID_EventTPCnv_root)/LUCID_EventTPCnv"
 
@@ -19,10 +20,19 @@ private
 use GaudiInterface    GaudiInterface-*    External
 use AtlasReflex       AtlasReflex-*       External -no_auto_imports
 use Identifier        Identifier-*        DetectorDescription
-use LUCID_SimEvent    LUCID_SimEvent-*    ForwardDetectors/LUCID/LUCID_SimUtils
 
 apply_pattern lcgdict dict=LUCID_EventTPCnv  selectionfile=selection.xml headerfiles="../LUCID_EventTPCnv/LUCID_EventTPCnvDict.h"
 
 end_private
 
 
+private
+use TestTools      TestTools-*         AtlasTest 
+apply_pattern UnitTest_run unit_test=LUCID_DigitCnv_p1
+apply_pattern UnitTest_run unit_test=LUCID_DigitCnv_p2
+apply_pattern UnitTest_run unit_test=LUCID_DigitContainerCnv_p1
+apply_pattern UnitTest_run unit_test=LUCID_DigitContainerCnv_p2
+apply_pattern UnitTest_run unit_test=LUCID_RawDataCnv_p1
+apply_pattern UnitTest_run unit_test=LUCID_RawDataContainerCnv_p1
+apply_pattern UnitTest_run unit_test=LUCID_SimHitCnv_p1
+
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitCnv_p1_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitCnv_p1_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitCnv_p1_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitCnv_p2_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitCnv_p2_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitCnv_p2_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitContainerCnv_p1_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitContainerCnv_p1_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitContainerCnv_p1_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitContainerCnv_p2_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitContainerCnv_p2_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_DigitContainerCnv_p2_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_RawDataCnv_p1_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_RawDataCnv_p1_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_RawDataCnv_p1_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_RawDataContainerCnv_p1_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_RawDataContainerCnv_p1_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_RawDataContainerCnv_p1_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_SimHitCnv_p1_test.ref b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_SimHitCnv_p1_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a5bce3fd2565d8f458555a0c6f42d0504a848bd5
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/share/LUCID_SimHitCnv_p1_test.ref
@@ -0,0 +1 @@
+test1
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p1.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p1.cxx
index bf5052bf1336438d082e38f92a9fee8de04f0c68..48df46e330f186149cec2df3d26b9846d3e1ac8b 100644
--- a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p1.cxx
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_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 "LUCID_RawEvent/LUCID_Digit.h"
-#undef private
-#undef protected
-
 #include "LUCID_EventTPCnv/LUCID_Digit_p1.h"
 #include "LUCID_EventTPCnv/LUCID_DigitCnv_p1.h"
 
@@ -15,22 +10,23 @@ void LUCID_DigitCnv_p1::persToTrans(const LUCID_Digit_p1* persObj, LUCID_Digit*
 
   log << MSG::DEBUG << " In LUCID_DigitCnv_p1::persToTrans " << endreq;
   
-  transObj->m_tubeID = persObj->m_tubeID;
-  transObj->m_npe    = persObj->m_npe;
-  transObj->m_npeGas = persObj->m_npeGas;
-  transObj->m_npePmt = persObj->m_npePmt;
-  transObj->m_qdc    = persObj->m_qdc;
-  transObj->m_tdc    = persObj->m_tdc;
+  *transObj = LUCID_Digit (persObj->m_tubeID,
+                           persObj->m_npe,
+                           persObj->m_npeGas,
+                           persObj->m_npePmt,
+                           persObj->m_qdc,
+                           persObj->m_tdc,
+                           false);
 }
 
 void LUCID_DigitCnv_p1::transToPers(const LUCID_Digit* transObj, LUCID_Digit_p1* persObj, MsgStream& log) {
 
   log << MSG::DEBUG << " In LUCID_DigitCnv_p1::transToPers " << endreq;
   
-  persObj->m_tubeID = transObj->m_tubeID;
-  persObj->m_npe    = transObj->m_npe;
-  persObj->m_npeGas = transObj->m_npeGas;
-  persObj->m_npePmt = transObj->m_npePmt;
-  persObj->m_qdc    = transObj->m_qdc;
-  persObj->m_tdc    = transObj->m_tdc;
+  persObj->m_tubeID = transObj->getTubeID();
+  persObj->m_npe    = transObj->getNpe();
+  persObj->m_npeGas = transObj->getNpeGas();
+  persObj->m_npePmt = transObj->getNpePmt();
+  persObj->m_qdc    = transObj->getQDC();
+  persObj->m_tdc    = transObj->getTDC();
 }
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p2.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p2.cxx
index 03a68146a41b307aff5d5d7b0617379008a439b0..aae9cce11cb5e37a3343397f268602c15ba36efc 100644
--- a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p2.cxx
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_DigitCnv_p2.cxx
@@ -2,37 +2,32 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#define private public
-#define protected public
 #include "LUCID_RawEvent/LUCID_Digit.h"
-#undef private
-#undef protected
-
 #include "LUCID_EventTPCnv/LUCID_Digit_p2.h"
 #include "LUCID_EventTPCnv/LUCID_DigitCnv_p2.h"
 
 void LUCID_DigitCnv_p2::persToTrans(const LUCID_Digit_p2* persObj, LUCID_Digit* transObj, MsgStream &log) {
 
   log << MSG::DEBUG << " In LUCID_DigitCnv_p2::persToTrans " << endreq;
-  
-  transObj->m_tubeID = persObj->m_tubeID;
-  transObj->m_npe    = persObj->m_npe;
-  transObj->m_npeGas = persObj->m_npeGas;
-  transObj->m_npePmt = persObj->m_npePmt;
-  transObj->m_qdc    = persObj->m_qdc;
-  transObj->m_tdc    = persObj->m_tdc;
-  transObj->m_isHit  = persObj->m_isHit;
+
+  *transObj = LUCID_Digit (persObj->m_tubeID,
+                           persObj->m_npe,
+                           persObj->m_npeGas,
+                           persObj->m_npePmt,
+                           persObj->m_qdc,
+                           persObj->m_tdc,
+                           persObj->m_isHit);
 }
 
 void LUCID_DigitCnv_p2::transToPers(const LUCID_Digit* transObj, LUCID_Digit_p2* persObj, MsgStream& log) {
 
   log << MSG::DEBUG << " In LUCID_DigitCnv_p2::transToPers " << endreq;
   
-  persObj->m_tubeID = transObj->m_tubeID;
-  persObj->m_npe    = transObj->m_npe;
-  persObj->m_npeGas = transObj->m_npeGas;
-  persObj->m_npePmt = transObj->m_npePmt;
-  persObj->m_qdc    = transObj->m_qdc;
-  persObj->m_tdc    = transObj->m_tdc;
-  persObj->m_isHit  = transObj->m_isHit;
+  persObj->m_tubeID = transObj->getTubeID();
+  persObj->m_npe    = transObj->getNpe();
+  persObj->m_npeGas = transObj->getNpeGas();
+  persObj->m_npePmt = transObj->getNpePmt();
+  persObj->m_qdc    = transObj->getQDC();
+  persObj->m_tdc    = transObj->getTDC();
+  persObj->m_isHit  = transObj->isHit();
 }
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_RawDataCnv_p1.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_RawDataCnv_p1.cxx
index 604102e9b5daea8fc2927ab91b20b2a00ccc8456..4dbea949f4359a1ecba32ec5f063eb2cb27f7c19 100644
--- a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_RawDataCnv_p1.cxx
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_RawDataCnv_p1.cxx
@@ -2,56 +2,51 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#define private public
-#define protected public
 #include "LUCID_RawEvent/LUCID_RawData.h"
-#undef private
-#undef protected
-
 #include "GaudiKernel/MsgStream.h"
-#include "LUCID_RawData_p1.h"
-#include "LUCID_RawDataCnv_p1.h"
+#include "LUCID_EventTPCnv/LUCID_RawData_p1.h"
+#include "LUCID_EventTPCnv/LUCID_RawDataCnv_p1.h"
 
 void LUCID_RawDataCnv_p1::persToTrans(const LUCID_RawData_p1* persObj, LUCID_RawData* transObj, MsgStream &log) {
 
   log << MSG::DEBUG << "In LUCID_RawDataCnv_p1:persToTrans" << endreq;
   
-  transObj->m_word0  = persObj->m_word0;
-  transObj->m_word1  = persObj->m_word1;
-  transObj->m_word2  = persObj->m_word2;
-  transObj->m_word3  = persObj->m_word3;
-
-  transObj->m_word0p = persObj->m_word0p;
-  transObj->m_word1p = persObj->m_word1p;
-  transObj->m_word2p = persObj->m_word2p;
-  transObj->m_word3p = persObj->m_word3p;
-
-  transObj->m_word0n = persObj->m_word0n;
-  transObj->m_word1n = persObj->m_word1n;
-  transObj->m_word2n = persObj->m_word2n;
-  transObj->m_word3n = persObj->m_word3n;
-
-  transObj->m_status = persObj->m_status;
+  transObj->setWord0  (persObj->m_word0);
+  transObj->setWord1  (persObj->m_word1);
+  transObj->setWord2  (persObj->m_word2);
+  transObj->setWord3  (persObj->m_word3);
+
+  transObj->setWord0p (persObj->m_word0p);
+  transObj->setWord1p (persObj->m_word1p);
+  transObj->setWord2p (persObj->m_word2p);
+  transObj->setWord3p (persObj->m_word3p);
+
+  transObj->setWord0n (persObj->m_word0n);
+  transObj->setWord1n (persObj->m_word1n);
+  transObj->setWord2n (persObj->m_word2n);
+  transObj->setWord3n (persObj->m_word3n);
+
+  transObj->setStatus (persObj->m_status);
 }
 
 void LUCID_RawDataCnv_p1::transToPers(const LUCID_RawData* transObj, LUCID_RawData_p1* persObj, MsgStream &log) {
   
   log << MSG::DEBUG << "In LUCID_RawDataCnv_p1:transToPers" << endreq;
   
-  persObj->m_word0  = transObj->m_word0;
-  persObj->m_word1  = transObj->m_word1;
-  persObj->m_word2  = transObj->m_word2;
-  persObj->m_word3  = transObj->m_word3;
-
-  persObj->m_word0p = transObj->m_word0p;
-  persObj->m_word1p = transObj->m_word1p;
-  persObj->m_word2p = transObj->m_word2p;
-  persObj->m_word3p = transObj->m_word3p;
-
-  persObj->m_word0n = transObj->m_word0n;
-  persObj->m_word1n = transObj->m_word1n;
-  persObj->m_word2n = transObj->m_word2n;
-  persObj->m_word3n = transObj->m_word3n;
-
-  persObj->m_status = transObj->m_status;
+  persObj->m_word0  = transObj->getWord0();
+  persObj->m_word1  = transObj->getWord1();
+  persObj->m_word2  = transObj->getWord2();
+  persObj->m_word3  = transObj->getWord3();
+
+  persObj->m_word0p = transObj->getWord0p();
+  persObj->m_word1p = transObj->getWord1p();
+  persObj->m_word2p = transObj->getWord2p();
+  persObj->m_word3p = transObj->getWord3p();
+
+  persObj->m_word0n = transObj->getWord0n();
+  persObj->m_word1n = transObj->getWord1n();
+  persObj->m_word2n = transObj->getWord2n();
+  persObj->m_word3n = transObj->getWord3n();
+
+  persObj->m_status = transObj->getStatus();
 }
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_SimHitCnv_p1.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_SimHitCnv_p1.cxx
index 97c5405ef662d68cacc73a8bfee4d8b31ef86eac..80ce0ce8dbf50fccc3a1d3c8c92d5d80d22d2111 100644
--- a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_SimHitCnv_p1.cxx
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/src/LUCID_SimHitCnv_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 "LUCID_SimEvent/LUCID_SimHit.h"
-#undef private
-#undef protected
-
 #include "Identifier/Identifier.h"
 #include "GeneratorObjectsTPCnv/HepMcParticleLinkCnv_p1.h"
 #include "LUCID_EventTPCnv/LUCID_SimHitCnv_p1.h"
@@ -16,24 +11,23 @@ void LUCID_SimHitCnv_p1::persToTrans(const LUCID_SimHit_p1* persObj, LUCID_SimHi
 
   log << MSG::DEBUG << "LUCID_SimHitCnv_p1::persToTrans called " << endreq;
   
-  HepMcParticleLinkCnv_p1 HepMcPLCnv;
-  
-  transObj->m_tubeID        = persObj->m_tubeID;
-  transObj->m_track         = persObj->m_track;
-  transObj->m_pdgCode       = persObj->m_pdgCode;
-  transObj->m_genVolume     = persObj->m_genVolume;
-  transObj->m_stepStartPosX = persObj->m_stepStartPosX;
-  transObj->m_stepStartPosY = persObj->m_stepStartPosY;
-  transObj->m_stepStartPosZ = persObj->m_stepStartPosZ;
-  transObj->m_stepEndPosX   = persObj->m_stepEndPosX;
-  transObj->m_stepEndPosY   = persObj->m_stepEndPosY;
-  transObj->m_stepEndPosZ   = persObj->m_stepEndPosZ;
-  transObj->m_preStepTime   = persObj->m_preStepTime;
-  transObj->m_postStepTime  = persObj->m_postStepTime; 
-  transObj->m_wavelength    = persObj->m_wavelength;
-  transObj->m_energy        = persObj->m_energy;
-  
-  HepMcPLCnv.persToTrans(&(persObj->m_partLink),&(transObj->m_partLink), log);   
+  // redundant with m_track.
+  //HepMcParticleLinkCnv_p1 HepMcPLCnv;
+  //HepMcPLCnv.persToTrans(&(persObj->m_partLink),&(transObj->m_partLink), log);   
+  *transObj = LUCID_SimHit (persObj->m_tubeID,
+                            persObj->m_pdgCode,
+                            persObj->m_track,
+                            persObj->m_genVolume,
+                            persObj->m_stepStartPosX,
+                            persObj->m_stepStartPosY,
+                            persObj->m_stepStartPosZ,
+                            persObj->m_stepEndPosX,
+                            persObj->m_stepEndPosY,
+                            persObj->m_stepEndPosZ,
+                            persObj->m_preStepTime,
+                            persObj->m_postStepTime, 
+                            persObj->m_wavelength,
+                            persObj->m_energy);
 }
 
 void LUCID_SimHitCnv_p1::transToPers(const LUCID_SimHit* transObj, LUCID_SimHit_p1* persObj, MsgStream& log) {
@@ -42,20 +36,20 @@ void LUCID_SimHitCnv_p1::transToPers(const LUCID_SimHit* transObj, LUCID_SimHit_
   
   HepMcParticleLinkCnv_p1 HepMcPLCnv;
   
-  persObj->m_tubeID        = transObj->m_tubeID;
-  persObj->m_track         = transObj->m_track;
-  persObj->m_pdgCode       = transObj->m_pdgCode;
-  persObj->m_genVolume     = transObj->m_genVolume;
-  persObj->m_stepStartPosX = transObj->m_stepStartPosX;
-  persObj->m_stepStartPosY = transObj->m_stepStartPosY;
-  persObj->m_stepStartPosZ = transObj->m_stepStartPosZ;
-  persObj->m_stepEndPosX   = transObj->m_stepEndPosX;
-  persObj->m_stepEndPosY   = transObj->m_stepEndPosY;
-  persObj->m_stepEndPosZ   = transObj->m_stepEndPosZ;
-  persObj->m_preStepTime   = transObj->m_preStepTime;
-  persObj->m_postStepTime  = transObj->m_postStepTime;
-  persObj->m_wavelength    = transObj->m_wavelength;
-  persObj->m_energy        = transObj->m_energy;
+  persObj->m_tubeID        = transObj->GetTubeID();
+  persObj->m_track         = transObj->GetTrack();
+  persObj->m_pdgCode       = transObj->GetPdgCode();
+  persObj->m_genVolume     = transObj->GetGenVolume();
+  persObj->m_stepStartPosX = transObj->GetX();
+  persObj->m_stepStartPosY = transObj->GetY();
+  persObj->m_stepStartPosZ = transObj->GetZ();
+  persObj->m_stepEndPosX   = transObj->GetEPX();
+  persObj->m_stepEndPosY   = transObj->GetEPY();
+  persObj->m_stepEndPosZ   = transObj->GetEPZ();
+  persObj->m_preStepTime   = transObj->GetPreStepTime();
+  persObj->m_postStepTime  = transObj->GetPostStepTime();
+  persObj->m_wavelength    = transObj->GetWavelength();
+  persObj->m_energy        = transObj->GetEnergy();
   
-  HepMcPLCnv.transToPers(&(transObj->m_partLink),&(persObj->m_partLink), log);   
+  HepMcPLCnv.transToPers(&(transObj->particleLink()),&(persObj->m_partLink), log);   
 }
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitCnv_p1_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitCnv_p1_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..0aae053fd15ea9bf2f50d7498b613ba898834248
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitCnv_p1_test.cxx
@@ -0,0 +1,60 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_DigitCnv_p1_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_DigitCnv_p1.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_DigitCnv_p1.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_Digit& p1,
+              const LUCID_Digit& p2)
+{
+  assert (p1.getTubeID() == p2.getTubeID());
+  assert (p1.getNpe()    == p2.getNpe());
+  assert (p1.getNpeGas() == p2.getNpeGas());
+  assert (p1.getNpePmt() == p2.getNpePmt());
+  assert (p1.getQDC()    == p2.getQDC());
+  assert (p1.getTDC()    == p2.getTDC());
+  assert (false          == p2.isHit());
+}
+
+
+void testit (const LUCID_Digit& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_DigitCnv_p1 cnv;
+  LUCID_Digit_p1 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_Digit trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_Digit trans1 (1, 2, 3, 4, 5, 6, true);
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitCnv_p2_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitCnv_p2_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..1b5bd9c03f270eb58eb2a07e2f1bdc247c2128f8
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitCnv_p2_test.cxx
@@ -0,0 +1,60 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_DigitCnv_p2_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_DigitCnv_p2.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_DigitCnv_p2.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_Digit& p1,
+              const LUCID_Digit& p2)
+{
+  assert (p1.getTubeID() == p2.getTubeID());
+  assert (p1.getNpe()    == p2.getNpe());
+  assert (p1.getNpeGas() == p2.getNpeGas());
+  assert (p1.getNpePmt() == p2.getNpePmt());
+  assert (p1.getQDC()    == p2.getQDC());
+  assert (p1.getTDC()    == p2.getTDC());
+  assert (p1.isHit()     == p2.isHit());
+}
+
+
+void testit (const LUCID_Digit& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_DigitCnv_p2 cnv;
+  LUCID_Digit_p2 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_Digit trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_Digit trans1 (1, 2.5, 3, 4, 5, 6, true);
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p1_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p1_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b956bea260a95090c091f1684fcc6ef188b9ca4f
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p1_test.cxx
@@ -0,0 +1,74 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p1_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_DigitContainerCnv_p1.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_DigitContainerCnv_p1.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_Digit& p1,
+              const LUCID_Digit& p2)
+{
+  assert (p1.getTubeID() == p2.getTubeID());
+  assert (p1.getNpe()    == p2.getNpe());
+  assert (p1.getNpeGas() == p2.getNpeGas());
+  assert (p1.getNpePmt() == p2.getNpePmt());
+  assert (p1.getQDC()    == p2.getQDC());
+  assert (p1.getTDC()    == p2.getTDC());
+  assert (false          == p2.isHit());
+}
+
+
+
+void compare (const LUCID_DigitContainer& p1,
+              const LUCID_DigitContainer& p2)
+{
+  assert (p1.size() == p2.size());
+  for (size_t i = 0; i < p1.size(); i++)
+    compare (*p1[i], *p2[i]);
+}
+
+
+void testit (const LUCID_DigitContainer& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_DigitContainerCnv_p1 cnv;
+  LUCID_DigitContainer_p1 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_DigitContainer trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_DigitContainer trans1;
+  for (int i=0; i < 10; i++) {
+    int o = i*100;
+    trans1.push_back (new LUCID_Digit (1+o, 2+o, 3+o, 4+o, 5+o, 6+o, i&1));
+  }
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p2_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p2_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..8bc2ecce2cae0e7cb1fefc43d2d4b91850d29fb8
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p2_test.cxx
@@ -0,0 +1,74 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_DigitContainerCnv_p2_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_DigitContainerCnv_p2.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_DigitContainerCnv_p2.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_Digit& p1,
+              const LUCID_Digit& p2)
+{
+  assert (p1.getTubeID() == p2.getTubeID());
+  assert (p1.getNpe()    == p2.getNpe());
+  assert (p1.getNpeGas() == p2.getNpeGas());
+  assert (p1.getNpePmt() == p2.getNpePmt());
+  assert (p1.getQDC()    == p2.getQDC());
+  assert (p1.getTDC()    == p2.getTDC());
+  assert (p1.isHit()     == p2.isHit());
+}
+
+
+
+void compare (const LUCID_DigitContainer& p1,
+              const LUCID_DigitContainer& p2)
+{
+  assert (p1.size() == p2.size());
+  for (size_t i = 0; i < p1.size(); i++)
+    compare (*p1[i], *p2[i]);
+}
+
+
+void testit (const LUCID_DigitContainer& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_DigitContainerCnv_p2 cnv;
+  LUCID_DigitContainer_p2 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_DigitContainer trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_DigitContainer trans1;
+  for (int i=0; i < 10; i++) {
+    int o = i*100;
+    trans1.push_back (new LUCID_Digit (1+o, 2.5+o, 3+o, 4+o, 5+o, 6+o, i&1));
+  }
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_EventTPCnv.xml b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_EventTPCnv.xml
new file mode 100755
index 0000000000000000000000000000000000000000..fc5c7210b69c4e188696dfd5efdfaa25682dae9d
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_EventTPCnv.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<atn>
+   <TEST name="LUCID_EventTPCnvTests" type="makecheck">
+      <package>ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv</package>
+      <timelimit>20</timelimit>
+      <author> scott snyder </author>
+      <mailto> snyder@bnl.gov </mailto>
+      <expectations>
+         <errorMessage>Athena exited abnormally</errorMessage>
+         <errorMessage>differ</errorMessage>
+         <warningMessage> # WARNING_MESSAGE : post.sh> ERROR</warningMessage>
+         <successMessage>check ok</successMessage>
+         <returnValue>0</returnValue>
+      </expectations>
+   </TEST>
+</atn>
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_RawDataCnv_p1_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_RawDataCnv_p1_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..e6456364812924616e1933601e539222b4ebcefc
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_RawDataCnv_p1_test.cxx
@@ -0,0 +1,72 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_RawDataCnv_p1_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_RawDataCnv_p1.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_RawDataCnv_p1.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_RawData& p1,
+              const LUCID_RawData& p2)
+{
+  assert (p1.getStatus() == p2.getStatus());
+
+  assert (p1.getWord0() == p2.getWord0());
+  assert (p1.getWord1() == p2.getWord1());
+  assert (p1.getWord2() == p2.getWord2());
+  assert (p1.getWord3() == p2.getWord3());
+
+  assert (p1.getWord0p() == p2.getWord0p());
+  assert (p1.getWord1p() == p2.getWord1p());
+  assert (p1.getWord2p() == p2.getWord2p());
+  assert (p1.getWord3p() == p2.getWord3p());
+
+  assert (p1.getWord0n() == p2.getWord0n());
+  assert (p1.getWord1n() == p2.getWord1n());
+  assert (p1.getWord2n() == p2.getWord2n());
+  assert (p1.getWord3n() == p2.getWord3n());
+}
+
+
+void testit (const LUCID_RawData& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_RawDataCnv_p1 cnv;
+  LUCID_RawData_p1 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_RawData trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_RawData trans1 (1, 2, 3, 4,
+                        5, 6, 7, 8,
+                        9, 10, 11, 12,
+                        13);
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_RawDataContainerCnv_p1_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_RawDataContainerCnv_p1_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5e3cf7262a092fcab314f5ce4e0fe2c1c4216380
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_RawDataContainerCnv_p1_test.cxx
@@ -0,0 +1,85 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_RawDataContainerCnv_p1_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_RawDataContainerCnv_p1.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_RawDataContainerCnv_p1.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_RawData& p1,
+              const LUCID_RawData& p2)
+{
+  assert (p1.getStatus() == p2.getStatus());
+
+  assert (p1.getWord0() == p2.getWord0());
+  assert (p1.getWord1() == p2.getWord1());
+  assert (p1.getWord2() == p2.getWord2());
+  assert (p1.getWord3() == p2.getWord3());
+
+  assert (p1.getWord0p() == p2.getWord0p());
+  assert (p1.getWord1p() == p2.getWord1p());
+  assert (p1.getWord2p() == p2.getWord2p());
+  assert (p1.getWord3p() == p2.getWord3p());
+
+  assert (p1.getWord0n() == p2.getWord0n());
+  assert (p1.getWord1n() == p2.getWord1n());
+  assert (p1.getWord2n() == p2.getWord2n());
+  assert (p1.getWord3n() == p2.getWord3n());
+}
+
+
+void compare (const LUCID_RawDataContainer& p1,
+              const LUCID_RawDataContainer& p2)
+{
+  assert (p1.size() == p2.size());
+  for (size_t i = 0; i < p1.size(); i++)
+    compare (*p1[i], *p2[i]);
+}
+
+
+void testit (const LUCID_RawDataContainer& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_RawDataContainerCnv_p1 cnv;
+  LUCID_RawDataContainer_p1 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_RawDataContainer trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_RawDataContainer trans1;
+  for (int i=0; i < 10; i++) {
+    int o = i*100;
+    trans1.push_back (new LUCID_RawData (1+o, 2+o, 3+o, 4+o,
+                                         5+o, 6+o, 7+o, 8+o,
+                                         9+o, 10+o, 11+o, 12+o,
+                                         13+o));
+  }
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}
diff --git a/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_SimHitCnv_p1_test.cxx b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_SimHitCnv_p1_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..3c560298bda13d4f037ce584f83b26723f25eb7a
--- /dev/null
+++ b/ForwardDetectors/LUCID/LUCID_Cnv/LUCID_EventTPCnv/test/LUCID_SimHitCnv_p1_test.cxx
@@ -0,0 +1,71 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file LUCID_EventTPCnv/test/LUCID_SimHitCnv_p1_test.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Feb, 2016
+ * @brief Tests for LUCID_SimHitCnv_p1.
+ */
+
+
+#undef NDEBUG
+#include "LUCID_EventTPCnv/LUCID_SimHitCnv_p1.h"
+#include <cassert>
+#include <iostream>
+
+
+void compare (const LUCID_SimHit& p1,
+              const LUCID_SimHit& p2)
+{
+  assert (p1.GetTubeID() == p2.GetTubeID());
+  assert (p1.GetPdgCode() == p2.GetPdgCode());
+  assert (p1.GetTrack() == p2.GetTrack());
+  assert (p1.particleLink() == p2.particleLink());
+  assert (p1.GetGenVolume() == p2.GetGenVolume());
+  assert (p1.GetX() == p2.GetX());
+  assert (p1.GetY() == p2.GetY());
+  assert (p1.GetZ() == p2.GetZ());
+  assert (p1.GetEPX() == p2.GetEPX());
+  assert (p1.GetEPY() == p2.GetEPY());
+  assert (p1.GetEPZ() == p2.GetEPZ());
+  assert (p1.GetPreStepTime() == p2.GetPreStepTime());
+  assert (p1.GetPostStepTime() == p2.GetPostStepTime());
+  assert (p1.GetWavelength() == p2.GetWavelength());
+  assert (p1.GetEnergy() == p2.GetEnergy());
+}
+
+
+void testit (const LUCID_SimHit& trans1)
+{
+  MsgStream log (0, "test");
+  LUCID_SimHitCnv_p1 cnv;
+  LUCID_SimHit_p1 pers;
+  cnv.transToPers (&trans1, &pers, log);
+  LUCID_SimHit trans2;
+  cnv.persToTrans (&pers, &trans2, log);
+
+  compare (trans1, trans2);
+}
+
+
+void test1()
+{
+  std::cout << "test1\n";
+
+  LUCID_SimHit trans1 (1, 2, 3, 4,
+                       5.5, 6.5, 7.5,
+                       8.5, 9.5, 10.5,
+                       11.5, 12.5, 13.5, 14.5);
+    
+  testit (trans1);
+}
+
+
+int main()
+{
+  test1();
+  return 0;
+}