Jpp  master_rocky-37-gf0c5bc59d
the software that should make you happy
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 
9 #include "JDetector/JModule.hh"
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  */
26 int main(int argc, char **argv)
27 {
28  using namespace std;
29  using namespace JPP;
30 
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.
int main(int argc, char **argv)
Definition: JDrawK40.cc:26
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
int debug
debug level
Definition: JSirene.cc:69
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:2142
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:75
Utility class to parse parameter values.
Definition: JProperties.hh:501
Utility class to parse command line options.
Definition: JParser.hh:1698
size_t getNumberOfPairs() const
Get number of pairs.
const pair_type & getPair(const int index) const
Get pair of indices for given index.
const double xmax
Definition: JQuadrature.cc:24
const double xmin
Definition: JQuadrature.cc:23
double getDot(const JNeutrinoDirection &first, const JNeutrinoDirection &second)
Dot product.
Definition: JAstronomy.hh:676
JCombinatorics::pair_type pair_type
T & getInstance(const T &object)
Get static instance from temporary object.
Definition: JObject.hh:75
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
int j
Definition: JPolint.hh:792
Definition: JSTDTypes.hh:14
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:610
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:68