Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:20:27

0001 /**
0002  *  @file   PandoraSDK/include/Plugins/LArTransformationPlugin.h
0003  * 
0004  *  @brief  Header file for the lar transformation plugin interface class.
0005  * 
0006  *  $Log: $
0007  */
0008 #ifndef PANDORA_LAR_TRANSFORMATION_PLUGIN_H
0009 #define PANDORA_LAR_TRANSFORMATION_PLUGIN_H 1
0010 
0011 #include "Pandora/PandoraEnumeratedTypes.h"
0012 #include "Pandora/Process.h"
0013 
0014 namespace pandora
0015 {
0016 
0017 /**
0018  *  @brief  LArTransformationPlugin class
0019  */
0020 class LArTransformationPlugin : public Process
0021 {
0022 public:
0023     /**
0024      *  @brief  Transform from (U,V) to W position
0025      *
0026      *  @param  U the U position
0027      *  @param  V the V position
0028      */
0029     virtual double UVtoW(const double u, const double v) const = 0;
0030 
0031     /**
0032      *  @brief  Transform from (V,W) to U position
0033      *
0034      *  @param  V the V position
0035      *  @param  W the W position
0036      */
0037     virtual double VWtoU(const double v, const double w) const = 0;
0038 
0039     /**
0040      *  @brief  Transform from (W,U) to V position
0041      *
0042      *  @param  W the W position
0043      *  @param  U the U position
0044      */
0045     virtual double WUtoV(const double w, const double u) const = 0;
0046 
0047     /**
0048      *  @brief  Transform from (U,V) to Y position
0049      *
0050      *  @param  U the U position
0051      *  @param  V the V position
0052      */
0053     virtual double UVtoY(const double u, const double v) const = 0;
0054 
0055     /**
0056      *  @brief  Transform from (U,V) to Z position
0057      *
0058      *  @param  U the U position
0059      *  @param  V the V position
0060      */
0061     virtual double UVtoZ(const double u, const double v) const = 0;
0062 
0063     /**
0064      *  @brief  Transform from (U,W) to Y position
0065      *
0066      *  @param  U the U position
0067      *  @param  W the W position
0068      */
0069     virtual double UWtoY(const double u, const double w) const = 0;
0070 
0071     /**
0072      *  @brief  Transform from (U,W) to Z position
0073      *
0074      *  @param  U the U position
0075      *  @param  W the W position
0076      */
0077     virtual double UWtoZ(const double u, const double w) const = 0;
0078 
0079     /**
0080      *  @brief  Transform from (V,W) to Y position
0081      *
0082      *  @param  V the V position
0083      *  @param  W the W position
0084      */
0085     virtual double VWtoY(const double v, const double w) const = 0;
0086 
0087     /**
0088      *  @brief  Transform from (V,W) to Z position
0089      *
0090      *  @param  V the V position
0091      *  @param  W the W position
0092      */
0093     virtual double VWtoZ(const double v, const double w) const = 0;
0094 
0095     /**
0096      *  @brief  Transform from (Y,Z) to U position
0097      *
0098      *  @param  Y the Y position
0099      *  @param  Z the Z position
0100      */
0101     virtual double YZtoU(const double y, const double z) const = 0;
0102 
0103     /**
0104      *  @brief  Transform from (Y,Z) to V position
0105      *
0106      *  @param  Y the Y position
0107      *  @param  Z the Z position
0108      */
0109     virtual double YZtoV(const double y, const double z) const = 0;
0110 
0111     /**
0112      *  @brief  Transform from (Y,Z) to W position
0113      *
0114      *  @param  Y the Y position
0115      *  @param  Z the Z position
0116      */
0117     virtual double YZtoW(const double y, const double z) const = 0;
0118 
0119     /**
0120      *  @brief  Get the y, z position that yields the minimum chi squared value with respect to specified u, v and w coordinates
0121      *
0122      *  @param  u the u coordinate
0123      *  @param  v the v coordinate
0124      *  @param  w the w coordinate
0125      *  @param  sigmaU the uncertainty in the u coordinate
0126      *  @param  sigmaV the uncertainty in the v coordinate
0127      *  @param  sigmaW the uncertainty in the w coordinate
0128      *  @param  y to receive the y coordinate
0129      *  @param  z to receive the z coordinate
0130      *  @param  chiSquared to receive the chi squared value
0131      */
0132     virtual void GetMinChiSquaredYZ(const double u, const double v, const double w, const double sigmaU, const double sigmaV, const double sigmaW,
0133         double &y, double &z, double &chiSquared) const = 0;
0134 
0135     /** 
0136      *  @brief  Get the y, z position that yields the minimum chi squared value with respect to specified u, v and w coordinates
0137      *          and a provided fit to an overall trajectory in 3D
0138      *
0139      *  @param  u the u coordinate
0140      *  @param  v the v coordinate
0141      *  @param  w the w coordinate
0142      *  @param  sigmaU the uncertainty in the u coordinate
0143      *  @param  sigmaV the uncertainty in the v coordinate
0144      *  @param  sigmaW the uncertainty in the w coordinate
0145      *  @param  uFit the u coordinate from a fit to an overall trajectory
0146      *  @param  vFit the v coordinate from a fit to an overall trajectory
0147      *  @param  wFit the w coordinate from a fit to an overall trajectory
0148      *  @param  sigmaFit the uncertainty in coordinates extracted from the fit to an overall trajectory
0149      *  @param  y to receive the y coordinate
0150      *  @param  z to receive the z coordinate
0151      *  @param  chiSquared to receive the chi squared value
0152      */
0153     virtual void GetMinChiSquaredYZ(const double u, const double v, const double w, const double sigmaU, const double sigmaV, const double sigmaW,
0154         const double uFit, const double vFit, const double wFit, const double sigmaFit, double &y, double &z, double &chiSquared) const = 0;
0155 
0156 protected:
0157     friend class PluginManager;
0158 };
0159 
0160 } // namespace pandora
0161 
0162 #endif // #ifndef PANDORA_LAR_TRANSFORMATION_PLUGIN_H