Skip to content

Commit 2574e14

Browse files
Update GeneratorPromptCharmonia.C, prompt onia at 9.6 TeV exptrapolated
1 parent a6b344f commit 2574e14

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed

MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
//====================================================================================================
314459
class 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+
13341505
FairGenerator*
13351506
GeneratorParamPromptPsiToJpsiPiPiEvtGen_pp13TeV(TString pdgs = "100443")
13361507
{

0 commit comments

Comments
 (0)