62 JParser<> zap(
"Auxiliary program to test event shape variables.");
67 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
80 catch(
const exception &error) {
81 FATAL(error.what() << endl);
84 if (useWeights && numberOfEvents != JLimit::max()) {
85 FATAL(
"Cannot apply weighting to limited number of events.");
93 if (!detectorFile.empty()) {
112 TH1D hT(
"hT",
"thrust", 50, 0.5, 1.0);
114 TH1D hA(
"hA",
"aplanarity", 50, 0.0, 0.5);
115 TH1D hS(
"hS",
"sphericity", 100, 0.0, 1.0);
116 TH1D hc(
"hc",
"circularity", 100, 0.0, 1.0);
117 TH1D hp(
"hp",
"planar flow", 100, 0.0, 1.0);
119 TH1D hC(
"hC",
"C-variable", 100, 0.0, 1.0);
120 TH1D hD(
"hD",
"D-variable", 100, 0.0, 1.0);
122 TH1D hH10(
"hH10",
"H10", 100, 0.0, 1.0);
123 TH1D hH20(
"hH20",
"H20", 100, 0.0, 1.0);
124 TH1D hH30(
"hH30",
"H30", 100, 0.0, 1.0);
125 TH1D hH40(
"hH40",
"H40", 100, 0.0, 1.0);
127 TH1D hq(
"hq",
"Logarithmic eigenvalue ratio hit inertia tensor", 200, -20.0, 0.0);
134 if (!oscProbTable.empty()) {
141 if (scanners.setFlux(fluxMaps) == 0) {
142 WARNING(
"No flux function set." << endl);
151 scanner->setLimit(numberOfEvents);
156 fiducialVolume = get<JCylinder3D>(header);
159 while (scanner->hasNext()) {
161 Evt*
event = scanner->next();
163 const double weight = (useWeights ? scanner->getWeight(*event) : 1.0);
166 RIGHT (15) << scanner->getCounter() <<
182 const double aplanarity = S2.getAplanarity();
183 const double sphericity = S2.getSphericity();
184 const double circularity = S2.getCircularity();
185 const double planarflow = S2.getPlanarFlow();
187 const double C =
S1.getC();
188 const double D =
S1.getD();
190 const double q =
Q.getEigenvalueRatio();
192 hT.Fill(thrust, weight);
194 hA.Fill(aplanarity, weight);
195 hS.Fill(sphericity, weight);
196 hc.Fill(circularity, weight);
197 hp.Fill(planarflow, weight);
202 hH10.Fill(
H[1]/
H[0], weight);
203 hH20.Fill(
H[2]/
H[0], weight);
204 hH30.Fill(
H[3]/
H[0], weight);
205 hH40.Fill(
H[4]/
H[0], weight);
207 hq.Fill(
log10(q), weight);
JVertex3D getVertex(const Trk &track)
Get vertex.
Utility class to parse command line options.
Class for hit inertia tensor calculations.
Q(UTCMax_s-UTCMin_s)-livetime_s
void boostToCOM(Evt &event)
Boost event to the Center of Mass (COM) frame.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Class for computing Fox-Wolfram moments.
static const double H
Planck constant [eV s].
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
static const double C
Physics constants.
Auxiliary class for defining the range of iterations of objects.
Class for sphericity tensor calculations.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
set_variable E_E log10(E_{fit}/E_{#mu})"
JOscProbFunction< JFunction_t > make_oscProbFunction(const JFunction_t &function)
Auxiliary method for creating an interface to an oscillation probability function.
Auxiliary class for parsing multiparticle fluxes.
Auxiliary base class for list of file names.
Data structure for single set of oscillation parameters.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
std::vector< filescanner_type >::iterator iterator
const JHead & getHeader() const
Get header.
Auxiliary class for organising Monte Carlo file scanners associated with event weighters.
void set(const JVector2D &p0, const JVector2D &p1)
Set circle.
do set_variable DETECTOR_TXT $WORKDIR detector
Auxiliary data structure for floating point format specification.
do echo Generating $dir eval D
Template definition of a multi-dimensional oscillation probability interpolation table.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
double getThrust(const std::vector< Trk >::const_iterator __begin, const std::vector< Trk >::const_iterator __end)
Compute thrust for a given range of tracks.
#define DEBUG(A)
Message macros.