Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JGlow.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4#include <map>
5#include <cmath>
6
7#include "TROOT.h"
8#include "TFile.h"
9#include "TH1D.h"
10#include "TMath.h"
11#include "TRandom3.h"
12
13#include "JTools/JConstants.hh"
14#include "JTools/JQuantile.hh"
15
18
19#include "JROOT/JRootToolkit.hh"
20#include "JTools/JRange.hh"
21#include "JSupport/JMeta.hh"
22
24#include "JCalibrate/JFitK40.hh"
25
26#include "JROOT/JManager.hh"
27
28#include "Jeep/JPrint.hh"
29#include "Jeep/JParser.hh"
30#include "Jeep/JMessage.hh"
31
33
34using namespace JSUPERNOVA;
35
36/**
37 * \file
38 *
39 * Auxiliary program to test simulation of L0 background
40 *
41 * \author mlincett
42 */
43
44int main(int argc, char **argv) {
45 using namespace std;
46 using namespace JPP;
47
48 string inputFile;
49 string outputFile;
50 int debug;
51 int duration_ms;
52 int outNumberOfLines;
53
54 try {
55
56 JParser<> zap("Auxiliary program to test generation of L0 background.");
57
58 zap['f'] = make_field(inputFile, "input file (output from JRipple).");
59 zap['o'] = make_field(outputFile, "output file.") = "glow.root";
60 zap['T'] = make_field(duration_ms, "duration in ms of the background sample.") = 500;
61 zap['N'] = make_field(outNumberOfLines, "number of lines of the simulated (output) detector") = 115;
62 zap['d'] = make_field(debug) = 1;
63 zap(argc, argv);
64 }
65 catch(const exception &error) {
66 FATAL(error.what() << endl);
67 }
68
69 TFile* in = TFile::Open(inputFile.c_str(), "exist");
70
71 if (in == NULL || !in->IsOpen()) {
72 FATAL("File: " << inputFile << " not opened." << endl);
73 }
74
75 NOTICE("Initialising generator." << endl);
76
77 JLightCurveBackgroundGenerator simbad(in, true);
78
79 in->Close();
80
81 NOTICE("File loaded." << endl);
82
83 int T_ms = duration_ms;
84
85 simbad.configureTimeWindow(T_ms);
86 simbad.setSeed();
87
88 int inNumberOfLines = 1;
89
90 simbad.configureRatio(inNumberOfLines, outNumberOfLines);
91
92 JManager<int, TH1D> RT_SEQ(new TH1D("RT_SEQ_%", "Hit count" , T_ms, 0, T_ms));
93 JManager<int, TH1D> NC_SEQ(new TH1D("NC_SEQ_%", "Active channels" , T_ms, 0, T_ms));
94
95 JManager<int, TH1D> RT_SHF(new TH1D("RT_SHF_%", "Hit count" , T_ms, 0, T_ms));
96 JManager<int, TH1D> NC_SHF(new TH1D("NC_SHF_%", "Active channels" , T_ms, 0, T_ms));
97
98 JManager<string, TH1D> RT_FIT(new TH1D("RT_FIT_%", "Hit count" , T_ms, 0, T_ms));
99
100 NOTICE("Generation SEQ" << endl);
101
102 for (int i = 0; i < 10; i++) {
103 bg_type seq = simbad.generate();
104
105 for (int j = 0; j < T_ms; j++) {
106 RT_SEQ[i]->Fill(j, seq[0][j]);
107 NC_SEQ[i]->Fill(j, seq[1][j]);
108
109 }
110
111 }
112
113 NOTICE("Generation SHF" << endl);
114
115 for (int i = 0; i < 10; i++) {
116 bg_type shf = simbad.generate_shuffled();
117
118 for (int j = 0; j < T_ms; j++) {
119
120 RT_SHF[i]->Fill(j, shf[0][j]);
121 NC_SHF[i]->Fill(j, shf[1][j]);
122
123 }
124 }
125
126 NOTICE("Generation H2D + FIT" << endl);
127
128 h2d_t* test1 = simbad.generate_H2D();
129
130 bg_type fit1 = simbad.generate_fitted();
131
132 for (int j = 0; j < T_ms; j++) {
133 RT_FIT["SG_1"]->Fill(j, fit1[0][j]);
134 }
135
136 NOTICE("Generation H2D + FIT - rebin = 5" << endl);
137
138 h2d_t* test5 = simbad.generate_H2D(5);
139
140
141 bg_type fit5 = simbad.generate_fitted(5);
142
143 for (size_t j = 0; j < fit5[0].size(); j++) {
144 cout << fit5[0][j] << endl;
145 RT_FIT["SG_5"]->Fill(j, fit5[0][j]);
146 }
147
148
149 /*
150 NOTICE("Generation FIT" << endl);
151
152 for (int i = 0; i < 10; i++) {
153
154 // RT_FIT["BG"]->Fill(j, fit[1][j]);
155 // RT_FIT["ER"]->Fill(j, fit[2][j]);
156 }
157
158 }*/
159
160
161 TFile out(outputFile.c_str(), "recreate");
162
163 TDirectory* dseq = out.mkdir("SEQ");
164 TDirectory* dshf = out.mkdir("SHF");
165 TDirectory* dfit = out.mkdir("FIT");
166
167 RT_SEQ.Write(*dseq);
168 NC_SEQ.Write(*dseq);
169
170 RT_SHF.Write(*dshf);
171 NC_SHF.Write(*dshf);
172
173 RT_FIT.Write(*dfit);
174
175 dfit->cd();
176 test1->Write();
177 test5->Write();
178
179 out.Close();
180
181}
string outputFile
KM3NeT DAQ constants, bit handling, etc.
int main(int argc, char **argv)
Definition JGlow.cc:44
This file provides a class to emulate a L0 (L1) background on the ms time scale for an arbitrarily si...
Dynamic ROOT object management.
General purpose messaging.
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
ROOT I/O of application specific meta data.
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.
Auxiliary class to define a range between two values.
Constants.
Utility class to parse command line options.
Definition JParser.hh:1698
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
Definition JManager.hh:47
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
Definition JManager.hh:304
Class to emulate L0 background for an arbitrarily sized detector.
bg_type generate_fitted(int rb=1)
Generate fitted L1 sample.
void configureRatio(const int inputNumberOfLines, const int outputNumberOfLines)
Configure generation ratio.
bg_type generate_shuffled(bool randomizeRun=false)
Generate sample of L0 background The sampling of the L0 data is not sequential but random within the ...
void configureTimeWindow(const int T_ms)
Configure the duration of an output sample.
void setSeed(const UInt_t uSeed=0)
Set TRandom seed.
bg_type generate()
Generate sample of L0 background L0 data are randomly sampled from a single L0 dataset.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
TH2F h2d_t
Definition JRipple.hh:7
int j
Definition JPolint.hh:801