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
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
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 }