MpdFemtoPicoEvent.cxx 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. //
  2. // Stores collection of particles for processing
  3. //
  4. // MpdFemtoMaker headers
  5. #include "MpdFemtoPicoEvent.h"
  6. //_________________
  7. MpdFemtoPicoEvent::MpdFemtoPicoEvent() {
  8. mFirstParticleCollection = new MpdFemtoParticleCollection();
  9. mSecondParticleCollection = new MpdFemtoParticleCollection();
  10. mThirdParticleCollection = new MpdFemtoParticleCollection();
  11. // Default constructor
  12. /* empty */
  13. }
  14. //_________________
  15. MpdFemtoPicoEvent::~MpdFemtoPicoEvent() {
  16. // Destructor
  17. MpdFemtoParticleIterator iter;
  18. if (mFirstParticleCollection) {
  19. for (iter = mFirstParticleCollection->begin(); iter != mFirstParticleCollection->end(); iter++) {
  20. delete *iter;
  21. }
  22. mFirstParticleCollection->clear();
  23. delete mFirstParticleCollection;
  24. mFirstParticleCollection = nullptr;
  25. }
  26. if (mSecondParticleCollection) {
  27. for (iter = mSecondParticleCollection->begin(); iter != mSecondParticleCollection->end(); iter++) {
  28. delete *iter;
  29. }
  30. mSecondParticleCollection->clear();
  31. delete mSecondParticleCollection;
  32. mSecondParticleCollection = nullptr;
  33. }
  34. if (mThirdParticleCollection) {
  35. if (mThirdParticleCollection->size() != 0) {
  36. for (iter = mThirdParticleCollection->begin(); iter != mThirdParticleCollection->end(); iter++) {
  37. delete *iter;
  38. }
  39. }
  40. mThirdParticleCollection->clear();
  41. delete mThirdParticleCollection;
  42. mThirdParticleCollection = nullptr;
  43. }
  44. }
  45. //_________________
  46. MpdFemtoPicoEvent::MpdFemtoPicoEvent(const MpdFemtoPicoEvent& pico) :
  47. mFirstParticleCollection(nullptr),
  48. mSecondParticleCollection(nullptr),
  49. mThirdParticleCollection(nullptr) {
  50. // Copy constructor
  51. MpdFemtoParticleIterator iter;
  52. mFirstParticleCollection = new MpdFemtoParticleCollection;
  53. if (pico.mFirstParticleCollection) {
  54. for (iter = pico.mFirstParticleCollection->begin();
  55. iter != pico.mFirstParticleCollection->end(); iter++) {
  56. mFirstParticleCollection->push_back(*iter);
  57. }
  58. }
  59. mSecondParticleCollection = new MpdFemtoParticleCollection;
  60. if (pico.mSecondParticleCollection) {
  61. for (iter = pico.mSecondParticleCollection->begin();
  62. iter != pico.mSecondParticleCollection->end(); iter++) {
  63. mSecondParticleCollection->push_back(*iter);
  64. }
  65. }
  66. mThirdParticleCollection = new MpdFemtoParticleCollection;
  67. if (pico.mThirdParticleCollection) {
  68. for (iter = pico.mThirdParticleCollection->begin();
  69. iter != pico.mThirdParticleCollection->end(); iter++) {
  70. mThirdParticleCollection->push_back(*iter);
  71. }
  72. }
  73. }
  74. //_________________
  75. MpdFemtoPicoEvent& MpdFemtoPicoEvent::operator=(const MpdFemtoPicoEvent& pico) {
  76. // Assignment operator
  77. if (this != &pico) {
  78. MpdFemtoParticleIterator iter;
  79. // Clean collections
  80. if (mFirstParticleCollection) {
  81. for (iter = mFirstParticleCollection->begin();
  82. iter != mFirstParticleCollection->end(); iter++) {
  83. delete *iter;
  84. }
  85. mFirstParticleCollection->clear();
  86. delete mFirstParticleCollection;
  87. mFirstParticleCollection = nullptr;
  88. } //if (mFirstParticleCollection)
  89. if (mSecondParticleCollection) {
  90. for (iter = mSecondParticleCollection->begin();
  91. iter != mSecondParticleCollection->end(); iter++) {
  92. delete *iter;
  93. }
  94. mSecondParticleCollection->clear();
  95. delete mSecondParticleCollection;
  96. mSecondParticleCollection = nullptr;
  97. } //if (mSecondParticleCollection)
  98. if (mThirdParticleCollection) {
  99. for (iter = mThirdParticleCollection->begin();
  100. iter != mThirdParticleCollection->end(); iter++) {
  101. delete *iter;
  102. }
  103. mThirdParticleCollection->clear();
  104. delete mThirdParticleCollection;
  105. mThirdParticleCollection = nullptr;
  106. } //if (mThirdParticleCollection)
  107. // Copy collections
  108. mFirstParticleCollection = new MpdFemtoParticleCollection;
  109. if (pico.mFirstParticleCollection) {
  110. for (iter = pico.mFirstParticleCollection->begin();
  111. iter != pico.mFirstParticleCollection->end(); iter++) {
  112. mFirstParticleCollection->push_back(*iter);
  113. }
  114. } //if (pico.mFirstParticleCollection)
  115. mSecondParticleCollection = new MpdFemtoParticleCollection;
  116. if (pico.mSecondParticleCollection) {
  117. for (iter = pico.mSecondParticleCollection->begin();
  118. iter != pico.mSecondParticleCollection->end(); iter++) {
  119. mSecondParticleCollection->push_back(*iter);
  120. }
  121. } //if (pico.mSecondParticleCollection)
  122. mThirdParticleCollection = new MpdFemtoParticleCollection;
  123. if (pico.mThirdParticleCollection) {
  124. for (iter = pico.mThirdParticleCollection->begin();
  125. iter != pico.mThirdParticleCollection->end(); iter++) {
  126. mThirdParticleCollection->push_back(*iter);
  127. }
  128. } //if (pico.mThirdParticleCollection)
  129. } //if( this != &pico)
  130. return *this;
  131. }
  132. ClassImp(MpdFemtoPicoEvent)