Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JSelectEvt.cc File Reference

Program to extract events. More...

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Program to extract events.

Author
bjjung

Definition in file JSelectEvt.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 39 of file JSelectEvt.cc.

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
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
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