Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
spacecharge::SpaceChargeDUNE35t Class Reference

#include <SpaceChargeDUNE35t.h>

Inheritance diagram for spacecharge::SpaceChargeDUNE35t:
spacecharge::SpaceCharge

Public Member Functions

 SpaceChargeDUNE35t (fhicl::ParameterSet const &pset)
 
 SpaceChargeDUNE35t (SpaceChargeDUNE35t const &)=delete
 
virtual ~SpaceChargeDUNE35t ()=default
 
bool Configure (fhicl::ParameterSet const &pset)
 
bool Update (uint64_t ts=0)
 
bool EnableSimSpatialSCE () const override
 
bool EnableSimEfieldSCE () const override
 
bool EnableCalSpatialSCE () const override
 Return boolean indicating whether or not to apply SCE corrections. More...
 
bool EnableCalEfieldSCE () const override
 Return boolean indicating whether or not to apply SCE corrections. More...
 
bool EnableCorrSCE () const override
 
geo::Vector_t GetPosOffsets (geo::Point_t const &point) const override
 
geo::Vector_t GetEfieldOffsets (geo::Point_t const &point) const override
 
geo::Vector_t GetCalPosOffsets (geo::Point_t const &point, int const &TPCid) const override
 
geo::Vector_t GetCalEfieldOffsets (geo::Point_t const &point, int const &TPCid) const override
 
- Public Member Functions inherited from spacecharge::SpaceCharge
 SpaceCharge (const SpaceCharge &)=delete
 
 SpaceCharge (SpaceCharge &&)=delete
 
SpaceChargeoperator= (const SpaceCharge &)=delete
 
SpaceChargeoperator= (SpaceCharge &&)=delete
 
virtual ~SpaceCharge ()=default
 

Protected Member Functions

std::vector< double > GetPosOffsetsParametric (double xVal, double yVal, double zVal) const
 Provides position offsets using a parametric representation. More...
 
double GetOnePosOffsetParametric (double xVal, double yVal, double zVal, std::string axis) const
 
std::vector< double > GetEfieldOffsetsParametric (double xVal, double yVal, double zVal) const
 Provides E field offsets using a parametric representation. More...
 
double GetOneEfieldOffsetParametric (double xVal, double yVal, double zVal, std::string axis) const
 
double TransformX (double xVal) const
 Transform X to SCE X coordinate: [2.275,-0.3] –> [0.0,2.25]. More...
 
double TransformY (double yVal) const
 Transform Y to SCE Y coordinate: [0.0,2.0] –> [0.0,2.0]. More...
 
double TransformZ (double zVal) const
 Transform Z to SCE Z coordinate: [0.0,1.6] –> [0.0,1.6]. More...
 
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) More...
 
- Protected Member Functions inherited from spacecharge::SpaceCharge
 SpaceCharge ()=default
 

Protected Attributes

bool fEnableSimSpatialSCE
 
bool fEnableSimEfieldSCE
 
bool fEnableCalSpatialSCE
 
bool fEnableCalEfieldSCE
 
bool fEnableCorrSCE
 
std::string fRepresentationType
 
std::string fInputFilename
 
TGraph ** g1_x = new TGraph*[7]
 
TGraph ** g2_x = new TGraph*[7]
 
TGraph ** g3_x = new TGraph*[7]
 
TGraph ** g4_x = new TGraph*[7]
 
TGraph ** g5_x = new TGraph*[7]
 
TGraph ** g1_y = new TGraph*[7]
 
TGraph ** g2_y = new TGraph*[7]
 
TGraph ** g3_y = new TGraph*[7]
 
TGraph ** g4_y = new TGraph*[7]
 
TGraph ** g5_y = new TGraph*[7]
 
TGraph ** g6_y = new TGraph*[7]
 
TGraph ** g1_z = new TGraph*[7]
 
TGraph ** g2_z = new TGraph*[7]
 
TGraph ** g3_z = new TGraph*[7]
 
TGraph ** g4_z = new TGraph*[7]
 
TF1 * f1_x = new TF1("f1_x","pol6")
 
TF1 * f2_x = new TF1("f2_x","pol6")
 
TF1 * f3_x = new TF1("f3_x","pol6")
 
TF1 * f4_x = new TF1("f4_x","pol6")
 
TF1 * f5_x = new TF1("f5_x","pol6")
 
TF1 * fFinal_x = new TF1("fFinal_x","pol4")
 
TF1 * f1_y = new TF1("f1_y","pol5")
 
TF1 * f2_y = new TF1("f2_y","pol5")
 
TF1 * f3_y = new TF1("f3_y","pol5")
 
TF1 * f4_y = new TF1("f4_y","pol5")
 
TF1 * f5_y = new TF1("f5_y","pol5")
 
TF1 * f6_y = new TF1("f6_y","pol5")
 
TF1 * fFinal_y = new TF1("fFinal_y","pol5")
 
TF1 * f1_z = new TF1("f1_z","pol4")
 
TF1 * f2_z = new TF1("f2_z","pol4")
 
TF1 * f3_z = new TF1("f3_z","pol4")
 
TF1 * f4_z = new TF1("f4_z","pol4")
 
TF1 * fFinal_z = new TF1("fFinal_z","pol3")
 
TGraph ** g1_Ex = new TGraph*[7]
 
TGraph ** g2_Ex = new TGraph*[7]
 
TGraph ** g3_Ex = new TGraph*[7]
 
TGraph ** g4_Ex = new TGraph*[7]
 
TGraph ** g5_Ex = new TGraph*[7]
 
TGraph ** g1_Ey = new TGraph*[7]
 
TGraph ** g2_Ey = new TGraph*[7]
 
TGraph ** g3_Ey = new TGraph*[7]
 
TGraph ** g4_Ey = new TGraph*[7]
 
TGraph ** g5_Ey = new TGraph*[7]
 
TGraph ** g6_Ey = new TGraph*[7]
 
TGraph ** g1_Ez = new TGraph*[7]
 
TGraph ** g2_Ez = new TGraph*[7]
 
TGraph ** g3_Ez = new TGraph*[7]
 
TGraph ** g4_Ez = new TGraph*[7]
 
TF1 * f1_Ex = new TF1("f1_Ex","pol6")
 
TF1 * f2_Ex = new TF1("f2_Ex","pol6")
 
TF1 * f3_Ex = new TF1("f3_Ex","pol6")
 
TF1 * f4_Ex = new TF1("f4_Ex","pol6")
 
TF1 * f5_Ex = new TF1("f5_Ex","pol6")
 
TF1 * fFinal_Ex = new TF1("fFinal_Ex","pol4")
 
TF1 * f1_Ey = new TF1("f1_Ey","pol5")
 
TF1 * f2_Ey = new TF1("f2_Ey","pol5")
 
TF1 * f3_Ey = new TF1("f3_Ey","pol5")
 
TF1 * f4_Ey = new TF1("f4_Ey","pol5")
 
TF1 * f5_Ey = new TF1("f5_Ey","pol5")
 
TF1 * f6_Ey = new TF1("f6_Ey","pol5")
 
TF1 * fFinal_Ey = new TF1("fFinal_Ey","pol5")
 
TF1 * f1_Ez = new TF1("f1_Ez","pol4")
 
TF1 * f2_Ez = new TF1("f2_Ez","pol4")
 
TF1 * f3_Ez = new TF1("f3_Ez","pol4")
 
TF1 * f4_Ez = new TF1("f4_Ez","pol4")
 
TF1 * fFinal_Ez = new TF1("fFinal_Ez","pol3")
 

Detailed Description

Definition at line 30 of file SpaceChargeDUNE35t.h.

Constructor & Destructor Documentation

spacecharge::SpaceChargeDUNE35t::SpaceChargeDUNE35t ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 25 of file SpaceChargeDUNE35t.cxx.

28 {
29  Configure(pset);
30 }
bool Configure(fhicl::ParameterSet const &pset)
spacecharge::SpaceChargeDUNE35t::SpaceChargeDUNE35t ( SpaceChargeDUNE35t const &  )
delete
virtual spacecharge::SpaceChargeDUNE35t::~SpaceChargeDUNE35t ( )
virtualdefault

Member Function Documentation

bool spacecharge::SpaceChargeDUNE35t::Configure ( fhicl::ParameterSet const &  pset)

Definition at line 33 of file SpaceChargeDUNE35t.cxx.

34 {
35  fEnableSimSpatialSCE = pset.get<bool>("EnableSimSpatialSCE");
36  fEnableSimEfieldSCE = pset.get<bool>("EnableSimEfieldSCE");
37  fEnableCalSpatialSCE = pset.get<bool>("EnableCalSpatialSCE");
38  fEnableCalEfieldSCE = pset.get<bool>("EnableCalEfieldSCE");
39  //fEnableCorrSCE = pset.get<bool>("EnableCorrSCE");
40 
41  if((fEnableSimSpatialSCE == true) || (fEnableSimEfieldSCE == true))
42  {
43  fRepresentationType = pset.get<std::string>("RepresentationType");
44  fInputFilename = pset.get<std::string>("InputFilename");
45 
47  cet::search_path sp("FW_SEARCH_PATH");
48  sp.find_file(fInputFilename,fname);
49 
50  std::unique_ptr<TFile> infile(new TFile(fname.c_str(), "READ"));
51  if(!infile->IsOpen()) throw cet::exception("SpaceChargeDUNE35t") << "Could not find the space charge effect file '" << fname << "'!\n";
52 
53  if(fRepresentationType == "Parametric")
54  {
55  for(int i = 0; i < 5; i++)
56  {
57  g1_x[i] = (TGraph*)infile->Get(Form("deltaX/g1_%d",i));
58  g2_x[i] = (TGraph*)infile->Get(Form("deltaX/g2_%d",i));
59  g3_x[i] = (TGraph*)infile->Get(Form("deltaX/g3_%d",i));
60  g4_x[i] = (TGraph*)infile->Get(Form("deltaX/g4_%d",i));
61  g5_x[i] = (TGraph*)infile->Get(Form("deltaX/g5_%d",i));
62 
63  g1_y[i] = (TGraph*)infile->Get(Form("deltaY/g1_%d",i));
64  g2_y[i] = (TGraph*)infile->Get(Form("deltaY/g2_%d",i));
65  g3_y[i] = (TGraph*)infile->Get(Form("deltaY/g3_%d",i));
66  g4_y[i] = (TGraph*)infile->Get(Form("deltaY/g4_%d",i));
67  g5_y[i] = (TGraph*)infile->Get(Form("deltaY/g5_%d",i));
68  g6_y[i] = (TGraph*)infile->Get(Form("deltaY/g6_%d",i));
69 
70  g1_z[i] = (TGraph*)infile->Get(Form("deltaZ/g1_%d",i));
71  g2_z[i] = (TGraph*)infile->Get(Form("deltaZ/g2_%d",i));
72  g3_z[i] = (TGraph*)infile->Get(Form("deltaZ/g3_%d",i));
73  g4_z[i] = (TGraph*)infile->Get(Form("deltaZ/g4_%d",i));
74 
75  g1_Ex[i] = (TGraph*)infile->Get(Form("deltaExOverE/g1_%d",i));
76  g2_Ex[i] = (TGraph*)infile->Get(Form("deltaExOverE/g2_%d",i));
77  g3_Ex[i] = (TGraph*)infile->Get(Form("deltaExOverE/g3_%d",i));
78  g4_Ex[i] = (TGraph*)infile->Get(Form("deltaExOverE/g4_%d",i));
79  g5_Ex[i] = (TGraph*)infile->Get(Form("deltaExOverE/g5_%d",i));
80 
81  g1_Ey[i] = (TGraph*)infile->Get(Form("deltaEyOverE/g1_%d",i));
82  g2_Ey[i] = (TGraph*)infile->Get(Form("deltaEyOverE/g2_%d",i));
83  g3_Ey[i] = (TGraph*)infile->Get(Form("deltaEyOverE/g3_%d",i));
84  g4_Ey[i] = (TGraph*)infile->Get(Form("deltaEyOverE/g4_%d",i));
85  g5_Ey[i] = (TGraph*)infile->Get(Form("deltaEyOverE/g5_%d",i));
86  g6_Ey[i] = (TGraph*)infile->Get(Form("deltaEyOverE/g6_%d",i));
87 
88  g1_Ez[i] = (TGraph*)infile->Get(Form("deltaEzOverE/g1_%d",i));
89  g2_Ez[i] = (TGraph*)infile->Get(Form("deltaEzOverE/g2_%d",i));
90  g3_Ez[i] = (TGraph*)infile->Get(Form("deltaEzOverE/g3_%d",i));
91  g4_Ez[i] = (TGraph*)infile->Get(Form("deltaEzOverE/g4_%d",i));
92  }
93 
94  g1_x[5] = (TGraph*)infile->Get("deltaX/g1_5");
95  g2_x[5] = (TGraph*)infile->Get("deltaX/g2_5");
96  g3_x[5] = (TGraph*)infile->Get("deltaX/g3_5");
97  g4_x[5] = (TGraph*)infile->Get("deltaX/g4_5");
98  g5_x[5] = (TGraph*)infile->Get("deltaX/g5_5");
99 
100  g1_y[5] = (TGraph*)infile->Get("deltaY/g1_5");
101  g2_y[5] = (TGraph*)infile->Get("deltaY/g2_5");
102  g3_y[5] = (TGraph*)infile->Get("deltaY/g3_5");
103  g4_y[5] = (TGraph*)infile->Get("deltaY/g4_5");
104  g5_y[5] = (TGraph*)infile->Get("deltaY/g5_5");
105  g6_y[5] = (TGraph*)infile->Get("deltaY/g6_5");
106 
107  g1_x[6] = (TGraph*)infile->Get("deltaX/g1_6");
108  g2_x[6] = (TGraph*)infile->Get("deltaX/g2_6");
109  g3_x[6] = (TGraph*)infile->Get("deltaX/g3_6");
110  g4_x[6] = (TGraph*)infile->Get("deltaX/g4_6");
111  g5_x[6] = (TGraph*)infile->Get("deltaX/g5_6");
112 
113  g1_Ex[5] = (TGraph*)infile->Get("deltaExOverE/g1_5");
114  g2_Ex[5] = (TGraph*)infile->Get("deltaExOverE/g2_5");
115  g3_Ex[5] = (TGraph*)infile->Get("deltaExOverE/g3_5");
116  g4_Ex[5] = (TGraph*)infile->Get("deltaExOverE/g4_5");
117  g5_Ex[5] = (TGraph*)infile->Get("deltaExOverE/g5_5");
118 
119  g1_Ey[5] = (TGraph*)infile->Get("deltaEyOverE/g1_5");
120  g2_Ey[5] = (TGraph*)infile->Get("deltaEyOverE/g2_5");
121  g3_Ey[5] = (TGraph*)infile->Get("deltaEyOverE/g3_5");
122  g4_Ey[5] = (TGraph*)infile->Get("deltaEyOverE/g4_5");
123  g5_Ey[5] = (TGraph*)infile->Get("deltaEyOverE/g5_5");
124  g6_Ey[5] = (TGraph*)infile->Get("deltaEyOverE/g6_5");
125 
126  g1_Ex[6] = (TGraph*)infile->Get("deltaExOverE/g1_6");
127  g2_Ex[6] = (TGraph*)infile->Get("deltaExOverE/g2_6");
128  g3_Ex[6] = (TGraph*)infile->Get("deltaExOverE/g3_6");
129  g4_Ex[6] = (TGraph*)infile->Get("deltaExOverE/g4_6");
130  g5_Ex[6] = (TGraph*)infile->Get("deltaExOverE/g5_6");
131  }
132 
133  infile->Close();
134  }
135 
136  if(fEnableCorrSCE == true)
137  {
138  // Grab other parameters from pset
139  }
140 
141  return true;
142 }
std::string string
Definition: nybbler.cc:12
string infile
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
bool spacecharge::SpaceChargeDUNE35t::EnableCalEfieldSCE ( ) const
overridevirtual

Return boolean indicating whether or not to apply SCE corrections.

Implements spacecharge::SpaceCharge.

Definition at line 182 of file SpaceChargeDUNE35t.cxx.

183 {
184  return fEnableCalEfieldSCE;
185 }
bool spacecharge::SpaceChargeDUNE35t::EnableCalSpatialSCE ( ) const
overridevirtual

Return boolean indicating whether or not to apply SCE corrections.

Return boolean indicating whether or not to apply SCE corrections

Implements spacecharge::SpaceCharge.

Definition at line 176 of file SpaceChargeDUNE35t.cxx.

177 {
178  return fEnableCalSpatialSCE;
179 }
bool spacecharge::SpaceChargeDUNE35t::EnableCorrSCE ( ) const
inlineoverridevirtual

Implements spacecharge::SpaceCharge.

Definition at line 46 of file SpaceChargeDUNE35t.h.

bool EnableCalSpatialSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
bool EnableCalEfieldSCE() const override
Return boolean indicating whether or not to apply SCE corrections.
bool spacecharge::SpaceChargeDUNE35t::EnableSimEfieldSCE ( ) const
overridevirtual

Return boolean indicating whether or not to turn simulation of SCE on for E field distortions

Implements spacecharge::SpaceCharge.

Definition at line 163 of file SpaceChargeDUNE35t.cxx.

164 {
165  return fEnableSimEfieldSCE;
166 }
bool spacecharge::SpaceChargeDUNE35t::EnableSimSpatialSCE ( ) const
overridevirtual

Return boolean indicating whether or not to turn simulation of SCE on for spatial distortions

Implements spacecharge::SpaceCharge.

Definition at line 155 of file SpaceChargeDUNE35t.cxx.

156 {
157  return fEnableSimSpatialSCE;
158 }
geo::Vector_t spacecharge::SpaceChargeDUNE35t::GetCalEfieldOffsets ( geo::Point_t const &  point,
int const &  TPCid 
) const
overridevirtual

Implements spacecharge::SpaceCharge.

Definition at line 374 of file SpaceChargeDUNE35t.cxx.

375 {
376  return { 0.0, 0.0, 0.0 };
377 }
geo::Vector_t spacecharge::SpaceChargeDUNE35t::GetCalPosOffsets ( geo::Point_t const &  point,
int const &  TPCid 
) const
overridevirtual

Implements spacecharge::SpaceCharge.

Definition at line 209 of file SpaceChargeDUNE35t.cxx.

210 {
211 
212  return { 0.0, 0.0, 0.0 };
213 }
geo::Vector_t spacecharge::SpaceChargeDUNE35t::GetEfieldOffsets ( geo::Point_t const &  point) const
overridevirtual

Primary working method of service that provides E field offsets to be used in charge/light yield calculation (e.g.)

Implements spacecharge::SpaceCharge.

Definition at line 355 of file SpaceChargeDUNE35t.cxx.

356 {
357  std::vector<double> theEfieldOffsets;
358 
359  if(IsInsideBoundaries(point.X(), point.Y(), point.Z()) == false)
360  {
361  theEfieldOffsets.resize(3,0.0);
362  }
363  else
364  {
365  if(fRepresentationType == "Parametric")
366  theEfieldOffsets = GetEfieldOffsetsParametric(point.X(), point.Y(), point.Z());
367  else
368  theEfieldOffsets.resize(3,0.0);
369  }
370 
371  return { theEfieldOffsets[0], theEfieldOffsets[1], theEfieldOffsets[2] };
372 }
std::vector< double > GetEfieldOffsetsParametric(double xVal, double yVal, double zVal) const
Provides E field offsets using a parametric representation.
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) ...
std::vector< double > spacecharge::SpaceChargeDUNE35t::GetEfieldOffsetsParametric ( double  xVal,
double  yVal,
double  zVal 
) const
protected

Provides E field offsets using a parametric representation.

Definition at line 381 of file SpaceChargeDUNE35t.cxx.

382 {
383  std::vector<double> theEfieldOffsetsParametric;
384 
385  double xValNew = TransformX(xVal);
386  double yValNew = TransformY(yVal);
387  double zValNew = TransformZ(zVal);
388 
389  theEfieldOffsetsParametric.push_back(GetOneEfieldOffsetParametric(xValNew,yValNew,zValNew,"X"));
390  theEfieldOffsetsParametric.push_back(GetOneEfieldOffsetParametric(xValNew,yValNew,zValNew,"Y"));
391  theEfieldOffsetsParametric.push_back(GetOneEfieldOffsetParametric(xValNew,yValNew,zValNew,"Z"));
392 
393  return theEfieldOffsetsParametric;
394 }
double TransformX(double xVal) const
Transform X to SCE X coordinate: [2.275,-0.3] –> [0.0,2.25].
double TransformY(double yVal) const
Transform Y to SCE Y coordinate: [0.0,2.0] –> [0.0,2.0].
double GetOneEfieldOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
double TransformZ(double zVal) const
Transform Z to SCE Z coordinate: [0.0,1.6] –> [0.0,1.6].
double spacecharge::SpaceChargeDUNE35t::GetOneEfieldOffsetParametric ( double  xValNew,
double  yValNew,
double  zValNew,
std::string  axis 
) const
protected

Provides one E field offset using a parametric representation, for a given axis

Definition at line 399 of file SpaceChargeDUNE35t.cxx.

400 {
401  double parA[6][7];
402  double parB[6];
403 
404  for(int j = 0; j < 6; j++)
405  {
406  for(int i = 0; i < 7; i++)
407  parA[j][i] = 0.0;
408 
409  parB[j] = 0.0;
410  }
411 
412  if(axis == "X")
413  {
414  for(int j = 0; j < 7; j++)
415  {
416  parA[0][j] = g1_Ex[j]->Eval(zValNew);
417  parA[1][j] = g2_Ex[j]->Eval(zValNew);
418  parA[2][j] = g3_Ex[j]->Eval(zValNew);
419  parA[3][j] = g4_Ex[j]->Eval(zValNew);
420  parA[4][j] = g5_Ex[j]->Eval(zValNew);
421  }
422 
423  f1_Ex->SetParameters(parA[0]);
424  f2_Ex->SetParameters(parA[1]);
425  f3_Ex->SetParameters(parA[2]);
426  f4_Ex->SetParameters(parA[3]);
427  f5_Ex->SetParameters(parA[4]);
428  }
429  else if(axis == "Y")
430  {
431  for(int j = 0; j < 6; j++)
432  {
433  parA[0][j] = g1_Ey[j]->Eval(zValNew);
434  parA[1][j] = g2_Ey[j]->Eval(zValNew);
435  parA[2][j] = g3_Ey[j]->Eval(zValNew);
436  parA[3][j] = g4_Ey[j]->Eval(zValNew);
437  parA[4][j] = g5_Ey[j]->Eval(zValNew);
438  parA[5][j] = g6_Ey[j]->Eval(zValNew);
439  }
440 
441  f1_Ey->SetParameters(parA[0]);
442  f2_Ey->SetParameters(parA[1]);
443  f3_Ey->SetParameters(parA[2]);
444  f4_Ey->SetParameters(parA[3]);
445  f5_Ey->SetParameters(parA[4]);
446  f6_Ey->SetParameters(parA[5]);
447  }
448  else if(axis == "Z")
449  {
450  for(int j = 0; j < 5; j++)
451  {
452  parA[0][j] = g1_Ez[j]->Eval(zValNew);
453  parA[1][j] = g2_Ez[j]->Eval(zValNew);
454  parA[2][j] = g3_Ez[j]->Eval(zValNew);
455  parA[3][j] = g4_Ez[j]->Eval(zValNew);
456  }
457 
458  f1_Ez->SetParameters(parA[0]);
459  f2_Ez->SetParameters(parA[1]);
460  f3_Ez->SetParameters(parA[2]);
461  f4_Ez->SetParameters(parA[3]);
462  }
463 
464  double aValNew;
465  double bValNew;
466 
467  if(axis == "Y")
468  {
469  aValNew = xValNew;
470  bValNew = yValNew;
471  }
472  else
473  {
474  aValNew = yValNew;
475  bValNew = xValNew;
476  }
477 
478  double offsetValNew = 0.0;
479  if(axis == "X")
480  {
481  parB[0] = f1_Ex->Eval(aValNew);
482  parB[1] = f2_Ex->Eval(aValNew);
483  parB[2] = f3_Ex->Eval(aValNew);
484  parB[3] = f4_Ex->Eval(aValNew);
485  parB[4] = f5_Ex->Eval(aValNew);
486 
487  fFinal_Ex->SetParameters(parB);
488  offsetValNew = fFinal_Ex->Eval(bValNew);
489  }
490  else if(axis == "Y")
491  {
492  parB[0] = f1_Ey->Eval(aValNew);
493  parB[1] = f2_Ey->Eval(aValNew);
494  parB[2] = f3_Ey->Eval(aValNew);
495  parB[3] = f4_Ey->Eval(aValNew);
496  parB[4] = f5_Ey->Eval(aValNew);
497  parB[5] = f6_Ey->Eval(aValNew);
498 
499  fFinal_Ey->SetParameters(parB);
500  offsetValNew = fFinal_Ey->Eval(bValNew);
501  }
502  else if(axis == "Z")
503  {
504  parB[0] = f1_Ez->Eval(aValNew);
505  parB[1] = f2_Ez->Eval(aValNew);
506  parB[2] = f3_Ez->Eval(aValNew);
507  parB[3] = f4_Ez->Eval(aValNew);
508 
509  fFinal_Ez->SetParameters(parB);
510  offsetValNew = fFinal_Ez->Eval(bValNew);
511  }
512 
513  return offsetValNew;
514 }
double spacecharge::SpaceChargeDUNE35t::GetOnePosOffsetParametric ( double  xValNew,
double  yValNew,
double  zValNew,
std::string  axis 
) const
protected

Provides one position offset using a parametric representation, for a given axis

Definition at line 235 of file SpaceChargeDUNE35t.cxx.

236 {
237  double parA[6][7];
238  double parB[6];
239 
240  for(int j = 0; j < 6; j++)
241  {
242  for(int i = 0; i < 7; i++)
243  parA[j][i] = 0.0;
244 
245  parB[j] = 0.0;
246  }
247 
248  if(axis == "X")
249  {
250  for(int j = 0; j < 7; j++)
251  {
252  parA[0][j] = g1_x[j]->Eval(zValNew);
253  parA[1][j] = g2_x[j]->Eval(zValNew);
254  parA[2][j] = g3_x[j]->Eval(zValNew);
255  parA[3][j] = g4_x[j]->Eval(zValNew);
256  parA[4][j] = g5_x[j]->Eval(zValNew);
257  }
258 
259  f1_x->SetParameters(parA[0]);
260  f2_x->SetParameters(parA[1]);
261  f3_x->SetParameters(parA[2]);
262  f4_x->SetParameters(parA[3]);
263  f5_x->SetParameters(parA[4]);
264  }
265  else if(axis == "Y")
266  {
267  for(int j = 0; j < 6; j++)
268  {
269  parA[0][j] = g1_y[j]->Eval(zValNew);
270  parA[1][j] = g2_y[j]->Eval(zValNew);
271  parA[2][j] = g3_y[j]->Eval(zValNew);
272  parA[3][j] = g4_y[j]->Eval(zValNew);
273  parA[4][j] = g5_y[j]->Eval(zValNew);
274  parA[5][j] = g6_y[j]->Eval(zValNew);
275  }
276 
277  f1_y->SetParameters(parA[0]);
278  f2_y->SetParameters(parA[1]);
279  f3_y->SetParameters(parA[2]);
280  f4_y->SetParameters(parA[3]);
281  f5_y->SetParameters(parA[4]);
282  f6_y->SetParameters(parA[5]);
283  }
284  else if(axis == "Z")
285  {
286  for(int j = 0; j < 5; j++)
287  {
288  parA[0][j] = g1_z[j]->Eval(zValNew);
289  parA[1][j] = g2_z[j]->Eval(zValNew);
290  parA[2][j] = g3_z[j]->Eval(zValNew);
291  parA[3][j] = g4_z[j]->Eval(zValNew);
292  }
293 
294  f1_z->SetParameters(parA[0]);
295  f2_z->SetParameters(parA[1]);
296  f3_z->SetParameters(parA[2]);
297  f4_z->SetParameters(parA[3]);
298  }
299 
300  double aValNew;
301  double bValNew;
302 
303  if(axis == "Y")
304  {
305  aValNew = xValNew;
306  bValNew = yValNew;
307  }
308  else
309  {
310  aValNew = yValNew;
311  bValNew = xValNew;
312  }
313 
314  double offsetValNew = 0.0;
315  if(axis == "X")
316  {
317  parB[0] = f1_x->Eval(aValNew);
318  parB[1] = f2_x->Eval(aValNew);
319  parB[2] = f3_x->Eval(aValNew);
320  parB[3] = f4_x->Eval(aValNew);
321  parB[4] = f5_x->Eval(aValNew);
322 
323  fFinal_x->SetParameters(parB);
324  offsetValNew = 100.0*fFinal_x->Eval(bValNew);
325  }
326  else if(axis == "Y")
327  {
328  parB[0] = f1_y->Eval(aValNew);
329  parB[1] = f2_y->Eval(aValNew);
330  parB[2] = f3_y->Eval(aValNew);
331  parB[3] = f4_y->Eval(aValNew);
332  parB[4] = f5_y->Eval(aValNew);
333  parB[5] = f6_y->Eval(aValNew);
334 
335  fFinal_y->SetParameters(parB);
336  offsetValNew = 100.0*fFinal_y->Eval(bValNew);
337  }
338  else if(axis == "Z")
339  {
340  parB[0] = f1_z->Eval(aValNew);
341  parB[1] = f2_z->Eval(aValNew);
342  parB[2] = f3_z->Eval(aValNew);
343  parB[3] = f4_z->Eval(aValNew);
344 
345  fFinal_z->SetParameters(parB);
346  offsetValNew = 100.0*fFinal_z->Eval(bValNew);
347  }
348 
349  return offsetValNew;
350 }
geo::Vector_t spacecharge::SpaceChargeDUNE35t::GetPosOffsets ( geo::Point_t const &  point) const
overridevirtual

Primary working method of service that provides position offsets to be used in ionization electron drift

Implements spacecharge::SpaceCharge.

Definition at line 190 of file SpaceChargeDUNE35t.cxx.

191 {
192  std::vector<double> thePosOffsets;
193 
194  if(IsInsideBoundaries(point.X(), point.Y(), point.Z()) == false)
195  {
196  thePosOffsets.resize(3,0.0);
197  }
198  else
199  {
200  if(fRepresentationType == "Parametric")
201  thePosOffsets = GetPosOffsetsParametric(point.X(), point.Y(), point.Z());
202  else
203  thePosOffsets.resize(3,0.0);
204  }
205 
206  return { thePosOffsets[0], thePosOffsets[1], thePosOffsets[2] };
207 }
std::vector< double > GetPosOffsetsParametric(double xVal, double yVal, double zVal) const
Provides position offsets using a parametric representation.
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) ...
std::vector< double > spacecharge::SpaceChargeDUNE35t::GetPosOffsetsParametric ( double  xVal,
double  yVal,
double  zVal 
) const
protected

Provides position offsets using a parametric representation.

Definition at line 217 of file SpaceChargeDUNE35t.cxx.

218 {
219  std::vector<double> thePosOffsetsParametric;
220 
221  double xValNew = TransformX(xVal);
222  double yValNew = TransformY(yVal);
223  double zValNew = TransformZ(zVal);
224 
225  thePosOffsetsParametric.push_back(GetOnePosOffsetParametric(xValNew,yValNew,zValNew,"X"));
226  thePosOffsetsParametric.push_back(GetOnePosOffsetParametric(xValNew,yValNew,zValNew,"Y"));
227  thePosOffsetsParametric.push_back(GetOnePosOffsetParametric(xValNew,yValNew,zValNew,"Z"));
228 
229  return thePosOffsetsParametric;
230 }
double TransformX(double xVal) const
Transform X to SCE X coordinate: [2.275,-0.3] –> [0.0,2.25].
double TransformY(double yVal) const
Transform Y to SCE Y coordinate: [0.0,2.0] –> [0.0,2.0].
double GetOnePosOffsetParametric(double xVal, double yVal, double zVal, std::string axis) const
double TransformZ(double zVal) const
Transform Z to SCE Z coordinate: [0.0,1.6] –> [0.0,1.6].
bool spacecharge::SpaceChargeDUNE35t::IsInsideBoundaries ( double  xVal,
double  yVal,
double  zVal 
) const
protected

Check to see if point is inside boundaries of map (allow to go slightly out of range)

Definition at line 550 of file SpaceChargeDUNE35t.cxx.

551 {
552  bool isInside = true;
553 
554  if((xVal < 2.5) || (xVal > 230.0) || (yVal < -5.0) || (yVal > 205.0) || (zVal < -5.0) || (zVal > 165.0))
555  {
556  isInside = false;
557  }
558 
559  return isInside;
560 }
double spacecharge::SpaceChargeDUNE35t::TransformX ( double  xVal) const
protected

Transform X to SCE X coordinate: [2.275,-0.3] –> [0.0,2.25].

Definition at line 518 of file SpaceChargeDUNE35t.cxx.

519 {
520  double xValNew;
521  xValNew = 2.25 - (2.25/2.25)*((xVal-2.5)/100.0);
522  xValNew -= 1.125;
523 
524  return xValNew;
525 }
double spacecharge::SpaceChargeDUNE35t::TransformY ( double  yVal) const
protected

Transform Y to SCE Y coordinate: [0.0,2.0] –> [0.0,2.0].

Definition at line 529 of file SpaceChargeDUNE35t.cxx.

530 {
531  double yValNew;
532  yValNew = (2.0/2.0)*(yVal/100.0);
533  yValNew -= 1.0;
534 
535  return yValNew;
536 }
double spacecharge::SpaceChargeDUNE35t::TransformZ ( double  zVal) const
protected

Transform Z to SCE Z coordinate: [0.0,1.6] –> [0.0,1.6].

Definition at line 540 of file SpaceChargeDUNE35t.cxx.

541 {
542  double zValNew;
543  zValNew = (1.6/1.6)*(zVal/100.0);
544 
545  return zValNew;
546 }
bool spacecharge::SpaceChargeDUNE35t::Update ( uint64_t  ts = 0)

Definition at line 145 of file SpaceChargeDUNE35t.cxx.

146 {
147  if (ts == 0) return false;
148 
149  return true;
150 }

Member Data Documentation

TF1* spacecharge::SpaceChargeDUNE35t::f1_Ex = new TF1("f1_Ex","pol6")
protected

Definition at line 131 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f1_Ey = new TF1("f1_Ey","pol5")
protected

Definition at line 138 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f1_Ez = new TF1("f1_Ez","pol4")
protected

Definition at line 146 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f1_x = new TF1("f1_x","pol6")
protected

Definition at line 92 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f1_y = new TF1("f1_y","pol5")
protected

Definition at line 99 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f1_z = new TF1("f1_z","pol4")
protected

Definition at line 107 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f2_Ex = new TF1("f2_Ex","pol6")
protected

Definition at line 132 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f2_Ey = new TF1("f2_Ey","pol5")
protected

Definition at line 139 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f2_Ez = new TF1("f2_Ez","pol4")
protected

Definition at line 147 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f2_x = new TF1("f2_x","pol6")
protected

Definition at line 93 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f2_y = new TF1("f2_y","pol5")
protected

Definition at line 100 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f2_z = new TF1("f2_z","pol4")
protected

Definition at line 108 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f3_Ex = new TF1("f3_Ex","pol6")
protected

Definition at line 133 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f3_Ey = new TF1("f3_Ey","pol5")
protected

Definition at line 140 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f3_Ez = new TF1("f3_Ez","pol4")
protected

Definition at line 148 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f3_x = new TF1("f3_x","pol6")
protected

Definition at line 94 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f3_y = new TF1("f3_y","pol5")
protected

Definition at line 101 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f3_z = new TF1("f3_z","pol4")
protected

Definition at line 109 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f4_Ex = new TF1("f4_Ex","pol6")
protected

Definition at line 134 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f4_Ey = new TF1("f4_Ey","pol5")
protected

Definition at line 141 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f4_Ez = new TF1("f4_Ez","pol4")
protected

Definition at line 149 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f4_x = new TF1("f4_x","pol6")
protected

Definition at line 95 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f4_y = new TF1("f4_y","pol5")
protected

Definition at line 102 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f4_z = new TF1("f4_z","pol4")
protected

Definition at line 110 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f5_Ex = new TF1("f5_Ex","pol6")
protected

Definition at line 135 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f5_Ey = new TF1("f5_Ey","pol5")
protected

Definition at line 142 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f5_x = new TF1("f5_x","pol6")
protected

Definition at line 96 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f5_y = new TF1("f5_y","pol5")
protected

Definition at line 103 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f6_Ey = new TF1("f6_Ey","pol5")
protected

Definition at line 143 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::f6_y = new TF1("f6_y","pol5")
protected

Definition at line 104 of file SpaceChargeDUNE35t.h.

bool spacecharge::SpaceChargeDUNE35t::fEnableCalEfieldSCE
protected

Definition at line 68 of file SpaceChargeDUNE35t.h.

bool spacecharge::SpaceChargeDUNE35t::fEnableCalSpatialSCE
protected

Definition at line 67 of file SpaceChargeDUNE35t.h.

bool spacecharge::SpaceChargeDUNE35t::fEnableCorrSCE
protected

Definition at line 69 of file SpaceChargeDUNE35t.h.

bool spacecharge::SpaceChargeDUNE35t::fEnableSimEfieldSCE
protected

Definition at line 66 of file SpaceChargeDUNE35t.h.

bool spacecharge::SpaceChargeDUNE35t::fEnableSimSpatialSCE
protected

Definition at line 65 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::fFinal_Ex = new TF1("fFinal_Ex","pol4")
protected

Definition at line 136 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::fFinal_Ey = new TF1("fFinal_Ey","pol5")
protected

Definition at line 144 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::fFinal_Ez = new TF1("fFinal_Ez","pol3")
protected

Definition at line 150 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::fFinal_x = new TF1("fFinal_x","pol4")
protected

Definition at line 97 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::fFinal_y = new TF1("fFinal_y","pol5")
protected

Definition at line 105 of file SpaceChargeDUNE35t.h.

TF1* spacecharge::SpaceChargeDUNE35t::fFinal_z = new TF1("fFinal_z","pol3")
protected

Definition at line 111 of file SpaceChargeDUNE35t.h.

std::string spacecharge::SpaceChargeDUNE35t::fInputFilename
protected

Definition at line 72 of file SpaceChargeDUNE35t.h.

std::string spacecharge::SpaceChargeDUNE35t::fRepresentationType
protected

Definition at line 71 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g1_Ex = new TGraph*[7]
protected

Definition at line 113 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g1_Ey = new TGraph*[7]
protected

Definition at line 119 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g1_Ez = new TGraph*[7]
protected

Definition at line 126 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g1_x = new TGraph*[7]
protected

Definition at line 74 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g1_y = new TGraph*[7]
protected

Definition at line 80 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g1_z = new TGraph*[7]
protected

Definition at line 87 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g2_Ex = new TGraph*[7]
protected

Definition at line 114 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g2_Ey = new TGraph*[7]
protected

Definition at line 120 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g2_Ez = new TGraph*[7]
protected

Definition at line 127 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g2_x = new TGraph*[7]
protected

Definition at line 75 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g2_y = new TGraph*[7]
protected

Definition at line 81 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g2_z = new TGraph*[7]
protected

Definition at line 88 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g3_Ex = new TGraph*[7]
protected

Definition at line 115 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g3_Ey = new TGraph*[7]
protected

Definition at line 121 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g3_Ez = new TGraph*[7]
protected

Definition at line 128 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g3_x = new TGraph*[7]
protected

Definition at line 76 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g3_y = new TGraph*[7]
protected

Definition at line 82 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g3_z = new TGraph*[7]
protected

Definition at line 89 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g4_Ex = new TGraph*[7]
protected

Definition at line 116 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g4_Ey = new TGraph*[7]
protected

Definition at line 122 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g4_Ez = new TGraph*[7]
protected

Definition at line 129 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g4_x = new TGraph*[7]
protected

Definition at line 77 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g4_y = new TGraph*[7]
protected

Definition at line 83 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g4_z = new TGraph*[7]
protected

Definition at line 90 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g5_Ex = new TGraph*[7]
protected

Definition at line 117 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g5_Ey = new TGraph*[7]
protected

Definition at line 123 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g5_x = new TGraph*[7]
protected

Definition at line 78 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g5_y = new TGraph*[7]
protected

Definition at line 84 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g6_Ey = new TGraph*[7]
protected

Definition at line 124 of file SpaceChargeDUNE35t.h.

TGraph** spacecharge::SpaceChargeDUNE35t::g6_y = new TGraph*[7]
protected

Definition at line 85 of file SpaceChargeDUNE35t.h.


The documentation for this class was generated from the following files: