File indexing completed on 2024-04-06 12:28:12
0001 use strict;
0002 use warnings;
0003 open ALL, $ENV{'CMSSW_RELEASE_BASE'}."/src/CalibTracker/SiStripCommon/data/SiStripDetInfo.dat" or die "Can't find SiStripDetInfo.dat";
0004
0005 open OUT, "> BadAPVs.cff" or die "Can't write to BadAPVs.cff";
0006 print OUT <<_EOF;
0007 replace prod.BadComponentList = {
0008 _EOF
0009
0010 my $first = 1;
0011 my $tot = 0; my $bads = 0;
0012 while(<ALL>) {
0013 my ($detid, $napv, $foo, $bar) = split(/\s+/, $_);
0014 my @badAPVs = ();
0015
0016
0017
0018 if (($napv <= 6) && ($detid =~ /^3/)) {
0019 foreach my $apv (0 .. ($napv-1)) {
0020 if (rand() < 0.2) {
0021 push @badAPVs, $apv;
0022 }
0023 }
0024 }
0025
0026
0027
0028 if (@badAPVs) {
0029 my $record = sprintf("{ uint32 BadModule = %d vuint32 BadApvList = {%s} }",
0030 $detid, join(',', @badAPVs));
0031 print OUT ($first ? "\t " : "\t,"), $record, "\n";
0032 $first = 0;
0033 $bads++;
0034 }
0035 $tot++;
0036 }
0037
0038 print OUT "}\n";
0039 close OUT;
0040 print "Summary: $bads modules with bad APVs over $tot total modules.\n";