29int 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);
 
   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]");
 
   88  const int number_of_strings = getNumberOfStrings(
detector);
 
   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;                  
 
  111      TH2D* h2 = (TH2D*) in->Get(
MAKE_CSTRING(module_1 << 
".2S"));
 
  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();