@@ -92,7 +92,7 @@ struct FlowZDCtask {
9292 ConfigurableAxis axisFT0CAmp{" axisFT0CAmp" , {60000 , 0 , 60000 }, " axisFT0CAmp" };
9393
9494 Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
95- Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t ) true )) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls);
95+ Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t )true )) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls);
9696 Partition<aodTracks> tracksIUWithTPC = (aod::track::tpcNClsFindable > (uint8_t )0 );
9797
9898 TComplex qTPC; // init q TPC
@@ -283,125 +283,125 @@ struct FlowZDCtask {
283283 // collision-based event selection
284284 if (!collision.sel8 ())
285285 return ;
286- const auto & foundBC = collision.foundBC_as <BCsRun3>();
287- if (collision.has_foundFT0 ()) {
288- auto ft0 = collision.foundFT0 ();
289- for (auto amplitude : ft0.amplitudeA ()) {
290- FT0AAmp += amplitude;
291- histos.fill (HIST (" hFT0AAmp" ), FT0AAmp);
292- }
293- for (auto amplitude : ft0.amplitudeC ()) {
294- FT0CAmp += amplitude;
295- histos.fill (HIST (" hFT0CAmp" ), FT0CAmp);
296- }
286+ const auto & foundBC = collision.foundBC_as <BCsRun3>();
287+ if (collision.has_foundFT0 ()) {
288+ auto ft0 = collision.foundFT0 ();
289+ for (auto amplitude : ft0.amplitudeA ()) {
290+ FT0AAmp += amplitude;
291+ histos.fill (HIST (" hFT0AAmp" ), FT0AAmp);
297292 }
298- double FT0MAmp = FT0AAmp + FT0CAmp;
299- histos.fill (HIST (" hFT0MAmp" ), FT0MAmp);
300- if (foundBC.has_zdc ()) {
301- const auto & zdcread = foundBC.zdc ();
302- const auto cent = collision.centFT0C ();
303-
304- // ZDC data and histogram filling
305- histos.get <TH1>(HIST (" ZNAcoll" ))->Fill (zdcread.amplitudeZNA ());
306- histos.get <TH1>(HIST (" ZNCcoll" ))->Fill (zdcread.amplitudeZNC ());
307- histos.get <TH2>(HIST (" ZNvsZEMcoll" ))->Fill (zdcread.amplitudeZEM1 () + zdcread.amplitudeZEM2 (), zdcread.amplitudeZNA () + zdcread.amplitudeZNC ());
308- histos.get <TH2>(HIST (" ZNAvsZNCcoll" ))->Fill (zdcread.amplitudeZNC (), zdcread.amplitudeZNA ());
309-
310- histos.get <TH1>(HIST (" ZEM1coll" ))->Fill (zdcread.amplitudeZEM1 ());
311- histos.get <TH1>(HIST (" ZEM2coll" ))->Fill (zdcread.amplitudeZEM2 ());
312-
313- float sumZNC = (zdcread.energySectorZNC ())[0 ] + (zdcread.energySectorZNC ())[1 ] + (zdcread.energySectorZNC ())[2 ] + (zdcread.energySectorZNC ())[3 ];
314- float sumZNA = (zdcread.energySectorZNA ())[0 ] + (zdcread.energySectorZNA ())[1 ] + (zdcread.energySectorZNA ())[2 ] + (zdcread.energySectorZNA ())[3 ];
315- float sumZPC = (zdcread.energySectorZPC ())[0 ] + (zdcread.energySectorZPC ())[1 ] + (zdcread.energySectorZPC ())[2 ] + (zdcread.energySectorZPC ())[3 ];
316- float sumZPA = (zdcread.energySectorZPA ())[0 ] + (zdcread.energySectorZPA ())[1 ] + (zdcread.energySectorZPA ())[2 ] + (zdcread.energySectorZPA ())[3 ];
317- float sumZDC = sumZPA + sumZPC + sumZNA + sumZNC;
318- float sumZEM = zdcread.amplitudeZEM1 () + zdcread.amplitudeZEM2 ();
319-
320- // common energies
321- float common_sumZNC = (zdcread.energyCommonZNC ()) / acceptnace_ZNC;
322- float common_sumZNA = (zdcread.energyCommonZNA ()) / acceptnace_ZNA;
323- float common_sumZPC = (zdcread.energyCommonZPC ()) / acceptnace_ZPC;
324- float common_sumZPA = (zdcread.energyCommonZPA ()) / acceptnace_ZPA;
325- float sumZN = (sumZNC) + (sumZNA);
326- float sumZP = (sumZPC) + (sumZPA);
327-
328- histos.fill (HIST (" ZNenergy" ), sumZN);
329- histos.fill (HIST (" ZPenergy" ), sumZP);
330- histos.fill (HIST (" ZNCenergy" ), common_sumZNC);
331- histos.fill (HIST (" ZNAenergy" ), common_sumZNA);
332- histos.fill (HIST (" ZPAenergy" ), common_sumZPA);
333- histos.fill (HIST (" ZPCenergy" ), common_sumZPC);
334- histos.fill (HIST (" hZNvsFT0Ccent" ), cent, sumZN);
335- histos.fill (HIST (" hZPvsFT0Ccent" ), cent, sumZP);
336- histos.fill (HIST (" hZNvsFT0CAmp" ), FT0CAmp, sumZN);
337- histos.fill (HIST (" hZPvsFT0CAmp" ), FT0CAmp, sumZP);
338- histos.fill (HIST (" hZNvsMult" ), Ntot, sumZN);
339- histos.fill (HIST (" hZPvsMult" ), Ntot, sumZP);
340-
341- float ratioZN = sumZNC / sumZNA;
342- float ratioZP = sumZPC / sumZPA;
343- pZNratiovscent->Fill (cent, ratioZN);
344- pZPratiovscent->Fill (cent, ratioZP);
345- pZNvsFT0Ccent->Fill (cent, sumZN);
346- pZPvsFT0Ccent->Fill (cent, sumZP);
347-
348- histos.get <TH2>(HIST (" ZDC_energy_vs_ZEM" ))->Fill (sumZEM, sumZDC);
349-
350- // Spectator plane angle calculations and histograms
351- const auto Ntot_ZNA = zdcread.amplitudeZNA ();
352- const auto Ntot_ZNC = zdcread.amplitudeZNC ();
353- double qZNA_real = 0.0 ;
354- double qZNA_im = 0.0 ;
355- double qZNC_real = 0.0 ;
356- double qZNC_im = 0.0 ;
357- const double phiRadians[4 ] = {45 * o2::constants::math::PI / 180 , 135 * o2::constants::math::PI / 180 , 225 * o2::constants::math::PI / 180 , 315 * o2::constants::math::PI / 180 };
358- std::complex <double > qZNA = std::complex <double >(0.0 , 0.0 );
359- std::complex <double > qZNC = std::complex <double >(0.0 , 0.0 );
360-
361- for (int sector = 0 ; sector < 4 ; ++sector) {
362- float energyZNA = zdcread.energySectorZNA ()[sector];
363- float energyZNC = zdcread.energySectorZNC ()[sector];
364-
365- qZNA += std::complex <double >(std::cos (2 * phiRadians[sector]) * energyZNA / sumZNA, std::sin (2 * phiRadians[sector]) * energyZNA / sumZNA);
366- qZNC += std::complex <double >(std::cos (2 * phiRadians[sector]) * energyZNC / sumZNC, std::sin (2 * phiRadians[sector]) * energyZNC / sumZNC);
367- }
368-
369- qZNA_real = qZNA.real () / Ntot_ZNA;
370- qZNA_im = qZNA.imag () / Ntot_ZNA;
371- qZNC_real = qZNC.real () / Ntot_ZNC;
372- qZNC_im = qZNC.imag () / Ntot_ZNC;
373-
374- histos.fill (HIST (" Acorrelations" ), qZNA.real (), qZNA.imag ());
375- histos.fill (HIST (" RealQHistogramZNA" ), qZNA_real);
376- histos.fill (HIST (" ImagQHistogramZNA" ), qZNA_im);
377- histos.fill (HIST (" RealQHistogramZNC" ), qZNC_real);
378- histos.fill (HIST (" ImagQHistogramZNC" ), qZNC_im);
379-
380- // Calculate the spectator plane angles for ZNA and ZNC
381- double psiZNA = std::atan2 (qZNA.imag (), qZNA.real ()) / 2.0 ;
382- double psiZNC = std::atan2 (qZNC.imag (), qZNC.real ()) / 2.0 ;
383-
384- // Fill the histograms with the calculated angles
385- histos.fill (HIST (" SPAngleZNA" ), psiZNA);
386- histos.fill (HIST (" SPAngleZNC" ), psiZNC);
387-
388- double cosPsiDiff = std::cos (psiZNA) - std::cos (psiZNC);
389- double sinPsiDiff = std::sin (psiZNA) - std::sin (psiZNC);
390-
391- sumCosPsiDiff += cosPsiDiff;
392- sumSinPsiDiff += sinPsiDiff;
393- ++countEvents;
394-
395- if (countEvents > 0 ) {
396- double runningAverageCosPsiDiff = sumCosPsiDiff / countEvents;
397- double runningAverageSinPsiDiff = sumSinPsiDiff / countEvents;
398- histos.fill (HIST (" RunningAverageCosPsiDiff" ), runningAverageCosPsiDiff);
399- pCosPsiDifferences->Fill (cent, runningAverageCosPsiDiff);
400- pSinPsiDifferences->Fill (cent, runningAverageSinPsiDiff);
401- }
402- histos.fill (HIST (" CosPsiDifferences" ), cosPsiDiff);
403- histos.fill (HIST (" hSinDifferences" ), sinPsiDiff);
293+ for (auto amplitude : ft0.amplitudeC ()) {
294+ FT0CAmp += amplitude;
295+ histos.fill (HIST (" hFT0CAmp" ), FT0CAmp);
404296 }
297+ }
298+ double FT0MAmp = FT0AAmp + FT0CAmp;
299+ histos.fill (HIST (" hFT0MAmp" ), FT0MAmp);
300+ if (foundBC.has_zdc ()) {
301+ const auto & zdcread = foundBC.zdc ();
302+ const auto cent = collision.centFT0C ();
303+
304+ // ZDC data and histogram filling
305+ histos.get <TH1>(HIST (" ZNAcoll" ))->Fill (zdcread.amplitudeZNA ());
306+ histos.get <TH1>(HIST (" ZNCcoll" ))->Fill (zdcread.amplitudeZNC ());
307+ histos.get <TH2>(HIST (" ZNvsZEMcoll" ))->Fill (zdcread.amplitudeZEM1 () + zdcread.amplitudeZEM2 (), zdcread.amplitudeZNA () + zdcread.amplitudeZNC ());
308+ histos.get <TH2>(HIST (" ZNAvsZNCcoll" ))->Fill (zdcread.amplitudeZNC (), zdcread.amplitudeZNA ());
309+
310+ histos.get <TH1>(HIST (" ZEM1coll" ))->Fill (zdcread.amplitudeZEM1 ());
311+ histos.get <TH1>(HIST (" ZEM2coll" ))->Fill (zdcread.amplitudeZEM2 ());
312+
313+ float sumZNC = (zdcread.energySectorZNC ())[0 ] + (zdcread.energySectorZNC ())[1 ] + (zdcread.energySectorZNC ())[2 ] + (zdcread.energySectorZNC ())[3 ];
314+ float sumZNA = (zdcread.energySectorZNA ())[0 ] + (zdcread.energySectorZNA ())[1 ] + (zdcread.energySectorZNA ())[2 ] + (zdcread.energySectorZNA ())[3 ];
315+ float sumZPC = (zdcread.energySectorZPC ())[0 ] + (zdcread.energySectorZPC ())[1 ] + (zdcread.energySectorZPC ())[2 ] + (zdcread.energySectorZPC ())[3 ];
316+ float sumZPA = (zdcread.energySectorZPA ())[0 ] + (zdcread.energySectorZPA ())[1 ] + (zdcread.energySectorZPA ())[2 ] + (zdcread.energySectorZPA ())[3 ];
317+ float sumZDC = sumZPA + sumZPC + sumZNA + sumZNC;
318+ float sumZEM = zdcread.amplitudeZEM1 () + zdcread.amplitudeZEM2 ();
319+
320+ // common energies
321+ float common_sumZNC = (zdcread.energyCommonZNC ()) / acceptnace_ZNC;
322+ float common_sumZNA = (zdcread.energyCommonZNA ()) / acceptnace_ZNA;
323+ float common_sumZPC = (zdcread.energyCommonZPC ()) / acceptnace_ZPC;
324+ float common_sumZPA = (zdcread.energyCommonZPA ()) / acceptnace_ZPA;
325+ float sumZN = (sumZNC) + (sumZNA);
326+ float sumZP = (sumZPC) + (sumZPA);
327+
328+ histos.fill (HIST (" ZNenergy" ), sumZN);
329+ histos.fill (HIST (" ZPenergy" ), sumZP);
330+ histos.fill (HIST (" ZNCenergy" ), common_sumZNC);
331+ histos.fill (HIST (" ZNAenergy" ), common_sumZNA);
332+ histos.fill (HIST (" ZPAenergy" ), common_sumZPA);
333+ histos.fill (HIST (" ZPCenergy" ), common_sumZPC);
334+ histos.fill (HIST (" hZNvsFT0Ccent" ), cent, sumZN);
335+ histos.fill (HIST (" hZPvsFT0Ccent" ), cent, sumZP);
336+ histos.fill (HIST (" hZNvsFT0CAmp" ), FT0CAmp, sumZN);
337+ histos.fill (HIST (" hZPvsFT0CAmp" ), FT0CAmp, sumZP);
338+ histos.fill (HIST (" hZNvsMult" ), Ntot, sumZN);
339+ histos.fill (HIST (" hZPvsMult" ), Ntot, sumZP);
340+
341+ float ratioZN = sumZNC / sumZNA;
342+ float ratioZP = sumZPC / sumZPA;
343+ pZNratiovscent->Fill (cent, ratioZN);
344+ pZPratiovscent->Fill (cent, ratioZP);
345+ pZNvsFT0Ccent->Fill (cent, sumZN);
346+ pZPvsFT0Ccent->Fill (cent, sumZP);
347+
348+ histos.get <TH2>(HIST (" ZDC_energy_vs_ZEM" ))->Fill (sumZEM, sumZDC);
349+
350+ // Spectator plane angle calculations and histograms
351+ const auto Ntot_ZNA = zdcread.amplitudeZNA ();
352+ const auto Ntot_ZNC = zdcread.amplitudeZNC ();
353+ double qZNA_real = 0.0 ;
354+ double qZNA_im = 0.0 ;
355+ double qZNC_real = 0.0 ;
356+ double qZNC_im = 0.0 ;
357+ const double phiRadians[4 ] = {45 * o2::constants::math::PI / 180 , 135 * o2::constants::math::PI / 180 , 225 * o2::constants::math::PI / 180 , 315 * o2::constants::math::PI / 180 };
358+ std::complex <double > qZNA = std::complex <double >(0.0 , 0.0 );
359+ std::complex <double > qZNC = std::complex <double >(0.0 , 0.0 );
360+
361+ for (int sector = 0 ; sector < 4 ; ++sector) {
362+ float energyZNA = zdcread.energySectorZNA ()[sector];
363+ float energyZNC = zdcread.energySectorZNC ()[sector];
364+
365+ qZNA += std::complex <double >(std::cos (2 * phiRadians[sector]) * energyZNA / sumZNA, std::sin (2 * phiRadians[sector]) * energyZNA / sumZNA);
366+ qZNC += std::complex <double >(std::cos (2 * phiRadians[sector]) * energyZNC / sumZNC, std::sin (2 * phiRadians[sector]) * energyZNC / sumZNC);
367+ }
368+
369+ qZNA_real = qZNA.real () / Ntot_ZNA;
370+ qZNA_im = qZNA.imag () / Ntot_ZNA;
371+ qZNC_real = qZNC.real () / Ntot_ZNC;
372+ qZNC_im = qZNC.imag () / Ntot_ZNC;
373+
374+ histos.fill (HIST (" Acorrelations" ), qZNA.real (), qZNA.imag ());
375+ histos.fill (HIST (" RealQHistogramZNA" ), qZNA_real);
376+ histos.fill (HIST (" ImagQHistogramZNA" ), qZNA_im);
377+ histos.fill (HIST (" RealQHistogramZNC" ), qZNC_real);
378+ histos.fill (HIST (" ImagQHistogramZNC" ), qZNC_im);
379+
380+ // Calculate the spectator plane angles for ZNA and ZNC
381+ double psiZNA = std::atan2 (qZNA.imag (), qZNA.real ()) / 2.0 ;
382+ double psiZNC = std::atan2 (qZNC.imag (), qZNC.real ()) / 2.0 ;
383+
384+ // Fill the histograms with the calculated angles
385+ histos.fill (HIST (" SPAngleZNA" ), psiZNA);
386+ histos.fill (HIST (" SPAngleZNC" ), psiZNC);
387+
388+ double cosPsiDiff = std::cos (psiZNA) - std::cos (psiZNC);
389+ double sinPsiDiff = std::sin (psiZNA) - std::sin (psiZNC);
390+
391+ sumCosPsiDiff += cosPsiDiff;
392+ sumSinPsiDiff += sinPsiDiff;
393+ ++countEvents;
394+
395+ if (countEvents > 0 ) {
396+ double runningAverageCosPsiDiff = sumCosPsiDiff / countEvents;
397+ double runningAverageSinPsiDiff = sumSinPsiDiff / countEvents;
398+ histos.fill (HIST (" RunningAverageCosPsiDiff" ), runningAverageCosPsiDiff);
399+ pCosPsiDifferences->Fill (cent, runningAverageCosPsiDiff);
400+ pSinPsiDifferences->Fill (cent, runningAverageSinPsiDiff);
401+ }
402+ histos.fill (HIST (" CosPsiDifferences" ), cosPsiDiff);
403+ histos.fill (HIST (" hSinDifferences" ), sinPsiDiff);
404+ }
405405 }
406406
407407 PROCESS_SWITCH (FlowZDCtask, processZdcCollAssoc, " Processing ZDC w. collision association" , true );
0 commit comments