@@ -272,20 +272,28 @@ struct spvector {
272272 int lastRunNumber = -999 ;
273273 TH2D* gainprofile;
274274 TProfile* gainprofilevxy;
275- THnF* hrecentereSp;
275+ /* THnF* hrecentereSp;
276276 TH2F* hrecenterecentSp;
277277 TH2F* hrecenterevxSp;
278278 TH2F* hrecenterevySp;
279- TH2F* hrecenterevzSp;
279+ TH2F* hrecenterevzSp;*/
280+ std::array<THnF*, 6 > hrecentereSpA; // Array of 6 histograms
281+ std::array<TH2F*, 5 > hrecenterecentSpA; // Array of 5 histograms
282+ std::array<TH2F*, 5 > hrecenterevxSpA; // Array of 5 histograms
283+ std::array<TH2F*, 5 > hrecenterevySpA; // Array of 5 histograms
284+ std::array<TH2F*, 5 > hrecenterevzSpA; // Array of 5 histograms
280285 TProfile3D* shiftprofileA;
281286 TProfile3D* shiftprofileC;
282287
283- Bool_t Correctcoarse (int64_t ts, Configurable<std::string>& ConfRecentereSpp, bool useRecentereSp, int currentRunNumber, int lastRunNumber, auto centrality, auto vx, auto vy, auto vz, auto & qxZDCA, auto & qyZDCA, auto & qxZDCC, auto & qyZDCC)
288+ // Bool_t Correctcoarse(int64_t ts, Configurable<std::string>& ConfRecentereSpp, bool useRecentereSp, int currentRunNumber, int lastRunNumber, auto centrality, auto vx, auto vy, auto vz, auto& qxZDCA, auto& qyZDCA, auto& qxZDCC, auto& qyZDCC)
289+ // {
290+ Bool_t Correctcoarse (const THnF* hrecentereSp, auto centrality, auto vx, auto vy, auto vz, auto & qxZDCA, auto & qyZDCA, auto & qxZDCC, auto & qyZDCC)
284291 {
285292
293+ /*
286294 if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
287295 hrecentereSp = ccdb->getForTimeStamp<THnF>(ConfRecentereSpp.value, ts);
288- }
296+ } */
289297
290298 int binCoords[5 ];
291299
@@ -328,15 +336,22 @@ struct spvector {
328336 return kTRUE ;
329337 }
330338
331- Bool_t Correctfine (int64_t ts, Configurable<std::string>& ConfRecenterecentSpp, Configurable<std::string>& ConfRecenterevxSpp, Configurable<std::string>& ConfRecenterevySpp, Configurable<std::string>& ConfRecenterevzSpp, bool useRecenterefineSp, int currentRunNumber, int lastRunNumber, auto centrality, auto vx, auto vy, auto vz, auto & qxZDCA, auto & qyZDCA, auto & qxZDCC, auto & qyZDCC)
339+ // Bool_t Correctfine(int64_t ts, Configurable<std::string>& ConfRecenterecentSpp, Configurable<std::string>& ConfRecenterevxSpp, Configurable<std::string>& ConfRecenterevySpp, Configurable<std::string>& ConfRecenterevzSpp, bool useRecenterefineSp, int currentRunNumber, int lastRunNumber, auto centrality, auto vx, auto vy, auto vz, auto& qxZDCA, auto& qyZDCA, auto& qxZDCC, auto& qyZDCC)
340+ // {
341+ Bool_t Correctfine (TH2F* hrecenterecentSp, TH2F* hrecenterevxSp, TH2F* hrecenterevySp, TH2F* hrecenterevzSp, auto centrality, auto vx, auto vy, auto vz, auto & qxZDCA, auto & qyZDCA, auto & qxZDCC, auto & qyZDCC)
332342 {
333343
344+ if (!hrecenterecentSp || !hrecenterevxSp || !hrecenterevySp || !hrecenterevzSp) {
345+ std::cerr << " Error: One or more histograms are null." << std::endl;
346+ return false ;
347+ }
348+ /*
334349 if (useRecenterefineSp && (currentRunNumber != lastRunNumber)) {
335350 hrecenterecentSp = ccdb->getForTimeStamp<TH2F>(ConfRecenterecentSpp.value, ts);
336351 hrecenterevxSp = ccdb->getForTimeStamp<TH2F>(ConfRecenterevxSpp.value, ts);
337352 hrecenterevySp = ccdb->getForTimeStamp<TH2F>(ConfRecenterevySpp.value, ts);
338353 hrecenterevzSp = ccdb->getForTimeStamp<TH2F>(ConfRecenterevzSpp.value, ts);
339- }
354+ } */
340355
341356 double meanxAcent = hrecenterecentSp->GetBinContent (hrecenterecentSp->FindBin (centrality, 0.5 ));
342357 double meanyAcent = hrecenterecentSp->GetBinContent (hrecenterecentSp->FindBin (centrality, 1.5 ));
@@ -517,47 +532,96 @@ struct spvector {
517532 Bool_t resfine = 0 ;
518533
519534 if (coarse1) {
520- res = Correctcoarse (bc.timestamp (), ConfRecentereSp, useRecentereSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
535+ if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
536+ hrecentereSpA[0 ] = ccdb->getForTimeStamp <THnF>(ConfRecentereSp.value , bc.timestamp ());
537+ }
538+ res = Correctcoarse (hrecentereSpA[0 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
521539 }
522540
523541 if (fine1) {
524- resfine = Correctfine (bc.timestamp (), ConfRecenterecentSp, ConfRecenterevxSp, ConfRecenterevySp, ConfRecenterevzSp, useRecenterefineSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
542+
543+ if (useRecenterefineSp && (currentRunNumber != lastRunNumber)) {
544+ hrecenterecentSpA[0 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterecentSp.value , bc.timestamp ());
545+ hrecenterevxSpA[0 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevxSp.value , bc.timestamp ());
546+ hrecenterevySpA[0 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevySp.value , bc.timestamp ());
547+ hrecenterevzSpA[0 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevzSp.value , bc.timestamp ());
548+ }
549+ resfine = Correctfine (hrecenterecentSpA[0 ], hrecenterevxSpA[0 ], hrecenterevySpA[0 ], hrecenterevzSpA[0 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
525550 }
526551
527552 if (coarse2) {
528- res = Correctcoarse (bc.timestamp (), ConfRecentereSp2, useRecentereSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
553+ if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
554+ hrecentereSpA[1 ] = ccdb->getForTimeStamp <THnF>(ConfRecentereSp2.value , bc.timestamp ());
555+ }
556+ res = Correctcoarse (hrecentereSpA[1 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
529557 }
530558
531559 if (fine2) {
532- resfine = Correctfine (bc.timestamp (), ConfRecenterecentSp2, ConfRecenterevxSp2, ConfRecenterevySp2, ConfRecenterevzSp2, useRecenterefineSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
560+ if (useRecenterefineSp && (currentRunNumber != lastRunNumber)) {
561+ hrecenterecentSpA[1 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterecentSp2.value , bc.timestamp ());
562+ hrecenterevxSpA[1 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevxSp2.value , bc.timestamp ());
563+ hrecenterevySpA[1 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevySp2.value , bc.timestamp ());
564+ hrecenterevzSpA[1 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevzSp2.value , bc.timestamp ());
565+ }
566+ resfine = Correctfine (hrecenterecentSpA[1 ], hrecenterevxSpA[1 ], hrecenterevySpA[1 ], hrecenterevzSpA[1 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
533567 }
534568
535569 if (coarse3) {
536- res = Correctcoarse (bc.timestamp (), ConfRecentereSp3, useRecentereSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
570+ if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
571+ hrecentereSpA[2 ] = ccdb->getForTimeStamp <THnF>(ConfRecentereSp3.value , bc.timestamp ());
572+ }
573+ res = Correctcoarse (hrecentereSpA[2 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
537574 }
538575
539576 if (fine3) {
540- resfine = Correctfine (bc.timestamp (), ConfRecenterecentSp3, ConfRecenterevxSp3, ConfRecenterevySp3, ConfRecenterevzSp3, useRecenterefineSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
577+ if (useRecenterefineSp && (currentRunNumber != lastRunNumber)) {
578+ hrecenterecentSpA[2 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterecentSp3.value , bc.timestamp ());
579+ hrecenterevxSpA[2 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevxSp3.value , bc.timestamp ());
580+ hrecenterevySpA[2 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevySp3.value , bc.timestamp ());
581+ hrecenterevzSpA[2 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevzSp3.value , bc.timestamp ());
582+ }
583+ resfine = Correctfine (hrecenterecentSpA[2 ], hrecenterevxSpA[2 ], hrecenterevySpA[2 ], hrecenterevzSpA[2 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
541584 }
542585
543586 if (coarse4) {
544- res = Correctcoarse (bc.timestamp (), ConfRecentereSp4, useRecentereSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
587+ if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
588+ hrecentereSpA[3 ] = ccdb->getForTimeStamp <THnF>(ConfRecentereSp4.value , bc.timestamp ());
589+ }
590+ res = Correctcoarse (hrecentereSpA[3 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
545591 }
546592
547593 if (fine4) {
548- resfine = Correctfine (bc.timestamp (), ConfRecenterecentSp4, ConfRecenterevxSp4, ConfRecenterevySp4, ConfRecenterevzSp4, useRecenterefineSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
594+ if (useRecenterefineSp && (currentRunNumber != lastRunNumber)) {
595+ hrecenterecentSpA[3 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterecentSp4.value , bc.timestamp ());
596+ hrecenterevxSpA[3 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevxSp4.value , bc.timestamp ());
597+ hrecenterevySpA[3 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevySp4.value , bc.timestamp ());
598+ hrecenterevzSpA[3 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevzSp4.value , bc.timestamp ());
599+ }
600+ resfine = Correctfine (hrecenterecentSpA[3 ], hrecenterevxSpA[3 ], hrecenterevySpA[3 ], hrecenterevzSpA[3 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
549601 }
550602
551603 if (coarse5) {
552- res = Correctcoarse (bc.timestamp (), ConfRecentereSp5, useRecentereSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
604+ if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
605+ hrecentereSpA[4 ] = ccdb->getForTimeStamp <THnF>(ConfRecentereSp5.value , bc.timestamp ());
606+ }
607+ res = Correctcoarse (hrecentereSpA[4 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
553608 }
554609
555610 if (fine5) {
556- resfine = Correctfine (bc.timestamp (), ConfRecenterecentSp5, ConfRecenterevxSp5, ConfRecenterevySp5, ConfRecenterevzSp5, useRecenterefineSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
611+ if (useRecenterefineSp && (currentRunNumber != lastRunNumber)) {
612+ hrecenterecentSpA[4 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterecentSp5.value , bc.timestamp ());
613+ hrecenterevxSpA[4 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevxSp5.value , bc.timestamp ());
614+ hrecenterevySpA[4 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevySp5.value , bc.timestamp ());
615+ hrecenterevzSpA[4 ] = ccdb->getForTimeStamp <TH2F>(ConfRecenterevzSp5.value , bc.timestamp ());
616+ }
617+ resfine = Correctfine (hrecenterecentSpA[4 ], hrecenterevxSpA[4 ], hrecenterevySpA[4 ], hrecenterevzSpA[4 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
557618 }
558619
559620 if (coarse6) {
560- res = Correctcoarse (bc.timestamp (), ConfRecentereSp6, useRecentereSp, currentRunNumber, lastRunNumber, centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
621+ if (useRecentereSp && (currentRunNumber != lastRunNumber)) {
622+ hrecentereSpA[5 ] = ccdb->getForTimeStamp <THnF>(ConfRecentereSp6.value , bc.timestamp ());
623+ }
624+ res = Correctcoarse (hrecentereSpA[5 ], centrality, vx, vy, vz, qxZDCA, qyZDCA, qxZDCC, qyZDCC);
561625 }
562626
563627 if (res == 0 || resfine == 0 ) {
0 commit comments