#!/usr/bin/perl # Dave R use strict; use DBI; my %chipdata = (); my %map=(); my ($module,$run,$scan,$chip,$innse); my $bec=2; my $Layer=6; my $param = "nptgain_chipdetails.innse"; my $runbegin = 158393; my $runend = 172621; my $ntests=0; my $connect = DBI->connect('DBI:mysql:calibration:pc-sct-db-01:3306', 'sctroddq', '') || die "Could not connect to database: $DBI::errstr"; # my $nptgain_summary_query =&makeQuery("SELECT nptgain_summary.module,nptgain_summary.run,nptgain_summary.scan,nptgain_chipdetails.chip,$param FROM nptgain_chipdetails join nptgain_summary,moduleindex where nptgain_summary.id=nptgain_chipdetails.summaryid and nptgain_summary.run>= $runbegin and nptgain_summary.run<=$runend and nptgain_summary.module=moduleindex.serial and moduleindex.bec=$bec and moduleindex.barrel=$Layer"); my $nptgain_summary_query =&makeQuery("SELECT nptgain_summary.module,nptgain_summary.run,nptgain_summary.scan,nptgain_chipdetails.chip,$param FROM nptgain_chipdetails join nptgain_summary,moduleindex where nptgain_summary.id=nptgain_chipdetails.summaryid and nptgain_summary.run>=$runbegin and nptgain_summary.run<=$runend and nptgain_summary.module=moduleindex.serial and moduleindex.bec=$bec and moduleindex.eta=$Layer"); $nptgain_summary_query->bind_columns(\$module,\$run,\$scan,\$chip,\$innse); my $count=0; my $av=0; while($nptgain_summary_query->fetch()) { # print "$param \n"; # print "$innse \n"; # exclude bad calibration runs if($run == 155410 || ($run>=163208 && $run<=163989) || $run==165309 || $ run==165909 || $run==166321 || $run==167236 || $run==170212 || $run==170249 || $ run==172826 ) {next;} # exclude 100V runs if($run==175552 && $scan==0) {next;} # exclude 10ptPtGain scans if(($run!=161359 && $run!=165899) && $scan > 5) {next;} if($run==161359 && $scan != 43) {next;} if($run==165899 && $scan != 41) {next;} if($param=~/innse/ && $innse>500 && $innse<2000 ) { # print "Module= $module run= $run scan= $scan chip= $chip innse= $innse \n"; my $key = &getRunScanKey($run,$scan); $map{$run}{$module}{$chip}=$innse; } if($param=~/gain/ && $innse>0 && $innse<200) { my $key = &getRunScanKey($run,$scan); $map{$run}{$module}{$chip}=$innse; } } $connect->disconnect(); #my $nruns = (keys %map); foreach my $run (sort {$a<=>$b} keys %map) { my $nmodules = scalar(keys %{$map{$run}}); if($nmodules<10) {next;} my @evt=(0,0,0,0,0,0,0,0,0,0,0,0); my @sum=(0,0,0,0,0,0,0,0,0,0,0,0); my @sum2=(0,0,0,0,0,0,0,0,0,0,0,0); my @mean=(0,0,0,0,0,0,0,0,0,0,0,0); my @sigma=(0,0,0,0,0,0,0,0,0,0,0,0); my $chip = 6; foreach my $module (keys %{$map{$run}}) { my $chipcount = (keys %{$map{$run}{$module}}); if($chipcount!=12) {next;} # if($map{$run}{$module}{6}!=0 && $map{$run}{$module}{0}!=0) {next;} my $count=0; for(my $c=0;$c<12;$c++) { $mean[$c] = $map{$run}{$module}{$c}; if($map{$run}{$module}{$c}>100) {$count++;} } if($count>=11) { print "$run $bec $Layer $module @mean \n"; } } for(my $c=0;$c<12;$c++){ # $mean[$c] = $sum[$c]/$evt[$c]; # $sigma[$c] = sqrt($sum2[$c]/$evt[$c]-$mean[$c]*$mean[$c]); # $sigma[$c] /= $evt[$c]; # $mean[$c] = sprintf("%.0f", $mean[$c]); # $sigma[$c] = sprintf("%.2f", $sigma[$c]); # # print "$c $evt[$c] $mean[$c] $sigma[$c] \n"; } # print "$run $bec $Layer @mean \n"; } # foreach my module (keys %{$map{$run}}) { sub getRunScanKey() { my ($run, $scan) = @_; return ($run<<5) || $scan; } sub makeQuery { my $query = shift; my $queryhandle = $connect->prepare($query); $queryhandle->execute(); return $queryhandle; } sub getRunNumber { my $runid = shift; my $run; my $runquery = &makeQuery("SELECT run FROM runindex WHERE id=$runid"); $runquery->bind_columns(\$run); $runquery->fetch(); return $run; }