@@ -82,8 +82,9 @@ struct lumiStabilityTask {
8282 return false ;
8383 }
8484
85- void processFDDFT0 (aod::FT0s const & ft0s, aod::FDDs const & fdds, BCsRun3 const & bcs)
85+ void processMain (aod::FT0s const & ft0s, aod::FDDs const & fdds, aod::FV0As const & fv0s , BCsRun3 const & bcs)
8686 {
87+ int CountNormal (0 ), CountPastProtec (0 );
8788 for (auto const & fdd : fdds) {
8889 auto bc = fdd.bc_as <BCsRun3>();
8990 if (bc.timestamp () == 0 ) {
@@ -98,21 +99,41 @@ struct lumiStabilityTask {
9899 int maxDeltaBC = 5 ; // maximum difference
99100 bool pastActivityFDD = false ;
100101 while (deltaBC < maxDeltaBC) {
102+ deltaIndex++;
101103 if (bc.globalIndex () - deltaIndex < 0 ) {
102104 break ;
103105 }
104- deltaIndex++;
105106 const auto & bc_past = bcs.iteratorAt (bc.globalIndex () - deltaIndex);
106- deltaBC = globalBC = bc_past.globalBC ();
107+ deltaBC = globalBC - bc_past.globalBC ();
107108 if (deltaBC < maxDeltaBC) {
108109 pastActivityFDD |= bc_past.has_fdd ();
109110 }
110111 }
112+ deltaIndex = 0 ;
113+ deltaBC = 0 ;
111114
112- if (pastActivityFDD == false ) {
115+ bool futureActivityFDD = false ;
116+ while (deltaBC < maxDeltaBC) {
117+ deltaIndex++;
118+ if (bc.globalIndex () + deltaIndex >= bcs.size ()) {
119+ break ;
120+ }
121+ const auto & bc_future = bcs.iteratorAt (bc.globalIndex () + deltaIndex);
122+ deltaBC = bc_future.globalBC () - globalBC;
123+ if (deltaBC < maxDeltaBC) {
124+ futureActivityFDD |= bc_future.has_fdd ();
125+ }
126+ }
127+
128+ CountNormal++;
129+ if (pastActivityFDD == true || futureActivityFDD == true ) {
130+ CountPastProtec++;
113131 continue ;
114- std::cout << " BC skipped!" << std::endl;
115132 }
133+ /* if (pastActivityFDD == true) {
134+ CountPastProtec++;
135+ continue;
136+ }*/
116137
117138 std::bitset<8 > fddTriggers = fdd.triggerMask ();
118139 bool vertex = fddTriggers[o2::fdd::Triggers::bitVertex];
@@ -173,13 +194,51 @@ struct lumiStabilityTask {
173194
174195 for (auto const & ft0 : ft0s) {
175196 auto bc = ft0.bc_as <BCsRun3>();
176- if (bc.timestamp () == false ) {
197+ if (bc.timestamp () == 0 ) {
177198 continue ;
178199 }
179200
180201 Long64_t globalBC = bc.globalBC ();
181202 int localBC = globalBC % nBCsPerOrbit;
182203
204+ int deltaIndex = 0 ; // backward move counts
205+ int deltaBC = 0 ; // current difference wrt globalBC
206+ int maxDeltaBC = 5 ; // maximum difference
207+ bool pastActivityFT0 = false ;
208+ while (deltaBC < maxDeltaBC) {
209+ deltaIndex++;
210+ if (bc.globalIndex () - deltaIndex < 0 ) {
211+ break ;
212+ }
213+ const auto & bc_past = bcs.iteratorAt (bc.globalIndex () - deltaIndex);
214+ deltaBC = globalBC - bc_past.globalBC ();
215+ if (deltaBC < maxDeltaBC) {
216+ pastActivityFT0 |= bc_past.has_ft0 ();
217+ }
218+ }
219+ deltaIndex = 0 ;
220+ deltaBC = 0 ;
221+
222+ bool futureActivityFT0 = false ;
223+ while (deltaBC < maxDeltaBC) {
224+ deltaIndex++;
225+ if (bc.globalIndex () + deltaIndex >= bcs.size ()) {
226+ break ;
227+ }
228+ const auto & bc_future = bcs.iteratorAt (bc.globalIndex () + deltaIndex);
229+ deltaBC = bc_future.globalBC () - globalBC;
230+ if (deltaBC < maxDeltaBC) {
231+ futureActivityFT0 |= bc_future.has_ft0 ();
232+ }
233+ }
234+
235+ if (pastActivityFT0 == true || futureActivityFT0 == true ) {
236+ continue ;
237+ }
238+ /* if (pastActivityFT0 == true) {
239+ continue;
240+ }*/
241+
183242 std::bitset<8 > fT0Triggers = ft0.triggerMask ();
184243 bool vertex = fT0Triggers [o2::fdd::Triggers::bitVertex];
185244
@@ -207,21 +266,55 @@ struct lumiStabilityTask {
207266 }
208267 }
209268 } // loop over FT0 events
210- } // end processFDDFT0
211-
212- PROCESS_SWITCH (lumiStabilityTask, processFDDFT0, " Process FDD and FT0 to lumi stability analysis" , true );
213269
214- void processV0 (aod::FV0As const & fv0s, aod::BCsWithTimestamps const &)
215- {
216270 for (auto const & fv0 : fv0s) {
217- auto bc = fv0.bc_as <BCsWithTimestamps >();
218- if (bc.timestamp () == false ) {
271+ auto bc = fv0.bc_as <BCsRun3 >();
272+ if (bc.timestamp () == 0 ) {
219273 continue ;
220274 }
221275
222276 Long64_t globalBC = bc.globalBC ();
223277 int localBC = globalBC % nBCsPerOrbit;
224278
279+ int deltaIndex = 0 ; // backward move counts
280+ int deltaBC = 0 ; // current difference wrt globalBC
281+ int maxDeltaBC = 5 ; // maximum difference
282+ bool pastActivityV0A = false ;
283+ while (deltaBC < maxDeltaBC) {
284+ deltaIndex++;
285+ if (bc.globalIndex () - deltaIndex < 0 ) {
286+ break ;
287+ }
288+ const auto & bc_past = bcs.iteratorAt (bc.globalIndex () - deltaIndex);
289+ deltaBC = globalBC - bc_past.globalBC ();
290+ if (deltaBC < maxDeltaBC) {
291+ pastActivityV0A |= bc_past.has_fv0a ();
292+ }
293+ }
294+ deltaIndex = 0 ;
295+ deltaBC = 0 ;
296+
297+ bool futureActivityV0A = false ;
298+ while (deltaBC < maxDeltaBC) {
299+ deltaIndex++;
300+ if (bc.globalIndex () + deltaIndex >= bcs.size ()) {
301+ break ;
302+ }
303+ const auto & bc_future = bcs.iteratorAt (bc.globalIndex () + deltaIndex);
304+ deltaBC = bc_future.globalBC () - globalBC;
305+ if (deltaBC < maxDeltaBC) {
306+ futureActivityV0A |= bc_future.has_fv0a ();
307+ }
308+ }
309+
310+ if (pastActivityV0A == true || futureActivityV0A == true ) {
311+ continue ;
312+ }
313+
314+ /* if (pastActivityV0A == true) {
315+ continue;
316+ }*/
317+
225318 std::bitset<8 > fv0Triggers = fv0.triggerMask ();
226319 bool aOut = fv0Triggers[o2::fdd::Triggers::bitAOut];
227320 bool aIn = fv0Triggers[o2::fdd::Triggers::bitAIn];
@@ -247,9 +340,12 @@ struct lumiStabilityTask {
247340 }
248341 }
249342 } // loop over V0 events
250- } // end processV0
343+ std::cout << " ************ >>>>>>>>>>>>>> "
344+ << " Whithout Past Protection: " << CountNormal << " "
345+ << " Avoided Whith Past Protection: " << CountPastProtec << " <<<<<<<<<<<< ********************" << std::endl;
346+ } // end processMain
251347
252- PROCESS_SWITCH (lumiStabilityTask, processV0 , " Process V0 to lumi stability analysis" , true );
348+ PROCESS_SWITCH (lumiStabilityTask, processMain , " Process FDD and FT0 to lumi stability analysis" , true );
253349};
254350
255351WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments