//=////////////////////////////////////////////////////////////////////// //= //= moments //= //= @file moments.h //= @desc Header file //= @author J C Gonzalez //= @email gonzalez@mppmu.mpg.de //= @date Thu May 7 16:24:22 1998 //= //=---------------------------------------------------------------------- //= //= Created: Thu May 7 16:24:22 1998 //= Author: Jose Carlos Gonzalez //= Purpose: Program for reflector simulation //= Notes: See files README for details //= //=---------------------------------------------------------------------- //= //= $RCSfile: moments.h,v $ //= $Revision: 1.2 $ //= $Author: moralejo $ //= $Date: 2004-09-17 14:48:21 $ //= //=////////////////////////////////////////////////////////////////////// // @T \newpage //!@section Source code of |moments.h|. /*!@" In this section you can find the source code for the file |moments.h|. This file is mainly needed by |moments.cxx|. @"*/ //!@{ #ifndef _moments_ #define _moments_ #ifndef _this_ #define _this_ moments #endif //!@} //!@subsection Include files. //!@{ #include #include #include #include #include #include #include #include "jcmacros.h" #include "jcdebug.h" #include "camera-v.h" //!@} //!@subsection Macro-definitions, and constants. //!@{ typedef struct { // moments float m1x, m1y; // first moments (mean) float m2xx, m2xy, m2yy; // second moments (around origin) float m2cxx, m2cxy, m2cyy; // second moments (around mean) float m3xxx, m3xxy, m3xyy, m3yyy; // third moments (around origin) float m3cxxx, m3cxxy, m3cxyy, m3cyyy; // third moments (around mean) // charges float charge; // total charge in the image float xmax, ymax; // position of the maximum float smax; // charge of the block of maximum float maxs[10]; // charges of the first 10 max. int nmaxs[10]; // number of pixels of 10 max. // parameters of the image float length, width, dist, xdist, azw, miss, alpha, conc[9]; float phi, asymx, asymy; } Moments_Info; typedef struct { float *fi; int *isl, *islands; float *vislands; int numisl; } Islands_Info; typedef struct { float length1, length2; float width1, width2; } LenWid_Info; //!@} //!@subsection Prototypes of functions. //!@{ //++ // prototypes //-- Moments_Info * moments( int n, float *image, float **pix, float plateScale, int flag); Islands_Info * islands( int n, float *f, int **pixneig, int *npixneig, int cleanning, int ipixcut ); LenWid_Info * lenwid( int n, float *image, float **pix, float plateScale, float max_distance); void crosspt( float ax, float ay, float bx, float by, float cx, float cy, float dx, float dy, float * pcrossx, float * pcrossy); //!@} //!@{ #endif // ! _moments_ //!@} //=------------------------------------------------------------ //!@subsection Log of this file. //!@{ /* *$Log: not supported by cvs2svn $ *Revision 1.1.1.1 1999/11/05 11:59:33 harald *This the starting point for CVS controlled further developments of the *camera program. The program was originally written by Jose Carlos. *But here you can find a "rootified" version to the program. This means *that there is no hbook stuff in it now. Also the output of the *program changed to the MagicRawDataFormat. * *The "rootification" was done by Dirk Petry and Harald Kornmayer. * *In the following you can see the README file of that version: * *================================================== * *Fri Oct 22 1999 D.P. * *The MAGIC Monte Carlo System * *Camera Simulation Programme *--------------------------- * *1) Description * *This version is the result of the fusion of H.K.'s *root_camera which is described below (section 2) *and another version by D.P. which had a few additional *useful features. * *The version compiles under Linux with ROOT 2.22 installed *(variable ROOTSYS has to be set). * *Compile as before simply using "make" in the root_camera *directory. * *All features of H.K.'s root_camera were retained. * *Additional features of this version are: * * a) HBOOK is no longer used and all references are removed. * * b) Instead of HBOOK, the user is given now the possibility of * having Diagnostic data in ROOT format as a complement * to the ROOT Raw data. * * This data is written to the file which is determined by * the new input parameter "diag_file" in the camera parameter * file. * * All source code file belonging to this part have filenames * starting with "MDiag". * * The user can read the output file using the following commands * in an interactive ROOT session: * * root [0] .L MDiag.so * root [1] new TFile("diag.root"); * root [2] new TTreeViewer("T"); * * This brings up a viewer from which all variables of the * TTree can be accessed and histogrammed. This example * assumes that you have named the file "diag.root", that * you are using ROOT version 2.22 or later and that you have * the shared object library "MDiag.so" which is produced * by the Makefile along with the executable "camera". * * ! The contents of the so-called diag file is not yet fixed. * ! At the moment it is what J.C.G. used to put into the HBOOK * ! ntuple. In future versions the moments calculation can be * ! removed and the parameter list be modified correspondingly. * * c) Now concatenated reflector files can be read. This is useful * if you have run the reflector with different parameters but * you want to continue the analysis with all reflector data * going into ONE ROOT outputfile. * * The previous camera version contained a bug which made reading * of two or more concatenated reflector files impossible. * * d) The reflector output format was changed. It is now version * 0.4 . * The change solely consists in a shortening of the flag * definition in the file * * include-MC/MCCphoton.hxx * * ! IF YOU WANT TO READ REFLECTOR FORMAT 0.3, you can easily * ! do so by recompiling camera with the previous version of * ! include-MC/MCCphoton.hxx. * * The change was necessary for saving space and better * debugging. From now on, this format can be frozen. * * ! For producing reflector output in the new format, you * ! of course have to recompile your reflector with the * ! new include-MC/MCCphoton.hxx . * * e) A first version of the pixelization with the larger * outer pixels is implemented. THIS IS NOT YET FULLY * TESTED, but first rough tests show that it works * at least to a good approximation. * * The present version implements the camera outline * with 18 "gap-pixels" and 595 pixels in total as * shown in * * http://sarastro.ifae.es/internal/home/hardware/camera/numbering.ps * * This change involved * * (i) The file pixels.dat is no longer needed. Instead * the coordinates are generated by the program itself * (takes maybe 1 second). In the file * * pixel-coords.txt * * in the same directory as this README, you find a list * of the coordinates generated by this new routine. It * has the format * * number i j x y size-factor * * where i and j are J.C.G.'s so called biaxis hexagonal * coordinates (for internal use) and x and y are the * coordinates of the pixel centers in the standard camera * coordinate system in units of centimeters. The value * of "size-factor" determines the linear size of the pixel * relative to the central pixels. * * (ii) The magic.def file has two additional parameters * which give the number of central pixels and the * number of gap pixels * * (iii) In camera.h and camera.cxx several changes were * necessary, among them the introduction of several * new functions * * The newly suggested outline with asymmetric Winston cones * will be implemented in a later version. * * f) phe files can no longer be read since this contradicts * our philosophy that the analysis should be done with other * programs like e.g. EVITA and not with "camera" itself. * This possibility was removed. * * g) ROOT is no longer invoked with an interactive interface. * In this way, camera can better be run as a batch program and * it uses less memory. * * h) small changes concerning the variable "t_chan" were necessary in * order to avoid segmentation faults: The variable is used as an * index and it went sometimes outside the limits when camera * was reading proton data. This is because the reflector files * don't contain the photons in a chronological order and also * the timespread can be considerably longer that the foreseen * digitisation timespan. Please see the source code of camera.cxx * round about line 1090. * * j) several unused variables were removed, a few warning messages * occur when you compile camera.cxx but these can be ignored at * the moment. * *In general the program is of course not finished. It still needs *debugging, proper trigger simulation, simulation of the asymmetric *version of the outer pixels, proper NSB simulation, adaption of *the diag "ntuple" contents to our need and others small improvements. * *In the directory rfl-files there is now a file in reflector format 0.4 *containing a single event produced by the starfiled adder. It has *a duration of 30 ns and represents the region around the Crab Nebula. *Using the enclosed input parameter file, camera should process this *file without problems. * *2) The README for the previous version of root_camera * *README for a preliminary version of the *root_camera program. * *root_camera is based on the program "camera"of Jose Carlos *Gonzalez. It was changed in the way that only the pixelisation *and the distibution of the phe to the FADCs works in a *first version. * *Using the #undef command most possibilities of the orignal *program are switched of. * *The new parts are signed by * *- ROOT or __ROOT__ * nearly all important codelines for ROOT output are enclosed * in structures like * #ifdef __ROOT__ * * code * * #endif __ROOT__ * * In same case the new lines are signed by a comment with the word * ROOT in it. * * For timing of the pulse some variable names are changed. * (t0, t1, t --> t_ini, t_fin, t_1st, t_chan,...) * Look also for this changes. * * For the new root-file is also a change in readparm-files * * *- __DETAIL_TRIGGER__ * * This is for the implementation of the current work on trigger * studies. Because the class MTrigger is not well documented it * isnīt a part of this tar file. Only a dummy File exists. * * * *With all files in the archive, the root_camera program should run. * *A reflector file is in the directory rfl-files * *================================================== * *From now on, use CVS for development!!!! * * * *Revision 1.1.1.1 1999/10/21 16:35:10 petry *first synthesised version * * Revision 1.4 1999/03/15 14:59:10 gonzalez * camera-1_1 * * Revision 1.3 1999/03/02 09:56:15 gonzalez * *** empty log message *** * */ //!@} //=EOF