Index: /trunk/FACT++/src/Connection.h
===================================================================
--- /trunk/FACT++/src/Connection.h	(revision 11470)
+++ /trunk/FACT++/src/Connection.h	(revision 11471)
@@ -2,4 +2,5 @@
 #define FACT_Connection
 
+#include <array>
 #include <deque>
 #include <string>
@@ -118,5 +119,5 @@
 
     template<typename T, size_t N>
-        void PostMessage(const boost::array<T, N> &msg)
+    void PostMessage(const std::array<T, N> &msg)
     {
         PostMessage(msg.begin(), msg.size()*sizeof(T));
Index: /trunk/FACT++/src/ConnectionUSB.h
===================================================================
--- /trunk/FACT++/src/ConnectionUSB.h	(revision 11470)
+++ /trunk/FACT++/src/ConnectionUSB.h	(revision 11471)
@@ -2,4 +2,5 @@
 #define FACT_Connection
 
+#include <array>
 #include <deque>
 #include <string>
@@ -81,5 +82,5 @@
 
     template<typename T, size_t N>
-        void PostMessage(const boost::array<T, N> &msg)
+    void PostMessage(const std::array<T, N> &msg)
     {
         PostMessage(msg.begin(), msg.size()*sizeof(T));
Index: /trunk/FACT++/src/EventBuilderWrapper.h
===================================================================
--- /trunk/FACT++/src/EventBuilderWrapper.h	(revision 11470)
+++ /trunk/FACT++/src/EventBuilderWrapper.h	(revision 11471)
@@ -1542,8 +1542,8 @@
 
 
-    boost::array<FAD::EventHeader, 40> fVecHeader;
+    array<FAD::EventHeader, 40> fVecHeader;
 
     template<typename T>
-    boost::array<T, 42> Compare(const FAD::EventHeader *h, const T *t)
+    array<T, 42> Compare(const FAD::EventHeader *h, const T *t)
     {
         const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(h);
@@ -1553,5 +1553,5 @@
         const T *max = NULL;
 
-        boost::array<T, 42> vec;
+        array<T, 42> vec;
 
         bool rc = true;
@@ -1593,5 +1593,5 @@
 
     template<typename T>
-    boost::array<T, 42> CompareBits(const FAD::EventHeader *h, const T *t)
+    array<T, 42> CompareBits(const FAD::EventHeader *h, const T *t)
     {
         const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(h);
@@ -1600,5 +1600,5 @@
         T rc  = 0;
 
-        boost::array<T, 42> vec;
+        array<T, 42> vec;
 
         bool first = true;
@@ -1634,5 +1634,5 @@
 
     template<typename T, size_t N>
-    void Update(DimDescribedService &svc, const boost::array<T, N> &data, int n=N)
+    void Update(DimDescribedService &svc, const array<T, N> &data, int n=N)
     {
 //        svc.setQuality(vec[40]<=vec[41]);
@@ -1642,5 +1642,5 @@
 
     template<typename T>
-        void Print(const char *name, const pair<bool,boost::array<T, 43>> &data)
+        void Print(const char *name, const pair<bool,array<T, 43>> &data)
     {
         cout << name << "|" << data.first << "|" << data.second[1] << "|" << data.second[0] << "<x<" << data.second[1] << ":";
@@ -1672,7 +1672,7 @@
         if (old.fVersion != h.fVersion || changed)
         {
-            const boost::array<uint16_t,42> ver = Compare(&h, &h.fVersion);
-
-            boost::array<float,42> data;
+            const array<uint16_t,42> ver = Compare(&h, &h.fVersion);
+
+            array<float,42> data;
             for (int i=0; i<42; i++)
             {
@@ -1686,5 +1686,5 @@
         if (old.fRunNumber != h.fRunNumber || changed)
         {
-            const boost::array<uint32_t,42> run = Compare(&h, &h.fRunNumber);
+            const array<uint32_t,42> run = Compare(&h, &h.fRunNumber);
             fDimRunNumber.Update(run);
         }
@@ -1692,5 +1692,5 @@
         if (old.fTriggerGeneratorPrescaler != h.fTriggerGeneratorPrescaler || changed)
         {
-            const boost::array<uint16_t,42> pre = Compare(&h, &h.fTriggerGeneratorPrescaler);
+            const array<uint16_t,42> pre = Compare(&h, &h.fTriggerGeneratorPrescaler);
             fDimPrescaler.Update(pre);
         }
@@ -1698,5 +1698,5 @@
         if (old.fDNA != h.fDNA || changed)
         {
-            const boost::array<uint64_t,42> dna = Compare(&h, &h.fDNA);
+            const array<uint64_t,42> dna = Compare(&h, &h.fDNA);
             Update(fDimDNA, dna, 40);
         }
@@ -1704,5 +1704,5 @@
         if (old.fStatus != h.fStatus || changed)
         {
-            const boost::array<uint16_t,42> sts = CompareBits(&h, &h.fStatus);
+            const array<uint16_t,42> sts = CompareBits(&h, &h.fStatus);
             Update(fDimStatus, sts);
         }
@@ -1719,10 +1719,10 @@
             // --- RefClock
 
-            const boost::array<uint32_t,42> clk = Compare(&h, &h.fFreqRefClock);
+            const array<uint32_t,42> clk = Compare(&h, &h.fFreqRefClock);
             Update(fDimRefClock, clk);
 
             // --- Temperatures
 
-            const boost::array<int16_t,42> tmp[4] =
+            const array<int16_t,42> tmp[4] =
             {
                 Compare(&h, &h.fTempDrs[0]),
@@ -1741,5 +1741,5 @@
             for (int j=0; j<=3; j++)
             {
-                const boost::array<int16_t,42> &ref = tmp[j];
+                const array<int16_t,42> &ref = tmp[j];
 
                 // Gloabl min
Index: /trunk/FACT++/src/drivectrl.cc
===================================================================
--- /trunk/FACT++/src/drivectrl.cc	(revision 11470)
+++ /trunk/FACT++/src/drivectrl.cc	(revision 11471)
@@ -1,4 +1,3 @@
 #include <boost/bind.hpp>
-#include <boost/array.hpp>
 #include <boost/asio/error.hpp>
 #include <boost/asio/deadline_timer.hpp>
@@ -122,9 +121,9 @@
     // ...
 
-    virtual void UpdatePointing(const Time &, const boost::array<double, 2> &)
-    {
-    }
-
-    virtual void UpdateTracking(const Time &, const boost::array<double, 7> &)
+    virtual void UpdatePointing(const Time &, const array<double, 2> &)
+    {
+    }
+
+    virtual void UpdateTracking(const Time &, const array<double, 7> &)
     {
     }
@@ -377,8 +376,8 @@
             fState = status1==1 ? armed+1 : status1;
 
-            const boost::array<double, 2> point = {{ zd2, az2 }};
+            const array<double, 2> point = {{ zd2, az2 }};
             UpdatePointing(t1, point);
 
-            const boost::array<double, 7> track =
+            const array<double, 7> track =
             {{
                 ra, dec, ha,
@@ -536,5 +535,5 @@
 
     template<size_t N>
-        void Update(DimDescribedService &svc, const Time &t, const boost::array<double, N> &arr) const
+        void Update(DimDescribedService &svc, const Time &t, const array<double, N> &arr) const
     {
         svc.setTimestamp(int(t.UnixTime()), t.ms());
@@ -544,5 +543,5 @@
 
     virtual void UpdatePointing(const Time &t,
-                                const boost::array<double, 2> &arr)
+                                const array<double, 2> &arr)
     {
         Update(fDimPointing, t, arr);
@@ -550,5 +549,5 @@
 
     virtual void UpdateTracking(const Time &t,
-                                const boost::array<double, 7> &arr)
+                                const array<double, 7> &arr)
     {
         Update(fDimTracking, t, arr);
Index: /trunk/FACT++/src/ftmctrl.cc
===================================================================
--- /trunk/FACT++/src/ftmctrl.cc	(revision 11470)
+++ /trunk/FACT++/src/ftmctrl.cc	(revision 11471)
@@ -1,4 +1,4 @@
 #include <boost/bind.hpp>
-#include <boost/array.hpp>
+#include <array>
 #include <boost/asio/error.hpp>
 #include <boost/asio/deadline_timer.hpp>
@@ -433,7 +433,7 @@
 
     template<size_t N>
-    void PostCmd(boost::array<uint16_t, N> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
-    {
-        boost::array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
+    void PostCmd(array<uint16_t, N> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
 
         ostringstream msg;
@@ -457,5 +457,5 @@
     void PostCmd(vector<uint16_t> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
     {
-        boost::array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
+        array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
 
         ostringstream msg;
@@ -479,5 +479,5 @@
     void PostCmd(uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
     {
-        PostCmd(boost::array<uint16_t, 0>(), u1, u2, u3, u4);
+        PostCmd(array<uint16_t, 0>(), u1, u2, u3, u4);
     }
 public:
@@ -541,5 +541,5 @@
     void CmdTakeNevents(uint32_t n)
     {
-        const boost::array<uint16_t, 2> data = {{ uint16_t(n>>16), uint16_t(n&0xffff) }};
+        const array<uint16_t, 2> data = {{ uint16_t(n>>16), uint16_t(n&0xffff) }};
         PostCmd(data, FTM::kCmdStartRun, FTM::kTakeNevents);
 
@@ -553,5 +553,5 @@
             return false;
 
-        const boost::array<uint16_t, 2> data = {{ addr, val }};
+        const array<uint16_t, 2> data = {{ addr, val }};
         PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
 
@@ -570,5 +570,5 @@
             return false;
 
-        const boost::array<uint16_t, 1> data = {{ addr }};
+        const array<uint16_t, 1> data = {{ addr }};
         PostCmd(data, FTM::kCmdRead, FTM::kCmdRegister);
 
@@ -1460,5 +1460,5 @@
             return T::kSM_FatalError;
 
-        const map<uint16_t,boost::array<uint64_t, 8>>::const_iterator it =
+        const map<uint16_t,array<uint64_t, 8>>::const_iterator it =
             fClockCondSetup.find(evt.GetUShort());
 
@@ -1969,5 +1969,5 @@
     }
 
-    map<uint16_t, boost::array<uint64_t, 8>> fClockCondSetup;
+    map<uint16_t, array<uint64_t, 8>> fClockCondSetup;
 
     template<class V>
@@ -2027,5 +2027,5 @@
             }
 
-            boost::array<uint64_t, 8> &arr = fClockCondSetup[*it];
+            array<uint64_t, 8> &arr = fClockCondSetup[*it];
 
             arr[0] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R0.",  *it);
