SpaceCharge3x1x1dphase.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 // \file SpaceCharge3x1x1dphase.h
3 //
4 // \brief header of class for storing/accessing space charge distortions for the 3x1x1 detector.
5 // \Adapted from SpaceChargeProtoDUNE.h
6 //
7 // \author kevin.fusshoeller@cern.ch
8 //
9 ////////////////////////////////////////////////////////////////////////
10 #ifndef SPACECHARGE_SPACECHARGE3X1X1DPHASE_H
11 #define SPACECHARGE_SPACECHARGE3X1X1DPHASE_H
12 
13 // LArSoft libraries
15 
16 // FHiCL libraries
17 #include "fhiclcpp/ParameterSet.h"
18 
19 // ROOT includes
20 #include "TGraph.h"
21 #include "TF1.h"
22 #include "TFile.h"
23 
24 // C/C++ standard libraries
25 #include <string>
26 #include <vector>
27 
28 
29 namespace spacecharge {
30 
32 
33  public:
34 
35  explicit SpaceCharge3x1x1dphase(fhicl::ParameterSet const& pset);
37  virtual ~SpaceCharge3x1x1dphase() = default;
38 
39  bool Configure(fhicl::ParameterSet const& pset);
40  bool Update(uint64_t ts=0);
41 
42  bool EnableSimSpatialSCE() const override;
43  bool EnableSimEfieldSCE() const override;
44  bool EnableCalSpatialSCE() const override;
45  bool EnableCalEfieldSCE() const override;
46 
47  bool EnableCorrSCE() const override {return (EnableCalSpatialSCE()||EnableCalEfieldSCE()) ;}
48 
49  geo::Vector_t GetPosOffsets(geo::Point_t const& point) const override;
50  geo::Vector_t GetEfieldOffsets(geo::Point_t const& point) const override;
51  geo::Vector_t GetCalPosOffsets(geo::Point_t const& point, int const& TPCid) const override;
52  geo::Vector_t GetCalEfieldOffsets(geo::Point_t const& point, int const& TPCid) const override;
53 
54  private:
55  protected:
56 
57  std::vector<double> GetPosOffsetsParametric(double xVal, double yVal, double zVal) const;
58  double GetOnePosOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const;
59  std::vector<double> GetEfieldOffsetsParametric(double xVal, double yVal, double zVal) const;
60  double GetOneEfieldOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const;
61  double TransformX(double xVal) const;
62  double TransformY(double yVal) const;
63  double TransformZ(double zVal) const;
64  bool IsInsideBoundaries(double xVal, double yVal, double zVal) const;
65 
71 
74 
75  TGraph **g1_x = new TGraph*[7];
76  TGraph **g2_x = new TGraph*[7];
77  TGraph **g3_x = new TGraph*[7];
78  TGraph **g4_x = new TGraph*[7];
79  TGraph **g5_x = new TGraph*[7];
80 
81  TGraph **g1_y = new TGraph*[7];
82  TGraph **g2_y = new TGraph*[7];
83  TGraph **g3_y = new TGraph*[7];
84  TGraph **g4_y = new TGraph*[7];
85  TGraph **g5_y = new TGraph*[7];
86  TGraph **g6_y = new TGraph*[7];
87 
88  TGraph **g1_z = new TGraph*[7];
89  TGraph **g2_z = new TGraph*[7];
90  TGraph **g3_z = new TGraph*[7];
91  TGraph **g4_z = new TGraph*[7];
92 
93  TF1 *f1_x = new TF1("f1_x","pol6");
94  TF1 *f2_x = new TF1("f2_x","pol6");
95  TF1 *f3_x = new TF1("f3_x","pol6");
96  TF1 *f4_x = new TF1("f4_x","pol6");
97  TF1 *f5_x = new TF1("f5_x","pol6");
98  TF1 *fFinal_x = new TF1("fFinal_x","pol4");
99 
100  TF1 *f1_y = new TF1("f1_y","pol5");
101  TF1 *f2_y = new TF1("f2_y","pol5");
102  TF1 *f3_y = new TF1("f3_y","pol5");
103  TF1 *f4_y = new TF1("f4_y","pol5");
104  TF1 *f5_y = new TF1("f5_y","pol5");
105  TF1 *f6_y = new TF1("f6_y","pol5");
106  TF1 *fFinal_y = new TF1("fFinal_y","pol5");
107 
108  TF1 *f1_z = new TF1("f1_z","pol4");
109  TF1 *f2_z = new TF1("f2_z","pol4");
110  TF1 *f3_z = new TF1("f3_z","pol4");
111  TF1 *f4_z = new TF1("f4_z","pol4");
112  TF1 *fFinal_z = new TF1("fFinal_z","pol3");
113 
114  TGraph **g1_Ex = new TGraph*[7];
115  TGraph **g2_Ex = new TGraph*[7];
116  TGraph **g3_Ex = new TGraph*[7];
117  TGraph **g4_Ex = new TGraph*[7];
118  TGraph **g5_Ex = new TGraph*[7];
119 
120  TGraph **g1_Ey = new TGraph*[7];
121  TGraph **g2_Ey = new TGraph*[7];
122  TGraph **g3_Ey = new TGraph*[7];
123  TGraph **g4_Ey = new TGraph*[7];
124  TGraph **g5_Ey = new TGraph*[7];
125  TGraph **g6_Ey = new TGraph*[7];
126 
127  TGraph **g1_Ez = new TGraph*[7];
128  TGraph **g2_Ez = new TGraph*[7];
129  TGraph **g3_Ez = new TGraph*[7];
130  TGraph **g4_Ez = new TGraph*[7];
131 
132  TF1 *f1_Ex = new TF1("f1_Ex","pol6");
133  TF1 *f2_Ex = new TF1("f2_Ex","pol6");
134  TF1 *f3_Ex = new TF1("f3_Ex","pol6");
135  TF1 *f4_Ex = new TF1("f4_Ex","pol6");
136  TF1 *f5_Ex = new TF1("f5_Ex","pol6");
137  TF1 *fFinal_Ex = new TF1("fFinal_Ex","pol4");
138 
139  TF1 *f1_Ey = new TF1("f1_Ey","pol5");
140  TF1 *f2_Ey = new TF1("f2_Ey","pol5");
141  TF1 *f3_Ey = new TF1("f3_Ey","pol5");
142  TF1 *f4_Ey = new TF1("f4_Ey","pol5");
143  TF1 *f5_Ey = new TF1("f5_Ey","pol5");
144  TF1 *f6_Ey = new TF1("f6_Ey","pol5");
145  TF1 *fFinal_Ey = new TF1("fFinal_Ey","pol5");
146 
147  TF1 *f1_Ez = new TF1("f1_Ez","pol4");
148  TF1 *f2_Ez = new TF1("f2_Ez","pol4");
149  TF1 *f3_Ez = new TF1("f3_Ez","pol4");
150  TF1 *f4_Ez = new TF1("f4_Ez","pol4");
151  TF1 *fFinal_Ez = new TF1("fFinal_Ez","pol3");
152 
153  }; // class SpaceCharge3x1x1dphase
154 } //namespace spacecharge
155 #endif // SPACECHARGE_SPACECHARGE3X1X1DPHASE_H
SpaceCharge3x1x1dphase(fhicl::ParameterSet const &pset)
geo::Vector_t GetPosOffsets(geo::Point_t const &point) const override
geo::Vector_t GetCalPosOffsets(geo::Point_t const &point, int const &TPCid) const override
std::string string
Definition: nybbler.cc:12
bool IsInsideBoundaries(double xVal, double yVal, double zVal) const
Check to see if point is inside boundaries of map (allow to go slightly out of range) ...
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space.
Definition: geo_vectors.h:164
double TransformZ(double zVal) const
Transform Z to SCE Z coordinate: [0.0,6.97] –> [0.0,7.2].
double GetOneEfieldOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
double TransformY(double yVal) const
Transform Y to SCE Y coordinate: [0.0,6.08] –> [0.0,6.0].
std::vector< double > GetPosOffsetsParametric(double xVal, double yVal, double zVal) const
Provides position offsets using a parametric representation.
double GetOnePosOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
geo::Vector_t GetEfieldOffsets(geo::Point_t const &point) const override
bool Configure(fhicl::ParameterSet const &pset)
virtual ~SpaceCharge3x1x1dphase()=default
bool EnableCalSpatialSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Definition: geo_vectors.h:184
bool EnableCalEfieldSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
geo::Vector_t GetCalEfieldOffsets(geo::Point_t const &point, int const &TPCid) const override
double TransformX(double xVal) const
Transform X to SCE X coordinate: [0.0,3.6] –> [0.0,3.6].
std::vector< double > GetEfieldOffsetsParametric(double xVal, double yVal, double zVal) const
Provides E field offsets using a parametric representation.