#!/usr/local/bin/perl ############################ # DEFINE DEFF HIT CLEANING # ############################ # no deff hit cleaning in template .... ################# # BEGIN PROGRAM # ################# # INPUT AND OUTPUT FILE HANDLING: CHANGE ACCORDING TO YOUR NEEDS (JC) $recoos = "/group/amanda/bin.OSF1/recoos"; $infile = $ARGV[0]; @filetoks = split /\//, $infile; $filename = pop @filetoks; $filepath = join '/', @filetoks; open(ERR,">>errorFile"); $l = rindex($infile,".gz"); $m = rindex($infile,".bz2"); if ($l > 0) { # gzipped $outfile = substr($infile,0,$l); $cat = " gunzip -c "; } elsif ($m > 0) { # bzipped $outfile = substr($infile,0,$m); $cat = " bunzip2 -c "; } else { # uncompressed $outfile = $infile; $cat = " cat "; } if ($outfile =~ /f2k/) { $outfile =~ s/f2k/mrec.f2k.gz/; } else { die "Can't find f2k token to replace in input filename.\n"; } # CHANGE HERE FOR WHAT YOU NEED # Process as data if matches pattern .... if ( $infile =~ /(\d+)_U?_?(\d+)-97-/ ) { # real 1997 data ($run, $yday) = ($1, $2); $tshift= $tshift_data; # print "Processing data from run $run, day $yday\n"; # subroutine performs run based OM cuts and BAD RUNs $omcut= hitclean($run,$yday); if ($omcut =~ /^badrun/) { warn "Skipping bad run $infile\n"; next FILE; } # SAME SCRIPT CAN BE USED FOR MONTE CARLO # Process as Monte Carlo if matches pattern *ama*...etc } elsif ( $infile =~ /ama/ || $infile =~ /atmos/ || $infile =~ /atm/ || $infile =~ /mass/ || $infile =~ /nusim/ || $infile =~ /^bg/ ) { $omcut= hitclean("mc",1) # File not recognized as data or monte carlo... } else { print " Could not recognize type of file as MC or data.\n" . " Please update the script template.pl\n"; } # end of if data or MC # OM which are allways cut (and String 11-13): $chncuts = " -y S=11 -y S=12 -y S=13 " . " -y N=3 -y N=28 -y N=32 " . " -y N=36 -y N=39 -y N=40 -y N=41 -y N=42 " . " -y N=44 -y N=47 -y N=50 -y N=57 -y N=61 -y N=62 -y N=78" . " -y N=81 -y N=82 -y N=83 -y N=84 -y N=85 -y N=86 -y N=94 -y N=96" . " -y N=117 -y N=143 -y N=169 -y N=172 -y N=186 -y N=189 -y N= 190" . " -y N=195 -y N=197 -y N=199 -y N=215 -y N=227 -y N=229 -y N=231" . " -y N=232 -y N=235 -y N=243 -y N=244 -y N=265 -y N=267"; $cln_flags = " $omcut $chncuts "; $ example reconstruction with cuts: $exe= "$cat $infile " . " | $recoos " . " -r n -i m -p w=0. -X g=f " . " -x x,y,z,zenith,azimuth " . " -p n=1000:4500 -p j=15 -p a=96. -p t=1:5 -X o=2 " . " $cln_flags " print $exe."\n"; `$exe`; close(ERR); # end of script; subroutines follow ###################################################################### # This routine returns the recoos flags to hit-clean given the # run number and day of the year. ###################################################################### sub hitclean { ######################## # BEGIN RUN-BASED CUTS # ######################## # Put here your favourite MC selection criterion .... if ($run =~ /^mc/) { $reco_flag .= ""; return $reco_flag; } #OM(RUN) selection if ($run=11) {$reco_flag .= " -y N=254 -y =264";} if ($run=97) {$reco_flag .= " -y N=16 ;} if ($run=112 || $run=477) {$reco_flag .= " -y N=263";} if (($run>=160) && ($run<=162)) {$reco_flag .= " -y N=234 -y N=249 -y N=258";} if (($run>=215) && ($run<=224)) {$reco_flag .= " -y N=302";} if ($run=217) {$reco_flag .= " -y N=263 -y N=302";} if ($run=308) {$reco_flag .= " -y N=263";} if (run= 450) {$reco_flag .= " -y N=198 -y N=263";} if (($run>=667) && ($run<=670)) {$reco_flag .= " -y N=302";} if (($run=661 || run= 664 ) {$reco_flag .= " -y N=302";} if (($run>=674) && ($run<=676)) {$reco_flag .= " -y N=277 -y N= 289";} if (($run =678) {$reco_flag .= " -y N=302;} if (($run>=682) && ($run<=683)) {$reco_flag .= " -y N=302";} ################# # BAD RUN CHECK # ################# if (($run <= 7) || (($run>=16)&&($run<=17)) || (($run>=21)&&($run<=31))){ return "badrun"; } if (($run = 33) || ($run = 35) ||(($run>=39)&&($run<=47))){ return "badrun"; } if (($run = 67) || ($run = 69) || ($run = 71) ||(($run>=73)&&($run<=91))){ return "badrun"; } if (($run = 102) || ($run = 106)){ return "badrun"; } if (($run = 108) || ($run = 109) || ($run = 111) || ($run = 112)){ return "badrun"; } if (($run = 116) ||(($run>=149)&&($run<=157))){ return "badrun"; } if (($run = 243) ||(($run>=345)&&($run<=346))){ return "badrun"; } if (($run = 251) || ($run = 276) || ($run = 291) || ($run = 326) || ($run = 379|| ($run = 389) )){ return "badrun"; } if (($run = 428) ||(($run>=412)&&($run<=426))){ return "badrun"; } if (($run = 549) ||(($run>=500)&&($run<=511))){ return "badrun"; } if (($run = 518) ||(($run = 531) { return "badrun" } if (($run = 685) ||(($run>=686)&&($run<=700))){ return "badrun"; } return $reco_flag; } # end of sub hitclean