// Copyright 2000, CERN, Geneva, Switzerland package hep.physics.yappi.util; import java.io.*; public class PDGMCtoXML { static int PDGID = 0; static double Pmass = 0; static double PMPErr = 0; static double PMMErr = 0; static String PName = ""; static double Pwidth = 0; static double PWPErr = 0; static double PWMErr = 0; static BufferedWriter outfile; // Find out the monte carlo number 0..3 protected static int getIDNumber(int i, String st) { String str1 = ""; if (i > 3) return 0; if (st.trim()== " ") return 0; for (int j=0;j<=7;j++) { char chr = st.charAt(j+i*8+1); str1 += chr; } str1 = str1.trim(); //System.out.println(str1); int wert = 0; try {wert = Integer.parseInt(str1);} catch (Exception e) {} return wert; } // Find out the value-field protected static double getvalue(String st) { String str1 = ""; for (int j=0;j<=14;j++) { char chr = st.charAt(j+33); str1 += chr; } str1 = str1.trim(); //System.out.println(str1); double wert = 0; try {wert = new Double(str1).doubleValue();} catch (Exception e) {} return wert; } // Find out the error protected static double geterror(String st, int i) { String str1 = ""; for (int j=0;j<=8;j++) { char chr = st.charAt(j+49+i*9); str1 += chr; } str1 = str1.trim(); //System.out.println(str1); double wert = 0; try {wert = new Double(str1).doubleValue();} catch (Exception e) {} return wert; } // Find out the name protected static String getname(String st) { String str1 = ""; char chr = 'x'; for (int j=0;chr!=' ';j++) { chr = st.charAt(j+67); //System.out.println(chr); str1 += chr; } str1 = str1.trim(); //System.out.println(str1); return str1; } protected static void writeinfo() { try { outfile.write("<Particle Name=\""+PName+"\">");outfile.newLine(); outfile.write(" <data Name=\"PDGID\" Value=\""+PDGID+"\" />");outfile.newLine(); outfile.write(" <data Name=\"Mass\" Value=\""+Pmass+"\" PError=\""+PMPErr+"\" MError=\""+PMMErr+"\"/>");outfile.newLine(); outfile.write(" <data Name=\"Width\" Value=\""+Pwidth+"\" PError=\""+PWPErr+"\" MError=\""+PWMErr+"\"/>");outfile.newLine(); outfile.write("</Particle>");outfile.newLine(); } catch (IOException e) { System.out.println("Error .. "+e.toString()); } } public static void main(String[] arguments) { try { FileReader myfile = new FileReader("hep/physics/yappi/util/garren_98.mc"); BufferedReader infile = new BufferedReader(myfile); FileWriter mywriter = new FileWriter("hep/physics/yappi/util/garren_98_mc.xml"); outfile = new BufferedWriter(mywriter); outfile.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");outfile.newLine(); outfile.write("<PPML Source=\"PDGConv\">");outfile.newLine(); outfile.write(" ");outfile.newLine(); boolean eof = false; while (!eof) { String line = infile.readLine(); if (line == null) eof = true; else { line = line.trim(); if (line.charAt(0) == 'M') { if (PDGID != 0) { //write the XML-info writeinfo(); } //System.out.println(line); PDGID = getIDNumber(0,line); Pmass = getvalue(line); PMPErr = geterror(line,0); PMMErr = geterror(line,1); PName = getname(line); } else if (line.charAt(0) == 'W') { //System.out.println(line); Pwidth = getvalue(line); PWPErr = geterror(line,0); PWMErr = geterror(line,1); } } } writeinfo(); outfile.write("</PPML>");outfile.newLine(); outfile.close(); infile.close(); } catch (IOException e) { System.out.println("Error .. "+e.toString()); } } }