tensor-of-inertia C++ API Reference¶
-
class I3TensorOfInertia : public I3ConditionalModule¶
- #include <I3TensorOfInertia.h>
This is an IceTray module to implement the Inertia tensor fit first guess algorithm. It works by calculating a Tensor of Inertia from the hit optical modules in the event, using the amplitudes as virtual masses. From the tensor the eigenvales and eigenvectors can be calculated, the smallest eigenvalue corresponds to the longest axis, which approximates the direction of the track.
The tensor of inertia algorithm treats the pulse amplitidues of the PMTs as virtual masses, with each PMT The amplitudes of the OMs at position r_i from the center of gravity of the hits. The center of gravity of the virtual mass distribution is given by
\[ \vec{COG}= \sum_{i=1}^N a_i^w*\vec{r_i} \]where a_i is the ith PMT amplitude. The Inertia Tensor itself is given by the usual formula with PMT amplitudes replacing the masses:\[ I^{k,l}=\sum_{i=1}^N a_i^w*(\delta^{kl}*\vec{r_i}^2-r_i^k*r_i^j). \]The amplitude weight w can be set arbitrarily, with 0 and 1 the two most common values. (1 itself is the default value) The smallest eigenvalue of the inertia tensor corresponds to the longest axis, which approximates the track if the smallest eigenvalue is much smaller than the other two eigenvalues.
Public Functions
-
inline ~I3TensorOfInertia()¶
-
void Configure()¶
-
void Physics(I3FramePtr frame)¶
Excecute the Inertia Tensor fit first guess reconstruction on the event in the provided frame. The algorithm is adapted from the one used in Siegmund.
Private Functions
-
I3TensorOfInertia(const I3TensorOfInertia &source)¶
-
I3TensorOfInertia &operator=(const I3TensorOfInertia &source)¶
- SET_LOGGER ("I3TensorOfInertia")
-
inline ~I3TensorOfInertia()¶
-
class I3TensorOfInertiaCalculator¶
- #include <I3TensorOfInertiaCalculator.hpp>
Public Functions
-
inline I3TensorOfInertiaCalculator(double ampWeight)¶
-
I3Matrix CalculateTOI(I3RecoPulseSeriesMapConstPtr pulse_series, const I3OMGeoMap &om_geo, const I3Position &cogPosition)¶
Calculates the Tensor of Inertia
-
int CorrectDirection(I3RecoPulseSeriesMapConstPtr pulse_series, const I3OMGeoMap &om_geo, const I3Position &cog, const std::vector<double> &minevect)¶
Corrects the direction of a reconstructed particle.
-
eval_tuple_t DiagonalizeTOI(I3Matrix &inertiatensor, double &mineval, double &eval2, double &eval3, double &evalratio)¶
Diagonalizes the Tensor of Inertia
Private Members
-
double ampWeight_¶
-
inline I3TensorOfInertiaCalculator(double ampWeight)¶
-
namespace std
STL namespace.
- file I3TensorOfInertia.cxx
- #include <boost/tuple/tuple.hpp>#include <boost/iterator/filter_iterator.hpp>#include <boost/foreach.hpp>#include “tensor-of-inertia/I3TensorOfInertia.h”#include “recclasses/I3TensorOfInertiaFitParams.h”#include “icetray/I3TrayHeaders.h”#include “dataclasses/physics/I3Particle.h”#include “dataclasses/I3Position.h”#include “icetray/OMKey.h”#include “dataclasses/physics/I3RecoPulse.h”#include “phys-services/I3Cuts.h”
copyright (C) 2004 the icecube collaboration $Id$
- Version
- Rcs
1.6
- Date
$Date$
- Author
grullon
Functions
-
I3_MODULE(I3TensorOfInertia)¶
- file I3TensorOfInertia.h
- #include “icetray/I3ConditionalModule.h”#include “icetray/I3Logging.h”#include “dataclasses/geometry/I3Geometry.h”#include “dataclasses/physics/I3RecoPulse.h”#include “dataclasses/I3Map.h”
copyright (C) 2004 the icecube collaboration
Version $Id$
- Version
- Rcs
1.3
- Date
$Date$
- Author
Sean Grullon grullon@icecube.wisc.edu
- file I3TensorOfInertiaCalculator.cxx
- #include <gsl/gsl_eigen.h>#include <dataclasses/geometry/I3Geometry.h>#include <icetray/OMKey.h>
- file I3TensorOfInertiaCalculator.hpp
- #include <boost/tuple/tuple.hpp>#include <dataclasses/I3Matrix.h>#include <dataclasses/physics/I3RecoPulse.h>#include <dataclasses/geometry/I3OMGeo.h>#include <dataclasses/I3Position.h>
copyright (C) 2006 the icecube collaboration
- Rcs
I3TensorOfInertiaCalculator.h 18552 2006-04-19 15:45:25Z grullon
- Version
- Rcs
1.3
- Date
- Rcs
2006-04-19 10:45:25 -0500 (Wed, 19 Apr 2006)
Typedefs
-
typedef boost::tuples::tuple<std::vector<double>, std::vector<double>, std::vector<double>> eval_tuple_t¶
This class contains a series of functions to calculate the tensor of inertia and related quantities. With this, you can calculate the inertia tensor of the hits, diagonalize the inertia tensor, and correct the direction of the longest eigenvector.
- dir icetray
- dir private
- dir public
- dir tensor-of-inertia
- dir tensor-of-inertia
- dir tensor-of-inertia