Jpp  18.3.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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;
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";
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 }
Match operator for Cherenkov light from muon in any direction.
Utility class to parse command line options.
Definition: JParser.hh:1514
1D match criterion.
Definition: JMatch1D.hh:31
int main(int argc, char *argv[])
Definition: Main.cc:15
Match operator for Cherenkov light from muon with given direction.
static const double INDEX_OF_REFRACTION_WATER
Average index of refraction of water corresponding to the group velocity.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:83
string outputFile
Match operator for Cherenkov light from muon in any direction.
Data structure for vector in three dimensions.
Definition: JVector3D.hh:34
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
Utility class to parse command line options.
static const double C_INVERSE
Inverse speed of light in vacuum [ns/m].
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
3D match criterion.
Definition: JMatch3D.hh:29
int debug
debug level
3D match criterion with road width.
Definition: JMatch3B.hh:34