Jpp
 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, 51, -0.5, +50.5, 51, -0.5, +50.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 
137  h1.Fill((Double_t) 31, (frame->testWhiteRabbitStatus() ? 1.0 : 0.0));
138 
139  if (!frame->testHighRateVeto() && !frame->testFIFOStatus()) {
140  h2.Fill((Double_t) 31, (status ? 1.0 : 0.0));
141  }
142  }
143  }
144  STATUS(endl);
145 
146  out.Write();
147  out.Close();
148 }
Utility class to parse command line options.
Definition: JParser.hh:1493
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.
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
Definition: JTransitTime.sh:36
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:1954
char ring
ring number [&#39;A&#39;,&#39;F&#39;]
int debug
debug level
Definition: JSirene.cc:61
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
then usage $script[distance] fi case set_variable R
Definition: JDrawLED.sh:40
#define FATAL(A)
Definition: JMessage.hh:67
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.
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:37
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62