@@ -93,6 +93,10 @@ struct JetTaggerHFTask {
9393 Configurable<int64_t > timestampCCDB{" timestampCCDB" , -1 , " timestamp of the ONNX file for ML model used to query in CCDB" };
9494 Configurable<bool > loadModelsFromCCDB{" loadModelsFromCCDB" , false , " Flag to enable or disable the loading of models from CCDB" };
9595
96+ Configurable<std::string> IPparameterPathsCCDB{" IPparameterPathsCCDB" , " Users/l/leehy/LHC24g4/" , " Paths for fitting parameters of resolution functions for IP method on CCDB" };
97+ Configurable<std::vector<int64_t >> IPtimestampCCDB{" IPtimestampCCDB" , std::vector<int64_t >{1737027389227 , 1737027391774 , 1737027393668 , 1737027395548 , 1737027397505 , 1737027399396 , 1737027401294 }, " timestamp of the resolution function for IP method used to query in CCDB" };
98+ Configurable<bool > usepTcategorize{" usepTcategorize" , false , " p_T categorize TF1 function with Inclusive jet" };
99+
96100 // axis spec
97101 ConfigurableAxis binTrackProbability{" binTrackProbability" , {100 , 0 .f , 1 .f }, " " };
98102 ConfigurableAxis binJetFlavour{" binJetFlavour" , {6 , -0.5 , 5.5 }, " " };
@@ -105,13 +109,31 @@ struct JetTaggerHFTask {
105109 bool useResoFuncFromIncJet = false ;
106110 int maxOrder = -1 ;
107111 int resoFuncMatch = 0 ;
108- std::vector< float > jetProb;
112+
109113 std::unique_ptr<TF1> fSignImpXYSigData = nullptr ;
110114 std::unique_ptr<TF1> fSignImpXYSigIncJetMC = nullptr ;
111115 std::unique_ptr<TF1> fSignImpXYSigCharmJetMC = nullptr ;
112116 std::unique_ptr<TF1> fSignImpXYSigBeautyJetMC = nullptr ;
113117 std::unique_ptr<TF1> fSignImpXYSigLfJetMC = nullptr ;
114118
119+ std::vector<float > vecParamsIncJetMC_CCDB_0;
120+ std::vector<float > vecParamsIncJetMC_CCDB_1;
121+ std::vector<float > vecParamsIncJetMC_CCDB_2;
122+ std::vector<float > vecParamsIncJetMC_CCDB_3;
123+ std::vector<float > vecParamsIncJetMC_CCDB_4;
124+ std::vector<float > vecParamsIncJetMC_CCDB_5;
125+ std::vector<float > vecParamsIncJetMC_CCDB_6;
126+
127+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_0 = nullptr ;
128+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_1 = nullptr ;
129+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_2 = nullptr ;
130+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_3 = nullptr ;
131+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_4 = nullptr ;
132+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_5 = nullptr ;
133+ std::unique_ptr<TF1> fSignImpXYSigIncJetMC_CCDB_6 = nullptr ;
134+
135+ std::vector<std::unique_ptr<TF1>> fSignImpXYSigIncJetMC_CCDB_vec ;
136+
115137 std::vector<uint16_t > decisionNonML;
116138 std::vector<float > scoreML;
117139
@@ -123,7 +145,11 @@ struct JetTaggerHFTask {
123145 jetProb = jettaggingutilities::getJetProbability (fSignImpXYSigData , jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
124146 } else {
125147 if (useResoFuncFromIncJet) {
126- jetProb = jettaggingutilities::getJetProbability (fSignImpXYSigIncJetMC , jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
148+ if (usepTcategorize) {
149+ jetProb = jettaggingutilities::getJetProbability (fSignImpXYSigIncJetMC_CCDB_vec , jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
150+ } else {
151+ jetProb = jettaggingutilities::getJetProbability (fSignImpXYSigIncJetMC , jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
152+ }
127153 } else {
128154 if (origin == JetTaggingSpecies::charm) {
129155 jetProb = jettaggingutilities::getJetProbability (fSignImpXYSigCharmJetMC , jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
@@ -206,6 +232,27 @@ struct JetTaggerHFTask {
206232 std::vector<float > vecParamsBeautyJetMC;
207233 std::vector<float > vecParamsLfJetMC;
208234
235+ TF1* CCDB_ResoFunc_0 = nullptr ;
236+ TF1* CCDB_ResoFunc_1 = nullptr ;
237+ TF1* CCDB_ResoFunc_2 = nullptr ;
238+ TF1* CCDB_ResoFunc_3 = nullptr ;
239+ TF1* CCDB_ResoFunc_4 = nullptr ;
240+ TF1* CCDB_ResoFunc_5 = nullptr ;
241+ TF1* CCDB_ResoFunc_6 = nullptr ;
242+
243+ ccdbApi.init (ccdbUrl);
244+ if (usepTcategorize) {
245+ std::map<std::string, std::string> metadata; // dummy meta data (will be updated)
246+ // fill the timestamp directly of each TF1 according to p_T track range
247+ CCDB_ResoFunc_0 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (0 )); // 0 < p_T < 0.5
248+ CCDB_ResoFunc_1 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (1 )); // 0.5 < p_T < 1
249+ CCDB_ResoFunc_2 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (2 )); // 1 < p_T < 2
250+ CCDB_ResoFunc_3 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (3 )); // 2 < p_T < 4
251+ CCDB_ResoFunc_4 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (4 )); // 4 < p_T < 6
252+ CCDB_ResoFunc_5 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (5 )); // 6 < p_T < 9
253+ CCDB_ResoFunc_6 = ccdbApi.retrieveFromTFileAny <TF1>(IPparameterPathsCCDB, metadata, IPtimestampCCDB->at (6 )); // 9 < p_T
254+ }
255+
209256 maxOrder = numCount + 1 ; // 0: untagged, >1 : N ordering
210257
211258 // Set up the resolution function
@@ -250,6 +297,19 @@ struct JetTaggerHFTask {
250297 LOG (info) << " defined parameters of resolution function: PYTHIA8, JJ, weighted, LHC24g4 & use inclusive distribution" ;
251298 useResoFuncFromIncJet = true ;
252299 break ;
300+ case 6 : // TODO
301+ vecParamsData = (std::vector<float >)paramsResoFuncData;
302+ for (int i = 0 ; i < 9 ; i++) {
303+ vecParamsIncJetMC_CCDB_0.emplace_back (CCDB_ResoFunc_0->GetParameter (i));
304+ vecParamsIncJetMC_CCDB_1.emplace_back (CCDB_ResoFunc_1->GetParameter (i));
305+ vecParamsIncJetMC_CCDB_2.emplace_back (CCDB_ResoFunc_2->GetParameter (i));
306+ vecParamsIncJetMC_CCDB_3.emplace_back (CCDB_ResoFunc_3->GetParameter (i));
307+ vecParamsIncJetMC_CCDB_4.emplace_back (CCDB_ResoFunc_4->GetParameter (i));
308+ vecParamsIncJetMC_CCDB_5.emplace_back (CCDB_ResoFunc_5->GetParameter (i));
309+ vecParamsIncJetMC_CCDB_6.emplace_back (CCDB_ResoFunc_6->GetParameter (i));
310+ }
311+ LOG (info) << " defined parameters of resolution function from CCDB" ;
312+ useResoFuncFromIncJet = true ;
253313 default :
254314 LOG (fatal) << " undefined parameters of resolution function. Fix it!" ;
255315 break ;
@@ -261,6 +321,22 @@ struct JetTaggerHFTask {
261321 fSignImpXYSigBeautyJetMC = jettaggingutilities::setResolutionFunction (vecParamsBeautyJetMC);
262322 fSignImpXYSigLfJetMC = jettaggingutilities::setResolutionFunction (vecParamsLfJetMC);
263323
324+ fSignImpXYSigIncJetMC_CCDB_0 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_0);
325+ fSignImpXYSigIncJetMC_CCDB_1 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_1);
326+ fSignImpXYSigIncJetMC_CCDB_2 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_2);
327+ fSignImpXYSigIncJetMC_CCDB_3 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_3);
328+ fSignImpXYSigIncJetMC_CCDB_4 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_4);
329+ fSignImpXYSigIncJetMC_CCDB_5 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_5);
330+ fSignImpXYSigIncJetMC_CCDB_6 = jettaggingutilities::setResolutionFunction (vecParamsIncJetMC_CCDB_6);
331+
332+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_0 ));
333+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_1 ));
334+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_2 ));
335+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_3 ));
336+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_4 ));
337+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_5 ));
338+ fSignImpXYSigIncJetMC_CCDB_vec .emplace_back (std::move (fSignImpXYSigIncJetMC_CCDB_6 ));
339+
264340 // Use QA for effectivness of track probability
265341 if (trackProbQA) {
266342 AxisSpec trackProbabilityAxis = {binTrackProbability, " Track proability" };
0 commit comments