@@ -787,6 +787,153 @@ class O2_GeneratorParamPsipp5TeV : public GeneratorTGenerator
787787 GeneratorParam * paramPsi = nullptr ;
788788};
789789
790+ class O2_GeneratorParamJpsipp96TeV : public GeneratorTGenerator
791+ {
792+
793+ public :
794+ O2_GeneratorParamJpsipp96TeV () : GeneratorTGenerator ("ParamJpsi" )
795+ {
796+ paramJpsi = new GeneratorParam (1 , -1 , PtJPsipp96TeV , YJPsipp96TeV , V2JPsipp96TeV , IpJPsipp96TeV );
797+ paramJpsi -> SetMomentumRange (0. , 1.e6 );
798+ paramJpsi -> SetPtRange (0 , 999. );
799+ paramJpsi -> SetYRange (-4.2 , -2.3 );
800+ paramJpsi -> SetPhiRange (0. , 360. );
801+ paramJpsi -> SetDecayer (new TPythia6Decayer ());
802+ paramJpsi -> SetForceDecay (kNoDecay ); // particle left undecayed
803+ // - - paramJpsi->SetTrackingFlag(1); // (from AliGenParam) -> check this
804+ setTGenerator (paramJpsi );
805+ };
806+
807+ ~O2_GeneratorParamJpsipp96TeV ()
808+ {
809+ delete paramJpsi ;
810+ };
811+
812+ Bool_t Init () override
813+ {
814+ GeneratorTGenerator ::Init ();
815+ paramJpsi -> Init ();
816+ return true;
817+ }
818+
819+ void SetNSignalPerEvent (Int_t nsig ) { paramJpsi -> SetNumberParticles (nsig ); }
820+
821+ //-------------------------------------------------------------------------//
822+ static Double_t PtJPsipp96TeV (const Double_t * px , const Double_t * /*dummy*/ )
823+ {
824+ // Parameters extrapolated linearly between 5 TeV and 13 TeV as a function of log(sqrt(s))
825+ Double_t x = * px ;
826+ Float_t p0 , p1 , p2 , p3 ;
827+ p0 = 1 ;
828+ p1 = 4.61097 ;
829+ p2 = 1.7333 ;
830+ p3 = 4.45508 ;
831+ return p0 * x / TMath ::Power (1. + TMath ::Power (x / p1 , p2 ), p3 );
832+ }
833+
834+ //-------------------------------------------------------------------------//
835+ static Double_t YJPsipp96TeV (const Double_t * py , const Double_t * /*dummy*/ )
836+ {
837+ // Parameters extrapolated linearly between 5 TeV and 13 TeV as a function of log(sqrt(s))
838+ Double_t y = * py ;
839+ Float_t p0 , p1 , p2 ;
840+ p0 = 1 ;
841+ p1 = 0.0107769 ;
842+ p2 = 2.98205 ;
843+ return p0 * TMath ::Exp (- (1. / 2. ) * TMath ::Power (((y - p1 ) / p2 ), 2 ));
844+ }
845+
846+ //-------------------------------------------------------------------------//
847+ static Double_t V2JPsipp96TeV (const Double_t * /*dummy*/ , const Double_t * /*dummy*/ )
848+ {
849+ // jpsi v2
850+ return 0. ;
851+ }
852+
853+ //-------------------------------------------------------------------------//
854+ static Int_t IpJPsipp96TeV (TRandom * )
855+ {
856+ return 443 ;
857+ }
858+
859+ private :
860+ GeneratorParam * paramJpsi = nullptr ;
861+ };
862+
863+ class O2_GeneratorParamPsipp96TeV : public GeneratorTGenerator
864+ {
865+
866+ public :
867+ O2_GeneratorParamPsipp96TeV () : GeneratorTGenerator ("ParamPsi" )
868+ {
869+ paramPsi = new GeneratorParam (1 , -1 , PtPsipp96TeV , YPsipp96TeV , V2Psipp96TeV , IpPsipp96TeV );
870+ paramPsi -> SetMomentumRange (0. , 1.e6 );
871+ paramPsi -> SetPtRange (0 , 999. );
872+ paramPsi -> SetYRange (-4.2 , -2.3 );
873+ paramPsi -> SetPhiRange (0. , 360. );
874+ paramPsi -> SetDecayer (new TPythia6Decayer ());
875+ paramPsi -> SetForceDecay (kNoDecay ); // particle left undecayed
876+ // - - paramJpsi->SetTrackingFlag(1); // check this
877+ setTGenerator (paramPsi );
878+ };
879+
880+ ~O2_GeneratorParamPsipp96TeV ()
881+ {
882+ delete paramPsi ;
883+ };
884+
885+ Bool_t Init () override
886+ {
887+ GeneratorTGenerator ::Init ();
888+ paramPsi -> Init ();
889+ return true;
890+ }
891+
892+ void SetNSignalPerEvent (Int_t nsig ) { paramPsi -> SetNumberParticles (nsig ); }
893+
894+ //-------------------------------------------------------------------------//
895+ static Double_t PtPsipp96TeV (const Double_t * px , const Double_t * /*dummy*/ )
896+ {
897+ // Taking same parameters as Psi(2S) at 13 TeV
898+ Double_t x = * px ;
899+ Float_t p0 , p1 , p2 , p3 ;
900+ p0 = 1 ;
901+ p1 = 4.75208 ;
902+ p2 = 1.69247 ;
903+ p3 = 4.49224 ;
904+ return p0 * x / TMath ::Power (1. + TMath ::Power (x / p1 , p2 ), p3 );
905+ }
906+
907+ //-------------------------------------------------------------------------//
908+ static Double_t YPsipp96TeV (const Double_t * py , const Double_t * /*dummy*/ )
909+ {
910+ // Taking same parameters as Psi(2S) at 13 TeV
911+ Double_t y = * py ;
912+ Float_t p0 , p1 , p2 ;
913+ p0 = 1 ;
914+ p1 = 0 ;
915+ p2 = 2.98887 ;
916+ return p0 * TMath ::Exp (- (1. / 2. ) * TMath ::Power (((y - p1 ) / p2 ), 2 ));
917+ }
918+
919+ //-------------------------------------------------------------------------//
920+ static Double_t V2Psipp96TeV (const Double_t * /*dummy*/ , const Double_t * /*dummy*/ )
921+ {
922+ // jpsi v2
923+ return 0. ;
924+ }
925+
926+ //-------------------------------------------------------------------------//
927+ static Int_t IpPsipp96TeV (TRandom * )
928+ {
929+ return 100443 ;
930+ }
931+
932+ private :
933+ GeneratorParam * paramPsi = nullptr ;
934+ };
935+
936+
790937class O2_GeneratorParamJpsiPbPb5TeV : public GeneratorTGenerator
791938{
792939
@@ -1131,6 +1278,33 @@ FairGenerator* GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp5TeV()
11311278 return genCocktailEvtGen ;
11321279}
11331280
1281+ FairGenerator * GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp96TeV ()
1282+ {
1283+
1284+ auto genCocktailEvtGen = new o2 ::eventgen ::GeneratorEvtGen < GeneratorCocktail > ();
1285+
1286+ auto genJpsi = new o2 ::eventgen ::O2_GeneratorParamJpsipp96TeV ;
1287+ genJpsi -> SetNSignalPerEvent (1 ); // 1 J/psi generated per event by GeneratorParam
1288+ auto genPsi = new o2 ::eventgen ::O2_GeneratorParamPsipp96TeV ;
1289+ genPsi -> SetNSignalPerEvent (1 ); // 1 Psi(2S) generated per event by GeneratorParam
1290+ genCocktailEvtGen -> AddGenerator (genJpsi , 1 ); // add J/psi generator
1291+ genCocktailEvtGen -> AddGenerator (genPsi , 1 ); // add Psi(2S) generator
1292+
1293+ TString pdgs = "443;100443" ;
1294+ std ::string spdg ;
1295+ TObjArray * obj = pdgs .Tokenize (";" );
1296+ genCocktailEvtGen -> SetSizePdg (obj -> GetEntriesFast ());
1297+ for (int i = 0 ; i < obj -> GetEntriesFast (); i ++ ) {
1298+ spdg = obj -> At (i )-> GetName ();
1299+ genCocktailEvtGen -> AddPdg (std ::stoi (spdg ), i );
1300+ printf ("PDG %d \n" , std ::stoi (spdg ));
1301+ }
1302+ genCocktailEvtGen -> SetForceDecay (kEvtDiMuon );
1303+
1304+ return genCocktailEvtGen ;
1305+ }
1306+
1307+
11341308FairGenerator * GeneratorCocktailPromptCharmoniaToElectronEvtGen_pp5TeV ()
11351309{
11361310
0 commit comments