View Javadoc

1   package org.lcsim.cal.calib;
2   import java.io.BufferedReader;
3   import org.lcsim.recon.emid.hmatrix.HMatrixTask;
4   import java.io.File;
5   import java.io.FileInputStream;
6   import java.io.InputStreamReader;
7   import java.util.ArrayList;
8   import java.util.List;
9   import org.lcsim.util.loop.LCIOEventSource;
10  import org.lcsim.util.loop.LCSimLoop;
11  
12  /**
13   * A simple standalone EMClusterID example
14   */
15  public class StandaloneEMClusterAnalysis
16  {
17      public static void main(String[] args) throws Exception
18      {
19          if(args.length<2)
20          {
21              usage();
22              return ;
23          }
24          
25          String listOfFiles = args[0];
26          List<File> filesToProcess = filesToProcess(listOfFiles);
27          LCIOEventSource src = new LCIOEventSource("EMClusterAnalysis", filesToProcess);
28          
29          String task = args[1];
30          if(!(task.equals("analyze") || task.equals("build")))
31          {
32              System.out.println("'"+args[1] +"' not a recognized task. Please specify 'analyze' or 'build'");
33              return;
34          }
35          int numToProcess=-1;
36          if(args.length>2) numToProcess=Integer.parseInt(args[2]);
37          
38          System.out.println("Processing "+numToProcess+" events from "+listOfFiles);
39          for(File f : filesToProcess)
40          {
41              String HMatrixName = "";
42              String[] parts = f.getName().split("_");
43              for(String s : parts)
44              {
45                  if(s.startsWith("Theta")) HMatrixName+=s+"_";
46                  if(s.contains("GeV")) HMatrixName+=s;
47              }
48  //            HMatrixName+=".hmx";
49          
50              LCSimLoop loop = new LCSimLoop();
51              loop.setLCIORecordSource(f);
52              HMatrixTask taskType = HMatrixTask.ANALYZE;
53              if(task.equals("build")) taskType = HMatrixTask.BUILD;
54              EMClusterID emClusID = new EMClusterID(taskType); 
55              emClusID.setHMatrixFileLocation(HMatrixName);
56              loop.add(emClusID);
57              loop.loop(numToProcess);
58              loop.dispose();
59          }
60      }
61      
62      public static void usage()
63      {
64          System.out.println("This is StandaloneEMClusterAnalysis");
65          System.out.println("usage:");
66          System.out.println("java StandaloneEMClusterAnalysis listOfInputFiles build/analyze [number of events to process]");
67      }
68      
69      public static List<File> filesToProcess(String listOfFiles) throws Exception
70      {
71          List<File> filesToProcess = new ArrayList<File>();
72          FileInputStream fin =  new FileInputStream(listOfFiles);
73          BufferedReader br =  new BufferedReader(new InputStreamReader(fin));
74          String line;
75          
76          while ( (line = br.readLine()) != null)
77          {
78              File f = new File(line.trim());
79              if(!f.exists()) throw new RuntimeException("Input file "+f+ " does not exist!");
80              filesToProcess.add(f);
81          }
82          
83          return filesToProcess;
84      }
85  }