]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TUHKMgen/UHKM/StrangePotential.cxx
New generator: TUHKMgen
[u/mrichter/AliRoot.git] / TUHKMgen / UHKM / StrangePotential.cxx
diff --git a/TUHKMgen/UHKM/StrangePotential.cxx b/TUHKMgen/UHKM/StrangePotential.cxx
new file mode 100644 (file)
index 0000000..0e47954
--- /dev/null
@@ -0,0 +1,54 @@
+/*                                                                            
+                                                                            
+        Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna
+      amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru 
+                           November. 2, 2006                                
+
+*/
+
+#ifndef NAStrangePotential_h
+#include "StrangePotential.h"
+#endif
+
+Double_t NAStrangePotential::CalculateStrangePotential() {
+  Double_t minFunction = this->operator()(fMinStrangePotential);
+  Double_t maxFunction = this->operator()(fMaxStrangePotential); 
+  
+  Int_t iter = 0;  
+  while(minFunction < 0.0 && iter++ < fNIteration) {
+    fMinStrangePotential -= 0.5*fMinStrangePotential;
+    minFunction = this->operator()(fMinStrangePotential);
+  }
+   
+  iter = 0;  
+  while(minFunction*maxFunction > 0.0 && iter++ < fNIteration) {
+    fMaxStrangePotential += 1.5*Abs(fMaxStrangePotential-fMinStrangePotential);
+    maxFunction = this->operator()(fMaxStrangePotential);
+  }
+       
+  if(minFunction*maxFunction > 0.0) {
+    Error("StrangePotential::CalculateStrangePotential", "minFunction*maxFunction is positive!\n");
+    return 0.;
+  }
+
+  NAEquationSolver<NAStrangePotential> * theSolver = 
+    new NAEquationSolver<NAStrangePotential>(fNSolverIteration, fTolerance);
+
+  theSolver->SetIntervalLimits(fMinStrangePotential, fMaxStrangePotential);
+  
+  if (!theSolver->Brent(*this))
+    Error("StrangePotential::CalculateStrangePotential", "the root is not found!\n");
+  
+  Double_t strangePotential = theSolver->GetRoot();
+  delete theSolver;
+  return strangePotential;
+}
+
+//calculate hadron system strange density
+Double_t NAStrangePotential::CalculateStrangeDensity(const Double_t strangePotential)
+{
+  fGc.SetStrangePotential(strangePotential);
+  fGc.SetTemperature(fTemperature);
+  fGc.SetBaryonPotential(fBaryonPotential);
+  return fGc.StrangenessDensity(fDatabase);
+}