Bad Strips Files

Jim prepared few files containing the status of each strip, based on pedestal run :

OfflineStripFile_17059023_10.txt 
OfflineStripFile_17059023_15.txt 
OfflineStripFile_17059023_20.txt 
OfflineStripFile_17059023_25.txt
OfflineStripFile_17059023_30.txt 
OfflineStripFile_17059023_35.txt 
OfflineStripFile_17059023_40.txt

where the status is 

Note DAQ readout order.  Counting starts from zero.  Side is N/P and N=0, P=1
Side Ladder Wafer Strip Status(0-bad,1-good) 

1) Status of strips for each file, per side


2) # of good, bad strips for each file


3) sstBadStrips table
The issue is that I was planning to make a new table (cannot reuse sstNoise) but we laready see that with an offset at 10 (means rms<1), there is already a large number of strips to flag
/* sstBadStrips.idl
*
* Table: sstBadStrips
*
* description: list of bad strips address
  id = (491520)*side[0-1]/2 + ladder[0-19]*12288 + wafer[0-15]*768 + strip[1-768]
*
*/
struct sstBadStrips{
   unsigned long badStrip[10000];
}; 


4) Long's table testing
bfc chain : 

bfc.C(1,500,"in db MakeEvent y2016 sstDb sst_daq sstHit sstTuple","/star/data03/daq/2016/099/17099007/st_physics_17099007_raw_2500009.daq") 

In the table below are listed the number of strips, clusters, and hits over these 500 events

  strips P strips N clusters P clusters N hits 
no table 507k 542k 401k 376k 159k
offset = 0028 503k 452k 398k 301k 155k
offset = 0030 504k 453k 399k 302k 155k
offset = 0050 506k 462k 400k 309k 156k


comments :

  • the main effect of using the bad strip table is seen for reducing the # of strips on N side  (542k --> 452k)
  • differences between offset are small (fluctuation)
  • the # of reconstructed hits remain the same w/o and with the bad strip table (159k --> 156k)

Comparison of number of strips (distribution, repartition per wafer) between no bad strips file, offset =0028 , offset =0030,  offset = 0050
--> we see that the <entries> side N is lower hen applying the bad strips list (whatever offset)

Comparison of number of clusters (distribution, repartition per wafer) between no bad strips file, offset =0028 , offset =0030,  offset = 0050

5) Long's table testing (pass2)
Long's table , pass 2 (cut on lower eff.) : https://drupal.star.bnl.gov/STAR/blog/zhoulong/ssd-bad-channel-masking

  strips P strips N clusters P clusters N hits 
           
offset=0028 317k 358k 259k 247k 95k
offset=0030 317k 359k 259k 248k 95k
offset=0050 319k 369k 261k 255k 96k


6) Long's table testing (pass2) [update]
run BFC chain over 4k events
a) offset = 0.028

Distribution of # of strips fired (per wafer) (summed over the 4k events) : here
Distribution of the number of clusters : here
Distribution of the number of hits : here
Details # of strips fired (per wafer) : here 
Noticeable wafers : 

  • L1W5P (page 5) : reduction in overall # strips side P
  • L1W8N (page 8) : reduction (2 order of mag.) of the peak on side N
  • L3W5N (page 37) : removal of the large peak @200ADC
  • L6W4N (page 84)
  • L6W15N (page 95), L12W13N (page 189) : removal of large peak at low ADC
Overall it's a huge improvement in the sense that it cleans up (mostly on side N wafers) the low ADC strip
Details # of clusters reco. (per wafer) : here
Details # of hits (per wafer) : here 

b) offset = 0.030

Distribution of # of strips fired (per wafer) (summed over the 4k events) : here
Distribution of the number of clusters : here
Distribution of the number of hits : here
Details # of strips fired (per wafer) : here
Details # of clusters reco. (per wafer) : here
Details # of hits (per wafer) : here 

c) offset = 0.050

Distribution of # of strips fired (per wafer) (summed over the 4k events) : here
Distribution of the number of clusters : here
Distribution of the number of hits : here
Details # of strips fired (per wafer) : here
Details # of clusters reco. (per wafer) : here
Details # of hits (per wafer) : here 


7) Long's table testing (pass3) [after decoding mistake]
A mistake was found in the strip index (id) coding between the table itself and how this index is used in DaqMaker.
Index is calculated as :
id = (491520)*side[0-1]/2 + ladder[0-19]*12288 + wafer[0-15]*768 + strip[1-768]
Table were produced with good wafer ordering 0-->15 for both P and N sides.
However the definition used in StSstDaqMaker was using wafer id *before* reordering (side P : wafer --> 16 - wafer)
The new histograms (offset = 0.028) are here
Noticeable wafers :
  • L1W3P (page 3) : no data
  • L1W8N (page 8): table masks the entire wafer as expected
  • L1W13P (page 13) : no masked anymore (decoding fixed)
  • L3W5N (page 37): as before the mistake, peak is masked 
  • L4W8P (page 56) : table is masking strips having large ADC
  • L4W11P (page 59) : wafer entirely masked (although before masking it has very few strips fired)
  • L6W4N (page 84) : large peak at low ADC masked
  • L6W8P,N (page88) : both large peak at low ADC masked
  • L6W15N (page 95) : large peak at low ADC reduced by 2 orders of magnitude
  • L8W6P (page 118) : large peak at ADC~100 reduced
  • L10W10N (page 154)  :large peak at low ADC reduced
  • L17W12P (page 268) : # of strips @ low ADC greatly reduced
  • L20W4P (page 308) : peak at low ADC entirely masked
Example for L3W5N (no masking ; masking ) : the table is able to remove as single noisy channel !

8) Long's table testing (pass3) [4k events]

a) offset = 0.028


Distribution of # of strips fired (per wafer) (summed over the 4k events) : here
Distribution of the number of clusters : here
Distribution of the number of hits : here
Details # of strips fired (per wafer) : here
Details # of clusters reco. (per wafer) : here
Details # of hits (per wafer) : here 

b) offset = 0.030

Distribution of # of strips fired (per wafer) (summed over the 4k events) : here
Distribution of the number of clusters : here
Distribution of the number of hits : here
Details # of strips fired (per wafer) : here
Details # of clusters reco. (per wafer) : here
Details # of hits (per wafer) : here 

c) offset = 0.050


Distribution of # of strips fired (per wafer) (summed over the 4k events) : here
Distribution of the number of clusters : here
Distribution of the number of hits : here
Details # of strips fired (per wafer) : here
Details # of clusters reco. (per wafer) : here
Details # of hits (per wafer) : here 

d) Comparison of hits packages : plot here
  • geometrical criteria in the clusters association leads to ambiguous and non-ambiguous hits packages
  • package 0 is the simplest (and non ambiguous) resulting of the association of 1 clusters on P-side and 1 clusters on N-side (see SN0427)
  • charge matching is used to disentangle ambiguous hits
  • we see that with the bad strips masking, we reduce the # of ambiguous package

  no masking offset=0.028 offset=0.030 offset=0.050
all packages 1184146 897444 898824 907494
package 0 888721 696818 697400 700420
ratio 0.75 0.774 0.775 0.771


9) Bad strip table proposal

/* sstBadStrips.idl                                                                                                                          
 * Table: sstBadStrips                                                                                                                       
 * description: list of bad strips status : 0 = good ; > 0 bad                                                                               
 */
struct sstBadStrips{
  char status[491520];
};
location :  /star/institutions/ksu/bouchet/SSD_TO_SST/20160620/StDb/idl/sstBadStrips.idl
 
- run 16 only
- 1 entry /day