All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SpaceChargeStandard.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 // \file SpaceChargeStandard.h
3 //
4 // \brief header of class for storing/accessing space charge distortions
5 //
6 // \author mrmooney@bnl.gov
7 //
8 ////////////////////////////////////////////////////////////////////////
9 #ifndef SPACECHARGE_SPACECHARGESTANDARD_H
10 #define SPACECHARGE_SPACECHARGESTANDARD_H
11 
12 // LArSoft libraries
15 
16 // FHiCL libraries
17 namespace fhicl { class ParameterSet; }
18 
19 // ROOT includes
20 #include "TF1.h"
21 class TGraph;
22 
23 // C/C++ standard libraries
24 #include <stdint.h>
25 #include <string>
26 #include <vector>
27 
28 namespace spacecharge {
29 
31 
32  public:
33 
34  explicit SpaceChargeStandard(fhicl::ParameterSet const& pset);
36  virtual ~SpaceChargeStandard() = default;
37 
38  bool Configure(fhicl::ParameterSet const& pset);
39  bool Update(uint64_t ts=0);
40 
41  bool EnableSimSpatialSCE() const override;
42  bool EnableSimEfieldSCE() const override;
43  bool EnableCorrSCE() const override;
44  bool EnableCalSpatialSCE() const override;
45  bool EnableCalEfieldSCE() const override;
46 
47  geo::Vector_t GetPosOffsets(geo::Point_t const& point) const override;
48  geo::Vector_t GetEfieldOffsets(geo::Point_t const& point) const override;
49  geo::Vector_t GetCalPosOffsets(geo::Point_t const& point, int const& TPCid) const override;
50  geo::Vector_t GetCalEfieldOffsets(geo::Point_t const& point, int const& TPCid) const override;
51 
52  private:
53  protected:
54 
55  std::vector<double> GetPosOffsetsParametric(double xVal, double yVal, double zVal) const;
56  double GetOnePosOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const;
57  std::vector<double> GetEfieldOffsetsParametric(double xVal, double yVal, double zVal) const;
58  double GetOneEfieldOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const;
59  double TransformX(double xVal) const;
60  double TransformY(double yVal) const;
61  double TransformZ(double zVal) const;
62  bool IsInsideBoundaries(double xVal, double yVal, double zVal) const;
63 
69 
70  std::string fRepresentationType;
71  std::string fInputFilename;
72 
73  TGraph **g1_x = new TGraph*[7];
74  TGraph **g2_x = new TGraph*[7];
75  TGraph **g3_x = new TGraph*[7];
76  TGraph **g4_x = new TGraph*[7];
77  TGraph **g5_x = new TGraph*[7];
78 
79  TGraph **g1_y = new TGraph*[7];
80  TGraph **g2_y = new TGraph*[7];
81  TGraph **g3_y = new TGraph*[7];
82  TGraph **g4_y = new TGraph*[7];
83  TGraph **g5_y = new TGraph*[7];
84  TGraph **g6_y = new TGraph*[7];
85 
86  TGraph **g1_z = new TGraph*[7];
87  TGraph **g2_z = new TGraph*[7];
88  TGraph **g3_z = new TGraph*[7];
89  TGraph **g4_z = new TGraph*[7];
90 
91  TF1 *f1_x = new TF1("f1_x","pol6");
92  TF1 *f2_x = new TF1("f2_x","pol6");
93  TF1 *f3_x = new TF1("f3_x","pol6");
94  TF1 *f4_x = new TF1("f4_x","pol6");
95  TF1 *f5_x = new TF1("f5_x","pol6");
96  TF1 *fFinal_x = new TF1("fFinal_x","pol4");
97 
98  TF1 *f1_y = new TF1("f1_y","pol5");
99  TF1 *f2_y = new TF1("f2_y","pol5");
100  TF1 *f3_y = new TF1("f3_y","pol5");
101  TF1 *f4_y = new TF1("f4_y","pol5");
102  TF1 *f5_y = new TF1("f5_y","pol5");
103  TF1 *f6_y = new TF1("f6_y","pol5");
104  TF1 *fFinal_y = new TF1("fFinal_y","pol5");
105 
106  TF1 *f1_z = new TF1("f1_z","pol4");
107  TF1 *f2_z = new TF1("f2_z","pol4");
108  TF1 *f3_z = new TF1("f3_z","pol4");
109  TF1 *f4_z = new TF1("f4_z","pol4");
110  TF1 *fFinal_z = new TF1("fFinal_z","pol3");
111 
112  TGraph **g1_Ex = new TGraph*[7];
113  TGraph **g2_Ex = new TGraph*[7];
114  TGraph **g3_Ex = new TGraph*[7];
115  TGraph **g4_Ex = new TGraph*[7];
116  TGraph **g5_Ex = new TGraph*[7];
117 
118  TGraph **g1_Ey = new TGraph*[7];
119  TGraph **g2_Ey = new TGraph*[7];
120  TGraph **g3_Ey = new TGraph*[7];
121  TGraph **g4_Ey = new TGraph*[7];
122  TGraph **g5_Ey = new TGraph*[7];
123  TGraph **g6_Ey = new TGraph*[7];
124 
125  TGraph **g1_Ez = new TGraph*[7];
126  TGraph **g2_Ez = new TGraph*[7];
127  TGraph **g3_Ez = new TGraph*[7];
128  TGraph **g4_Ez = new TGraph*[7];
129 
130  TF1 *f1_Ex = new TF1("f1_Ex","pol6");
131  TF1 *f2_Ex = new TF1("f2_Ex","pol6");
132  TF1 *f3_Ex = new TF1("f3_Ex","pol6");
133  TF1 *f4_Ex = new TF1("f4_Ex","pol6");
134  TF1 *f5_Ex = new TF1("f5_Ex","pol6");
135  TF1 *fFinal_Ex = new TF1("fFinal_Ex","pol4");
136 
137  TF1 *f1_Ey = new TF1("f1_Ey","pol5");
138  TF1 *f2_Ey = new TF1("f2_Ey","pol5");
139  TF1 *f3_Ey = new TF1("f3_Ey","pol5");
140  TF1 *f4_Ey = new TF1("f4_Ey","pol5");
141  TF1 *f5_Ey = new TF1("f5_Ey","pol5");
142  TF1 *f6_Ey = new TF1("f6_Ey","pol5");
143  TF1 *fFinal_Ey = new TF1("fFinal_Ey","pol5");
144 
145  TF1 *f1_Ez = new TF1("f1_Ez","pol4");
146  TF1 *f2_Ez = new TF1("f2_Ez","pol4");
147  TF1 *f3_Ez = new TF1("f3_Ez","pol4");
148  TF1 *f4_Ez = new TF1("f4_Ez","pol4");
149  TF1 *fFinal_Ez = new TF1("fFinal_Ez","pol3");
150 
151  }; // class SpaceChargeStandard
152 } //namespace spacecharge
153 #endif // SPACECHARGE_SPACECHARGESTANDARD_H
bool IsInsideBoundaries(double xVal, double yVal, double zVal) const
Check to see if point is inside boundaries of map - redefine this in experiment-specific implementati...
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
std::vector< double > GetEfieldOffsetsParametric(double xVal, double yVal, double zVal) const
Provides E field offsets using a parametric representation.
double GetOnePosOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
std::vector< double > GetPosOffsetsParametric(double xVal, double yVal, double zVal) const
Provides position offsets using a parametric representation.
bool EnableCalEfieldSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
double TransformY(double yVal) const
Transform Y to SCE Y coordinate - redefine this in experiment-specific implementation! ...
SpaceChargeStandard(fhicl::ParameterSet const &pset)
double TransformX(double xVal) const
Transform X to SCE X coordinate - redefine this in experiment-specific implementation! ...
Definitions of geometry vector data types.
double TransformZ(double zVal) const
Transform Z to SCE Z coordinate - redefine this in experiment-specific implementation! ...
virtual ~SpaceChargeStandard()=default
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
bool EnableCorrSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
bool EnableCalSpatialSCE() 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
geo::Vector_t GetEfieldOffsets(geo::Point_t const &point) const override
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 Configure(fhicl::ParameterSet const &pset)
double GetOneEfieldOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const