9 #ifndef SPACECHARGE_SPACECHARGEPROTODUNE_H 10 #define SPACECHARGE_SPACECHARGEPROTODUNE_H 37 bool Update(uint64_t ts=0);
80 TSpline3*
MakeSpline(TH3F* spline_hist,
int dim1,
int dim2_bin,
int dim3_bin,
int maptype,
int driftvol)
const;
81 double InterpolateSplines(TH3F* interp_hist,
double xVal,
double yVal,
double zVal,
int dim,
int maptype,
int driftvol)
const;
95 TGraph **
g1_x =
new TGraph*[7];
96 TGraph **
g2_x =
new TGraph*[7];
97 TGraph **
g3_x =
new TGraph*[7];
98 TGraph **
g4_x =
new TGraph*[7];
99 TGraph **
g5_x =
new TGraph*[7];
101 TGraph **
g1_y =
new TGraph*[7];
102 TGraph **
g2_y =
new TGraph*[7];
103 TGraph **
g3_y =
new TGraph*[7];
104 TGraph **
g4_y =
new TGraph*[7];
105 TGraph **
g5_y =
new TGraph*[7];
106 TGraph **
g6_y =
new TGraph*[7];
108 TGraph **
g1_z =
new TGraph*[7];
109 TGraph **
g2_z =
new TGraph*[7];
110 TGraph **
g3_z =
new TGraph*[7];
111 TGraph **
g4_z =
new TGraph*[7];
113 TF1 *
f1_x =
new TF1(
"f1_x",
"pol6");
114 TF1 *
f2_x =
new TF1(
"f2_x",
"pol6");
115 TF1 *
f3_x =
new TF1(
"f3_x",
"pol6");
116 TF1 *
f4_x =
new TF1(
"f4_x",
"pol6");
117 TF1 *
f5_x =
new TF1(
"f5_x",
"pol6");
120 TF1 *
f1_y =
new TF1(
"f1_y",
"pol5");
121 TF1 *
f2_y =
new TF1(
"f2_y",
"pol5");
122 TF1 *
f3_y =
new TF1(
"f3_y",
"pol5");
123 TF1 *
f4_y =
new TF1(
"f4_y",
"pol5");
124 TF1 *
f5_y =
new TF1(
"f5_y",
"pol5");
125 TF1 *
f6_y =
new TF1(
"f6_y",
"pol5");
128 TF1 *
f1_z =
new TF1(
"f1_z",
"pol4");
129 TF1 *
f2_z =
new TF1(
"f2_z",
"pol4");
130 TF1 *
f3_z =
new TF1(
"f3_z",
"pol4");
131 TF1 *
f4_z =
new TF1(
"f4_z",
"pol4");
151 TF1 *
f1_Ex =
new TF1(
"f1_Ex",
"pol6");
152 TF1 *
f2_Ex =
new TF1(
"f2_Ex",
"pol6");
153 TF1 *
f3_Ex =
new TF1(
"f3_Ex",
"pol6");
154 TF1 *
f4_Ex =
new TF1(
"f4_Ex",
"pol6");
155 TF1 *
f5_Ex =
new TF1(
"f5_Ex",
"pol6");
158 TF1 *
f1_Ey =
new TF1(
"f1_Ey",
"pol5");
159 TF1 *
f2_Ey =
new TF1(
"f2_Ey",
"pol5");
160 TF1 *
f3_Ey =
new TF1(
"f3_Ey",
"pol5");
161 TF1 *
f4_Ey =
new TF1(
"f4_Ey",
"pol5");
162 TF1 *
f5_Ey =
new TF1(
"f5_Ey",
"pol5");
163 TF1 *
f6_Ey =
new TF1(
"f6_Ey",
"pol5");
166 TF1 *
f1_Ez =
new TF1(
"f1_Ez",
"pol4");
167 TF1 *
f2_Ez =
new TF1(
"f2_Ez",
"pol4");
168 TF1 *
f3_Ez =
new TF1(
"f3_Ez",
"pol4");
169 TF1 *
f4_Ez =
new TF1(
"f4_Ez",
"pol4");
222 #endif // SPACECHARGE_SPACECHARGEPROTODUNE_H
std::vector< std::vector< TSpline3 * > > spline_dy_bkwd_pos
std::vector< std::vector< TSpline3 * > > spline_dEz_neg
geo::Vector_t GetCalEfieldOffsets(geo::Point_t const &point, int const &TPCid) const override
std::vector< std::vector< TSpline3 * > > spline_dz_fwd_neg
std::vector< double > fEDZCenter
std::vector< std::vector< TSpline3 * > > spline_dEx_neg
double GetOnePosOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
bool fEnableCalSpatialSCE
std::vector< std::vector< TSpline3 * > > spline_dy_fwd_neg
std::vector< std::vector< TSpline3 * > > spline_dx_bkwd_neg
std::vector< std::vector< TSpline3 * > > spline_dy_bkwd_neg
std::vector< double > fEDs
double TransformY(double yVal) const
Transform Y to SCE Y coordinate: [0.0,6.08] –> [0.0,6.0].
double InterpolateSplines(TH3F *interp_hist, double xVal, double yVal, double zVal, int dim, int maptype, int driftvol) const
Interpolate given SCE map using splines.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space.
std::vector< std::vector< TSpline3 * > > spline_dEy_neg
bool EnableCorrSCE() const override
std::vector< double > GetOffsetsVoxel(geo::Point_t const &point, TH3F *hX, TH3F *hY, TH3F *hZ, int maptype, int driftvol) const
Provides position offsets using voxelized interpolation.
TSpline3 * MakeSpline(TH3F *spline_hist, int dim1, int dim2_bin, int dim3_bin, int maptype, int driftvol) const
Create one spline for later use in SCE map interpolation.
std::string fRepresentationType
geo::Vector_t GetPosOffsets(geo::Point_t const &point) const override
geo::Vector_t ElectronDiverterPosOffsets(geo::Point_t const &point) const
bool fEnableSimSpatialSCE
std::vector< std::vector< TSpline3 * > > spline_dEx_pos
geo::Vector_t GetEfieldOffsets(geo::Point_t const &point) const override
std::vector< TH3F * > SCEhistograms
bool EnableCalEfieldSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
std::vector< std::vector< TSpline3 * > > spline_dx_bkwd_pos
geo::Vector_t GetCalPosOffsets(geo::Point_t const &point, int const &TPCid) const override
std::string fCalInputFilename
std::vector< std::vector< TSpline3 * > > spline_dz_bkwd_pos
std::string fInputFilename
std::vector< std::vector< TSpline3 * > > spline_dz_fwd_pos
bool Configure(fhicl::ParameterSet const &pset, detinfo::DetectorPropertiesData const &)
bool Update(uint64_t ts=0)
std::vector< std::vector< TSpline3 * > > spline_dEz_pos
bool EnableSimSpatialSCE() const override
bool IsTooFarFromBoundaries(geo::Point_t const &point) const
bool EnableCalSpatialSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
std::vector< bool > fEnableElectronDiverterDistortions
std::vector< std::vector< TSpline3 * > > spline_dx_fwd_pos
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
std::vector< std::vector< TSpline3 * > > spline_dy_fwd_pos
virtual ~SpaceChargeProtoDUNE()=default
std::vector< double > fEDBZPosOffs
bool IsInsideBoundaries(geo::Point_t const &point) const
Check to see if point is inside boundaries of map (allow to go slightly out of range) ...
double GetOneEfieldOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
std::vector< std::vector< TSpline3 * > > spline_dx_fwd_neg
std::vector< double > fEDChargeLossZLow
SpaceChargeProtoDUNE(fhicl::ParameterSet const &pset)
std::vector< TH3F * > CalSCEhistograms
double TransformX(double xVal) const
Transform X to SCE X coordinate: [0.0,3.6] –> [0.0,3.6].
Definitions of geometry vector data types.
geo::Point_t PretendAtBoundary(geo::Point_t const &point) const
bool EnableSimEfieldSCE() const override
std::vector< std::vector< TSpline3 * > > spline_dz_bkwd_neg
std::vector< std::vector< TSpline3 * > > spline_dEy_pos
double TransformZ(double zVal) const
Transform Z to SCE Z coordinate: [0.0,6.97] –> [0.0,7.2].
std::vector< double > GetEfieldOffsetsParametric(double xVal, double yVal, double zVal) const
Provides E field offsets using a parametric representation.
std::vector< TH3F * > Build_TH3(TTree *tree_pos, TTree *eTree_pos, TTree *tree_neg, TTree *eTree_neg, std::string xvar, std::string yvar, std::string zvar, std::string posLeaf) const
Build 3d histograms for voxelized interpolation.
std::vector< double > GetPosOffsetsParametric(double xVal, double yVal, double zVal) const
Provides position offsets using a parametric representation.
std::vector< double > fEDAXPosOffs
std::vector< double > fEDChargeLossZHigh