11#include <framework/gearbox/Const.h>
13#include <Math/Vector2D.h>
14#include <Math/Vector3D.h>
28 double v0DaughterTrackNCDCHits(
const Particle* part,
const std::vector<double>& daughterID);
33 double v0DaughterTrackNSVDHits(
const Particle* part,
const std::vector<double>& daughterID);
38 double v0DaughterTrackNPXDHits(
const Particle* part,
const std::vector<double>& daughterID);
43 double v0DaughterTrackNVXDHits(
const Particle* part,
const std::vector<double>& daughterID);
48 double v0DaughterTrackNRemovedHits(
const Particle* part,
const std::vector<double>& daughterID);
53 double v0DaughterTrackFirstSVDLayer(
const Particle* part,
const std::vector<double>& daughterID);
58 double v0DaughterTrackFirstPXDLayer(
const Particle* part,
const std::vector<double>& daughterID);
63 double v0DaughterTrackFirstCDCLayer(
const Particle* part,
const std::vector<double>& daughterID);
68 double v0DaughterTrackLastCDCLayer(
const Particle* part,
const std::vector<double>& daughterID);
73 double v0DaughterTrackPValue(
const Particle* part,
const std::vector<double>& daughterID);
78 double v0DaughterTrackD0(
const Particle* part,
const std::vector<double>& daughterID);
83 double v0DaughterTrackPhi0(
const Particle* part,
const std::vector<double>& daughterID);
88 double v0DaughterTrackOmega(
const Particle* part,
const std::vector<double>& daughterID);
93 double v0DaughterTrackZ0(
const Particle* part,
const std::vector<double>& daughterID);
98 double v0DaughterTrackTanLambda(
const Particle* part,
const std::vector<double>& daughterID);
103 double v0DaughterTrackD0Error(
const Particle* part,
const std::vector<double>& daughterID);
108 double v0DaughterTrackPhi0Error(
const Particle* part,
const std::vector<double>& daughterID);
113 double v0DaughterTrackOmegaError(
const Particle* part,
const std::vector<double>& daughterID);
118 double v0DaughterTrackZ0Error(
const Particle* part,
const std::vector<double>& daughterID);
123 double v0DaughterTrackTanLambdaError(
const Particle* part,
const std::vector<double>& daughterID);
128 double v0DaughterD0(
const Particle* particle,
const std::vector<double>& daughterID);
133 double v0DaughterD0Diff(
const Particle* particle);
138 double v0DaughterZ0(
const Particle* particle,
const std::vector<double>& daughterID);
143 double v0DaughterZ0Diff(
const Particle* particle);
148 double v0DaughterHelixWithTrueVertexAsPivotD0Pull(
const Particle* part,
const std::vector<double>& daughterID);
153 double v0DaughterHelixWithTrueVertexAsPivotPhi0Pull(
const Particle* part,
const std::vector<double>& daughterID);
158 double v0DaughterHelixWithTrueVertexAsPivotOmegaPull(
const Particle* part,
const std::vector<double>& daughterID);
163 double v0DaughterHelixWithTrueVertexAsPivotZ0Pull(
const Particle* part,
const std::vector<double>& daughterID);
168 double v0DaughterHelixWithTrueVertexAsPivotTanLambdaPull(
const Particle* part,
const std::vector<double>& daughterID);
173 double v0DaughterHelixWithOriginAsPivotD0Pull(
const Particle* part,
const std::vector<double>& daughterID);
178 double v0DaughterHelixWithOriginAsPivotPhi0Pull(
const Particle* part,
const std::vector<double>& daughterID);
183 double v0DaughterHelixWithOriginAsPivotOmegaPull(
const Particle* part,
const std::vector<double>& daughterID);
188 double v0DaughterHelixWithOriginAsPivotZ0Pull(
const Particle* part,
const std::vector<double>& daughterID);
193 double v0DaughterHelixWithOriginAsPivotTanLambdaPull(
const Particle* part,
const std::vector<double>& daughterID);
198 double v0DaughterTrackParam5AtIPPerigee(
const Particle* part,
const std::vector<double>& params);
204 double v0DaughterTrackParamCov5x5AtIPPerigee(
const Particle* part,
const std::vector<double>& params);
210 int v0DaughtersShareInnermostHit(
const Particle* part);
215 bool v0DaughtersShareInnermostUHit(
const Particle* part);
220 bool v0DaughtersShareInnermostVHit(
const Particle* part);
227 double getV0DaughterTrackDetNHits(
const Particle* particle,
const double daughterID,
const Const::EDetector& det);
230 double getHelixParameterPullOfV0DaughterWithTrueVertexAsPivotAtIndex(
const Particle* particle,
const double daughterID,
234 int convertedPhotonErrorChecks(
const Particle* gamma,
const std::vector<double>& daughterIndices);
237 int convertedPhotonLoadHelixParams(
const Particle* gamma,
int daughterIndex1,
int daughterIndex2,
double& Phi01,
double& D01,
238 double& Omega1,
double& Z01,
double& TanLambda1,
double& Phi02,
double& D02,
double& Omega2,
double& Z02,
244 double convertedPhotonInvariantMass(
const Particle* gamma,
const std::vector<double>& daughterIndices);
249 double convertedPhotonDelTanLambda(
const Particle* gamma,
const std::vector<double>& daughterIndices);
254 double convertedPhotonDelR(
const Particle* gamma,
const std::vector<double>& daughterIndices);
257 std::pair<double, double> convertedPhotonZ1Z2(
const Particle* gamma,
const std::vector<double>& daughterIndices);
262 double convertedPhotonDelZ(
const Particle* gamma,
const std::vector<double>& daughterIndices);
267 double convertedPhotonZ(
const Particle* gamma,
const std::vector<double>& daughterIndices);
270 ROOT::Math::XYVector convertedPhotonXY(
const Particle* gamma,
const std::vector<double>& daughterIndices);
275 double convertedPhotonX(
const Particle* gamma,
const std::vector<double>& daughterIndices);
280 double convertedPhotonY(
const Particle* gamma,
const std::vector<double>& daughterIndices);
285 double convertedPhotonRho(
const Particle* gamma,
const std::vector<double>& daughterIndices);
290 ROOT::Math::XYZVector convertedPhoton3Momentum(
const Particle* gamma,
const std::vector<double>& daughterIndices);
295 double convertedPhotonPx(
const Particle* gamma,
const std::vector<double>& daughterIndices);
300 double convertedPhotonPy(
const Particle* gamma,
const std::vector<double>& daughterIndices);
305 double convertedPhotonPz(
const Particle* gamma,
const std::vector<double>& daughterIndices);
EDetector
Enum for identifying the detector components (detector and subdetector).
Class to store reconstructed particles.
Abstract base class for different kinds of events.