FairPlutoReactionGenerator.cxx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // -------------------------------------------------------------------------
  2. // ----- FairPlutoReactionGenerator header file -----
  3. // ----- Created 05/07/08 by I. Froehlich -----
  4. // -------------------------------------------------------------------------
  5. #include "FairPlutoReactionGenerator.h"
  6. #include "FairPrimaryGenerator.h"
  7. #include "TClonesArray.h"
  8. #include "TDatabasePDG.h"
  9. #include "TFile.h"
  10. #include "TLorentzVector.h"
  11. #include "TTree.h"
  12. #include "TVector3.h"
  13. #include <iostream>
  14. // ----- Default constructor ------------------------------------------
  15. FairPlutoReactionGenerator::FairPlutoReactionGenerator()
  16. {
  17. iEvent = 0;
  18. fReaction = NULL;
  19. #ifdef PLUTOVERSION_FOR_FAIR
  20. fPlutoFairGenerator = NULL;
  21. #endif
  22. }
  23. // ------------------------------------------------------------------------
  24. // ----- Standard constructor -----------------------------------------
  25. FairPlutoReactionGenerator::FairPlutoReactionGenerator(PReaction* reaction)
  26. {
  27. iEvent = 0;
  28. fReaction = reaction;
  29. #ifdef PLUTOVERSION_FOR_FAIR
  30. fPlutoFairGenerator = new PFairGenerator();
  31. if (!reaction) {
  32. std::cout << "-E FairPlutoReactionGenerator: No PReaction!" << std::endl;
  33. } else {
  34. reaction->AddBulk(fPlutoFairGenerator);
  35. reaction->IsInline();
  36. }
  37. #else
  38. std::cout << "-E FairPlutoReactionGenerator: You are using the wrong Pluto version" << std::endl;
  39. #endif
  40. }
  41. // ------------------------------------------------------------------------
  42. // ----- Destructor ---------------------------------------------------
  43. FairPlutoReactionGenerator::~FairPlutoReactionGenerator()
  44. {
  45. #ifdef PLUTOVERSION_FOR_FAIR
  46. if (fPlutoFairGenerator) { delete fPlutoFairGenerator; }
  47. #endif
  48. }
  49. // ------------------------------------------------------------------------
  50. // ----- Public method ReadEvent --------------------------------------
  51. Bool_t FairPlutoReactionGenerator::ReadEvent(FairPrimaryGenerator* primGen)
  52. {
  53. #ifdef PLUTOVERSION_FOR_FAIR
  54. // Check for input file
  55. if ( ! fReaction ) {
  56. cout << "-E FairPlutoReactionGenerator: No PReaction!" << endl;
  57. return kFALSE;
  58. }
  59. fReaction->InitChannels();
  60. fReaction->DisableWeightReset();
  61. if (!fReaction->loop(1,0,0)) { return kFALSE; }
  62. Double_t px, py, pz, vx, vy, vz;
  63. Int_t pdgType;
  64. while (fPlutoFairGenerator->GetNextParticle(&pdgType, &px, &py, &pz, &vx, &vy, &vz)) {
  65. if (pdgType) {
  66. primGen->AddTrack(pdgType, px, py, pz, vx, vy, vz);
  67. }
  68. }
  69. return kTRUE;
  70. #else
  71. return kFALSE;
  72. #endif
  73. }
  74. // ------------------------------------------------------------------------
  75. ClassImp(FairPlutoReactionGenerator)