MpdFemtoMultiTrackCut.cxx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // Allows to add several cuts to the list
  3. //
  4. // MpdFemtoMaker headers
  5. // Infrastructure
  6. #include "MpdFemtoMultiTrackCut.h"
  7. #include "MpdFemtoTrackCutCollection.h"
  8. ClassImp(MpdFemtoMultiTrackCut)
  9. //_________________
  10. MpdFemtoMultiTrackCut::MpdFemtoMultiTrackCut() {
  11. // Default constructor
  12. mCutCollection = new MpdFemtoTrackCutCollection;
  13. }
  14. //_________________
  15. MpdFemtoMultiTrackCut::MpdFemtoMultiTrackCut(const MpdFemtoMultiTrackCut& copy) : MpdFemtoBaseTrackCut() {
  16. // Copy constructor
  17. MpdFemtoTrackCutIterator iter;
  18. MpdFemtoBaseTrackCut *t;
  19. for (iter = copy.mCutCollection->begin(); iter != copy.mCutCollection->end(); iter++) {
  20. t = (*iter)->clone();
  21. if (t) {
  22. mCutCollection->push_back(t);
  23. }
  24. } //for (iter=copy.mCutCollection->begin(); iter!=copy.mCutCollection->end(); iter++)
  25. }
  26. //_________________
  27. MpdFemtoMultiTrackCut& MpdFemtoMultiTrackCut::operator=(const MpdFemtoMultiTrackCut& copy) {
  28. if (!mCutCollection) {
  29. MpdFemtoMultiTrackCut();
  30. }
  31. if (this != &copy) {
  32. MpdFemtoTrackCutIterator iter;
  33. MpdFemtoBaseTrackCut *t;
  34. for (iter = copy.mCutCollection->begin(); iter != copy.mCutCollection->end(); iter++) {
  35. t = (*iter)->clone();
  36. if (t) {
  37. mCutCollection->push_back(t);
  38. } //if (t)
  39. } // for (iter=copy.mCutCollection->begin(); iter!=copy.mCutCollection->end(); iter++)
  40. } //if ( this != &copy )
  41. return *this;
  42. }
  43. //_________________
  44. MpdFemtoMultiTrackCut::~MpdFemtoMultiTrackCut() {
  45. if (mCutCollection) {
  46. MpdFemtoTrackCutIterator iter;
  47. for (iter = mCutCollection->begin(); iter != mCutCollection->end(); iter++) {
  48. delete *iter;
  49. }
  50. }
  51. delete mCutCollection;
  52. }
  53. //_________________
  54. MpdFemtoString MpdFemtoMultiTrackCut::report() {
  55. MpdFemtoString temp;
  56. temp = "\n MpdFemtoMultiTrackCut::report() reporting ";
  57. temp += (int) mCutCollection->size();
  58. temp += " track cuts \n";
  59. MpdFemtoTrackCutIterator iter;
  60. for (iter = mCutCollection->begin(); iter != mCutCollection->end(); iter++) {
  61. temp += (*iter)->report();
  62. }
  63. return temp;
  64. }
  65. //_________________
  66. bool MpdFemtoMultiTrackCut::pass(const MpdFemtoTrack* track) {
  67. bool temp = 0;
  68. MpdFemtoTrackCutIterator iter;
  69. for (iter = mCutCollection->begin(); iter != mCutCollection->end(); iter++) {
  70. temp = temp || (*iter)->pass(track);
  71. }
  72. return temp;
  73. }
  74. //_________________
  75. void MpdFemtoMultiTrackCut::eventBegin(const MpdFemtoEvent* ev) {
  76. MpdFemtoTrackCutIterator iter;
  77. for (iter = mCutCollection->begin(); iter != mCutCollection->end(); iter++) {
  78. (*iter)->eventBegin(ev);
  79. }
  80. }
  81. //_________________
  82. void MpdFemtoMultiTrackCut::eventEnd(const MpdFemtoEvent* ev) {
  83. MpdFemtoTrackCutIterator iter;
  84. for (iter = mCutCollection->begin(); iter != mCutCollection->end(); iter++) {
  85. (*iter)->eventEnd(ev);
  86. }
  87. }
  88. //_________________
  89. void MpdFemtoMultiTrackCut::addTrackCut(MpdFemtoBaseTrackCut* cut) {
  90. mCutCollection->push_back(cut);
  91. }
  92. //_________________
  93. MpdFemtoMultiTrackCut* MpdFemtoMultiTrackCut::clone() {
  94. MpdFemtoMultiTrackCut* cut = this->clone();
  95. return cut;
  96. }