Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JSelectEvt.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4#include <vector>
5
7
10
11#include "JDAQ/JDAQEventIO.hh"
13
14#include "JSupport/JMeta.hh"
15#include "JSupport/JSupport.hh"
20
22
26
27#include "Jeep/JPrint.hh"
28#include "Jeep/JParser.hh"
29#include "Jeep/JMessage.hh"
30
31
32/**
33 * \file
34 *
35 * Program to extract events.
36 *
37 * \author bjjung
38 */
39int main(int argc, char **argv)
40{
41 using namespace std;
42 using namespace JPP;
43 using namespace KM3NETDAQ;
44
46
47 typedef JParallelFileScanner< JTypeList<JDAQEvent, JEvt> > JParallelFileScanner_t;
48 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
49
50 JParallelFileScanner_t inputFile;
51 size_t numberOfEvents;
53 int application;
54 JEventSelector event_selector;
55 int debug;
56
57
58 try {
59
60 JParser<> zap("Program to extract events.");
61
62 zap['f'] = make_field(inputFile, "input file (output of JXXXReconstruction.sh)");
63 zap['n'] = make_field(numberOfEvents, "maximum number of selected events")
64 = std::numeric_limits<size_t>::max();
65 zap['o'] = make_field(outputFile, "output file name")
66 = "extract.root";
67 zap['A'] = make_field(application)
69 zap['L'] = make_field(event_selector)
71 zap['d'] = make_field(debug)
72 = 1;
73
74 zap(argc, argv);
75 }
76 catch(const exception& error) {
77 FATAL(error.what() << endl);
78 }
79
80
81 outputFile.open();
82 outputFile.put(JMeta(argc, argv));
83
84
85 // Select events
86
87 size_t N = 0;
88
89 for (JTreeScanner<Evt> mc(inputFile); inputFile.hasNext() && N < numberOfEvents; ) {
90
91 cout << "\revent: " << setw(8) << inputFile.getCounter() << flush;
92
93 multi_pointer_type ps = inputFile.next();
94
95 JDAQEvent* tev = ps;
96 JEvt* in = ps;
97 Evt* event = NULL;
98
99 in->select(JHistory::is_application(application));
100
101 if (in->empty()) { continue; }
102
103 sort(in->begin(), in->end(), qualitySorter);
104
105 if (mc.getEntries() != 0) {
106 event = mc.getEntry(tev->getCounter());
107 }
108
109 if (!event_selector(*tev, *in, event)) {
110 continue;
111 }
112
113 outputFile.put(*tev);
114 outputFile.put(*in);
115
116 ++N;
117 }
118
119
120 // Copy header
121
122 JHead header = getHeader(inputFile.getFilename());
123 header.createUUID(); // Ensure UUID is set
124
125 Head head;
126 copy(header, head);
127
128 outputFile.put(head);
129
130
131 // Copy rest
132
134
135 io >> outputFile;
136
137 outputFile.close();
138
139 return 0;
140}
string outputFile
Recording of objects on file according a format that follows from the file name extension.
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
ROOT I/O of application specific meta data.
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
I/O formatting auxiliaries.
int main(int argc, char **argv)
Definition JSelectEvt.cc:39
ROOT TTree parameter settings of various packages.
Monte Carlo run header.
Definition JHead.hh:1236
void createUUID()
Create UUID if not already set.
Definition JHead.hh:1301
Data structure for set of track fit results.
Utility class to parse command line options.
Definition JParser.hh:1698
Object writing to file.
General purpose class for object reading from a list of file names.
General purpose class for parallel reading of objects from a single file or multiple files.
Template definition for direct access of elements in ROOT TChain.
JTriggerCounter_t getCounter() const
Get trigger counter.
static const int JMUONGANDALF
static const int JSHOWERDIRECTIONPREFIT
static const int JMUONENERGY
static const int JSHOWERCOMPLETEFIT
static const int JMUONSTART
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition JHead.cc:163
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
Definition Evt.hh:21
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
Definition Head.hh:65
Acoustic event fit.
Auxiliary class to test history.
Definition JHistory.hh:167
Auxiliary class for recursive type list generation.
Definition JTypeList.hh:351
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary class for ROOT I/O of application specific meta data.
Definition JMeta.hh:72