int main(int argc, char** argv) { cout<<endl; cout<<"Upgrade (C) by Andreas Zoglauer"<<endl; cout<<endl; MStr Usage; Usage<<endl; Usage<<" Usage: Upgrade <options>"<<endl; Usage<<" -s: setup file name (types: setup)"<<endl; Usage<<" -i: input file name (types: evta, uevta or sim)"<<endl; Usage<<" -o: output file name (types: evta or pev)"<<endl; Usage<<endl; Usage<<" The following upgrades are possible:"<<endl; Usage<<" uevta -> evta"<<endl; Usage<<" uevta -> pev"<<endl; Usage<<" evta -> pev"<<endl; Usage<<" sim -> pev"<<endl; Usage<<endl; MString SetupFileName = ""; MString InputFileName = ""; int InputFileType = c_Unknown; MString OutputFileName = ""; int OutputFileType = c_Unknown; // Now parse the command line or options for (Int_t i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch(argv[i][1]) { case 's': case 'i': case 'o': if (!((argc > i+1) && argv[i+1][0] != '-')){ cout<<"Error: Option "<<argv[i][1]<<" needs a second argument!"<<endl; cout<<Usage<<endl; exit(1); } break; default: cout<<"Error: Unknown option "<<argv[i][1]<<endl; cout<<Usage<<endl; exit(1); break; } switch(argv[i][1]) { case 's': SetupFileName = argv[i+1]; break; case 'i': InputFileName = argv[i+1]; break; case 'o': OutputFileName = argv[i+1]; break; default: break; } } } if (SetupFileName == "") { cout<<"Error: Please give a setup file"<<endl; cout<<Usage<<endl; exit(1); } if (InputFileName == "") { cout<<"Error: Please give a input file"<<endl; cout<<Usage<<endl; exit(1); } InputFileType = GetFileType(InputFileName); if (InputFileType == c_Unknown) { cout<<"Error: The input file must be of type uevta, evta or sim"<<endl; cout<<Usage<<endl; exit(1); } if (OutputFileName == "") { cout<<"Error: Please give a output file"<<endl; cout<<Usage<<endl; exit(1); } OutputFileType = GetFileType(OutputFileName); if (OutputFileType == c_Unknown) { cout<<"Error: The input file must be of type evta or pev"<<endl; cout<<Usage<<endl; exit(1); } if (OutputFileType <= InputFileType) { cout<<"Error: The output file needs to be of higher order than the input file:"<<endl; cout<<Usage<<endl; exit(1); } // Do the actual upgrade: // Step: uevta --> evta if (InputFileType == c_Uevta) { MString FileName; if (OutputFileType == c_Evta) { FileName = OutputFileName; } else { FileName = InputFileName; FileName.Replace(FileName.Last('.')+1, FileName.Length(), ""); FileName += "evta"; } MDaq Daq; Daq.ResetDaq(); Daq.Setup(SetupFileName); Daq.SetInputMode(MDaq::e_InputFile); Daq.ReadHighData(InputFileName, 6); Daq.WriteHighData(6, FileName, ""); Daq.StartDaq(); InputFileType = c_Evta; InputFileName = FileName; } if (InputFileType == c_Evta && OutputFileType == c_Pev) { cout<<"I: "<<InputFileType<<" O:"<<OutputFileType<<endl; TApplication App("Upgrade", 0, 0); MRawEventAnalyzer Analyzer(InputFileName, OutputFileName); Analyzer.AnalyzeAllEvents(); } return 0; }
MO_NAMESPACE_BEGIN //============================================================ TSize ROutput::CalculateStringCapacity(const MString& value){ return sizeof(TUint32) + value.Length(); }