TpcLheTrack.cxx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #include "TpcLheHit.h"
  2. #include "TpcLheTrack.h"
  3. #include "TClonesArray.h"
  4. #include "Riostream.h"
  5. #include <iomanip>
  6. using namespace std;
  7. ////////////////////////////////////////////////////////////////////////
  8. // //
  9. // TpcLheTrack class - track representation for the LHE //
  10. // //
  11. ////////////////////////////////////////////////////////////////////////
  12. ClassImp(TpcLheTrack)
  13. //______________________________________________________________
  14. TpcLheTrack::TpcLheTrack () {
  15. // Default constructor.
  16. SetDefaults();
  17. }
  18. //______________________________________________________________
  19. TpcLheTrack::TpcLheTrack (Int_t tracknumber) {
  20. // the track number is set.
  21. // cout << " TpcLheTrack (tracknumber)" << endl;
  22. SetDefaults();
  23. SetTrackNumber(tracknumber);
  24. }
  25. //______________________________________________________________
  26. TpcLheTrack ::~TpcLheTrack () {
  27. // Destructor.
  28. // cout << " Destructor for LheTrack" << endl;
  29. if (fRealHits) { //fRealHits->Delete();} //;
  30. delete fRealHits;
  31. fRealHits = NULL;
  32. }
  33. }
  34. //___________________________________________________________
  35. void TpcLheTrack ::SetDefaults() {
  36. // Default setup for the track.
  37. // fRealHits = new TRefArray();
  38. fRealHits = new TObjArray(0);
  39. fTrackNumber = -1;
  40. SetPid(0);
  41. ComesFromMainVertex(kFALSE);
  42. fP.SetX(0.);
  43. fP.SetY(0.);
  44. fP.SetZ(0.);
  45. fVertex.SetX(0.);
  46. fVertex.SetY(0.);
  47. fVertex.SetZ(0.);
  48. fQ = 0;
  49. }
  50. //______________________________________________________________
  51. void TpcLheTrack ::SetTrackNumber(Int_t number) {
  52. // Sets the tracknumber for track.
  53. fTrackNumber = number;
  54. }
  55. //______________________________________________________________
  56. void TpcLheTrack::SetVertex(Double_t vx, Double_t vy, Double_t vz) {
  57. fVertex.SetX(vx);
  58. fVertex.SetY(vy);
  59. fVertex.SetZ(vz);
  60. }
  61. //______________________________________________________________
  62. void TpcLheTrack::SetCircle(Double_t x, Double_t y, Double_t r) {
  63. fCircle.SetX(x);
  64. fCircle.SetY(y);
  65. fCircle.SetZ(r);
  66. }
  67. //______________________________________________________________
  68. void TpcLheTrack::AddHit(TpcLheHit* point) {
  69. // Adds a hit to the track.
  70. fRealHits->AddLast(point);
  71. // point->SetUsage(kTRUE);
  72. }
  73. //______________________________________________________________
  74. void TpcLheTrack::PrintHits() {
  75. //
  76. Int_t nhit = fRealHits->GetEntries();
  77. TpcLheHit * ghit = NULL;
  78. for (Int_t j=0; j < nhit; j++) {
  79. ghit = (TpcLheHit *) fRealHits->At(j);
  80. cout << " " << ghit->GetTrackID();
  81. }
  82. cout << endl;
  83. }
  84. //______________________________________________________________
  85. void TpcLheTrack::Print() {
  86. //
  87. Int_t nhit = fRealHits->GetEntries();
  88. cout << "\n Track " << fTrackNumber << " nhits " << nhit;
  89. cout << " pdg " << fPid;
  90. cout << " primary " << fFromMainVertex << endl;
  91. cout << " vertex XYZ: " << setw(5) << fVertex.GetX();
  92. cout << " " << setw(5) << fVertex.GetY();
  93. cout << " " << setw(5) << fVertex.GetZ();
  94. cout << " Pxyz: ";
  95. cout.precision(3);
  96. cout << " " << setw(7) << fP.X();
  97. cout << " " << setw(7) << fP.Y();
  98. cout << " " << setw(7) << fP.Z();
  99. cout << endl;
  100. TpcLheHit * ghit = NULL;
  101. for (Int_t j=0; j<nhit; j++) {
  102. ghit = (TpcLheHit *) fRealHits->At(j);
  103. ghit->Print();
  104. }
  105. }