44// / @author: Nicolo' Jacazio
5566
7+ // / \brief LUT writer with the AnalysisResults from AODs as input
8+
79#include " TCanvas.h"
810#include " TDatabasePDG.h"
911#include " TFile.h"
1214#include " TProfile2D.h"
1315#include " TProfile3D.h"
1416#include " TVectorD.h"
15- #include " fwdRes/fwdRes.C "
17+ #include " DetectorK/DetectorK.h "
1618#include " lutCovm.hh"
1719#include < Riostream.h>
18-
19- void diagonalise (lutEntry_t& lutEntry);
20-
21- bool fwdSolve (float * covm, float pt = 0.1 , float eta = 0.0 ,
22- float mass = 0.13957000 )
23- {
24- if (fwdRes (covm, pt, eta, mass) < 0 )
25- return false ;
26- return true ;
27- }
20+ #include " lutWrite.cc"
2821
2922void lutWrite_aod (const char * filename = " /tmp/lutCovm.pi.aod.dat" ,
30- int pdg = 211 ,
31- float field = 0.2 , int layer = 0 , int what = 0 ,
32- int efftype = 0 ,
33- const char * infilename = " /tmp/AnalysisResults_LUT.root" ,
34- float minPt = 0 .f,
35- float maxPt = 80 .f,
36- float minEta = -4 .f,
37- float maxEta = 4 .f)
23+ int pdg = 211 ,
24+ float field = 0.2 , int layer = 0 , int what = 0 ,
25+ int efftype = 0 ,
26+ const char * infilename = " /tmp/AnalysisResults_LUT.root" ,
27+ float minPt = 0 .f,
28+ float maxPt = 80 .f,
29+ float minEta = -4 .f,
30+ float maxEta = 4 .f)
3831{
3932
40- std::map<int , std::string> partname{ { 11 , " electron" }, { 13 , " muon" }, { 211 , " pion" }, { 321 , " kaon" }, { 2212 , " proton" } };
33+ std::map<int , std::string> partname{{ 11 , " electron" }, {13 , " muon" }, {211 , " pion" }, {321 , " kaon" }, {2212 , " proton" } };
4134 const std::string dn = " alice3-lutmaker-" + partname[pdg];
4235
4336 // Get the input from the analysis results
@@ -55,23 +48,23 @@ void lutWrite_aod(const char* filename = "/tmp/lutCovm.pi.aod.dat",
5548 return ;
5649 }
5750 // d->ls();
58- std::map<std::string, TH1F*> h{ { " eta" , nullptr }, { " pt" , nullptr } };
59- std::map<std::string, TProfile2D*> m{ { " CovMat_cYY" , nullptr },
60- { " CovMat_cZY" , nullptr },
61- { " CovMat_cZZ" , nullptr },
62- { " CovMat_cSnpY" , nullptr },
63- { " CovMat_cSnpZ" , nullptr },
64- { " CovMat_cSnpSnp" , nullptr },
65- { " CovMat_cTglY" , nullptr },
66- { " CovMat_cTglZ" , nullptr },
67- { " CovMat_cTglSnp" , nullptr },
68- { " CovMat_cTglTgl" , nullptr },
69- { " CovMat_c1PtY" , nullptr },
70- { " CovMat_c1PtZ" , nullptr },
71- { " CovMat_c1PtSnp" , nullptr },
72- { " CovMat_c1PtTgl" , nullptr },
73- { " CovMat_c1Pt21Pt2" , nullptr },
74- { " Efficiency" , nullptr } };
51+ std::map<std::string, TH1F*> h{{ " eta" , nullptr }, {" pt" , nullptr } };
52+ std::map<std::string, TProfile2D*> m{{ " CovMat_cYY" , nullptr },
53+ { " CovMat_cZY" , nullptr },
54+ { " CovMat_cZZ" , nullptr },
55+ { " CovMat_cSnpY" , nullptr },
56+ { " CovMat_cSnpZ" , nullptr },
57+ { " CovMat_cSnpSnp" , nullptr },
58+ { " CovMat_cTglY" , nullptr },
59+ { " CovMat_cTglZ" , nullptr },
60+ { " CovMat_cTglSnp" , nullptr },
61+ { " CovMat_cTglTgl" , nullptr },
62+ { " CovMat_c1PtY" , nullptr },
63+ { " CovMat_c1PtZ" , nullptr },
64+ { " CovMat_c1PtSnp" , nullptr },
65+ { " CovMat_c1PtTgl" , nullptr },
66+ { " CovMat_c1Pt21Pt2" , nullptr },
67+ { " Efficiency" , nullptr } };
7568
7669 struct binning {
7770 int n = 0 ;
@@ -288,31 +281,3 @@ void lutWrite_aod(const char* filename = "/tmp/lutCovm.pi.aod.dat",
288281 can->cd (2 );
289282 hetacalls->Draw (" HIST" );
290283}
291-
292- void diagonalise (lutEntry_t& lutEntry)
293- {
294- // Printf(" --- diagonalise: pt = %f, eta = %f", lutEntry.pt, lutEntry.eta);
295- TMatrixDSym m (5 );
296- double fcovm[5 ][5 ];
297- for (int i = 0 , k = 0 ; i < 5 ; ++i)
298- for (int j = 0 ; j < i + 1 ; ++j, ++k) {
299- fcovm[i][j] = lutEntry.covm [k];
300- fcovm[j][i] = lutEntry.covm [k];
301- }
302- m.SetMatrixArray ((double *)fcovm);
303- TMatrixDSymEigen eigen (m);
304- // eigenvalues vector
305- TVectorD eigenVal = eigen.GetEigenValues ();
306- for (int i = 0 ; i < 5 ; ++i)
307- lutEntry.eigval [i] = eigenVal[i];
308- // eigenvectors matrix
309- TMatrixD eigenVec = eigen.GetEigenVectors ();
310- for (int i = 0 ; i < 5 ; ++i)
311- for (int j = 0 ; j < 5 ; ++j)
312- lutEntry.eigvec [i][j] = eigenVec[i][j];
313- // inverse eigenvectors matrix
314- eigenVec.Invert ();
315- for (int i = 0 ; i < 5 ; ++i)
316- for (int j = 0 ; j < 5 ; ++j)
317- lutEntry.eiginv [i][j] = eigenVec[i][j];
318- }
0 commit comments