@@ -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