Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
FemtoFreezoutGenerator.cxx
1/*
2 * FemtoFreezoutGenerator.cxx
3 *
4 * Created on: 26-11-2013
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9
10#include "FemtoFreezoutGenerator.h"
11#include "FemtoPair.h"
12#include <TLorentzVector.h>
13#include <TMath.h>
14
15#include "Cout.h"
16#include "FemtoSourceModelGauss.h"
17#include "Package.h"
18#include "Parameter.h"
19#include "Std.h"
20
21namespace Hal {
22 FemtoFreezoutGenerator::FemtoFreezoutGenerator() {}
23
24 FemtoFreezoutGenerator::FemtoFreezoutGenerator(const FemtoSourceModel& source) {
25 fModel = (FemtoSourceModel*) source.MakeCopy();
26 }
27
29 if (fModel) delete fModel;
30 fModel = model.MakeCopy();
31 }
32
37
39 if (!fModel) {
40 Cout::PrintInfo("No freezout model !", EInfo::kLowWarning);
42 }
43 Bool_t init = fModel->Init();
44 if (!init) { Cout::PrintInfo("Problem with initialization of source model", EInfo::kError); }
45 return init;
46 }
47
49 Package* pack = new Package(this);
50 pack->AddObject(fModel->Report());
51 return pack;
52 }
53
54 FemtoFreezoutGenerator::~FemtoFreezoutGenerator() {
55 if (fModel) delete fModel;
56 }
57
58 FemtoFreezoutGeneratorLCMS::FemtoFreezoutGeneratorLCMS() {}
59
61 // like in AliFemtoModelGausLCMSFreezeOutGenerator
62 // std::cout<<"boost lscm"<<std::endl;
63 // std::cout<<pair->Px2()<<std::endl;
64 Double_t tPx = pair->TruePx1() + pair->TruePx2();
65 Double_t tPy = pair->TruePy1() + pair->TruePy2();
66 Double_t tPz = pair->TruePz1() + pair->TruePz2();
67 Double_t tE1 = pair->TrueE1();
68 Double_t tE2 = pair->TrueE2();
69 Double_t tEs = tE1 + tE2;
70 // std::cout<<"booster "<<std::endl;
71 // pair->PrintInfo();
72 Double_t tPt = sqrt(tPx * tPx + tPy * tPy);
73 Double_t tRout = fModel->GetROut();
74 Double_t tRside = fModel->GetRSide();
75 Double_t tRlong = fModel->GetRLong();
76 // std::cout<<" too boost "<<tRout<<" "<<tRside<<" "<<tRlong<<std::endl;
77 //-----------------------------------------------------------------
78 // tPy = -tPy;
79 // X1.Boost(0,0,tPz/tEs);
80 // tRout = gRandom->Gaus(0,1);
81 Double_t tXout = (tPx * tRout + tPy * tRside) / tPt;
82 Double_t tXside = (tPy * tRout - tPx * tRside) / tPt;
83 // why ?
84 // tXout = (tRout*tPx - tRside*tPy)/tPt;
85 // tXside = (tRside*tPx + tRout*tPy)/tPt;
86 Double_t tBetaz = tPz / tEs;
87 Double_t tGammaz = 1.0 / TMath::Sqrt(1 - tBetaz * tBetaz);
88
89 Double_t tXlong = tGammaz * (tRlong + tBetaz * 0.0);
90 Double_t tXtime = tGammaz * (0.0 + tBetaz * tRlong);
91
92 pair->SetX1(0);
93 pair->SetY1(0);
94 pair->SetZ1(0);
95 pair->SetT1(0);
96 pair->SetX2(tXout);
97 pair->SetY2(tXside);
98 pair->SetZ2(tXlong);
99 pair->SetT2(tXtime);
100
101#ifdef _kinetic_debug
102 std::cout << "source generator" << std::endl;
103 pair->PrintInfo();
104#endif
105 }
106
109 pack->AddObject(new ParameterString("source kinematics", "LCMS"));
110 return pack;
111 }
112
113 FemtoFreezoutGeneratorLCMS::~FemtoFreezoutGeneratorLCMS() {}
114
115 FemtoFreezoutGeneratorPRF::FemtoFreezoutGeneratorPRF() {
116 // Cout::CriticalError("PRF freezeout generator Not ready yet");
117 }
118
120 Double_t tPx = pair->TruePx1() + pair->TruePx2();
121 Double_t tPy = pair->TruePy1() + pair->TruePy2();
122 Double_t tPz = pair->TruePz1() + pair->TruePz2();
123 Double_t tE1 = pair->TrueE1();
124 Double_t tE2 = pair->TrueE2();
125 Double_t tEs = tE1 + tE2;
126
127 Double_t tRout = fModel->GetROut();
128 Double_t tRside = fModel->GetRSide();
129 Double_t tRlong = fModel->GetRLong();
130 // hardcore going to lab coordintates
131 // TODO speed up this part
132 TLorentzVector P(tPx, tPy, tPz, tEs);
133 P.Boost(0, 0, -tPz / tEs);
134 TLorentzVector X(-tRout, -tRside, -tRlong, 0);
135 X.Boost(P.Pt() / P.E(), 0, 0);
136 X.RotateZ(TMath::ATan2(tPy, tPx));
137 X.Boost(0, 0, tPz / tEs);
138 pair->SetX1(0);
139 pair->SetY1(0);
140 pair->SetZ1(0);
141 pair->SetT1(0);
142 pair->SetX2(X.X());
143 pair->SetY2(X.Y());
144 pair->SetZ2(X.Z());
145 pair->SetT2(X.T());
146 // Xx.Print();
147 // X.Print();
148 }
149
152 pack->AddObject(new ParameterString("source kinematics", "PRF"));
153 return pack;
154 }
155
156 FemtoFreezoutGeneratorPRF::~FemtoFreezoutGeneratorPRF() {}
157
159
161
162 FemtoFreezoutGenerator::FemtoFreezoutGenerator(const FemtoFreezoutGenerator& generator) : TObject(generator) {
163 if (generator.fModel) fModel = generator.fModel->MakeCopy();
164 }
165
166 FemtoFreezoutGeneratorLCMS::FemtoFreezoutGeneratorLCMS(const FemtoFreezoutGeneratorLCMS& generator) :
167 FemtoFreezoutGenerator(generator) {}
168
169 FemtoFreezoutGeneratorLCMS::FemtoFreezoutGeneratorLCMS(const FemtoSourceModel& model) : FemtoFreezoutGenerator(model) {}
170
171 FemtoFreezoutGeneratorPRF::FemtoFreezoutGeneratorPRF(const FemtoFreezoutGeneratorPRF& generator) :
172 FemtoFreezoutGenerator(generator) {}
173
174 FemtoFreezoutGeneratorPRF::FemtoFreezoutGeneratorPRF(const FemtoSourceModel& model) : FemtoFreezoutGenerator(model) {}
175
176 void FemtoFreezoutGenerator::Print(Option_t* /*option*/) const {
177 Cout::Text(ClassName(), "L");
178 if (fModel) {
179 fModel->Print();
180 } else {
181 Cout::Text("No model!", "L");
182 }
183 }
184} // namespace Hal
static void Text(TString text, TString option="L", Color_t color=-1)
Definition Cout.cxx:92
static void PrintInfo(TString text, Hal::EInfo status)
Definition Cout.cxx:370
FemtoFreezoutGenerator * MakeCopy() const
FemtoFreezoutGenerator * MakeCopy() const
void GenerateFreezoutCooordinates(FemtoPair *Pair)
virtual void Boost(FemtoPair *pair)=0
virtual Package * Report() const
void SetSourceModel(const FemtoSourceModel &model)
void PrintInfo() const
void SetT2(Double_t val)
Definition FemtoPair.h:382
void SetZ1(Double_t val)
Definition FemtoPair.h:357
void SetY1(Double_t val)
Definition FemtoPair.h:352
void SetZ2(Double_t val)
Definition FemtoPair.h:377
void SetY2(Double_t val)
Definition FemtoPair.h:372
void SetX2(Double_t val)
Definition FemtoPair.h:367
Double_t TruePx1() const
Definition FemtoPair.h:142
Double_t TruePy2() const
Definition FemtoPair.h:172
void SetT1(Double_t val)
Definition FemtoPair.h:362
Double_t TruePy1() const
Definition FemtoPair.h:147
Double_t TruePz2() const
Definition FemtoPair.h:177
Double_t TruePx2() const
Definition FemtoPair.h:167
void SetX1(Double_t val)
Definition FemtoPair.h:347
Double_t TrueE1() const
Definition FemtoPair.h:157
Double_t TrueE2() const
Definition FemtoPair.h:182
Double_t TruePz1() const
Definition FemtoPair.h:152
virtual FemtoSourceModel * MakeCopy() const =0
virtual Package * Report() const
Double_t GetRLong() const
virtual void GenerateCoordinates(FemtoPair *Pair)=0
Double_t GetRSide() const
Double_t GetROut() const
void AddObject(TObject *object)
Definition Package.cxx:209