Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
FemtoWeightGeneratorLednicky2.cxx
1/*
2 * FemtoWeightGeneratorLednicky2.cxx
3 *
4 * Created on: 30 kwi 2018
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9
10
11#include "FemtoWeightGeneratorLednicky2.h"
12
13#include "FemtoFsiParsed.h"
14#include "FemtoPair.h"
15
16#include <RtypesCore.h>
17#include <cmath>
18#include <cstdlib>
19#include <cstring>
20#include <utility>
21
22namespace Hal {
25 fWei(0),
26 fWein(0),
27 fWeif(0),
28 fWeightDen(0),
29 fItest(0),
30 fIch(1),
31 fIqs(1),
32 fIsi(1),
33 fI3c(0),
34 fNuclMass(1.),
35 fNuclCharge(0.),
36 fSphereApp(false),
37 fT0App(false),
38 fLL(0),
39 fNuclChargeSign(1),
40 fSwap(0),
41 fLLMax(30),
42 fLLName(0),
43 fNumProcessPair(0),
44 fNumbNonId(0) {
45 fParser = new FemtoFsiParsed();
46 fLLName = new char*[fLLMax + 1];
47 fNumProcessPair = new int[fLLMax + 1];
48 int i;
49 for (i = 1; i <= fLLMax; i++) {
50 fLLName[i] = new char[40];
51 fNumProcessPair[i] = 0;
52 }
53 strncpy(fLLName[1], "neutron neutron", 40);
54 strncpy(fLLName[2], "proton proton", 40);
55 strncpy(fLLName[3], "neutron proton", 40);
56 strncpy(fLLName[4], "alpha alpha", 40);
57 strncpy(fLLName[5], "pi+ pi-", 40);
58 strncpy(fLLName[6], "pi0 pi0", 40);
59 strncpy(fLLName[7], "pi+ pi+", 40);
60 strncpy(fLLName[8], "neutron deuteron", 40);
61 strncpy(fLLName[9], "proton deuteron", 40);
62 strncpy(fLLName[10], "pi+ K-", 40);
63 strncpy(fLLName[11], "pi+ K+", 40);
64 strncpy(fLLName[12], "pi+ proton", 40);
65 strncpy(fLLName[13], "pi- proton", 40);
66 strncpy(fLLName[14], "K+ K-", 40);
67 strncpy(fLLName[15], "K+ K+", 40);
68 strncpy(fLLName[16], "K+ proton", 40);
69 strncpy(fLLName[17], "K- proton", 40);
70 strncpy(fLLName[18], "deuteron deuteron", 40);
71 strncpy(fLLName[19], "deuton alpha", 40);
72 strncpy(fLLName[20], "triton triton", 40);
73 strncpy(fLLName[21], "triton alpha", 40);
74 strncpy(fLLName[22], "K0 K0", 40);
75 strncpy(fLLName[23], "K0 K0b", 40);
76 strncpy(fLLName[24], "deuteron triton", 40);
77 strncpy(fLLName[25], "proton triton", 40);
78 strncpy(fLLName[26], "proton alpha", 40);
79 strncpy(fLLName[27], "proton lambda", 40);
80 strncpy(fLLName[28], "neutron lambda", 40);
81 strncpy(fLLName[29], "Lambda lambda", 40); // gael 21May02
82 strncpy(fLLName[30], "Proton Anti-proton", 40); // gael 21May02
83 FsiInit();
84 FsiNucl();
85 }
86
88 int tNS;
89 if (fSphereApp || (fLL > 5)) {
90 if (fT0App) {
91 tNS = 4;
92 } else {
93 tNS = 2;
94 }
95 } else {
96 tNS = 1;
97 }
98 // cout <<"fLL dans FsiSetLL() = "<< fLL << endl;
99 // cout <<"tNS dans FsiSetLL() = "<< tNS << endl;
100 // cout <<"fItest dans FsiSetLL() = "<< fItest << endl;
101 fParser->Llini(fLL, tNS, fItest);
102 }
103
105 // initialize weight generation taking into account the residual charge
106 // cout << "*******************AliFemtoModelWeightGeneratorLednicky check
107 // FsiNucl ************" << endl; cout <<"fNuclMass dans FsiNucl() = " <<
108 // fNuclMass << endl; cout <<"fNuclCharge dans FsiNucl() = " << fNuclCharge
109 // << endl; cout <<"fNuclChargeSign dans FsiNucl() = " << fNuclChargeSign <<
110 // endl;
111 fParser->Fsinucl(fNuclMass, fNuclCharge * fNuclChargeSign);
112 }
113
114 bool FemtoWeightGeneratorLednicky2::SetPid(const int aPid1, const int aPid2) {
115 // set calculated system for basing on particles' pids
116 static const int ksPi0Pid = 111;
117 static const int ksPionPid = 211;
118 static const int ksK0Pid = 310;
119 static const int ksKPid = 321;
120 static const int ksNeutPid = 2112;
121 static const int ksProtPid = 2212;
122 static const int ksLamPid = 3122;
123 // static const int sLamLamPid=3122;
124
125 // cout << "Setting PID to " << aPid1 << " " << aPid2 << endl;
126
127 int tPidl, tPidh;
128 int tChargeFactor = 1;
129
130 if (abs(aPid1) < abs(aPid2)) {
131 if (aPid1 < 0) tChargeFactor = -1;
132 tPidl = aPid1 * tChargeFactor;
133 tPidh = aPid2 * tChargeFactor;
134 fSwap = false;
135 } else {
136 if (aPid2 < 0) tChargeFactor = -1;
137 tPidl = aPid2 * tChargeFactor;
138 tPidh = aPid1 * tChargeFactor;
139 fSwap = true;
140 }
141 switch (tPidl) {
142 case ksPionPid:
143 switch (tPidh) {
144 case -ksPionPid:
145 fLL = 5;
146 tChargeFactor *= 1;
147 break;
148 case ksPionPid:
149 fLL = 7;
150 tChargeFactor *= 1;
151 break;
152 case -ksKPid:
153 fLL = 10;
154 tChargeFactor *= 1;
155 break;
156 case ksKPid:
157 fLL = 11;
158 tChargeFactor *= 1;
159 break;
160 case ksProtPid:
161 fLL = 12;
162 tChargeFactor *= 1;
163 break;
164 case -ksProtPid:
165 fLL = 13;
166 tChargeFactor *= -1;
167 break;
168 default: fLL = 0; break;
169 }
170 break;
171 case ksProtPid:
172 switch (tPidh) {
173 case ksProtPid:
174 fLL = 2;
175 tChargeFactor *= 1;
176 break;
177 case ksLamPid:
178 fLL = 27;
179 tChargeFactor *= 1;
180 break;
181 case -ksProtPid:
182 fLL = 30;
183 tChargeFactor *= 1;
184 break;
185 default: fLL = 0; break;
186 }
187 break;
188 case ksKPid:
189 switch (tPidh) {
190 case -ksKPid:
191 fLL = 14;
192 tChargeFactor *= 1;
193 break;
194 case ksKPid:
195 fLL = 15;
196 tChargeFactor *= 1;
197 break;
198 case ksProtPid:
199 fLL = 16;
200 tChargeFactor *= 1;
201 break;
202 case -ksProtPid:
203 fLL = 17;
204 tChargeFactor *= -1;
205 break;
206 default: fLL = 0; break;
207 }
208 break;
209 case ksK0Pid:
210 switch (tPidh) {
211 case ksK0Pid:
212 fLL = 22;
213 tChargeFactor *= 1;
214 break;
215 case -ksK0Pid:
216 fLL = 23;
217 tChargeFactor *= 1;
218 break;
219 default: fLL = 0; break;
220 }
221 break;
222 case ksPi0Pid:
223 switch (tPidh) {
224 case ksPi0Pid:
225 fLL = 6;
226 tChargeFactor *= 1;
227 break;
228 default: fLL = 0; break;
229 }
230 break;
231 case ksNeutPid:
232 switch (tPidh) {
233 case ksNeutPid:
234 fLL = 1;
235 tChargeFactor *= 1;
236 break;
237 case ksProtPid:
238 fLL = 3;
239 tChargeFactor *= 1;
240 break;
241 case ksLamPid:
242 fLL = 28;
243 tChargeFactor *= 1;
244 break;
245 default: fLL = 0; break;
246 }
247 break; // Gael 21May02
248 case ksLamPid: // Gael 21May02
249 switch (tPidh) { // Gael 21May02
250 case ksLamPid:
251 fLL = 29;
252 tChargeFactor *= 1;
253 break; // Gael 21May02
254 default: fLL = 0; break; // Gael 21May02
255 } // Gael 21May02
256 break; // Gael 21May02
257 default: fLL = 0; break;
258 }
259 if (tChargeFactor != fNuclChargeSign) {
260 fNuclChargeSign = tChargeFactor;
261 FsiNucl();
262 }
263 (fNumProcessPair[0])++;
264 if (fLL) {
265 (fNumProcessPair[fLL])++;
266 return true;
267 } else {
268 fNumbNonId++;
269 return false;
270 }
271 // cout << "*******************AliFemtoModelWeightGeneratorLednicky check
272 // SetPid ************" << endl; cout << "fLL=="<< fLL << endl; cout <<
273 // "fNuclCharge=="<< fNuclCharge << endl;
274 }
275
278 fWei(0),
279 fWein(0),
280 fWeif(0),
281 fWeightDen(0),
282 fItest(0),
283 fIch(1),
284 fIqs(1),
285 fIsi(1),
286 fI3c(0),
287 fNuclMass(1.),
288 fNuclCharge(0.),
289 fSphereApp(false),
290 fT0App(false),
291 fLL(0),
292 fNuclChargeSign(1),
293 fSwap(0),
294 fLLMax(30),
295 fLLName(0),
296 fNumProcessPair(0),
297 fNumbNonId(0) {
298 // copy constructor
299 fWei = aWeight.fWei;
300 fWein = aWeight.fWein;
301 fWeif = aWeight.fWeif;
302 fWeightDen = aWeight.fWeightDen;
303
304 fItest = aWeight.fItest;
305 fIch = aWeight.fIch;
306 fIqs = aWeight.fIqs;
307 fIsi = aWeight.fIsi;
308 fI3c = aWeight.fI3c;
309 fNuclMass = aWeight.fNuclMass;
310 fNuclCharge = aWeight.fNuclCharge;
311 fSphereApp = aWeight.fSphereApp;
312 fT0App = aWeight.fT0App;
313 fLL = aWeight.fLL;
315 fSwap = aWeight.fSwap;
316 fLLName = aWeight.fLLName;
318 fNumbNonId = aWeight.fNumbNonId;
319 fLLName = new char*[fLLMax + 1];
320 fNumProcessPair = new int[fLLMax + 1];
321 int i;
322 for (i = 1; i <= fLLMax; i++) {
323 fLLName[i] = new char[40];
324 fNumProcessPair[i] = 0;
325 }
326 strncpy(fLLName[1], "neutron neutron", 40);
327 strncpy(fLLName[2], "proton proton", 40);
328 strncpy(fLLName[3], "neutron proton", 40);
329 strncpy(fLLName[4], "alpha alpha", 40);
330 strncpy(fLLName[5], "pi+ pi-", 40);
331 strncpy(fLLName[6], "pi0 pi0", 40);
332 strncpy(fLLName[7], "pi+ pi+", 40);
333 strncpy(fLLName[8], "neutron deuteron", 40);
334 strncpy(fLLName[9], "proton deuteron", 40);
335 strncpy(fLLName[10], "pi+ K-", 40);
336 strncpy(fLLName[11], "pi+ K+", 40);
337 strncpy(fLLName[12], "pi+ proton", 40);
338 strncpy(fLLName[13], "pi- proton", 40);
339 strncpy(fLLName[14], "K+ K-", 40);
340 strncpy(fLLName[15], "K+ K+", 40);
341 strncpy(fLLName[16], "K+ proton", 40);
342 strncpy(fLLName[17], "K- proton", 40);
343 strncpy(fLLName[18], "deuteron deuteron", 40);
344 strncpy(fLLName[19], "deuton alpha", 40);
345 strncpy(fLLName[20], "triton triton", 40);
346 strncpy(fLLName[21], "triton alpha", 40);
347 strncpy(fLLName[22], "K0 K0", 40);
348 strncpy(fLLName[23], "K0 K0b", 40);
349 strncpy(fLLName[24], "deuteron triton", 40);
350 strncpy(fLLName[25], "proton triton", 40);
351 strncpy(fLLName[26], "proton alpha", 40);
352 strncpy(fLLName[27], "proton lambda", 40);
353 strncpy(fLLName[28], "neutron lambda", 40);
354 strncpy(fLLName[29], "Lambda lambda", 40); // gael 21May02
355 strncpy(fLLName[30], "Proton Anti-proton", 40); // gael 21May02
356 FsiInit();
357 FsiNucl();
358 }
359
361 if (this == &aWeight) return *this;
362
363 fWei = aWeight.fWei;
364 fWein = aWeight.fWein;
365 fWeif = aWeight.fWeif;
366 fWeightDen = aWeight.fWeightDen;
367
368 fItest = aWeight.fItest;
369 fIch = aWeight.fIch;
370 fIqs = aWeight.fIqs;
371 fIsi = aWeight.fIsi;
372 fI3c = aWeight.fI3c;
373 fNuclMass = aWeight.fNuclMass;
374 fNuclCharge = aWeight.fNuclCharge;
375 fSphereApp = aWeight.fSphereApp;
376 fT0App = aWeight.fT0App;
377 fLL = aWeight.fLL;
379 fSwap = aWeight.fSwap;
380 // fLLName = aWeight.fLLName;
382 fNumbNonId = aWeight.fNumbNonId;
383 if (fLLName) free(fLLName);
384 fLLName = new char*[fLLMax + 1];
386 fNumProcessPair = new int[fLLMax + 1];
387 int i;
388 for (i = 1; i <= fLLMax; i++) {
389 fLLName[i] = new char[40];
390 fNumProcessPair[i] = 0;
391 }
392 strncpy(fLLName[1], "neutron neutron", 40);
393 strncpy(fLLName[2], "proton proton", 40);
394 strncpy(fLLName[3], "neutron proton", 40);
395 strncpy(fLLName[4], "alpha alpha", 40);
396 strncpy(fLLName[5], "pi+ pi-", 40);
397 strncpy(fLLName[6], "pi0 pi0", 40);
398 strncpy(fLLName[7], "pi+ pi+", 40);
399 strncpy(fLLName[8], "neutron deuteron", 40);
400 strncpy(fLLName[9], "proton deuteron", 40);
401 strncpy(fLLName[10], "pi+ K-", 40);
402 strncpy(fLLName[11], "pi+ K+", 40);
403 strncpy(fLLName[12], "pi+ proton", 40);
404 strncpy(fLLName[13], "pi- proton", 40);
405 strncpy(fLLName[14], "K+ K-", 40);
406 strncpy(fLLName[15], "K+ K+", 40);
407 strncpy(fLLName[16], "K+ proton", 40);
408 strncpy(fLLName[17], "K- proton", 40);
409 strncpy(fLLName[18], "deuteron deuteron", 40);
410 strncpy(fLLName[19], "deuton alpha", 40);
411 strncpy(fLLName[20], "triton triton", 40);
412 strncpy(fLLName[21], "triton alpha", 40);
413 strncpy(fLLName[22], "K0 K0", 40);
414 strncpy(fLLName[23], "K0 K0b", 40);
415 strncpy(fLLName[24], "deuteron triton", 40);
416 strncpy(fLLName[25], "proton triton", 40);
417 strncpy(fLLName[26], "proton alpha", 40);
418 strncpy(fLLName[27], "proton lambda", 40);
419 strncpy(fLLName[28], "neutron lambda", 40);
420 strncpy(fLLName[29], "Lambda lambda", 40); // gael 21May02
421 strncpy(fLLName[30], "Proton Anti-proton", 40); // gael 21May02
422 FsiInit();
423 FsiNucl();
424
425 return *this;
426 }
427
429 if (fLLName) delete[] fLLName;
430 if (fNumProcessPair) delete[] fNumProcessPair;
431 delete fParser;
432 }
433
435 // AliFemtoModelHiddenInfo *track1 = (AliFemtoModelHiddenInfo *)
436 // aPair->Track1()->HiddenInfo();
437 // AliFemtoModelHiddenInfo *track2 = (AliFemtoModelHiddenInfo *)
438 // aPair->Track2()->HiddenInfo();
439
440 // Calculate pair variables
441 Double_t tPx = pair->TruePx1() + pair->TruePx2();
442 Double_t tPy = pair->TruePy1() + pair->TruePy2();
443 Double_t tPz = pair->TruePz1() + pair->TruePz2();
444 Double_t tE1 = pair->TrueE1();
445 Double_t tE2 = pair->TrueE2();
446 Double_t tE = tE1 + tE2;
447 Double_t tPt = tPx * tPx + tPy * tPy;
448 Double_t tMt = tE * tE - tPz * tPz; // mCVK;
449 Double_t tM = sqrt(tMt - tPt);
450 tMt = sqrt(tMt);
451 tPt = sqrt(tPt);
452 // Double_t tBetat = tPt/tMt;
453
454 // Boost to LCMS
455 Double_t tBeta = tPz / tE;
456 Double_t tGamma = tE / tMt;
457 fKStarLong = tGamma * (pair->TruePz1() - tBeta * tE1);
458 Double_t tE1L = tGamma * (tE1 - tBeta * pair->TruePz1());
459
460 // Rotate in transverse plane
461 fKStarOut = (pair->TruePx1() * tPx + pair->TruePy1() * tPy) / tPt;
462 fKStarSide = (-pair->TruePx1() * tPy + pair->TruePy1() * tPx) / tPt;
463#ifdef _kinetic_debug
464 pair->PrintInfo();
465 std::cout << "LEDNICKY" << std::endl;
466 std::cout << 2.0 * fKStarSide << " " << 2.0 * fKStarOut << " " << fKStarLong * 2.0 << std::endl;
467#endif
468
469 // Boost to pair cms
470 // Double_t out = this->fKStarOut;
471 fKStarOut = tMt / tM * (this->fKStarOut - tPt / tMt * tE1L);
472
473 // tBetat = tPt/tMt;
474
475 Double_t tDX = pair->GetX1() - pair->GetX2();
476 Double_t tDY = pair->GetY1() - pair->GetY2();
477 Double_t tRLong = pair->GetZ1() - pair->GetZ2();
478 Double_t tDTime = pair->GetT1() - pair->GetT2();
479
480 Double_t tROut = (tDX * tPx + tDY * tPy) / tPt;
481 Double_t tRSide = (-tDX * tPy + tDY * tPx) / tPt;
482
483 // cout << "Got points 1 " << track1->GetEmissionPoint()->x() << " " <<
484 // track1->GetEmissionPoint()->y() << " " <<
485 // track1->GetEmissionPoint()->z() << " " <<
486 // track1->GetEmissionPoint()->t() << endl;
487
488 // cout << "Got points 2 " << track2->GetEmissionPoint()->x() << " " <<
489 // track2->GetEmissionPoint()->y() << " " << track2->GetEmissionPoint()->z()
490 // << " " << track2->GetEmissionPoint()->t() << endl;
491 this->fRStarSide = tRSide;
492
493 this->fRStarLong = tGamma * (tRLong - tBeta * tDTime);
494 Double_t tDTimePairLCMS = tGamma * (tDTime - tBeta * tRLong);
495
496 tBeta = tPt / tMt;
497 tGamma = tMt / tM;
498
499 this->fRStarOut = tGamma * (tROut - tBeta * tDTimePairLCMS);
500 this->fRStar =
501 ::sqrt(this->fRStarOut * this->fRStarOut + this->fRStarSide * this->fRStarSide + this->fRStarLong * this->fRStarLong);
502 this->fKStar =
503 ::sqrt(this->fKStarOut * this->fKStarOut + this->fKStarSide * this->fKStarSide + this->fKStarLong * this->fKStarLong);
504
505 // cout << "Got out side " << this->fRStarOut << " " << this->fRStarSide <<
506 // endl;
507
508 if (!SetPid(pair->GetPdg1(), pair->GetPdg2())) {
509 fWeightDen = 1.;
510 return 1;
511 } else { // Good Pid
512 // AliFemtoThreeVector* p;
513 // p=(track1->GetTrueMomentum());
514 double p1[] = {pair->TruePx1(), pair->TruePy1(), pair->TruePz1()};
515 // p=(track2->GetTrueMomentum());
516 double p2[] = {pair->TruePx2(), pair->TruePy2(), pair->TruePz2()};
517 if ((p1[0] == p2[0]) && (p1[1] == p2[1]) && (p1[2] == p2[2])) {
518 fWeightDen = 0.;
519 return 0;
520 }
521 // AliFemtoLorentzVector* tPoint;
522 // tPoint=(track1->GetEmissionPoint());
523 // cout << "Pid1:dans GetWeight = " << aThPair->GetPid1() << endl;
524 // cout << "Pid2:dans GetWeight = " << aThPair->GetPid2() << endl;
525 // cout << "LL:in GetWeight = " << mLL << endl;
526
527 double x1[] = {pair->GetX1(), pair->GetY1(), pair->GetZ1(), pair->GetT1()};
528 // tPoint=(track2->GetEmissionPoint());
529 double x2[] = {pair->GetX2(), pair->GetY2(), pair->GetZ2(), pair->GetT2()};
530 if ((x1[0] == x2[0]) && (x1[1] == x2[1]) && (x1[2] == x2[2]) && (x1[3] == x2[3])) {
531 fWeightDen = 0.;
532 return 0;
533 }
534 if (fSwap) {
535 fParser->SetMomentum(p2, p1);
536 fParser->SetPosition(x2, x1);
537 } else {
538 fParser->SetPosition(x1, x2);
539 fParser->SetMomentum(p1, p2);
540 }
541 FsiSetLL();
542 fParser->Ltran12();
543 fParser->Fsiw(1, fWeif, fWei, fWein);
544
545 if (fI3c == 0) return fWein;
547 return fWei;
548 }
549 }
550
551 void FemtoWeightGeneratorLednicky2::SetPairType(Femto::EPairType aPairType) {
552 this->fPairType = aPairType;
553 std::pair<Int_t, Int_t> pair = Femto::PairTypeToPid(fPairType);
554 SetPid(pair.first, pair.second);
555 }
556
558 const Int_t ktPid1 = pair->GetPdg1();
559 const Int_t ktPid2 = pair->GetPdg2();
560 fIch = 0;
561 fIqs = 0;
562 fIsi = 0;
563
564 if (((ktPid1 == 211) && (ktPid2 == 211)) || ((ktPid1 == -211) && (ktPid2 == -211))) {
565 this->fPairType = Femto::EPairType::kPionPlusPionPlus;
566 fIch = 1;
567 fIqs = 1;
568 } else if (((ktPid1 == -211) && (ktPid2 == 211)) || ((ktPid1 == 211) && (ktPid2 == -211))) {
569 this->fPairType = Femto::EPairType::kPionPlusPionMinus;
570 fIch = 1;
571 } else if (((ktPid1 == 321) && (ktPid2 == 321)) || ((ktPid1 == -321) && (ktPid2 == -321))) {
572 this->fPairType = Femto::EPairType::kKaonPlusKaonPlus;
573 fIch = 1;
574 fIqs = 1;
575 } else if (((ktPid1 == -321) && (ktPid2 == 321)) || ((ktPid1 == 321) && (ktPid2 == -321))) {
576 this->fPairType = Femto::EPairType::kKaonPlusKaonMinus;
577 fIch = 1;
578 } else if (((ktPid1 == 2212) && (ktPid2 == 2212)) || ((ktPid1 == -2212) && (ktPid2 == -2212))) {
579 this->fPairType = Femto::EPairType::kProtonProton;
580 fIch = 1;
581 fIqs = 1;
582 fIsi = 1;
583 } else if (((ktPid1 == -2212) && (ktPid2 == 2212)) || ((ktPid1 == 2212) && (ktPid2 == -2212))) {
584 this->fPairType = Femto::EPairType::kProtonAntiproton;
585 fIch = 1;
586 fIsi = 1;
587 } else if (((ktPid1 == 211) && (ktPid2 == 321)) || ((ktPid1 == -211) && (ktPid2 == -321))) {
588 this->fPairType = Femto::EPairType::kPionPlusKaonPlus;
589 fIch = 1;
590 } else if (((ktPid1 == -211) && (ktPid2 == 321)) || ((ktPid1 == 211) && (ktPid2 == -321))) {
591 this->fPairType = Femto::EPairType::kPionPlusKaonMinus;
592 fIch = 1;
593 } else if (((ktPid1 == 211) && (ktPid2 == 2212)) || ((ktPid1 == -211) && (ktPid2 == -2212))) {
594 this->fPairType = Femto::EPairType::kPionPlusProton;
595 fIch = 1;
596 fIsi = 1;
597 } else if (((ktPid1 == -211) && (ktPid2 == 2212)) || ((ktPid1 == 211) && (ktPid2 == -2212))) {
598 this->fPairType = Femto::EPairType::kPionPlusAntiproton;
599 fIch = 1;
600 fIsi = 1;
601 } else if (((ktPid1 == 321) && (ktPid2 == 2212)) || ((ktPid1 == -321) && (ktPid2 == -2212))) {
602 this->fPairType = Femto::EPairType::kKaonPlusProton;
603 fIch = 1;
604 fIsi = 1;
605 } else if (((ktPid1 == -321) && (ktPid2 == 2212)) || ((ktPid1 == 321) && (ktPid2 == -2212))) {
606 this->fPairType = Femto::EPairType::kKaonPlusAntiproton;
607 fIch = 1;
608 fIsi = 1;
609 } else if (((ktPid1 == 3122) && (ktPid2 == 2212)) || ((ktPid1 == -3122) && (ktPid2 == -2212))) {
610 fIsi = 1;
611 } else if (((ktPid1 == 3122) && (ktPid2 == 3122)) || ((ktPid1 == -3122) && (ktPid2 == -3122))) {
612 fIqs = 1;
613 fIsi = 1;
614 }
615 FsiInit();
616 SetPid(ktPid1, ktPid2);
617 }
619 Femto::EPairType type = Femto::PidToPairType(pair->GetPdg1(), pair->GetPdg2());
620 fPairType = type;
621 SetPid(pair->GetPdg1(), pair->GetPdg2());
622 }
623
624 Femto::EPairType FemtoWeightGeneratorLednicky2::GetPairType() const { return this->fPairType; }
625
627
629
631
633
635
637
639
641
644 return tmp;
645 }
646
648 fItest = 1;
649 fIqs = 1;
650 fIsi = 1;
651 fI3c = 0;
652 fIch = 1;
653 FsiInit();
654 fSphereApp = false;
655 fT0App = false;
656 }
657
659 fItest = 1;
660 fIch = 1;
661 FsiInit();
662 }
663
665 fItest = 1;
666 fIch = 0;
667 FsiInit();
668 }
669
671 fItest = 1;
672 fIqs = 1;
673 FsiInit();
674 }
675
677 fItest = 1;
678 fIqs = 0;
679 FsiInit();
680 }
681
683 fItest = 1;
684 fIsi = 1;
685 FsiInit();
686 }
687
689 fItest = 1;
690 fIsi = 0;
691 FsiInit();
692 }
693
695 fItest = 1;
696 fI3c = 1;
697 FsiInit();
698 FsiNucl();
699 }
700
702 fItest = 1;
703 fI3c = 0;
704 FsiInit();
705 fWeightDen = 1.;
706 FsiNucl();
707 }
708
710
712
714
716
717 void FemtoWeightGeneratorLednicky2::SetNuclCharge(const double aNuclCharge) {
718 fNuclCharge = aNuclCharge;
719 FsiNucl();
720 }
721
722 Bool_t FemtoWeightGeneratorLednicky2::IsPairSupported(Femto::EPairType type) const {
723 if (static_cast<int>(type) < 200) return kTRUE;
724 return kFALSE;
725 }
726
727 void FemtoWeightGeneratorLednicky2::SetNuclMass(const double aNuclMass) {
728 fNuclMass = aNuclMass;
729 FsiNucl();
730 }
731
733 // Initialize weight generation module
734 // cout << "*******************AliFemtoModelWeightGeneratorLednicky check
735 // FsiInit ************" << endl; cout <<"mItest dans FsiInit() = " <<
736 // fItest << endl; cout <<"mIch dans FsiInit() = " << fIch << endl; cout
737 // <<"mIqs dans FsiInit() = " << fIqs << endl; cout <<"mIsi dans FsiInit() =
738 // " << fIsi << endl; cout <<"mI3c dans FsiInit() = " << fI3c << endl;
739 fParser->Fsiin(fItest, fIch, fIqs, fIsi, fI3c);
740 }
741
742 Bool_t FemtoWeightGeneratorLednicky2::Init(Int_t task_id, FemtoPair* /*pair*/) {
743 FsiInit();
744 fTaskID = task_id;
745 return kTRUE;
746 }
747} // namespace Hal
Int_t GetPdg2() const
Definition FemtoPair.h:302
void PrintInfo() const
Double_t GetY1() const
Definition FemtoPair.h:197
Double_t GetY2() const
Definition FemtoPair.h:217
Double_t TruePx1() const
Definition FemtoPair.h:142
Double_t TruePy2() const
Definition FemtoPair.h:172
Double_t GetZ1() const
Definition FemtoPair.h:202
Double_t TruePy1() const
Definition FemtoPair.h:147
Double_t GetX2() const
Definition FemtoPair.h:212
Double_t TruePz2() const
Definition FemtoPair.h:177
Double_t TruePx2() const
Definition FemtoPair.h:167
Double_t GetZ2() const
Definition FemtoPair.h:222
Double_t TrueE1() const
Definition FemtoPair.h:157
Double_t GetT1() const
Definition FemtoPair.h:207
Double_t TrueE2() const
Definition FemtoPair.h:182
Double_t TruePz1() const
Definition FemtoPair.h:152
Int_t GetPdg1() const
Definition FemtoPair.h:297
Double_t GetT2() const
Definition FemtoPair.h:227
Double_t GetX1() const
Definition FemtoPair.h:192
virtual Double_t GenerateWeight(FemtoPair *pair)
virtual Bool_t IsPairSupported(Femto::EPairType type) const
FemtoWeightGeneratorLednicky2 & operator=(const FemtoWeightGeneratorLednicky2 &aWeight)
virtual FemtoWeightGenerator * Clone(const char *newname="") const
virtual void SetPairTypeFromPairAndConfigureFSI(FemtoPair *pair)
Bool_t Init(Int_t taks_id, FemtoPair *pair)
bool SetPid(const int aPid1, const int aPid2)
virtual void SetPairType(Femto::EPairType aPairType)
virtual Double_t GetKStar() const
virtual Double_t GetRStar() const
virtual Double_t GetRStarLong() const
virtual Double_t GetRStarOut() const
virtual Double_t GetKStarSide() const
virtual Double_t GetKStarLong() const
virtual Double_t GetRStarSide() const
virtual Double_t GetKStarOut() const