##################################################################
#
# makefile
#
# @file        makefile 
# @title       Simulation of the camera and trigger logic
# @author      J C Gonz\'alez
# @email       gonzalez@mppmu.mpg.de
# @date        Fri Mar 12 11:51:11 MET 1999
#
#_______________________________________________________________
#
# Created: Fri Mar 12 11:51:11 MET 1999
# Author:  Jose Carlos Gonzalez
# Purpose: Makefile for the compilation of the camera program
# Notes:   
#    
#---------------------------------------------------------------
#
# $RCSfile: Makefile,v $
# $Revision: 1.1.1.1 $
# $Author: harald $ 
# $Date: 1999-11-05 11:59:32 $
#
##################################################################
# @maintitle

# @code

INCLUDEMK = config.mk.${OSTYPE} 
include ${INCLUDEMK}

# @endcode

# @code 

# common flags
INCLUDES = -I${INCLUDE}      \
		   -I${INCLUDE_COR}  \
		   -I${INCLUDE_MC}   \
		   -I${INCLUDE_EVITA}   \
		   -I${INCLUDE_TRIGGER}   \
		   -I${INCLUDE_REFL} \
                   -I${INCLUDE_ROOT} \
	           -I/usr/include/g++

RANLIB  = -L${RANLIBDIR} -lranlib

# what is needed for ROOT

ROOTLIBS      = -L$(ROOTSYS)/lib -lNew -lBase -lCint -lClib \
                -lCont -lFunc -lGraf -lGraf3d -lHist -lHtml \
                -lMatrix -lMeta -lMinuit -lNet -lPostscript \
                -lProof -lTree -lUnix -lZip -lRint
#ROOTLIBS      = 

ROOTGLIBS     = -lGpad -lGui -lGX11 -lX3d -lX11
#ROOTGLIBS     =

GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -L/usr/X11R6/lib \
                -lXpm -lX11  -lm -ldl -rdynamic
# special flags

osf_FORLIBS = -lUfor -lfor -lutil -lots -lm 
#linux_FORLIBS =  -lf2c -lm /usr/lib/libc.a
linux_FORLIBS =  -lm -ldl 
#linux_FORLIBS =  -lm -ldl -rdynamic
generic_FORLIBS = -lm 

FORLIBS = ${${SYSTEM}_FORLIBS}

# compilation and linking flags

CXXFLAGS  = -D__${SYSTEM}__ ${INCLUDES} ${OPTIM} ${DEBUG}
 CFLAGS    = ${CXXFLAGS}
FFLAGS    = ${CXXFLAGS}
LIBS      = ${RANLIB} ${ROOTLIBS} ${ROOTGLIBS} ${GLIBS}

#------------------------------------------------------------------------------

#.SILENT:

.SUFFIXES: .c .cxx .C .c++ .h .hxx .H .h++ .o .so .f

SRCS = \
	${INCLUDE_MC}/MCEventHeader.cxx \
	${INCLUDE_MC}/MCCphoton.cxx \
	${INCLUDE_TRIGGER}/MTrigger.cxx \
	${INCLUDE_EVITA}/MRawPixel.cxx \
	${INCLUDE_EVITA}/MRawEvt.cxx \
	${INCLUDE_EVITA}/MMcEvt.cxx \
	MCamCint.cxx \
	MDiag.cxx \
	moments.cxx \
	creadparam.cxx \
	camera.cxx   

HEADERS = \
	MCEventHeader.hxx \
	MCCphoton.hxx \
	MTRigger.hxx \
	MRawPixel.h \
	MRawEvt.h \
	MMcEvt.h \
	lagrange.h \
	atm.h \
	MDiag.h \
	moments.h \
	creadparam.h \
	camera.h

OBJS = \
	${INCLUDE_MC}/MCEventHeader.o \
	${INCLUDE_MC}/MCCphoton.o \
	${INCLUDE_TRIGGER}/MTrigger.o \
	${INCLUDE_EVITA}/MRawPixel.o \
	${INCLUDE_EVITA}/MRawEvt.o \
	${INCLUDE_EVITA}/MMcEvt.o \
	MCamCint.o \
	MDiag.o \
	MDiagdict.o \
	moments.o \
	creadparam.o \
	camera.o      

############################################################

all: ${PROGRAM}

depend:
	@makedepend $(SRCS) $(INCLUDES) -fMakefile 2> kk.kk ; cat kk.kk

doc: camera-doc

camera-doc: 
	@echo "Generating documentation for camera . . . "
	$(DOCUM) -latex -o camera.tex \
	camera.cxx camera.h \
	creadparam.cxx creadparam.h \
	moments.cxx moments.h
	latex "\nonstopmode\input{camera.tex}" && \
	makeindex camera && \
	latex "\nonstopmode\input{camera.tex}" && \
	latex "\nonstopmode\input{camera.tex}"
	@echo "Files camera.tex and camera.dvi generated."

${PROGRAM}: $(OBJS) MDiag.so
	@echo "Linking..." 
	echo `ls -m $(OBJS)|sed 's/,/ +/g' `" + libraries => " $@
	$(CXX) $(CXXFLAGS) $(OBJS) $(LIBS) -o $@
	@echo "done."

MDiagdict.o:     MDiagdict.cxx MDiag.h 
	$(CXX) $(CXXFLAGS) -I${INCLUDE_ROOT} -c MDiagdict.cxx

MDiagdict.cxx:  MDiag.h  MDiagLinkDef.h
	${ROOTSYS}/bin/rootcint -f MDiagdict.cxx -c MDiag.h MDiagLinkDef.h 

MDiag.o:        MDiag.cxx MDiag.h 
	$(CXX) $(CXXFLAGS) -I${INCLUDE_ROOT} -c MDiag.cxx -o MDiag.o

# the following shared object library is for being loaded into ROOT using 
#".L MDiag.so" if the diagnostic output is to be read e.g. with a TTree viewer 
MDiag.so: MDiag.o MDiagdict.o
	$(CXX) -shared -g -I${INCLUDE_ROOT} MDiag.o MDiagdict.o -o MDiag.so  


MCamCint.cxx: 	${INCLUDE_EVITA}/MRawPixel.h \
		${INCLUDE_EVITA}/MRawEvt.h \
		${INCLUDE_EVITA}/MMcEvt.h \
		${INCLUDE_EVITA}/Mdefine.h

		@echo
		@echo "Generating dictionary ..."
		@echo

		@$(ROOTSYS)/bin/rootcint -f  \
		MCamCint.cxx -c \
		${INCLUDE_EVITA}/MRawPixel.h \
		${INCLUDE_EVITA}/MRawEvt.h \
		${INCLUDE_EVITA}/MMcEvt.h \
#		${INCLUDE_EVITA}/MCameraDisplay.h \
		${INCLUDE_EVITA}/Mdefine.h \
		${INCLUDE_EVITA}/LinkDef.h

		@echo
		@echo "Dictionary done"
		@echo

.cxx.o:	
	@echo "Compiling " $<
	$(CXX) $(CXXFLAGS) -c $< -o $@

.c.o:	
	@echo "Compiling " $<
	$(CC) $(CFLAGS) -c $< -o $@

lclean:
	@echo "Cleanning..."
	@rm -f *.o core 

clean:
	@echo "Cleanning..."
	@rm -f $(OBJS) core 
	@rm -f MCamCint.cxx MCamCint.h 

mrproper: clean
	@echo "Mr.Proper in action . . ."
	@rm -f $(PROGRAM)

ctags:
	@echo "Creating CTAGS file . . ."
	@ctags -txw $(SRCS) $(HEADERS) > CTAGS

etags:
	@echo "Creating TAGS file . . ."
	@etags -C $(SRCS) $(HEADERS)

listsrc:
	@ls -m $(SRCS) $(HEADERS) | sed 's/,//g'

redo: clean all

cflags: 
	@echo $(INCLUDES) $(CXXFLAGS)

# @endcode

# DO NOT DELETE THIS LINE -- make depend depends on it.

../include-MC/MCEventHeader.o: ../include-MC/MCEventHeader.hxx
../include-MC/MCEventHeader.o: ../include-GENERAL/Rtypes.h
../include-MC/MCEventHeader.o: /usr/include/g++/iostream.h
../include-MC/MCEventHeader.o: /usr/include/g++/streambuf.h
../include-MC/MCEventHeader.o: /usr/include/libio.h /usr/include/features.h
../include-MC/MCEventHeader.o: /usr/include/sys/cdefs.h
../include-MC/MCEventHeader.o: /usr/include/gnu/stubs.h
../include-MC/MCEventHeader.o: /usr/include/_G_config.h
../include-MC/MCEventHeader.o: /usr/include/gnu/types.h
../include-MC/MCEventHeader.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
../include-MC/MCEventHeader.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
../include-MC/MCEventHeader.o: /usr/include/g++/iomanip.h
../include-MC/MCEventHeader.o: /usr/include/g++/fstream.h
../include-MC/MCEventHeader.o: /usr/include/stdlib.h /usr/include/sys/types.h
../include-MC/MCEventHeader.o: /usr/include/time.h /usr/include/endian.h
../include-MC/MCEventHeader.o: /usr/include/bytesex.h
../include-MC/MCEventHeader.o: /usr/include/sys/select.h
../include-MC/MCEventHeader.o: /usr/include/selectbits.h
../include-MC/MCEventHeader.o: /usr/include/alloca.h /usr/include/math.h
../include-MC/MCEventHeader.o: /usr/include/huge_val.h
../include-MC/MCEventHeader.o: /usr/include/mathcalls.h
../include-MC/MCEventHeader.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/float.h
../include-MC/MCEventHeader.o: ../include-CORSIKA/COREventHeader.hxx
../include-MC/MCCphoton.o: ../include-MC/MCCphoton.hxx
../include-MC/MCCphoton.o: ../include-GENERAL/Rtypes.h
../include-MC/MCCphoton.o: /usr/include/g++/iostream.h
../include-MC/MCCphoton.o: /usr/include/g++/streambuf.h /usr/include/libio.h
../include-MC/MCCphoton.o: /usr/include/features.h /usr/include/sys/cdefs.h
../include-MC/MCCphoton.o: /usr/include/gnu/stubs.h /usr/include/_G_config.h
../include-MC/MCCphoton.o: /usr/include/gnu/types.h
../include-MC/MCCphoton.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
../include-MC/MCCphoton.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
../include-MC/MCCphoton.o: /usr/include/g++/iomanip.h
../include-MC/MCCphoton.o: /usr/include/g++/fstream.h /usr/include/stdlib.h
../include-MC/MCCphoton.o: /usr/include/sys/types.h /usr/include/time.h
../include-MC/MCCphoton.o: /usr/include/endian.h /usr/include/bytesex.h
../include-MC/MCCphoton.o: /usr/include/sys/select.h
../include-MC/MCCphoton.o: /usr/include/selectbits.h /usr/include/alloca.h
../include-MC/MCCphoton.o: /usr/include/string.h /usr/include/math.h
../include-MC/MCCphoton.o: /usr/include/huge_val.h /usr/include/mathcalls.h
../include-MC/MCCphoton.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/float.h
../include-MC/MCCphoton.o: ../include-GENERAL/jcmacros.h
../include-MTrigger/MTrigger.o: ../include-MTrigger/MTrigger.hxx
../include-MTrigger/MTrigger.o: /usr/include/g++/iostream.h
../include-MTrigger/MTrigger.o: /usr/include/g++/streambuf.h
../include-MTrigger/MTrigger.o: /usr/include/libio.h /usr/include/features.h
../include-MTrigger/MTrigger.o: /usr/include/sys/cdefs.h
../include-MTrigger/MTrigger.o: /usr/include/gnu/stubs.h
../include-MTrigger/MTrigger.o: /usr/include/_G_config.h
../include-MTrigger/MTrigger.o: /usr/include/gnu/types.h
../include-MTrigger/MTrigger.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
../include-MTrigger/MTrigger.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
../include-MTrigger/MTrigger.o: /usr/include/math.h /usr/include/huge_val.h
../include-MTrigger/MTrigger.o: /usr/include/mathcalls.h
../include-MTrigger/MTrigger.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/float.h
../include-MTrigger/MTrigger.o: /cern/root/include/TObject.h
../include-MTrigger/MTrigger.o: ../../../include-Classes/Mdefine.h
../../../include-Classes/MRawPixel.o: /usr/include/g++/iostream.h
../../../include-Classes/MRawPixel.o: /usr/include/g++/streambuf.h
../../../include-Classes/MRawPixel.o: /usr/include/libio.h
../../../include-Classes/MRawPixel.o: /usr/include/features.h
../../../include-Classes/MRawPixel.o: /usr/include/sys/cdefs.h
../../../include-Classes/MRawPixel.o: /usr/include/gnu/stubs.h
../../../include-Classes/MRawPixel.o: /usr/include/_G_config.h
../../../include-Classes/MRawPixel.o: /usr/include/gnu/types.h
../../../include-Classes/MRawPixel.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
../../../include-Classes/MRawPixel.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
../../../include-Classes/MRawPixel.o: /cern/root/include/TClonesArray.h
../../../include-Classes/MRawPixel.o: /cern/root/include/TString.h
../../../include-Classes/MRawPixel.o: /usr/include/string.h
../../../include-Classes/MRawPixel.o: /cern/root/include/TRandom.h
../../../include-Classes/MRawPixel.o: ../../../include-Classes/MRawPixel.h
../../../include-Classes/MRawPixel.o: /cern/root/include/TObject.h
../../../include-Classes/MRawPixel.o: ../../../include-Classes/Mdefine.h
../../../include-Classes/MRawEvt.o: /usr/include/g++/iostream.h
../../../include-Classes/MRawEvt.o: /usr/include/g++/streambuf.h
../../../include-Classes/MRawEvt.o: /usr/include/libio.h
../../../include-Classes/MRawEvt.o: /usr/include/features.h
../../../include-Classes/MRawEvt.o: /usr/include/sys/cdefs.h
../../../include-Classes/MRawEvt.o: /usr/include/gnu/stubs.h
../../../include-Classes/MRawEvt.o: /usr/include/_G_config.h
../../../include-Classes/MRawEvt.o: /usr/include/gnu/types.h
../../../include-Classes/MRawEvt.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
../../../include-Classes/MRawEvt.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
../../../include-Classes/MRawEvt.o: /cern/root/include/TClonesArray.h
../../../include-Classes/MRawEvt.o: /cern/root/include/TString.h
../../../include-Classes/MRawEvt.o: /usr/include/string.h
../../../include-Classes/MRawEvt.o: /cern/root/include/TRandom.h
../../../include-Classes/MRawEvt.o: ../../../include-Classes/MRawEvt.h
../../../include-Classes/MRawEvt.o: /cern/root/include/TObject.h
../../../include-Classes/MRawEvt.o: ../../../include-Classes/Mdefine.h
../../../include-Classes/MRawEvt.o: ../../../include-Classes/MRawPixel.h
../../../include-Classes/MMcEvt.o: /usr/include/g++/iostream.h
../../../include-Classes/MMcEvt.o: /usr/include/g++/streambuf.h
../../../include-Classes/MMcEvt.o: /usr/include/libio.h
../../../include-Classes/MMcEvt.o: /usr/include/features.h
../../../include-Classes/MMcEvt.o: /usr/include/sys/cdefs.h
../../../include-Classes/MMcEvt.o: /usr/include/gnu/stubs.h
../../../include-Classes/MMcEvt.o: /usr/include/_G_config.h
../../../include-Classes/MMcEvt.o: /usr/include/gnu/types.h
../../../include-Classes/MMcEvt.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
../../../include-Classes/MMcEvt.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
../../../include-Classes/MMcEvt.o: ../../../include-Classes/MMcEvt.h
../../../include-Classes/MMcEvt.o: /usr/include/stdlib.h
../../../include-Classes/MMcEvt.o: /usr/include/sys/types.h
../../../include-Classes/MMcEvt.o: /usr/include/time.h /usr/include/endian.h
../../../include-Classes/MMcEvt.o: /usr/include/bytesex.h
../../../include-Classes/MMcEvt.o: /usr/include/sys/select.h
../../../include-Classes/MMcEvt.o: /usr/include/selectbits.h
../../../include-Classes/MMcEvt.o: /usr/include/alloca.h /usr/include/stdio.h
../../../include-Classes/MMcEvt.o: /usr/include/stdio_lim.h
../../../include-Classes/MMcEvt.o: /usr/include/string.h
../../../include-Classes/MMcEvt.o: /usr/include/unistd.h
../../../include-Classes/MMcEvt.o: /usr/include/posix_opt.h
../../../include-Classes/MMcEvt.o: /usr/include/confname.h
../../../include-Classes/MMcEvt.o: /usr/include/fcntl.h
../../../include-Classes/MMcEvt.o: /usr/include/fcntlbits.h
../../../include-Classes/MMcEvt.o: /cern/root/include/TObject.h
MDiag.o: MDiag.h /usr/include/stdlib.h /usr/include/features.h
MDiag.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
MDiag.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
MDiag.o: /usr/include/sys/types.h /usr/include/gnu/types.h
MDiag.o: /usr/include/time.h /usr/include/endian.h /usr/include/bytesex.h
MDiag.o: /usr/include/sys/select.h /usr/include/selectbits.h
MDiag.o: /usr/include/alloca.h /usr/include/g++/iostream.h
MDiag.o: /usr/include/g++/streambuf.h /usr/include/libio.h
MDiag.o: /usr/include/_G_config.h
MDiag.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
MDiag.o: /usr/include/g++/fstream.h /usr/include/string.h
MDiag.o: /cern/root/include/TROOT.h /cern/root/include/TFile.h
MDiag.o: /cern/root/include/TRandom.h /cern/root/include/TTree.h
moments.o: moments.h /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
moments.o: /usr/include/libio.h /usr/include/features.h
moments.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
moments.o: /usr/include/_G_config.h /usr/include/gnu/types.h
moments.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
moments.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
moments.o: /usr/include/g++/fstream.h /usr/include/stdlib.h
moments.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
moments.o: /usr/include/bytesex.h /usr/include/sys/select.h
moments.o: /usr/include/selectbits.h /usr/include/alloca.h
moments.o: /usr/include/stdio.h /usr/include/stdio_lim.h
moments.o: /usr/include/string.h /usr/include/math.h /usr/include/huge_val.h
moments.o: /usr/include/mathcalls.h
moments.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/float.h
moments.o: ../include-GENERAL/jcmacros.h ../include-GENERAL/jcdebug.h
moments.o: camera-v.h
creadparam.o: creadparam.h /usr/include/g++/iostream.h
creadparam.o: /usr/include/g++/streambuf.h /usr/include/libio.h
creadparam.o: /usr/include/features.h /usr/include/sys/cdefs.h
creadparam.o: /usr/include/gnu/stubs.h /usr/include/_G_config.h
creadparam.o: /usr/include/gnu/types.h
creadparam.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
creadparam.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
creadparam.o: /usr/include/g++/fstream.h /usr/include/stdlib.h
creadparam.o: /usr/include/sys/types.h /usr/include/time.h
creadparam.o: /usr/include/endian.h /usr/include/bytesex.h
creadparam.o: /usr/include/sys/select.h /usr/include/selectbits.h
creadparam.o: /usr/include/alloca.h /usr/include/stdio.h
creadparam.o: /usr/include/stdio_lim.h /usr/include/string.h
creadparam.o: /usr/include/math.h /usr/include/huge_val.h
creadparam.o: /usr/include/mathcalls.h
creadparam.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/float.h
creadparam.o: ../include-GENERAL/jcmacros.h ../include-GENERAL/jcdebug.h
creadparam.o: camera-v.h
camera.o: /cern/root/include/TROOT.h /cern/root/include/TFile.h
camera.o: /cern/root/include/TTree.h /cern/root/include/TBranch.h MDiag.h
camera.o: /usr/include/stdlib.h /usr/include/features.h
camera.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
camera.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stddef.h
camera.o: /usr/include/sys/types.h /usr/include/gnu/types.h
camera.o: /usr/include/time.h /usr/include/endian.h /usr/include/bytesex.h
camera.o: /usr/include/sys/select.h /usr/include/selectbits.h
camera.o: /usr/include/alloca.h /usr/include/g++/iostream.h
camera.o: /usr/include/g++/streambuf.h /usr/include/libio.h
camera.o: /usr/include/_G_config.h
camera.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/stdarg.h
camera.o: /usr/include/g++/fstream.h /usr/include/string.h
camera.o: /cern/root/include/TRandom.h ../include-MTrigger/MTrigger.hxx
camera.o: /usr/include/math.h /usr/include/huge_val.h
camera.o: /usr/include/mathcalls.h
camera.o: /usr/lib/gcc-lib/i486-linux/2.7.2.3/include/float.h
camera.o: /cern/root/include/TObject.h ../../../include-Classes/Mdefine.h
camera.o: ../../../include-Classes/MRawEvt.h
camera.o: /cern/root/include/TClonesArray.h ../../../include-Classes/MMcEvt.h
camera.o: /usr/include/stdio.h /usr/include/stdio_lim.h /usr/include/unistd.h
camera.o: /usr/include/posix_opt.h /usr/include/confname.h
camera.o: /usr/include/fcntl.h /usr/include/fcntlbits.h camera.h
camera.o: /usr/include/dirent.h /usr/include/direntry.h
camera.o: /usr/include/posix1_lim.h /usr/include/local_lim.h
camera.o: /usr/include/linux/limits.h /usr/include/libgen.h camera-v.h
camera.o: ../include-GENERAL/jcmacros.h ../include-GENERAL/jcdebug.h
camera.o: creadparam.h ../Reflector/atm.h ../Reflector/reflector-v.h
camera.o: moments.h ../include-GENERAL/lagrange.h
camera.o: ../include-MC/MCEventHeader.hxx ../include-GENERAL/Rtypes.h
camera.o: /usr/include/g++/iomanip.h ../include-CORSIKA/COREventHeader.hxx
camera.o: ../include-MC/MCCphoton.hxx ../include-GENERAL/ranlib.h
