]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TUHKMgen/UHKM/StrangePotential.cxx
New generator: TUHKMgen
[u/mrichter/AliRoot.git] / TUHKMgen / UHKM / StrangePotential.cxx
1 /*                                                                            
2                                                                             
3         Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna
4       amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru 
5                            November. 2, 2006                                
6
7 */
8
9 #ifndef NAStrangePotential_h
10 #include "StrangePotential.h"
11 #endif
12
13 Double_t NAStrangePotential::CalculateStrangePotential() {
14   Double_t minFunction = this->operator()(fMinStrangePotential);
15   Double_t maxFunction = this->operator()(fMaxStrangePotential); 
16   
17   Int_t iter = 0;  
18   while(minFunction < 0.0 && iter++ < fNIteration) {
19     fMinStrangePotential -= 0.5*fMinStrangePotential;
20     minFunction = this->operator()(fMinStrangePotential);
21   }
22    
23   iter = 0;  
24   while(minFunction*maxFunction > 0.0 && iter++ < fNIteration) {
25     fMaxStrangePotential += 1.5*Abs(fMaxStrangePotential-fMinStrangePotential);
26     maxFunction = this->operator()(fMaxStrangePotential);
27   }
28         
29   if(minFunction*maxFunction > 0.0) {
30     Error("StrangePotential::CalculateStrangePotential", "minFunction*maxFunction is positive!\n");
31     return 0.;
32   }
33
34   NAEquationSolver<NAStrangePotential> * theSolver = 
35     new NAEquationSolver<NAStrangePotential>(fNSolverIteration, fTolerance);
36
37   theSolver->SetIntervalLimits(fMinStrangePotential, fMaxStrangePotential);
38   
39   if (!theSolver->Brent(*this))
40     Error("StrangePotential::CalculateStrangePotential", "the root is not found!\n");
41   
42   Double_t strangePotential = theSolver->GetRoot();
43   delete theSolver;
44   return strangePotential;
45 }
46
47 //calculate hadron system strange density
48 Double_t NAStrangePotential::CalculateStrangeDensity(const Double_t strangePotential)
49 {
50   fGc.SetStrangePotential(strangePotential);
51   fGc.SetTemperature(fTemperature);
52   fGc.SetBaryonPotential(fBaryonPotential);
53   return fGc.StrangenessDensity(fDatabase);
54 }