@@ -53,6 +53,10 @@ ITSClusterTask::~ITSClusterTask()
5353 delete hLongClustersPerChip[iLayer];
5454 delete hMultPerChipWhenLongClusters[iLayer];
5555 }
56+
57+ else {
58+ delete hLongClustersPerStave[iLayer - NLayerIB];
59+ }
5660 delete hClusterSizeLayerSummary[iLayer];
5761 delete hClusterTopologyLayerSummary[iLayer];
5862 delete hGroupedClusterSizeLayerSummary[iLayer];
@@ -161,8 +165,9 @@ void ITSClusterTask::monitorData(o2::framework::ProcessingContext& ctx)
161165 int nDigits3pixLay[7 ] = { 0 };
162166 int nClusters3pixLay[7 ] = { 0 };
163167 int nClusters3pix = 0 ;
164- int nLongClusters[ChipBoundary[NLayerIB]] = {};
168+ int nLongClusters[ChipBoundary[NLayerIB]] = {}; // for IB
165169 int nHitsFromClusters[ChipBoundary[NLayerIB]] = {}; // only IB is implemented at the moment
170+ int nLongClustersStave[4 ][mNStaves [6 ]] = { {} }; // for OB. nLongClustersStave[n][m] means stave L<3+n>_<m>
166171
167172 for (int icl = ROF.getFirstEntry (); icl < ROF.getFirstEntry () + ROF.getNEntries (); icl++) {
168173
@@ -228,9 +233,13 @@ void ITSClusterTask::monitorData(o2::framework::ProcessingContext& ctx)
228233 nHitsFromClusters[ChipID] += npix;
229234 }
230235
231- if (lay < NLayerIB && colspan >= minColSpanLongCluster && rowspan <= maxRowSpanLongCluster) {
236+ if (colspan >= minColSpanLongCluster && rowspan <= maxRowSpanLongCluster) {
232237 // definition of long cluster
233- nLongClusters[ChipID]++;
238+ if (lay < NLayerIB) {
239+ nLongClusters[ChipID]++;
240+ } else {
241+ nLongClustersStave[lay - NLayerIB][sta]++;
242+ }
234243 }
235244
236245 if (lay < NLayerIB) {
@@ -293,7 +302,7 @@ void ITSClusterTask::monitorData(o2::framework::ProcessingContext& ctx)
293302 }
294303 }
295304
296- // filling these anomaly plots once per ROF, ignoring chips w/o long clusters
305+ // filling these anomaly plots once per ROF, ignoring chips w/o long clusters -- IB
297306 for (int ichip = 0 ; ichip < ChipBoundary[NLayerIB]; ichip++) {
298307
299308 int nLong = TMath::Min (nLongClusters[ichip], 40 );
@@ -307,6 +316,17 @@ void ITSClusterTask::monitorData(o2::framework::ProcessingContext& ctx)
307316 hLongClustersPerChip[ilayer]->Fill (ichip, nLong);
308317 hMultPerChipWhenLongClusters[ilayer]->Fill (ichip, nHitsFromClusters[ichip]);
309318 }
319+ // filling anomaly plots once per ROF, ignoring staves w/o long clusters -- OB
320+ for (int ilay = 3 ; ilay < 7 ; ilay++) {
321+ for (int ist = 0 ; ist < mNStaves [ilay]; ist++) {
322+
323+ int nLong = TMath::Min (nLongClustersStave[ilay - NLayerIB][ist], 40 );
324+ if (nLong < 1 ) {
325+ continue ;
326+ }
327+ hLongClustersPerStave[ilay - NLayerIB]->Fill (ist, nLong);
328+ }
329+ }
310330 }
311331
312332 if ((int )clusRofArr.size () > 0 ) {
@@ -440,6 +460,7 @@ void ITSClusterTask::reset()
440460 }
441461 }
442462 } else {
463+ hLongClustersPerStave[iLayer - NLayerIB]->Reset ();
443464 hAverageClusterOccupancySummaryOB[iLayer]->Reset ();
444465 hAverageClusterSizeSummaryOB[iLayer]->Reset ();
445466 if (mDoPublish1DSummary == 1 ) {
@@ -500,6 +521,14 @@ void ITSClusterTask::createAllHistos()
500521 hMultPerChipWhenLongClusters[iLayer]->SetStats (0 );
501522 }
502523
524+ else {
525+
526+ hLongClustersPerStave[iLayer - NLayerIB] = new TH2D (Form (" Anomalies/Layer%d/LongClusters" , iLayer), Form (" Layer%d/LongClusters" , iLayer), mNStaves [iLayer], 0 , mNStaves [iLayer], 41 , 0 , 41 );
527+ addObject (hLongClustersPerStave[iLayer - NLayerIB]);
528+ formatAxes (hLongClustersPerStave[iLayer - NLayerIB], " Stave" , " number of long clusters" , 1 , 1.10 );
529+ hLongClustersPerStave[iLayer - NLayerIB]->SetStats (0 );
530+ }
531+
503532 hClusterSizeLayerSummary[iLayer] = new TH1L (Form (" Layer%d/AverageClusterSizeSummary" , iLayer), Form (" Layer%dAverageClusterSizeSummary" , iLayer), 128 * 128 , 0 , 128 * 128 );
504533 hClusterSizeLayerSummary[iLayer]->SetTitle (Form (" Cluster size summary for Layer %d" , iLayer));
505534 addObject (hClusterSizeLayerSummary[iLayer]);
0 commit comments