Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JPrintDomino.cc
Go to the documentation of this file.
1
2#include <string>
3#include <iostream>
4#include <iomanip>
5#include <map>
6
7#include "TROOT.h"
8#include "TFile.h"
9#include "TH1D.h"
10
12#include "JAAnet/JPDB.hh"
13
14#include "Jeep/JeepToolkit.hh"
15#include "Jeep/JPrint.hh"
16#include "Jeep/JParser.hh"
17#include "Jeep/JMessage.hh"
18
19
20/**
21 * \file
22 *
23 * Auxiliary program to print JDomino.cc statistics.
24 * \author mdejong
25 */
26int main(int argc, char **argv)
27{
28 using namespace std;
29
30 vector<string> inputFile;
31 bool combine;
32 int debug;
33
34 try {
35
36 JParser<> zap("Auxiliary program to print JDomino statistics.");
37
38 zap['f'] = make_field(inputFile);
39 zap['c'] = make_field(combine);
40 zap['d'] = make_field(debug) = 2;
41
42 zap(argc, argv);
43 }
44 catch(const exception &error) {
45 FATAL(error.what() << endl);
46 }
47
48 using namespace JPP;
49
50 vector<TH1D*> buffer;
51
52 for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
53
54 TFile* in = TFile::Open(file_name->c_str(), "exist");
55
56 if (in == NULL || !in->IsOpen()) {
57 FATAL("File: " << *file_name << " not opened." << endl);
58 }
59
60 TH1D* job = dynamic_cast<TH1D*>(in->Get("job"));
61
62 if (job == NULL) {
63 FATAL("No job statistics.");
64 }
65
66 buffer.push_back(job);
67 }
68
69
70 if (!buffer.empty()) {
71
72 const int WIDTH = 32;
73
74 DEBUG(setw(6) << ' ' << ' ' << FILL(WIDTH, ' '));
75
76 for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
77 DEBUG(' ' << setw(12) << getFilename(*file_name));
78 }
79 DEBUG(endl);
80
81 TH1D* h0 = buffer[0];
82
83 for (int i0 = 1; i0 <= h0->GetNbinsX(); ++i0) {
84
85 const Double_t x = h0->GetBinCenter(i0);
86 const int type = (int) x;
87 const Int_t i1 = h0->FindBin(-x);
88
89 if (combine) {
90 if (type > 0) {
91 break;
92 }
93 }
94
95 double W = 0.0;
96
97 for (vector<TH1D*>::iterator h1 = buffer.begin(); h1 != buffer.end(); ++h1) {
98 W += (combine ? (*h1)->GetBinContent(i0) + (*h1)->GetBinContent(i1) : (*h1)->GetBinContent(i0));
99 }
100
101 if (W > 0.0 || JPDB::getInstance().hasPDG(combine ? abs(type) : type)) {
102
103 NOTICE(setw(6) << right << (combine ? abs(type) : type));
104
105 try {
106
107 JParticle particle = JPDB::getInstance().getPDG(combine ? abs(type) : type);
108
109 NOTICE(' ' << setw(WIDTH) << left << particle.name);
110 }
111 catch(const exception& error) {
112
113 NOTICE(' ' << setw(WIDTH) << left << "unknown");
114 }
115
116 for (vector<TH1D*>::iterator h1 = buffer.begin(); h1 != buffer.end(); ++h1) {
117 NOTICE(noshowpos << ' ' << FIXED(12,6) << (combine ? (*h1)->GetBinContent(i0) + (*h1)->GetBinContent(i1) : (*h1)->GetBinContent(i0)));
118 }
119
120 NOTICE(endl);
121 }
122 }
123 }
124}
Definition of hit and track types and auxiliary methods for handling Monte Carlo data.
General purpose messaging.
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
int main(int argc, char **argv)
I/O formatting auxiliaries.
Auxiliary methods for handling file names, type names and environment.
Utility class to parse command line options.
Definition JParser.hh:1698
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for sequence of same character.
Definition JManip.hh:330
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448
Auxiliary class to handle particle name, codes and mass.
Definition JPDB.hh:37
std::string name
name of particle
Definition JPDB.hh:94
Auxiliary data structure for alignment of data.
Definition JManip.hh:231