File indexing completed on 2025-08-05 08:16:59
0001 #ifndef TRACKBASE_CLUSTERERRORPARA_H
0002 #define TRACKBASE_CLUSTERERRORPARA_H
0003
0004 #include "TrkrDefs.h"
0005
0006 #include <TF1.h>
0007
0008 class TrkrCluster;
0009
0010 class ClusterErrorPara
0011 {
0012 public:
0013 ClusterErrorPara();
0014
0015 explicit ClusterErrorPara(const ClusterErrorPara &) = delete;
0016 ClusterErrorPara &operator=(const ClusterErrorPara &) = delete;
0017
0018 virtual ~ClusterErrorPara()
0019 {
0020 delete f0;
0021 delete f1;
0022 delete f2;
0023 delete f0fine;
0024 delete f1fine;
0025 delete f2fine;
0026 delete f2fine2;
0027 delete fz0;
0028 delete fz1;
0029 delete fz2;
0030 delete fz0fine;
0031 delete fz1fine;
0032 delete fz2fine;
0033 delete fmm_55_2;
0034 delete fmm_56_2;
0035 delete fmm_3;
0036 delete fadcphi0;
0037 delete fadcphi0fine;
0038 delete fadcphi1;
0039 delete fadcphi1fine;
0040 delete fadcphi2;
0041 delete fadcphi2fine1;
0042 delete fadcphi2fine2;
0043 delete fadcz0;
0044 delete fadcz1;
0045 delete fadcz2;
0046 delete fadcz0fine;
0047 delete fadcz1fine;
0048 delete fadcz2fine;
0049 };
0050
0051 using error_t = std::pair<double, double>;
0052
0053 static error_t get_clusterv5_modified_error(TrkrCluster *cluster, double cluster_r, TrkrDefs::cluskey key);
0054 error_t get_cluster_error(TrkrCluster *cluster, double cluster_r, TrkrDefs::cluskey key, float qOverR, float slope);
0055 error_t get_cluster_error(TrkrCluster *cluster, TrkrDefs::cluskey key, double alpha, double beta);
0056
0057 error_t get_simple_cluster_error(TrkrCluster *cluster, double cluster_r, TrkrDefs::cluskey key);
0058 error_t get_fix_tpc_cluster_error(TrkrCluster *cluster, TrkrDefs::cluskey key);
0059 error_t get_si_cluster_error(const TrkrCluster *cluster, TrkrDefs::cluskey key);
0060 double mm_phi_error(int layer, double alpha, TrkrCluster *cluster);
0061 double mm_z_error(int layer, double beta, TrkrCluster *cluster);
0062 double mvtx_phi_error(TrkrCluster *cluster) const;
0063 double mvtx_phi_error(const TrkrCluster *cluster) const;
0064 double mvtx_z_error(TrkrCluster *cluster) const;
0065 double mvtx_z_error(const TrkrCluster *cluster) const;
0066 double intt_phi_error(int layer, TrkrCluster *cluster) const;
0067 double intt_z_error(TrkrCluster *cluster) const;
0068 double intt_phi_error(int layer, const TrkrCluster *cluster) const;
0069 double intt_z_error(const TrkrCluster *cluster) const;
0070 double tpc_phi_error(int layer, double alpha, TrkrCluster *cluster);
0071 double tpc_z_error(int layer, double beta, TrkrCluster *cluster);
0072
0073 private:
0074 TF1 *f0 {nullptr};
0075 TF1 *f1 {nullptr};
0076 TF1 *f2 {nullptr};
0077 TF1 *f0fine {nullptr};
0078 TF1 *f1fine {nullptr};
0079 TF1 *f2fine {nullptr};
0080 TF1 *f2fine2 {nullptr};
0081 TF1 *fz0 {nullptr};
0082 TF1 *fz1 {nullptr};
0083 TF1 *fz2 {nullptr};
0084 TF1 *fz0fine {nullptr};
0085 TF1 *fz1fine {nullptr};
0086 TF1 *fz2fine {nullptr};
0087 TF1 *fmm_55_2 {nullptr};
0088 TF1 *fmm_56_2 {nullptr};
0089 TF1 *fmm_3 {nullptr};
0090 TF1 *fadcz0 {nullptr};
0091 TF1 *fadcz1 {nullptr};
0092 TF1 *fadcz2 {nullptr};
0093 TF1 *fadcz0fine {nullptr};
0094 TF1 *fadcz1fine {nullptr};
0095 TF1 *fadcz2fine {nullptr};
0096 TF1 *fadcphi0 {nullptr};
0097 TF1 *fadcphi0fine {nullptr};
0098 TF1 *fadcphi1 {nullptr};
0099 TF1 *fadcphi1fine {nullptr};
0100 TF1 *fadcphi2 {nullptr};
0101 TF1 *fadcphi2fine1 {nullptr};
0102 TF1 *fadcphi2fine2 {nullptr};
0103 double pitcherr_phi_mvtx;
0104 double pitcherr_z_mvtx;
0105
0106 double pitcherr_phi_intt;
0107 double pitcherr_z_intt;
0108
0109 double pitcherr_phi_mm1;
0110 double pitcherr_z_mm1;
0111
0112 double pitcherr_phi_mm2;
0113 double pitcherr_z_mm2;
0114 double scale_mvtx {1.2};
0115 double scale_mvtx_z {0.9};
0116 double scale_intt_3 {0.97};
0117 double scale_intt_4 {0.964};
0118 double scale_intt_5 {0.894};
0119 double scale_intt_6 {0.893};
0120
0121
0122
0123
0124
0125
0126
0127 double scale_mm_0 {1.1};
0128 double scale_mm_1 {1.5};
0129 double pull_fine_phi[60]{};
0130 double pull_fine_z[60]{};
0131 };
0132
0133 #endif