Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
// usage
// o2-sim -j 4 -n 10 -g external -o sgn --configKeyValues "GeneratorExternal.fileName=GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp5TeV.C;GeneratorExternal.funcName=GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp5TeV()"
//
R__ADD_INCLUDE_PATH($O2DPG_MC_CONFIG_ROOT/MC/config/PWGDQ/EvtGen)
R__ADD_INCLUDE_PATH($O2DPG_MC_CONFIG_ROOT/MC/config/PWGDQ/PromptQuarkonia)
R__LOAD_LIBRARY(libpythia6)
#include "GeneratorCocktail.C"
#include "GeneratorEvtGen.C"

namespace o2
{
namespace eventgen
{

class O2_GeneratorParamJpsi : public GeneratorTGenerator
{

public:
O2_GeneratorParamJpsi() : GeneratorTGenerator("ParamJpsi")
{
paramJpsi = new GeneratorParam(1, -1, PtJPsipp5TeV, YJPsipp5TeV, V2JPsipp5TeV, IpJPsipp5TeV);
paramJpsi->SetMomentumRange(0., 1.e6);
paramJpsi->SetPtRange(0, 999.);
paramJpsi->SetYRange(-4.2, -2.3);
paramJpsi->SetPhiRange(0., 360.);
paramJpsi->SetDecayer(new TPythia6Decayer());
paramJpsi->SetForceDecay(kNoDecay); // particle left undecayed
// - - paramJpsi->SetTrackingFlag(1); // (from AliGenParam) -> check this
setTGenerator(paramJpsi);
};

~O2_GeneratorParamJpsi()
{
delete paramJpsi;
};

Bool_t Init() override
{
GeneratorTGenerator::Init();
paramJpsi->Init();
return true;
}

void SetNSignalPerEvent(Int_t nsig) { paramJpsi->SetNumberParticles(nsig); }

//-------------------------------------------------------------------------//
static Double_t PtJPsipp5TeV(const Double_t* px, const Double_t* /*dummy*/)
{
// jpsi pT in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
Double_t x = *px;
Float_t p0, p1, p2, p3;
p0 = 1;
p1 = 4.30923;
p2 = 1.82061;
p3 = 4.37563;
return p0 * x / TMath::Power(1. + TMath::Power(x / p1, p2), p3);
}

//-------------------------------------------------------------------------//
static Double_t YJPsipp5TeV(const Double_t* py, const Double_t* /*dummy*/)
{
// jpsi y in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
Double_t y = *py;
Float_t p0, p1, p2;
p0 = 1;
p1 = 0.0338222;
p2 = 2.96748;
return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2));
}

//-------------------------------------------------------------------------//
static Double_t V2JPsipp5TeV(const Double_t* /*dummy*/, const Double_t* /*dummy*/)
{
// jpsi v2
return 0.;
}

//-------------------------------------------------------------------------//
static Int_t IpJPsipp5TeV(TRandom*)
{
return 443;
}

private:
GeneratorParam* paramJpsi = nullptr;
};

class O2_GeneratorParamPsi : public GeneratorTGenerator
{

public:
O2_GeneratorParamPsi() : GeneratorTGenerator("ParamPsi")
{
paramPsi = new GeneratorParam(1, -1, PtPsipp5TeV, YPsipp5TeV, V2Psipp5TeV, IpPsipp5TeV);
paramPsi->SetMomentumRange(0., 1.e6);
paramPsi->SetPtRange(0, 999.);
paramPsi->SetYRange(-4.2, -2.3);
paramPsi->SetPhiRange(0., 360.);
paramPsi->SetDecayer(new TPythia6Decayer());
paramPsi->SetForceDecay(kNoDecay); // particle left undecayed
// - - paramJpsi->SetTrackingFlag(1); // check this
setTGenerator(paramPsi);
};

~O2_GeneratorParamPsi()
{
delete paramPsi;
};

Bool_t Init() override
{
GeneratorTGenerator::Init();
paramPsi->Init();
return true;
}

void SetNSignalPerEvent(Int_t nsig) { paramPsi->SetNumberParticles(nsig); }

//-------------------------------------------------------------------------//
static Double_t PtPsipp5TeV(const Double_t* px, const Double_t* /*dummy*/)
{
// psi2s pT in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
Double_t x = *px;
Float_t p0, p1, p2, p3;
p0 = 1;
p1 = 2.6444;
p2 = 6.17572;
p3 = 0.701753;
return p0 * x / TMath::Power(1. + TMath::Power(x / p1, p2), p3);
}

//-------------------------------------------------------------------------//
static Double_t YPsipp5TeV(const Double_t* py, const Double_t* /*dummy*/)
{
// psi2s y in pp at 5.02 TeV, tuned on https://www.hepdata.net/record/ins1935680
Double_t y = *py;
Float_t p0, p1, p2;
p0 = 1;
p1 = -17.4857;
p2 = 2.98887;
return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2));
}

//-------------------------------------------------------------------------//
static Double_t V2Psipp5TeV(const Double_t* /*dummy*/, const Double_t* /*dummy*/)
{
// jpsi v2
return 0.;
}

//-------------------------------------------------------------------------//
static Int_t IpPsipp5TeV(TRandom*)
{
return 100443;
}

private:
GeneratorParam* paramPsi = nullptr;
};

} // namespace eventgen
} // namespace o2

FairGenerator* GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp5TeV()
{

auto genCocktailEvtGen = new o2::eventgen::GeneratorEvtGen<GeneratorCocktail>();

auto genJpsi = new o2::eventgen::O2_GeneratorParamJpsi;
genJpsi->SetNSignalPerEvent(4); // 4 J/psi generated per event by GeneratorParam
auto genPsi = new o2::eventgen::O2_GeneratorParamPsi;
genPsi->SetNSignalPerEvent(2); // 2 Psi(2S) generated per event by GeneratorParam
genCocktailEvtGen->AddGenerator(genJpsi, 1); // 2/3 J/psi
genCocktailEvtGen->AddGenerator(genPsi, 1); // 1/3 Psi(2S)

TString pdgs = "443;100443";
std::string spdg;
TObjArray* obj = pdgs.Tokenize(";");
genCocktailEvtGen->SetSizePdg(obj->GetEntriesFast());
for (int i = 0; i < obj->GetEntriesFast(); i++) {
spdg = obj->At(i)->GetName();
genCocktailEvtGen->AddPdg(std::stoi(spdg), i);
printf("PDG %d \n", std::stoi(spdg));
}
genCocktailEvtGen->SetForceDecay(kEvtDiMuon);

return genCocktailEvtGen;
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ public:
break;
case 10: // generate cocktail of prompt X_1(3872) and psi2S to Jpsi pi pi at midrapidity
mGeneratorParam = (Generator*)GeneratorCocktailX3872AndPsi2StoJpsi_pp13TeV();
break;
case 11: // generate cocktail of prompt X_1(3872) and psi2S to Jpsi pi pi at midrapidity
mGeneratorParam = (Generator*)GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp5TeV();
break;
}
mGeneratorParam->Init();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### The external generator derives from GeneratorPythia8.
[GeneratorExternal]
fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/external/generator/generator_pythia8_withInjectedPromptSignals_gaptriggered_dq.C
funcName=GeneratorPythia8InjectedPromptCharmoniaGapTriggered(5,11)

[GeneratorPythia8]
config=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/pythia8/generator/pythia8_inel_triggerGap_pp5TeV.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### The external generator derives from GeneratorPythia8.
[GeneratorExternal]
fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/external/generator/generator_pythia8Onia_PromptSignals_gaptriggered.C
funcName=GeneratorPromptJpsiPsi2S_EvtGenFwdY(5,-4.3,-2.3)

[GeneratorPythia8]
config=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/pythia8/generator/pythia8_onia_triggerGap_pp5TeV.cfg