diff --git a/CondCore/PCLConfigPlugins/BuildFile.xml b/CondCore/PCLConfigPlugins/BuildFile.xml
new file mode 100644
index 0000000000000..7a58e90c85d44
--- /dev/null
+++ b/CondCore/PCLConfigPlugins/BuildFile.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/CondCore/PCLConfigPlugins/src/plugin.cc b/CondCore/PCLConfigPlugins/src/plugin.cc
new file mode 100644
index 0000000000000..097579cd61b2c
--- /dev/null
+++ b/CondCore/PCLConfigPlugins/src/plugin.cc
@@ -0,0 +1,5 @@
+#include "CondCore/ESSources/interface/registration_macros.h"
+#include "CondFormats/PCLConfig/interface/AlignPCLThresholds.h"
+#include "CondFormats/DataRecord/interface/AlignPCLThresholdsRcd.h"
+
+REGISTER_PLUGIN(AlignPCLThresholdsRcd,AlignPCLThresholds);
diff --git a/CondCore/Utilities/BuildFile.xml b/CondCore/Utilities/BuildFile.xml
index 7ef5b39a1cf6e..e282034d63699 100644
--- a/CondCore/Utilities/BuildFile.xml
+++ b/CondCore/Utilities/BuildFile.xml
@@ -31,6 +31,7 @@
+
diff --git a/CondCore/Utilities/python/cond2xml.py b/CondCore/Utilities/python/cond2xml.py
index 7ff0a1ee41a85..615964fc1a213 100644
--- a/CondCore/Utilities/python/cond2xml.py
+++ b/CondCore/Utilities/python/cond2xml.py
@@ -99,6 +99,7 @@ def ("%(plTypeSan)s2xml", %(plTypeSan)s2xml);
+
diff --git a/CondCore/Utilities/src/CondDBFetch.cc b/CondCore/Utilities/src/CondDBFetch.cc
index 8184cd73e02b1..7a112bc832193 100644
--- a/CondCore/Utilities/src/CondDBFetch.cc
+++ b/CondCore/Utilities/src/CondDBFetch.cc
@@ -31,6 +31,7 @@ namespace cond {
FETCH_PAYLOAD_CASE( AlignmentErrorsExtended )
FETCH_PAYLOAD_CASE( AlignmentSurfaceDeformations )
FETCH_PAYLOAD_CASE( Alignments )
+ FETCH_PAYLOAD_CASE( AlignPCLThresholds )
FETCH_PAYLOAD_CASE( BeamSpotObjects )
FETCH_PAYLOAD_CASE( CSCBadChambers )
FETCH_PAYLOAD_CASE( CSCBadStrips )
diff --git a/CondCore/Utilities/src/CondDBImport.cc b/CondCore/Utilities/src/CondDBImport.cc
index e11f845a7c6ba..61a16371a19bd 100644
--- a/CondCore/Utilities/src/CondDBImport.cc
+++ b/CondCore/Utilities/src/CondDBImport.cc
@@ -45,6 +45,7 @@ namespace cond {
IMPORT_PAYLOAD_CASE( AlignmentErrorsExtended )
IMPORT_PAYLOAD_CASE( AlignmentSurfaceDeformations )
IMPORT_PAYLOAD_CASE( Alignments )
+ IMPORT_PAYLOAD_CASE( AlignPCLThresholds )
IMPORT_PAYLOAD_CASE( BeamSpotObjects )
IMPORT_PAYLOAD_CASE( CSCBadChambers )
IMPORT_PAYLOAD_CASE( CSCBadStrips )
diff --git a/CondCore/Utilities/src/CondFormats.h b/CondCore/Utilities/src/CondFormats.h
index 46017b37daa11..1845950439c25 100644
--- a/CondCore/Utilities/src/CondFormats.h
+++ b/CondCore/Utilities/src/CondFormats.h
@@ -249,6 +249,7 @@
#include "CondFormats/SiStripObjects/interface/SiStripPedestals.h"
#include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h"
#include "CondFormats/MFObjects/interface/MagFieldConfig.h"
+#include "CondFormats/PCLConfig/interface/AlignPCLThresholds.h"
#include "CondFormats/Common/interface/BaseKeyed.h"
diff --git a/CondFormats/DataRecord/interface/AlignPCLThresholdsRcd.h b/CondFormats/DataRecord/interface/AlignPCLThresholdsRcd.h
new file mode 100644
index 0000000000000..81e18c539ebcf
--- /dev/null
+++ b/CondFormats/DataRecord/interface/AlignPCLThresholdsRcd.h
@@ -0,0 +1,25 @@
+#ifndef AlignPCLThresholdsRcd_AlignPCLThresholdsRcd_h
+#define AlignPCLThresholdsRcd_AlignPCLThresholdsRcd_h
+// -*- C++ -*-
+//
+// Package: CondFormats/DataRecord
+// Class : AlignPCLThresholdsRcd
+//
+/**\class AlignPCLThresholdsRcd AlignPCLThresholdsRcd.h CondFormats/DataRecord/interface/AlignPCLThresholdsRcd.h
+
+ Description: [one line class summary]
+
+ Usage:
+
+
+*/
+//
+// Author: Marco Musich
+// Created: Wed, 22 Feb 2017 10:31:30 GMT
+//
+
+#include "FWCore/Framework/interface/EventSetupRecordImplementation.h"
+
+class AlignPCLThresholdsRcd : public edm::eventsetup::EventSetupRecordImplementation {};
+
+#endif
diff --git a/CondFormats/DataRecord/src/AlignPCLThresholdsRcd.cc b/CondFormats/DataRecord/src/AlignPCLThresholdsRcd.cc
new file mode 100644
index 0000000000000..7f081e1ce226b
--- /dev/null
+++ b/CondFormats/DataRecord/src/AlignPCLThresholdsRcd.cc
@@ -0,0 +1,15 @@
+// -*- C++ -*-
+//
+// Package: CondFormats/DataRecord
+// Class : AlignPCLThresholdsRcd
+//
+// Implementation:
+// [Notes on implementation]
+//
+// Author: Marco Musich
+// Created: Wed, 22 Feb 2017 10:31:30 GMT
+
+#include "CondFormats/DataRecord/interface/AlignPCLThresholdsRcd.h"
+#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"
+
+EVENTSETUP_RECORD_REG(AlignPCLThresholdsRcd);
diff --git a/CondFormats/PCLConfig/BuildFile.xml b/CondFormats/PCLConfig/BuildFile.xml
new file mode 100644
index 0000000000000..8b7accba08566
--- /dev/null
+++ b/CondFormats/PCLConfig/BuildFile.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/CondFormats/PCLConfig/interface/AlignPCLThreshold.h b/CondFormats/PCLConfig/interface/AlignPCLThreshold.h
new file mode 100644
index 0000000000000..4cbfc28cdf0fe
--- /dev/null
+++ b/CondFormats/PCLConfig/interface/AlignPCLThreshold.h
@@ -0,0 +1,92 @@
+#ifndef CondFormats_PCLConfig_AlignPCLThreshold_h
+#define CondFormats_PCLConfig_AlignPCLThreshold_h
+
+#include "CondFormats/Serialization/interface/Serializable.h"
+
+class AlignPCLThreshold
+{
+public:
+
+ struct coordThresholds{
+ coordThresholds(){
+ m_Cut=5.;
+ m_sigCut=2.5;
+ m_errorCut=10.;
+ m_maxMoveCut=200;
+ m_label="default";
+ }
+ ~coordThresholds(){}
+ void setThresholds(float theCut,float theSigCut,float theErrorCut,float theMaxMoveCut,const std::string &theLabel){
+ m_Cut=theCut;
+ m_sigCut=theSigCut;
+ m_errorCut=theErrorCut;
+ m_maxMoveCut=theMaxMoveCut;
+ m_label=theLabel;
+ }
+
+ float m_Cut;
+ float m_sigCut;
+ float m_errorCut;
+ float m_maxMoveCut;
+ std::string m_label;
+
+ COND_SERIALIZABLE;
+
+ };
+
+ virtual ~AlignPCLThreshold(){}
+
+ AlignPCLThreshold(coordThresholds X=coordThresholds(),coordThresholds tX=coordThresholds(),
+ coordThresholds Y=coordThresholds(),coordThresholds tY=coordThresholds(),
+ coordThresholds Z=coordThresholds(),coordThresholds tZ=coordThresholds(),
+ std::vector< coordThresholds > extraDOF=std::vector< coordThresholds >()
+ );
+
+ float getXcut() const {return m_xCoord.m_Cut;}
+ float getYcut() const {return m_yCoord.m_Cut;}
+ float getZcut() const {return m_zCoord.m_Cut;}
+ float getThetaXcut() const {return m_thetaXCoord.m_Cut;}
+ float getThetaYcut() const {return m_thetaYCoord.m_Cut;}
+ float getThetaZcut() const {return m_thetaZCoord.m_Cut;}
+
+ float getSigXcut() const {return m_xCoord.m_sigCut;}
+ float getSigYcut() const {return m_yCoord.m_sigCut;}
+ float getSigZcut() const {return m_zCoord.m_sigCut;}
+ float getSigThetaXcut() const {return m_thetaXCoord.m_sigCut;}
+ float getSigThetaYcut() const {return m_thetaYCoord.m_sigCut;}
+ float getSigThetaZcut() const {return m_thetaZCoord.m_sigCut;}
+
+ float getErrorXcut() const {return m_xCoord.m_errorCut;}
+ float getErrorYcut() const {return m_yCoord.m_errorCut;}
+ float getErrorZcut() const {return m_zCoord.m_errorCut;}
+ float getErrorThetaXcut() const {return m_thetaXCoord.m_errorCut;}
+ float getErrorThetaYcut() const {return m_thetaYCoord.m_errorCut;}
+ float getErrorThetaZcut() const {return m_thetaZCoord.m_errorCut;}
+
+ float getMaxMoveXcut() const {return m_xCoord.m_maxMoveCut;}
+ float getMaxMoveYcut() const {return m_yCoord.m_maxMoveCut;}
+ float getMaxMoveZcut() const {return m_zCoord.m_maxMoveCut;}
+ float getMaxMoveThetaXcut() const {return m_thetaXCoord.m_maxMoveCut;}
+ float getMaxMoveThetaYcut() const {return m_thetaYCoord.m_maxMoveCut;}
+ float getMaxMoveThetaZcut() const {return m_thetaZCoord.m_maxMoveCut;}
+
+ bool hasExtraDOF() const {return (m_extraDOF.size()>0);}
+ unsigned int extraDOFSize() const {return m_extraDOF.size();}
+ std::array getExtraDOFCuts(const unsigned int i) const;
+ std::string getExtraDOFLabel(const unsigned int i) const;
+
+private:
+
+ coordThresholds m_xCoord;
+ coordThresholds m_yCoord;
+ coordThresholds m_zCoord;
+ coordThresholds m_thetaXCoord;
+ coordThresholds m_thetaYCoord;
+ coordThresholds m_thetaZCoord;
+ std::vector< coordThresholds > m_extraDOF;
+
+ COND_SERIALIZABLE;
+
+};
+
+#endif
diff --git a/CondFormats/PCLConfig/interface/AlignPCLThresholds.h b/CondFormats/PCLConfig/interface/AlignPCLThresholds.h
new file mode 100644
index 0000000000000..867f2527431c3
--- /dev/null
+++ b/CondFormats/PCLConfig/interface/AlignPCLThresholds.h
@@ -0,0 +1,57 @@
+#ifndef CondFormats_PCLConfig_AlignPCLThresholds_h
+#define CondFormats_PCLConfig_AlignPCLThresholds_h
+
+#include "CondFormats/PCLConfig/interface/AlignPCLThreshold.h"
+#include "CondFormats/Serialization/interface/Serializable.h"
+
+#include