Pluto v6.3.0
Loading...
Searching...
No Matches
PDalitzModPlugin.cc
Go to the documentation of this file.
1
2//Plugin to modify the Dalitz decays
3//
4//This plugin is part of the distribution manager
5//It can be activated with
6//makeDistributionManager()->Exec("dalitz_mod: command");
7//
8//where the plugin supports the following commands:
9//static_br_thresh=value Threshold for disabling static br in GeV
10//flat_generator Enables a flat generator for all registered
11// Dalitz decays. Instead of the static br we
12// use the dG/dm directly, if the parent res
13// width is > static_br_thresh
14//krivoruchenko Use Delta Dalitz from Krivoruchenko [L1]
15//
16// Author: I. Froehlich
17// Written: 17.9.2008
18//
19//References:
20//[L1] M.I. Krivoruchenko, A. Faessler (Tubingen U.), Phys.Rev.D65:017502,2002, nucl-th/0104045
21//[L2] M. Zetenyi and Gy. Wolf, Heavy Ion Phys.17:27-39,2003, arXiv:nucl-th/0202047v1
22//
24
25#include "PDalitzModPlugin.h"
26
27#include "PDeltaDalitzFF.h"
28#include "PResonanceDalitz.h"
29
30PDalitzModPlugin::PDalitzModPlugin(const Char_t *id, const Char_t *de):
32
33 resonances_done = kFALSE;
34 RequiresPlugin("pdg:extend_resonances");
35}
36
38
39 // PDistributionManagerUtil * pdmutil = makeDistributionManagerUtil();
40 static_br_thresh = 1111.; //something very large -> disabled
42 kriv1 = kriv2 = NULL;
43 pdmutil->SetGroup("decay_models");
44 return kTRUE;
45}
46
49
50Bool_t PDalitzModPlugin::ExecCommand(const char *command, Double_t value) {
51
52
53 //Resonances:
54 if (!resonances_done) {
56
57 //model from Ref. [L2]
58
59 pdmutil->AddSubGroup("dalitz_zetenyi_wolf", "Dalitz decay from Zetenyi/Wolf, nucl-th/0202047v1", "decay_models");
60 pdmutil->SetGroup("dalitz_zetenyi_wolf");
61
62 makeStaticData()->AddDecay(-1, "N*(1520)+ -> p + dilepton", "ND13+", "p, dilepton", 4.0e-5);
63
64 PResonanceDalitz *newmodel =
65 new PResonanceDalitz("ND13+_dalitz@ND13+_to_p_dilepton",
66 "dgdm from Zetenyi/Wolf", -1);
67 newmodel->setGm(0.793);
68 pdmutil->Add(newmodel);
69
70 makeStaticData()->AddDecay(-1, "N*(1440)+ -> p + dilepton", "N*(1440)+", "p, dilepton", 1.1e-5);
71 newmodel = new PResonanceDalitz("NP11+_dalitz@NP11+_to_p_dilepton",
72 "dgdm from Zetenyi/Wolf", -1);
73 newmodel->setGm(0.139);
74 pdmutil->Add(newmodel);
75
76
77 makeStaticData()->AddDecay(-1,"N*(1535)+ -> p + dilepton", "N*(1535)+", "p, dilepton", 1.6e-5);
78 newmodel = new PResonanceDalitz("NS11+_dalitz@NS11+_to_p_dilepton",
79 "dgdm from Zetenyi/Wolf", -1);
80 newmodel->setGm(0.634);
81 pdmutil->Add(newmodel);
82
83
84 makeStaticData()->AddDecay(-1, "N*(1520)0 -> n + dilepton", "ND130", "n, dilepton", 4.0e-5);
85 newmodel = new PResonanceDalitz("ND130_dalitz@ND130_to_n_dilepton",
86 "dgdm from Zetenyi/Wolf", -1);
87 newmodel->setGm(0.719);
88 pdmutil->Add(newmodel);
89
90 makeStaticData()->AddDecay(-1, "N*(1440)0 -> n + dilepton", "N*(1440)0", "n, dilepton", 1.1e-5);
91 newmodel = new PResonanceDalitz("NP110_dalitz@NP110_to_n_dilepton",
92 "dgdm from Zetenyi/Wolf", -1);
93 newmodel->setGm(0.098);
94 pdmutil->Add(newmodel);
95
96
97 makeStaticData()->AddDecay(-1, "N*(1535)0 -> n + dilepton", "N*(1535)0", "n, dilepton", 1.6e-5);
98 newmodel = new PResonanceDalitz("NS110_dalitz@NS110_to_n_dilepton",
99 "dgdm from Zetenyi/Wolf", -1);
100 newmodel->setGm(0.549);
101 pdmutil->Add(newmodel);
102
103
104
105
106 // setGm(0 , 1.98 , 1.980, 1, 3); // D1232
107 // setGm(1 , 0.098 , 0.139, 1, 1); // N1440
108 // setGm(2 , 0.719 , 0.793,-1, 3); // N1520
109 // setGm(3 , 0.549 , 0.634,-1, 1); // N1535
110 // setGm(4 , 0.285 , 0.315,-1, 1); // N1650
111 // setGm(5 , 1.52 , 0.678,-1, 5); // N1675
112 // setGm(6 , 0.971 , 2.74 , 1, 5); // N1680
113 // setGm(7 , 0.193 , 0.126,-1, 3); // N1700
114 // setGm(8 , 0.019 , 0.030, 1, 1); // N1710
115 // setGm(9 , 0.386 , 0.193, 1, 3); // N1720
116 // setGm(10, 0.162 , 0.162, 1, 3); // D1600
117 // setGm(11, 0.162 , 0.162,-1, 1); // D1620
118 // setGm(12, 0.549 , 0.549,-1, 3); // D1700
119 // setGm(13, 0.713 , 0.713, 1, 5); // D1905
120 // setGm(14, 0.066 , 0.066, 1, 1); // D1910
121 // setGm(15, 0.479 , 0.479,-1, 5); // D1930
122
123 resonances_done = kTRUE;
124 }
125
126
127 //only by command:
128 if (strcmp (command,"flat_generator") == 0) {
129
131 pdmutil->LinkDB();
132
133 pdmutil->AddSubGroup("generators", "Generator models", "root");
134 pdmutil->SetGroup("generators");
135
136 TF1 *flat = new TF1("flat", "1", 0, 1);
137
138 Int_t header = makeDataBase()->GetEntry("std_set");
139 Int_t particlekey = -1;
140 // Int_t generator_key=makeStaticData()->MakeDirectoryEntry("modeldef","generator");
141
142 //loop over particles
143 while (makeDataBase()->MakeListIterator(header, "snpart", "slink", &particlekey)) {
144
145 Int_t decaykey = -1;
146 Int_t pid = makeStaticData()->GetParticleIDByKey(particlekey);
147
148 //loop over decays
149 while ((makeStaticData()->GetParticleNChannelsByKey(particlekey)>0) &&
150 (makeDataBase()->MakeListIterator(particlekey, "pnmodes", "link", &decaykey))) {
151 Int_t tid[11];
152 tid[0] = 10;
153 makeStaticData()->GetDecayModeByKey(decaykey, tid); // retrieve current mode info
154
155 if (PData::IsDalitz(pid, tid[1], tid[2])) {
156
157 TString *id = new TString(makeStaticData()->GetParticleName(pid));
158 id->Append("_generator_");
159 for (int p=1; p<=tid[0]; p++) {
160 id->Append(makeStaticData()->GetParticleName(tid[p]));
161 if (p != tid[0]) id->Append("_");
162 }
163 id->Append("@");
164 id->Append(makeStaticData()->GetParticleName(pid));
165 id->Append("#generator#");
166 for (int p=1; p<=tid[0]; p++) {
167 id->Append(makeStaticData()->GetParticleName(tid[p]));
168 if (p != tid[0]) id->Append("#");
169 }
170 id->Append("&generator");
171
173 new PInclusiveModel((char*)id->Data(), "Dilepton generator", -2);
174 dilepton_generator->Set("dilepton,primary");
175 dilepton_generator->SetSampleFunction(flat);
176 dilepton_generator->EnableGenerator();
177
178 pdmutil->Add(dilepton_generator);
179
181 if (pmodel) {
182 pmodel->EnableWeighting();
183 pmodel->SetVersionFlag(VERSION_GENERATOR_MC);
184 //disable re-scaling if parent width is larger
185 //then static_br_thresh
186 if (makeStaticData()->GetParticleTotalWidth(pid) > static_br_thresh) {
187 pmodel->SetExpectedWeightMean(-1);
188 Info("ExecCommand","Model <%s> uses dGamma/dM for the branching ratio",
189 pmodel->GetIdentifier());
190 }
191 } else {
192 Warning("ExecCommand", "Primary model not found");
193 }
194 } //isDalitz
195 }
196 }
197
198 return kTRUE;
199
200 } else if (strcmp (command,"static_br_thresh") == 0) {
201
202 static_br_thresh = value;
203 return kTRUE;
204
205 } else if (strcmp (command,"krivoruchenko") == 0) {
206
207 if (kriv1) return kTRUE;
209 pdmutil->LinkDB();
210 pdmutil->SetGroup("decay_models");
211 kriv1 = new PDeltaDalitzKrivoruchenko("D+_krivoruchenko@D+_to_p_dilepton",
212 "dgdm from Krivoruchenko", -1);
213
214 kriv2 = new PDeltaDalitzKrivoruchenko("D0_krivoruchenko@D0_to_n_dilepton",
215 "dgdm from Krivoruchenko", -1);
216 pdmutil->Add(kriv1);
217 pdmutil->Add(kriv2);
218
219 //Add VMD-FF in the vmd group
220 pdmutil->AddSubGroup("vmd", "VMD form factors", "root");
221 pdmutil->SetGroup("vmd");
222
223 PDeltaDalitzFF *vmd_newmodel = new PDeltaDalitzFF("D+_iachello_ff@D+_to_p_dilepton/formfactor",
224 "Iachello ff for D+ -> p e+e-", -1);
225 pdmutil->Add(vmd_newmodel);
226 vmd_newmodel = new PDeltaDalitzFF("D0_iachello_ff@D0_to_n_dilepton/formfactor",
227 "Iachello ff for D0 -> n e+e-", -1);
228 pdmutil->Add(vmd_newmodel);
229
230
231 //Add QED-FF in the qed group
232 pdmutil->AddSubGroup("qed", "QED form factors", "root");
233 pdmutil->SetGroup("qed");
234
235 PDeltaDalitzFF *qed_newmodel = new PDeltaDalitzFF("D+_qed_ff@D+_to_p_dilepton/formfactor",
236 "QED ff for D+ -> p e+e-", -1);
237 qed_newmodel->SetQED(1);
238 qed_newmodel->SetCC(3.0, 0, 0);
239 pdmutil->Add(qed_newmodel);
240 qed_newmodel = new PDeltaDalitzFF("D0_qed_ff@D0_to_n_dilepton/formfactor",
241 "QED ff for D0 -> n e+e-", -1);
242 qed_newmodel->SetQED(1);
243 qed_newmodel->SetCC(3.0,0,0);
244 pdmutil->Add(qed_newmodel);
245 return kTRUE;
246 }
247
248 return kFALSE;
249}
250
251
252
254
255
256
257
ClassImp(PBeamLineSimulation) PBeamLineSimulation
PDataBase * makeDataBase()
PDistributionManagerUtil * makeDistributionManagerUtil()
#define VERSION_GENERATOR_MC
PDynamicData * makeDynamicData()
PStaticData * makeStaticData()
Bool_t Activate(void)
PDalitzModPlugin(const Char_t *id, const Char_t *de)
Bool_t ExecCommand(const char *command, Double_t value)
Int_t GetEntry(const char *name)
static int IsDalitz(const int &id, const int &i1, const int &i2)
Definition PData.h:136
void SetQED(Int_t i)
void SetCC(Double_t a, Double_t b, Double_t c)
Bool_t RequiresPlugin(const char *name)
int Add(PDistribution *dist)
Int_t AddSubGroup(const Char_t *id, const Char_t *de, const Char_t *sub)
void SetGroup(const Char_t *id)
Int_t pid[MAX_PARTICLE_LIST]
PChannelModel * GetDecayModelByKey(Int_t key)
void setGm(Double_t my_g_Em)
int AddDecay(int didx, const char *name, const char *parent, const char *daughters, double br)
int GetParticleIDByKey(int key)
void GetDecayModeByKey(const int, int *n)
PParticle * p
Definition dp_mult.C:24
PFermiMomentumDD * pmodel
Definition fermi_dd.C:38
TF1 * flat
PInclusiveModel * dilepton_generator