Skip to content

Commit 143c14c

Browse files
authored
Support for dN/deta dependence of the LUTs (#91)
1 parent 3fae53a commit 143c14c

File tree

6 files changed

+40
-21
lines changed

6 files changed

+40
-21
lines changed

src/TrackSmearer.cc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ TrackSmearer::loadTable(int pdg, const char *filename)
3030
std::cout << " --- troubles reading covariance matrix header for PDG " << pdg << ": " << filename << std::endl;
3131
return false;
3232
}
33+
if (mLUTHeader[ipdg]->version != LUTCOVM_VERSION) {
34+
std::cout << " --- LUT header version mismatch: expected/detected = " << LUTCOVM_VERSION << "/" << mLUTHeader[ipdg]->version << std::endl;
35+
return false;
36+
}
3337
const int nnch = mLUTHeader[ipdg]->nchmap.nbins;
3438
const int nrad = mLUTHeader[ipdg]->radmap.nbins;
3539
const int neta = mLUTHeader[ipdg]->etamap.nbins;
@@ -106,12 +110,12 @@ TrackSmearer::smearTrack(O2Track &o2track, lutEntry_t *lutEntry)
106110
/*****************************************************************/
107111

108112
bool
109-
TrackSmearer::smearTrack(O2Track &o2track, int pid)
113+
TrackSmearer::smearTrack(O2Track &o2track, int pid, float nch)
110114
{
111115

112116
auto pt = o2track.getPt();
113117
auto eta = o2track.getEta();
114-
auto lutEntry = getLUTEntry(pid, 0., 0., eta, pt);
118+
auto lutEntry = getLUTEntry(pid, nch, 0., eta, pt);
115119
if (!lutEntry || !lutEntry->valid) return false;
116120
return smearTrack(o2track, lutEntry);
117121
}
@@ -124,7 +128,9 @@ TrackSmearer::smearTrack(Track &track, bool atDCA)
124128

125129
O2Track o2track;
126130
TrackUtils::convertTrackToO2Track(track, o2track, atDCA);
127-
if (!smearTrack(o2track, track.PID)) return false;
131+
int pdg = track.PID;
132+
float nch = mdNdEta; // use locally stored dNch/deta for the time being
133+
if (!smearTrack(o2track, pdg, nch)) return false;
128134
TrackUtils::convertO2TrackToTrack(o2track, track, atDCA);
129135
return true;
130136

src/TrackSmearer.hh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ public:
2525
/** LUT methods **/
2626
bool loadTable(int pdg, const char *filename);
2727
void useEfficiency(bool val) { mUseEfficiency = val; };
28+
lutHeader_t *getLUTHeader(int pdg) { return mLUTHeader[getIndexPDG(pdg)]; };
2829
lutEntry_t *getLUTEntry(int pdg, float nch, float radius, float eta, float pt);
2930

3031
bool smearTrack(O2Track &o2track, lutEntry_t *lutEntry);
31-
bool smearTrack(O2Track &o2track, int pid);
32+
bool smearTrack(O2Track &o2track, int pid, float nch);
3233
bool smearTrack(Track &track, bool atDCA = true);
3334

3435
int getIndexPDG(int pdg) {
@@ -41,12 +42,15 @@ public:
4142
default: return 2;
4243
};
4344
};
45+
46+
void setdNdEta(float val) { mdNdEta = val; };
4447

4548
protected:
4649

4750
lutHeader_t *mLUTHeader[5] = {nullptr};
4851
lutEntry_t *****mLUTEntry[5] = {nullptr};
4952
bool mUseEfficiency = true;
53+
float mdNdEta = 1600.;
5054

5155
};
5256

src/lutCovm.hh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/// @email: [email protected]
33

44
#pragma once
5+
#define LUTCOVM_VERSION 20210611
56

67
struct map_t {
78
int nbins = 1;
@@ -27,24 +28,30 @@ struct map_t {
2728
};
2829

2930
struct lutHeader_t {
31+
int version = LUTCOVM_VERSION;
3032
int pdg = 0;
3133
float mass = 0.;
3234
float field = 0.;
3335
map_t nchmap;
3436
map_t radmap;
3537
map_t etamap;
3638
map_t ptmap;
39+
bool check_version() {
40+
return (version == LUTCOVM_VERSION);
41+
};
3742
void print() {
38-
printf(" pdg: %d \n", pdg);
39-
printf(" field: %f \n", field);
40-
printf(" nchmap: "); nchmap.print();
41-
printf(" radmap: "); radmap.print();
42-
printf(" etamap: "); etamap.print();
43-
printf(" ptmap: "); ptmap.print();
43+
printf(" version: %d \n", version);
44+
printf(" pdg: %d \n", pdg);
45+
printf(" field: %f \n", field);
46+
printf(" nchmap: "); nchmap.print();
47+
printf(" radmap: "); radmap.print();
48+
printf(" etamap: "); etamap.print();
49+
printf(" ptmap: "); ptmap.print();
4450
};
4551
};
4652

4753
struct lutEntry_t {
54+
float nch = 0.;
4855
float eta = 0.;
4956
float pt = 0.;
5057
bool valid = false;

src/lutWrite.cc

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,19 @@ lutWrite(const char *filename = "lutCovm.dat", int pdg = 211, float field = 0.2,
6868
lutHeader.field = field;
6969
// nch
7070
lutHeader.nchmap.log = true;
71-
lutHeader.nchmap.nbins = 1;
72-
lutHeader.nchmap.min = 0.;
73-
lutHeader.nchmap.max = 4.;
71+
lutHeader.nchmap.nbins = 20;
72+
lutHeader.nchmap.min = 0.5;
73+
lutHeader.nchmap.max = 3.5;
7474
// radius
7575
lutHeader.radmap.log = false;
7676
lutHeader.radmap.nbins = 1;
7777
lutHeader.radmap.min = 0.;
7878
lutHeader.radmap.max = 100.;
7979
// eta
8080
lutHeader.etamap.log = false;
81-
lutHeader.etamap.nbins = 80;
82-
lutHeader.etamap.min = -4.;
83-
lutHeader.etamap.max = 4.;
81+
lutHeader.etamap.nbins = 40;
82+
lutHeader.etamap.min = -2.;
83+
lutHeader.etamap.max = 2.;
8484
// pt
8585
lutHeader.ptmap.log = true;
8686
lutHeader.ptmap.nbins = 200;
@@ -96,8 +96,12 @@ lutWrite(const char *filename = "lutCovm.dat", int pdg = 211, float field = 0.2,
9696
lutEntry_t lutEntry;
9797

9898
// write entries
99-
for (int inch = 0; inch < nnch; ++inch)
100-
for (int irad = 0; irad < nrad; ++irad)
99+
for (int inch = 0; inch < nnch; ++inch) {
100+
auto nch = lutHeader.nchmap.eval(inch);
101+
lutEntry.nch = nch;
102+
fat.SetdNdEtaCent(nch);
103+
std::cout << " --- setting FAT dN/deta: " << nch << std::endl;
104+
for (int irad = 0; irad < nrad; ++irad) {
101105
for (int ieta = 0; ieta < neta; ++ieta) {
102106
auto eta = lutHeader.etamap.eval(ieta);
103107
lutEntry.eta = lutHeader.etamap.eval(ieta);
@@ -125,7 +129,7 @@ lutWrite(const char *filename = "lutCovm.dat", int pdg = 211, float field = 0.2,
125129
}
126130
diagonalise(lutEntry);
127131
lutFile.write(reinterpret_cast<char *>(&lutEntry), sizeof(lutEntry_t));
128-
}}
132+
}}}}
129133

130134

131135
lutFile.close();

src/lutWrite.geometry_v1.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ void
99
fatInit_geometry_v1(float field = 0.5, float rmin = 100.)
1010
{
1111
fat.SetBField(field);
12-
fat.SetdNdEtaCent(1600.);
1312
// new ideal Pixel properties?
1413
Double_t x0IB = 0.001;
1514
Double_t x0OB = 0.01;

src/lutWrite.werner.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ void
99
fatInit_werner(float field = 0.5, float rmin = 100.)
1010
{
1111
fat.SetBField(field);
12-
fat.SetdNdEtaCent(1600.);
1312
// new ideal Pixel properties?
1413
Double_t x0IB = 0.001;
1514
Double_t x0OB = 0.01;

0 commit comments

Comments
 (0)