Index: trunk/MagicSoft/Simulation/Detector/StarResponse/srreadparam.cxx
===================================================================
--- trunk/MagicSoft/Simulation/Detector/StarResponse/srreadparam.cxx	(revision 628)
+++ trunk/MagicSoft/Simulation/Detector/StarResponse/srreadparam.cxx	(revision 628)
@@ -0,0 +1,218 @@
+//=//////////////////////////////////////////////////////////////////////
+//=
+//= srreadparam            
+//=
+//= @file        srreadparam.cxx
+//= @desc        Reading of parameters file
+//= @author      O Blanch Bigas
+//= @email       blanch@ifae.es
+//= @date        Wed Feb 21 17:43:07 CET 2001
+//=
+//=----------------------------------------------------------------------
+//=
+//= Created: Wed Feb 21 17:43:07 CET 2001
+//= Author:  Oscar Blanch Bigas
+//= Purpose: Program for star response  simulation
+//= Notes:   See files README for details
+//=    
+//=----------------------------------------------------------------------
+//=
+//= $RCSfile: srreadparam.cxx,v $
+//= $Revision: 1.1 $
+//= $Author: magicsol $ 
+//= $Date: 2001-02-23 10:13:44 $
+//=
+//=//////////////////////////////////////////////////////////////////////
+
+// @T \newpage
+
+//!@section Source code of |srreadparam.cxx|.
+
+/*!@"
+  
+  This section describes briefly the source code for the file
+  |srreadparam.cxx|. This file is very closely related to the file
+  |readparams.cxx| from the |reflector| program. Actually, this later
+  file was the ancestror of the file you are looking at.
+
+  All the defines it uses are located in the file |srreadparam.h|. In
+  the first one we can see the definitions of the commands available
+  for the parameters file. We describe these commands in a later
+  section.
+  
+  @"*/
+
+//!@subsection Includes and Global variables definition.
+
+/*!@"
+  
+  All the defines are located in the file {\tt srreadparam.h}.
+
+  @"*/
+ 
+//!@{
+
+#include "srreadparam.h"
+
+//!@}
+
+//!@subsection Definition of global variables.
+
+/*!@"
+
+  Here we define the global variables where the values from the
+  parameters file are stored.
+  
+  @"*/
+
+//!@{
+
+static char Database_path[PATH_MAX_LENGTH];  //@< path to store the database
+static float Simulated_Phe_l = 0.0;          //@< lower limit for phe loop
+static float Simulated_Phe_u = 50.0;         //@< higher limit for phe loop
+static float Simulated_Phe_p = 0.1;          //@< precision for phe loop
+//!@}
+
+//!@subsection The function |readparam()|.
+
+//!-----------------------------------------------------------
+// @name  srreadparam
+//                                                
+// @desc  read parameters from the stdin / parameters file
+//
+// @var   *filename  Name of the parameters file (NULL->STDIN)
+//
+// @date Wed Feb 21 17:43:07 CET 2001
+//------------------------------------------------------------
+// @function
+
+//!@{ 
+void 
+readparam(char * filename)
+{
+  char line[LINE_MAX_LENGTH];    //@< line to get from the stdin
+  char token[ITEM_MAX_LENGTH];   //@< a single token
+  int i;                         //@< dummy counters
+  ifstream ifile;
+
+  ifile.open( filename );
+
+  // loop till the "end" directive is reached
+  int is_end = FALSE;
+  while (! is_end) {          
+
+    // get line from file or stdin
+    if ( filename != NULL )
+      ifile.getline(line, LINE_MAX_LENGTH);
+    else
+      cin.getline(line, LINE_MAX_LENGTH);
+
+    // skip comments (start with '#')
+    if (line[0] == '#')
+      continue;
+
+    // show user comments (start with '>')
+    if (line[0] == '>') {
+      cout << line << endl << flush;
+      continue;
+    }
+
+    // look for each item at the beginning of the line
+    for (i=0; i<=end_file; i++) 
+      if (strstr(line, ITEM_NAMES[i]) == line)
+        break;
+        
+    // if it is not a valid line, just ignore it
+    if (i == end_file+1) {
+      cerr << "Skipping unknown token in [" << line << "]\n";
+      continue;
+    }
+
+    // case block for each directive
+    switch ( i ) {
+
+    case database_path:          //@< name of the output path
+          
+      // get the path for the outcoming database 
+      sscanf(line, "%s %s", token, Database_path);
+
+      break;
+
+    case simulated_phe:       //@< limits for the phe loop
+          
+      // get energy range
+      sscanf(line, "%s %f %f %f", token, &Simulated_Phe_l, &Simulated_Phe_u,
+	     &Simulated_Phe_p);
+
+      break;
+
+    case end_file:            //@< end of the parameters file
+
+      // show a short message
+      is_end = TRUE;
+
+      break;
+
+    } // switch ( i ) 
+
+  } // while (! is_end)
+
+  // after the loop is finished, return to the main function
+  return;
+}
+//!@}
+
+
+//!-----------------------------------------------------------
+// @name get_database_path
+//                                                
+// @desc get name of the ouput path
+//
+// @return   Name of the output path
+//
+// @date Wed Feb 21 17:57:19 CET 2001
+//------------------------------------------------------------
+// @function 
+
+//!@{
+char *
+get_database_path(void)
+{
+  return (Database_path);
+}
+//!@}
+
+//!-----------------------------------------------------------
+// @name get_simulated_phe 
+//
+// @desc return limits for the phe loop
+//
+// @var *lphe  Lower limit in the phe loop
+// @var *uphe  Higher limit in the phe loop
+// @var *pphe  Precision in the phe loop
+// @return  void
+//
+// @date Wed Feb 21 18:04:03 CET 2001
+//------------------------------------------------------------
+// @function 
+
+//!@{
+void
+get_simulated_phe(float *lphe, float *uphe, float *pphe)
+{
+  *lphe =  Simulated_Phe_l;
+  *uphe =  Simulated_Phe_u;
+  *pphe =  Simulated_Phe_p;
+}
+//!@}
+
+
+//=------------------------------------------------------------
+//!@subsection Log of this file.
+
+//!@{
+//
+// $Log: not supported by cvs2svn $
+//!@}
+
+//=EOF
