2e967919 |
1 | // ALICE event generator based on the THERMINATOR model |
2 | // It reads the test output of the model and puts it onto |
3 | // the stack |
ae89e57a |
4 | // It has an option to use the Lhyquid3D input freeze-out |
5 | // hypersurface |
2e967919 |
6 | // Author: Adam.Kisiel@cern.ch |
7 | |
8 | #include <iostream> |
9 | #include <fstream> |
10 | #include <sstream> |
11 | #include <TClonesArray.h> |
12 | #include <TMCProcess.h> |
13 | #include <TDatabasePDG.h> |
14 | #include <TParticle.h> |
15 | |
16 | #include "AliConst.h" |
17 | #include "AliDecayer.h" |
18 | #include "AliGenEventHeader.h" |
9abb118d |
19 | #include "AliGenHijingEventHeader.h" |
2e967919 |
20 | #include "AliGenTherminator.h" |
21 | #include "AliLog.h" |
22 | #include "AliRun.h" |
23 | |
24 | ClassImp(AliGenTherminator) |
25 | |
26 | using namespace std; |
27 | |
28 | AliGenTherminator::AliGenTherminator(): |
29 | AliGenMC(), |
30 | fNt(0), |
31 | fEventNumber(0), |
32 | fFileName(""), |
33 | fFreezeOutModel(""), |
9368eb75 |
34 | fFOHSlocation(""), |
2e967919 |
35 | fTemperature(0.1656), |
36 | fMiuI(-0.0009), |
37 | fMiuS(0.0), |
38 | fMiuB(0.0008), |
39 | fAlfaRange(6.0), |
40 | fRapRange(4.0), |
41 | fRhoMax(8.0), |
42 | fTau(8.0), |
43 | fBWA(0.0), |
44 | fBWVt(1.41), |
45 | fBWDelay(0.0) |
46 | { |
47 | // Default constructor |
9368eb75 |
48 | fFOHSlocation = ""; |
49 | |
50 | fEnergyCMS = 5500.; |
51 | fAProjectile = 208; |
52 | fZProjectile = 82; |
53 | fProjectile = "A"; |
54 | fATarget = 208; |
55 | fZTarget = 82; |
56 | fTarget = "A"; |
2e967919 |
57 | } |
58 | AliGenTherminator::AliGenTherminator(Int_t npart): |
59 | AliGenMC(npart), |
60 | fNt(0), |
61 | fEventNumber(0), |
62 | fFileName(""), |
63 | fFreezeOutModel(""), |
9368eb75 |
64 | fFOHSlocation(""), |
2e967919 |
65 | fTemperature(0.1656), |
66 | fMiuI(-0.0009), |
67 | fMiuS(0.0), |
68 | fMiuB(0.0008), |
69 | fAlfaRange(6.0), |
70 | fRapRange(4.0), |
71 | fRhoMax(8.0), |
72 | fTau(8.0), |
73 | fBWA(0.0), |
74 | fBWVt(1.41), |
75 | fBWDelay(0.0) |
76 | { |
77 | // Constructor specifying the size of the particle table |
2e967919 |
78 | fNprimaries = 0; |
9368eb75 |
79 | fEnergyCMS = 5500.; |
80 | fAProjectile = 208; |
81 | fZProjectile = 82; |
82 | fProjectile = "A"; |
83 | fATarget = 208; |
84 | fZTarget = 82; |
85 | fTarget = "A"; |
2e967919 |
86 | } |
87 | |
88 | AliGenTherminator::~AliGenTherminator() |
89 | { |
90 | // AliGenMC::~AliGenMC(); |
91 | // if (fTherminator) delete fTherminator; |
92 | } |
93 | |
94 | void AliGenTherminator::Generate() |
95 | { |
96 | // Run single event generation with the Therminator model |
97 | AliWarning("Generating event from AliGenTherminator"); |
98 | |
99 | Float_t polar[3] = {0,0,0}; |
100 | Float_t origin[3] = {0,0,0}; |
101 | Float_t origin0[3] = {0,0,0}; |
102 | Float_t p[3]; |
103 | Float_t mass, energy; |
104 | |
105 | Int_t nt = 0; |
106 | Int_t j, kf, ks, imo; |
107 | kf = 0; |
108 | |
109 | Vertex(); |
110 | for (j=0; j < 3; j++) origin0[j] = fVertex[j]; |
111 | |
112 | // Generate one event |
113 | |
114 | ((TTherminator *) fMCEvGen)->GenerateEvent(); |
115 | AliWarning("Generated"); |
8507138f |
116 | ((TTherminator *) fMCEvGen)->ImportParticles(&fParticles); |
2e967919 |
117 | |
8507138f |
118 | Int_t np = fParticles.GetEntriesFast(); |
2e967919 |
119 | AliWarning(Form("Imported %d particles", np)); |
120 | |
deb008f3 |
121 | Int_t *idsOnStack; |
122 | idsOnStack = new Int_t[np]; |
123 | |
2e967919 |
124 | TParticle *iparticle; |
9abb118d |
125 | Double_t evrot = gRandom->Rndm()*TMath::Pi(); |
2e967919 |
126 | |
127 | for (int i = 0; i < np; i++) { |
8507138f |
128 | iparticle = (TParticle *) fParticles.At(i); |
2e967919 |
129 | Bool_t hasMother = (iparticle->GetFirstMother() >=0); |
130 | Bool_t hasDaughter = (iparticle->GetFirstDaughter() >=0); |
131 | |
c9a371fc |
132 | if (hasDaughter) { |
133 | // This particle has decayed |
134 | // It will not be tracked |
135 | // Add it only once with coorduinates not |
136 | // smeared with primary vertex position |
137 | |
138 | kf = iparticle->GetPdgCode(); |
139 | ks = iparticle->GetStatusCode(); |
140 | Double_t aphi = TMath::ATan2(iparticle->Py(), iparticle->Px()); |
141 | Double_t arho = TMath::Hypot(iparticle->Px(), iparticle->Py()); |
142 | p[0] = arho*TMath::Cos(aphi + evrot); |
143 | p[1] = arho*TMath::Sin(aphi + evrot); |
144 | // p[0] = iparticle->Px(); |
145 | // p[1] = iparticle->Py(); |
146 | p[2] = iparticle->Pz(); |
147 | mass = TDatabasePDG::Instance()->GetParticle(kf)->Mass(); |
148 | energy = sqrt(mass*mass + p[0]*p[0] + p[1]*p[1] + p[2]*p[2]); |
149 | |
150 | Double_t vphi = TMath::ATan2(iparticle->Vy(), iparticle->Vx()); |
151 | Double_t vrho = TMath::Hypot(iparticle->Vx(), iparticle->Vy()); |
c9c8970c |
152 | origin[0] = vrho*TMath::Cos(vphi + evrot); |
153 | origin[1] = vrho*TMath::Sin(vphi + evrot); |
154 | origin[2] = iparticle->Vz(); |
c9a371fc |
155 | |
156 | imo = -1; |
157 | TParticle* mother = 0; |
158 | if (hasMother) { |
159 | imo = iparticle->GetFirstMother(); |
c9c8970c |
160 | mother = (TParticle *) fParticles.At(imo); |
c9a371fc |
161 | } // if has mother |
162 | Bool_t tFlag = (!hasDaughter); |
163 | |
9368eb75 |
164 | // printf("Pushing Track %d with status %d mother %d\n", kf, tFlag, imo>=0?idsOnStack[imo]:imo); |
d75811a6 |
165 | PushTrack(tFlag,imo>=0?idsOnStack[imo]:imo,kf, |
c9a371fc |
166 | p[0],p[1],p[2],energy, |
c9c8970c |
167 | origin[0],origin[1],origin[2],iparticle->T(), |
c9a371fc |
168 | polar[0],polar[1],polar[2], |
169 | hasMother ? kPDecay:kPNoProcess,nt); |
deb008f3 |
170 | idsOnStack[i] = nt; |
c9a371fc |
171 | fNprimaries++; |
172 | KeepTrack(nt); |
173 | } |
174 | else { |
175 | // This is a final state particle |
176 | // It will be tracked |
177 | // Add it TWICE to the stack !!! |
178 | // First time with event-wide coordicates (for femtoscopy) - |
179 | // this one will not be tracked |
180 | // Second time with event-wide ccordiantes and vertex smearing |
181 | // this one will be tracked |
182 | |
183 | kf = iparticle->GetPdgCode(); |
184 | ks = iparticle->GetStatusCode(); |
185 | Double_t aphi = TMath::ATan2(iparticle->Py(), iparticle->Px()); |
186 | Double_t arho = TMath::Hypot(iparticle->Px(), iparticle->Py()); |
187 | p[0] = arho*TMath::Cos(aphi + evrot); |
188 | p[1] = arho*TMath::Sin(aphi + evrot); |
189 | // p[0] = iparticle->Px(); |
190 | // p[1] = iparticle->Py(); |
191 | p[2] = iparticle->Pz(); |
192 | mass = TDatabasePDG::Instance()->GetParticle(kf)->Mass(); |
193 | energy = sqrt(mass*mass + p[0]*p[0] + p[1]*p[1] + p[2]*p[2]); |
194 | |
195 | Double_t vphi = TMath::ATan2(iparticle->Vy(), iparticle->Vx()); |
196 | Double_t vrho = TMath::Hypot(iparticle->Vx(), iparticle->Vy()); |
197 | origin[0] = vrho*TMath::Cos(vphi + evrot); |
198 | origin[1] = vrho*TMath::Sin(vphi + evrot); |
199 | origin[2] = iparticle->Vz(); |
200 | |
201 | imo = -1; |
202 | TParticle* mother = 0; |
203 | if (hasMother) { |
204 | imo = iparticle->GetFirstMother(); |
c9c8970c |
205 | mother = (TParticle *) fParticles.At(imo); |
c9a371fc |
206 | } // if has mother |
207 | Bool_t tFlag = (hasDaughter); |
208 | |
9368eb75 |
209 | // printf("Found mother %i with true id %i\n", imo, imo>=0?idsOnStack[imo]:imo); |
210 | // printf("Pushing Track %d with status %d mother %d\n", kf, tFlag, imo>=0?idsOnStack[imo]:imo); |
d75811a6 |
211 | PushTrack(tFlag,imo>=0?idsOnStack[imo]:imo,kf, |
c9a371fc |
212 | p[0],p[1],p[2],energy, |
c9c8970c |
213 | origin[0],origin[1],origin[2],iparticle->T(), |
c9a371fc |
214 | polar[0],polar[1],polar[2], |
215 | hasMother ? kPDecay:kPNoProcess,nt); |
deb008f3 |
216 | idsOnStack[i] = nt; |
c9a371fc |
217 | fNprimaries++; |
218 | KeepTrack(nt); |
219 | |
220 | origin[0] = origin0[0]+vrho*TMath::Cos(vphi + evrot); |
221 | origin[1] = origin0[1]+vrho*TMath::Sin(vphi + evrot); |
222 | origin[2] = origin0[2]+iparticle->Vz(); |
223 | |
224 | imo = nt; |
deb008f3 |
225 | // mother = (TParticle *) fParticles.At(nt); |
c9a371fc |
226 | tFlag = (!hasDaughter); |
227 | |
9368eb75 |
228 | // printf("Pushing Track %d with status %d mother %d\n", kf, tFlag, imo); |
c9a371fc |
229 | PushTrack(tFlag,imo,kf, |
230 | p[0],p[1],p[2],energy, |
c9c8970c |
231 | origin[0],origin[1],origin[2],iparticle->T(), |
c9a371fc |
232 | polar[0],polar[1],polar[2], |
233 | hasMother ? kPDecay:kPNoProcess,nt); |
234 | fNprimaries++; |
235 | KeepTrack(nt); |
236 | } |
2e967919 |
237 | } |
238 | |
deb008f3 |
239 | |
240 | |
2e967919 |
241 | SetHighWaterMark(fNprimaries); |
242 | |
243 | TArrayF eventVertex; |
244 | eventVertex.Set(3); |
245 | eventVertex[0] = origin0[0]; |
246 | eventVertex[1] = origin0[1]; |
247 | eventVertex[2] = origin0[2]; |
248 | |
9abb118d |
249 | // Builds the event header, to be called after each event |
250 | AliGenEventHeader* header = new AliGenHijingEventHeader("Therminator"); |
251 | |
2e967919 |
252 | // Header |
9abb118d |
253 | // AliGenEventHeader* header = new AliGenEventHeader("Therminator"); |
2e967919 |
254 | // Event Vertex |
9abb118d |
255 | // header->SetPrimaryVertex(eventVertex); |
256 | // header->SetNProduced(fNprimaries); |
257 | |
258 | ((AliGenHijingEventHeader*) header)->SetNProduced(fNprimaries); |
259 | ((AliGenHijingEventHeader*) header)->SetPrimaryVertex(eventVertex); |
260 | ((AliGenHijingEventHeader*) header)->SetImpactParameter(0.0); |
261 | ((AliGenHijingEventHeader*) header)->SetTotalEnergy(0.0); |
262 | ((AliGenHijingEventHeader*) header)->SetHardScatters(0); |
263 | ((AliGenHijingEventHeader*) header)->SetParticipants(0, 0); |
264 | ((AliGenHijingEventHeader*) header)->SetCollisions(0, 0, 0, 0); |
265 | ((AliGenHijingEventHeader*) header)->SetSpectators(0, 0, 0, 0); |
266 | ((AliGenHijingEventHeader*) header)->SetReactionPlaneAngle(evrot); |
267 | |
268 | |
269 | // 4-momentum vectors of the triggered jets. |
270 | // |
271 | // Before final state gluon radiation. |
272 | // TLorentzVector* jet1 = new TLorentzVector(fHijing->GetHINT1(21), |
273 | // fHijing->GetHINT1(22), |
274 | // fHijing->GetHINT1(23), |
275 | // fHijing->GetHINT1(24)); |
276 | |
277 | // TLorentzVector* jet2 = new TLorentzVector(fHijing->GetHINT1(31), |
278 | // fHijing->GetHINT1(32), |
279 | // fHijing->GetHINT1(33), |
280 | // fHijing->GetHINT1(34)); |
281 | // // After final state gluon radiation. |
282 | // TLorentzVector* jet3 = new TLorentzVector(fHijing->GetHINT1(26), |
283 | // fHijing->GetHINT1(27), |
284 | // fHijing->GetHINT1(28), |
285 | // fHijing->GetHINT1(29)); |
286 | |
287 | // TLorentzVector* jet4 = new TLorentzVector(fHijing->GetHINT1(36), |
288 | // fHijing->GetHINT1(37), |
289 | // fHijing->GetHINT1(38), |
290 | // fHijing->GetHINT1(39)); |
291 | // ((AliGenHijingEventHeader*) header)->SetJets(jet1, jet2, jet3, jet4); |
292 | // Bookkeeping for kinematic bias |
293 | // ((AliGenHijingEventHeader*) header)->SetTrials(fTrials); |
294 | // Event Vertex |
295 | header->SetPrimaryVertex(fVertex); |
296 | AddHeader(header); |
297 | fCollisionGeometry = (AliGenHijingEventHeader*) header; |
298 | |
4ce766eb |
299 | delete [] idsOnStack; |
deb008f3 |
300 | |
c9a371fc |
301 | // gAlice->SetGenEventHeader(header); |
2e967919 |
302 | } |
303 | |
304 | void AliGenTherminator::Init() |
305 | { |
306 | // Initialize global variables and |
307 | // particle and decay tables |
308 | if (fFileName.Length() == 0) |
309 | fFileName = "event.out"; |
310 | ReadShareParticleTable(); |
311 | |
312 | SetMC(new TTherminator()); |
313 | |
314 | AliGenMC::Init(); |
315 | ((TTherminator *) fMCEvGen)->Initialize(); |
316 | } |
317 | void AliGenTherminator::SetFileName(const char *infilename) |
318 | { |
319 | // Set parameter filename |
320 | fFileName = infilename; |
321 | } |
322 | void AliGenTherminator::SetEventNumberInFile(int evnum) |
323 | { |
324 | // Set number of events to generate - default: 1 |
325 | fEventNumber = evnum; |
326 | } |
327 | |
328 | void AliGenTherminator::ReadShareParticleTable() |
329 | { |
330 | // Read in particle table from share |
331 | // and add missing particle type to TDatabasePDG |
332 | |
333 | char str[50]; |
334 | char str1[200]; |
335 | |
336 | TDatabasePDG *tInstance = TDatabasePDG::Instance(); |
337 | TParticlePDG *tParticleType; |
338 | |
339 | AliWarning(Form("Reading particle types from particles.data")); |
ae89e57a |
340 | |
341 | TString aroot = gSystem->Getenv("ALICE_ROOT"); |
342 | ifstream in((aroot+"/TTherminator/data/SHARE/particles.data").Data()); |
343 | // ifstream in("particles.data"); |
2e967919 |
344 | |
345 | int charge; |
346 | |
347 | int number=0; |
348 | if ((in) && (in.is_open())) |
349 | { |
350 | //START OF HEAD-LINE |
351 | in.ignore(200,'\n'); |
352 | in.ignore(200,'\n'); |
353 | in.ignore(200,'\n'); |
354 | //END OF HEAD-LINE |
355 | |
356 | while (in>>str) |
357 | { |
358 | if (/*(*str == '#')||*/(*str<65)||(*str>122)) |
359 | { |
360 | in.getline(str1,200); |
361 | continue; |
362 | } |
363 | double mass, gamma, spin, tI3, tI, q, s, aq, as, c, ac, mc; |
364 | |
365 | in>>mass>>gamma>>spin>>tI>>tI3>>q>>s>>aq>>as>>c>>ac>>mc; |
366 | number++; |
367 | tParticleType = tInstance->GetParticle((int) mc); |
368 | if (!tParticleType) { |
369 | charge = 0; |
370 | if (strstr(str, "plu")) charge = 1; |
371 | if (strstr(str, "min")) charge = -1; |
372 | if (strstr(str, "plb")) charge = -1; |
373 | if (strstr(str, "mnb")) charge = 1; |
374 | if (strstr(str, "plp")) charge = 2; |
375 | if (strstr(str, "ppb")) charge = -2; |
376 | tInstance->AddParticle(str, str, mass, gamma == 0.0 ? 1:0, gamma, charge , "meson", (int) mc); |
377 | AliWarning(Form("Added particle %s with PDG PID %d charge %d", str, (int) mc, charge)); |
378 | // AliWarning(Form("Quantum numbers q s c aq as ac tI3 %lf %lf %lf %lf %lf %lf %lf", q, s, c, aq, as, ac, tI3)); |
379 | |
380 | } |
381 | } |
382 | in.close(); |
383 | } |
384 | CreateTherminatorInputFile(); |
385 | } |
386 | |
387 | void AliGenTherminator::CreateTherminatorInputFile() |
388 | { |
389 | // Create Therminator input file |
ae89e57a |
390 | const char *aroot = gSystem->Getenv("ALICE_ROOT"); |
2e967919 |
391 | ofstream *ostr = new ofstream("therminator.in"); |
392 | (*ostr) << "NumberOfEvents = 1" << endl; |
393 | (*ostr) << "Randomize = 1" << endl; |
394 | (*ostr) << "TableType = SHARE" << endl; |
ae89e57a |
395 | (*ostr) << "InputDirSHARE = "<< aroot << "/TTherminator/data/SHARE" << endl; |
2e967919 |
396 | (*ostr) << "EventOutputFile = " << fFileName.Data() << endl; |
ae89e57a |
397 | (*ostr) << "FOHSLocation = " << fFOHSlocation.Data() << endl; |
2e967919 |
398 | (*ostr) << "FreezeOutModel = " << fFreezeOutModel.Data() << endl; |
399 | (*ostr) << "BWVt = " << fBWVt << endl; |
400 | (*ostr) << "Tau = " << fTau << endl; |
401 | (*ostr) << "RhoMax = " << fRhoMax << endl; |
402 | (*ostr) << "Temperature = " << fTemperature << endl; |
403 | (*ostr) << "MiuI = " << fMiuI << endl; |
404 | (*ostr) << "MiuS = " << fMiuS << endl; |
405 | (*ostr) << "MiuB = " << fMiuB << endl; |
406 | (*ostr) << "AlphaRange = " << fAlfaRange << endl; |
407 | (*ostr) << "RapidityRange = " << fRapRange << endl; |
408 | (*ostr) << "NumberOfIntegrateSamples = 1000000" << endl; |
409 | } |
410 | |
411 | void AliGenTherminator::SetModel(const char *model) |
412 | { |
413 | // Set the freeze-out model to use |
414 | fFreezeOutModel = model; |
9368eb75 |
415 | AliWarning(Form("Selected model %s", fFreezeOutModel.Data())); |
416 | AliWarning(Form("FOHSLocation is %s", fFOHSlocation.Data())); |
2e967919 |
417 | } |
ae89e57a |
418 | |
419 | void AliGenTherminator::SetLhyquidSet(const char *set) |
420 | { |
421 | // Select one of pregenerated Lhyquid hypersurfaces |
422 | const char *aroot = gSystem->Getenv("ALICE_ROOT"); |
423 | if (strstr(set, "LHC500C0005")) { |
424 | AliWarning(Form("AliGenTherminator: Selected default Lhyquid hypersurface")); |
7d4c52b2 |
425 | AliWarning(Form(" Pb-Pb collisions, centrality 0-5 percent")); |
ae89e57a |
426 | AliWarning(Form(" initial temperature at tau=1 fm in the center Ti=500 MeV")); |
427 | AliWarning(Form(" freeze-out criteria Tf=145 MeV")); |
428 | AliWarning(Form(" for details see $(ALICE_ROOT)/TTherminator/data/LHC500C0005/FO.txt")); |
9368eb75 |
429 | fFOHSlocation.Append(aroot); |
430 | fFOHSlocation.Append("/TTherminator/data/LHC500C0005"); |
431 | } |
432 | if (strstr(set, "LHC500C0510")) { |
433 | AliWarning(Form("AliGenTherminator: Selected default Lhyquid hypersurface")); |
434 | AliWarning(Form(" Pb-Pb collisions, centrality 5-10 percent")); |
435 | AliWarning(Form(" initial temperature at tau=1 fm in the center Ti=500 MeV")); |
436 | AliWarning(Form(" freeze-out criteria Tf=145 MeV")); |
437 | AliWarning(Form(" for details see $(ALICE_ROOT)/TTherminator/data/LHC500C0510/FO.txt")); |
438 | fFOHSlocation.Append(aroot); |
439 | fFOHSlocation.Append("/TTherminator/data/LHC500C0510"); |
440 | } |
441 | if (strstr(set, "LHC500C1020")) { |
442 | AliWarning(Form("AliGenTherminator: Selected default Lhyquid hypersurface")); |
443 | AliWarning(Form(" Pb-Pb collisions, centrality 10-20 percent")); |
444 | AliWarning(Form(" initial temperature at tau=1 fm in the center Ti=500 MeV")); |
445 | AliWarning(Form(" freeze-out criteria Tf=145 MeV")); |
446 | AliWarning(Form(" for details see $(ALICE_ROOT)/TTherminator/data/LHC500C1020/FO.txt")); |
447 | fFOHSlocation.Append(aroot); |
448 | fFOHSlocation.Append("/TTherminator/data/LHC500C1020"); |
ae89e57a |
449 | } |
450 | else if (strstr(set, "LHC500C2030")) { |
451 | AliWarning(Form("AliGenTherminator: Selected default Lhyquid hypersurface")); |
7d4c52b2 |
452 | AliWarning(Form(" Pb-Pb collisions, centrality 20-30 percent")); |
ae89e57a |
453 | AliWarning(Form(" initial temperature at tau=1 fm in the center Ti=500 MeV")); |
454 | AliWarning(Form(" freeze-out criteria Tf=145 MeV")); |
455 | AliWarning(Form(" for details see $(ALICE_ROOT)/TTherminator/data/LHC500C2030/FO.txt")); |
9368eb75 |
456 | fFOHSlocation.Append(aroot); |
457 | fFOHSlocation.Append("/TTherminator/data/LHC500C2030"); |
458 | } |
459 | else if (strstr(set, "LHC500C3040")) { |
460 | AliWarning(Form("AliGenTherminator: Selected default Lhyquid hypersurface")); |
461 | AliWarning(Form(" Pb-Pb collisions, centrality 30-40 percent")); |
462 | AliWarning(Form(" initial temperature at tau=1 fm in the center Ti=500 MeV")); |
463 | AliWarning(Form(" freeze-out criteria Tf=145 MeV")); |
464 | AliWarning(Form(" for details see $(ALICE_ROOT)/TTherminator/data/LHC500C3040/FO.txt")); |
465 | fFOHSlocation.Append(aroot); |
466 | fFOHSlocation.Append("/TTherminator/data/LHC500C3040"); |
467 | } |
468 | else if (strstr(set, "LHC500C4050")) { |
469 | AliWarning(Form("AliGenTherminator: Selected default Lhyquid hypersurface")); |
470 | AliWarning(Form(" Pb-Pb collisions, centrality 40-50 percent")); |
471 | AliWarning(Form(" initial temperature at tau=1 fm in the center Ti=500 MeV")); |
472 | AliWarning(Form(" freeze-out criteria Tf=145 MeV")); |
473 | AliWarning(Form(" for details see $(ALICE_ROOT)/TTherminator/data/LHC500C4050/FO.txt")); |
474 | fFOHSlocation.Append(aroot); |
475 | fFOHSlocation.Append("/TTherminator/data/LHC500C4050"); |
ae89e57a |
476 | } |
477 | else { |
478 | AliWarning(Form("Did not find Lhyquid set %s", set)); |
479 | AliWarning(Form("Reverting to default: current directory")); |
9368eb75 |
480 | fFOHSlocation += ""; |
ae89e57a |
481 | } |
9368eb75 |
482 | |
ae89e57a |
483 | } |
484 | |
485 | void AliGenTherminator::SetLhyquidInputDir(const char *inputdir) |
486 | { |
487 | // Select Your own Lhyquid hypersurface |
488 | fFOHSlocation = inputdir; |
489 | } |