MpdFemtoPicoEventCollectionVectorHideAway.cxx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. //
  2. // A helper class for managing many mixing buffers
  3. //
  4. // MpdFemtoMaker headers
  5. #include "MpdFemtoPicoEventCollectionVectorHideAway.h"
  6. //_________________
  7. MpdFemtoPicoEventCollectionVectorHideAway::MpdFemtoPicoEventCollectionVectorHideAway(int bx, double lx, double ux,
  8. int by, double ly, double uy,
  9. int bz, double lz, double uz) :
  10. mBinsTot(0),
  11. mBinsX(bx), mBinsY(by), mBinsZ(bz),
  12. mMinX(lx), mMinY(ly), mMinZ(lz),
  13. mMaxX(ux), mMaxY(uy), mMaxZ(uz),
  14. mCollection(nullptr),
  15. mCollectionVector(0) {
  16. // Constructor
  17. mBinsTot = mBinsX * mBinsY * mBinsZ;
  18. mStepX = 0;
  19. mStepX = (mMaxX - mMinX) / mBinsX;
  20. mStepY = 0;
  21. mStepY = (mMaxY - mMinY) / mBinsY;
  22. mStepZ = 0;
  23. mStepZ = (mMaxZ - mMinZ) / mBinsZ;
  24. for (int i = 0; i < mBinsTot; i++) {
  25. mCollection = new MpdFemtoPicoEventCollection();
  26. mCollectionVector.push_back(mCollection);
  27. } //for ( int i=0; i<mBinsTot; i++)
  28. }
  29. //_________________
  30. MpdFemtoPicoEventCollectionVectorHideAway::MpdFemtoPicoEventCollectionVectorHideAway(const MpdFemtoPicoEventCollectionVectorHideAway &coll) :
  31. mBinsTot(coll.mBinsTot),
  32. mBinsX(coll.mBinsX),
  33. mBinsY(coll.mBinsY),
  34. mBinsZ(coll.mBinsZ),
  35. mMinX(coll.mMinX),
  36. mMinY(coll.mMinY),
  37. mMinZ(coll.mMinZ),
  38. mMaxX(coll.mMaxX),
  39. mMaxY(coll.mMaxY),
  40. mMaxZ(coll.mMaxZ),
  41. mStepX(coll.mStepX),
  42. mStepY(coll.mStepY),
  43. mStepZ(coll.mStepZ) {
  44. // Copy constructor
  45. mCollectionVector.clear();
  46. for (int iter = 0; coll.mCollectionVector.size(); iter++) {
  47. mCollectionVector.push_back(coll.mCollectionVector[iter]);
  48. } //for (int iter=0; coll.mCollectionVector.size(); iter++)
  49. }
  50. //_________________
  51. MpdFemtoPicoEventCollectionVectorHideAway& MpdFemtoPicoEventCollectionVectorHideAway::operator=(const MpdFemtoPicoEventCollectionVectorHideAway& coll) {
  52. // Assignment operator
  53. if (this != &coll) {
  54. mBinsTot = coll.mBinsTot;
  55. mBinsX = coll.mBinsX;
  56. mBinsY = coll.mBinsY;
  57. mBinsZ = coll.mBinsZ;
  58. mMinX = coll.mMinX;
  59. mMinY = coll.mMinY;
  60. mMinZ = coll.mMinZ;
  61. mMaxX = coll.mMaxX;
  62. mMaxY = coll.mMaxY;
  63. mMaxZ = coll.mMaxZ;
  64. mStepX = coll.mStepX;
  65. mStepY = coll.mStepY;
  66. mStepZ = coll.mStepZ;
  67. mCollectionVector.clear();
  68. for (int iter = 0; coll.mCollectionVector.size(); iter++) {
  69. mCollectionVector.push_back(coll.mCollectionVector[iter]);
  70. } //for (int iter=0; coll.mCollectionVector.size(); iter++)
  71. }
  72. return *this;
  73. }
  74. //_________________
  75. MpdFemtoPicoEventCollectionVectorHideAway::~MpdFemtoPicoEventCollectionVectorHideAway() {
  76. // Destructor
  77. mCollectionVector.clear();
  78. }
  79. //_________________
  80. MpdFemtoPicoEventCollection* MpdFemtoPicoEventCollectionVectorHideAway::picoEventCollection(int ix, int iy, int iz) {
  81. // Return mixing event collection from a given bin
  82. if (ix < 0 || ix >= mBinsX) return 0;
  83. if (iy < 0 || iy >= mBinsY) return 0;
  84. if (iz < 0 || iz >= mBinsZ) return 0;
  85. return mCollectionVector[ (ix + iy * mBinsX + iz * mBinsY * mBinsX) ];
  86. }
  87. //_________________
  88. MpdFemtoPicoEventCollection* MpdFemtoPicoEventCollectionVectorHideAway::picoEventCollection(double x, double y, double z) {
  89. // Return mixing event collection for given values on x, y, z axes
  90. int ix, iy, iz;
  91. ix = 0;
  92. iy = 0;
  93. iz = 0;
  94. if (mStepX != 0 && mStepY != 0 && mStepZ != 0) {
  95. ix = (int) floor((x - mMinX) / mStepX);
  96. iy = (int) floor((y - mMinY) / mStepY);
  97. iz = (int) floor((z - mMinZ) / mStepZ);
  98. }
  99. return picoEventCollection(ix, iy, iz);
  100. }
  101. ClassImp(MpdFemtoPicoEventCollectionVectorHideAway)