@@ -492,6 +492,152 @@ class O2_GeneratorParamChiC2 : public GeneratorTGenerator
492492 GeneratorParam * paramChiC2 = nullptr ;
493493};
494494
495+ class O2_GeneratorParamJpsiPbPb5TeV : public GeneratorTGenerator
496+ {
497+
498+ public :
499+ O2_GeneratorParamJpsiPbPb5TeV () : GeneratorTGenerator ("ParamJpsi" )
500+ {
501+ paramJpsi = new GeneratorParam (1 , -1 , PtJPsiPbPb5TeV , YJPsiPbPb5TeV , V2JPsiPbPb5TeV , IpJPsiPbPb5TeV );
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_GeneratorParamJpsiPbPb5TeV ()
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 PtJPsiPbPb5TeV (const Double_t * px , const Double_t * /*dummy*/ )
528+ {
529+ // jpsi pT in PbPb, tuned on data (2015) -> Castillo embedding https://alice.its.cern.ch/jira/browse/ALIROOT-8174?jql=text%20~%20%22LHC19a2%22
530+ Double_t x = * px ;
531+ Float_t p0 , p1 , p2 , p3 ;
532+ p0 = 1.00715e6 ;
533+ p1 = 3.50274 ;
534+ p2 = 1.93403 ;
535+ p3 = 3.96363 ;
536+ return p0 * x / TMath ::Power (1. + TMath ::Power (x / p1 , p2 ), p3 );
537+ }
538+
539+ //-------------------------------------------------------------------------//
540+ static Double_t YJPsiPbPb5TeV (const Double_t * py , const Double_t * /*dummy*/ )
541+ {
542+ // jpsi y in PbPb, tuned on data (2015) -> Castillo embedding https://alice.its.cern.ch/jira/browse/ALIROOT-8174?jql=text%20~%20%22LHC19a2%22
543+ Double_t y = * py ;
544+ Float_t p0 , p1 , p2 ;
545+ p0 = 1.09886e6 ;
546+ p1 = 0 ;
547+ p2 = 2.12568 ;
548+ return p0 * TMath ::Exp (- (1. / 2. ) * TMath ::Power (((y - p1 ) / p2 ), 2 ));
549+ }
550+
551+ //-------------------------------------------------------------------------//
552+ static Double_t V2JPsiPbPb5TeV (const Double_t * /*dummy*/ , const Double_t * /*dummy*/ )
553+ {
554+ // jpsi v2
555+ return 0. ;
556+ }
557+
558+ //-------------------------------------------------------------------------//
559+ static Int_t IpJPsiPbPb5TeV (TRandom * )
560+ {
561+ return 443 ;
562+ }
563+
564+ private :
565+ GeneratorParam * paramJpsi = nullptr ;
566+ };
567+
568+ class O2_GeneratorParamPsiPbPb5TeV : public GeneratorTGenerator
569+ {
570+
571+ public :
572+ O2_GeneratorParamPsiPbPb5TeV () : GeneratorTGenerator ("ParamPsi" )
573+ {
574+ paramPsi = new GeneratorParam (1 , -1 , PtPsiPbPb5TeV , YPsiPbPb5TeV , V2PsiPbPb5TeV , IpPsiPbPb5TeV );
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_GeneratorParamPsiPbPb5TeV ()
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 PtPsiPbPb5TeV (const Double_t * px , const Double_t * /*dummy*/ )
601+ {
602+ // jpsi pT in PbPb, tuned on data (2015) -> Castillo embedding https://alice.its.cern.ch/jira/browse/ALIROOT-8174?jql=text%20~%20%22LHC19a2%22
603+ Double_t x = * px ;
604+ Float_t p0 , p1 , p2 , p3 ;
605+ p0 = 1.00715e6 ;
606+ p1 = 3.50274 ;
607+ p2 = 1.93403 ;
608+ p3 = 3.96363 ;
609+ return p0 * x / TMath ::Power (1. + TMath ::Power (x / p1 , p2 ), p3 );
610+ }
611+
612+ //-------------------------------------------------------------------------//
613+ static Double_t YPsiPbPb5TeV (const Double_t * py , const Double_t * /*dummy*/ )
614+ {
615+ // jpsi y in PbPb, tuned on data (2015) -> Castillo embedding https://alice.its.cern.ch/jira/browse/ALIROOT-8174?jql=text%20~%20%22LHC19a2%22
616+ Double_t y = * py ;
617+ Float_t p0 , p1 , p2 ;
618+ p0 = 1.09886e6 ;
619+ p1 = 0 ;
620+ p2 = 2.12568 ;
621+ return p0 * TMath ::Exp (- (1. / 2. ) * TMath ::Power (((y - p1 ) / p2 ), 2 ));
622+ }
623+
624+ //-------------------------------------------------------------------------//
625+ static Double_t V2PsiPbPb5TeV (const Double_t * /*dummy*/ , const Double_t * /*dummy*/ )
626+ {
627+ // jpsi v2
628+ return 0. ;
629+ }
630+
631+ //-------------------------------------------------------------------------//
632+ static Int_t IpPsiPbPb5TeV (TRandom * )
633+ {
634+ return 100443 ;
635+ }
636+
637+ private :
638+ GeneratorParam * paramPsi = nullptr ;
639+ };
640+
495641} // namespace eventgen
496642} // namespace o2
497643
@@ -671,6 +817,32 @@ FairGenerator*
671817 return genCocktailEvtGen ;
672818}
673819
820+ FairGenerator *
821+ GeneratorCocktailPromptCharmoniaToMuonEvtGen_PbPb5TeV ()
822+ {
823+ auto genCocktailEvtGen = new o2 ::eventgen ::GeneratorEvtGen < GeneratorCocktail > ();
824+
825+ auto genJpsi = new o2 ::eventgen ::O2_GeneratorParamJpsiPbPb5TeV ;
826+ genJpsi -> SetNSignalPerEvent (4 ); // 4 J/psi generated per event by GeneratorParam
827+ auto genPsi = new o2 ::eventgen ::O2_GeneratorParamPsiPbPb5TeV ;
828+ genPsi -> SetNSignalPerEvent (2 ); // 2 Psi(2S) generated per event by GeneratorParam
829+ genCocktailEvtGen -> AddGenerator (genJpsi , 1 ); // 2/3 J/psi
830+ genCocktailEvtGen -> AddGenerator (genPsi , 1 ); // 1/3 Psi(2S)
831+
832+ TString pdgs = "443;100443" ;
833+ std ::string spdg ;
834+ TObjArray * obj = pdgs .Tokenize (";" );
835+ genCocktailEvtGen -> SetSizePdg (obj -> GetEntriesFast ());
836+ for (int i = 0 ; i < obj -> GetEntriesFast (); i ++ ) {
837+ spdg = obj -> At (i )-> GetName ();
838+ genCocktailEvtGen -> AddPdg (std ::stoi (spdg ), i );
839+ printf ("PDG %d \n" , std ::stoi (spdg ));
840+ }
841+ genCocktailEvtGen -> SetForceDecay (kEvtDiMuon );
842+
843+ return genCocktailEvtGen ;
844+ }
845+
674846
675847
676848
0 commit comments