Index: /trunk/FACT++/Makefile.am
===================================================================
--- /trunk/FACT++/Makefile.am	(revision 13775)
+++ /trunk/FACT++/Makefile.am	(revision 13776)
@@ -40,5 +40,6 @@
 	mcp feedback ratescan ratecontrol \
 	magicweather \
-	fitsdump fitscheck
+	smartfact \
+	fitsdump fitscheck 
 
 if HAS_GUI
@@ -82,5 +83,6 @@
 	datalogger.man \
 	fitsdump.man \
-	fitscheck.man
+	fitscheck.man \
+	smartfact.man
 endif
 
@@ -256,4 +258,9 @@
     	libConfiguration.la
 
+smartfact_SOURCES = src/smartfact.cc src/LocalControl.h src/PixelMap.cc
+smartfact_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
 fadctrl_SOURCES = src/fadctrl.cc src/LocalControl.h src/HeadersFAD.cc \
 	src/EventBuilder.c      src/EventBuilder.h \
Index: /trunk/FACT++/Makefile.in
===================================================================
--- /trunk/FACT++/Makefile.in	(revision 13775)
+++ /trunk/FACT++/Makefile.in	(revision 13776)
@@ -50,6 +50,7 @@
 	drivectrl$(EXEEXT) mcp$(EXEEXT) feedback$(EXEEXT) \
 	ratescan$(EXEEXT) ratecontrol$(EXEEXT) magicweather$(EXEEXT) \
-	fitsdump$(EXEEXT) fitscheck$(EXEEXT) $(am__EXEEXT_1) \
-	$(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4)
+	smartfact$(EXEEXT) fitsdump$(EXEEXT) fitscheck$(EXEEXT) \
+	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+	$(am__EXEEXT_4)
 @HAS_GUI_TRUE@am__append_1 = fact
 @HAS_VIEWER_TRUE@am__append_2 = viewer
@@ -348,4 +349,8 @@
 scheduler_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
 	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_smartfact_OBJECTS = src/smartfact.$(OBJEXT) src/PixelMap.$(OBJEXT)
+smartfact_OBJECTS = $(am_smartfact_OBJECTS)
+smartfact_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
 am_test_OBJECTS = src/test.$(OBJEXT)
 test_OBJECTS = $(am_test_OBJECTS)
@@ -441,6 +446,6 @@
 	$(magicweather_SOURCES) $(mcp_SOURCES) $(ratecontrol_SOURCES) \
 	$(ratescan_SOURCES) $(readfits_SOURCES) sched.c \
-	$(scheduler_SOURCES) $(test_SOURCES) $(time_SOURCES) \
-	$(triggerschedule_SOURCES) $(viewer_SOURCES)
+	$(scheduler_SOURCES) $(smartfact_SOURCES) $(test_SOURCES) \
+	$(time_SOURCES) $(triggerschedule_SOURCES) $(viewer_SOURCES)
 DIST_SOURCES = $(libConfiguration_la_SOURCES) $(libDim___la_SOURCES) \
 	$(libDim_la_SOURCES) $(libDimExtension_la_SOURCES) \
@@ -458,6 +463,7 @@
 	$(logtime_SOURCES) $(magicweather_SOURCES) $(mcp_SOURCES) \
 	$(ratecontrol_SOURCES) $(ratescan_SOURCES) $(readfits_SOURCES) \
-	sched.c $(scheduler_SOURCES) $(test_SOURCES) $(time_SOURCES) \
-	$(triggerschedule_SOURCES) $(am__viewer_SOURCES_DIST)
+	sched.c $(scheduler_SOURCES) $(smartfact_SOURCES) \
+	$(test_SOURCES) $(time_SOURCES) $(triggerschedule_SOURCES) \
+	$(am__viewer_SOURCES_DIST)
 man1dir = $(mandir)/man1
 NROFF = nroff
@@ -716,5 +722,6 @@
 @HAS_HELP2MAN_TRUE@	datalogger.man \
 @HAS_HELP2MAN_TRUE@	fitsdump.man \
-@HAS_HELP2MAN_TRUE@	fitscheck.man
+@HAS_HELP2MAN_TRUE@	fitscheck.man \
+@HAS_HELP2MAN_TRUE@	smartfact.man
 
 
@@ -863,4 +870,9 @@
 magicweather_SOURCES = src/magicweather.cc src/LocalControl.h
 magicweather_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+smartfact_SOURCES = src/smartfact.cc src/LocalControl.h src/PixelMap.cc
+smartfact_LDADD = libDim++.la libDim.la libDimExtension.la \
  	libStateMachine.la libTools.la libTime.la \
     	libConfiguration.la
@@ -1446,4 +1458,9 @@
 	@rm -f scheduler$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(scheduler_OBJECTS) $(scheduler_LDADD) $(LIBS)
+src/smartfact.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+smartfact$(EXEEXT): $(smartfact_OBJECTS) $(smartfact_DEPENDENCIES) 
+	@rm -f smartfact$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smartfact_OBJECTS) $(smartfact_LDADD) $(LIBS)
 src/test.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
 test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) 
@@ -1648,4 +1665,5 @@
 	-rm -f src/readfits.$(OBJEXT)
 	-rm -f src/scheduler.$(OBJEXT)
+	-rm -f src/smartfact.$(OBJEXT)
 	-rm -f src/test.$(OBJEXT)
 	-rm -f src/time.$(OBJEXT)
@@ -1772,4 +1790,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/readfits.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/scheduler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/smartfact.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/time.Po@am__quote@
Index: /trunk/FACT++/configure
===================================================================
--- /trunk/FACT++/configure	(revision 13775)
+++ /trunk/FACT++/configure	(revision 13776)
@@ -624,4 +624,6 @@
 HAS_GUI_FALSE
 HAS_GUI_TRUE
+HAS_NOVA_FALSE
+HAS_NOVA_TRUE
 HAS_QWT_FALSE
 HAS_QWT_TRUE
@@ -926,4 +928,7 @@
 with_GLU_include
 with_GLU_libdir
+with_nova
+with_nova_include
+with_nova_libdir
 with_cfitsio
 with_cfitsio_include
@@ -1654,4 +1659,8 @@
   --with-GLU-libdir=DIR        specify exact library dir for GLU library (e.g. libGLU)
   --without-GLU        disables GLU usage completely
+  --with-nova=DIR	root directory of nova installation
+  --with-nova-include=DIR        specify exact include dir for nova headers (e.g. libnova/julian_day.h)
+  --with-nova-libdir=DIR        specify exact library dir for nova library (e.g. libnova)
+  --without-nova        disables nova usage completely
   --with-cfitsio=DIR	root directory of cfitsio installation
   --with-cfitsio-include=DIR        specify exact include dir for cfitsio headers (e.g. fitsio.h)
@@ -19934,4 +19943,120 @@
 
 
+# Check for libnova
+
+
+
+# Check whether --with-nova was given.
+if test "${with_nova+set}" = set; then :
+  withval=$with_nova; with_nova=$withval
+if test "${with_nova}" != yes; then
+	nova_include="$withval/include"
+	nova_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-nova-include was given.
+if test "${with_nova_include+set}" = set; then :
+  withval=$with_nova_include; nova_include="$withval"
+fi
+
+
+
+# Check whether --with-nova-libdir was given.
+if test "${with_nova_libdir+set}" = set; then :
+  withval=$with_nova_libdir; nova_libdir="$withval"
+fi
+
+
+if test "${with_nova}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${nova_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${nova_libdir}"
+	fi
+	if test "${nova_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${nova_include}"
+		CFLAGS="$CFLAGS -I${nova_include}"
+	fi
+
+	ac_fn_c_check_header_mongrel "$LINENO" "libnova/julian_day.h" "ac_cv_header_libnova_julian_day_h" "$ac_includes_default"
+if test "x$ac_cv_header_libnova_julian_day_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ln_get_julian_from_sys in -lnova" >&5
+$as_echo_n "checking for ln_get_julian_from_sys in -lnova... " >&6; }
+if ${ac_cv_lib_nova_ln_get_julian_from_sys+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnova  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ln_get_julian_from_sys ();
+int
+main ()
+{
+return ln_get_julian_from_sys ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nova_ln_get_julian_from_sys=yes
+else
+  ac_cv_lib_nova_ln_get_julian_from_sys=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nova_ln_get_julian_from_sys" >&5
+$as_echo "$ac_cv_lib_nova_ln_get_julian_from_sys" >&6; }
+if test "x$ac_cv_lib_nova_ln_get_julian_from_sys" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNOVA 1
+_ACEOF
+
+  LIBS="-lnova $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_NOVA=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_NOVA=yes
+
+		$as_echo "#define HAVE_PKG_nova 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
 # Taken from http://code.google.com/p/autoconf-gl-macros/
 #AX_CHECK_GL
@@ -23500,5 +23625,5 @@
 
 		cat > conftest.$ac_ext <<EOF
-#line 23502 "configure"
+#line 23627 "configure"
 #include "confdefs.h"
 #include <qglobal.h>
@@ -24504,4 +24629,12 @@
 fi
 
+ if test "$HAVE_NOVA" = yes; then
+  HAS_NOVA_TRUE=
+  HAS_NOVA_FALSE='#'
+else
+  HAS_NOVA_TRUE='#'
+  HAS_NOVA_FALSE=
+fi
+
 
  if test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_ROOT_QT" = yes ; then
@@ -24549,4 +24682,8 @@
 if test "$HAVE_ZLIB" = yes; then
   $as_echo "#define HAVE_ZLIB 1" >>confdefs.h
+
+fi
+if test "$HAVE_NOVA" = yes; then
+  $as_echo "#define HAVE_NOVA 1" >>confdefs.h
 
 fi
@@ -24893,4 +25030,8 @@
 if test -z "${HAS_QWT_TRUE}" && test -z "${HAS_QWT_FALSE}"; then
   as_fn_error $? "conditional \"HAS_QWT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_NOVA_TRUE}" && test -z "${HAS_NOVA_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_NOVA\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
@@ -27369,4 +27510,6 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}:  zlib                   / 'zlib.h'           found: $HAVE_ZLIB" >&5
 $as_echo "$as_me:  zlib                   / 'zlib.h'           found: $HAVE_ZLIB" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  nova                   / libnova.so         found: $HAVE_NOVA" >&5
+$as_echo "$as_me:  nova                   / libnova.so         found: $HAVE_NOVA" >&6;}
 #AC_MSG_NOTICE([ gui/RawEventsViewer/izstream.h              found: $HAVE_IZSTREAM_H])
 #AC_MSG_NOTICE([ gui/RawEventsViewer/fits.h                  found: $HAVE_FITS_H])
Index: /trunk/FACT++/configure.ac
===================================================================
--- /trunk/FACT++/configure.ac	(revision 13775)
+++ /trunk/FACT++/configure.ac	(revision 13776)
@@ -147,4 +147,7 @@
 AC_CHECK_PACKAGE(GL, glLoadIdentity, GL, GL/gl.h, HAVE_GL=yes, HAVE_GL=no)
 AC_CHECK_PACKAGE(GLU, gluNewTess, GLU, GL/glu.h, HAVE_GLU=yes, HAVE_GLU=no)
+
+# Check for libnova
+AC_CHECK_PACKAGE(nova, ln_get_julian_from_sys, nova, libnova/julian_day.h, HAVE_NOVA=yes, HAVE_NOVA=no)
 
 # Taken from http://code.google.com/p/autoconf-gl-macros/
@@ -370,4 +373,5 @@
 AM_CONDITIONAL(HAS_QGL,       [test "$HAVE_QGL" = yes])
 AM_CONDITIONAL(HAS_QWT,       [test "$HAVE_QWT" = yes])
+AM_CONDITIONAL(HAS_NOVA,      [test "$HAVE_NOVA" = yes])
 
 AM_CONDITIONAL(HAS_GUI,       [test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_ROOT_QT" = yes ])
@@ -380,4 +384,5 @@
 AM_COND_IF(HAS_ROOT, [AC_DEFINE(HAVE_ROOT)], )
 AM_COND_IF(HAS_ZLIB, [AC_DEFINE(HAVE_ZLIB)], )
+AM_COND_IF(HAS_NOVA, [AC_DEFINE(HAVE_NOVA)], )
 
 #AM_COND_IF(HAS_FITS_H, [
@@ -438,4 +443,5 @@
 AC_MSG_NOTICE()
 AC_MSG_NOTICE([ zlib                   / 'zlib.h'           found: $HAVE_ZLIB])
+AC_MSG_NOTICE([ nova                   / libnova.so         found: $HAVE_NOVA])
 #AC_MSG_NOTICE([ gui/RawEventsViewer/izstream.h              found: $HAVE_IZSTREAM_H])
 #AC_MSG_NOTICE([ gui/RawEventsViewer/fits.h                  found: $HAVE_FITS_H])
