Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN
DumpAIDATextFiles.java+155added 1.1
Class to dump AIDA hists to custom txt file.

hps-java/src/main/java/org/lcsim/hps/users/phansson
DumpAIDATextFiles.java added at 1.1
diff -N DumpAIDATextFiles.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ DumpAIDATextFiles.java	24 Aug 2012 16:00:18 -0000	1.1
@@ -0,0 +1,155 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.lcsim.hps.users.phansson;
+
+import hep.aida.IAnalysisFactory;
+import hep.aida.IHistogram1D;
+import hep.aida.IManagedObject;
+import hep.aida.ITree;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.cli.*;
+
+/**
+ *
+ * @author phansson
+ * Dumps all histograms in AIDA files to a standard text format
+ */
+
+
+
+
+public class DumpAIDATextFiles {
+
+    private static Options createCommandLineOptions() {
+
+        Options options = new Options();
+        //options.addOption(new Option("p", true, "The pattern to match. [NOT IMPLEMENTED YET]"));
+        options.addOption(new Option("f", true, "The file to use."));
+        options.addOption(new Option("d", true, "The directory with files."));
+        return options;
+
+    }
+    /**
+     * @param args the command line arguments
+     */
+
+    public static class TextFileUtil {
+        
+        public TextFileUtil() {
+        
+        }
+        public void createTextFile(String fileName, ITree tree) {
+            //System.out.println("-----\nCreating text file "+fileName+" from tree with " + tree.listObjectNames().length + " objects");
+            FileWriter fWriter=null;
+            PrintWriter pWriter=null;
+            try {
+                fWriter = new FileWriter(fileName);
+                pWriter = new PrintWriter(fWriter);
+             
+                for( String name : tree.listObjectNames()) {
+                    //System.out.println(str);
+                    IManagedObject obj = tree.find(name);
+                    if(obj instanceof IHistogram1D ) {
+                        //System.out.println(name + " is a histogram");
+                        IHistogram1D h = (IHistogram1D)obj;
+                        String htxt = convertHist1D(h);
+                        pWriter.println(htxt);
+                    }
+                }
+            
+                
+                
+                if(fWriter!=null) fWriter.close();
+                if(pWriter!=null) pWriter.close();
+            } catch (IOException ex) {
+                Logger.getLogger(DumpAIDATextFiles.class.getName()).log(Level.SEVERE, null, ex);
+            }   
+            //System.out.println("-----");
+            
+                
+        }
+        
+        public String convertHist1D(IHistogram1D h) {
+            //Type title bincontent
+            String htxt = "IHistogram1D \""+h.title()+"\" " + h.axis().bins() + " " + h.axis().lowerEdge() + " " + h.axis().upperEdge();
+            for(int ibin=0;ibin<h.axis().bins();++ibin) {
+                htxt += " " + h.binEntries(ibin);
+            }
+            return htxt;
+        }   
+
+    }
+
+    public static void main(String[] args) {
+        // TODO code application logic here
+
+        Options options = createCommandLineOptions();
+        if (args.length == 0) {
+            System.out.println("TestRunEvioToLcio [options] [evioFiles]");
+            HelpFormatter help = new HelpFormatter();
+            help.printHelp(" ", options);
+            System.exit(1);
+        }
+        CommandLineParser parser = new PosixParser();
+        CommandLine cl = null;
+        try {
+            cl = parser.parse(options, args);
+        } catch (ParseException e) {
+            throw new RuntimeException("Problem parsing command line options.", e);
+        }
+        List<String> fileList = new ArrayList<String>();
+        if(cl.hasOption("f")) {
+            fileList.add(cl.getOptionValue("f"));
+        } else if(cl.hasOption("d")) {
+            //check if pattern is to be used or simply use run all aida files
+            String dirName = cl.getOptionValue("d");
+            if(cl.hasOption("p")) {
+                System.out.println("The pattern option is not implemented. Please do it!");
+                System.exit(1);
+            } else {
+                File dir = new File(dirName);
+                for(File f : dir.listFiles()) {
+                    if(f.isFile() && f.getName().contains(".aida")) {
+                        fileList.add(f.getAbsolutePath());
+                    }
+                }
+            }
+        }
+        IAnalysisFactory af = IAnalysisFactory.create();
+        TextFileUtil util = new TextFileUtil();
+        for(String file : fileList) {
+            System.out.println("Converting file " + file);
+            if(!file.contains(".aida")) {
+                System.out.println("This is not an AIDA file?!");
+                continue;
+            }
+            ITree tree=null;
+            try {
+                tree = af.createTreeFactory().create(file);
+            } catch (IllegalArgumentException ex) {
+                Logger.getLogger(DumpAIDATextFiles.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (IOException ex) {
+                Logger.getLogger(DumpAIDATextFiles.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            if(tree==null) {
+                System.out.println("Couldn't create \"tree\" for file: "+file);
+                continue;
+            }
+            String txtFileName = file.replaceAll(".aida", ".histtxt");
+            util.createTextFile(txtFileName, tree);
+                
+        }
+    
+    }
+
+    
+}
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1