@@ -68,6 +68,10 @@ int registerMapND(const std::string& name,
6868 std ::string expr = valueVar + ":" + nearestDim ;
6969 for (const auto& dim : exactDims ) expr += ":" + dim ;
7070 int entries = tree -> Draw (expr .c_str (), selection .c_str (), "goff" );
71+ if (entries >=tree -> GetEstimate ()){
72+ tree -> SetEstimate (entries * 2 );
73+ entries = tree -> Draw (expr .c_str (), selection .c_str (), "goff" );
74+ }
7175 if (entries <= 0 ) {
7276 std ::cerr << "[registerMapND] No entries selected." << std ::endl ;
7377 return mapID ;
@@ -179,3 +183,39 @@ void exampleTimeSeries() {
179183 setNearestNDAlias (tree , "mDCAr_A_NTracks_median_interp" , "dcar_vs_time" , "time" , {"subentry" });
180184 tree -> Draw ("mTSITSTPC.mDCAr_A_NTracks_median:mDCAr_A_NTracks_median_interp" , "indexType==1" , "" , 10000 );
181185}
186+
187+ /// Example usage for time series ND lookup
188+ void test_exampleTimeSeries () {
189+ TFile * f5 = TFile ::Open ("timeSeries10000_LHC23zzx_apass5.root" );
190+ TTree * tree5 = (TTree * )f5 -> Get ("timeSeries" );
191+ TFile * f4 = TFile ::Open ("timeSeries10000_LHC23zz_combo_apass4.root" );
192+ TTree * tree4 = (TTree * )f4 -> Get ("timeSeries" );
193+ int mapID5A = registerMapND ("mDCAr_A_Median_median5" , tree5 , {"subentry" }, "time" , "mTSITSTPC.mDCAr_A_Median_median" , "1" );
194+ int mapID5C = registerMapND ("mDCAr_C_Median_median5" , tree5 , {"subentry" }, "time" , "mTSITSTPC.mDCAr_C_Median_median" , "1" );
195+ int mapID4A = registerMapND ("mDCAr_A_Median_median4" , tree4 , {"subentry" }, "time" , "mTSITSTPC.mDCAr_A_Median_median" , "1" );
196+ int mapID4C = registerMapND ("mDCAr_C_Median_median4" , tree4 , {"subentry" }, "time" , "mTSITSTPC.mDCAr_C_Median_median" , "1" );
197+ //
198+ setNearestNDAlias (tree5 , "mDCAr_A_Median_median_interp5" , "mDCAr_A_Median_median5" , "time" , {"subentry" });
199+ setNearestNDAlias (tree5 , "mDCAr_C_Median_median_interp5" , "mDCAr_C_Median_median5" , "time" , {"subentry" });
200+ setNearestNDAlias (tree4 , "mDCAr_C_Median_median_interp5" , "mDCAr_A_Median_median5" , "time" , {"subentry" });
201+ //
202+ setNearestNDAlias (tree5 , "mDCAr_A_Median_median_interp4" , "mDCAr_A_Median_median4" , "time" , {"subentry" });
203+ setNearestNDAlias (tree4 , "mDCAr_A_Median_median_interp4" , "mDCAr_A_Median_median4" , "time" , {"subentry" });
204+
205+ tree5 -> Draw ("mTSITSTPC.mDCAr_A_Median_median:mDCAr_A_Median_median_interp4" , "indexType==1" , "" , 10000 );
206+ // make unit test -RMS should be 0
207+ int val5 = tree5 -> Draw ("mTSITSTPC.mDCAr_A_Median_median==mDCAr_A_Median_median_interp5" , "indexType==1" , "" );
208+ float rms5 = tree5 -> GetHistogram ()-> GetRMS ();
209+ float mean5 = tree5 -> GetHistogram ()-> GetMean ();
210+ //make unit test like output rms5==0, mean5==1
211+ int va4l = tree4 -> Draw ("mTSITSTPC.mDCAr_A_Median_median==mDCAr_A_Median_median_interp4" , "indexType==1" , "" );
212+ float rms4 = tree4 -> GetHistogram ()-> GetRMS ();
213+ float mean4 = tree4 -> GetHistogram ()-> GetMean ();
214+ //make unit test like output rms5==0, mean5==1
215+ if ( std ::abs (rms4 ) < 1e-5 && std ::abs (mean4 - 1.0 ) < 1e-5 ) {
216+ std ::cout << "[UnitTest] OK - Interpolation match for apass4 is exact." << std ::endl ;
217+ } else {
218+ std ::cerr << "[UnitTest] ERROR - Interpolation mismatch for apass4. RMS=" << rms4 << ", Mean=" << mean4 << std ::endl ;
219+ }
220+ }
221+
0 commit comments