@@ -58,6 +58,7 @@ using BCsRun3 = soa::Join<aod::BCsWithTimestamps, aod::Run3MatchedToBCSparse>;
5858struct zdcvector {
5959
6060 Produces<aod::ZDCCalTables> zdccaltable;
61+ Produces<aod::ZDCEnergyTables> zdcenergytable;
6162
6263 // Configurables.
6364 struct : ConfigurableGroup {
@@ -98,6 +99,9 @@ struct zdcvector {
9899 Configurable<bool > cfgEvtRCTFlagCheckerLimitAcceptAsBad{" cfgEvtRCTFlagCheckerLimitAcceptAsBad" , false , " Evt sel: RCT flag checker treat Limited Acceptance As Bad" };
99100 } rctCut;
100101
102+ Configurable<bool > storeZdcEnergy{" storeZdcEnergy" , true , " Store ZDC tower/common energies in a linked extra table" };
103+ int32_t zdcCalTableRow = 0 ;
104+
101105 RCTFlagsChecker rctChecker;
102106
103107 void init (o2::framework::InitContext&)
@@ -176,78 +180,122 @@ struct zdcvector {
176180 auto sumA = 0.0 ;
177181 auto sumC = 0.0 ;
178182
183+ // default values for events without ZDC
184+ float znaEnergycommon = 0 .f ;
185+ float zncEnergycommon = 0 .f ;
186+
187+ float zna0 = 0 .f ;
188+ float zna1 = 0 .f ;
189+ float zna2 = 0 .f ;
190+ float zna3 = 0 .f ;
191+
192+ float znc0 = 0 .f ;
193+ float znc1 = 0 .f ;
194+ float znc2 = 0 .f ;
195+ float znc3 = 0 .f ;
196+
179197 auto bc = collision.foundBC_as <BCsRun3>();
180198
199+ // Helper to keep your early-return structure unchanged.
200+ // Every time ZDCCalTables is filled, the optional linked energy table is also filled.
201+ auto fillTables = [&](bool trigger,
202+ float qxA,
203+ float qxC,
204+ float qyA,
205+ float qyC) {
206+ zdccaltable (trigger,
207+ currentRunNumber,
208+ centrality,
209+ vx,
210+ vy,
211+ vz,
212+ qxA,
213+ qxC,
214+ qyA,
215+ qyC);
216+
217+ LOG (info) << " values are:" << trigger << " " << znaEnergycommon << " " << zna0;
218+ if (storeZdcEnergy) {
219+ zdcenergytable (zdcCalTableRow,
220+ znaEnergycommon,
221+ zncEnergycommon,
222+ zna0,
223+ zna1,
224+ zna2,
225+ zna3,
226+ znc0,
227+ znc1,
228+ znc2,
229+ znc3);
230+ }
231+
232+ ++zdcCalTableRow;
233+ };
234+
181235 if (!bc.has_zdc ()) {
182236 triggerevent = false ;
183- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
237+ fillTables (triggerevent, 0 .f , 0 .f , 0 .f , 0 .f );
238+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
184239 return ;
185240 }
186241
187- // -------- define time since run start --------
188- /* uint64_t ts = bc.timestamp();
189- if (currentRunNumber != runForStartTime) {
190- runStartTime = ts;
191- runForStartTime = currentRunNumber;
192- }
193- double tsec = 1.e-3 * static_cast<double>(ts - runStartTime);
194- */
195242 histos.fill (HIST (" hEvtSelInfo" ), 1.5 );
196243
197244 auto zdc = bc.zdc ();
198245 auto zncEnergy = zdc.energySectorZNC ();
199246 auto znaEnergy = zdc.energySectorZNA ();
200- auto zncEnergycommon = zdc.energyCommonZNC ();
201- auto znaEnergycommon = zdc.energyCommonZNA ();
247+ zncEnergycommon = zdc.energyCommonZNC ();
248+ znaEnergycommon = zdc.energyCommonZNA ();
202249 auto beamEne = 5.36 * 0.5 ;
250+ zna0 = znaEnergy[0 ];
251+ zna1 = znaEnergy[1 ];
252+ zna2 = znaEnergy[2 ];
253+ zna3 = znaEnergy[3 ];
254+
255+ znc0 = zncEnergy[0 ];
256+ znc1 = zncEnergy[1 ];
257+ znc2 = zncEnergy[2 ];
258+ znc3 = zncEnergy[3 ];
203259
204260 if (znaEnergycommon <= 0.0 || zncEnergycommon <= 0.0 ) {
205261 triggerevent = false ;
206- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
207- // zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
262+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
263+ fillTables (triggerevent, 0 . f , 0 . f , 0 . f , 0 . f );
208264 return ;
209265 }
210266
211267 histos.fill (HIST (" hEvtSelInfo" ), 2.5 );
212268
213269 if (znaEnergy[0 ] <= 0.0 || znaEnergy[1 ] <= 0.0 || znaEnergy[2 ] <= 0.0 || znaEnergy[3 ] <= 0.0 ) {
214270 triggerevent = false ;
215- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
216- // zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
271+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
272+ fillTables (triggerevent, 0 . f , 0 . f , 0 . f , 0 . f );
217273 return ;
218274 }
219275 histos.fill (HIST (" hEvtSelInfo" ), 3.5 );
220276
221277 if (zncEnergy[0 ] <= 0.0 || zncEnergy[1 ] <= 0.0 || zncEnergy[2 ] <= 0.0 || zncEnergy[3 ] <= 0.0 ) {
222278 triggerevent = false ;
223- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
224- // zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
279+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
280+ fillTables (triggerevent, 0 . f , 0 . f , 0 . f , 0 . f );
225281 return ;
226282 }
227283
228284 histos.fill (HIST (" hEvtSelInfo" ), 4.5 );
229285
230286 if (rctCut.requireRCTFlagChecker && !rctChecker (collision)) {
231287 triggerevent = false ;
232- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
233- // zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
288+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
289+ fillTables (triggerevent, 0 . f , 0 . f , 0 . f , 0 . f );
234290 return ;
235291 }
236292
237293 histos.fill (HIST (" hEvtSelInfo" ), 5.5 );
238- /* histos.fill(HIST("hZNA0"), centrality, znaEnergy[0]);
239- histos.fill(HIST("hZNA1"), centrality, znaEnergy[1]);
240- histos.fill(HIST("hZNA2"), centrality, znaEnergy[2]);
241- histos.fill(HIST("hZNA3"), centrality, znaEnergy[3]);
242- histos.fill(HIST("hZNC0"), centrality, zncEnergy[0]);
243- histos.fill(HIST("hZNC1"), centrality, zncEnergy[1]);
244- histos.fill(HIST("hZNC2"), centrality, zncEnergy[2]);
245- histos.fill(HIST("hZNC3"), centrality, zncEnergy[3]);*/
246294
247295 if (additionalEvSel && (!collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV ))) {
248296 triggerevent = false ;
249- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
250- // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
297+ fillTables (triggerevent, 0 . f , 0 .f , 0 .f , 0 .f );
298+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0 );
251299 return ;
252300 }
253301
@@ -284,7 +332,8 @@ struct zdcvector {
284332
285333 if (znaEnergy[iChA] <= 0.0 ) {
286334 triggerevent = false ;
287- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
335+ fillTables (triggerevent, 0 .f , 0 .f , 0 .f , 0 .f );
336+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
288337 return ;
289338 } else {
290339 double ampl = gainequal * znaEnergy[iChA];
@@ -300,8 +349,8 @@ struct zdcvector {
300349 } else {
301350 if (zncEnergy[iChA - 4 ] <= 0.0 ) {
302351 triggerevent = false ;
303- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
304- // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
352+ fillTables (triggerevent, 0 . f , 0 .f , 0 .f , 0 .f );
353+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0 );
305354 return ;
306355 } else {
307356 double ampl = gainequal * zncEnergy[iChA - 4 ];
@@ -345,8 +394,8 @@ struct zdcvector {
345394 qyZDCA = 0.0 ;
346395 qyZDCC = 0.0 ;
347396 triggerevent = false ;
348- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0 , 0.0 , 0.0 , 0.0 );
349- // zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, znaEnergycommon, zncEnergycommon, znaEnergy[0], znaEnergy[1], znaEnergy[2], znaEnergy[3], zncEnergy[0], zncEnergy[1], zncEnergy[2], zncEnergy[3] );
397+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, 0.0, 0.0, 0.0, 0.0);
398+ fillTables (triggerevent, 0 . f , 0 . f , 0 . f , 0 . f );
350399 return ;
351400 }
352401
@@ -370,7 +419,12 @@ struct zdcvector {
370419
371420 lastRunNumber = currentRunNumber;
372421 }
373- zdccaltable (triggerevent, currentRunNumber, centrality, vx, vy, vz, qxZDCA, qxZDCC, qyZDCA, qyZDCC);
422+ // zdccaltable(triggerevent, currentRunNumber, centrality, vx, vy, vz, qxZDCA, qxZDCC, qyZDCA, qyZDCC);
423+ fillTables (triggerevent,
424+ qxZDCA,
425+ qxZDCC,
426+ qyZDCA,
427+ qyZDCC);
374428 }
375429};
376430
0 commit comments