MpdUnigenGenerator.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #ifndef MPDUNIGENGENERATOR_H
  2. #define MPDUNIGENGENERATOR_H
  3. #include <iostream>
  4. #include <FairGenerator.h>
  5. #include <FairPrimaryGenerator.h>
  6. #include <FairMCEventHeader.h>
  7. #include <FairRunSim.h>
  8. #include "FairIon.h"
  9. #include "FairParticle.h"
  10. #include <UParticle.h>
  11. #include <UEvent.h>
  12. #include <MpdGenTrackTask.h>
  13. #include <MpdGenTrack.h>
  14. #include <TString.h>
  15. #include <TTree.h>
  16. #include <TFile.h>
  17. #include <TClonesArray.h>
  18. #include <TRandom.h>
  19. #include <TDatabasePDG.h>
  20. #include <TParticlePDG.h>
  21. class TVirtualMCStack;
  22. class FairPrimaryGenerator;
  23. class MpdUnigenGenerator : public FairGenerator {
  24. public:
  25. MpdUnigenGenerator();
  26. MpdUnigenGenerator(TString fileName, Bool_t isSpectator = kFALSE);
  27. ~MpdUnigenGenerator();
  28. Bool_t ReadEvent(FairPrimaryGenerator* primGen);
  29. Int_t RegisterIons(void);
  30. void SkipEvents(Int_t ev) {
  31. fEventNumber = ev;
  32. cout << "NUMBER OF SKIPPED EVENTS = " << ev << endl;
  33. }
  34. void SetEventPlane(Double_t phiMin, Double_t phiMax) {
  35. fPhiMin = phiMin;
  36. fPhiMax = phiMax;
  37. fEventPlaneSet = kTRUE;
  38. }
  39. private:
  40. Long64_t fEventNumber; //!
  41. TFile *fInFile;
  42. TTree *fInTree;
  43. UEvent *fEvent;
  44. UParticle *fParticle;
  45. Bool_t fSpectatorsON;
  46. Double_t fPhiMin, fPhiMax; // Limits of event plane angle
  47. Bool_t fEventPlaneSet; // Flag whether event plane angle is used
  48. std::map<TString, FairIon*> fIonMap; //!< Map from ion name to FairIon
  49. static const Int_t kPdgLambda = 10000000;
  50. static const Int_t kPdgCharge = 10000;
  51. static const Int_t kPdgMass = 10;
  52. Int_t GetIonCharge(Int_t pdgCode) const { return (pdgCode % kPdgLambda) / kPdgCharge; }
  53. Int_t GetIonLambdas(Int_t pdgCode) { return (pdgCode % (10 * kPdgLambda)) / kPdgLambda; }
  54. Int_t GetIonMass(Int_t pdgCode) { return (pdgCode % kPdgCharge) / kPdgMass; }
  55. MpdUnigenGenerator(const MpdUnigenGenerator&);
  56. MpdUnigenGenerator& operator=(const MpdUnigenGenerator&);
  57. ClassDef(MpdUnigenGenerator, 1);
  58. };
  59. #endif