Skip to content

Commit 50b6239

Browse files
authored
configuration files for simulation data challenge (prompt / non-prompt quarkonia) (#84)
* configuration files for simulation data challenge (prompt / non-prompt quarkonia) * move conf. / ini files in proper folders * small fix * remove decayer pythia8 lines * fix typo
1 parent 34ca065 commit 50b6239

File tree

6 files changed

+444
-0
lines changed

6 files changed

+444
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// usage (fwdy) :
2+
//o2-sim -j 4 -n 10 -g external -m "PIPE ITS TPC" -o sgn --configKeyValues "GeneratorExternal.fileName=GeneratorBeautyToJpsi_EvtGen.C;GeneratorExternal.funcName=GeneratorBeautyToJpsi_EvtGenFwdY()" --configFile GeneratorHF_bbbar_fwdy.ini
3+
// usage (midy) :
4+
//o2-sim -j 4 -n 10 -g external -m "PIPE ITS TPC" -o sgn --configKeyValues "GeneratorExternal.fileName=GeneratorBeautyToJpsi_EvtGen.C;GeneratorExternal.funcName=GeneratorBeautyToJpsi_EvtGenMidY()" --configFile GeneratorHF_bbbar_midy.ini
5+
//
6+
//
7+
R__ADD_INCLUDE_PATH($O2DPG_ROOT/MC/config/PWGDQ/EvtGen)
8+
R__ADD_INCLUDE_PATH($O2DPG_ROOT/MC/config/PWGHF/external/generator)
9+
#include "GeneratorEvtGen.C"
10+
#include "GeneratorHF.C"
11+
12+
FairGenerator*
13+
GeneratorBeautyToJpsi_EvtGenMidY(double rapidityMin = -1.5, double rapidityMax = 1.5, bool verbose = false, TString pdgs = "511;521;531;5112;5122;5232;5132")
14+
{
15+
auto gen = new o2::eventgen::GeneratorEvtGen<o2::eventgen::GeneratorHF>();
16+
gen->setRapidity(rapidityMin,rapidityMax);
17+
gen->setPDG(5);
18+
19+
gen->setVerbose(verbose);
20+
gen->setFormula("max(1.,120.*(x<5.)+80.*(1.-x/20.)*(x>5.)*(x<11.)+240.*(1.-x/13.)*(x>11.))");
21+
std::string spdg;
22+
TObjArray *obj = pdgs.Tokenize(";");
23+
gen->SetSizePdg(obj->GetEntriesFast());
24+
for(int i=0; i<obj->GetEntriesFast(); i++) {
25+
spdg = obj->At(i)->GetName();
26+
gen->AddPdg(std::stoi(spdg),i);
27+
printf("PDG %d \n",std::stoi(spdg));
28+
}
29+
gen->SetForceDecay(kEvtBJpsiDiElectron);
30+
// print debug
31+
// gen->PrintDebug();
32+
33+
return gen;
34+
}
35+
36+
FairGenerator*
37+
GeneratorBeautyToJpsi_EvtGenFwdY(double rapidityMin = -4.3, double rapidityMax = -2.2, bool verbose = false, TString pdgs = "511;521;531;5112;5122;5232;5132")
38+
{
39+
auto gen = new o2::eventgen::GeneratorEvtGen<o2::eventgen::GeneratorHF>();
40+
gen->setRapidity(rapidityMin,rapidityMax);
41+
gen->setPDG(5);
42+
43+
gen->setVerbose(verbose);
44+
gen->setFormula("max(1.,120.*(x<5.)+80.*(1.-x/20.)*(x>5.)*(x<11.)+240.*(1.-x/13.)*(x>11.))");
45+
std::string spdg;
46+
TObjArray *obj = pdgs.Tokenize(";");
47+
gen->SetSizePdg(obj->GetEntriesFast());
48+
for(int i=0; i<obj->GetEntriesFast(); i++) {
49+
spdg = obj->At(i)->GetName();
50+
gen->AddPdg(std::stoi(spdg),i);
51+
printf("PDG %d \n",std::stoi(spdg));
52+
}
53+
gen->SetForceDecay(kEvtBJpsiDiMuon);
54+
// print debug
55+
// gen->PrintDebug();
56+
57+
return gen;
58+
}
59+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <vector>
2+
3+
using namespace o2::eventgen;
4+
5+
6+
class GeneratorCocktail_class : public Generator
7+
{
8+
public:
9+
GeneratorCocktail_class() { };
10+
~GeneratorCocktail_class() = default;
11+
12+
// at init we init all generators
13+
bool Init() override {
14+
for (auto& g : *mEntries) g->Init();
15+
Generator::Init();
16+
return true;
17+
};
18+
19+
// call generate method for all generators
20+
bool generateEvent() override {
21+
int index = 0;
22+
for (auto& g : *mEntries) g->generateEvent();
23+
return true; };
24+
25+
// at importParticles we add particles to the output particle vector
26+
bool importParticles() override {
27+
for (auto& g : *mEntries) {
28+
g->importParticles();
29+
for (auto& p : g->getParticles()) mParticles.push_back(p);
30+
g->clearParticles();
31+
}
32+
return true;
33+
};
34+
35+
void AddGenerator(Generator *gen, int ntimes=1){
36+
for(int in=0; in<ntimes; in++) mEntries->push_back(gen);
37+
return;
38+
};
39+
40+
private:
41+
///
42+
std::vector<Generator*> *mEntries = new std::vector<Generator*>(); // vector of Generator
43+
};
44+
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
// usage
2+
// o2-sim -j 4 -n 10 -g external -o sgn --configKeyValues "GeneratorExternal.fileName=GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp13TeV.C;GeneratorExternal.funcName=GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp13TeV()"
3+
//
4+
R__ADD_INCLUDE_PATH($O2DPG_ROOT/MC/config/PWGDQ/EvtGen)
5+
R__ADD_INCLUDE_PATH($O2DPG_ROOT/MC/config/PWGDQ/PromptQuarkonia)
6+
#include "GeneratorCocktail.C"
7+
#include "GeneratorEvtGen.C"
8+
9+
namespace o2 {
10+
namespace eventgen {
11+
12+
class O2_GeneratorParamJpsi : public GeneratorTGenerator
13+
{
14+
15+
public:
16+
17+
O2_GeneratorParamJpsi() : GeneratorTGenerator("ParamJpsi") {
18+
paramJpsi = new GeneratorParam(1, -1, PtJPsipp13TeV, YJPsipp13TeV, V2JPsipp13TeV, IpJPsipp13TeV);
19+
paramJpsi->SetMomentumRange(0., 1.e6);
20+
paramJpsi->SetPtRange(0, 999.);
21+
paramJpsi->SetYRange(-4.2, -2.3);
22+
paramJpsi->SetPhiRange(0., 360.);
23+
paramJpsi->SetDecayer(new TPythia6Decayer());
24+
paramJpsi->SetForceDecay(kNoDecay); // particle left undecayed
25+
// - - paramJpsi->SetTrackingFlag(1); // (from AliGenParam) -> check this
26+
setTGenerator(paramJpsi);
27+
};
28+
29+
30+
~O2_GeneratorParamJpsi() {
31+
delete paramJpsi;
32+
};
33+
34+
Bool_t Init() override {
35+
GeneratorTGenerator::Init();
36+
paramJpsi->Init();
37+
return true;
38+
}
39+
40+
void SetNSignalPerEvent(Int_t nsig){paramJpsi->SetNumberParticles(nsig);}
41+
42+
//-------------------------------------------------------------------------//
43+
static Double_t PtJPsipp13TeV(const Double_t *px, const Double_t * /*dummy*/)
44+
{
45+
// jpsi pT in pp at 13 TeV, tuned on data (2015)
46+
Double_t x = *px;
47+
Float_t p0, p1, p2, p3;
48+
p0 = 1;
49+
p1 = 4.75208;
50+
p2 = 1.69247;
51+
p3 = 4.49224;
52+
return p0 * x / TMath::Power(1. + TMath::Power(x / p1, p2), p3);
53+
}
54+
55+
//-------------------------------------------------------------------------//
56+
static Double_t YJPsipp13TeV(const Double_t *py, const Double_t * /*dummy*/)
57+
{
58+
// jpsi y in pp at 13 TeV, tuned on data (2015)
59+
Double_t y = *py;
60+
Float_t p0, p1, p2;
61+
p0 = 1;
62+
p1 = 0;
63+
p2 = 2.98887;
64+
return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2));
65+
}
66+
67+
//-------------------------------------------------------------------------//
68+
static Double_t V2JPsipp13TeV(const Double_t * /*dummy*/, const Double_t * /*dummy*/)
69+
{
70+
//jpsi v2
71+
return 0.;
72+
}
73+
74+
//-------------------------------------------------------------------------//
75+
static Int_t IpJPsipp13TeV(TRandom *)
76+
{
77+
return 443;
78+
}
79+
80+
81+
private:
82+
83+
GeneratorParam *paramJpsi = nullptr;
84+
85+
};
86+
87+
class O2_GeneratorParamPsi : public GeneratorTGenerator
88+
{
89+
90+
public:
91+
92+
O2_GeneratorParamPsi() : GeneratorTGenerator("ParamPsi") {
93+
paramPsi = new GeneratorParam(1, -1, PtPsipp13TeV, YPsipp13TeV, V2Psipp13TeV, IpPsipp13TeV);
94+
paramPsi->SetMomentumRange(0., 1.e6);
95+
paramPsi->SetPtRange(0, 999.);
96+
paramPsi->SetYRange(-4.2, -2.3);
97+
paramPsi->SetPhiRange(0., 360.);
98+
paramPsi->SetDecayer(new TPythia6Decayer());
99+
paramPsi->SetForceDecay(kNoDecay); // particle left undecayed
100+
// - - paramJpsi->SetTrackingFlag(1); // check this
101+
setTGenerator(paramPsi);
102+
};
103+
104+
~O2_GeneratorParamPsi() {
105+
delete paramPsi;
106+
};
107+
108+
Bool_t Init() override {
109+
GeneratorTGenerator::Init();
110+
paramPsi->Init();
111+
return true;
112+
}
113+
114+
void SetNSignalPerEvent(Int_t nsig){paramPsi->SetNumberParticles(nsig);}
115+
116+
//-------------------------------------------------------------------------//
117+
static Double_t PtPsipp13TeV(const Double_t *px, const Double_t * /*dummy*/)
118+
{
119+
// jpsi pT in pp at 13 TeV, tuned on data (2015)
120+
Double_t x = *px;
121+
Float_t p0, p1, p2, p3;
122+
p0 = 1;
123+
p1 = 4.75208;
124+
p2 = 1.69247;
125+
p3 = 4.49224;
126+
return p0 * x / TMath::Power(1. + TMath::Power(x / p1, p2), p3);
127+
}
128+
129+
//-------------------------------------------------------------------------//
130+
static Double_t YPsipp13TeV(const Double_t *py, const Double_t * /*dummy*/)
131+
{
132+
// jpsi y in pp at 13 TeV, tuned on data (2015)
133+
Double_t y = *py;
134+
Float_t p0, p1, p2;
135+
p0 = 1;
136+
p1 = 0;
137+
p2 = 2.98887;
138+
return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2));
139+
}
140+
141+
//-------------------------------------------------------------------------//
142+
static Double_t V2Psipp13TeV(const Double_t * /*dummy*/, const Double_t * /*dummy*/)
143+
{
144+
//jpsi v2
145+
return 0.;
146+
}
147+
148+
//-------------------------------------------------------------------------//
149+
static Int_t IpPsipp13TeV(TRandom *)
150+
{
151+
return 100443;
152+
}
153+
154+
155+
private:
156+
157+
GeneratorParam *paramPsi = nullptr;
158+
159+
};
160+
161+
162+
}}
163+
164+
165+
FairGenerator* GeneratorCocktailPromptCharmoniaToMuonEvtGen_pp13TeV()
166+
{
167+
168+
auto genCocktailEvtGen = new o2::eventgen::GeneratorEvtGen<GeneratorCocktail_class>();
169+
170+
auto genJpsi = new o2::eventgen::O2_GeneratorParamJpsi;
171+
genJpsi->SetNSignalPerEvent(4); // 4 J/psi generated per event by GeneratorParam
172+
auto genPsi = new o2::eventgen::O2_GeneratorParamPsi;
173+
genPsi->SetNSignalPerEvent(2); // 2 Psi(2S) generated per event by GeneratorParam
174+
genCocktailEvtGen->AddGenerator(genJpsi,1); // 2/3 J/psi
175+
genCocktailEvtGen->AddGenerator(genPsi,1); // 1/3 Psi(2S)
176+
177+
178+
TString pdgs = "443;100443";
179+
std::string spdg;
180+
TObjArray *obj = pdgs.Tokenize(";");
181+
genCocktailEvtGen->SetSizePdg(obj->GetEntriesFast());
182+
for(int i=0; i<obj->GetEntriesFast(); i++) {
183+
spdg = obj->At(i)->GetName();
184+
genCocktailEvtGen->AddPdg(std::stoi(spdg),i);
185+
printf("PDG %d \n",std::stoi(spdg));
186+
}
187+
genCocktailEvtGen->SetForceDecay(kEvtDiMuon);
188+
189+
return genCocktailEvtGen;
190+
}
191+
192+

0 commit comments

Comments
 (0)