Skip to content

Commit

Permalink
fixed representation of v2 components
Browse files Browse the repository at this point in the history
  • Loading branch information
Marcellocosti committed Jan 4, 2025
1 parent 22dcf1c commit 5d26dbd
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 54 deletions.
Binary file added run3/flow/WriteTF1.root
Binary file not shown.
26 changes: 15 additions & 11 deletions run3/flow/get_vn_vs_mass.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import numpy as np
import yaml
from ROOT import TLatex, TFile, TCanvas, TLegend, TH1D, TH1F, TDatabasePDG, TGraphAsymmErrors # pylint: disable=import-error,no-name-in-module
from ROOT import gROOT, gPad, gInterpreter, kBlack, kRed, kAzure, kGray, kOrange, kGreen, kFullCircle, kFullSquare, kOpenCircle # pylint: disable=import-error,no-name-in-module
from ROOT import gROOT, gPad, gInterpreter, kBlack, kRed, kAzure, kGray, kOrange, kGreen, kMagenta, kFullCircle, kFullSquare, kOpenCircle # pylint: disable=import-error,no-name-in-module
from flow_analysis_utils import get_centrality_bins, get_vnfitter_results, get_ep_vn, getD0ReflHistos, get_particle_info # pylint: disable=import-error,no-name-in-module
sys.path.append('../../..')
sys.path.append('../..')
Expand Down Expand Up @@ -407,7 +407,7 @@ def get_vn_vs_mass(fitConfigFileName, centClass, inFileName,
fBkgFuncMass.append(vnResults['fBkgFuncMass'])
fBkgFuncVn.append(vnResults['fBkgFuncVn'])
fMassTemplFuncts[iPt] = vnResults['fMassTemplFuncts']
# fVnTemplFuncts[iPt] = vnResults['fVnTemplFuncts']
fVnTemplFuncts[iPt] = vnResults['fVnTemplFuncts']

if useRefl:
fMassBkgRflFunc.append(vnResults['fMassBkgRflFunc'])
Expand Down Expand Up @@ -477,9 +477,7 @@ def get_vn_vs_mass(fitConfigFileName, centClass, inFileName,
if useRefl:
latex.DrawLatex(0.18, 0.20, f'RoverS = {SoverR:.2f}')
print(f'Drawing fMassTemplFuncts')
print(fMassTemplFuncts)
for iMassTemplFunct, massTemplFunct in enumerate(fMassTemplFuncts[iPt]):
print("Setting object styleeee")
SetObjectStyle(massTemplFunct, color=kMagenta+iMassTemplFunct*2, linewidth=3)
print(f'Eval: {massTemplFunct.Eval(1.8)}')
massTemplFunct.SetLineColor(1)
Expand All @@ -502,13 +500,19 @@ def get_vn_vs_mass(fitConfigFileName, centClass, inFileName,
if secPeak:
latex.DrawLatex(0.18, 0.75,
f'#it{{v}}{harmonic}(D^{{+}}) = {vnResults["vnSecPeak"]:.3f} #pm {vnResults["vnSecPeakUnc"]:.3f}')
# print(f'Drawing fVnTemplFuncts')
# print(fVnTemplFuncts)
# for iVnTemplFunct in fVnTemplFuncts[iPt]:
# print(f'Eval: {iVnTemplFunct.Eval(1.8)}')
# iVnTemplFunct.Draw('same')
# cSimFit[iCanv].Modified()
# cSimFit[iCanv].Update()
print(f'Drawing fVnTemplFuncts')
print(fVnTemplFuncts)
for iVnTemplFunct, vnTemplFunct in enumerate(fVnTemplFuncts[iPt]):
print(f'Eval: {vnTemplFunct.Eval(1.8)}')
file = TFile.Open("WriteTF1.root", "recreate")
file.cd()
vnTemplFunct.Write()
file.Close()
cSimFit[iPt].cd(2)
vnTemplFunct.SetLineColor(iVnTemplFunct+1)
vnTemplFunct.Draw('same')
cSimFit[iCanv].Modified()
cSimFit[iCanv].Update()
cSimFit[iCanv].Modified()
cSimFit[iCanv].Update()

Expand Down
73 changes: 30 additions & 43 deletions run3/flow/invmassfitter/VnVsMassFitter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -331,18 +331,13 @@ Bool_t VnVsMassFitter::SimultaneousFit(Bool_t drawFit) {
if(fVnRflLimited) fitter.Config().ParSettings(nparsmass+fNParsVnBkg+NvnParsSgn-1).SetLimits(fVnRflMin,fVnRflMax);
}
if(fTemplates) {
for(int iTemplPar=0; iTemplPar<this->fInitWeights.size()/2; iTemplPar++) {
// cout << "Setting template parameter " << iTemplPar << endl;
// cout << "Mass func parameter " << iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl << endl;
// cout << fitter.Config().ParSettings(iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl).Name() << endl;
// cout << "[" << fInitWeights[iTemplPar] << ", " << fWeightsLowerLims[iTemplPar]
// << ", " << fWeightsUpperLims[iTemplPar] << "]" << endl;
// cout << "Vn func parameter " << iTemplPar+fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg+fNParsVnSgn << endl;
// cout << "[" << fInitWeights[iTemplPar+this->fInitWeights.size()/2] << ", " << fWeightsLowerLims[iTemplPar+this->fInitWeights.size()/2]
// << ", " << fWeightsUpperLims[iTemplPar+this->fInitWeights.size()/2] << "]" << endl;
// cout << fitter.Config().ParSettings(iTemplPar+fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg+fNParsVnSgn).Name() << endl;

// cout << "---" << endl;
for(int iTemplPar=0; iTemplPar<this->fInitWeights.size(); iTemplPar++) {
cout << "Setting template parameter " << iTemplPar << endl;
cout << "Mass func parameter " << iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl << endl;
cout << fitter.Config().ParSettings(iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl).Name() << endl;
cout << "[" << fInitWeights[iTemplPar] << ", " << fWeightsLowerLims[iTemplPar]
<< ", " << fWeightsUpperLims[iTemplPar] << "]" << endl;

if(this->fWeightsLowerLims[iTemplPar] > this->fWeightsUpperLims[iTemplPar]) {
cout << "Fix mass" << endl;
fitter.Config().ParSettings(iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl).SetValue(fInitWeights[iTemplPar]);
Expand All @@ -352,15 +347,6 @@ Bool_t VnVsMassFitter::SimultaneousFit(Bool_t drawFit) {
fitter.Config().ParSettings(iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl).SetValue(fInitWeights[iTemplPar]);
fitter.Config().ParSettings(iTemplPar+fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl).SetLimits(fWeightsLowerLims[iTemplPar],fWeightsUpperLims[iTemplPar]);
}
if(this->fWeightsLowerLims[iTemplPar] > this->fWeightsUpperLims[iTemplPar]) {
cout << "Fix vn" << endl;
fitter.Config().ParSettings(iTemplPar+fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg+fNParsVnSgn).SetValue(fInitWeights[iTemplPar+this->fInitWeights.size()/2]);
fitter.Config().ParSettings(iTemplPar+fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg+fNParsVnSgn).Fix();
} else {
cout << "Vary vn" << endl;
fitter.Config().ParSettings(iTemplPar+fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg+fNParsVnSgn).SetValue(fInitWeights[iTemplPar+this->fInitWeights.size()/2]);
fitter.Config().ParSettings(iTemplPar+fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg+fNParsVnSgn).SetLimits(fWeightsLowerLims[iTemplPar+this->fInitWeights.size()/2],fWeightsUpperLims[iTemplPar+this->fInitWeights.size()/2]);
}
cout << "---" << endl;
}
}
Expand Down Expand Up @@ -393,6 +379,7 @@ Bool_t VnVsMassFitter::SimultaneousFit(Bool_t drawFit) {
fMassTotFunc->SetParError(iPar,result.ParError(iPar));
}
if(iPar>=nparsmass && iPar<nparsvn-NvnParsSgn) {
cout << "Setting parameter " << iPar-nparsmass << " of fVnBkgFunc to " << result.Parameter(iPar) << endl;
fVnBkgFunc->SetParameter(iPar-nparsmass,result.Parameter(iPar));
fVnBkgFunc->SetParError(iPar-nparsmass,result.ParError(iPar));
}
Expand All @@ -419,34 +406,34 @@ Bool_t VnVsMassFitter::SimultaneousFit(Bool_t drawFit) {
}
}
if(fTemplates) {
int nParBeforeTemplsMass = fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl;
cout << "Size of fKDETemplates: " << this->fKDETemplates.size() << endl;
cout << "Eval func 1: " << this->fKDETemplates[0].Eval(1.8) << endl;
// cout << "Eval func 2: " << this->fKDETemplates[1].Eval(1.8) << endl;
cout << "Coeff first func mass: " << result.Parameter(nParBeforeTemplsMass) << endl;
cout << "Coeff second func mass: " << result.Parameter(nParBeforeTemplsMass+1) << endl;
int idxParMassTemplsScaling = fNParsMassBkg+fNParsMassSgn+fNParsSec+fNParsRfl;
int idxParVnSgn = idxParMassTemplsScaling+fNParsTempls+fNParsVnBkg;
double vnSgn = result.Parameter(idxParVnSgn);
for(int iTempl=0; iTempl<fKDETemplates.size(); iTempl++) {
fKDEMassTemplatesDraw.push_back(new TF1(fKDETemplates[iTempl].GetName(),
[&, this, iTempl, nParBeforeTemplsMass, result] (double *x, double *par) {
double paramValue = result.Parameter(iTempl + nParBeforeTemplsMass);
double kdeEval = this->fKDETemplates[iTempl].Eval(x[0]);
return paramValue * kdeEval;
[&, this, iTempl, idxParMassTemplsScaling, result] (double *x, double *par) {
double templScalingPar = result.Parameter(iTempl + idxParMassTemplsScaling);
double kdeTemplEval = this->fKDETemplates[iTempl].Eval(x[0]);
return templScalingPar * kdeTemplEval;
}, fMassMin, fMassMax, 0));

fKDEVnTemplatesDraw.push_back(new TF1(Form("vnTempl_%s", fKDETemplates[iTempl].GetName()),
[&, this, iTempl, result, vnSgn] (double *x, double *par) {
return (vnSgn * this->fKDEMassTemplatesDraw[iTempl]->Eval(x[0])) / (this->fMassTotFunc->Eval(x[0]));
}, fMassMin, fMassMax, 0));
}
int nParBeforeTemplsVn = nParBeforeTemplsMass+fNParsTempls+fNParsVnBkg+fNParsVnSgn;
cout << "Coeff first func vn: " << result.Parameter(nParBeforeTemplsVn) << endl;
cout << "Coeff second func vn: " << result.Parameter(nParBeforeTemplsMass+1) << endl;
for(int iTempl=0; iTempl<fKDETemplates.size(); iTempl++) {
fKDEVnTemplatesDraw.push_back(new TF1(fKDETemplates[iTempl].GetName(),
[&, this, iTempl, nParBeforeTemplsVn, result] (double *x, double *par) {
double paramValue = result.Parameter(iTempl + fNParsMassSgn+fNParsMassBkg+fNParsSec+fNParsRfl+fNParsTempls+fNParsVnBkg);
double kdeEval = this->fKDETemplates[iTempl].Eval(x[0]);
return paramValue * kdeEval;

fKDEVnTemplatesDraw.push_back(new TF1("vnBkg",
[&, this, result, vnSgn] (double *x, double *par) {
return (this->fVnBkgFunc->Eval(x[0]) * this->fMassBkgFunc->Eval(x[0])) / (this->fMassTotFunc->Eval(x[0]));
}, fMassMin, fMassMax, 0));

fKDEVnTemplatesDraw.push_back(new TF1("vnSgn",
[&, this, result, vnSgn] (double *x, double *par) {
return (vnSgn * this->fMassSgnFunc->Eval(x[0])) / (this->fMassTotFunc->Eval(x[0]));
}, fMassMin, fMassMax, 0));
}
}

cout << "DrawFit: " << drawFit << endl;
if(drawFit) {DrawFit();}

fVn = fVnTotFunc->GetParameter(fVnTotFunc->GetNpar()-NvnParsSgn);
Expand Down Expand Up @@ -1245,7 +1232,7 @@ Double_t VnVsMassFitter::vnFunc(Double_t *m, Double_t *pars) {
Double_t Templates = 0;
// if(fTemplates) {Templates += VnTemplates(m,vntemplpars);}
if(fTemplates) {Templates += VnTemplates(m,templpars);}

return (vnSgn*Sgn+vnBkg*Bkg+vnSecPeak*SecPeak+vnRefl*Refl+vnSgn*Templates)/(Sgn+Bkg+SecPeak+Refl+Templates);
}

Expand Down
1 change: 1 addition & 0 deletions run3/flow/invmassfitter/VnVsMassFitter.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ class VnVsMassFitter : public TObject {
TF1* GetMassBkgRflFunc() const {
if(fReflections) return fMassBkgRflFunc;
else return nullptr;
}
std::vector<TF1*> GetMassTemplFuncts() const {
if(fTemplates) return fKDEMassTemplatesDraw;
else return {};
Expand Down

0 comments on commit 5d26dbd

Please sign in to comment.