MpdFieldMapData.cxx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // -------------------------------------------------------------------------
  2. // MpdFieldMapData source file -----
  3. // Created 23/07/13 by P. Batyuk (MPD) <batyuk@jinr.ru> -----
  4. // from MpdFieldMapData (PNDROOT) -----
  5. // -------------------------------------------------------------------------
  6. /// Last modified: 24.07.2013, P.B.
  7. #include "TArrayF.h"
  8. #include "MpdFieldMap.h"
  9. #include "MpdFieldMapData.h"
  10. // ------------- Default constructor ----------------------------------
  11. MpdFieldMapData::MpdFieldMapData() {
  12. fType = 1;
  13. fXmin = fYmin = fZmin = 0.;
  14. fXmax = fYmax = fZmax = 0.;
  15. fNx = fNy = fNz = 0;
  16. fBx = fBy = fBz = NULL;
  17. }
  18. // ------------- Standard constructor ---------------------------------
  19. MpdFieldMapData::MpdFieldMapData(const char* mapName)
  20. : TNamed(mapName, "PND Field Map Data") {
  21. fType = 1;
  22. fXmin = fYmin = fZmin = 0.;
  23. fXmax = fYmax = fZmax = 0.;
  24. fNx = fNy = fNz = 0;
  25. fBx = fBy = fBz = NULL;
  26. }
  27. // ----- Constructor from MpdFieldMap ------------------------------
  28. MpdFieldMapData::MpdFieldMapData(const char* name,
  29. const MpdFieldMap& map)
  30. : TNamed(name, "PND Field Map Data") {
  31. fType = map.GetType();
  32. fXmin = map.GetXmin();
  33. fYmin = map.GetYmin();
  34. fZmin = map.GetZmin();
  35. fXmax = map.GetXmax();
  36. fYmax = map.GetYmax();
  37. fZmax = map.GetZmax();
  38. fNx = map.GetNx();
  39. fNy = map.GetNy();
  40. fNz = map.GetNz();
  41. fBx = new TArrayF(*(map.GetBx()));
  42. fBy = new TArrayF(*(map.GetBy()));
  43. fBz = new TArrayF(*(map.GetBz()));
  44. fUnit = map.GetUnit();
  45. // Take out scaling factor and convert from kG to T
  46. Double_t factor = map.GetScale() * 10.;
  47. Int_t index = 0;
  48. for (Int_t ix=0; ix<fNx; ix++) {
  49. for (Int_t iy=0; iy<fNy; iy++) {
  50. for (Int_t iz=0; iz<fNz; iz++) {
  51. index = ix*fNy*fNz + iy*fNz + iz;
  52. if ( fBx ) (*fBx)[index] = (*fBx)[index] / factor;
  53. if ( fBy ) (*fBy)[index] = (*fBy)[index] / factor;
  54. if ( fBz ) (*fBz)[index] = (*fBz)[index] / factor;
  55. } // z loop
  56. } // y loop
  57. } // x loop
  58. }
  59. // ------------ Destructor --------------------------------------------
  60. MpdFieldMapData::~MpdFieldMapData() {
  61. if ( fBx ) delete fBx;
  62. if ( fBy ) delete fBy;
  63. if ( fBz ) delete fBz;
  64. }
  65. ClassImp(MpdFieldMapData)