//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 = "<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 = "<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 = "<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 = "<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 = "<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"<GetParameter(i)<<" b"<GetParameter(i)<Integral(0,50); //cout<<"test "<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"<GetParameter(i)<<" b"<GetParameter(i)<<" c"<GetParameter(i)<Integral(0,50); cout<<"Lambda enhanced "<0.0) cout<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 = "<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 "<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 = "<