@@ -91,20 +91,32 @@ static constexpr size_t kMaxValidHitsForTruncation56 = 3;
9191static constexpr size_t kMaxValidHitsForTruncation34 = 2 ;
9292static constexpr size_t kMaxValidHitsForTruncation12 = 1 ;
9393
94+ // Constants for LUT binning
95+ // To do: Include in LUT header or similar
96+ static constexpr int kLUTEtaBins = 50 ;
97+ static constexpr float kLUTEtaMin = -2 .5f ;
98+ static constexpr float kLUTEtaMax = 2 .5f ;
99+ static constexpr int kLUTPtBins = 500 ;
100+ static constexpr float kLUTPtMin = 0 .0f ;
101+ static constexpr float kLUTPtMax = 10 .0f ;
102+
94103class ToTLUT
95104{
96105 public:
97- ToTLUT (float truncationFractionVal, int maxLayers, int etaBins, float etaMin, float etaMax, int ptBins, float ptMin, float ptMax)
98- : mTruncationFraction (truncationFractionVal),
99- mMaxLayers (maxLayers),
100- mEtaBins(etaBins),
101- mEtaMin(etaMin),
102- mEtaMax(etaMax),
103- mPtBins(ptBins),
104- mPtMin(ptMin),
105- mPtMax(ptMax),
106- mEtaBinWidth((etaMax - etaMin) / etaBins),
107- mPtBinWidth((ptMax - ptMin) / ptBins)
106+ ToTLUT (int maxLayers, float analysisEtaMinVal = 0 .0f , float analysisEtaMaxVal = 1 .0f , float analysisPtMinVal = 0 .0f , float analysisPtMaxVal = 10 .0f )
107+ : mMaxLayers (maxLayers),
108+ mAnalysisEtaMin (analysisEtaMinVal),
109+ mAnalysisEtaMax(analysisEtaMaxVal),
110+ mAnalysisPtMin(analysisPtMinVal),
111+ mAnalysisPtMax(analysisPtMaxVal),
112+ mEtaBins(kLUTEtaBins ),
113+ mEtaMin(kLUTEtaMin ),
114+ mEtaMax(kLUTEtaMax ),
115+ mPtBins(kLUTPtBins ),
116+ mPtMin(kLUTPtMin ),
117+ mPtMax(kLUTPtMax ),
118+ mEtaBinWidth((kLUTEtaMax - kLUTEtaMin ) / kLUTEtaBins),
119+ mPtBinWidth((kLUTPtMax - kLUTPtMin ) / kLUTPtBins)
108120 {
109121 mPdgToIndexMap .reserve (10 );
110122 mIndexToPdgMap .reserve (10 );
@@ -179,9 +191,21 @@ class ToTLUT
179191 for (int etaBin = 0 ; etaBin < mEtaBins ; ++etaBin) {
180192 float etaMinBin = mEtaMin + etaBin * mEtaBinWidth ;
181193 float etaMaxBin = etaMinBin + mEtaBinWidth ;
194+
195+ float etaCenter = (etaMinBin + etaMaxBin) / 2 .0f ;
196+ if (std::abs (etaCenter) < mAnalysisEtaMin || std::abs (etaCenter) > mAnalysisEtaMax ) {
197+ continue ;
198+ }
199+
182200 for (int ptBin = 0 ; ptBin < mPtBins ; ++ptBin) {
183201 float ptMinBin = mPtMin + ptBin * mPtBinWidth ;
184202 float ptMaxBin = ptMinBin + mPtBinWidth ;
203+ float ptCenter = (ptMinBin + ptMaxBin) / 2 .0f ;
204+
205+ if (ptCenter < mAnalysisPtMin || ptCenter >= mAnalysisPtMax ) {
206+ continue ;
207+ }
208+
185209 TString histName = Form (" tot_%d_barrel%d_eta%.2f-%.2f_pt%.2f-%.2f" , pdg, layer, etaMinBin, etaMaxBin, ptMinBin, ptMaxBin);
186210
187211 TH1F* histFromFile = dynamic_cast <TH1F*>(f->Get (histName));
@@ -252,8 +276,11 @@ class ToTLUT
252276 std::unordered_map<int , int > mPdgToIndexMap ;
253277 std::vector<int > mIndexToPdgMap ;
254278
255- float mTruncationFraction ;
256279 int mMaxLayers ;
280+ float mAnalysisEtaMin ;
281+ float mAnalysisEtaMax ;
282+ float mAnalysisPtMin ;
283+ float mAnalysisPtMax ;
257284 int mEtaBins ;
258285 float mEtaMin ;
259286 float mEtaMax ;
@@ -380,16 +407,13 @@ struct OnTheFlyTrackerPid {
380407 Configurable<std::string> lutTotHe{" lutTotHe" , " ccdb:Users/h/hfribert/ToT_LUTs" , " ToT LUT for helium-3" };
381408 Configurable<std::string> lutTotAl{" lutTotAl" , " ccdb:Users/h/hfribert/ToT_LUTs" , " ToT LUT for alphas" };
382409
383- Configurable<float > truncationFraction{" truncationFraction" , 0 .80f , " Fraction of lower entries to consider for truncated standard deviation" };
384410 Configurable<float > dBz{" dBz" , 20 , " magnetic field (kilogauss) for track propagation" };
385411 Configurable<int > maxBarrelLayers{" maxBarrelLayers" , 11 , " Maximum number of barrel layers" };
386- Configurable<int > etaBins{" etaBins" , 50 , " Number of eta bins for LUTs and histograms" };
387- Configurable<float > etaMin{" etaMin" , -2 .5f , " Minimum eta value" };
388- Configurable<float > etaMax{" etaMax" , 2 .5f , " Maximum eta value" };
389- Configurable<int > ptBins{" ptBins" , 500 , " Number of pT bins for LUTs (LUTs are pT-based)" };
390- Configurable<float > ptMin{" ptMin" , 0 .0f , " Minimum pT value for LUT binning" };
391- Configurable<float > ptMax{" ptMax" , 10 .0f , " Maximum pT value for LUT binning" };
392412 Configurable<int > numLogBins{" numLogBins" , 200 , " Number of logarithmic momentum bins" };
413+ Configurable<float > analysisEtaMin{" analysisEtaMin" , 0 .0f , " Minimum |eta| for LUT loading optimization" };
414+ Configurable<float > analysisEtaMax{" analysisEtaMax" , 1 .0f , " Maximum |eta| for LUT loading optimization" };
415+ Configurable<float > analysisPtMin{" analysisPtMin" , 0 .0f , " Minimum pT (GeV/c) for LUT loading optimization" };
416+ Configurable<float > analysisPtMax{" analysisPtMax" , 10 .0f , " Maximum pT (GeV/c) for LUT loading optimization" };
393417
394418 std::vector<double > mLogBins ;
395419
@@ -416,9 +440,7 @@ struct OnTheFlyTrackerPid {
416440 << " ). Please adjust maxBarrelLayers." ;
417441 }
418442
419- mToTLUT = std::make_unique<ToTLUT>(truncationFraction.value , maxBarrelLayers.value ,
420- etaBins.value , etaMin.value , etaMax.value ,
421- ptBins.value , ptMin.value , ptMax.value );
443+ mToTLUT = std::make_unique<ToTLUT>(maxBarrelLayers.value , analysisEtaMin.value , analysisEtaMax.value , analysisPtMin.value , analysisPtMax.value );
422444
423445 mToTLUT ->setCcdbManager (ccdb.operator ->());
424446
@@ -526,7 +548,6 @@ struct OnTheFlyTrackerPid {
526548 aod::McParticles const & /* mcParticles*/ ,
527549 aod::McCollisions const & /* mcCollisions*/ )
528550 {
529-
530551 o2::dataformats::VertexBase mcPvVtx ({0 .0f , 0 .0f , 0 .0f }, {0 .});
531552
532553 if (collision.has_mcCollision ()) {
0 commit comments