@@ -201,11 +201,11 @@ class O2_GeneratorParamJpsiMidY_5TeV : public GeneratorTGenerator
201201 //-------------------------------------------------------------------------//
202202 static Double_t PtJPsipp5TeV (const Double_t * px , const Double_t * /*dummy*/ )
203203 {
204- // JPSi pt at 5.02 TeV: https: // www.hepdata.net/record/ins1735351
204+ // JPSi pt at 5.02 TeV: https: // https:// www.hepdata.net/record/ins1899703 (2108.02523)
205205 //
206- const Double_t kC = 1774.9 ;
207- const Double_t kpt0 = 3.38452 ;
208- const Double_t kn = 2.77889 ;
206+ const Double_t kC = 1.10642 ;
207+ const Double_t kpt0 = 4.5504 ;
208+ const Double_t kn = 3.58669 ;
209209 Double_t pt = px [0 ];
210210
211211 return kC * pt / TMath ::Power ((1. + (pt / kpt0 ) * (pt / kpt0 )), kn );
@@ -272,11 +272,11 @@ class O2_GeneratorParamPsiMidY_5TeV : public GeneratorTGenerator
272272 //-------------------------------------------------------------------------//
273273 static Double_t PtPsipp5TeV (const Double_t * px , const Double_t * /*dummy*/ )
274274 {
275- // Same as JPsi at 5.02 TeV since ratio is almost flat in pT: https: // www.hepdata.net/record/ins1735351
275+ // Same as JPsi at 5.02 TeV since ratio is almost flat in pT
276276 //
277- const Double_t kC = 1774.9 ;
278- const Double_t kpt0 = 3.38452 ;
279- const Double_t kn = 2.77889 ;
277+ const Double_t kC = 1.10642 ;
278+ const Double_t kpt0 = 4.55041 ;
279+ const Double_t kn = 3.58669 ;
280280 Double_t pt = px [0 ];
281281
282282 return kC * pt / TMath ::Power ((1. + (pt / kpt0 ) * (pt / kpt0 )), kn );
@@ -311,6 +311,151 @@ class O2_GeneratorParamPsiMidY_5TeV : public GeneratorTGenerator
311311 GeneratorParam * paramPsi = nullptr ;
312312};
313313
314+ //====================================================================================================
315+ class O2_GeneratorParamJpsiMidY_96TeV : public GeneratorTGenerator
316+ {
317+
318+ public :
319+ O2_GeneratorParamJpsiMidY_96TeV () : GeneratorTGenerator ("paramJpsi" )
320+ {
321+ paramJpsi = new GeneratorParam (1 , -1 , PtJPsipp96TeV , YJPsipp96TeV , V2JPsipp96TeV , IpJPsipp96TeV );
322+ paramJpsi -> SetMomentumRange (0. , 1.e6 );
323+ paramJpsi -> SetPtRange (0. , 1000. );
324+ paramJpsi -> SetYRange (-1.0 , 1.0 );
325+ paramJpsi -> SetPhiRange (0. , 360. );
326+ paramJpsi -> SetDecayer (new TPythia6Decayer ()); // Pythia
327+ paramJpsi -> SetForceDecay (kNoDecay ); // particle left undecayed
328+ setTGenerator (paramJpsi );
329+ };
330+
331+ ~O2_GeneratorParamJpsiMidY_96TeV ()
332+ {
333+ delete paramJpsi ;
334+ };
335+
336+ Bool_t Init () override
337+ {
338+ GeneratorTGenerator ::Init ();
339+ paramJpsi -> Init ();
340+ return true;
341+ }
342+
343+ void SetNSignalPerEvent (Int_t nsig ) { paramJpsi -> SetNumberParticles (nsig ); }
344+
345+ //-------------------------------------------------------------------------//
346+ static Double_t PtJPsipp96TeV (const Double_t * px , const Double_t * /*dummy*/ )
347+ {
348+ // JPSi pt extrapolated at 9.6 TeV: https: // https://www.hepdata.net/record/ins1899703 (2108.02523)
349+ //
350+ const Double_t kC = 1.48862 ;
351+ const Double_t kpt0 = 4.64005
352+ const Double_t kn = 3.57353 ;
353+ Double_t pt = px [0 ];
354+
355+ return kC * pt / TMath ::Power ((1. + (pt / kpt0 ) * (pt / kpt0 )), kn );
356+ }
357+
358+ //-------------------------------------------------------------------------//
359+ static Double_t YJPsipp96TeV (const Double_t * py , const Double_t * /*dummy*/ )
360+ {
361+ // Taken the same as: jpsi y in pp at 13 TeV, tuned on data, prompt jpsi ALICE+LHCb, 13 TeV
362+ Double_t y = * py ;
363+ Float_t p0 , p1 , p2 ;
364+ p0 = 7.79382e+00 ;
365+ p1 = 2.87827e-06 ;
366+ p2 = 4.41847e+00 ;
367+ return p0 * TMath ::Exp (- (1. / 2. ) * TMath ::Power (((y - p1 ) / p2 ), 2 ));
368+ }
369+
370+ //-------------------------------------------------------------------------//
371+ static Double_t V2JPsipp96TeV (const Double_t * /*dummy*/ , const Double_t * /*dummy*/ )
372+ {
373+ // jpsi v2
374+ return 0. ;
375+ }
376+
377+ //-------------------------------------------------------------------------//
378+ static Int_t IpJPsipp96TeV (TRandom * )
379+ {
380+ return 443 ;
381+ }
382+
383+ private :
384+ GeneratorParam * paramJpsi = nullptr ;
385+ };
386+
387+ class O2_GeneratorParamPsiMidY_96TeV : public GeneratorTGenerator
388+ {
389+
390+ public :
391+ O2_GeneratorParamPsiMidY_96TeV () : GeneratorTGenerator ("ParamPsi" )
392+ {
393+ paramPsi = new GeneratorParam (1 , -1 , PtPsipp96TeV , YPsipp96TeV , V2Psipp96TeV , IpPsipp96TeV );
394+ paramPsi -> SetMomentumRange (0. , 1.e6 ); // Momentum range added from me
395+ paramPsi -> SetPtRange (0. , 1000. ); // transverse of momentum range
396+ paramPsi -> SetYRange (-1.0 , 1.0 ); // rapidity range
397+ paramPsi -> SetPhiRange (0. , 360. ); // phi range
398+ paramPsi -> SetDecayer (new TPythia6Decayer ()); // Pythia decayer
399+ paramPsi -> SetForceDecay (kNoDecay ); // particle left undecayed
400+ setTGenerator (paramPsi ); // Setting parameters to ParamPsi for Psi(2S)
401+ };
402+
403+ ~O2_GeneratorParamPsiMidY_96TeV ()
404+ {
405+ delete paramPsi ;
406+ };
407+
408+ Bool_t Init () override
409+ {
410+ GeneratorTGenerator ::Init ();
411+ paramPsi -> Init ();
412+ return true;
413+ }
414+ void SetNSignalPerEvent (Int_t nsig ) { paramPsi -> SetNumberParticles (nsig ); }
415+
416+ //-------------------------------------------------------------------------//
417+ static Double_t PtPsipp96TeV (const Double_t * px , const Double_t * /*dummy*/ )
418+ {
419+ // Same as JPsi at JPSi pt extrapolated at 9.6 TeV (since ratio is almost flat in pT)
420+ //
421+ //
422+ const Double_t kC = 1.48862 ;
423+ const Double_t kpt0 = 4.64005
424+ const Double_t kn = 3.57353 ;
425+ Double_t pt = px [0 ];
426+
427+ return kC * pt / TMath ::Power ((1. + (pt / kpt0 ) * (pt / kpt0 )), kn );
428+ }
429+
430+ //-------------------------------------------------------------------------//
431+ static Double_t YPsipp96TeV (const Double_t * py , const Double_t * /*dummy*/ )
432+ {
433+ // Taken same as jpsi y in pp at 13 TeV, tuned on data, prompt jpsi ALICE+LHCb, 13 TeV
434+ Double_t y = * py ;
435+ Float_t p0 , p1 , p2 ;
436+ p0 = 7.79382e+00 ;
437+ p1 = 2.87827e-06 ;
438+ p2 = 4.41847e+00 ;
439+ return p0 * TMath ::Exp (- (1. / 2. ) * TMath ::Power (((y - p1 ) / p2 ), 2 ));
440+ }
441+
442+ //-------------------------------------------------------------------------//
443+ static Double_t V2Psipp96TeV (const Double_t * /*dummy*/ , const Double_t * /*dummy*/ )
444+ {
445+ // jpsi v2
446+ return 0. ;
447+ }
448+
449+ //-------------------------------------------------------------------------//
450+ static Int_t IpPsipp96TeV (TRandom * )
451+ {
452+ return 100443 ;
453+ }
454+
455+ private :
456+ GeneratorParam * paramPsi = nullptr ;
457+ };
458+ //====================================================================================================
314459class O2_GeneratorParamJpsiFwdY : public GeneratorTGenerator
315460{
316461
@@ -1331,6 +1476,32 @@ FairGenerator* GeneratorCocktailPromptCharmoniaToElectronEvtGen_pp5TeV()
13311476 return genCocktailEvtGen ;
13321477}
13331478
1479+ FairGenerator * GeneratorCocktailPromptCharmoniaToElectronEvtGen_pp96TeV ()
1480+ {
1481+
1482+ auto genCocktailEvtGen = new o2 ::eventgen ::GeneratorEvtGen < GeneratorCocktail > ();
1483+
1484+ auto genJpsi = new o2 ::eventgen ::O2_GeneratorParamJpsiMidY_96TeV ;
1485+ genJpsi -> SetNSignalPerEvent (1 ); // 1 J/psi generated per event by GeneratorParam
1486+ auto genPsi = new o2 ::eventgen ::O2_GeneratorParamPsiMidY_96TeV ;
1487+ genPsi -> SetNSignalPerEvent (1 ); // 1 Psi(2S) generated per event by GeneratorParam
1488+ genCocktailEvtGen -> AddGenerator (genJpsi , 1 ); // add J/psi generator
1489+ genCocktailEvtGen -> AddGenerator (genPsi , 1 ); // add Psi(2S) generator
1490+
1491+ TString pdgs = "443;100443" ;
1492+ std ::string spdg ;
1493+ TObjArray * obj = pdgs .Tokenize (";" );
1494+ genCocktailEvtGen -> SetSizePdg (obj -> GetEntriesFast ());
1495+ for (int i = 0 ; i < obj -> GetEntriesFast (); i ++ ) {
1496+ spdg = obj -> At (i )-> GetName ();
1497+ genCocktailEvtGen -> AddPdg (std ::stoi (spdg ), i );
1498+ printf ("PDG %d \n" , std ::stoi (spdg ));
1499+ }
1500+ genCocktailEvtGen -> SetForceDecay (kEvtDiElectron );
1501+
1502+ return genCocktailEvtGen ;
1503+ }
1504+
13341505FairGenerator *
13351506 GeneratorParamPromptPsiToJpsiPiPiEvtGen_pp13TeV (TString pdgs = "100443" )
13361507{
0 commit comments