6 #ifndef ptwXY_h_included
7 #define ptwXY_h_included
15 #if defined __cplusplus
20 #define ptwXY_minimumSize 10
21 #define ptwXY_minimumOverflowSize 4
22 #define ptwXY_maxBiSectionMax 20
23 #define ptwXY_minAccuracy 1e-14
24 #define ptwXY_sectionSubdivideMax 1 << 16
25 #define ClosestAllowXFactor 10
31 #define ptwXY_union_fill 1
32 #define ptwXY_union_trim 2
33 #define ptwXY_union_mergeClosePoints 4
107 double accuracy, int64_t primarySize, int64_t secondarySize,
nfu_status *status,
int userFlag );
109 double biSectionMax,
double accuracy, int64_t primarySize, int64_t secondarySize,
int userFlag );
111 double biSectionMax,
double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length,
double const *xy,
114 double biSectionMax,
double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length,
double const *Xs,
115 double const *Ys,
nfu_status *status,
int userFlag );
237 ptwXYPoints *ptwXY2,
double lowerEps2,
double upperEps2,
int positiveXOnly2 );
255 double biSectionMax,
double accuracy,
char **endCharacter,
nfu_status *status );
279 double xMin,
double xMax,
int degree,
int recursionLimit,
double tolerance,
nfu_status *status );
281 #if defined __cplusplus
nfu_status ptwXY_release(ptwXYPoints *ptwXY)
nfu_status ptwXY_getSlopeAtX(ptwXYPoints *ptwXY, double x, const char side, double *slope)
nfu_status ptwXY_sub_fromDouble(ptwXYPoints *ptwXY, double value)
ptwXYPoints * ptwXY_flatInterpolationToLinear(ptwXYPoints *ptwXY, double lowerEps, double upperEps, nfu_status *status)
ptwXYOverflowPoint * overflowPoints
enum ptwXY_dataFrom_e ptwXY_dataFrom
ptwXYPoints * ptwXY_xSlice(ptwXYPoints *ptwXY, double xMin, double xMax, int64_t secondarySize, int fill, nfu_status *status)
ptwXYPoints * ptwXY_new(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, nfu_status *status, int userFlag)
std::vector< ExP01TrackerHit * > a
ptwXYPoints * ptwXY_createFrom_Xs_Ys(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *Xs, double const *Ys, nfu_status *status, int userFlag)
ptwXYPoints * ptwXY_createFromFunction(int n, double *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax, nfu_status *status)
nfu_status ptwXY_slopeOffset(ptwXYPoints *ptwXY, double slope, double offset)
void ptwXY_showInteralStructure(ptwXYPoints *ptwXY, FILE *f, int printPointersAsNull)
Float_t y1[n_points_granero]
double ptwXY_getAccuracy(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_clone(ptwXYPoints *ptwXY, nfu_status *status)
int64_t ptwXY_length(ptwXYPoints *ptwXY)
enum ptwXY_interpolation_e ptwXY_interpolation
int ptwXY_getUserFlag(ptwXYPoints *ptwXY)
nfu_status ptwXY_dullEdges(ptwXYPoints *ptwXY, double lowerEps, double upperEps, int positiveXOnly)
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX(ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint)
double ptwXY_setBiSectionMax(ptwXYPoints *ptwXY, double biSectionMax)
int64_t ptwXY_getNonOverflowLength(ptwXYPoints const *ptwXY)
Float_t x1[n_points_granero]
double ptwXY_getXMax(ptwXYPoints *ptwXY)
void ptwXY_simpleWrite(ptwXYPoints *ptwXY, FILE *f, char *format)
nfu_status ptwXY_copyToC_XY(ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t allocatedSize, int64_t *numberOfPoints, double *xy)
ptwXPoints * ptwXY_groupThreeFunctions(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXYPoints *ptwXY3, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status)
nfu_status(* ptwXY_createFromFunction_callback)(double x, double *y, void *argList)
char const * ptwXY_getInterpolationString(ptwXYPoints *ptwXY)
nfu_status ptwXY_f_integrate(ptwXY_interpolation interpolation, double x1, double y1, double x2, double y2, double *value)
nfu_status ptwXY_setXYDataFromXsAndYs(ptwXYPoints *ptwXY, int64_t length, double const *x, double const *y)
ptwXYPoints * ptwXY_createGaussianCenteredSigma1(double accuracy, nfu_status *status)
ptwXY_lessEqualGreaterX_e
ptwXYPoints * ptwXY_sub_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
enum ptwXY_group_normType_e ptwXY_group_normType
double ptwXY_integrate(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
enum ptwXY_sigma_e ptwXY_sigma
struct ptwXYOverflowPoint_s ptwXYOverflowPoint
ptwXPoints * ptwXY_runningIntegral(ptwXYPoints *ptwXY, nfu_status *status)
nfu_status ptwXY_neg(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_mul2_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
struct ptwXYOverflowPoint_s * next
double ptwXY_getXMaxAndFrom(ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom)
nfu_status ptwXY_setXYData(ptwXYPoints *ptwXY, int64_t length, double const *xy)
nfu_status ptwXY_clear(ptwXYPoints *ptwXY)
double ptwXY_integrateWithWeight_x(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
nfu_status ptwXY_mutualifyDomains(ptwXYPoints *ptwXY1, double lowerEps1, double upperEps1, int positiveXOnly1, ptwXYPoints *ptwXY2, double lowerEps2, double upperEps2, int positiveXOnly2)
double ptwXY_integrateDomainWithWeight_x(ptwXYPoints *ptwXY, nfu_status *status)
ptwXPoints * ptwXY_groupTwoFunctions(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status)
nfu_status ptwXY_valueTo_ptwXAndY(ptwXYPoints *ptwXY, double **xs, double **ys)
Float_t y2[n_points_geant4]
nfu_status ptwXY_coalescePoints(ptwXYPoints *ptwXY, int64_t size, ptwXYPoint *newPoint, int forceSmallerResize)
nfu_status ptwXY_copy(ptwXYPoints *dest, ptwXYPoints *src)
nfu_status ptwXY_applyFunction(ptwXYPoints *ptwXY1, ptwXY_applyFunction_callback func, void *argList, int checkForRoots)
nfu_status ptwXY_clip(ptwXYPoints *ptwXY1, double yMin, double yMax)
nfu_status ptwXY_mergeFromXYs(ptwXYPoints *ptwXY, int length, double *xys)
double ptwXY_integrateDomain(ptwXYPoints *ptwXY, nfu_status *status)
static constexpr double m
ptwXYPoints * ptwXY_div_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int safeDivide)
nfu_status ptwXY_trim(ptwXYPoints *ptwXY)
nfu_status ptwXY_add_double(ptwXYPoints *ptwXY, double value)
ptwXYPoints * ptwXY_fromString(char const *str, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, char **endCharacter, nfu_status *status)
ptwXYPoints * ptwXY_xMaxSlice(ptwXYPoints *ptwXY, double xMax, int64_t secondarySize, int fill, nfu_status *status)
double ptwXY_integrateWithFunction(ptwXYPoints *ptwXY, ptwXY_createFromFunction_callback func, void *argList, double xMin, double xMax, int degree, int recursionLimit, double tolerance, nfu_status *status)
ptwXYPoints * ptwXY_union(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int unionOptions)
ptwXYPoints * ptwXY_fromUnitbase(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
const XML_Char int const XML_Char * value
ptwXYPoints * ptwXY_valueTo_ptwXY(double x1, double x2, double y, nfu_status *status)
struct ptwXYPoint_s ptwXYPoint
nfu_status ptwXY_mul_double(ptwXYPoints *ptwXY, double value)
nfu_status ptwXY_setValueAtX_overrideIfClose(ptwXYPoints *ptwXY, double x, double y, double eps, int override)
nfu_status ptwXY_pow(ptwXYPoints *ptwXY, double p)
double ptwXY_getBiSectionMax(ptwXYPoints *ptwXY)
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX_closeIsEqual(ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint, double eps, int *closeIsEqual, ptwXYPoint **closePoint)
ptwXPoints * ptwXY_getXArray(ptwXYPoints *ptwXY, nfu_status *status)
ptwXY_interpolationOtherInfo interpolationOtherInfo
nfu_status ptwXY_reallocatePoints(ptwXYPoints *ptwXY, int64_t size, int forceSmallerResize)
enum nfu_status_e nfu_status
nfu_status ptwXY_areDomainsMutual(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
nfu_status ptwXY_getValueAtX(ptwXYPoints *ptwXY, double x, double *y)
char const * interpolationString
nfu_status ptwXY_mergeClosePoints(ptwXYPoints *ptwXY, double epsilon)
nfu_status ptwXY_exp(ptwXYPoints *ptwXY, double a)
ptwXYPoints * ptwXY_intersectionWith_ptwX(ptwXYPoints *ptwXY, ptwXPoints *ptwX, nfu_status *status)
ptwXYPoints * ptwXY_slice(ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t secondarySize, nfu_status *status)
double ptwXY_getXMinAndFrom(ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom)
ptwXY_interpolation interpolation
ptwXYPoints * ptwXY_cloneToInterpolation(ptwXYPoints *ptwXY, ptwXY_interpolation interpolationTo, nfu_status *status)
nfu_status ptwXY_mod(ptwXYPoints *ptwXY, double m, int pythonMod)
nfu_status ptwXY_mergeFromXsAndYs(ptwXYPoints *ptwXY, int length, double *xs, double *ys)
double epsilon(double density, double temperature)
ptwXYPoint * ptwXY_getPointAtIndex(ptwXYPoints *ptwXY, int64_t index)
void ptwXY_simplePrint(ptwXYPoints *ptwXY, char *format)
nfu_status(* ptwXY_applyFunction_callback)(ptwXYPoint *point, void *argList)
void ptwXY_update_biSectionMax(ptwXYPoints *ptwXY1, double oldLength)
nfu_status ptwXY_setXYPairAtIndex(ptwXYPoints *ptwXY, int64_t index, double x, double y)
nfu_status(* ptwXY_getValue_callback)(void *argList, double x, double *y, double x1, double y1, double x2, double y2)
nfu_status ptwXY_div_doubleFrom(ptwXYPoints *ptwXY, double value)
ptwXYPoint * ptwXY_getPointAtIndex_Unsafely(ptwXYPoints *ptwXY, int64_t index)
double ptwXY_getYMin(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_createFromFunction2(ptwXPoints *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax, nfu_status *status)
nfu_status ptwXY_appendXY(ptwXYPoints *ptwXY, double x, double y)
nfu_status ptwXY_getXYPairAtIndex(ptwXYPoints *ptwXY, int64_t index, double *x, double *y)
ptwXYPoints * ptwXY_thin(ptwXYPoints *ptwXY1, double accuracy, nfu_status *status)
ptwXYPoints * ptwXY_toOtherInterpolation(ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, double accuracy, nfu_status *status)
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
double ptwXY_getYMax(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_create(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy, nfu_status *status, int userFlag)
nfu_status ptwXY_reallocateOverflowPoints(ptwXYPoints *ptwXY, int64_t size)
ptwXPoints * ptwXY_groupOneFunction(ptwXYPoints *ptwXY, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status)
nfu_status ptwXY_simpleCoalescePoints(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_unitbaseInterpolate(double w, double w1, ptwXYPoints *ptwXY1, double w2, ptwXYPoints *ptwXY2, nfu_status *status)
static constexpr double degree
ptwXYPoints * ptwXY_toUnitbase(ptwXYPoints *ptwXY, nfu_status *status)
ptwXYPoints * ptwXY_add_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
double ptwXY_integrateWithWeight_sqrt_x(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
nfu_status ptwXY_setup(ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int userFlag)
ptwXYPoints * ptwXY_binary_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, double v1, double v2, double v1v2, nfu_status *status)
enum ptwXY_lessEqualGreaterX_e ptwXY_lessEqualGreaterX
ptwXYPoints * ptwXY_xMinSlice(ptwXYPoints *ptwXY, double xMin, int64_t secondarySize, int fill, nfu_status *status)
nfu_status ptwXY_normalize(ptwXYPoints *ptwXY1)
static const G4double eps
struct ptwXYOverflowPoint_s * prior
void ptwXY_setUserFlag(ptwXYPoints *ptwXY, int userFlag)
ptwXY_getValue_callback getValueFunc
nfu_status ptwXY_thicken(ptwXYPoints *ptwXY1, int sectionSubdivideMax, double dxMax, double fxMax)
int64_t overflowAllocatedSize
ptwXYPoints * ptwXY_createGaussian(double accuracy, double xCenter, double sigma, double amplitude, double xMin, double xMax, double dullEps, nfu_status *status)
struct ptwXYPoints_s ptwXYPoints
Float_t x2[n_points_geant4]
nfu_status ptwXY_interpolatePoint(ptwXY_interpolation interpolation, double x, double *y, double x1, double y1, double x2, double y2)
nfu_status ptwXY_deletePoints(ptwXYPoints *ptwXY, int64_t i1, int64_t i2)
double ptwXY_getXMin(ptwXYPoints *ptwXY)
nfu_status ptwXY_tweakDomainsToMutualify(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int epsilonFactor, double epsilon)
nfu_status ptwXY_sub_doubleFrom(ptwXYPoints *ptwXY, double value)
nfu_status ptwXY_setValueAtX(ptwXYPoints *ptwXY, double x, double y)
nfu_status ptwXY_abs(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_convolution(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int mode)
nfu_status ptwXY_scaleOffsetXAndY(ptwXYPoints *ptwXY, double xScale, double xOffset, double yScale, double yOffset)
ptwXY_interpolation ptwXY_getInterpolation(ptwXYPoints *ptwXY)
nfu_status ptwXY_getStatus(ptwXYPoints *ptwXY)
double ptwXY_integrateDomainWithWeight_sqrt_x(ptwXYPoints *ptwXY, nfu_status *status)
double ptwXY_setAccuracy(ptwXYPoints *ptwXY, double accuracy)
ptwXYPoints * ptwXY_mul_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
nfu_status ptwXY_div_fromDouble(ptwXYPoints *ptwXY, double value)
ptwXYOverflowPoint overflowHeader