Jpp - the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JDAQSummaryslice.cc File Reference

Example program to histogram KM3NETDAQ::JDAQSummaryslice. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <limits>
#include "TROOT.h"
#include "TFile.h"
#include "TH1D.h"
#include "TH2D.h"
#include "TProfile.h"
#include "JDAQ/JDAQSummarysliceIO.hh"
#include "JDetector/JDetectorAddressMapToolkit.hh"
#include "JTrigger/JTriggerToolkit.hh"
#include "JSupport/JMultipleFileScanner.hh"
#include "JSupport/JSupport.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Example program to histogram KM3NETDAQ::JDAQSummaryslice.

Author
mdejong

Definition in file JDAQSummaryslice.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 30 of file JDAQSummaryslice.cc.

31 {
32  using namespace std;
33  using namespace JPP;
34  using namespace KM3NETDAQ;
35 
37  JLimit_t& numberOfEvents = inputFile.getLimit();
38  string outputFile;
39  bool correct;
40  int debug;
41 
42  try {
43 
44  JParser<> zap("Example program to histogram summary data.");
45 
46  zap['f'] = make_field(inputFile);
47  zap['o'] = make_field(outputFile) = "summaryslice.root";
48  zap['n'] = make_field(numberOfEvents) = JLimit::max();
49  zap['c'] = make_field(correct);
50  zap['d'] = make_field(debug) = 2;
51 
52  zap(argc, argv);
53  }
54  catch(const exception& error) {
55  FATAL(error.what() << endl);
56  }
57 
58 
59  const double factor = 1.0e-3; // [kHz]
60 
61  cout.tie(&cerr);
62 
63  TFile out(outputFile.c_str(), "recreate");
64 
65  TH1D h0("h0", NULL, JDAQRate::getN(), JDAQRate::getData(factor));
66  TProfile h1("h1", NULL, 32,-0.5, 31.5);
67  TProfile h2("h2", NULL, 32,-0.5, 31.5);
68 
69  TH2D hu("hu", NULL, 201, -0.5, +200.5, 201, -0.5, +200.5);
70 
71  TH2D hv("hv", NULL, 51, -0.5, +50.5, 200, 0.0, 50.0);
72  TH2D hw("hw", NULL, 51, -0.5, +50.5, 200, 0.0, 50.0);
73 
74  TH2D hx("hx", NULL, NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5, 200, 0.0, 50.0);
75  TH2D hy("hy", NULL, NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5, 200, 0.0, 50.0);
76 
77 
78  while (inputFile.hasNext()) {
79 
80  STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl);
81 
82  JDAQSummaryslice* summaryslice = inputFile.next();
83 
84  DEBUG("Summary: "
85  << setw(8) << inputFile.getCounter() << ' '
86  << setw(8) << summaryslice->getRunNumber() << ' '
87  << setw(8) << summaryslice->getFrameIndex() << ' '
88  << setw(6) << summaryslice->size() << endl);
89 
90  const JDetectorAddressMap& demo = getDetectorAddressMap(summaryslice->getDetectorID());
91 
92  for (JDAQSummaryslice::const_iterator frame = summaryslice->begin(); frame != summaryslice->end(); ++frame) {
93 
94  const JModuleAddressMap& memo = demo.get(frame->getModuleID());
95 
96  int N[2] = { 0 };
97  double R[2] = { 0.0 };
98 
99  int lower[2] = { 0 };
100  int upper[2] = { 0 };
101 
102  for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
103 
104  const int index = (!frame->testHighRateVeto(pmt) && !frame->testFIFOStatus(pmt) ? 0 : 1);
105 
106  N[index] += 1;
107  R[index] += correct ? getRate(*frame, pmt, factor) : frame->getRate(pmt, factor);
108 
109  if (memo.getAddressTranslator(pmt).ring <= 'D')
110  lower[index] += 1;
111  else
112  upper[index] += 1;
113 
114  h0.Fill(correct ? getRate(*frame, pmt, factor) : frame->getRate(pmt, factor), frame->getWeight(pmt, factor));
115 
116  h1.Fill((Double_t) pmt, (frame->testHighRateVeto(pmt) ? 1.0 : 0.0));
117  h2.Fill((Double_t) pmt, (frame->testFIFOStatus (pmt) ? 1.0 : 0.0));
118  }
119 
120  hu.Fill((double) frame->getUDPMaximalSequenceNumber(),
121  (double) frame->getUDPNumberOfReceivedPackets());
122 
123  if (N[0] != 0) { hv.Fill((double) frame->getUDPMaximalSequenceNumber(), R[0] / N[0]); }
124  if (N[1] != 0) { hw.Fill((double) frame->getUDPMaximalSequenceNumber(), R[1] / N[1]); }
125 
126  if (N[0] != 0) {
127 
128  hx.Fill((double) N[1], R[0] / N[0]);
129 
130  if (lower[0] != 0 && upper[0] != 0) {
131  hy.Fill((double) N[1], R[0] / N[0]);
132  }
133  }
134 
135  const bool status = (frame->getUDPNumberOfReceivedPackets() == frame->getUDPMaximalSequenceNumber() + 1 &&
136  frame->hasUDPTrailer());
137 
138  h1.Fill((Double_t) 31, (frame->testWhiteRabbitStatus() ? 1.0 : 0.0));
139  h2.Fill((Double_t) 31, (status ? 1.0 : 0.0));
140  }
141  }
142  STATUS(endl);
143 
144  out.Write();
145  out.Close();
146 }
Utility class to parse command line options.
Definition: JParser.hh:1500
int getDetectorID() const
Get detector identifier.
#define STATUS(A)
Definition: JMessage.hh:63
then for HISTOGRAM in h0 h1
Definition: JMatrixNZ.sh:69
Lookup table for PMT addresses in detector.
string outputFile
int getRunNumber() const
Get run number.
int getFrameIndex() const
Get frame index.
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
Lookup table for PMT addresses in optical module.
double getRate(const JDAQSummaryFrame &frame, const int pmt, const double factor=1.0)
Get corrected rate of PMT.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
char ring
ring number [&#39;A&#39;,&#39;F&#39;]
int debug
debug level
Definition: JSirene.cc:63
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
#define FATAL(A)
Definition: JMessage.hh:67
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable NORTH set_variable EAST set_variable SOUTH set_variable WEST set_variable WORKDIR tmp set_variable R set_variable CT set_variable YMAX set_variable YMIN if do_usage *then usage $script[distance] fi case set_variable R
Definition: JDrawLED.sh:35
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
const JLimit & getLimit() const
Get limit.
Definition: JLimit.hh:73
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
then usage $script[input file[working directory[option]]] nWhere option can be N
Definition: JMuonPostfit.sh:35