+// Deconvoluted Pt Y formula
+
+static Double_t aPtForm(Double_t * x, Double_t * par) {
+ // ptForm: pt -> x[0] , mass -> [0] , temperature -> [1]
+ // Description as string: " x * exp( -sqrt([0]*[0] + x*x) / [1] )"
+
+ return x[0] * TMath::Exp( -sqrt(par[0]*par[0] + x[0]*x[0]) / par[1]);
+ }
+
+static Double_t aYForm(Double_t * x, Double_t * par) {
+ // y Form: y -> x[0] , sigmaY -> [0]
+ // Description as string: " exp ( - x*x / (2 * [0]*[0] ) )"
+
+ return TMath::Exp ( - x[0]*x[0] / (2 * par[0]*par[0] ) );
+ }
+
+// Models 1-3
+// Description as strings:
+
+// const char *kFormE = " ( sqrt([0]*[0] + x*x) * cosh(y) ) ";
+// const char *kFormG = " ( 1 / sqrt( 1 - [2]*[2] ) ) ";
+// const char *kFormYp = "( [2]*sqrt(([0]*[0]+x*x)*cosh(y)*cosh(y)-[0]*[0])/([1]*sqrt(1-[2]*[2]))) ";
+
+// const char* kFormula[3] = {
+// " x * %s * exp( -%s / [1]) ",
+// " (x * %s) / ( exp( %s / [1]) - 1 ) ",
+// " x*%s*exp(-%s*%s/[1])*((sinh(%s)/%s)+([1]/(%s*%s))*(sinh(%s)/%s-cosh(%s)))"
+// };
+// printf(kFormula[0], kFormE, kFormE);
+// printf(kFormula[1], kFormE, kFormE);
+// printf(kFormula[2], kFormE, kFormG, kFormE, kFormYp, kFormYp, kFormG, kFormE, kFormYp, kFormYp, kFormYp);
+
+
+static Double_t aPtYFormula0(Double_t *x, Double_t * par) {
+ // pt -> x , Y -> y
+ // mass -> [0] , temperature -> [1] , expansion velocity -> [2]
+
+ Double_t aFormE = TMath::Sqrt(par[0]*par[0] + x[0]*x[0]) * TMath::CosH(x[1]);
+ return x[0] * aFormE * TMath::Exp(-aFormE/par[1]);
+}
+
+static Double_t aPtYFormula1(Double_t *x, Double_t * par) {
+ // pt -> x , Y -> y
+ // mass -> [0] , temperature -> [1] , expansion velocity -> [2]
+
+ Double_t aFormE = TMath::Sqrt(par[0]*par[0] + x[0]*x[0]) * TMath::CosH(x[1]);
+ return x[0] * aFormE / ( TMath::Exp( aFormE / par[1]) - 1 );
+}
+
+static Double_t aPtYFormula2(Double_t *x, Double_t * par) {
+ // pt -> x , Y -> y
+ // mass -> [0] , temperature -> [1] , expansion velocity -> [2]
+
+ Double_t aFormE = TMath::Sqrt(par[0]*par[0] + x[0]*x[0]) * TMath::CosH(x[1]);
+ Double_t aFormG = 1 / TMath::Sqrt((1.-par[2])*(1.+par[2]));
+ Double_t aFormYp = par[2]*TMath::Sqrt( (par[0]*par[0] + x[0]*x[0])
+ * (TMath::CosH(x[1])-par[0])*(TMath::CosH(x[1])+par[0]))
+ /( par[1]*TMath::Sqrt((1.-par[2])*(1.+par[2])));
+
+ return x[0] * aFormE * TMath::Exp( - aFormG * aFormE / par[1])
+ *( TMath::SinH(aFormYp)/aFormYp
+ + par[1]/(aFormG*aFormE)
+ * ( TMath::SinH(aFormYp)/aFormYp-TMath::CosH(aFormYp) ) );
+}
+
+// Phi Flow Formula
+
+static Double_t aPhiForm(Double_t * x, Double_t * par) {
+ // phi -> x
+ // Psi -> [0] , Direct Flow -> [1] , Elliptical Flow -> [2]
+ // Description as string: " 1 + 2*[1]*cos(x-[0]) + 2*[2]*cos(2*(x-[0])) "
+
+ return 1 + 2*par[1]*TMath::Cos(x[0]-par[0])
+ + 2*par[2]*TMath::Cos(2*(x[0]-par[0]));
+}
+