Jpp  master_rocky-43-ge265d140c
the software that should make you happy
JMatch.cc
Go to the documentation of this file.
1 
2 #include <string>
3 #include <iostream>
4 #include <iomanip>
5 #include <vector>
6 
7 #include "TROOT.h"
8 #include "TFile.h"
9 #include "TH1D.h"
10 
11 #include "JGeometry3D/JVertex3D.hh"
13 #include "JTrigger/JMatch3D.hh"
14 #include "JTrigger/JMatch3B.hh"
15 #include "JTrigger/JMatch1D.hh"
16 
17 #include "Jeep/JParser.hh"
18 #include "Jeep/JMessage.hh"
19 
20 
21 /**
22  * \file
23  *
24  * Example program to plot match criterion.
25  * \author mdejong
26  */
27 int main(int argc, char **argv)
28 {
29  using namespace std;
30  using namespace JPP;
31 
32  string outputFile;
33  JTriggerParameters parameters;
34  int debug;
35 
36  try {
37 
38  JParser<> zap("Example program to plot match criterion.");
39 
40  zap['o'] = make_field(outputFile) = "match.root";
41  zap['@'] = make_field(parameters) = JPARSER::initialised();
42  zap['d'] = make_field(debug) = 0;
43 
44  zap(argc, argv);
45  }
46  catch(const exception &error) {
47  FATAL(error.what() << endl);
48  }
49 
50  typedef JVertex3D hit_type;
51 
52  TFile out(outputFile.c_str(), "recreate");
53 
54  TH1D h3dp("[3D]+", NULL, 5000, 0.0, 1000.0);
55  TH1D h3dm("[3D]-", NULL, 5000, 0.0, 1000.0);
56  TH1D h3bp("[3B]+", NULL, 5000, 0.0, 1000.0);
57  TH1D h3bm("[3B]-", NULL, 5000, 0.0, 1000.0);
58  TH1D h1dp("[1D]+", NULL, 5000, 0.0, 1000.0);
59  TH1D h1dm("[1D]-", NULL, 5000, 0.0, 1000.0);
60 
61  const JMatch3D<hit_type> match3D;
62  const JMatch3B<hit_type> match3B(parameters.trigger3DMuon.roadWidth_m);
63  const JMatch1D<hit_type> match1D(parameters.trigger3DMuon.roadWidth_m);
64 
65  const hit_type A(JVector3D(0.0, 0.0, 0.0), 0.0);
66 
67  for (Int_t i = 1; i <= h3dp.GetXaxis()->GetNbins(); ++i) {
68 
69  const Double_t x = h3dp.GetXaxis()->GetBinCenter(i);
70 
71  double t3d = 0.0;
72  double t3b = 0.0;
73  double t1d = 0.0;
74 
75  for (double t = 0.0; t <= x * INDEX_OF_REFRACTION_WATER * C_INVERSE; t += 0.1) {
76 
77  const hit_type B(JVector3D(x, 0.0, 0.0), t);
78 
79  if (match3D(A, B)) { t3d = t; }
80  if (match3B(A, B)) { t3b = t; }
81  if (match1D(A, B)) { t1d = t; }
82  }
83 
84  h3dp.SetBinContent(i, +t3d);
85  h3dm.SetBinContent(i, -t3d);
86  h3bp.SetBinContent(i, +t3b);
87  h3bm.SetBinContent(i, -t3b);
88  h1dp.SetBinContent(i, +t1d);
89  h1dm.SetBinContent(i, -t1d);
90  }
91 
92  out.Write();
93  out.Close();
94 }
string outputFile
Match operator for Cherenkov light from muon with given direction.
Match operator for Cherenkov light from muon in any direction.
Match operator for Cherenkov light from muon in any direction.
int main(int argc, char **argv)
Definition: JMatch.cc:27
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
int debug
debug level
Definition: JSirene.cc:69
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2142
3D match criterion for acoustic signals.
Data structure for vector in three dimensions.
Definition: JVector3D.hh:36
Utility class to parse command line options.
Definition: JParser.hh:1698
1D match criterion.
Definition: JMatch1D.hh:33
3D match criterion with road width.
Definition: JMatch3B.hh:36
static const double INDEX_OF_REFRACTION_WATER
Average index of refraction of water corresponding to the group velocity.
static const double C_INVERSE
Inverse speed of light in vacuum [ns/m].
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JSTDTypes.hh:14
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:68