MpdVHLLEGenerator.cxx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "MpdVHLLEGenerator.h"
  2. MpdVHLLEGenerator::MpdVHLLEGenerator()
  3. : FairGenerator(),
  4. fInputFile(NULL),
  5. fFileName("") ,
  6. fFreezout(NULL){
  7. }
  8. MpdVHLLEGenerator::MpdVHLLEGenerator(TString fileName, Bool_t isCascade)
  9. : FairGenerator(),
  10. fInputFile(NULL),
  11. fFileName(fileName),
  12. fFreezout(NULL){
  13. // fFileName = fileName;
  14. cout << "-I MpdVHLLEGenerator: Opening input file " << fFileName << endl;
  15. fInputFile = new TFile(fFileName.Data());
  16. if (!fInputFile) {
  17. Fatal("MpdVHLLEGenerator", "Cannot open input file.");
  18. exit(1);
  19. }
  20. SetCascade(isCascade);
  21. cout << "ACTIVATED BRANCH IS: " << fBranch << endl;
  22. fDstTree = new TChain(fBranch.Data());
  23. fDstTree->Add(fFileName);
  24. fDstTree->SetBranchAddress("px", fPx);
  25. fDstTree->SetBranchAddress("py", fPy);
  26. fDstTree->SetBranchAddress("pz", fPz);
  27. fDstTree->SetBranchAddress("x", fX);
  28. fDstTree->SetBranchAddress("y", fY);
  29. fDstTree->SetBranchAddress("z", fZ);
  30. fDstTree->SetBranchAddress("E", fE);
  31. fDstTree->SetBranchAddress("t", fT);
  32. fDstTree->SetBranchAddress("npart", &fNpart);
  33. fDstTree->SetBranchAddress("id", fPID);
  34. fEventNumber = 0;
  35. MpdFreezoutGenerator *freezgen = MpdFreezoutGenerator::Instance();
  36. fFreezout = freezgen->GetArray();
  37. }
  38. MpdVHLLEGenerator::~MpdVHLLEGenerator() {
  39. delete fInputFile;
  40. delete fDstTree;
  41. }
  42. Bool_t MpdVHLLEGenerator::ReadEvent(FairPrimaryGenerator* primGen) {
  43. // ---> Check for input file
  44. if (!fInputFile) {
  45. cout << "-E MpdVHLLEGenerator: Input file not open! " << endl;
  46. return kFALSE;
  47. }
  48. // ---> Check for primary generator
  49. if (!primGen) {
  50. cout << "-E- MpdVHLLEGenerator::ReadEvent: "
  51. << "No PrimaryGenerator!" << endl;
  52. return kFALSE;
  53. }
  54. fDstTree->GetEntry(fEventNumber);
  55. cout << "-I MpdVHLLEGenerator: Event " << fEventNumber << " Multiplicity " << fNpart << endl;
  56. FairMCEventHeader* event = primGen->GetEvent();
  57. if (event && (!event->IsSet())) {
  58. event->SetEventID(fEventNumber);
  59. // event->SetB(b);
  60. event->MarkSet(kTRUE);
  61. }
  62. fFreezout->Clear();
  63. for (Int_t iTrack = 0; iTrack < fNpart; iTrack++) {
  64. primGen->AddTrack(fPID[iTrack], fPx[iTrack], fPy[iTrack], fPz[iTrack], 0.0, 0.0, 0.0);
  65. TLorentzVector *freezpos = (TLorentzVector*)fFreezout->ConstructedAt(iTrack);
  66. freezpos->SetXYZT(fX[iTrack],fY[iTrack],fZ[iTrack],fT[iTrack]);
  67. // cout << iTrack << " " << fPID[iTrack] << " " <<
  68. // fPx[iTrack] << " " << fPy[iTrack] << " " << fPz[iTrack] << " " <<
  69. // fX[iTrack] << " " << fY[iTrack] << " " << fZ[iTrack] << endl;
  70. }
  71. fEventNumber++;
  72. return kTRUE;
  73. }
  74. ClassImp(MpdVHLLEGenerator);