Jpp
JDAQSummaryslice.cc
Go to the documentation of this file.
1 
2 #include <string>
3 #include <iostream>
4 #include <iomanip>
5 #include <limits>
6 
7 #include "TROOT.h"
8 #include "TFile.h"
9 #include "TH1D.h"
10 #include "TProfile.h"
11 
12 #include "JDAQ/JDAQSummaryslice.hh"
13 
15 #include "JSupport/JSupport.hh"
16 
17 #include "Jeep/JParser.hh"
18 #include "Jeep/JMessage.hh"
19 
20 
21 /**
22  * \file
23  *
24  * Example program to histogram KM3NETDAQ::JDAQSummaryslice.
25  * \author mdejong
26  */
27 int main(int argc, char **argv)
28 {
29  using namespace std;
30  using namespace JPP;
31  using namespace KM3NETDAQ;
32 
33  JMultipleFileScanner<JDAQSummaryslice> inputFile;
34  JLimit_t& numberOfEvents = inputFile.getLimit();
35  string outputFile;
36  int debug;
37 
38  try {
39 
40  JParser<> zap("Example program to histogram summary data.");
41 
42  zap['f'] = make_field(inputFile);
43  zap['o'] = make_field(outputFile) = "summaryslice.root";
44  zap['n'] = make_field(numberOfEvents) = JLimit::max();
45  zap['d'] = make_field(debug) = 2;
46 
47  zap(argc, argv);
48  }
49  catch(const exception& error) {
50  FATAL(error.what() << endl);
51  }
52 
53 
54  const double factor = 1.0e-3; // [kHz]
55 
56  cout.tie(&cerr);
57 
58  TFile out(outputFile.c_str(), "recreate");
59 
60  TH1D h0("h0", NULL, JDAQRate::getN(), JDAQRate::getData(factor));
61  TH1D h1("h1", NULL, 32,-0.5, 32.5);
62 
63  while (inputFile.hasNext()) {
64 
65  STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl);
66 
67  JDAQSummaryslice* summaryslice = inputFile.next();
68 
69  DEBUG("Summary: "
70  << setw(8) << inputFile.getCounter() << ' '
71  << setw(8) << summaryslice->getRunNumber() << ' '
72  << setw(8) << summaryslice->getFrameIndex() << ' '
73  << setw(6) << summaryslice->size() << endl);
74 
75  for (JDAQSummaryslice::const_iterator frame = summaryslice->begin(); frame != summaryslice->end(); ++frame) {
76 
77  for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
78  h0.Fill(frame->getRate(pmt, factor), frame->getWeight(pmt, factor));
79  h1.Fill((Double_t) pmt, frame->testHighRateVeto(pmt));
80  }
81 
82  if (frame->testWhiteRabbitStatus()) {
83  h1.Fill((Double_t) 32);
84  }
85  }
86  }
87  STATUS(endl);
88 
89  out.Write();
90  out.Close();
91 }
JMessage.hh
KM3NETDAQ::JDAQChronometer::getFrameIndex
int getFrameIndex() const
Get frame index.
Definition: JDAQChronometer.hh:132
JSUPPORT::JLimit_t
JLimit JLimit_t
Type definition of limit.
Definition: JLimit.hh:215
KM3NETDAQ::NUMBER_OF_PMTS
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
JPARSER::JParser
Utility class to parse command line options.
Definition: JParser.hh:1493
JDAQSummaryslice.hh
JSupport.hh
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
debug
int debug
debug level
Definition: JSirene.cc:59
JSUPPORT::JLimit::getLimit
const JLimit & getLimit() const
Get limit.
Definition: JLimit.hh:73
main
int main(int argc, char **argv)
Definition: JDAQSummaryslice.cc:27
KM3NETDAQ::JDAQSummaryslice
Data summary slice.
Definition: JDAQSummaryslice.hh:31
JMultipleFileScanner.hh
STATUS
#define STATUS(A)
Definition: JMessage.hh:63
JParser.hh
KM3NETDAQ::JDAQChronometer::getRunNumber
int getRunNumber() const
Get run number.
Definition: JDAQChronometer.hh:121
make_field
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1954
DEBUG
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
std
Definition: jaanetDictionary.h:36
KM3NETDAQ
KM3NeT DAQ data structures and auxiliaries.
Definition: DataQueue.cc:39
FATAL
#define FATAL(A)
Definition: JMessage.hh:67
outputFile
string outputFile
Definition: JDAQTimesliceSelector.cc:37