@@ -492,6 +492,152 @@ class O2_GeneratorParamChiC2 : public GeneratorTGenerator
492492 GeneratorParam* paramChiC2 = nullptr;
493493};
494494
495+ class O2_GeneratorParamJpsipp5TeV : public GeneratorTGenerator
496+ {
497+
498+ public:
499+ O2_GeneratorParamJpsipp5TeV() : GeneratorTGenerator("ParamJpsi")
500+ {
501+ paramJpsi = new GeneratorParam(1, -1, PtJPsipp5TeV, YJPsipp5TeV, V2JPsipp5TeV, IpJPsipp5TeV);
502+ paramJpsi->SetMomentumRange(0., 1.e6);
503+ paramJpsi->SetPtRange(0, 999.);
504+ paramJpsi->SetYRange(-4.2, -2.3);
505+ paramJpsi->SetPhiRange(0., 360.);
506+ paramJpsi->SetDecayer(new TPythia6Decayer());
507+ paramJpsi->SetForceDecay(kNoDecay); // particle left undecayed
508+ // - - paramJpsi->SetTrackingFlag(1); // (from AliGenParam) -> check this
509+ setTGenerator(paramJpsi);
510+ };
511+
512+ ~O2_GeneratorParamJpsipp5TeV()
513+ {
514+ delete paramJpsi;
515+ };
516+
517+ Bool_t Init() override
518+ {
519+ GeneratorTGenerator::Init();
520+ paramJpsi->Init();
521+ return true;
522+ }
523+
524+ void SetNSignalPerEvent(Int_t nsig) { paramJpsi->SetNumberParticles(nsig); }
525+
526+ //-------------------------------------------------------------------------//
527+ static Double_t PtJPsipp5TeV(const Double_t* px, const Double_t* /*dummy*/)
528+ {
529+ // jpsi pT in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
530+ Double_t x = *px;
531+ Float_t p0, p1, p2, p3;
532+ p0 = 1;
533+ p1 = 4.30923;
534+ p2 = 1.82061;
535+ p3 = 4.37563;
536+ return p0 * x / TMath::Power(1. + TMath::Power(x / p1, p2), p3);
537+ }
538+
539+ //-------------------------------------------------------------------------//
540+ static Double_t YJPsipp5TeV(const Double_t* py, const Double_t* /*dummy*/)
541+ {
542+ // jpsi y in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
543+ Double_t y = *py;
544+ Float_t p0, p1, p2;
545+ p0 = 1;
546+ p1 = 0.0338222;
547+ p2 = 2.96748;
548+ return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2));
549+ }
550+
551+ //-------------------------------------------------------------------------//
552+ static Double_t V2JPsipp5TeV(const Double_t* /*dummy*/, const Double_t* /*dummy*/)
553+ {
554+ // jpsi v2
555+ return 0.;
556+ }
557+
558+ //-------------------------------------------------------------------------//
559+ static Int_t IpJPsipp5TeV(TRandom*)
560+ {
561+ return 443;
562+ }
563+
564+ private:
565+ GeneratorParam* paramJpsi = nullptr;
566+ };
567+
568+ class O2_GeneratorParamPsipp5TeV : public GeneratorTGenerator
569+ {
570+
571+ public:
572+ O2_GeneratorParamPsipp5TeV() : GeneratorTGenerator("ParamPsi")
573+ {
574+ paramPsi = new GeneratorParam(1, -1, PtPsipp5TeV, YPsipp5TeV, V2Psipp5TeV, IpPsipp5TeV);
575+ paramPsi->SetMomentumRange(0., 1.e6);
576+ paramPsi->SetPtRange(0, 999.);
577+ paramPsi->SetYRange(-4.2, -2.3);
578+ paramPsi->SetPhiRange(0., 360.);
579+ paramPsi->SetDecayer(new TPythia6Decayer());
580+ paramPsi->SetForceDecay(kNoDecay); // particle left undecayed
581+ // - - paramJpsi->SetTrackingFlag(1); // check this
582+ setTGenerator(paramPsi);
583+ };
584+
585+ ~O2_GeneratorParamPsipp5TeV()
586+ {
587+ delete paramPsi;
588+ };
589+
590+ Bool_t Init() override
591+ {
592+ GeneratorTGenerator::Init();
593+ paramPsi->Init();
594+ return true;
595+ }
596+
597+ void SetNSignalPerEvent(Int_t nsig) { paramPsi->SetNumberParticles(nsig); }
598+
599+ //-------------------------------------------------------------------------//
600+ static Double_t PtPsipp5TeV(const Double_t* px, const Double_t* /*dummy*/)
601+ {
602+ // psi2s pT in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
603+ Double_t x = *px;
604+ Float_t p0, p1, p2, p3;
605+ p0 = 1;
606+ p1 = 2.6444;
607+ p2 = 6.17572;
608+ p3 = 0.701753;
609+ return p0 * x / TMath::Power(1. + TMath::Power(x / p1, p2), p3);
610+ }
611+
612+ //-------------------------------------------------------------------------//
613+ static Double_t YPsipp5TeV(const Double_t* py, const Double_t* /*dummy*/)
614+ {
615+ // psi2s y in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
616+ Double_t y = *py;
617+ Float_t p0, p1, p2;
618+ p0 = 1;
619+ p1 = -17.4857;
620+ p2 = 2.98887;
621+ return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2));
622+ }
623+
624+ //-------------------------------------------------------------------------//
625+ static Double_t V2Psipp5TeV(const Double_t* /*dummy*/, const Double_t* /*dummy*/)
626+ {
627+ // jpsi v2
628+ return 0.;
629+ }
630+
631+ //-------------------------------------------------------------------------//
632+ static Int_t IpPsipp5TeV(TRandom*)
633+ {
634+ return 100443;
635+ }
636+
637+ private:
638+ GeneratorParam* paramPsi = nullptr;
639+ };
640+
495641class O2_GeneratorParamJpsiPbPb5TeV : public GeneratorTGenerator
496642{
497643
@@ -815,9 +961,9 @@ FairGenerator* GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp5TeV()
815961
816962 auto genCocktailEvtGen = new o2::eventgen::GeneratorEvtGen<GeneratorCocktail>();
817963
818- auto genJpsi = new o2::eventgen::O2_GeneratorParamJpsiFwdY ;
964+ auto genJpsi = new o2::eventgen::O2_GeneratorParamJpsipp5TeV ;
819965 genJpsi->SetNSignalPerEvent(1); // 1 J/psi generated per event by GeneratorParam
820- auto genPsi = new o2::eventgen::O2_GeneratorParamPsiFwdY ;
966+ auto genPsi = new o2::eventgen::O2_GeneratorParamPsipp5TeV ;
821967 genPsi->SetNSignalPerEvent(1); // 1 Psi(2S) generated per event by GeneratorParam
822968 genCocktailEvtGen->AddGenerator(genJpsi, 1); // add J/psi generator
823969 genCocktailEvtGen->AddGenerator(genPsi, 1); // add Psi(2S) generator
0 commit comments