ROOT logo
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <Riostream.h>
#include <complex>

#include "TObject.h"
#include "TTree.h"
#include "TBranch.h"
#include "TLeaf.h"
#include "TVector2.h"
#include "TVector3.h"
#include "TFile.h"
#include "TString.h"
#include "TF1.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TMath.h"
#include "TText.h"
#include "TRandom3.h"
#include "TArray.h"
#include "TLegend.h"
#include "TStyle.h"
#include "TMinuit.h"
#include "TChain.h"
#include "TLorentzVector.h"

#define PI 3.1415926
#define BohrR 1963.6885 // Mate's value(1963.6885) ~ 387.5/0.197327(1963.7455)
#define FmToGeV 0.197327 // 0.197327
#define fzero_aa 0.942597 // 0.186fm/FmToGeV (scattering length of pi+pi-) = 0.942597
#define fzero_ab -0.89192 // -0.176fm/FmtoGeV (scattering length (pi+pi-)-->(pi0pi0) = -0.89192
#define fzero_bb 0.3119 // fzero_aa + 1/sqrt(2)*fzero_ab = 0.0615/FmToGeV = 0.3119
#define dzero -50.6773 // -10/FmToGeV = -50.6773 (effective range)
#define EulerC 0.5772156649 // Euler constant
#define masspi0 0.1349766 // pi0 mass
#define masspiC 0.1395702 // pi+ mass
#define massKch 0.493677 // K+- mass
#define massK0 0.497614 // K0 mass

#define SF 1.0 // Scale Factor for spatial coordinates
#define SF_Mom 1.0 // Scale Factor to reduce momenta
#define RstarMax 405.4/SF // 405.4 (80 fm / FmToGeV), tried 253.4 (50 fm / FmToGeV) as a variation
#define RstarMin 0.507/SF // 0.507 (0.1 fm / FmToGeV)
using namespace std;

// g and p used in Gamma function
const int g_gamma = 7;
double p_gamma[9] = {0.99999999999980993, 676.5203681218851, -1259.1392167224028, 771.32342877765313, -176.61502916214059, 12.507343278686905, -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7};
// h coefficients for very small kstar (eta > 0.2)
double hcoef[15]={.8333333333e-1, .8333333333e-2, .396825396825e-2, .4166666667e-2, .7575757576e-2, .2109279609e-1, .8333333333e-1, .4432598039e0 , .305395433e1, .2645621212e2, .2814601449e3, .3607510546e4, .5482758333e5, .9749368235e6, .200526958e8};
// Scattering length (in GeV) coefficients in isospin representation from Lednicky's code from Colangelo (2001)
double fzero[2][6]={{.220, .268,-.0139,-.00139, 36.77, 15*0}, {-.0444,-.0857,-.00221,-.000129,-21.62, 15*0}};

double massPOI;
int PIDPOI;
double qCutOff;

float Gamov(float);
float fact(float);
double hFunction(double);
double KinverseFunction(double, int);
void Shuffle(int*, int, int);
void BoostPRF(float [4], float [4], float [4], TVector3*);


complex<double> gamma(complex<double> z)
{// Lanczos approximation
   
  if(floor(abs(z)) == z)
    return fact(abs(z)-1.0);
      
  if(real(z)<(double)(0.5)) return PI/(sin(PI*z)*gamma((1.0-z)));
  z -= 1.0;
  complex<double> x = p_gamma[0];
  for(int i=1;i<g_gamma+2;i++) x = x+p_gamma[i]/(z+(double)i);
  complex<double> t = z+(double)g_gamma+0.5;
  return sqrt(2*PI)*pow(t,z+0.5)*exp(-t)*x;
}

// confluent hypergeometric function
complex<double> conf_hyp(complex<double> a, complex<double> b, complex<double> z)
{// b is assumed to be 1.0 here
  complex<double> S(1.0, 0.0);
  complex<double> F=S;
  complex<double> alf1 = a - 1.0;
  double J=0;
  double errorCutOff=0.00001;// series truncation point (0.00001, 1e-6 for strict case)
  if(abs(z) > 40.) {// high k*r* case (was 20., now 40. Improved accuracy for qinv>60 MeV)
    double eta = -a.imag();
    double RKS = z.imag();
    double D1 = log(RKS)*eta;
    double D2 = pow(eta,2)/RKS;
    complex<double> arg(1.0, eta);
    complex<double> EIDC = gamma(arg);
    EIDC /= abs(EIDC);
    complex<double> ZZ1(cos(D1), sin(D1));
    ZZ1 /= EIDC;
    complex<double> value(1.0, -D2);
    value *= ZZ1;
    complex<double> value2(cos(RKS), sin(RKS));
    F = value - value2*eta/RKS/ZZ1;
    return F;
  }else {// low k*r* case
    while(fabs(S.real())+fabs(S.imag()) > errorCutOff){
      J++;
      complex<double> A = (alf1 + J)/(pow(J,2));
      S *= A*z;
      F += S;
    }
    return F;
  }
}

void Therm(){

  TRandom3 *RandomNumber = new TRandom3();
  RandomNumber->SetSeed(0);
  
  
  bool StrongFSI=kTRUE;
  bool LambdaDirect=kFALSE;
  bool RemoveXP=kFALSE;
  bool Gaussian=kFALSE;
  bool ThreeParticle=kFALSE;
  bool BoostPairsIntoPRF=kTRUE;
  massPOI = masspiC;
  PIDPOI = 211;// 211 for pi+-
  qCutOff = 0.1;// 0.1 or 0.4 for pp
  int qBins = int(qCutOff/0.002);
  //
  int Nfiles=1000;// 1000 for b2, 500 b3-b5, 1500 b7-b8, 3000 b9
  int bValue=2;

  double RValue=8;// Gaussian radius
  double NsigmaGauss=2;// number of sigma to integrate over for a Gaussian source
  if(bValue==2) RValue=8;//8
  if(bValue==3) RValue=8;//8
  if(bValue==5) RValue=7;//7
  if(bValue==7) RValue=6;//6
  if(bValue==8) RValue=5;//5
  if(bValue==9) RValue=5;//5
  TF1 *SingleParticleGaussian = new TF1("SingleParticleGaussian","exp(-pow(x/(sqrt(2.)*[0]),2))",0,1000);
  SingleParticleGaussian->SetParameter(0,RValue);

  TFile *outfile = new TFile("Therm_dist_temp.root","RECREATE");
  TH1D *r_dist=new TH1D("r_dist","",400,0,100);
  TH1D *x_dist=new TH1D("x_dist","",400,0,100);
  TH1D *Pt_dist=new TH1D("Pt_dist","",200,0,2);
  TH1D *P_dist=new TH1D("P_dist","",900,0.1,1);
  TH1D *P_dist_lowq=new TH1D("P_dist_lowq","",900,0.1,1);
  TProfile *AvgMult = new TProfile("AvgMult","",1,0.5,1.5, 0,2000,"");
  //
  TH2D *rstarPRF_dist_ss=new TH2D("rstarPRF_dist_ss","",20,0,1.0, 400,0,100);
  TH2D *tstar_dist_ss=new TH2D("tstar_dist_ss","",20,0,1.0, 400,0,100);
  //
  TH2D *rstarPRF_dist_os=new TH2D("rstarPRF_dist_os","",20,0,1.0, 400,0,100);
  TH2D *tstar_dist_os=new TH2D("tstar_dist_os","",20,0,1.0, 400,0,100);

  TH2D *Num_Cos_ss=new TH2D("Num_Cos_ss","",20,0,1, 40,0,0.2);
  TH2D *Num_Cos_os=new TH2D("Num_Cos_os","",20,0,1, 40,0,0.2);
  TH2D *Num_CosFSI_ss=new TH2D("Num_CosFSI_ss","",20,0,1, 40,0,0.2);
  TH2D *Num_CosFSI_os=new TH2D("Num_CosFSI_os","",20,0,1, 40,0,0.2);
  TH2D *NumSq_CosFSI_ss=new TH2D("NumSq_CosFSI_ss","",20,0,1, 40,0,0.2);
  TH2D *NumSq_CosFSI_os=new TH2D("NumSq_CosFSI_os","",20,0,1, 40,0,0.2);
  TH2D *Num_PrimCosFSI_ss=new TH2D("Num_PrimCosFSI_ss","",20,0,1, 40,0,0.2);
  TH2D *Num_PrimCosFSI_os=new TH2D("Num_PrimCosFSI_os","",20,0,1, 40,0,0.2);
  //
  TH2D *Den_ss=new TH2D("Den_ss","",20,0,1, 40,0,0.2);
  TH2D *Den_os=new TH2D("Den_os","",20,0,1, 40,0,0.2);
  TH2D *DenEM_ss=new TH2D("DenEM_ss","",20,0,1, 40,0,0.2);
  TH2D *DenEM_os=new TH2D("DenEM_os","",20,0,1, 40,0,0.2);
  TH2D *LargeRpairs_ss=new TH2D("LargeRpairs_ss","",20,0,1, 40,0,0.2);
  TH2D *LargeRpairs_os=new TH2D("LargeRpairs_os","",20,0,1, 40,0,0.2);
  //
  TH2D *NumLambda1=new TH2D("NumLambda1","",40,0,0.2, 100,0,100);
  TH1D *DenLambda1=new TH1D("DenLambda1","",40,0,0.2);
  TH3D *NumLambda2_ss=new TH3D("NumLambda2_ss","",20,0,1, 40,0,0.2, 100,0,100);
  TH3D *NumLambda2_os=new TH3D("NumLambda2_os","",20,0,1, 40,0,0.2, 100,0,100);
  TH2D *DenLambda2_ss=new TH2D("DenLambda2_ss","",20,0,1, 40,0,0.2);
  TH2D *DenLambda2_os=new TH2D("DenLambda2_os","",20,0,1, 40,0,0.2);
  TH3D *NumLambda3_ss=new TH3D("NumLambda3_ss","",40,0,.2, 40,0,.2, 40,0,.2);
  TH3D *DenLambda3_ss=new TH3D("DenLambda3_ss","",40,0,.2, 40,0,.2, 40,0,.2);
  TH3D *NumLambda3_os=new TH3D("NumLambda3_os","",40,0,.2, 40,0,.2, 40,0,.2);
  TH3D *DenLambda3_os=new TH3D("DenLambda3_os","",40,0,.2, 40,0,.2, 40,0,.2);
  //
  TH3D *rstar3_dist_ss=new TH3D("rstar3_dist_ss","",200,0,100, 200,0,100, 200,0,100);
  TH3D *tstar3_dist_ss=new TH3D("tstar3_dist_ss","",200,0,100, 200,0,100, 200,0,100);
  //
  TH3D *r3num=new TH3D("r3num","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den1=new TH3D("r3den1","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den2=new TH3D("r3den2","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den3=new TH3D("r3den3","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3numSq=new TH3D("r3numSq","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den1Sq=new TH3D("r3den1Sq","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den2Sq=new TH3D("r3den2Sq","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den3Sq=new TH3D("r3den3Sq","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3numEn=new TH3D("r3numEn","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den1En=new TH3D("r3den1En","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den2En=new TH3D("r3den2En","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den3En=new TH3D("r3den3En","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3numME=new TH3D("r3numME","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den1ME=new TH3D("r3den1ME","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den2ME=new TH3D("r3den2ME","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *r3den3ME=new TH3D("r3den3ME","",qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  //
  TH1D *Num_Cos12=new TH1D("Num_Cos12","",40,0,0.2);
  TH1D *Num_Cos23=new TH1D("Num_Cos23","",40,0,0.2);
  TH1D *Num_Cos31=new TH1D("Num_Cos31","",40,0,0.2);
  TH1D *Den_Cos12=new TH1D("Den_Cos12","",40,0,0.2);
  TH1D *Den_Cos23=new TH1D("Den_Cos23","",40,0,0.2);
  TH1D *Den_Cos31=new TH1D("Den_Cos31","",40,0,0.2);
  //
  //
  TH2D *K2_ss = new TH2D("K2_ss","",20,0,1, qBins,0,qCutOff);
  TH2D *PlaneWF_ss = new TH2D("PlaneWF_ss","",20,0,1, qBins,0,qCutOff);
  TH2D *K2_os = new TH2D("K2_os","",20,0,1, qBins,0,qCutOff);
  TH2D *PlaneWF_os = new TH2D("PlaneWF_os","",20,0,1, qBins,0,qCutOff);
  //
  TH1D *PlaneWF3ss = new TH1D("PlaneWF3ss","",qBins,0,qCutOff);
  TH1D *PlaneWF3os = new TH1D("PlaneWF3os","",qBins,0,qCutOff);
  TH1D *K3ss = new TH1D("K3ss","",qBins,0,qCutOff);
  K3ss->GetXaxis()->SetTitle("Q3 (GeV/c)");
  K3ss->GetYaxis()->SetTitle("K_{3}");
  TH1D *K3os = new TH1D("K3os","",qBins,0,qCutOff);
  K3os->GetXaxis()->SetTitle("Q3 (GeV/c)");
  K3os->GetYaxis()->SetTitle("K_{3}");
  TH3D *K3ss_3D = new TH3D("K3ss_3D","", qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  K3ss_3D->GetXaxis()->SetTitle("q12");
  K3ss_3D->GetYaxis()->SetTitle("q23");
  K3ss_3D->GetZaxis()->SetTitle("q31");
  TH3D *PlaneWF3ss_3D = new TH3D("PlaneWF3ss_3D","", qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  TH3D *K3os_3D = new TH3D("K3os_3D","", qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);
  K3os_3D->GetXaxis()->SetTitle("q12");
  K3os_3D->GetYaxis()->SetTitle("q23");
  K3os_3D->GetZaxis()->SetTitle("q31");
  TH3D *PlaneWF3os_3D = new TH3D("PlaneWF3os_3D","", qBins,0,qCutOff, qBins,0,qCutOff, qBins,0,qCutOff);

  TH1D *test=new TH1D("test","",200,-2*PI,2*PI);

  ////////////////////////
 
  
  complex<double> binput(1.0,0.0);
  complex<double> CHG(0.,0.);// for Strong FSI in 3-body WF
  double kstar=0;
  double rstar=0;
  double kstar_1=0, kstar_2=0;
  double rstar_1=0, rstar_2=0;
  double phase_1=0, phase_2=0, phase_3=0, phase_4=0;
  double qinvMixedC_ss=0, qinvMixedC_os1=0, qinvMixedC_os2=0;
  double WeightWF_aa=1.0, WeightWF_bb=1.0;
  complex<double> CHG_1(0.,0.);
  complex<double> CHG_2(0.,0.);
  complex<double> CHG_3(0.,0.);
  complex<double> CHG_4(0.,0.);
  complex<double> AlphaWF[4];
  complex<double> BetaWF[4];
  double ThreePhase_1=0, ThreePhase_2=0, ThreePhase_3=0;
  double ThreePhase_4=0, ThreePhase_5=0, ThreePhase_6=0;
  double TwoPhase_12=0, TwoPhase_23=0, TwoPhase_31=0;

  const int MAXPIONS = 2000;
  const int NevtBuff = 1;
  float P[NevtBuff][MAXPIONS][4]={{{0}}};
  float X[NevtBuff][MAXPIONS][4]={{{0}}};
  int PID[NevtBuff][MAXPIONS]={{0}};
  bool Primary[NevtBuff][MAXPIONS]={{0}};
  int Nparticles[NevtBuff]={0};
  Int_t ShuffledIndex[MAXPIONS]={0};// x-p decorrelation
  TVector3 P1_PRF;
  TVector3 P2_PRF;
  TVector3 P3_PRF;
  TVector3 X1_PRF;
  TVector3 X2_PRF;
  TVector3 X3_PRF;
  TVector3 X1_RF;
  TVector3 X2_RF;
  float P_dummy[4]={0};
	    


  // First Create B(rho,eta) and P(rho,eta) and h(eta) functions (for G hypergeometric functions (strong+Coulomb FSI))
  const int Btermslimit=500;// 500
  double rhoLimit = .05*100/FmToGeV;// 100 fm "limit"
  int rhoBins = rhoLimit/(0.001/FmToGeV);// this binning provides small changes between nearby bins
  double rhoStep = rhoLimit/rhoBins;
  double etaLimit = 1/(0.0005*BohrR);
  int etaBins = 2.0*etaLimit/(0.001);// this binning provides small changes between nearby bins
  double etaStep = (2*etaLimit)/etaBins;
  //cout<<rhoBins<<"  "<<etaBins<<"  "<<rhoLimit/rhoBins<<"  "<<etaLimit/etaBins<<endl;
  TH2D *B_histogram = new TH2D("B_histogram","",rhoBins,0,rhoLimit, etaBins,-etaLimit,etaLimit);
  TH2D *P_histogram = new TH2D("P_histogram","",rhoBins,0,rhoLimit, etaBins,-etaLimit,etaLimit);
  TH1D *h_histogram = new TH1D("h_histogram","",etaBins,-etaLimit,etaLimit);
  
  for(int i=1; i<=rhoBins; i++){
    for(int j=1; j<=etaBins; j++){
      double rho = (i+0.5)*rhoStep;
      double eta = (j+0.5)*etaStep - etaLimit;// starts from negative values
      if(fabs(eta) < 0.0001) continue;
      
      double Bfunc[Btermslimit]={0};
      double Pfunc[Btermslimit]={0};
      int StopPoint=Btermslimit;
      Bfunc[0]=1; Bfunc[1]=eta*rho;
      Pfunc[0]=1; Pfunc[1]=0;
      for(int ii=2; ii<Btermslimit; ii++) { 
	Bfunc[ii] = (2*eta*rho*Bfunc[ii-1] - rho*rho*Bfunc[ii-2])/(double(ii*(ii+1.)));
	Pfunc[ii] = (2*eta*rho*Pfunc[ii-1] - rho*rho*Pfunc[ii-2] - (2*(ii-1)+1)*2*eta*rho*Bfunc[ii-1])/(double((ii-1)*ii));
	if(fabs(Bfunc[ii])+fabs(Bfunc[ii-1])+fabs(Pfunc[ii])+fabs(Pfunc[ii-1]) < 1.0e-7) {StopPoint=ii; break;}
      }
      //cout<<StopPoint+1<<endl;
      double Bsum=0, Psum=0;
      for(int ii=0; ii<StopPoint+1; ii++) {Bsum += Bfunc[ii]; Psum += Pfunc[ii];}
      B_histogram->SetBinContent(i,j, Bsum);
      P_histogram->SetBinContent(i,j, Psum);
    }
  }
  cout<<"Done preparing B and P histograms"<<endl;
  for(int j=1; j<=etaBins; j++){
    double eta = (j+0.5)*etaStep - etaLimit;// starts from negative values
    if(fabs(eta) < 0.0001) continue;
    h_histogram->SetBinContent(j, hFunction(eta));
  }
  cout<<"Done preparing h histogram"<<endl;
  
  
  int seconds = time(0);
  
  for(int FileN=0; FileN<Nfiles; FileN++){
    cout<<"File #"<<FileN+1<<endl;
    //if(FileN<1260) continue;
    //if(FileN>230) continue;
    TString *fname=new TString("b");
    *fname += bValue;
    fname->Append("/event");
    *fname += FileN+1;
    fname->Append(".root");
    TFile *infile=new TFile(fname->Data(),"READ");
    if(!infile->IsOpen()) {cout<<fname->Data()<<" does not exist"<<endl; continue;}
    TTree *event_tree=(TTree*)infile->Get("events");
    TTree *particles_tree=(TTree*)infile->Get("particles");
    

    int Nevents = event_tree->GetEntries();
    int NpartList=0;
    int NpartList_past = 0;
    /////////////////////////////////////////
    // Create Pion list first
    for(int Evt=0; Evt<Nevents; Evt++){
      
      //cout<<"Event # "<<Evt+1<<endl;
      event_tree->GetEntry(Evt);
      
      TBranch *br=(TBranch*)event_tree->GetBranch("event");
      TLeaf *lf=(TLeaf*)br->GetLeaf("entries");
      NpartList_past += NpartList;
      NpartList = lf->GetValue();
      
      /////////////////////////////////////
      // past event buffer
      for(int pastEvt=NevtBuff-1; pastEvt>0; pastEvt--){
	
	for(int particle=0; particle<Nparticles[pastEvt-1]; particle++){
	  P[pastEvt][particle][0] = P[pastEvt-1][particle][0];
	  P[pastEvt][particle][1] = P[pastEvt-1][particle][1];
	  P[pastEvt][particle][2] = P[pastEvt-1][particle][2];
	  P[pastEvt][particle][3] = P[pastEvt-1][particle][3];
	  //
	  X[pastEvt][particle][0] = X[pastEvt-1][particle][0];
	  X[pastEvt][particle][1] = X[pastEvt-1][particle][1];
	  X[pastEvt][particle][2] = X[pastEvt-1][particle][2];
	  X[pastEvt][particle][3] = X[pastEvt-1][particle][3];
	  //
	  PID[pastEvt][particle] = PID[pastEvt-1][particle];
	  Primary[pastEvt][particle] = Primary[pastEvt-1][particle];
	}
	
	Nparticles[pastEvt]=Nparticles[pastEvt-1];
      }
      Nparticles[0]=0;
      /////////////////////////////////////
      
     
      // Create Pion list first
      int Npions=0;
      
      for(int index1=NpartList_past; index1<NpartList_past + NpartList; index1++){
	
	if(Npions >= MAXPIONS) {cout<<"Too Many Pions!!!"<<endl; break;}
	particles_tree->GetEntry(index1);
	//
	
	TLeaf *lf_pid=particles_tree->GetLeaf("pid");
	int pid = int(lf_pid->GetValue());
	if(abs(pid) != PIDPOI) continue;// pions only
	TLeaf *lf_decayed=(TLeaf*)particles_tree->GetLeaf("decayed");
	if(lf_decayed->GetValue() != 0) continue;
	
	
	TLeaf *lf_px=(TLeaf*)particles_tree->GetLeaf("px");
	TLeaf *lf_py=(TLeaf*)particles_tree->GetLeaf("py");
	TLeaf *lf_pz=(TLeaf*)particles_tree->GetLeaf("pz");
	TLeaf *lf_x=(TLeaf*)particles_tree->GetLeaf("x");
	TLeaf *lf_y=(TLeaf*)particles_tree->GetLeaf("y");
	TLeaf *lf_z=(TLeaf*)particles_tree->GetLeaf("z");
	TLeaf *lf_t=(TLeaf*)particles_tree->GetLeaf("t");
	
	float px = lf_px->GetValue(); float py = lf_py->GetValue(); float pz = lf_pz->GetValue();
	float x = lf_x->GetValue(); float y = lf_y->GetValue(); float z = lf_z->GetValue();
	double t = lf_t->GetValue();
	
	if(Gaussian){// Gaussian randomization
	  bool goodchoice=kFALSE;
	  while(goodchoice==kFALSE){
	    x = NsigmaGauss*RValue*RandomNumber->Rndm();
	    float height = RandomNumber->Rndm();
	    if(SingleParticleGaussian->Eval(x) >= height) goodchoice=kTRUE;
	  }
	  if(RandomNumber->Rndm()<0.5) x = -x;
	  //
	  goodchoice=kFALSE;
	  while(goodchoice==kFALSE){
	    y = NsigmaGauss*RValue*RandomNumber->Rndm();
	    float height = RandomNumber->Rndm();
	    if(SingleParticleGaussian->Eval(y) >= height) goodchoice=kTRUE;
	  }
	  if(RandomNumber->Rndm()<0.5) y = -y;
	  //
	  goodchoice=kFALSE;
	  while(goodchoice==kFALSE){
	    z = NsigmaGauss*RValue*RandomNumber->Rndm();
	    float height = RandomNumber->Rndm();
	    if(SingleParticleGaussian->Eval(z) >= height) goodchoice=kTRUE;
	  }
	  if(RandomNumber->Rndm()<0.5) z = -z;
	  //
	  goodchoice=kFALSE;
	  while(goodchoice==kFALSE){
	    t = NsigmaGauss*RValue*RandomNumber->Rndm();
	    float height = RandomNumber->Rndm();
	    if(SingleParticleGaussian->Eval(t) >= height) goodchoice=kTRUE;
	  }
	  if(RandomNumber->Rndm()<0.5) t = -t;
	  //t=0;
	}

	float pt = sqrt(pow(px,2)+pow(py,2));
	float eta = asinh(pz/pt);
	float E = sqrt(pow(px,2)+pow(py,2)+pow(pz,2)+pow(massPOI,2));
	
	if(pt<0.16 || pt>1.0) continue;
	if(fabs(eta)>0.8) continue;
	if(sqrt(pow(px,2)+pow(py,2)+pow(pz,2)) > 1.0) continue;
	//
	P[0][Npions][0] = E/SF_Mom; P[0][Npions][1] = px/SF_Mom; P[0][Npions][2] = py/SF_Mom; P[0][Npions][3] = pz/SF_Mom;
	X[0][Npions][0] = t/FmToGeV/SF; X[0][Npions][1] = x/FmToGeV/SF; X[0][Npions][2] = y/FmToGeV/SF; X[0][Npions][3] = z/FmToGeV/SF;
	PID[0][Npions] = pid;
	float r = sqrt(pow(x,2)+pow(y,2)+pow(z,2));
	if(t < 1.e6) Primary[0][Npions]=kTRUE;// 1e6
	else {Primary[0][Npions]=kFALSE;}

	
	if(RemoveXP){
	  if(r > 100./SF) continue;
	}

	if(Primary[0][Npions]) P_dist->Fill(sqrt( pow(px,2) + pow(py,2) + pow(pz,2)));
	
	if(Primary[0][Npions]){
	  r_dist->Fill(r);
	  x_dist->Fill(fabs(X[0][Npions][1])*FmToGeV);
	  Pt_dist->Fill(pt);
	}
	
	//if(Primary[0][Npions]==kFALSE) continue;
	
	//
	
	
	Npions++;
      }
      
      Nparticles[0]=Npions;
      AvgMult->Fill(1, Npions);

      // Shuffle
      for (Int_t i = 0; i < Npions; i++) {
	// generate random index call
	int j = (Int_t) (gRandom->Rndm() * Npions);
	// temporarily store values from random index
	float t = X[0][j][0], x = X[0][j][1], y = X[0][j][2], z = X[0][j][3];
	float E = P[0][j][0], px = P[0][j][1], py = P[0][j][2], pz = P[0][j][3];
	int pid = PID[0][j];
	bool prim = Primary[0][j];
	//
	// Swap value locations
	X[0][j][0] = X[0][i][0]; X[0][j][1] = X[0][i][1]; X[0][j][2] = X[0][i][2]; X[0][j][3] = X[0][i][3];
	P[0][j][0] = P[0][i][0]; P[0][j][1] = P[0][i][1]; P[0][j][2] = P[0][i][2]; P[0][j][3] = P[0][i][3];
	PID[0][j] = PID[0][i];
	Primary[0][j] = Primary[0][i];
	//
	X[0][i][0] = t; X[0][i][1] = x; X[0][i][2] = y; X[0][i][3] = z;
	P[0][i][0] = E; P[0][i][1] = px; P[0][i][2] = py; P[0][i][3] = pz;
	PID[0][i] = pid;
	Primary[0][i] = prim;
      }
      
      ///////////////////////////////////////////
      // de-correlate x-p
      if(RemoveXP){
	for (Int_t i = 0; i < Npions; i++) ShuffledIndex[i] = i;
	Shuffle(ShuffledIndex, 0, Npions-1);
	for (Int_t i = 0; i < Npions; i++) {// decorrelate x-p
	  float t = X[0][i][0], x = X[0][i][1], y = X[0][i][2], z = X[0][i][3];
	  X[0][i][0] = X[0][ShuffledIndex[i]][0]; 
	  X[0][i][1] = X[0][ShuffledIndex[i]][1]; 
	  X[0][i][2] = X[0][ShuffledIndex[i]][2]; 
	  X[0][i][3] = X[0][ShuffledIndex[i]][3];
	  //
	  X[0][ShuffledIndex[i]][0] = t;
	  X[0][ShuffledIndex[i]][1] = x;
	  X[0][ShuffledIndex[i]][2] = y;
	  X[0][ShuffledIndex[i]][3] = z;
	}
      }
      
	
      //////////////////////////////////////////
      

      
      //////////////////////////////////////////////////
      // Start Correlation Analysis

      for(int EN=0; EN<1; EN++){// current or 1st past event
	
	for(int index1=0; index1<Nparticles[EN]; index1++){// current or past event pion loop
	  
	  int start=index1+1;
	  if(EN>0) start=0;
	  for(int index2=start; index2<Npions; index2++){// current event pion loop (EN=0)
	    
	    float kt = sqrt(pow(P[EN][index1][1]+P[0][index2][1],2)+pow(P[EN][index1][2]+P[0][index2][2],2))/2.;
	    float qinv12 = sqrt(pow(P[EN][index1][1]-P[0][index2][1],2)+pow(P[EN][index1][2]-P[0][index2][2],2)+pow(P[EN][index1][3]-P[0][index2][3],2)-pow(P[EN][index1][0]-P[0][index2][0],2));
	    float rstar12_CMS = sqrt(pow(X[EN][index1][1]-X[0][index2][1],2)+pow(X[EN][index1][2]-X[0][index2][2],2)+pow(X[EN][index1][3]-X[0][index2][3],2));
	    
	    if(qinv12 < 0.001) continue;
	    if(qinv12 > qCutOff) continue;

	    if(EN>0){
	      if(PID[EN][index1] == PID[0][index2]){
		DenEM_ss->Fill(kt, qinv12);
	      }else{
		DenEM_os->Fill(kt, qinv12);
	      }
	      if(LambdaDirect) continue;
	    }
	    
	    BoostPRF(P[EN][index1], P_dummy, X[EN][index1], &X1_RF);
	    DenLambda1->Fill(qinv12);
	    if(X1_RF.Mag()<RstarMax) NumLambda1->Fill(qinv12, X1_RF.Mag()*FmToGeV);
	    BoostPRF(P[0][index2], P_dummy, X[0][index2], &X2_RF);
	    DenLambda1->Fill(qinv12);
	    if(X2_RF.Mag()<RstarMax) NumLambda1->Fill(qinv12, X2_RF.Mag()*FmToGeV);
	    
	    
	    P_dist_lowq->Fill(sqrt(pow(P[EN][index1][1],2)+pow(P[EN][index1][2],2)+pow(P[EN][index1][3],2)));
	    P_dist_lowq->Fill(sqrt(pow(P[0][index2][1],2)+pow(P[0][index2][2],2)+pow(P[0][index2][3],2)));
	    
	    // boost P into PRF
	    BoostPRF(P[EN][index1], P[0][index2], P[EN][index1], &P1_PRF);
	    BoostPRF(P[EN][index1], P[0][index2], P[0][index2], &P2_PRF);
	    if(BoostPairsIntoPRF){// boost X into PRF
	      BoostPRF(P[EN][index1], P[0][index2], X[EN][index1], &X1_PRF);
	      BoostPRF(P[EN][index1], P[0][index2], X[0][index2], &X2_PRF);
	    }else{
	      X1_PRF[0]=X[EN][index1][1]; X1_PRF[1]=X[EN][index1][2]; X1_PRF[2]=X[EN][index1][3];
	      X2_PRF[0]=X[0][index2][1]; X2_PRF[1]=X[0][index2][2]; X2_PRF[2]=X[0][index2][3];
	    }
	    //cout<<"out: "<<P1_PRF[0]<<"  "<<P2_PRF[0]<<endl;
	    //cout<<"side: "<<P1_PRF[1]<<"  "<<P2_PRF[1]<<endl;
	    //cout<<"long: "<<P1_PRF[2]<<"  "<<P2_PRF[2]<<" ++++++"<<endl;
	    //cout<<qinv12<<"  "<<sqrt(pow(P1_PRF[0]-P2_PRF[0],2)+pow(P1_PRF[1]-P2_PRF[1],2)+pow(P1_PRF[2]-P2_PRF[2],2))<<endl;
	    //
	    double rstar12_PRF = (X1_PRF-X2_PRF).Mag();
	    
	    if(PID[EN][index1] == PID[0][index2]) DenLambda2_ss->Fill(kt, qinv12);
	    else DenLambda2_os->Fill(kt, qinv12);
	    	    
	    if(rstar12_PRF < RstarMin) continue;// removes most pairs from the same decay
	    
	    if(rstar12_PRF < RstarMax){
	      if(PID[EN][index1] == PID[0][index2]) NumLambda2_ss->Fill(kt, qinv12, rstar12_PRF*FmToGeV);
	      else NumLambda2_os->Fill(kt, qinv12, rstar12_PRF*FmToGeV);
	    }

	    if(rstar12_PRF > RstarMax) {
	      if(PID[EN][index1]==PID[0][index2]) LargeRpairs_ss->Fill(kt, qinv12);
	      else LargeRpairs_os->Fill(kt, qinv12);
	      if(!LambdaDirect) continue;
	    }
	    float FVP12 = (P1_PRF-P2_PRF).Mag();
	    FVP12 -= pow(P[EN][index1][0]-P[0][index2][0],2);
	    double tstar12_PRF = sqrt(fabs(pow(rstar12_PRF,2)-FVP12));// fabs biases only 0.00001 % of the pairs (likely from same decay)
	    
	    	    
	 	    
	    //
	    double rho = rstar12_PRF * qinv12/2.;
	    double phase = (P1_PRF-P2_PRF)*(X1_PRF-X2_PRF);
	    double Cosphase = phase/(rstar12_PRF)/(qinv12);
	    
	    double eta = 1/(qinv12/2.*BohrR);
	    if(PID[EN][index1] != PID[0][index2]) eta = -eta;
	    complex<double> ainput(0.0, -eta);
	    complex<double> zinput12(0.0, rho + rho*Cosphase);
	    complex<double> zinput21(0.0, rho - rho*Cosphase);
	    complex<double> CHG12(1.0, 0);
	    complex<double> CHG21(1.0, 0);
	    double GamovFactor=1.0;
	    double BEE = 0.;
	    double WeightWF = 1.0;
	    double WeightPlaneWF = 1.0;
	    // Strong FSI
	    complex<double> Psi_alpha(0., 0.);
	    if(EN==0 && !LambdaDirect && qinv12 < qCutOff && rstar12_PRF < RstarMax){
	      if(Primary[EN][index1]==kTRUE && Primary[0][index2]==kTRUE){
		if(StrongFSI && PID[EN][index1]!=PID[0][index2]){
		  double kb = sqrt(pow(massPOI,2)+pow(qinv12/2.,2) - pow(masspi0,2));
		  double G2 = KinverseFunction(pow(qinv12/2.,2),1);
		  double G1 = KinverseFunction(pow(qinv12/2.,2),0);
		  double RK11 = 2/3.*G1 + 1/3.*G2;
		  double RK22 = 2/3.*G2 + 1/3.*G1;
		  double RK12 = -sqrt(2/9.)*(G1-G2);
		  complex<double> Chi(h_histogram->GetBinContent(h_histogram->GetXaxis()->FindBin(eta)), Gamov(eta)/(2*eta));
		  complex<double> C3 = RK11 - 2.0*Chi/BohrR;
		  complex<double> C5(RK22, -kb);
		  complex<double> C10 = C3*C5 - pow(RK12,2);
		  complex<double> fc_aa = C5/C10;
		  complex<double> G = P_histogram->GetBinContent(P_histogram->GetXaxis()->FindBin(rho), P_histogram->GetYaxis()->FindBin(eta));
		  G += 2.0*eta*rho*( log(fabs(2.0*eta*rho)) + 2.0*EulerC - 1.0 + Chi )*B_histogram->GetBinContent(B_histogram->GetXaxis()->FindBin(rho), B_histogram->GetYaxis()->FindBin(eta));
		  Psi_alpha = fc_aa*G/(rstar12_PRF);
		}
		
		CHG12= conf_hyp(ainput,binput,zinput12);
		CHG21= conf_hyp(ainput,binput,zinput21);
		GamovFactor = Gamov(eta);
		BEE = cos(phase);
	
		complex<double> planewave12(double(TMath::Cos(-rho*Cosphase)), double(TMath::Sin(-rho*Cosphase)));
		complex<double> planewave21(planewave12.real(), -planewave12.imag());
		//
		complex<double> Full12(0.0,0.0);
		Full12 += planewave12;
		Full12 *= CHG12;
		if(PID[EN][index1]!=PID[0][index2]) Full12 += Psi_alpha;
		//
		complex<double> Full21(0.0,0.0);
		Full21 += planewave21;
		Full21 *= CHG21;
		//
		complex<double> FullWF = Full12;
		complex<double> FullPlaneWF = planewave12;
		if(PID[EN][index1] == PID[0][index2]) {
		  FullWF += Full21;
		  FullWF /= sqrt(2.);
		  FullPlaneWF += planewave21;
		  FullPlaneWF /= sqrt(2.);
		}
		
		WeightWF = GamovFactor*pow(abs(FullWF),2);
		WeightPlaneWF = pow(abs(FullPlaneWF),2);
		
		// Fill undiluted histos
		if(PID[EN][index1] == PID[0][index2]){
		  Num_PrimCosFSI_ss->Fill(kt, qinv12, WeightWF);
		}else {
		  Num_PrimCosFSI_os->Fill(kt, qinv12, WeightWF);
		}
		
	      }// primary
	    }// same-event, LambdaDirect, rstar and qinv cut
	    
	    
	    if(PID[EN][index1] == PID[0][index2]){// same-charge
	      rstarPRF_dist_ss->Fill(kt, rstar12_PRF*FmToGeV);
	      tstar_dist_ss->Fill(kt, fabs(X[EN][index1][0]-X[0][index2][0])*FmToGeV);
	      Num_Cos_ss->Fill(kt, qinv12, BEE);
	      Num_CosFSI_ss->Fill(kt, qinv12, WeightWF);
	      NumSq_CosFSI_ss->Fill(kt, qinv12, pow(WeightWF,2));
	      Den_ss->Fill(kt, qinv12);
	      //
	      K2_ss->Fill(kt, qinv12, WeightWF);
	      PlaneWF_ss->Fill(kt, qinv12, WeightPlaneWF);
	    }else {// mixed-charge
	      rstarPRF_dist_os->Fill(kt, rstar12_PRF*FmToGeV);
	      tstar_dist_os->Fill(kt, fabs(X[EN][index1][0]-X[0][index2][0])*FmToGeV);
	      Num_Cos_os->Fill(kt, qinv12, BEE);
	      Num_CosFSI_os->Fill(kt, qinv12, WeightWF);
	      NumSq_CosFSI_os->Fill(kt, qinv12, pow(WeightWF,2));
	      Den_os->Fill(kt, qinv12);
	      //
	      K2_os->Fill(kt, qinv12, WeightWF);
	      PlaneWF_os->Fill(kt, qinv12, WeightPlaneWF);
	    }


	    if(!ThreeParticle) continue;


	    TLorentzVector LP1(P[EN][index1][1], P[EN][index1][2], P[EN][index1][3], P[EN][index1][0]);
	    TLorentzVector LX1(X[EN][index1][1], X[EN][index1][2], X[EN][index1][3], X[EN][index1][0]);
	    TLorentzVector LP2(P[0][index2][1], P[0][index2][2], P[0][index2][3], P[0][index2][0]);
	    TLorentzVector LX2(X[0][index2][1], X[0][index2][2], X[0][index2][3], X[0][index2][0]);
	    
	    
	    if(!LambdaDirect) {if(!Primary[EN][index1] || !Primary[0][index2]) continue;}
	    if(qinv12 > qCutOff) continue;
	    //
	    int EN2=0;
	    int start3=index2+1;
	    if(EN==1) {EN2=2; start3=0;}
	    
	    for(int index3=start3; index3<Nparticles[EN2]; index3++){
	     
	      if(!LambdaDirect && !Primary[EN2][index3]) continue;
	      
	      double qinv23 = sqrt(pow(P[0][index2][1]-P[EN2][index3][1],2)+pow(P[0][index2][2]-P[EN2][index3][2],2)+pow(P[0][index2][3]-P[EN2][index3][3],2)-pow(P[0][index2][0]-P[EN2][index3][0],2));
	      double qinv31 = sqrt(pow(P[EN2][index3][1]-P[EN][index1][1],2)+pow(P[EN2][index3][2]-P[EN][index1][2],2)+pow(P[EN2][index3][3]-P[EN][index1][3],2)-pow(P[EN2][index3][0]-P[EN][index1][0],2));
	      if(qinv23 > qCutOff || qinv31 > qCutOff) continue;
	      if(qinv23 < 0.001 || qinv31 < 0.001) continue;
	      
	      if(PID[EN][index1] == PID[0][index2] && PID[EN][index1] == PID[EN2][index3]){
		DenLambda3_ss->Fill(qinv12, qinv23, qinv31);
	      }else{
		DenLambda3_os->Fill(qinv12, qinv23, qinv31);
	      }
	      
	      	      
	      bool MixedCharge=kFALSE;
	      if(PID[EN][index1] != PID[0][index2] || PID[EN][index1] != PID[EN2][index3] || PID[0][index2] != PID[EN2][index3]) MixedCharge=kTRUE;
	      
	      if(EN2==2){
		if(MixedCharge==kFALSE){
		  r3numME->Fill(qinv12, qinv23, qinv31);
		  r3den1ME->Fill(qinv12, qinv23, qinv31);
		  r3den2ME->Fill(qinv12, qinv23, qinv31);
		  r3den3ME->Fill(qinv12, qinv23, qinv31); 
		}
		continue;
	      }
	      
	      

	      // 12 boost
	      BoostPRF(P[EN][index1], P[0][index2], P[EN2][index3], &P3_PRF);
	      BoostPRF(P[EN][index1], P[0][index2], P[0][index2], &P2_PRF);
	      BoostPRF(P[EN][index1], P[0][index2], P[EN][index1], &P1_PRF);
	      X1_PRF[0]=X[EN][index1][1]; X1_PRF[1]=X[EN][index1][2]; X1_PRF[2]=X[EN][index1][3];// default CMS
	      X2_PRF[0]=X[0][index2][1]; X2_PRF[1]=X[0][index2][2]; X2_PRF[2]=X[0][index2][3];// default CMS
	      X3_PRF[0]=X[EN2][index3][1]; X3_PRF[1]=X[EN2][index3][2]; X3_PRF[2]=X[EN2][index3][3];// default CMS
	      
	      //
	      if(BoostPairsIntoPRF){
		BoostPRF(P[EN][index1], P[0][index2], X[EN2][index3], &X3_PRF);
		BoostPRF(P[EN][index1], P[0][index2], X[0][index2], &X2_PRF);
		BoostPRF(P[EN][index1], P[0][index2], X[EN][index1], &X1_PRF);
	      }
	

	      rstar12_PRF = (X1_PRF-X2_PRF).Mag();
	      if(rstar12_PRF > RstarMax) continue;
	      if(rstar12_PRF < RstarMin) continue;
	      double phase_p12_x12 = (P1_PRF-P2_PRF)*(X1_PRF-X2_PRF)/2.;
	      double phase_p12_x32 = (P1_PRF-P2_PRF)*(X3_PRF-X2_PRF)/2.;
	      double phase_p12_x13 = (P1_PRF-P2_PRF)*(X1_PRF-X3_PRF)/2.;
	      complex<double> z_p12_x12(0.0, (P1_PRF-P2_PRF)*(X1_PRF-X2_PRF)/2. + qinv12/2. * (X1_PRF-X2_PRF).Mag());
	      complex<double> z_p12_x21(0.0, (P1_PRF-P2_PRF)*(X2_PRF-X1_PRF)/2. + qinv12/2. * (X2_PRF-X1_PRF).Mag());
	      complex<double> z_p12_x32(0.0, (P1_PRF-P2_PRF)*(X3_PRF-X2_PRF)/2. + qinv12/2. * (X3_PRF-X2_PRF).Mag());
	      complex<double> z_p12_x13(0.0, (P1_PRF-P2_PRF)*(X1_PRF-X3_PRF)/2. + qinv12/2. * (X1_PRF-X3_PRF).Mag());
	      complex<double> z_p12_x23(0.0, (P1_PRF-P2_PRF)*(X2_PRF-X3_PRF)/2. + qinv12/2. * (X2_PRF-X3_PRF).Mag());
	      complex<double> z_p12_x31(0.0, (P1_PRF-P2_PRF)*(X3_PRF-X1_PRF)/2. + qinv12/2. * (X3_PRF-X1_PRF).Mag());
	      
	      
	      // 23 boost
	      BoostPRF(P[0][index2], P[EN2][index3], P[EN2][index3], &P3_PRF);
	      BoostPRF(P[0][index2], P[EN2][index3], P[0][index2], &P2_PRF);
	      BoostPRF(P[0][index2], P[EN2][index3], P[EN][index1], &P1_PRF);
	      if(BoostPairsIntoPRF){
		BoostPRF(P[0][index2], P[EN2][index3], X[EN2][index3], &X3_PRF);
		BoostPRF(P[0][index2], P[EN2][index3], X[0][index2], &X2_PRF);
		BoostPRF(P[0][index2], P[EN2][index3], X[EN][index1], &X1_PRF);
	      }
	      double rstar23_PRF = (X2_PRF-X3_PRF).Mag();
	      if(rstar23_PRF > RstarMax) continue;
	      if(rstar23_PRF < RstarMin) continue;
	      double phase_p23_x13 = (P2_PRF-P3_PRF)*(X1_PRF-X3_PRF)/2.;
	      double phase_p23_x23 = (P2_PRF-P3_PRF)*(X2_PRF-X3_PRF)/2.;
	      double phase_p23_x21 = (P2_PRF-P3_PRF)*(X2_PRF-X1_PRF)/2.;
	      double FVP23 = (P2_PRF-P3_PRF).Mag();
	      FVP23 -= pow(P[0][index2][0]-P[EN2][index3][0],2);
	      double tstar23_PRF = sqrt(fabs(pow(rstar23_PRF,2)-FVP23));
	      //double rstar23_CMS = sqrt(pow(X[0][index2][1]-X[EN2][index3][1],2)+pow(X[0][index2][2]-X[EN2][index3][2],2)+pow(X[0][index2][3]-X[EN2][index3][3],2));
	      complex<double> z_p23_x23(0.0, (P2_PRF-P3_PRF)*(X2_PRF-X3_PRF)/2. + qinv23/2. * (X2_PRF-X3_PRF).Mag());
	      complex<double> z_p23_x13(0.0, (P2_PRF-P3_PRF)*(X1_PRF-X3_PRF)/2. + qinv23/2. * (X1_PRF-X3_PRF).Mag());
	      complex<double> z_p23_x21(0.0, (P2_PRF-P3_PRF)*(X2_PRF-X1_PRF)/2. + qinv23/2. * (X2_PRF-X1_PRF).Mag());
	      complex<double> z_p23_x32(0.0, (P2_PRF-P3_PRF)*(X3_PRF-X2_PRF)/2. + qinv23/2. * (X3_PRF-X2_PRF).Mag());
	      complex<double> z_p23_x31(0.0, (P2_PRF-P3_PRF)*(X3_PRF-X1_PRF)/2. + qinv23/2. * (X3_PRF-X1_PRF).Mag());
	      complex<double> z_p23_x12(0.0, (P2_PRF-P3_PRF)*(X1_PRF-X2_PRF)/2. + qinv23/2. * (X1_PRF-X2_PRF).Mag());
	      

	      // 31 boost
	      BoostPRF(P[EN2][index3], P[EN][index1], P[EN2][index3], &P3_PRF);
	      BoostPRF(P[EN2][index3], P[EN][index1], P[0][index2], &P2_PRF);
	      BoostPRF(P[EN2][index3], P[EN][index1], P[EN][index1], &P1_PRF);
	      if(BoostPairsIntoPRF){
		BoostPRF(P[EN2][index3], P[EN][index1], X[EN2][index3], &X3_PRF);
		BoostPRF(P[EN2][index3], P[EN][index1], X[0][index2], &X2_PRF);
		BoostPRF(P[EN2][index3], P[EN][index1], X[EN][index1], &X1_PRF);
	      }
	      double rstar31_PRF = (X3_PRF-X1_PRF).Mag();
	      if(rstar31_PRF > RstarMax) continue;
	      if(rstar31_PRF < RstarMin) continue;
	      double phase_p31_x31 = (P3_PRF-P1_PRF)*(X3_PRF-X1_PRF)/2.;
	      double phase_p31_x32 = (P3_PRF-P1_PRF)*(X3_PRF-X2_PRF)/2.;
	      double phase_p31_x21 = (P3_PRF-P1_PRF)*(X2_PRF-X1_PRF)/2.;
	      double FVP31 = (P3_PRF-P1_PRF).Mag();
	      FVP31 -= pow(P[EN2][index3][0]-P[EN][index1][0],2);
	      double tstar31_PRF = sqrt(fabs(pow(rstar31_PRF,2)-FVP31));
	      //double rstar31_CMS = sqrt(pow(X[EN2][index3][1]-X[EN][index1][1],2)+pow(X[EN2][index3][2]-X[EN][index1][2],2)+pow(X[EN2][index3][3]-X[EN][index1][3],2));
	      complex<double> z_p31_x31(0.0, (P3_PRF-P1_PRF)*(X3_PRF-X1_PRF)/2. + qinv31/2. * (X3_PRF-X1_PRF).Mag());
	      complex<double> z_p31_x32(0.0, (P3_PRF-P1_PRF)*(X3_PRF-X2_PRF)/2. + qinv31/2. * (X3_PRF-X2_PRF).Mag());
	      complex<double> z_p31_x13(0.0, (P3_PRF-P1_PRF)*(X1_PRF-X3_PRF)/2. + qinv31/2. * (X1_PRF-X3_PRF).Mag());
	      complex<double> z_p31_x21(0.0, (P3_PRF-P1_PRF)*(X2_PRF-X1_PRF)/2. + qinv31/2. * (X2_PRF-X1_PRF).Mag());
	      complex<double> z_p31_x12(0.0, (P3_PRF-P1_PRF)*(X1_PRF-X2_PRF)/2. + qinv31/2. * (X1_PRF-X2_PRF).Mag());
	      complex<double> z_p31_x23(0.0, (P3_PRF-P1_PRF)*(X2_PRF-X3_PRF)/2. + qinv31/2. * (X2_PRF-X3_PRF).Mag());
	      
	      

	      ////////////////////////////////////////////
	      ////////////////////////////////////////////
	      double Q3 = sqrt(pow(qinv12,2) + pow(qinv23,2) + pow(qinv31,2));
	      
	      if(!LambdaDirect){
		int CP12=+1, CP23=+1, CP31=+1;
		if(PID[EN][index1] != PID[0][index2]) CP12 = -1;
		if(PID[0][index2] != PID[EN2][index3]) CP23 = -1;
		if(PID[EN2][index3] != PID[EN][index1]) CP31 = -1;
		
		double Ac_12 = Gamov(CP12/(qinv12/2.*BohrR));
		double Ac_23 = Gamov(CP23/(qinv23/2.*BohrR));
		double Ac_31 = Gamov(CP31/(qinv31/2.*BohrR));
	
		//
		complex<double> a_12(0.0, -CP12/(qinv12/2.*BohrR));
		complex<double> a_23(0.0, -CP23/(qinv23/2.*BohrR));
		complex<double> a_31(0.0, -CP31/(qinv31/2.*BohrR));
		//
		//
		//
	      TLorentzVector LP3(P[EN2][index3][1], P[EN2][index3][2], P[EN2][index3][3], P[EN2][index3][0]);
	      TLorentzVector LX3(X[EN2][index3][1], X[EN2][index3][2], X[EN2][index3][3], X[EN2][index3][0]);
	      
	      double phasePW = ( (LP1-LP2)*(LX1-LX2) + (LP1-LP3)*(LX1-LX3) + (LP2-LP3)*(LX2-LX3) )/3.;// base
	      complex<double> planewave1(cos(phasePW), sin(phasePW));
	      //
	      phasePW = ( (LP1-LP2)*(LX2-LX1) + (LP1-LP3)*(LX2-LX3) + (LP2-LP3)*(LX1-LX3) )/3.;// 12 swap
	      complex<double> planewave2(cos(phasePW), sin(phasePW));
	      //
	      phasePW = ( (LP1-LP2)*(LX3-LX2) + (LP1-LP3)*(LX3-LX1) + (LP2-LP3)*(LX2-LX1) )/3.;// 13 swap
	      complex<double> planewave3(cos(phasePW), sin(phasePW));
	      //
	      phasePW = ( (LP1-LP2)*(LX1-LX3) + (LP1-LP3)*(LX1-LX2) + (LP2-LP3)*(LX3-LX2) )/3.;// 23 swap
	      complex<double> planewave4(cos(phasePW), sin(phasePW));
	      //
	      phasePW = ( (LP1-LP2)*(LX2-LX3) + (LP1-LP3)*(LX2-LX1) + (LP2-LP3)*(LX3-LX1) )/3.;// 123 swap (1st type)
	      complex<double> planewave5(cos(phasePW), sin(phasePW));
	      //
	      phasePW = ( (LP1-LP2)*(LX3-LX1) + (LP1-LP3)*(LX3-LX2) + (LP2-LP3)*(LX1-LX2) )/3.;// 123 swap (2nd type)
	      complex<double> planewave6(cos(phasePW), sin(phasePW));
	      //
	      //
	      //
	      complex<double> CHG_p12_x12= conf_hyp(a_12, binput, z_p12_x12);
	      complex<double> CHG_p12_x21= conf_hyp(a_12, binput, z_p12_x21);
	      complex<double> CHG_p12_x32= conf_hyp(a_12, binput, z_p12_x32);
	      complex<double> CHG_p12_x13= conf_hyp(a_12, binput, z_p12_x13);
	      complex<double> CHG_p12_x23= conf_hyp(a_12, binput, z_p12_x23);
	      complex<double> CHG_p12_x31= conf_hyp(a_12, binput, z_p12_x31);
	      //
	      complex<double> CHG_p31_x31= conf_hyp(a_31, binput, z_p31_x31);
	      complex<double> CHG_p31_x32= conf_hyp(a_31, binput, z_p31_x32);
	      complex<double> CHG_p31_x13= conf_hyp(a_31, binput, z_p31_x13);
	      complex<double> CHG_p31_x21= conf_hyp(a_31, binput, z_p31_x21);
	      complex<double> CHG_p31_x12= conf_hyp(a_31, binput, z_p31_x12);
	      complex<double> CHG_p31_x23= conf_hyp(a_31, binput, z_p31_x23);
	      //
	      complex<double> CHG_p23_x23= conf_hyp(a_23, binput, z_p23_x23);
	      complex<double> CHG_p23_x13= conf_hyp(a_23, binput, z_p23_x13);
	      complex<double> CHG_p23_x21= conf_hyp(a_23, binput, z_p23_x21);
	      complex<double> CHG_p23_x32= conf_hyp(a_23, binput, z_p23_x32);
	      complex<double> CHG_p23_x31= conf_hyp(a_23, binput, z_p23_x31);
	      complex<double> CHG_p23_x12= conf_hyp(a_23, binput, z_p23_x12);

	      ThreePhase_1 = X1_PRF*(P1_PRF-P2_PRF) + X2_PRF*(P2_PRF-P3_PRF) + X3_PRF*(P3_PRF-P1_PRF);
	      ThreePhase_2 = X1_PRF*(P1_PRF-P2_PRF) + X3_PRF*(P2_PRF-P3_PRF) + X2_PRF*(P3_PRF-P1_PRF);
	      ThreePhase_3 = X2_PRF*(P1_PRF-P2_PRF) + X1_PRF*(P2_PRF-P3_PRF) + X3_PRF*(P3_PRF-P1_PRF);
	      ThreePhase_4 = X2_PRF*(P1_PRF-P2_PRF) + X3_PRF*(P2_PRF-P3_PRF) + X1_PRF*(P3_PRF-P1_PRF);
	      ThreePhase_5 = X3_PRF*(P1_PRF-P2_PRF) + X1_PRF*(P2_PRF-P3_PRF) + X2_PRF*(P3_PRF-P1_PRF);
	      ThreePhase_6 = X3_PRF*(P1_PRF-P2_PRF) + X2_PRF*(P2_PRF-P3_PRF) + X1_PRF*(P3_PRF-P1_PRF);
	      TwoPhase_12 = (P1_PRF-P2_PRF)*(X1_PRF-X2_PRF);
	      TwoPhase_23 = (P2_PRF-P3_PRF)*(X2_PRF-X3_PRF);
	      TwoPhase_31 = (P3_PRF-P1_PRF)*(X3_PRF-X1_PRF);
	      //
	      //
	      
	      // Strong FSI
	      if(MixedCharge){
		if(CP12==+1){// 1 and 2 are same-charge
		  kstar_1 = qinv31/2.; kstar_2 = qinv23/2.;
		  rstar_1 = rstar31_PRF; rstar_2 = rstar23_PRF;
		  phase_1 = phase_p31_x31; phase_2 = phase_p31_x32; phase_3 = phase_p23_x13; phase_4 = phase_p23_x23;
		  CHG_1 = CHG_p31_x31;
		  CHG_2 = CHG_p31_x32;
		  CHG_3 = CHG_p23_x13;
		  CHG_4 = CHG_p23_x23;
		  qinvMixedC_ss=qinv12; qinvMixedC_os1=qinv31; qinvMixedC_os2=qinv23; 
		}else if(CP31==+1){// 1 and 3 are same-charge
		  kstar_1 = qinv12/2.; kstar_2 = qinv23/2.;
		  rstar_1 = rstar12_PRF; rstar_2 = rstar23_PRF;
		  phase_1 = phase_p12_x12; phase_2 = phase_p12_x32; phase_3 = phase_p23_x21; phase_4 = phase_p23_x23;
		  CHG_1 = CHG_p12_x12;
		  CHG_2 = CHG_p12_x32;
		  CHG_3 = CHG_p23_x21;
		  CHG_4 = CHG_p23_x23;
		  qinvMixedC_ss=qinv31; qinvMixedC_os1=qinv12; qinvMixedC_os2=qinv23; 
		}else {// 2 and 3 are same-charge
		  kstar_1 = qinv12/2.; kstar_2 = qinv31/2.;
		  rstar_1 = rstar12_PRF; rstar_2 = rstar31_PRF;
		  phase_1 = phase_p12_x12; phase_2 = phase_p12_x13; phase_3 = phase_p31_x21; phase_4 = phase_p31_x31;
		  CHG_1 = CHG_p12_x12;
		  CHG_2 = CHG_p12_x13;
		  CHG_3 = CHG_p31_x21;
		  CHG_4 = CHG_p31_x31;
		  qinvMixedC_ss=qinv23; qinvMixedC_os1=qinv31; qinvMixedC_os2=qinv31; 
		}


		for(int piece=0; piece<4; piece++){
		  if(piece==0) {// P31X31
		    kstar=kstar_1;
		    rstar=rstar_1; 
		    phase=phase_1;
		    CHG=CHG_1;
		  }else if(piece==1) {// P31X32
		    kstar=kstar_1;
		    rstar=rstar_2; 
		    phase=phase_2;
		    CHG=CHG_2;
		  }else if(piece==2) {// P23X13
		    kstar=kstar_2;
		    rstar=rstar_1; 
		    phase=phase_3;
		    CHG=CHG_3;
		  }else {// P23X23
		    kstar=kstar_2;
		    rstar=rstar_2; 
		    phase=phase_4;
		    CHG=CHG_4;
		  }
		  
		  rho = kstar*rstar;
		  eta = -1./(kstar*BohrR);
		  double kb = sqrt(pow(massPOI,2)+pow(kstar,2) - pow(masspi0,2));
		  double G2 = KinverseFunction(pow(kstar,2),1);
		  double G1 = KinverseFunction(pow(kstar,2),0);
		  double RK11 = 2/3.*G1 + 1/3.*G2;
		  double RK22 = 2/3.*G2 + 1/3.*G1;
		  double RK12 = -sqrt(2/9.)*(G1-G2);
		  complex<double> Chi(h_histogram->GetBinContent(h_histogram->GetXaxis()->FindBin(eta)), Gamov(eta)/(2*eta));
		  complex<double> C3 = RK11 - 2.0*Chi/BohrR;
		  complex<double> C5(RK22, -kb);
		  complex<double> C10 = C3*C5 - pow(RK12,2);
		  complex<double> fc_aa = C5/C10;
		  complex<double> fc_ab = -RK12/C10;
		  complex<double> G = P_histogram->GetBinContent(P_histogram->GetXaxis()->FindBin(rho), P_histogram->GetYaxis()->FindBin(eta));
		  G += 2.0*eta*rho*( log(fabs(2.0*eta*rho)) + 2.0*EulerC - 1.0 + Chi )*B_histogram->GetBinContent(B_histogram->GetXaxis()->FindBin(rho), B_histogram->GetYaxis()->FindBin(eta));
		  complex<double> PW(cos(phase), sin(phase));
		  AlphaWF[piece] = CHG + PW*fc_aa*G/rstar;
		  complex<double> spherewave(cos(rstar*kb), sin(rstar*kb));
		  BetaWF[piece] = PW*fc_ab*sqrt(masspi0/massPOI)*spherewave/rstar; 
		  
		}// piece
	      
	      }// Mixed-charge case with Strong FSI
	      
	      complex<double> FullFSI_WF[2];// aa, bb
	      if(MixedCharge==kTRUE){
		if(StrongFSI==kFALSE) {
		  FullFSI_WF[0] = planewave1*CHG_p12_x12*CHG_p31_x31*CHG_p23_x23;
		  if(CP12==+1){// 1 and 2 are same-charge
		    FullFSI_WF[0] += planewave2*CHG_p12_x21*CHG_p31_x32*CHG_p23_x13;// 12 symmetrization
		  }else if(CP31==+1){// 1 and 3 are same-charge
		    FullFSI_WF[0] += planewave3*CHG_p12_x32*CHG_p31_x13*CHG_p23_x21;// 13 symmetrization
		  }else{
		    FullFSI_WF[0] += planewave4*CHG_p12_x13*CHG_p31_x21*CHG_p23_x32;// 23 symmetrization
		  }
		  FullFSI_WF[1] = 0.;
		}else {// strong FSI 
		  if(CP12==+1){// 1 and 2 are same-charge
		    FullFSI_WF[0] = planewave1*CHG_p12_x12*AlphaWF[0]*AlphaWF[3];
		    FullFSI_WF[1] = planewave1*CHG_p12_x12*BetaWF[0]*BetaWF[3];
		    FullFSI_WF[0] += planewave2*CHG_p12_x21*AlphaWF[1]*AlphaWF[2];// 12 symmetrization
		    FullFSI_WF[1] += planewave2*CHG_p12_x21*BetaWF[1]*BetaWF[2];// 12 symmetrization
		  }else if(CP31==+1){// 1 and 3 are same-charge
		    FullFSI_WF[0] = planewave1*CHG_p31_x31*AlphaWF[0]*AlphaWF[3];
		    FullFSI_WF[1] = planewave1*CHG_p31_x31*BetaWF[0]*BetaWF[3];
		    FullFSI_WF[0] += planewave3*CHG_p31_x13*AlphaWF[1]*AlphaWF[2];// 13 symmetrization
		    FullFSI_WF[1] += planewave3*CHG_p31_x13*BetaWF[1]*BetaWF[2];// 13 symmetrization
		  }else{
		    FullFSI_WF[0] = planewave1*CHG_p23_x23*AlphaWF[0]*AlphaWF[3];
		    FullFSI_WF[1] = planewave1*CHG_p23_x23*BetaWF[0]*BetaWF[3];
		    FullFSI_WF[0] += planewave4*CHG_p23_x32*AlphaWF[1]*AlphaWF[2];// 13 symmetrization
		    FullFSI_WF[1] += planewave4*CHG_p23_x32*BetaWF[1]*BetaWF[2];// 13 symmetrization
		  }
		}
		FullFSI_WF[0] /= sqrt(2.); FullFSI_WF[1] /= sqrt(2.);
	      }else {
		 FullFSI_WF[0] = planewave1*CHG_p12_x12*CHG_p31_x31*CHG_p23_x23;// base
		 FullFSI_WF[0] += planewave2*CHG_p12_x21*CHG_p31_x32*CHG_p23_x13;// 12 symmetrization
		 FullFSI_WF[0] += planewave3*CHG_p12_x32*CHG_p31_x13*CHG_p23_x21;// 13
		 FullFSI_WF[0] += planewave4*CHG_p12_x13*CHG_p31_x21*CHG_p23_x32;// 23
		 FullFSI_WF[0] += planewave5*CHG_p12_x23*CHG_p31_x12*CHG_p23_x31;// 123
		 FullFSI_WF[0] += planewave6*CHG_p12_x31*CHG_p31_x23*CHG_p23_x12;// 123
		 FullFSI_WF[1] = 0.;
		 FullFSI_WF[0] /= sqrt(6.); FullFSI_WF[1] /= sqrt(6.);
	      }

	      complex<double> FullPlaneWF = planewave1;// base
	      if(MixedCharge && CP12==+1) FullPlaneWF += planewave2;
	      if(MixedCharge && CP31==+1) FullPlaneWF += planewave3;
	      if(MixedCharge && CP23==+1) FullPlaneWF += planewave4;
	      if(!MixedCharge) {
		FullPlaneWF += planewave2 + planewave3 + planewave4 + planewave5 + planewave6;
		FullPlaneWF /= sqrt(6.);
	      }else FullPlaneWF /= sqrt(2.);
	      
	      WeightWF_aa = pow(abs(FullFSI_WF[0]),2);
	      WeightWF_bb = pow(abs(FullFSI_WF[1]),2);
	      WeightWF_aa *= Ac_12*Ac_23*Ac_31;
	      WeightWF_bb *= Ac_12*Ac_23*Ac_31;
	      WeightPlaneWF = pow(abs(FullPlaneWF),2);
	      
	      }// !LambdaDirect
	      ////////////////////////////////////////////
	      ////////////////////////////////////////////
	      //
	     	     
	      
	      if(MixedCharge){
		K3os->Fill(Q3, WeightWF_aa + WeightWF_bb);
		PlaneWF3os->Fill(Q3, WeightPlaneWF);
		K3os_3D->Fill(qinvMixedC_ss, qinvMixedC_os1, qinvMixedC_os2, WeightWF_aa + WeightWF_bb);
		PlaneWF3os_3D->Fill(qinvMixedC_ss, qinvMixedC_os1, qinvMixedC_os2, WeightPlaneWF);
		NumLambda3_os->Fill(qinv12, qinv23, qinv31);
	      }else{
		K3ss->Fill(Q3, WeightWF_aa + WeightWF_bb);
		PlaneWF3ss->Fill(Q3, WeightPlaneWF);
		K3ss_3D->Fill(qinv12, qinv23, qinv31, WeightWF_aa + WeightWF_bb);
		PlaneWF3ss_3D->Fill(qinv12, qinv23, qinv31, WeightPlaneWF);
		NumLambda3_ss->Fill(qinv12, qinv23, qinv31);
		rstar3_dist_ss->Fill(rstar12_PRF, rstar23_PRF, rstar31_PRF);
		//rstar3_dist_ss->Fill(rstar12_CMS, rstar23_CMS, rstar31_CMS);
		tstar3_dist_ss->Fill(tstar12_PRF, tstar23_PRF, tstar31_PRF);
		//
		double cosThreePhase = 1/6. * (cos(ThreePhase_1)+cos(ThreePhase_2)+cos(ThreePhase_3)+cos(ThreePhase_4)+cos(ThreePhase_5)+cos(ThreePhase_6));
		r3num->Fill(qinv12, qinv23, qinv31, 2*cosThreePhase);
		r3den1->Fill(qinv12, qinv23, qinv31, cos(TwoPhase_12));
		r3den2->Fill(qinv12, qinv23, qinv31, cos(TwoPhase_23));
		r3den3->Fill(qinv12, qinv23, qinv31, cos(TwoPhase_31));
		r3numSq->Fill(qinv12, qinv23, qinv31, pow(2*cosThreePhase,2));
		r3den1Sq->Fill(qinv12, qinv23, qinv31, pow(cos(TwoPhase_12),2));
		r3den2Sq->Fill(qinv12, qinv23, qinv31, pow(cos(TwoPhase_23),2));
		r3den3Sq->Fill(qinv12, qinv23, qinv31, pow(cos(TwoPhase_31),2));
		r3numEn->Fill(qinv12, qinv23, qinv31);
		r3den1En->Fill(qinv12, qinv23, qinv31);
		r3den2En->Fill(qinv12, qinv23, qinv31);
		r3den3En->Fill(qinv12, qinv23, qinv31); 
		//
		Num_Cos12->Fill(qinv12,cos(TwoPhase_12));
		Num_Cos23->Fill(qinv23,cos(TwoPhase_23));
		Num_Cos31->Fill(qinv31,cos(TwoPhase_31));
		Den_Cos12->Fill(qinv12);
		Den_Cos23->Fill(qinv23);
		Den_Cos31->Fill(qinv31);
	      }
	      
	      
	    }// index3
	    
	  }// index2
	  
	}// index1
	
      }// EN buffer      
      
    }// Nevents
    
    infile->Close();
  }// Nfiles
  
  outfile->cd();
  //
  r_dist->Write();
  x_dist->Write();
  Pt_dist->Write();
  P_dist->Write();
  P_dist_lowq->Write();
  AvgMult->Write();

  rstarPRF_dist_ss->Write();
  tstar_dist_ss->Write();
  rstarPRF_dist_os->Write();
  tstar_dist_os->Write();
  NumLambda1->Write();
  DenLambda1->Write();
  NumLambda2_ss->Write();
  NumLambda2_os->Write();
  DenLambda2_ss->Write();
  DenLambda2_os->Write();
  NumLambda3_ss->Write();
  DenLambda3_ss->Write();
  NumLambda3_os->Write();
  DenLambda3_os->Write();
  Den_ss->Write();
  Den_os->Write();
  DenEM_ss->Write();
  DenEM_os->Write();
  Num_Cos_ss->Write();
  Num_Cos_os->Write();
  Num_CosFSI_ss->Write();
  Num_CosFSI_os->Write();
  NumSq_CosFSI_ss->Write();
  NumSq_CosFSI_os->Write();
  LargeRpairs_ss->Write();
  LargeRpairs_os->Write();
  //
  Num_PrimCosFSI_ss->Write();
  Num_PrimCosFSI_os->Write();
  //
  rstar3_dist_ss->Write();
  tstar3_dist_ss->Write();
  //
  K2_ss->Write();
  PlaneWF_ss->Write();
  K2_os->Write();
  PlaneWF_os->Write();
  //
  K3os->Write();
  PlaneWF3os->Write();
  K3os_3D->Write();
  PlaneWF3os_3D->Write();
  K3ss->Write();
  PlaneWF3ss->Write();
  K3ss_3D->Write();
  PlaneWF3ss_3D->Write();
  //
  r3num->Write();
  r3den1->Write();
  r3den2->Write();
  r3den3->Write();
  r3numSq->Write();
  r3den1Sq->Write();
  r3den2Sq->Write();
  r3den3Sq->Write();
  r3numEn->Write();
  r3den1En->Write();
  r3den2En->Write();
  r3den3En->Write();
  r3numME->Write();
  r3den1ME->Write();
  r3den2ME->Write();
  r3den3ME->Write();
  //
  Num_Cos12->Write();
  Num_Cos23->Write();
  Num_Cos31->Write();
  Den_Cos12->Write();
  Den_Cos23->Write();
  Den_Cos31->Write();
  //
  test->Write();
  //
  outfile->Close();

  seconds = time(0) - seconds;
  cout<<"Minutes = "<<seconds/60.<<endl;


}
float Gamov(float eta){
  return (2*PI*eta/(exp(2*PI*eta)-1));
}
float fact(float n){
  return (n < 1.00001) ? 1 : fact(n - 1) * n;
}
void Shuffle(Int_t *iarr, Int_t i1, Int_t i2)
{
  Int_t j, k;
  Int_t a = i2 - i1;
  for (Int_t i = i1; i < i2+1; i++) {
    j = (Int_t) (gRandom->Rndm() * a);
    k = iarr[j];
    iarr[j] = iarr[i];
    iarr[i] = k;
  }
}
void BoostPRF(float P1[4], float P2[4], float V[4], TVector3 *T){
  // P1 is particle 1 momentum in reaction CMS (0=E,1=px,2=py,3=pz)
  // P2 is particle 2 momentum in reaction CMS (0=E,1=px,2=py,3=pz)
  // V is the vector to be transformed (V is in CMS)
  // T is the PRF vector

  float MT=sqrt(pow(P1[0]+P2[0],2)-pow(P1[3]+P2[3],2));
  float PT=sqrt(pow(P1[1]+P2[1],2)+pow(P1[2]+P2[2],2));
  float MINV=sqrt(pow(P1[0]+P2[0],2) - pow(P1[1]+P2[1],2) - pow(P1[2]+P2[2],2) - pow(P1[3]+P2[3],2));
  // LCMS
  T->SetX( ((P1[1]+P2[1])*V[1] + (P1[2]+P2[2])*V[2])/PT );
  T->SetY( ((P1[1]+P2[1])*V[2] - (P1[2]+P2[2])*V[1])/PT );
  T->SetZ( ((P1[0]+P2[0])*V[3] - (P1[3]+P2[3])*V[0])/MT );
  // PRF
  T->SetX( T->X()*MINV/MT - PT/(MT*MINV)*((P1[0]+P2[0])*V[0] - (P1[1]+P2[1])*V[1] - (P1[2]+P2[2])*V[2] - (P1[3]+P2[3])*V[3]) );
}
// h function from Lednicky, phys. of part. and nuclei 40:307 (2009)
double hFunction(double eta){
  double DS=1.0;
  double N=0;
  double S=0;
  double returnValue=0;
  if(eta < 3.0){
    while(DS > 1.0e-13){
      N++;
      DS = 1/(N*(pow(N/eta,2)+1.0));
      S += DS;
    }
    returnValue = (S - EulerC - log(fabs(eta)));
  }else{// small kstar, high eta
    double etaSquared=pow(eta,2);
    double etaPowered=etaSquared;
    for(int ii=0; ii<9; ii++){// 9 was maximum value for Lednicky's code
      returnValue += 1/etaPowered * hcoef[ii];
      etaPowered *= etaSquared;
    }
  }
  return returnValue; 
}
double KinverseFunction(double kstarSq, int J){
  double ESq = kstarSq + pow(massPOI,2);
  double E = sqrt(ESq);
  double xSq = kstarSq/pow(massPOI,2);
  double Kinverse = E*(4*ESq-fzero[J][4])/(4*pow(massPOI,2)-fzero[J][4]);
  Kinverse /= fzero[J][0] + fzero[J][1]*xSq + fzero[J][2]*pow(xSq,2) + fzero[J][3]*pow(xSq,3);
  return Kinverse;
}

 Therm.C:1
 Therm.C:2
 Therm.C:3
 Therm.C:4
 Therm.C:5
 Therm.C:6
 Therm.C:7
 Therm.C:8
 Therm.C:9
 Therm.C:10
 Therm.C:11
 Therm.C:12
 Therm.C:13
 Therm.C:14
 Therm.C:15
 Therm.C:16
 Therm.C:17
 Therm.C:18
 Therm.C:19
 Therm.C:20
 Therm.C:21
 Therm.C:22
 Therm.C:23
 Therm.C:24
 Therm.C:25
 Therm.C:26
 Therm.C:27
 Therm.C:28
 Therm.C:29
 Therm.C:30
 Therm.C:31
 Therm.C:32
 Therm.C:33
 Therm.C:34
 Therm.C:35
 Therm.C:36
 Therm.C:37
 Therm.C:38
 Therm.C:39
 Therm.C:40
 Therm.C:41
 Therm.C:42
 Therm.C:43
 Therm.C:44
 Therm.C:45
 Therm.C:46
 Therm.C:47
 Therm.C:48
 Therm.C:49
 Therm.C:50
 Therm.C:51
 Therm.C:52
 Therm.C:53
 Therm.C:54
 Therm.C:55
 Therm.C:56
 Therm.C:57
 Therm.C:58
 Therm.C:59
 Therm.C:60
 Therm.C:61
 Therm.C:62
 Therm.C:63
 Therm.C:64
 Therm.C:65
 Therm.C:66
 Therm.C:67
 Therm.C:68
 Therm.C:69
 Therm.C:70
 Therm.C:71
 Therm.C:72
 Therm.C:73
 Therm.C:74
 Therm.C:75
 Therm.C:76
 Therm.C:77
 Therm.C:78
 Therm.C:79
 Therm.C:80
 Therm.C:81
 Therm.C:82
 Therm.C:83
 Therm.C:84
 Therm.C:85
 Therm.C:86
 Therm.C:87
 Therm.C:88
 Therm.C:89
 Therm.C:90
 Therm.C:91
 Therm.C:92
 Therm.C:93
 Therm.C:94
 Therm.C:95
 Therm.C:96
 Therm.C:97
 Therm.C:98
 Therm.C:99
 Therm.C:100
 Therm.C:101
 Therm.C:102
 Therm.C:103
 Therm.C:104
 Therm.C:105
 Therm.C:106
 Therm.C:107
 Therm.C:108
 Therm.C:109
 Therm.C:110
 Therm.C:111
 Therm.C:112
 Therm.C:113
 Therm.C:114
 Therm.C:115
 Therm.C:116
 Therm.C:117
 Therm.C:118
 Therm.C:119
 Therm.C:120
 Therm.C:121
 Therm.C:122
 Therm.C:123
 Therm.C:124
 Therm.C:125
 Therm.C:126
 Therm.C:127
 Therm.C:128
 Therm.C:129
 Therm.C:130
 Therm.C:131
 Therm.C:132
 Therm.C:133
 Therm.C:134
 Therm.C:135
 Therm.C:136
 Therm.C:137
 Therm.C:138
 Therm.C:139
 Therm.C:140
 Therm.C:141
 Therm.C:142
 Therm.C:143
 Therm.C:144
 Therm.C:145
 Therm.C:146
 Therm.C:147
 Therm.C:148
 Therm.C:149
 Therm.C:150
 Therm.C:151
 Therm.C:152
 Therm.C:153
 Therm.C:154
 Therm.C:155
 Therm.C:156
 Therm.C:157
 Therm.C:158
 Therm.C:159
 Therm.C:160
 Therm.C:161
 Therm.C:162
 Therm.C:163
 Therm.C:164
 Therm.C:165
 Therm.C:166
 Therm.C:167
 Therm.C:168
 Therm.C:169
 Therm.C:170
 Therm.C:171
 Therm.C:172
 Therm.C:173
 Therm.C:174
 Therm.C:175
 Therm.C:176
 Therm.C:177
 Therm.C:178
 Therm.C:179
 Therm.C:180
 Therm.C:181
 Therm.C:182
 Therm.C:183
 Therm.C:184
 Therm.C:185
 Therm.C:186
 Therm.C:187
 Therm.C:188
 Therm.C:189
 Therm.C:190
 Therm.C:191
 Therm.C:192
 Therm.C:193
 Therm.C:194
 Therm.C:195
 Therm.C:196
 Therm.C:197
 Therm.C:198
 Therm.C:199
 Therm.C:200
 Therm.C:201
 Therm.C:202
 Therm.C:203
 Therm.C:204
 Therm.C:205
 Therm.C:206
 Therm.C:207
 Therm.C:208
 Therm.C:209
 Therm.C:210
 Therm.C:211
 Therm.C:212
 Therm.C:213
 Therm.C:214
 Therm.C:215
 Therm.C:216
 Therm.C:217
 Therm.C:218
 Therm.C:219
 Therm.C:220
 Therm.C:221
 Therm.C:222
 Therm.C:223
 Therm.C:224
 Therm.C:225
 Therm.C:226
 Therm.C:227
 Therm.C:228
 Therm.C:229
 Therm.C:230
 Therm.C:231
 Therm.C:232
 Therm.C:233
 Therm.C:234
 Therm.C:235
 Therm.C:236
 Therm.C:237
 Therm.C:238
 Therm.C:239
 Therm.C:240
 Therm.C:241
 Therm.C:242
 Therm.C:243
 Therm.C:244
 Therm.C:245
 Therm.C:246
 Therm.C:247
 Therm.C:248
 Therm.C:249
 Therm.C:250
 Therm.C:251
 Therm.C:252
 Therm.C:253
 Therm.C:254
 Therm.C:255
 Therm.C:256
 Therm.C:257
 Therm.C:258
 Therm.C:259
 Therm.C:260
 Therm.C:261
 Therm.C:262
 Therm.C:263
 Therm.C:264
 Therm.C:265
 Therm.C:266
 Therm.C:267
 Therm.C:268
 Therm.C:269
 Therm.C:270
 Therm.C:271
 Therm.C:272
 Therm.C:273
 Therm.C:274
 Therm.C:275
 Therm.C:276
 Therm.C:277
 Therm.C:278
 Therm.C:279
 Therm.C:280
 Therm.C:281
 Therm.C:282
 Therm.C:283
 Therm.C:284
 Therm.C:285
 Therm.C:286
 Therm.C:287
 Therm.C:288
 Therm.C:289
 Therm.C:290
 Therm.C:291
 Therm.C:292
 Therm.C:293
 Therm.C:294
 Therm.C:295
 Therm.C:296
 Therm.C:297
 Therm.C:298
 Therm.C:299
 Therm.C:300
 Therm.C:301
 Therm.C:302
 Therm.C:303
 Therm.C:304
 Therm.C:305
 Therm.C:306
 Therm.C:307
 Therm.C:308
 Therm.C:309
 Therm.C:310
 Therm.C:311
 Therm.C:312
 Therm.C:313
 Therm.C:314
 Therm.C:315
 Therm.C:316
 Therm.C:317
 Therm.C:318
 Therm.C:319
 Therm.C:320
 Therm.C:321
 Therm.C:322
 Therm.C:323
 Therm.C:324
 Therm.C:325
 Therm.C:326
 Therm.C:327
 Therm.C:328
 Therm.C:329
 Therm.C:330
 Therm.C:331
 Therm.C:332
 Therm.C:333
 Therm.C:334
 Therm.C:335
 Therm.C:336
 Therm.C:337
 Therm.C:338
 Therm.C:339
 Therm.C:340
 Therm.C:341
 Therm.C:342
 Therm.C:343
 Therm.C:344
 Therm.C:345
 Therm.C:346
 Therm.C:347
 Therm.C:348
 Therm.C:349
 Therm.C:350
 Therm.C:351
 Therm.C:352
 Therm.C:353
 Therm.C:354
 Therm.C:355
 Therm.C:356
 Therm.C:357
 Therm.C:358
 Therm.C:359
 Therm.C:360
 Therm.C:361
 Therm.C:362
 Therm.C:363
 Therm.C:364
 Therm.C:365
 Therm.C:366
 Therm.C:367
 Therm.C:368
 Therm.C:369
 Therm.C:370
 Therm.C:371
 Therm.C:372
 Therm.C:373
 Therm.C:374
 Therm.C:375
 Therm.C:376
 Therm.C:377
 Therm.C:378
 Therm.C:379
 Therm.C:380
 Therm.C:381
 Therm.C:382
 Therm.C:383
 Therm.C:384
 Therm.C:385
 Therm.C:386
 Therm.C:387
 Therm.C:388
 Therm.C:389
 Therm.C:390
 Therm.C:391
 Therm.C:392
 Therm.C:393
 Therm.C:394
 Therm.C:395
 Therm.C:396
 Therm.C:397
 Therm.C:398
 Therm.C:399
 Therm.C:400
 Therm.C:401
 Therm.C:402
 Therm.C:403
 Therm.C:404
 Therm.C:405
 Therm.C:406
 Therm.C:407
 Therm.C:408
 Therm.C:409
 Therm.C:410
 Therm.C:411
 Therm.C:412
 Therm.C:413
 Therm.C:414
 Therm.C:415
 Therm.C:416
 Therm.C:417
 Therm.C:418
 Therm.C:419
 Therm.C:420
 Therm.C:421
 Therm.C:422
 Therm.C:423
 Therm.C:424
 Therm.C:425
 Therm.C:426
 Therm.C:427
 Therm.C:428
 Therm.C:429
 Therm.C:430
 Therm.C:431
 Therm.C:432
 Therm.C:433
 Therm.C:434
 Therm.C:435
 Therm.C:436
 Therm.C:437
 Therm.C:438
 Therm.C:439
 Therm.C:440
 Therm.C:441
 Therm.C:442
 Therm.C:443
 Therm.C:444
 Therm.C:445
 Therm.C:446
 Therm.C:447
 Therm.C:448
 Therm.C:449
 Therm.C:450
 Therm.C:451
 Therm.C:452
 Therm.C:453
 Therm.C:454
 Therm.C:455
 Therm.C:456
 Therm.C:457
 Therm.C:458
 Therm.C:459
 Therm.C:460
 Therm.C:461
 Therm.C:462
 Therm.C:463
 Therm.C:464
 Therm.C:465
 Therm.C:466
 Therm.C:467
 Therm.C:468
 Therm.C:469
 Therm.C:470
 Therm.C:471
 Therm.C:472
 Therm.C:473
 Therm.C:474
 Therm.C:475
 Therm.C:476
 Therm.C:477
 Therm.C:478
 Therm.C:479
 Therm.C:480
 Therm.C:481
 Therm.C:482
 Therm.C:483
 Therm.C:484
 Therm.C:485
 Therm.C:486
 Therm.C:487
 Therm.C:488
 Therm.C:489
 Therm.C:490
 Therm.C:491
 Therm.C:492
 Therm.C:493
 Therm.C:494
 Therm.C:495
 Therm.C:496
 Therm.C:497
 Therm.C:498
 Therm.C:499
 Therm.C:500
 Therm.C:501
 Therm.C:502
 Therm.C:503
 Therm.C:504
 Therm.C:505
 Therm.C:506
 Therm.C:507
 Therm.C:508
 Therm.C:509
 Therm.C:510
 Therm.C:511
 Therm.C:512
 Therm.C:513
 Therm.C:514
 Therm.C:515
 Therm.C:516
 Therm.C:517
 Therm.C:518
 Therm.C:519
 Therm.C:520
 Therm.C:521
 Therm.C:522
 Therm.C:523
 Therm.C:524
 Therm.C:525
 Therm.C:526
 Therm.C:527
 Therm.C:528
 Therm.C:529
 Therm.C:530
 Therm.C:531
 Therm.C:532
 Therm.C:533
 Therm.C:534
 Therm.C:535
 Therm.C:536
 Therm.C:537
 Therm.C:538
 Therm.C:539
 Therm.C:540
 Therm.C:541
 Therm.C:542
 Therm.C:543
 Therm.C:544
 Therm.C:545
 Therm.C:546
 Therm.C:547
 Therm.C:548
 Therm.C:549
 Therm.C:550
 Therm.C:551
 Therm.C:552
 Therm.C:553
 Therm.C:554
 Therm.C:555
 Therm.C:556
 Therm.C:557
 Therm.C:558
 Therm.C:559
 Therm.C:560
 Therm.C:561
 Therm.C:562
 Therm.C:563
 Therm.C:564
 Therm.C:565
 Therm.C:566
 Therm.C:567
 Therm.C:568
 Therm.C:569
 Therm.C:570
 Therm.C:571
 Therm.C:572
 Therm.C:573
 Therm.C:574
 Therm.C:575
 Therm.C:576
 Therm.C:577
 Therm.C:578
 Therm.C:579
 Therm.C:580
 Therm.C:581
 Therm.C:582
 Therm.C:583
 Therm.C:584
 Therm.C:585
 Therm.C:586
 Therm.C:587
 Therm.C:588
 Therm.C:589
 Therm.C:590
 Therm.C:591
 Therm.C:592
 Therm.C:593
 Therm.C:594
 Therm.C:595
 Therm.C:596
 Therm.C:597
 Therm.C:598
 Therm.C:599
 Therm.C:600
 Therm.C:601
 Therm.C:602
 Therm.C:603
 Therm.C:604
 Therm.C:605
 Therm.C:606
 Therm.C:607
 Therm.C:608
 Therm.C:609
 Therm.C:610
 Therm.C:611
 Therm.C:612
 Therm.C:613
 Therm.C:614
 Therm.C:615
 Therm.C:616
 Therm.C:617
 Therm.C:618
 Therm.C:619
 Therm.C:620
 Therm.C:621
 Therm.C:622
 Therm.C:623
 Therm.C:624
 Therm.C:625
 Therm.C:626
 Therm.C:627
 Therm.C:628
 Therm.C:629
 Therm.C:630
 Therm.C:631
 Therm.C:632
 Therm.C:633
 Therm.C:634
 Therm.C:635
 Therm.C:636
 Therm.C:637
 Therm.C:638
 Therm.C:639
 Therm.C:640
 Therm.C:641
 Therm.C:642
 Therm.C:643
 Therm.C:644
 Therm.C:645
 Therm.C:646
 Therm.C:647
 Therm.C:648
 Therm.C:649
 Therm.C:650
 Therm.C:651
 Therm.C:652
 Therm.C:653
 Therm.C:654
 Therm.C:655
 Therm.C:656
 Therm.C:657
 Therm.C:658
 Therm.C:659
 Therm.C:660
 Therm.C:661
 Therm.C:662
 Therm.C:663
 Therm.C:664
 Therm.C:665
 Therm.C:666
 Therm.C:667
 Therm.C:668
 Therm.C:669
 Therm.C:670
 Therm.C:671
 Therm.C:672
 Therm.C:673
 Therm.C:674
 Therm.C:675
 Therm.C:676
 Therm.C:677
 Therm.C:678
 Therm.C:679
 Therm.C:680
 Therm.C:681
 Therm.C:682
 Therm.C:683
 Therm.C:684
 Therm.C:685
 Therm.C:686
 Therm.C:687
 Therm.C:688
 Therm.C:689
 Therm.C:690
 Therm.C:691
 Therm.C:692
 Therm.C:693
 Therm.C:694
 Therm.C:695
 Therm.C:696
 Therm.C:697
 Therm.C:698
 Therm.C:699
 Therm.C:700
 Therm.C:701
 Therm.C:702
 Therm.C:703
 Therm.C:704
 Therm.C:705
 Therm.C:706
 Therm.C:707
 Therm.C:708
 Therm.C:709
 Therm.C:710
 Therm.C:711
 Therm.C:712
 Therm.C:713
 Therm.C:714
 Therm.C:715
 Therm.C:716
 Therm.C:717
 Therm.C:718
 Therm.C:719
 Therm.C:720
 Therm.C:721
 Therm.C:722
 Therm.C:723
 Therm.C:724
 Therm.C:725
 Therm.C:726
 Therm.C:727
 Therm.C:728
 Therm.C:729
 Therm.C:730
 Therm.C:731
 Therm.C:732
 Therm.C:733
 Therm.C:734
 Therm.C:735
 Therm.C:736
 Therm.C:737
 Therm.C:738
 Therm.C:739
 Therm.C:740
 Therm.C:741
 Therm.C:742
 Therm.C:743
 Therm.C:744
 Therm.C:745
 Therm.C:746
 Therm.C:747
 Therm.C:748
 Therm.C:749
 Therm.C:750
 Therm.C:751
 Therm.C:752
 Therm.C:753
 Therm.C:754
 Therm.C:755
 Therm.C:756
 Therm.C:757
 Therm.C:758
 Therm.C:759
 Therm.C:760
 Therm.C:761
 Therm.C:762
 Therm.C:763
 Therm.C:764
 Therm.C:765
 Therm.C:766
 Therm.C:767
 Therm.C:768
 Therm.C:769
 Therm.C:770
 Therm.C:771
 Therm.C:772
 Therm.C:773
 Therm.C:774
 Therm.C:775
 Therm.C:776
 Therm.C:777
 Therm.C:778
 Therm.C:779
 Therm.C:780
 Therm.C:781
 Therm.C:782
 Therm.C:783
 Therm.C:784
 Therm.C:785
 Therm.C:786
 Therm.C:787
 Therm.C:788
 Therm.C:789
 Therm.C:790
 Therm.C:791
 Therm.C:792
 Therm.C:793
 Therm.C:794
 Therm.C:795
 Therm.C:796
 Therm.C:797
 Therm.C:798
 Therm.C:799
 Therm.C:800
 Therm.C:801
 Therm.C:802
 Therm.C:803
 Therm.C:804
 Therm.C:805
 Therm.C:806
 Therm.C:807
 Therm.C:808
 Therm.C:809
 Therm.C:810
 Therm.C:811
 Therm.C:812
 Therm.C:813
 Therm.C:814
 Therm.C:815
 Therm.C:816
 Therm.C:817
 Therm.C:818
 Therm.C:819
 Therm.C:820
 Therm.C:821
 Therm.C:822
 Therm.C:823
 Therm.C:824
 Therm.C:825
 Therm.C:826
 Therm.C:827
 Therm.C:828
 Therm.C:829
 Therm.C:830
 Therm.C:831
 Therm.C:832
 Therm.C:833
 Therm.C:834
 Therm.C:835
 Therm.C:836
 Therm.C:837
 Therm.C:838
 Therm.C:839
 Therm.C:840
 Therm.C:841
 Therm.C:842
 Therm.C:843
 Therm.C:844
 Therm.C:845
 Therm.C:846
 Therm.C:847
 Therm.C:848
 Therm.C:849
 Therm.C:850
 Therm.C:851
 Therm.C:852
 Therm.C:853
 Therm.C:854
 Therm.C:855
 Therm.C:856
 Therm.C:857
 Therm.C:858
 Therm.C:859
 Therm.C:860
 Therm.C:861
 Therm.C:862
 Therm.C:863
 Therm.C:864
 Therm.C:865
 Therm.C:866
 Therm.C:867
 Therm.C:868
 Therm.C:869
 Therm.C:870
 Therm.C:871
 Therm.C:872
 Therm.C:873
 Therm.C:874
 Therm.C:875
 Therm.C:876
 Therm.C:877
 Therm.C:878
 Therm.C:879
 Therm.C:880
 Therm.C:881
 Therm.C:882
 Therm.C:883
 Therm.C:884
 Therm.C:885
 Therm.C:886
 Therm.C:887
 Therm.C:888
 Therm.C:889
 Therm.C:890
 Therm.C:891
 Therm.C:892
 Therm.C:893
 Therm.C:894
 Therm.C:895
 Therm.C:896
 Therm.C:897
 Therm.C:898
 Therm.C:899
 Therm.C:900
 Therm.C:901
 Therm.C:902
 Therm.C:903
 Therm.C:904
 Therm.C:905
 Therm.C:906
 Therm.C:907
 Therm.C:908
 Therm.C:909
 Therm.C:910
 Therm.C:911
 Therm.C:912
 Therm.C:913
 Therm.C:914
 Therm.C:915
 Therm.C:916
 Therm.C:917
 Therm.C:918
 Therm.C:919
 Therm.C:920
 Therm.C:921
 Therm.C:922
 Therm.C:923
 Therm.C:924
 Therm.C:925
 Therm.C:926
 Therm.C:927
 Therm.C:928
 Therm.C:929
 Therm.C:930
 Therm.C:931
 Therm.C:932
 Therm.C:933
 Therm.C:934
 Therm.C:935
 Therm.C:936
 Therm.C:937
 Therm.C:938
 Therm.C:939
 Therm.C:940
 Therm.C:941
 Therm.C:942
 Therm.C:943
 Therm.C:944
 Therm.C:945
 Therm.C:946
 Therm.C:947
 Therm.C:948
 Therm.C:949
 Therm.C:950
 Therm.C:951
 Therm.C:952
 Therm.C:953
 Therm.C:954
 Therm.C:955
 Therm.C:956
 Therm.C:957
 Therm.C:958
 Therm.C:959
 Therm.C:960
 Therm.C:961
 Therm.C:962
 Therm.C:963
 Therm.C:964
 Therm.C:965
 Therm.C:966
 Therm.C:967
 Therm.C:968
 Therm.C:969
 Therm.C:970
 Therm.C:971
 Therm.C:972
 Therm.C:973
 Therm.C:974
 Therm.C:975
 Therm.C:976
 Therm.C:977
 Therm.C:978
 Therm.C:979
 Therm.C:980
 Therm.C:981
 Therm.C:982
 Therm.C:983
 Therm.C:984
 Therm.C:985
 Therm.C:986
 Therm.C:987
 Therm.C:988
 Therm.C:989
 Therm.C:990
 Therm.C:991
 Therm.C:992
 Therm.C:993
 Therm.C:994
 Therm.C:995
 Therm.C:996
 Therm.C:997
 Therm.C:998
 Therm.C:999
 Therm.C:1000
 Therm.C:1001
 Therm.C:1002
 Therm.C:1003
 Therm.C:1004
 Therm.C:1005
 Therm.C:1006
 Therm.C:1007
 Therm.C:1008
 Therm.C:1009
 Therm.C:1010
 Therm.C:1011
 Therm.C:1012
 Therm.C:1013
 Therm.C:1014
 Therm.C:1015
 Therm.C:1016
 Therm.C:1017
 Therm.C:1018
 Therm.C:1019
 Therm.C:1020
 Therm.C:1021
 Therm.C:1022
 Therm.C:1023
 Therm.C:1024
 Therm.C:1025
 Therm.C:1026
 Therm.C:1027
 Therm.C:1028
 Therm.C:1029
 Therm.C:1030
 Therm.C:1031
 Therm.C:1032
 Therm.C:1033
 Therm.C:1034
 Therm.C:1035
 Therm.C:1036
 Therm.C:1037
 Therm.C:1038
 Therm.C:1039
 Therm.C:1040
 Therm.C:1041
 Therm.C:1042
 Therm.C:1043
 Therm.C:1044
 Therm.C:1045
 Therm.C:1046
 Therm.C:1047
 Therm.C:1048
 Therm.C:1049
 Therm.C:1050
 Therm.C:1051
 Therm.C:1052
 Therm.C:1053
 Therm.C:1054
 Therm.C:1055
 Therm.C:1056
 Therm.C:1057
 Therm.C:1058
 Therm.C:1059
 Therm.C:1060
 Therm.C:1061
 Therm.C:1062
 Therm.C:1063
 Therm.C:1064
 Therm.C:1065
 Therm.C:1066
 Therm.C:1067
 Therm.C:1068
 Therm.C:1069
 Therm.C:1070
 Therm.C:1071
 Therm.C:1072
 Therm.C:1073
 Therm.C:1074
 Therm.C:1075
 Therm.C:1076
 Therm.C:1077
 Therm.C:1078
 Therm.C:1079
 Therm.C:1080
 Therm.C:1081
 Therm.C:1082
 Therm.C:1083
 Therm.C:1084
 Therm.C:1085
 Therm.C:1086
 Therm.C:1087
 Therm.C:1088
 Therm.C:1089
 Therm.C:1090
 Therm.C:1091
 Therm.C:1092
 Therm.C:1093
 Therm.C:1094
 Therm.C:1095
 Therm.C:1096
 Therm.C:1097
 Therm.C:1098
 Therm.C:1099
 Therm.C:1100
 Therm.C:1101
 Therm.C:1102
 Therm.C:1103
 Therm.C:1104
 Therm.C:1105
 Therm.C:1106
 Therm.C:1107
 Therm.C:1108
 Therm.C:1109
 Therm.C:1110
 Therm.C:1111
 Therm.C:1112
 Therm.C:1113
 Therm.C:1114
 Therm.C:1115
 Therm.C:1116
 Therm.C:1117
 Therm.C:1118
 Therm.C:1119
 Therm.C:1120
 Therm.C:1121
 Therm.C:1122
 Therm.C:1123
 Therm.C:1124
 Therm.C:1125
 Therm.C:1126
 Therm.C:1127
 Therm.C:1128
 Therm.C:1129
 Therm.C:1130
 Therm.C:1131
 Therm.C:1132
 Therm.C:1133
 Therm.C:1134
 Therm.C:1135
 Therm.C:1136
 Therm.C:1137
 Therm.C:1138
 Therm.C:1139
 Therm.C:1140
 Therm.C:1141
 Therm.C:1142
 Therm.C:1143
 Therm.C:1144
 Therm.C:1145
 Therm.C:1146
 Therm.C:1147
 Therm.C:1148
 Therm.C:1149
 Therm.C:1150
 Therm.C:1151
 Therm.C:1152
 Therm.C:1153
 Therm.C:1154
 Therm.C:1155
 Therm.C:1156
 Therm.C:1157
 Therm.C:1158
 Therm.C:1159
 Therm.C:1160
 Therm.C:1161
 Therm.C:1162
 Therm.C:1163
 Therm.C:1164
 Therm.C:1165
 Therm.C:1166
 Therm.C:1167
 Therm.C:1168
 Therm.C:1169
 Therm.C:1170
 Therm.C:1171
 Therm.C:1172
 Therm.C:1173
 Therm.C:1174
 Therm.C:1175
 Therm.C:1176
 Therm.C:1177
 Therm.C:1178
 Therm.C:1179
 Therm.C:1180
 Therm.C:1181
 Therm.C:1182
 Therm.C:1183
 Therm.C:1184
 Therm.C:1185
 Therm.C:1186
 Therm.C:1187
 Therm.C:1188
 Therm.C:1189
 Therm.C:1190
 Therm.C:1191
 Therm.C:1192
 Therm.C:1193
 Therm.C:1194
 Therm.C:1195
 Therm.C:1196
 Therm.C:1197
 Therm.C:1198
 Therm.C:1199
 Therm.C:1200
 Therm.C:1201
 Therm.C:1202
 Therm.C:1203
 Therm.C:1204
 Therm.C:1205
 Therm.C:1206
 Therm.C:1207
 Therm.C:1208
 Therm.C:1209
 Therm.C:1210
 Therm.C:1211
 Therm.C:1212
 Therm.C:1213
 Therm.C:1214
 Therm.C:1215
 Therm.C:1216
 Therm.C:1217
 Therm.C:1218
 Therm.C:1219
 Therm.C:1220
 Therm.C:1221
 Therm.C:1222
 Therm.C:1223
 Therm.C:1224
 Therm.C:1225
 Therm.C:1226
 Therm.C:1227
 Therm.C:1228
 Therm.C:1229
 Therm.C:1230
 Therm.C:1231
 Therm.C:1232
 Therm.C:1233
 Therm.C:1234
 Therm.C:1235
 Therm.C:1236
 Therm.C:1237
 Therm.C:1238
 Therm.C:1239
 Therm.C:1240
 Therm.C:1241
 Therm.C:1242
 Therm.C:1243
 Therm.C:1244
 Therm.C:1245
 Therm.C:1246
 Therm.C:1247
 Therm.C:1248
 Therm.C:1249
 Therm.C:1250
 Therm.C:1251
 Therm.C:1252
 Therm.C:1253
 Therm.C:1254
 Therm.C:1255
 Therm.C:1256
 Therm.C:1257
 Therm.C:1258
 Therm.C:1259
 Therm.C:1260
 Therm.C:1261
 Therm.C:1262
 Therm.C:1263
 Therm.C:1264
 Therm.C:1265
 Therm.C:1266
 Therm.C:1267
 Therm.C:1268
 Therm.C:1269
 Therm.C:1270
 Therm.C:1271