/*############################################################# *# # *# Author: G.Carminati # *# First Release: Mar 2007 # *# # *############################################################# */ #include #include #include #include #include #include "../inc/Decode.hh" #include "../inc/Parameters.hh" // *********************************************************************** // Decode command line // *********************************************************************** int Decode::CommandLine(int argc, char** argv) { std::string sevents, sseed; for (int i = 1; i < argc; ++i ) /* argument 0 is the executable name */ { char *arg; arg = argv[i]; if (arg[0] != '-') continue; switch (arg[1]) { case 'h' : std::cout << "usage: mupage"< " << "-i -n -s -p " << "-o " << "-g -t \n"; exit(0); case 'i' : i++; numrun = std::string(argv[i]); break; case 'n' : i++; events = atoi(argv[i]); sevents = std::string(argv[i]); break; case 's' : i++; seed = atoi(argv[i]); sseed = std::string(argv[i]); break; case 'p' : i++; ParameterFileName = std::string(argv[i]); break; case 'o' : i++; OutputFileName = std::string(argv[i]); i++; LivetimeFileName = std::string(argv[i]); break; case 'g' : i++; DetectorFileName = std::string(argv[i]); lib_det = true; break; case 't' : i++; lib_io = false; break; } } if(numrun.empty() || sevents.empty() || sseed.empty() || ParameterFileName.empty() || OutputFileName.empty() || LivetimeFileName.empty() ) return -79; else return 0; } // *********************************************************************** // Decode parameters from the external file // Set variables to their default values // *********************************************************************** int Decode::DecodeParameters() { std::ifstream finpar; finpar.open(ParameterFileName.c_str(), std::ios::in); if (finpar.fail() ) return -99; std::string token; char comment[256]; while(!finpar.eof()) { finpar >> token; if(token.find("#") != std::string::npos) { finpar.getline(comment, 255); continue; } if(token == "DEPTHmax") finpar >> DEPTHmax; else if(token == "Zmin") finpar >> Zmin; else if(token == "Zmax") finpar >> Zmax; else if(token == "CANr") finpar >> CANr; else if(token == "EnlargedCANr") finpar >> EnlargedCANr; else if(token == "THETAmin") { finpar >> THETAmin; if (THETAmin < 0.) return 1; } else if(token == "THETAmax") { finpar >> THETAmax; if (THETAmax > 85.) return 2; } else if(token == "Rmin") { finpar >> Rmin; if (Rmin < 0) return 3; } else if(token == "Rmax") finpar >> Rmax; else if(token == "MULTmin") { finpar >> MULTmin; if (MULTmin < 1) return 4; } else if(token == "MULTmax") finpar >> MULTmax; else if(token == "GEANTid") finpar >> GEANTid; else if(token == "density") finpar >> density; else if(token == "AbsLength") finpar >> AbsLength; else if(token == "NAbsLength") finpar >> NAbsLength; else if(token == "Ethreshold") { finpar >> Ethreshold; if (float(Ethreshold) < Emin) return 5; } } finpar.close(); return 0; } // *********************************************************************** // Handling error when read command line // *********************************************************************** std::string Decode::ErrorCommandLine() { std::ostringstream errorcl; errorcl << "\nError reading command line.\n" << "Check if all the options are correct typing: " << "./mupage"<