@@ -189,6 +189,10 @@ struct TrackTuner : o2::framework::ConfigurableGroup {
189189 LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ Run list: 564356 <= runNumber && runNumber <= 564445 +++" ;
190190 LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ [CASE 5]: OO, 5.36 TeV 2025, period LHC25af: CCDB path Users/m/mfaggin/test/inputsTrackTuner/OO/LHC25af +++" ;
191191 LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ Run list: 564468 <= runNumber && runNumber <= 564472 +++" ;
192+ LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ [CASE 6]: pp, 5.36 TeV 2024, period LHC24ap: CCDB path Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_positive +++" ;
193+ LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ Run list: 559348 <= runNumber && runNumber <= 559387 +++" ;
194+ LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ [CASE 7]: pp, 5.36 TeV 2024, period LHC24aq: CCDB path Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_negative +++" ;
195+ LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++ Run list: 559408 <= runNumber && runNumber <= 559456 +++" ;
192196 LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" ;
193197 LOG (info) << " " ;
194198
@@ -234,6 +238,22 @@ struct TrackTuner : o2::framework::ConfigurableGroup {
234238 pathInputFile = " Users/m/mfaggin/test/inputsTrackTuner/OO/LHC25af" ;
235239 LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: >>> OO, 5.36 TeV 2025, period LHC25af: CCDB path " << pathInputFile;
236240 LOG (info) << " >>> Run list: 564468 <= runNumber && runNumber <= 564472" ;
241+ } else if (559348 <= runNumber && runNumber <= 559387 ) {
242+ // /
243+ // / [CASE 6]: pp, 5.36 TeV 2024, period LHC24ap: CCDB path Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_positive
244+ // / Run list: 559348 <= runNumber && runNumber <= 559387
245+ // /
246+ pathInputFile = " Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_positive" ;
247+ LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: >>> pp, 5.36 TeV 2024, period LHC24ap: CCDB path " << pathInputFile;
248+ LOG (info) << " >>> Run list: 559348 <= runNumber && runNumber <= 559387" ;
249+ } else if (559408 <= runNumber && runNumber <= 559456 ) {
250+ // /
251+ // / [CASE 7]: pp, 5.36 TeV 2024, period LHC24aq: CCDB path Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_negative
252+ // / Run list: 559408 <= runNumber && runNumber <= 559456
253+ // /
254+ pathInputFile = " Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_negative" ;
255+ LOG (info) << " [TrackTuner::getPathInputFileAutomaticFromCCDB]: >>> pp, 5.36 TeV 2024, period LHC24aq: CCDB path " << pathInputFile;
256+ LOG (info) << " >>> Run list: 559408 <= runNumber && runNumber <= 559456" ;
237257 } else {
238258 LOG (fatal) << " runNumber " << runNumber << " not supported for the autodetection. Please switch to manual configuration of the TrackTuner object. Aborting..." ;
239259 }
@@ -735,19 +755,24 @@ struct TrackTuner : o2::framework::ConfigurableGroup {
735755 dcaZResMC = evalGraph (ptMC, grDcaZResVsPtPionMC[phiBin].get ());
736756 dcaZResData = evalGraph (ptMC, grDcaZResVsPtPionData[phiBin].get ());
737757
738- // For Q/Pt corrections, files on CCDB will be used if both qOverPtMC and qOverPtData are null
758+ // Local Q/Pt resolution: either the constant configurable value, or evaluated per-track from graphs
759+ double smearQOverPtMC = qOverPtMC;
760+ double smearQOverPtData = qOverPtData;
739761 if (updateCurvature || updateCurvatureIU) {
740- if ((qOverPtMC < 0 ) || (qOverPtData < 0 )) {
741- if (debugInfo) {
742- LOG (info) << " ### q/pt smearing: qOverPtMC=" << qOverPtMC << " , qOverPtData=" << qOverPtData << " . One of them is negative. Retrieving then values from graphs from input .root file" ;
743- }
762+ if ((smearQOverPtMC < 0 ) || (smearQOverPtData < 0 )) {
744763 // / check that input graphs for q/pt smearing are correctly retrieved
745764 if (!grOneOverPtPionData.get () || !grOneOverPtPionMC.get ()) {
746765 LOG (fatal) << " ### q/pt smearing: input graphs not correctly retrieved. Aborting." ;
747766 }
748- qOverPtMC = std::max (0.0 , evalGraph (ptMC, grOneOverPtPionMC.get ()));
749- qOverPtData = std::max (0.0 , evalGraph (ptMC, grOneOverPtPionData.get ()));
750- } // qOverPtMC, qOverPtData block ends here
767+ smearQOverPtMC = std::max (0.0 , evalGraph (ptMC, grOneOverPtPionMC.get ()));
768+ smearQOverPtData = std::max (0.0 , evalGraph (ptMC, grOneOverPtPionData.get ()));
769+ if (debugInfo) {
770+ LOG (info) << " ### q/pt graph-based smearing: pT=" << ptMC
771+ << " sigma(1/pT)_MC=" << smearQOverPtMC
772+ << " sigma(1/pT)_Data=" << smearQOverPtData
773+ << " ratio(Data/MC)=" << (smearQOverPtMC > 0 . ? smearQOverPtData / smearQOverPtMC : -1 .);
774+ }
775+ } // smearQOverPtMC, smearQOverPtData block ends here
751776 } // updateCurvature, updateCurvatureIU block ends here
752777
753778 if (updateTrackDCAs) {
@@ -816,44 +841,44 @@ struct TrackTuner : o2::framework::ConfigurableGroup {
816841 // double dpt1o =pt1o-pt1mc;
817842 deltaQpt = trackParQPtMCRec - trackParQPtMC;
818843 // double dpt1n =dpt1o *(spt1o >0. ? (spt1n /spt1o ) : 1.);
819- deltaQptTuned = deltaQpt * (qOverPtMC > 0 . ? (qOverPtData / qOverPtMC ) : 1 .);
844+ deltaQptTuned = deltaQpt * (smearQOverPtMC > 0 . ? (smearQOverPtData / smearQOverPtMC ) : 1 .);
820845 // double pt1n = pt1mc+dpt1n;
821846 trackParQPtTuned = trackParQPtMC + deltaQptTuned;
822847 trackParCov.setQ2Pt (trackParQPtTuned);
823848
824849 // updating track cov matrix elements for 1/Pt at innermost update point
825850 // if(sd0rpo>0. && spt1o>0.)covar[10]*=(sd0rpn/sd0rpo)*(spt1n/spt1o);//ypt
826851 sigma1PtY = trackParCov.getSigma1PtY ();
827- if (dcaXYResMC > 0 . && qOverPtMC > 0 .) {
828- sigma1PtY *= ((dcaXYResData / dcaXYResMC) * (qOverPtData / qOverPtMC ));
852+ if (dcaXYResMC > 0 . && smearQOverPtMC > 0 .) {
853+ sigma1PtY *= ((dcaXYResData / dcaXYResMC) * (smearQOverPtData / smearQOverPtMC ));
829854 trackParCov.setCov (sigma1PtY, 10 );
830855 }
831856
832857 // if(sd0zo>0. && spt1o>0.) covar[11]*=(sd0zn/sd0zo)*(spt1n/spt1o);//zpt
833858 sigma1PtZ = trackParCov.getSigma1PtZ ();
834- if (dcaZResMC > 0 . && qOverPtMC > 0 .) {
835- sigma1PtZ *= ((dcaZResData / dcaZResMC) * (qOverPtData / qOverPtMC ));
859+ if (dcaZResMC > 0 . && smearQOverPtMC > 0 .) {
860+ sigma1PtZ *= ((dcaZResData / dcaZResMC) * (smearQOverPtData / smearQOverPtMC ));
836861 trackParCov.setCov (sigma1PtZ, 11 );
837862 }
838863
839864 // if(spt1o>0.) covar[12]*=(spt1n/spt1o);//sinPhipt
840865 sigma1PtSnp = trackParCov.getSigma1PtSnp ();
841- if (qOverPtMC > 0 .) {
842- sigma1PtSnp *= (qOverPtData / qOverPtMC );
866+ if (smearQOverPtMC > 0 .) {
867+ sigma1PtSnp *= (smearQOverPtData / smearQOverPtMC );
843868 trackParCov.setCov (sigma1PtSnp, 12 );
844869 }
845870
846871 // if(spt1o>0.) covar[13]*=(spt1n/spt1o);//tanTpt
847872 sigma1PtTgl = trackParCov.getSigma1PtTgl ();
848- if (qOverPtMC > 0 .) {
849- sigma1PtTgl *= (qOverPtData / qOverPtMC );
873+ if (smearQOverPtMC > 0 .) {
874+ sigma1PtTgl *= (smearQOverPtData / smearQOverPtMC );
850875 trackParCov.setCov (sigma1PtTgl, 13 );
851876 }
852877
853878 // if(spt1o>0.) covar[14]*=(spt1n/spt1o)*(spt1n/spt1o);//ptpt
854879 sigma1Pt2 = trackParCov.getSigma1Pt2 ();
855- if (qOverPtMC > 0 .) {
856- sigma1Pt2 *= (qOverPtData / qOverPtMC ) * (qOverPtData / qOverPtMC );
880+ if (smearQOverPtMC > 0 .) {
881+ sigma1Pt2 *= (smearQOverPtData / smearQOverPtMC ) * (smearQOverPtData / smearQOverPtMC );
857882 trackParCov.setCov (sigma1Pt2, 14 );
858883 }
859884 } // updateCurvatureIU block ends here
@@ -949,7 +974,7 @@ struct TrackTuner : o2::framework::ConfigurableGroup {
949974 }
950975 deltaQpt = trackParQPtMCRec - trackParQPtMC;
951976 // double dpt1n =dpt1o *(spt1o >0. ? (spt1n /spt1o ) : 1.);
952- deltaQptTuned = deltaQpt * (qOverPtMC > 0 . ? (qOverPtData / qOverPtMC ) : 1 .);
977+ deltaQptTuned = deltaQpt * (smearQOverPtMC > 0 . ? (smearQOverPtData / smearQOverPtMC ) : 1 .);
953978 // double pt1n = pt1mc+dpt1n;
954979 trackParQPtTuned = trackParQPtMC + deltaQptTuned;
955980 trackParCov.setQ2Pt (trackParQPtTuned);
@@ -1010,36 +1035,36 @@ struct TrackTuner : o2::framework::ConfigurableGroup {
10101035 if ((updateCurvature) && (!updateCurvatureIU)) {
10111036 // if(sd0rpo>0. && spt1o>0.)covar[10]*=(sd0rpn/sd0rpo)*(spt1n/spt1o);//ypt
10121037 sigma1PtY = trackParCov.getSigma1PtY ();
1013- if (dcaXYResMC > 0 . && qOverPtMC > 0 .) {
1014- sigma1PtY *= ((dcaXYResData / dcaXYResMC) * (qOverPtData / qOverPtMC ));
1038+ if (dcaXYResMC > 0 . && smearQOverPtMC > 0 .) {
1039+ sigma1PtY *= ((dcaXYResData / dcaXYResMC) * (smearQOverPtData / smearQOverPtMC ));
10151040 trackParCov.setCov (sigma1PtY, 10 );
10161041 }
10171042
10181043 // if(sd0zo>0. && spt1o>0.) covar[11]*=(sd0zn/sd0zo)*(spt1n/spt1o);//zpt
10191044 sigma1PtZ = trackParCov.getSigma1PtZ ();
1020- if (dcaZResMC > 0 . && qOverPtMC > 0 .) {
1021- sigma1PtZ *= ((dcaZResData / dcaZResMC) * (qOverPtData / qOverPtMC ));
1045+ if (dcaZResMC > 0 . && smearQOverPtMC > 0 .) {
1046+ sigma1PtZ *= ((dcaZResData / dcaZResMC) * (smearQOverPtData / smearQOverPtMC ));
10221047 trackParCov.setCov (sigma1PtZ, 11 );
10231048 }
10241049
10251050 // if(spt1o>0.) covar[12]*=(spt1n/spt1o);//sinPhipt
10261051 sigma1PtSnp = trackParCov.getSigma1PtSnp ();
1027- if (qOverPtMC > 0 .) {
1028- sigma1PtSnp *= (qOverPtData / qOverPtMC );
1052+ if (smearQOverPtMC > 0 .) {
1053+ sigma1PtSnp *= (smearQOverPtData / smearQOverPtMC );
10291054 trackParCov.setCov (sigma1PtSnp, 12 );
10301055 }
10311056
10321057 // if(spt1o>0.) covar[13]*=(spt1n/spt1o);//tanTpt
10331058 sigma1PtTgl = trackParCov.getSigma1PtTgl ();
1034- if (qOverPtMC > 0 .) {
1035- sigma1PtTgl *= (qOverPtData / qOverPtMC );
1059+ if (smearQOverPtMC > 0 .) {
1060+ sigma1PtTgl *= (smearQOverPtData / smearQOverPtMC );
10361061 trackParCov.setCov (sigma1PtTgl, 13 );
10371062 }
10381063
10391064 // if(spt1o>0.) covar[14]*=(spt1n/spt1o)*(spt1n/spt1o);//ptpt
10401065 sigma1Pt2 = trackParCov.getSigma1Pt2 ();
1041- if (qOverPtMC > 0 .) {
1042- sigma1Pt2 *= (qOverPtData / qOverPtMC ) * (qOverPtData / qOverPtMC );
1066+ if (smearQOverPtMC > 0 .) {
1067+ sigma1Pt2 *= (smearQOverPtData / smearQOverPtMC ) * (smearQOverPtData / smearQOverPtMC );
10431068 trackParCov.setCov (sigma1Pt2, 14 );
10441069 }
10451070 } // ---> track cov matrix elements for 1/Pt ends here
0 commit comments