Jpp 21.0.0-rc.1-88-g0130508c4
the software that should make you happy
Loading...
Searching...
No Matches
JDrawK40.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4
5#include "TROOT.h"
6#include "TFile.h"
7#include "TH1D.h"
8
12#include "JROOT/JRootToolkit.hh"
14#include "JCalibrate/JFitK40.hh"
15#include "Jeep/JProperties.hh"
16#include "Jeep/JPrint.hh"
17#include "Jeep/JParser.hh"
18#include "Jeep/JMessage.hh"
19
20/**
21 * \file
22 *
23 * Auxiliary program to draw K40 fit function.
24 * \author mdejong
25 */
26int main(int argc, char **argv)
27{
28 using namespace std;
29 using namespace JPP;
30
31 JK40Parameters K40 = JK40Parameters::getInstance();
32
33 string outputFile;
34 int debug;
35
36 try {
37
38 JProperties properties;
39
40 properties.insert(gmake_property(K40.R));
41 properties.insert(gmake_property(K40.p1));
42 properties.insert(gmake_property(K40.p2));
43 properties.insert(gmake_property(K40.p3));
44 properties.insert(gmake_property(K40.p4));
45
46 JParser<> zap("Auxiliary program to draw K40 fit function.");
47
48 zap['@'] = make_field(properties) = JPARSER::initialised();
49 zap['o'] = make_field(outputFile, "output file.");
50 zap['d'] = make_field(debug, "debug.") = 1;
51
52 zap(argc, argv);
53 }
54 catch(const exception &error) {
55 FATAL(error.what() << endl);
56 }
57
58
59 const JModule module = getModule<JKM3NeT_t>(1001);
60
61 double ct = -1.0;
62
63 for (JModule::const_iterator i = module.begin(); i != module.end(); ++i) {
64 for (JModule::const_iterator j = module.begin(); j != i; ++j) {
65
66 if (getDot(i->getDirection(), j->getDirection()) > ct) {
67 ct = getDot(i->getDirection(), j->getDirection());
68 }
69 }
70 }
71
72 const JCombinatorics_t combinatorics(module);
73
74 cout << "Cosine minimal angle between PMT axes " << FIXED(5,3) << ct << endl;
75 cout << "Default rate [Hz] " << FIXED(6,3) << JK40Parameters::getInstance().getValue(ct) << '/' << FIXED(6,3) << JK40Parameters::getInstance().getValue(+1.0) << endl;
76 cout << "Modified rate [Hz] " << FIXED(6,3) << K40 .getValue(ct) << '/' << FIXED(6,3) << K40 .getValue(+1.0) << endl;
77
78 TFile out(outputFile.c_str(), "recreate");
79
80 const Int_t nx = combinatorics.getNumberOfPairs();
81 const Double_t xmin = -0.5;
82 const Double_t xmax = nx - 0.5;
83
84 TH1D h0("h0", NULL, 5000, -1.0, +1.0);
85 TH1D h1("h1", NULL, nx, xmin, xmax);
86
87 for (Int_t i = 1; i <= h0.GetXaxis()->GetNbins(); ++i) {
88
89 const Double_t x = h0.GetBinCenter(i);
90
91 h0.SetBinContent(i, K40.getValue(x));
92 }
93
94 for (Int_t i = 1; i <= h1.GetXaxis()->GetNbins(); ++i) {
95
96 const int index = h1.GetBinCenter(i);
97
98 const JCombinatorics_t::pair_type pair = combinatorics.getPair(index);
99
100 const double x = getDot(module[pair.first].getDirection(), module[pair.second].getDirection());
101
102 h1.SetBinContent(i, K40.getValue(x));
103 }
104
105 out.Write();
106 out.Close();
107}
string outputFile
Detector support kit.
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:74
Data structure for optical module.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2140
I/O formatting auxiliaries.
Utility class to parse parameter values.
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
Data structure for a composite optical module.
Definition JModule.hh:76
Utility class to parse parameter values.
Utility class to parse command line options.
Definition JParser.hh:1697
const pair_type & getPair(const int index) const
Get pair of indices for given index.
size_t getNumberOfPairs() const
Get number of pairs.
int main()
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448
Livetime of noise data.
Definition JHead.hh:1062
PMT combinatorics for optical module.
Fit parameters for two-fold coincidence rate due to K40.
Definition JFitK40.hh:726
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:67