diff --git a/trackedep/main.go b/trackedep/main.go new file mode 100644 index 0000000000000000000000000000000000000000..f9f93a79c6588e0a4e2e86b08e4cecf09bce1277 --- /dev/null +++ b/trackedep/main.go @@ -0,0 +1,70 @@ +package main + +import ( + "flag" + "fmt" + "log" + "math" + "os" + + "github.com/decibelcooper/eicplot" + "github.com/decibelcooper/proio/go-proio" + "github.com/decibelcooper/proio/go-proio/model/eic" + "go-hep.org/x/hep/hbook" + "go-hep.org/x/hep/hplot" + "gonum.org/v1/plot" + "gonum.org/v1/plot/vg" +) + +func printUsage() { + fmt.Fprintf(os.Stderr, `Usage: `+os.Args[0]+` [options] + +options: +`, + ) + flag.PrintDefaults() +} + +var ( + output = flag.String("output", "out.png", "output file") +) + +func main() { + flag.Usage = printUsage + flag.Parse() + if flag.NArg() != 1 { + printUsage() + log.Fatal("Invalid arguments") + } + + reader, err := proio.Open(flag.Arg(0)) + if err != nil { + log.Fatal(err) + } + defer reader.Close() + + p, _ := plot.New() + p.X.Label.Text = "log_10{E dep. (MeV)}" + p.X.Tick.Marker = eicplot.PreciseTicks{5} + p.Y.Tick.Marker = eicplot.LogTicks{} + p.Y.Scale = eicplot.LogScale{} + + hist := hbook.NewH1D(100, -9, 2) + + for event := range reader.ScanEvents() { + trackerIDs := event.TaggedEntries("Tracker") + for _, id := range trackerIDs { + eDep, ok := event.GetEntry(id).(*eic.EnergyDep) + if !ok { + continue + } + + hist.Fill(math.Log10(float64(eDep.Mean*1000)), 1) + } + } + + hPlot := hplot.NewH1D(hist) + p.Add(hPlot) + + p.Save(6*vg.Inch, 4*vg.Inch, *output) +}