29 int main(
int argc,
char **argv)
37 int neighbour, setmax;
42 JParser<> zap(
"Program to extract time offsets of DOM-DOM correlations");
44 zap[
'f'] =
make_field(inputFile,
"input file") =
"monitor.root";
46 zap[
'a'] =
make_field(detectorFile,
"detector file");
47 zap[
'n'] =
make_field(neighbour,
"neighbour level") = 5;
48 zap[
'm'] =
make_field(setmax,
"minimal entries") = 5;
51 if (zap.
read(argc, argv) != 0) {
55 catch(
const exception &error) {
56 FATAL(error.what() << endl);
65 catch(
const JException& error) {
70 const JStringRouter string(
detector);
74 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
75 zmap[module->getString()][module->getFloor()] = module->getID();
86 TF1
f1(
"f1",
"[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2])) + [3]");
92 double maxarr[number_of_strings][number_of_strings][3];
93 int duarr[number_of_strings];
97 TFile*
in = TFile::Open(inputFile.c_str(),
"exist");
99 if (
in == NULL || !
in->IsOpen()) {
100 FATAL(
"File: " << inputFile <<
" not opened." << endl);
104 for (
const auto& string_1 : zmap) {
105 duarr[
string.getIndex(string_1.first)]=string_1.first;
107 for (
const auto& floor_1 : string_1.second) {
109 const int module_1 = floor_1.second;
117 for (
const auto& string_2 : zmap) {
118 duarr[
string.getIndex(string_2.first)]=string_2.first;
120 if (string_1.first != string_2.first) {
122 TH1D* h1 = H1[string_1.first][string_2.first].p;
126 h1 =
new TH1D(
MAKE_CSTRING(string_1.first <<
"_" << string_2.first <<
"_" << neighbour <<
".2T"), NULL,
127 h2->GetYaxis()->GetNbins(), h2->GetYaxis()->GetXmin(), h2->GetYaxis()->GetXmax());
129 H1[string_1.first][string_2.first].p = h1;
132 for (
const auto& floor_2 : string_2.second) {
133 if (floor_1.first > floor_2.first && (floor_1.first - floor_2.first) == neighbour) {
135 const int module_2 = floor_2.second;
137 TH1D* py = h2->ProjectionY(
"__py",
138 h2->GetXaxis()->FindBin(TString(Form(
"%i", module_2))),
139 h2->GetXaxis()->FindBin(TString(Form(
"%i", module_2))),
"e");
147 if (floor_1.first == 18){
149 double mm=h1->GetXaxis()->GetBinCenter(h1->GetMaximumBin());
151 f1.SetParameter(0,
double(h1->GetMaximum()));
152 f1.SetParameter(1,
double(mm));
153 f1.SetParameter(2, 50.);
155 for (Int_t
i = 0;
i != f1.GetNpar(); ++
i) {
156 f1.SetParError(
i, 0.0);
161 if (h1->GetMaximum()>0){
163 h1->Fit(&f1,
"LQ",
"same");
167 maxarr[
string.getIndex(string_1.first) ][
string.getIndex(string_2.first) ][0] = h1->GetFunction(
"f1")->GetParameter(1);
168 maxarr[
string.getIndex(string_1.first) ][
string.getIndex(string_2.first) ][1] = h1->GetFunction(
"f1")->GetParameter(0);
169 maxarr[
string.getIndex(string_1.first) ][
string.getIndex(string_2.first) ][2] = h1->GetFunction(
"f1")->GetParameter(2);
178 for (
int i=0;
i<number_of_strings;
i++){
179 for (
int j=
i+1;
j<number_of_strings;
j++){
180 if (maxarr[
i][
j][1]>setmax && maxarr[
j][
i][1]>setmax && maxarr[
i][
j][2]>20. && maxarr[
j][
i][2]>20.){
181 cout <<
i <<
" " <<
j <<
" " << maxarr[
i][
j][0] <<
" " << maxarr[
j][
i][0] <<
" " << (maxarr[
i][
j][0]-maxarr[
j][
i][0])/2. <<
" " << maxarr[
i][
j][1] <<
" " << maxarr[
j][
i][1] <<
" " <<
" " << duarr[
i] <<
" " << duarr[
j] <<
" " << neighbour << endl;
192 for (
auto& h1 : H1) {
193 for (
auto& h2 : h1.second) {
194 h2.second.p->Write();
Utility class to parse command line options.
int main(int argc, char *argv[])
#define MAKE_CSTRING(A)
Make C-string.
Data structure for detector geometry and calibration.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
I/O formatting auxiliaries.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static const JStringCounter getNumberOfStrings
Function object to count unique strings.
Direct access to string in detector data structure.
int read(const int argc, const char *const argv[])
Parse the program's command line options.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Utility class to parse command line options.
do set_variable DETECTOR_TXT $WORKDIR detector