ROOT logo
//Christine Nattrass, University of Tennessee at Knoxville
//This macro is to calculate the contributions to Et from various particles based on Levy fits to ALICE data at 900 GeV
//It uses d^2N/dpTdy from the papers, weighs it by Et, and integrates over all pT. 
//A=0 for mesons
//A=1 for antinucleons since they would anihilate in the calorimeter if they were observed by a calorimeter
//A=-1 for nucleons since they would not anihilate and their mass would not be measured
//At the end this is used to calculate the neutral energy correction
class AliAnalysisLevyPtModified{
public:
  virtual ~AliAnalysisLevyPtModified(){;};
  

  Double_t Evaluate(Double_t *pt, Double_t *par)
  {
    Double_t ldNdy  = par[0];
    Double_t l2pi   = 2*TMath::Pi();
    Double_t lTemp = par[1];
    Double_t lPower = par[2];
    Double_t lMass  = par[3];
    Double_t A = par[4];
    Double_t Et = TMath::Sqrt(pt[0]*pt[0]+lMass*lMass)+A*lMass;
    
    Double_t lBigCoef = ((lPower-1)*(lPower-2)) / (l2pi*lPower*lTemp*(lPower*lTemp+lMass*(lPower-2)));
    Double_t lInPower = 1 + (TMath::Sqrt(pt[0]*pt[0]+lMass*lMass)-lMass) / (lPower*lTemp);
    
    return ldNdy *Et* pt[0] * lBigCoef * TMath::Power(lInPower,(-1)*lPower);
  }
  ClassDef(AliAnalysisLevyPtModified, 1);
};
class AliAnalysisLevyPtModifiedBaryonEnhanced{
public:
  virtual ~AliAnalysisLevyPtModifiedBaryonEnhanced(){;};
  

  Double_t Evaluate(Double_t *pt, Double_t *par)
  {
    Double_t ldNdy  = par[0];
    Double_t l2pi   = 2*TMath::Pi();
    Double_t lTemp = par[1];
    Double_t lPower = par[2];
    Double_t lMass  = par[3];
    Double_t A = par[4];
    Double_t lMassEt  = par[3];//only used for calculating Et
    Double_t lBary0 = par[6];
    Double_t lBary1 = par[7];
    Double_t lBary2 = par[8];
    Double_t lBary3 = par[9];
    Double_t lBary4 = par[10];
    Double_t lBary5 = par[11];
    //this is the Et we would calculate if we had identified the particle as having a mass lMassEt
    Double_t Et = TMath::Sqrt(pt[0]*pt[0]+lMassEt*lMassEt)+A*lMassEt;
    
    Double_t lBigCoef = ((lPower-1)*(lPower-2)) / (l2pi*lPower*lTemp*(lPower*lTemp+lMass*(lPower-2)));
    Double_t lInPower = 1 + (TMath::Sqrt(pt[0]*pt[0]+lMass*lMass)-lMass) / (lPower*lTemp);
    //this is the baryon enhancement factor
    Double_t baryonEnhancement = lBary0*pow(pt[0],lBary1)*exp(-pow(pt[0]/lBary2,lBary3))/(lBary4+lBary5*pt[0]);
    if(baryonEnhancement<1.0) baryonEnhancement = 1.0;
    //This is the density of particles times the Et weight
    return ldNdy *Et* baryonEnhancement*pt[0] * lBigCoef * TMath::Power(lInPower,(-1)*lPower);  }
  ClassDef(AliAnalysisLevyPtModifiedBaryonEnhanced, 1);
};

class AliAnalysisLevyPtModifiedStrangeness{
public:
  virtual ~AliAnalysisLevyPtModifiedStrangeness(){;};
  

  Double_t Evaluate(Double_t *pt, Double_t *par)
  {
    Double_t ldNdy  = par[0];
    Double_t l2pi   = 2*TMath::Pi();
    Double_t lTemp = par[1];
    Double_t lPower = par[2];
    Double_t lMass  = par[3];
    Double_t A = par[4];
    Double_t lMassEt  = par[3];//only used for calculating Et
    //this is the Et we would calculate if we had identified the particle as having a mass lMassEt
    Double_t Et = TMath::Sqrt(pt[0]*pt[0]+lMassEt*lMassEt)+A*lMassEt;
    
    Double_t lBigCoef = ((lPower-1)*(lPower-2)) / (l2pi*lPower*lTemp*(lPower*lTemp+lMass*(lPower-2)));
    Double_t lInPower = 1 + (TMath::Sqrt(pt[0]*pt[0]+lMass*lMass)-lMass) / (lPower*lTemp);
    Double_t strangeness = (0.4333333*pt[0]-0.0666666)/(0.2333333333*pt[0]-0.01666666);
    if(strangeness<1.0 || pt[0]<0.1) strangeness = 1.0;
    //This is the density of particles times the Et weight
    return ldNdy *strangeness* Et* pt[0] * lBigCoef * TMath::Power(lInPower,(-1)*lPower);
  }
  ClassDef(AliAnalysisLevyPtModifiedStrangeness, 1);
};
class AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced{
public:
  virtual ~AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced(){;};
  

  Double_t Evaluate(Double_t *pt, Double_t *par)
  {
    Double_t ldNdy  = par[0];
    Double_t l2pi   = 2*TMath::Pi();
    Double_t lTemp = par[1];
    Double_t lPower = par[2];
    Double_t lMass  = par[3];
    Double_t A = par[4];
    Double_t lMassEt  = par[3];//only used for calculating Et
    Double_t lBary0 = par[6];
    Double_t lBary1 = par[7];
    Double_t lBary2 = par[8];
    Double_t lBary3 = par[9];
    Double_t lBary4 = par[10];
    Double_t lBary5 = par[11];
    //this is the Et we would calculate if we had identified the particle as having a mass lMassEt
    Double_t Et = TMath::Sqrt(pt[0]*pt[0]+lMassEt*lMassEt)+A*lMassEt;
    
    Double_t lBigCoef = ((lPower-1)*(lPower-2)) / (l2pi*lPower*lTemp*(lPower*lTemp+lMass*(lPower-2)));
    Double_t lInPower = 1 + (TMath::Sqrt(pt[0]*pt[0]+lMass*lMass)-lMass) / (lPower*lTemp);
    //this is the baryon enhancement factor
    Double_t baryonEnhancement = lBary0*pow(pt[0],lBary1)*exp(-pow(pt[0]/lBary2,lBary3))/(lBary4+lBary5*pt[0]);
    if(baryonEnhancement<1.0) baryonEnhancement = 1.0;
    Double_t strangeness = (0.4333333*pt[0]-0.0666666)/(0.2333333333*pt[0]-0.01666666);
    if(strangeness<1.0 || pt[0]<0.1) strangeness = 1.0;
    //This is the density of particles times the Et weight
    return ldNdy *Et*strangeness* baryonEnhancement*pt[0] * lBigCoef * TMath::Power(lInPower,(-1)*lPower);  }
  ClassDef(AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced, 1);
};


void CorrNeutralLevyFit(bool hadronic = false){

  float factor = 0.0;
  float factorerr = 0.0;
  if(hadronic){
    factor = 0.548;
    factorerr = 0.003;
  }

// particle          & $\frac{dN}{dy}$    & T (GeV)           & n               & $\frac{dE_T}{dy}$& a &\ET \\ \hline
// $\pi^{+}+\pi^{-}$ & 2.977  $\pm$ 0.15  & 0.126 $\pm$ 0.001 & 7.82 $\pm$ 0.1  &                  &   &     \\
  AliAnalysisLevyPtModified *function = new AliAnalysisLevyPtModified();
  fPion = new TF1("fPion",function, &AliAnalysisLevyPtModified::Evaluate,0,50,5,"AliAnalysisLevyPtModified","Evaluate");
  fPion->SetParameter(0,2.977);//dN/dy
  fPion->SetParameter(1,0.126);//T
  fPion->SetParameter(2,7.82);//n
  fPion->SetParameter(3,0.13957);//mass
  fPion->SetParameter(4,0);//A=0 for pions
  float integralPion = fPion->Integral(0,50);
  float integralErrPion = integralPion*0.15/2.977;
  float myerrorPionT = 0.0;
  float myerrorPionn = 0.0;
  float tmpPion;
  float T = 0.126;
  float Terr = 0.001;
  float n = 7.82;
  float nerr = 0.1;
  fPion->SetParameter(1,T+Terr);//T
  tmpPion = fPion->Integral(0,50);
  myerrorPionT = TMath::Abs(integralPion-tmpPion);
  fPion->SetParameter(1,T-Terr);//T
  tmpPion = fPion->Integral(0,50);
  if(TMath::Abs(integralPion-tmpPion)>myerrorPionT) myerrorPionT = TMath::Abs(integralPion-tmpPion);
  fPion->SetParameter(1,T);//T
  fPion->SetParameter(2,n+nerr);//n
  tmpPion = fPion->Integral(0,50);
  myerrorPionn = TMath::Abs(integralPion-tmpPion);
  fPion->SetParameter(2,n-nerr);//n
  tmpPion = fPion->Integral(0,50);
  if(TMath::Abs(integralPion-tmpPion)>myerrorPionn) myerrorPionn = TMath::Abs(integralPion-tmpPion);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  //To get the correct error one would have to fit the spectra data to get the covariance matrix...
  integralErrPion = TMath::Sqrt(TMath::Power(integralErrPion,2)+TMath::Power(myerrorPionT,2)+TMath::Power(myerrorPionn,2));
  cout<<"Pion Et = "<<integralPion<<"$\\pm$"<<integralErrPion<<endl;

// particle          & $\frac{dN}{dy}$    & T (GeV)           & n               & $\frac{dE_T}{dy}$& a &\ET \\ \hline
// $K^{+}+K^{-}$     & 0.366 $\pm$ 0.03   & 0.160 $\pm$ 0.006 & 6.087 $\pm$ 0.4 &                  &   &     \\
  fKaon = new TF1("fKaon",function, &AliAnalysisLevyPtModified::Evaluate,0,50,5,"AliAnalysisLevyPtModified","Evaluate");
  fKaon->SetParameter(0,0.366);//dN/dy
  fKaon->SetParameter(1,0.160);//T
  fKaon->SetParameter(2,6.087);//n
  fKaon->SetParameter(3,0.493677);//mass
  fKaon->SetParameter(4,0);//A=0 for kaons
  float integralKaon = fKaon->Integral(0,50);
  float integralErrKaon = integralKaon*0.03/0.366;
  fKaonStrange = new TF1("fKaonStrange",function, &AliAnalysisLevyPtModifiedStrangeness::Evaluate,0,50,5,"AliAnalysisLevyPtModifiedStrangeness","Evaluate");
  for(int i=0; i<5;i++){fKaonStrange->SetParameter(i,fKaon->GetParameter(i));}
  float integralKaonStrange = fKaonStrange->Integral(0,50);
  float myerrorKaonT = 0.0;
  float myerrorKaonn = 0.0;
  float tmpKaon;
  float T = 0.160;
  float Terr = 0.006;
  float n = 6.087;
  float nerr = 0.4;
  fKaon->SetParameter(1,T+Terr);//T
  tmpKaon = fKaon->Integral(0,50);
  myerrorKaonT = TMath::Abs(integralKaon-tmpKaon);
  fKaon->SetParameter(1,T-Terr);//T
  tmpKaon = fKaon->Integral(0,50);
  if(TMath::Abs(integralKaon-tmpKaon)>myerrorKaonT) myerrorKaonT = TMath::Abs(integralKaon-tmpKaon);
  fKaon->SetParameter(1,T);//T
  fKaon->SetParameter(2,n+nerr);//n
  tmpKaon = fKaon->Integral(0,50);
  myerrorKaonn = TMath::Abs(integralKaon-tmpKaon);
  fKaon->SetParameter(2,n-nerr);//n
  tmpKaon = fKaon->Integral(0,50);
  if(TMath::Abs(integralKaon-tmpKaon)>myerrorKaonn) myerrorKaonn = TMath::Abs(integralKaon-tmpKaon);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  integralErrKaon = TMath::Sqrt(TMath::Power(integralErrKaon,2)+TMath::Power(myerrorKaonT,2)+TMath::Power(myerrorKaonn,2));
  cout<<"Kaon Et = "<<integralKaon<<"$\\pm$"<<integralErrKaon<<endl;
  cout<<"Kaon Et Strange = "<<integralKaonStrange<<endl;

// particle          & $\frac{dN}{dy}$    & T (GeV)           & n               & $\frac{dE_T}{dy}$& a &\ET \\ \hline
// $p + \bar{p}$     &  0.157 $\pm$ 0.012 & 0.196 $\pm$ 0.009 & 8.6 $\pm$ 1.1   &                  &   &     \\
  fProton = new TF1("fProton",function, &AliAnalysisLevyPtModified::Evaluate,0,50,5,"AliAnalysisLevyPtModified","Evaluate");
  fProton->SetParameter(0,0.157/2.0);//dN/dy
  fProton->SetParameter(1,0.196);//T
  fProton->SetParameter(2,8.6);//n
  fProton->SetParameter(3,0.938272);//mass
  fProton->SetParameter(4,-1);//A=0 for protons
  fProtonEnhanced = new TF1("fProtonEnhanced",function, &AliAnalysisLevyPtModifiedBaryonEnhanced::Evaluate,0,50,12,"AliAnalysisLevyPtModifiedBaryonEnhanced","Evaluate");
  for(int i=0;i<6;i++){fProtonEnhanced->SetParameter(i,fProton->GetParameter(i));}//set all of the spectra parameters to their normal values
  //and now set the baryon enhancement parameters
  fProtonEnhanced->SetParameter(6,0.900878*1.2);
  fProtonEnhanced->SetParameter(7,1.38882);
  fProtonEnhanced->SetParameter(8,2.6361);
  fProtonEnhanced->SetParameter(9,1.37751);
  fProtonEnhanced->SetParameter(10,0.5);
  fProtonEnhanced->SetParameter(11,-0.03);
  float integralProtonEnhanced = fProtonEnhanced->Integral(0,50);
  float integralProton = fProton->Integral(0,50);
  float integralErrProton = integralProton*0.012/0.157;
  float myerrorProtonT = 0.0;
  float myerrorProtonn = 0.0;
  float tmpProton;
  float T = 0.196;
  float Terr = 0.009;
  float n = 8.6;
  float nerr = 1.1;
  fProton->SetParameter(1,T+Terr);//T
  tmpProton = fProton->Integral(0,50);
  myerrorProtonT = TMath::Abs(integralProton-tmpProton);
  fProton->SetParameter(1,T-Terr);//T
  tmpProton = fProton->Integral(0,50);
  if(TMath::Abs(integralProton-tmpProton)>myerrorProtonT) myerrorProtonT = TMath::Abs(integralProton-tmpProton);
  fProton->SetParameter(1,T);//T
  fProton->SetParameter(2,n+nerr);//n
  tmpProton = fProton->Integral(0,50);
  myerrorProtonn = TMath::Abs(integralProton-tmpProton);
  fProton->SetParameter(2,n-nerr);//n
  tmpProton = fProton->Integral(0,50);
  if(TMath::Abs(integralProton-tmpProton)>myerrorProtonn) myerrorProtonn = TMath::Abs(integralProton-tmpProton);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  integralErrProton = TMath::Sqrt(TMath::Power(integralErrProton,2)+TMath::Power(myerrorProtonT,2)+TMath::Power(myerrorProtonn,2));
  cout<<"Proton Et = "<<integralProton<<"$\\pm$"<<integralErrProton<<endl;





  //Antiprotons...
  fProton->SetParameter(0,0.157/2.0);//dN/dy
  fProton->SetParameter(1,0.196);//T
  fProton->SetParameter(2,8.6);//n
  fProton->SetParameter(3,0.938272);//mass
  fProton->SetParameter(2,n);//n
  fProton->SetParameter(4,1);//A=0 for protons
  float integralAntiProton = fProton->Integral(0,50);
  float integralErrAntiProton = integralAntiProton*0.012/0.157;
  fAntiProtonEnhanced = new TF1("fAntiProtonEnhanced",function, &AliAnalysisLevyPtModifiedBaryonEnhanced::Evaluate,0,50,12,"AliAnalysisLevyPtModifiedBaryonEnhanced","Evaluate");
  for(int i=0;i<6;i++){fAntiProtonEnhanced->SetParameter(i,fProton->GetParameter(i));}//set all of the spectra parameters to their normal values
  fAntiProtonEnhanced->SetParameter(2,n);//n
  fAntiProtonEnhanced->SetParameter(4,1);//A=0 for protons
  //and now set the baryon enhancement parameters
  fAntiProtonEnhanced->SetParameter(6,0.900878*1.2);
  fAntiProtonEnhanced->SetParameter(7,1.38882);
  fAntiProtonEnhanced->SetParameter(8,2.6361);
  fAntiProtonEnhanced->SetParameter(9,1.37751);
  fAntiProtonEnhanced->SetParameter(10,0.5);
  fAntiProtonEnhanced->SetParameter(11,-0.03);
  float integralAntiProtonEnhanced = fAntiProtonEnhanced->Integral(0,50);
  float myerrorAntiProtonT = 0.0;
  float myerrorAntiProtonn = 0.0;
  float tmpAntiProton;
  float T = 0.196;
  float Terr = 0.009;
  float n = 8.6;
  float nerr = 1.1;
  fProton->SetParameter(1,T+Terr);//T
  tmpAntiProton = fProton->Integral(0,50);
  myerrorAntiProtonT = TMath::Abs(integralAntiProton-tmpAntiProton);
  fProton->SetParameter(1,T-Terr);//T
  tmpAntiProton = fProton->Integral(0,50);
  if(TMath::Abs(integralAntiProton-tmpAntiProton)>myerrorAntiProtonT) myerrorAntiProtonT = TMath::Abs(integralAntiProton-tmpAntiProton);
  fProton->SetParameter(1,T);//T
  fProton->SetParameter(2,n+nerr);//n
  tmpAntiProton = fProton->Integral(0,50);
  myerrorAntiProtonn = TMath::Abs(integralAntiProton-tmpAntiProton);
  fProton->SetParameter(2,n-nerr);//n
  tmpAntiProton = fProton->Integral(0,50);
  if(TMath::Abs(integralAntiProton-tmpAntiProton)>myerrorAntiProtonn) myerrorAntiProtonn = TMath::Abs(integralAntiProton-tmpAntiProton);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  integralErrAntiProton = TMath::Sqrt(TMath::Power(integralErrAntiProton,2)+TMath::Power(myerrorAntiProtonT,2)+TMath::Power(myerrorAntiProtonn,2));
  cout<<"AntiProton Et = "<<integralAntiProton<<"$\\pm$"<<integralErrAntiProton<<endl;
  cout<<"AntiProton enhanced "<<integralAntiProtonEnhanced<<", "<<integralAntiProton/integralAntiProtonEnhanced*100.0<<endl;
  cout<<"Proton enhanced "<<integralProtonEnhanced<<", "<<integralProton/integralProtonEnhanced*100.0<<endl;
  cout<<"Proton and antiproton enhanced "<< (integralProtonEnhanced+integralAntiProtonEnhanced) <<", "
      << (integralProtonEnhanced+integralAntiProtonEnhanced) / (integralProton+integralAntiProton)*100.0 
      <<endl;


// particle          & $\frac{dN}{dy}$    & T (GeV)           & n               & $\frac{dE_T}{dy}$& a &\ET \\ \hline
// \kzeroshort       &0.184 $\pm$ 0.006   & 0.168 $\pm$ 0.005 & 6.6 $\pm$ 0.3   &                  &   &     \\
  fK0S = new TF1("fK0S",function, &AliAnalysisLevyPtModified::Evaluate,0,50,5,"AliAnalysisLevyPtModified","Evaluate");
  fK0S->SetParameter(0,0.184);//dN/dy
  fK0S->SetParameter(1,0.168);//T
  fK0S->SetParameter(2,6.6);//n
  fK0S->SetParameter(3,.497614);//mass
  fK0S->SetParameter(4,0);//A=0 for kaons
  float integralK0S = fK0S->Integral(0,50);
  float integralErrK0S = integralK0S*0.006/0.184;
  fK0Strange = new TF1("fK0Strange",function, &AliAnalysisLevyPtModifiedStrangeness::Evaluate,0,50,5,"AliAnalysisLevyPtModifiedStrangeness","Evaluate");
  for(int i=0; i<5;i++){fK0Strange->SetParameter(i,fK0S->GetParameter(i));}
  float integralK0SStrange = fK0Strange->Integral(0,50);
  float myerrorK0ST = 0.0;
  float myerrorK0Sn = 0.0;
  float tmpK0S;
  float T = 0.184;
  float Terr = 0.006;
  float n = 6.6;
  float nerr = 0.3;
  fK0S->SetParameter(1,T+Terr);//T
  tmpK0S = fK0S->Integral(0,50);
  myerrorK0ST = TMath::Abs(integralK0S-tmpK0S);
  fK0S->SetParameter(1,T-Terr);//T
  tmpK0S = fK0S->Integral(0,50);
  if(TMath::Abs(integralK0S-tmpK0S)>myerrorK0ST) myerrorK0ST = TMath::Abs(integralK0S-tmpK0S);
  fK0S->SetParameter(1,T);//T
  fK0S->SetParameter(2,n+nerr);//n
  tmpK0S = fK0S->Integral(0,50);
  myerrorK0Sn = TMath::Abs(integralK0S-tmpK0S);
  fK0S->SetParameter(2,n-nerr);//n
  tmpK0S = fK0S->Integral(0,50);
  if(TMath::Abs(integralK0S-tmpK0S)>myerrorK0Sn) myerrorK0Sn = TMath::Abs(integralK0S-tmpK0S);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  integralErrK0S = TMath::Sqrt(TMath::Power(integralErrK0S,2)+TMath::Power(myerrorK0ST,2)+TMath::Power(myerrorK0Sn,2));
  cout<<"K0S Et = "<<integralK0S<<"$\\pm$"<<integralErrK0S<<endl;
  cout<<"K0S Et Strange = "<<integralK0SStrange<<endl;

// particle          & $\frac{dN}{dy}$    & T (GeV)           & n               & $\frac{dE_T}{dy}$& a &\ET \\ \hline
// \lam              &0.048 $\pm$ 0.004   & 0.229 $\pm$ 0.015 & 10.8 $\pm$ 2.0  &                  &   &     \\
  fLambda = new TF1("fLambda",function, &AliAnalysisLevyPtModified::Evaluate,0,50,5,"AliAnalysisLevyPtModified","Evaluate");
  fLambda->SetParameter(0,0.048);//dN/dy
  fLambda->SetParameter(1,0.229);//T
  fLambda->SetParameter(2,10.8);//n
  fLambda->SetParameter(3,1.115683);//mass
  fLambda->SetParameter(4,0);//A=0 for kaons
  float integralLambda = fLambda->Integral(0,50);
  float integralErrLambda = integralLambda*0.004/0.048;
  fLambdaEnhanced = new TF1("fLambdaEnhanced",function, &AliAnalysisLevyPtModifiedBaryonEnhanced::Evaluate,0,50,12,"AliAnalysisLevyPtModifiedBaryonEnhanced","Evaluate");
  for(int i=0;i<6;i++){fLambdaEnhanced->SetParameter(i,fLambda->GetParameter(i));}//set all of the spectra parameters to their normal values
  //and now set the baryon enhancement parameters
  fLambdaEnhanced->SetParameter(6,0.900878);
  fLambdaEnhanced->SetParameter(7,1.38882);
  fLambdaEnhanced->SetParameter(8,2.6361);
  fLambdaEnhanced->SetParameter(9,1.37751);
  fLambdaEnhanced->SetParameter(10,0.5);
  fLambdaEnhanced->SetParameter(11,-0.03);
  float integralLambdaEnhanced = fLambdaEnhanced->Integral(0,50);
//   fLambdaEnhanced->Draw();
//   return;
  fLambdaStrange = new TF1("fLambdaStrange",function, &AliAnalysisLevyPtModifiedStrangeness::Evaluate,0,50,5,"AliAnalysisLevyPtModifiedStrangeness","Evaluate");
  for(int i=0; i<5;i++){fLambdaStrange->SetParameter(i,fLambda->GetParameter(i));}
  //for(int i=0;i<12;i++){cout<<"Lambda a"<<i<<" "<<fLambdaStrange->GetParameter(i)<<" b"<<i<<" "<<fLambda->GetParameter(i)<<endl;}
  float integralLambdaStrange = fLambdaStrange->Integral(0,50);
  //cout<<"test "<<integralLambdaStrange<<endl;
  fLambdaStrangeEnhanced = new TF1("fLambdaStrangeEnhanced",function, &AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced::Evaluate,0,50,12,"AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced","Evaluate");
  for(int i=0; i<12;i++){fLambdaStrangeEnhanced->SetParameter(i,fLambdaEnhanced->GetParameter(i));}
//   //and now set the baryon enhancement parameters
//   fLambdaStrangeEnhanced->SetParameter(6,0.900878);
//   fLambdaStrangeEnhanced->SetParameter(7,1.38882);
//   fLambdaStrangeEnhanced->SetParameter(8,2.6361);
//   fLambdaStrangeEnhanced->SetParameter(9,1.37751);
//   fLambdaStrangeEnhanced->SetParameter(10,0.5);
//   fLambdaStrangeEnhanced->SetParameter(11,-0.03);
  //for(int i=0;i<12;i++){cout<<"a"<<i<<" "<<fLambdaStrangeEnhanced->GetParameter(i)<<" b"<<i<<" "<<fLambdaEnhanced->GetParameter(i)<<" c"<<i<<" "<<fLambda->GetParameter(i)<<endl;}
  float integralLambdaStrangeEnhanced = fLambdaStrangeEnhanced->Integral(0,50);
  cout<<"Lambda enhanced "<<integralLambdaEnhanced<<", ";
  if(integralLambdaEnhanced>0.0) cout<<integralLambda/integralLambdaEnhanced*100.0;
  cout<<endl;
  float myerrorLambdaT = 0.0;
  float myerrorLambdan = 0.0;
  float tmpLambda;
  float T = 0.229;
  float Terr = 0.015;
  float n = 10.8;
  float nerr = 2.0;
  fLambda->SetParameter(1,T+Terr);//T
  tmpLambda = fLambda->Integral(0,50);
  myerrorLambdaT = TMath::Abs(integralLambda-tmpLambda);
  fLambda->SetParameter(1,T-Terr);//T
  tmpLambda = fLambda->Integral(0,50);
  if(TMath::Abs(integralLambda-tmpLambda)>myerrorLambdaT) myerrorLambdaT = TMath::Abs(integralLambda-tmpLambda);
  fLambda->SetParameter(1,T);//T
  fLambda->SetParameter(2,n+nerr);//n
  tmpLambda = fLambda->Integral(0,50);
  myerrorLambdan = TMath::Abs(integralLambda-tmpLambda);
  fLambda->SetParameter(2,n-nerr);//n
  tmpLambda = fLambda->Integral(0,50);
  if(TMath::Abs(integralLambda-tmpLambda)>myerrorLambdan) myerrorLambdan = TMath::Abs(integralLambda-tmpLambda);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  integralErrLambda = TMath::Sqrt(TMath::Power(integralErrLambda,2)+TMath::Power(myerrorLambdaT,2)+TMath::Power(myerrorLambdan,2));
  cout<<"Lambda Et = "<<integralLambda<<"$\\pm$"<<integralErrLambda<<endl;
  cout<<"Lambda Et Strange = "<<integralLambdaStrange<<endl;
  cout<<"Lambda Et Strange Enhanced = "<<integralLambdaStrangeEnhanced<<endl;


// particle          & $\frac{dN}{dy}$    & T (GeV)           & n               & $\frac{dE_T}{dy}$& a &\ET \\ \hline
// \alam             & 0.047 $\pm$ 0.005  & 0.210 $\pm$ 0.015 & 9.2 $\pm$ 1.4   &                  &   &     \\                  &   &     \\
  fAntiLambda = new TF1("fAntiLambda",function, &AliAnalysisLevyPtModified::Evaluate,0,50,5,"AliAnalysisLevyPtModified","Evaluate");
  fAntiLambda->SetParameter(0,0.047);//dN/dy
  fAntiLambda->SetParameter(1,0.210);//T
  fAntiLambda->SetParameter(2,9.2);//n
  fAntiLambda->SetParameter(3,1.115683);//mass
  fAntiLambda->SetParameter(4,0);//A=0 for kaons
  float integralAntiLambda = fAntiLambda->Integral(0,50);
  float integralErrAntiLambda = integralAntiLambda*0.005/0.047;
  fAntiLambdaEnhanced = new TF1("fAntiLambdaEnhanced",function, &AliAnalysisLevyPtModifiedBaryonEnhanced::Evaluate,0,50,12,"AliAnalysisLevyPtModifiedBaryonEnhanced","Evaluate");
  for(int i=0;i<6;i++){fAntiLambdaEnhanced->SetParameter(i,fAntiLambda->GetParameter(i));}//set all of the spectra parameters to their normal values
  //and now set the baryon enhancement parameters
  fAntiLambdaEnhanced->SetParameter(6,0.900878*1.2);
  fAntiLambdaEnhanced->SetParameter(7,1.38882);
  fAntiLambdaEnhanced->SetParameter(8,2.6361);
  fAntiLambdaEnhanced->SetParameter(9,1.37751);
  fAntiLambdaEnhanced->SetParameter(10,0.5);
  fAntiLambdaEnhanced->SetParameter(11,-0.03);
  float integralAntiLambdaEnhanced = fAntiLambdaEnhanced->Integral(0,50);
  cout<<"AntiLambda enhanced "<<integralAntiLambdaEnhanced<<", "<<integralAntiLambda/integralAntiLambdaEnhanced*100.0<<endl;
  fAntiLambdaStrange = new TF1("fAntiLambdaStrange",function, &AliAnalysisLevyPtModifiedStrangeness::Evaluate,0,50,5,"AliAnalysisLevyPtModifiedStrangeness","Evaluate");
  for(int i=0; i<5;i++){fAntiLambdaStrange->SetParameter(i,fAntiLambda->GetParameter(i));}
  float integralAntiLambdaStrange = fAntiLambdaStrange->Integral(0,50);

  fAntiLambdaStrangeEnhanced = new TF1("fAntiLambdaStrangeEnhanced",function, &AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced::Evaluate,0,50,12,"AliAnalysisLevyPtModifiedStrangenessBaryonEnhanced","Evaluate");
  for(int i=0; i<12;i++){fAntiLambdaStrangeEnhanced->SetParameter(i,fAntiLambdaEnhanced->GetParameter(i));}
  float integralAntiLambdaStrangeEnhanced = fAntiLambdaStrangeEnhanced->Integral(0,50);

  float myerrorAntiLambdaT = 0.0;
  float myerrorAntiLambdan = 0.0;
  float tmpAntiLambda;
  float T = 0.210;
  float Terr = 0.015;
  float n = 9.2;
  float nerr = 1.4;
  fAntiLambda->SetParameter(1,T+Terr);//T
  tmpAntiLambda = fAntiLambda->Integral(0,50);
  myerrorAntiLambdaT = TMath::Abs(integralAntiLambda-tmpAntiLambda);
  fAntiLambda->SetParameter(1,T-Terr);//T
  tmpAntiLambda = fAntiLambda->Integral(0,50);
  if(TMath::Abs(integralAntiLambda-tmpAntiLambda)>myerrorAntiLambdaT) myerrorAntiLambdaT = TMath::Abs(integralAntiLambda-tmpAntiLambda);
  fAntiLambda->SetParameter(1,T);//T
  fAntiLambda->SetParameter(2,n+nerr);//n
  tmpAntiLambda = fAntiLambda->Integral(0,50);
  myerrorAntiLambdan = TMath::Abs(integralAntiLambda-tmpAntiLambda);
  fAntiLambda->SetParameter(2,n-nerr);//n
  tmpAntiLambda = fAntiLambda->Integral(0,50);
  if(TMath::Abs(integralAntiLambda-tmpAntiLambda)>myerrorAntiLambdan) myerrorAntiLambdan = TMath::Abs(integralAntiLambda-tmpAntiLambda);
  //This isn't strictly correct because the errors on the parameters should be correlated but it's close
  integralErrAntiLambda = TMath::Sqrt(TMath::Power(integralErrAntiLambda,2)+TMath::Power(myerrorAntiLambdaT,2)+TMath::Power(myerrorAntiLambdan,2));
  cout<<"AntiLambda Et = "<<integralAntiLambda<<"$\\pm$"<<integralErrAntiLambda<<endl;
  cout<<"AntiLambda Et Strange = "<<integralAntiLambdaStrange<<endl;
  cout<<"AntiLambda Et Strange Enhanced = "<<integralAntiLambdaStrangeEnhanced<<endl;

  //now we apply various assumptions
  float integralK0L = integralK0S;
  float integralErrK0L = integralErrK0S;
  float integralNeutron = integralProton;
  float integralErrNeutron = integralErrProton;

  float totalEt = (1.0+factor)*integralPion+integralKaon+2.0*integralProton+2.0*integralAntiProton+2.0*integralK0S+integralLambda+integralAntiLambda;
  float measuredEt = integralPion+integralKaon+1.0*integralProton+1.0*integralAntiProton;
  float fneutral = measuredEt/totalEt;
  cout<<"fneutral = "<<fneutral<<endl;

  float totalEtEnhanced = (1.0+factor)*integralPion+integralKaon+2.0*integralProtonEnhanced+2.0*integralAntiProtonEnhanced+2.0*integralK0S+integralLambdaEnhanced+integralAntiLambdaEnhanced;
  float measuredEtEnhanced = integralPion+integralKaon+1.0*integralProtonEnhanced+1.0*integralAntiProtonEnhanced;
  float fneutralEnhanced = measuredEtEnhanced/totalEtEnhanced;
  cout<<"fneutralEnhanced = "<<fneutralEnhanced<<endl;


  float totalEtStrange = (1.0+factor)*integralPion+integralKaonStrange+2.0*integralProton+2.0*integralAntiProton+2.0*integralK0SStrange+integralLambdaStrange+integralAntiLambdaStrange;
  float measuredEtStrange = integralPion+integralKaonStrange+1.0*integralProton+1.0*integralAntiProton;
  float fneutralStrange = measuredEtStrange/totalEtStrange;
  cout<<"fneutralStrange = "<<fneutralStrange<<endl;



  float totalEtStrangeEnhanced = (1.0+factor)*integralPion+integralKaonStrange+2.0*integralProtonEnhanced+2.0*integralAntiProtonEnhanced+2.0*integralK0SStrange+integralLambdaStrangeEnhanced+integralAntiLambdaStrangeEnhanced;
  float measuredEtStrangeEnhanced = integralPion+integralKaonStrange+1.0*integralProtonEnhanced+1.0*integralAntiProtonEnhanced;
  float fneutralStrangeEnhanced = measuredEtStrangeEnhanced/totalEtStrangeEnhanced;
  cout<<"fneutralStrangeEnhanced = "<<fneutralStrangeEnhanced<<endl;

  //this is from ugly derivative taking for error propagation
  //form 1:  pions, kaons, protons
  //for f=(xa+A)/(ya+B)
  //df/da=(xf-yf^2)/(xa+A)
  //x=y=1; xa+A=measuredEt
  float errPion = (fneutral-fneutral*fneutral)/measuredEt*integralErrPion;
  if(hadronic){
    //then we have x=1, y = 1+factor
    //the error on the extra bit of et from pi0s
    float extraerror = integralPion*factorerr;
    integralErrPion = TMath::Sqrt(TMath::Power(integralErrPion,2)+TMath::Power(extraerror,2));
    errPion = (fneutral-(1.0+factor)*fneutral*fneutral)/measuredEt*integralErrPion;
  }
  float errKaon = (fneutral-fneutral*fneutral)/measuredEt*integralErrKaon;
  //x=1,y=2
  float errProton = (fneutral-2.0*fneutral*fneutral)/measuredEt*integralErrProton;
  float errAntiProton = (fneutral-2.0*fneutral*fneutral)/measuredEt*integralErrAntiProton;
  //form 2: K0S, lambda, antilambda
  //for f=A/(B+xa)
  //df/da=-xf^2/A
  //x=1,A=measuredEt
  float errLambda = fneutral*fneutral/measuredEt*integralErrLambda;
  float errAntiLambda = fneutral*fneutral/measuredEt*integralErrAntiLambda;
  //x=2,A=measuredEt
  float errK0S = 2.0*fneutral*fneutral/measuredEt*integralErrK0S;
  cout<<"Errors Pion "<<errPion<<" Kaon "<<errKaon<<" Proton "<<errProton<<" Lambda "<<errLambda<<" AntiLambda "<<errAntiLambda<<" K0S "<<errK0S<<endl;
  float totalErr = TMath::Sqrt( TMath::Power(errPion,2) + TMath::Power(errKaon,2) + TMath::Power(errProton,2)+ TMath::Power(errAntiProton,2) + TMath::Power(errLambda,2) + TMath::Power(errAntiLambda,2) + TMath::Power(errK0S,2) );
  
  cout<<"fneutral = "<<fneutral<<"$\\pm$"<<totalErr<<endl;
  cout<<"1/fneutral = "<<1.0/fneutral<<"$\\pm$"<<1.0/fneutral*totalErr/fneutral<<endl;
  cout<<"Percentage error "<<totalErr/fneutral*100.0<<endl;

  float fneutralPb = (fneutralStrangeEnhanced+fneutral)/2.0;
  float fneutralPbErr = TMath::Sqrt( TMath::Power((fneutralStrangeEnhanced-fneutral)/2.0,2.0) + TMath::Power(totalErr,2.0));
  cout<<"fneutral strange enhanced "<<fneutralPb<<"$\\pm$"<<fneutralPbErr<<endl;
    cout<<"1/fneutral strange enhanced = "<<1.0/fneutralPb<<"$\\pm$"<<1.0/fneutralPb*fneutralPbErr/fneutralPb<<endl;
  cout<<"Percentage error "<<fneutralPbErr/fneutralPb*100.0<<endl;

}

 CorrNeutralLevyFit.C:1
 CorrNeutralLevyFit.C:2
 CorrNeutralLevyFit.C:3
 CorrNeutralLevyFit.C:4
 CorrNeutralLevyFit.C:5
 CorrNeutralLevyFit.C:6
 CorrNeutralLevyFit.C:7
 CorrNeutralLevyFit.C:8
 CorrNeutralLevyFit.C:9
 CorrNeutralLevyFit.C:10
 CorrNeutralLevyFit.C:11
 CorrNeutralLevyFit.C:12
 CorrNeutralLevyFit.C:13
 CorrNeutralLevyFit.C:14
 CorrNeutralLevyFit.C:15
 CorrNeutralLevyFit.C:16
 CorrNeutralLevyFit.C:17
 CorrNeutralLevyFit.C:18
 CorrNeutralLevyFit.C:19
 CorrNeutralLevyFit.C:20
 CorrNeutralLevyFit.C:21
 CorrNeutralLevyFit.C:22
 CorrNeutralLevyFit.C:23
 CorrNeutralLevyFit.C:24
 CorrNeutralLevyFit.C:25
 CorrNeutralLevyFit.C:26
 CorrNeutralLevyFit.C:27
 CorrNeutralLevyFit.C:28
 CorrNeutralLevyFit.C:29
 CorrNeutralLevyFit.C:30
 CorrNeutralLevyFit.C:31
 CorrNeutralLevyFit.C:32
 CorrNeutralLevyFit.C:33
 CorrNeutralLevyFit.C:34
 CorrNeutralLevyFit.C:35
 CorrNeutralLevyFit.C:36
 CorrNeutralLevyFit.C:37
 CorrNeutralLevyFit.C:38
 CorrNeutralLevyFit.C:39
 CorrNeutralLevyFit.C:40
 CorrNeutralLevyFit.C:41
 CorrNeutralLevyFit.C:42
 CorrNeutralLevyFit.C:43
 CorrNeutralLevyFit.C:44
 CorrNeutralLevyFit.C:45
 CorrNeutralLevyFit.C:46
 CorrNeutralLevyFit.C:47
 CorrNeutralLevyFit.C:48
 CorrNeutralLevyFit.C:49
 CorrNeutralLevyFit.C:50
 CorrNeutralLevyFit.C:51
 CorrNeutralLevyFit.C:52
 CorrNeutralLevyFit.C:53
 CorrNeutralLevyFit.C:54
 CorrNeutralLevyFit.C:55
 CorrNeutralLevyFit.C:56
 CorrNeutralLevyFit.C:57
 CorrNeutralLevyFit.C:58
 CorrNeutralLevyFit.C:59
 CorrNeutralLevyFit.C:60
 CorrNeutralLevyFit.C:61
 CorrNeutralLevyFit.C:62
 CorrNeutralLevyFit.C:63
 CorrNeutralLevyFit.C:64
 CorrNeutralLevyFit.C:65
 CorrNeutralLevyFit.C:66
 CorrNeutralLevyFit.C:67
 CorrNeutralLevyFit.C:68
 CorrNeutralLevyFit.C:69
 CorrNeutralLevyFit.C:70
 CorrNeutralLevyFit.C:71
 CorrNeutralLevyFit.C:72
 CorrNeutralLevyFit.C:73
 CorrNeutralLevyFit.C:74
 CorrNeutralLevyFit.C:75
 CorrNeutralLevyFit.C:76
 CorrNeutralLevyFit.C:77
 CorrNeutralLevyFit.C:78
 CorrNeutralLevyFit.C:79
 CorrNeutralLevyFit.C:80
 CorrNeutralLevyFit.C:81
 CorrNeutralLevyFit.C:82
 CorrNeutralLevyFit.C:83
 CorrNeutralLevyFit.C:84
 CorrNeutralLevyFit.C:85
 CorrNeutralLevyFit.C:86
 CorrNeutralLevyFit.C:87
 CorrNeutralLevyFit.C:88
 CorrNeutralLevyFit.C:89
 CorrNeutralLevyFit.C:90
 CorrNeutralLevyFit.C:91
 CorrNeutralLevyFit.C:92
 CorrNeutralLevyFit.C:93
 CorrNeutralLevyFit.C:94
 CorrNeutralLevyFit.C:95
 CorrNeutralLevyFit.C:96
 CorrNeutralLevyFit.C:97
 CorrNeutralLevyFit.C:98
 CorrNeutralLevyFit.C:99
 CorrNeutralLevyFit.C:100
 CorrNeutralLevyFit.C:101
 CorrNeutralLevyFit.C:102
 CorrNeutralLevyFit.C:103
 CorrNeutralLevyFit.C:104
 CorrNeutralLevyFit.C:105
 CorrNeutralLevyFit.C:106
 CorrNeutralLevyFit.C:107
 CorrNeutralLevyFit.C:108
 CorrNeutralLevyFit.C:109
 CorrNeutralLevyFit.C:110
 CorrNeutralLevyFit.C:111
 CorrNeutralLevyFit.C:112
 CorrNeutralLevyFit.C:113
 CorrNeutralLevyFit.C:114
 CorrNeutralLevyFit.C:115
 CorrNeutralLevyFit.C:116
 CorrNeutralLevyFit.C:117
 CorrNeutralLevyFit.C:118
 CorrNeutralLevyFit.C:119
 CorrNeutralLevyFit.C:120
 CorrNeutralLevyFit.C:121
 CorrNeutralLevyFit.C:122
 CorrNeutralLevyFit.C:123
 CorrNeutralLevyFit.C:124
 CorrNeutralLevyFit.C:125
 CorrNeutralLevyFit.C:126
 CorrNeutralLevyFit.C:127
 CorrNeutralLevyFit.C:128
 CorrNeutralLevyFit.C:129
 CorrNeutralLevyFit.C:130
 CorrNeutralLevyFit.C:131
 CorrNeutralLevyFit.C:132
 CorrNeutralLevyFit.C:133
 CorrNeutralLevyFit.C:134
 CorrNeutralLevyFit.C:135
 CorrNeutralLevyFit.C:136
 CorrNeutralLevyFit.C:137
 CorrNeutralLevyFit.C:138
 CorrNeutralLevyFit.C:139
 CorrNeutralLevyFit.C:140
 CorrNeutralLevyFit.C:141
 CorrNeutralLevyFit.C:142
 CorrNeutralLevyFit.C:143
 CorrNeutralLevyFit.C:144
 CorrNeutralLevyFit.C:145
 CorrNeutralLevyFit.C:146
 CorrNeutralLevyFit.C:147
 CorrNeutralLevyFit.C:148
 CorrNeutralLevyFit.C:149
 CorrNeutralLevyFit.C:150
 CorrNeutralLevyFit.C:151
 CorrNeutralLevyFit.C:152
 CorrNeutralLevyFit.C:153
 CorrNeutralLevyFit.C:154
 CorrNeutralLevyFit.C:155
 CorrNeutralLevyFit.C:156
 CorrNeutralLevyFit.C:157
 CorrNeutralLevyFit.C:158
 CorrNeutralLevyFit.C:159
 CorrNeutralLevyFit.C:160
 CorrNeutralLevyFit.C:161
 CorrNeutralLevyFit.C:162
 CorrNeutralLevyFit.C:163
 CorrNeutralLevyFit.C:164
 CorrNeutralLevyFit.C:165
 CorrNeutralLevyFit.C:166
 CorrNeutralLevyFit.C:167
 CorrNeutralLevyFit.C:168
 CorrNeutralLevyFit.C:169
 CorrNeutralLevyFit.C:170
 CorrNeutralLevyFit.C:171
 CorrNeutralLevyFit.C:172
 CorrNeutralLevyFit.C:173
 CorrNeutralLevyFit.C:174
 CorrNeutralLevyFit.C:175
 CorrNeutralLevyFit.C:176
 CorrNeutralLevyFit.C:177
 CorrNeutralLevyFit.C:178
 CorrNeutralLevyFit.C:179
 CorrNeutralLevyFit.C:180
 CorrNeutralLevyFit.C:181
 CorrNeutralLevyFit.C:182
 CorrNeutralLevyFit.C:183
 CorrNeutralLevyFit.C:184
 CorrNeutralLevyFit.C:185
 CorrNeutralLevyFit.C:186
 CorrNeutralLevyFit.C:187
 CorrNeutralLevyFit.C:188
 CorrNeutralLevyFit.C:189
 CorrNeutralLevyFit.C:190
 CorrNeutralLevyFit.C:191
 CorrNeutralLevyFit.C:192
 CorrNeutralLevyFit.C:193
 CorrNeutralLevyFit.C:194
 CorrNeutralLevyFit.C:195
 CorrNeutralLevyFit.C:196
 CorrNeutralLevyFit.C:197
 CorrNeutralLevyFit.C:198
 CorrNeutralLevyFit.C:199
 CorrNeutralLevyFit.C:200
 CorrNeutralLevyFit.C:201
 CorrNeutralLevyFit.C:202
 CorrNeutralLevyFit.C:203
 CorrNeutralLevyFit.C:204
 CorrNeutralLevyFit.C:205
 CorrNeutralLevyFit.C:206
 CorrNeutralLevyFit.C:207
 CorrNeutralLevyFit.C:208
 CorrNeutralLevyFit.C:209
 CorrNeutralLevyFit.C:210
 CorrNeutralLevyFit.C:211
 CorrNeutralLevyFit.C:212
 CorrNeutralLevyFit.C:213
 CorrNeutralLevyFit.C:214
 CorrNeutralLevyFit.C:215
 CorrNeutralLevyFit.C:216
 CorrNeutralLevyFit.C:217
 CorrNeutralLevyFit.C:218
 CorrNeutralLevyFit.C:219
 CorrNeutralLevyFit.C:220
 CorrNeutralLevyFit.C:221
 CorrNeutralLevyFit.C:222
 CorrNeutralLevyFit.C:223
 CorrNeutralLevyFit.C:224
 CorrNeutralLevyFit.C:225
 CorrNeutralLevyFit.C:226
 CorrNeutralLevyFit.C:227
 CorrNeutralLevyFit.C:228
 CorrNeutralLevyFit.C:229
 CorrNeutralLevyFit.C:230
 CorrNeutralLevyFit.C:231
 CorrNeutralLevyFit.C:232
 CorrNeutralLevyFit.C:233
 CorrNeutralLevyFit.C:234
 CorrNeutralLevyFit.C:235
 CorrNeutralLevyFit.C:236
 CorrNeutralLevyFit.C:237
 CorrNeutralLevyFit.C:238
 CorrNeutralLevyFit.C:239
 CorrNeutralLevyFit.C:240
 CorrNeutralLevyFit.C:241
 CorrNeutralLevyFit.C:242
 CorrNeutralLevyFit.C:243
 CorrNeutralLevyFit.C:244
 CorrNeutralLevyFit.C:245
 CorrNeutralLevyFit.C:246
 CorrNeutralLevyFit.C:247
 CorrNeutralLevyFit.C:248
 CorrNeutralLevyFit.C:249
 CorrNeutralLevyFit.C:250
 CorrNeutralLevyFit.C:251
 CorrNeutralLevyFit.C:252
 CorrNeutralLevyFit.C:253
 CorrNeutralLevyFit.C:254
 CorrNeutralLevyFit.C:255
 CorrNeutralLevyFit.C:256
 CorrNeutralLevyFit.C:257
 CorrNeutralLevyFit.C:258
 CorrNeutralLevyFit.C:259
 CorrNeutralLevyFit.C:260
 CorrNeutralLevyFit.C:261
 CorrNeutralLevyFit.C:262
 CorrNeutralLevyFit.C:263
 CorrNeutralLevyFit.C:264
 CorrNeutralLevyFit.C:265
 CorrNeutralLevyFit.C:266
 CorrNeutralLevyFit.C:267
 CorrNeutralLevyFit.C:268
 CorrNeutralLevyFit.C:269
 CorrNeutralLevyFit.C:270
 CorrNeutralLevyFit.C:271
 CorrNeutralLevyFit.C:272
 CorrNeutralLevyFit.C:273
 CorrNeutralLevyFit.C:274
 CorrNeutralLevyFit.C:275
 CorrNeutralLevyFit.C:276
 CorrNeutralLevyFit.C:277
 CorrNeutralLevyFit.C:278
 CorrNeutralLevyFit.C:279
 CorrNeutralLevyFit.C:280
 CorrNeutralLevyFit.C:281
 CorrNeutralLevyFit.C:282
 CorrNeutralLevyFit.C:283
 CorrNeutralLevyFit.C:284
 CorrNeutralLevyFit.C:285
 CorrNeutralLevyFit.C:286
 CorrNeutralLevyFit.C:287
 CorrNeutralLevyFit.C:288
 CorrNeutralLevyFit.C:289
 CorrNeutralLevyFit.C:290
 CorrNeutralLevyFit.C:291
 CorrNeutralLevyFit.C:292
 CorrNeutralLevyFit.C:293
 CorrNeutralLevyFit.C:294
 CorrNeutralLevyFit.C:295
 CorrNeutralLevyFit.C:296
 CorrNeutralLevyFit.C:297
 CorrNeutralLevyFit.C:298
 CorrNeutralLevyFit.C:299
 CorrNeutralLevyFit.C:300
 CorrNeutralLevyFit.C:301
 CorrNeutralLevyFit.C:302
 CorrNeutralLevyFit.C:303
 CorrNeutralLevyFit.C:304
 CorrNeutralLevyFit.C:305
 CorrNeutralLevyFit.C:306
 CorrNeutralLevyFit.C:307
 CorrNeutralLevyFit.C:308
 CorrNeutralLevyFit.C:309
 CorrNeutralLevyFit.C:310
 CorrNeutralLevyFit.C:311
 CorrNeutralLevyFit.C:312
 CorrNeutralLevyFit.C:313
 CorrNeutralLevyFit.C:314
 CorrNeutralLevyFit.C:315
 CorrNeutralLevyFit.C:316
 CorrNeutralLevyFit.C:317
 CorrNeutralLevyFit.C:318
 CorrNeutralLevyFit.C:319
 CorrNeutralLevyFit.C:320
 CorrNeutralLevyFit.C:321
 CorrNeutralLevyFit.C:322
 CorrNeutralLevyFit.C:323
 CorrNeutralLevyFit.C:324
 CorrNeutralLevyFit.C:325
 CorrNeutralLevyFit.C:326
 CorrNeutralLevyFit.C:327
 CorrNeutralLevyFit.C:328
 CorrNeutralLevyFit.C:329
 CorrNeutralLevyFit.C:330
 CorrNeutralLevyFit.C:331
 CorrNeutralLevyFit.C:332
 CorrNeutralLevyFit.C:333
 CorrNeutralLevyFit.C:334
 CorrNeutralLevyFit.C:335
 CorrNeutralLevyFit.C:336
 CorrNeutralLevyFit.C:337
 CorrNeutralLevyFit.C:338
 CorrNeutralLevyFit.C:339
 CorrNeutralLevyFit.C:340
 CorrNeutralLevyFit.C:341
 CorrNeutralLevyFit.C:342
 CorrNeutralLevyFit.C:343
 CorrNeutralLevyFit.C:344
 CorrNeutralLevyFit.C:345
 CorrNeutralLevyFit.C:346
 CorrNeutralLevyFit.C:347
 CorrNeutralLevyFit.C:348
 CorrNeutralLevyFit.C:349
 CorrNeutralLevyFit.C:350
 CorrNeutralLevyFit.C:351
 CorrNeutralLevyFit.C:352
 CorrNeutralLevyFit.C:353
 CorrNeutralLevyFit.C:354
 CorrNeutralLevyFit.C:355
 CorrNeutralLevyFit.C:356
 CorrNeutralLevyFit.C:357
 CorrNeutralLevyFit.C:358
 CorrNeutralLevyFit.C:359
 CorrNeutralLevyFit.C:360
 CorrNeutralLevyFit.C:361
 CorrNeutralLevyFit.C:362
 CorrNeutralLevyFit.C:363
 CorrNeutralLevyFit.C:364
 CorrNeutralLevyFit.C:365
 CorrNeutralLevyFit.C:366
 CorrNeutralLevyFit.C:367
 CorrNeutralLevyFit.C:368
 CorrNeutralLevyFit.C:369
 CorrNeutralLevyFit.C:370
 CorrNeutralLevyFit.C:371
 CorrNeutralLevyFit.C:372
 CorrNeutralLevyFit.C:373
 CorrNeutralLevyFit.C:374
 CorrNeutralLevyFit.C:375
 CorrNeutralLevyFit.C:376
 CorrNeutralLevyFit.C:377
 CorrNeutralLevyFit.C:378
 CorrNeutralLevyFit.C:379
 CorrNeutralLevyFit.C:380
 CorrNeutralLevyFit.C:381
 CorrNeutralLevyFit.C:382
 CorrNeutralLevyFit.C:383
 CorrNeutralLevyFit.C:384
 CorrNeutralLevyFit.C:385
 CorrNeutralLevyFit.C:386
 CorrNeutralLevyFit.C:387
 CorrNeutralLevyFit.C:388
 CorrNeutralLevyFit.C:389
 CorrNeutralLevyFit.C:390
 CorrNeutralLevyFit.C:391
 CorrNeutralLevyFit.C:392
 CorrNeutralLevyFit.C:393
 CorrNeutralLevyFit.C:394
 CorrNeutralLevyFit.C:395
 CorrNeutralLevyFit.C:396
 CorrNeutralLevyFit.C:397
 CorrNeutralLevyFit.C:398
 CorrNeutralLevyFit.C:399
 CorrNeutralLevyFit.C:400
 CorrNeutralLevyFit.C:401
 CorrNeutralLevyFit.C:402
 CorrNeutralLevyFit.C:403
 CorrNeutralLevyFit.C:404
 CorrNeutralLevyFit.C:405
 CorrNeutralLevyFit.C:406
 CorrNeutralLevyFit.C:407
 CorrNeutralLevyFit.C:408
 CorrNeutralLevyFit.C:409
 CorrNeutralLevyFit.C:410
 CorrNeutralLevyFit.C:411
 CorrNeutralLevyFit.C:412
 CorrNeutralLevyFit.C:413
 CorrNeutralLevyFit.C:414
 CorrNeutralLevyFit.C:415
 CorrNeutralLevyFit.C:416
 CorrNeutralLevyFit.C:417
 CorrNeutralLevyFit.C:418
 CorrNeutralLevyFit.C:419
 CorrNeutralLevyFit.C:420
 CorrNeutralLevyFit.C:421
 CorrNeutralLevyFit.C:422
 CorrNeutralLevyFit.C:423
 CorrNeutralLevyFit.C:424
 CorrNeutralLevyFit.C:425
 CorrNeutralLevyFit.C:426
 CorrNeutralLevyFit.C:427
 CorrNeutralLevyFit.C:428
 CorrNeutralLevyFit.C:429
 CorrNeutralLevyFit.C:430
 CorrNeutralLevyFit.C:431
 CorrNeutralLevyFit.C:432
 CorrNeutralLevyFit.C:433
 CorrNeutralLevyFit.C:434
 CorrNeutralLevyFit.C:435
 CorrNeutralLevyFit.C:436
 CorrNeutralLevyFit.C:437
 CorrNeutralLevyFit.C:438
 CorrNeutralLevyFit.C:439
 CorrNeutralLevyFit.C:440
 CorrNeutralLevyFit.C:441
 CorrNeutralLevyFit.C:442
 CorrNeutralLevyFit.C:443
 CorrNeutralLevyFit.C:444
 CorrNeutralLevyFit.C:445
 CorrNeutralLevyFit.C:446
 CorrNeutralLevyFit.C:447
 CorrNeutralLevyFit.C:448
 CorrNeutralLevyFit.C:449
 CorrNeutralLevyFit.C:450
 CorrNeutralLevyFit.C:451
 CorrNeutralLevyFit.C:452
 CorrNeutralLevyFit.C:453
 CorrNeutralLevyFit.C:454
 CorrNeutralLevyFit.C:455
 CorrNeutralLevyFit.C:456
 CorrNeutralLevyFit.C:457
 CorrNeutralLevyFit.C:458
 CorrNeutralLevyFit.C:459
 CorrNeutralLevyFit.C:460
 CorrNeutralLevyFit.C:461
 CorrNeutralLevyFit.C:462
 CorrNeutralLevyFit.C:463
 CorrNeutralLevyFit.C:464
 CorrNeutralLevyFit.C:465
 CorrNeutralLevyFit.C:466
 CorrNeutralLevyFit.C:467
 CorrNeutralLevyFit.C:468
 CorrNeutralLevyFit.C:469
 CorrNeutralLevyFit.C:470
 CorrNeutralLevyFit.C:471
 CorrNeutralLevyFit.C:472
 CorrNeutralLevyFit.C:473
 CorrNeutralLevyFit.C:474
 CorrNeutralLevyFit.C:475
 CorrNeutralLevyFit.C:476
 CorrNeutralLevyFit.C:477
 CorrNeutralLevyFit.C:478
 CorrNeutralLevyFit.C:479
 CorrNeutralLevyFit.C:480
 CorrNeutralLevyFit.C:481
 CorrNeutralLevyFit.C:482
 CorrNeutralLevyFit.C:483
 CorrNeutralLevyFit.C:484
 CorrNeutralLevyFit.C:485
 CorrNeutralLevyFit.C:486
 CorrNeutralLevyFit.C:487
 CorrNeutralLevyFit.C:488
 CorrNeutralLevyFit.C:489
 CorrNeutralLevyFit.C:490
 CorrNeutralLevyFit.C:491
 CorrNeutralLevyFit.C:492
 CorrNeutralLevyFit.C:493
 CorrNeutralLevyFit.C:494
 CorrNeutralLevyFit.C:495
 CorrNeutralLevyFit.C:496
 CorrNeutralLevyFit.C:497
 CorrNeutralLevyFit.C:498
 CorrNeutralLevyFit.C:499
 CorrNeutralLevyFit.C:500
 CorrNeutralLevyFit.C:501
 CorrNeutralLevyFit.C:502
 CorrNeutralLevyFit.C:503
 CorrNeutralLevyFit.C:504
 CorrNeutralLevyFit.C:505
 CorrNeutralLevyFit.C:506
 CorrNeutralLevyFit.C:507
 CorrNeutralLevyFit.C:508
 CorrNeutralLevyFit.C:509
 CorrNeutralLevyFit.C:510
 CorrNeutralLevyFit.C:511
 CorrNeutralLevyFit.C:512
 CorrNeutralLevyFit.C:513
 CorrNeutralLevyFit.C:514
 CorrNeutralLevyFit.C:515
 CorrNeutralLevyFit.C:516
 CorrNeutralLevyFit.C:517
 CorrNeutralLevyFit.C:518
 CorrNeutralLevyFit.C:519
 CorrNeutralLevyFit.C:520
 CorrNeutralLevyFit.C:521
 CorrNeutralLevyFit.C:522
 CorrNeutralLevyFit.C:523
 CorrNeutralLevyFit.C:524
 CorrNeutralLevyFit.C:525
 CorrNeutralLevyFit.C:526
 CorrNeutralLevyFit.C:527
 CorrNeutralLevyFit.C:528
 CorrNeutralLevyFit.C:529
 CorrNeutralLevyFit.C:530
 CorrNeutralLevyFit.C:531
 CorrNeutralLevyFit.C:532
 CorrNeutralLevyFit.C:533
 CorrNeutralLevyFit.C:534
 CorrNeutralLevyFit.C:535
 CorrNeutralLevyFit.C:536
 CorrNeutralLevyFit.C:537