#!/usr/bin/env perl use strict; my $pref = $ARGV[0]; my $tgt = $ARGV[1]; my $varfile = $ARGV[2]; if (!defined $ARGV[0]) { print "USAGE:\n"; print "autotmva.pl [pref] [qa]\n\n"; print " [pref] : file names prefix\n"; print " [maxbg] : background target (e.g. 0.0001 -> determine cut on TMVA output with 0.01% bgk level); default = 0.0001; 0 just prints commands\n"; print " [var file] : file with variable lists; can be selection.cfg - variables will be determined automatically\n"; print " will only be applied for cases with n_var > 2\n\n"; exit(0); } if (!defined($tgt)) {$tgt = 0.0001;} my $trnmacro = "../TMVATraining.C+"; my $tstmacro = "../TMVAApply.C+"; my $cutmacro = "cutfinderx.C+"; if (defined($ENV{"VMCWORKDIR"})) { $trnmacro = $ENV{"VMCWORKDIR"}."/macro/softrig/TMVATraining.C+"; $tstmacro = $ENV{"VMCWORKDIR"}."/macro/softrig/TMVAApply.C+"; $cutmacro = $ENV{"VMCWORKDIR"}."/macro/softrig/cutfinderx.C+"; } # remove leading and trailing whitespace sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s }; # count number of variables in string sub cntvars { my $s = shift; my @to = split / /, $s; return 0+@to }; # sigma values for D* mass difference cut my %mdifcuts = ( 110 => 3.9, 111 => 3.9, 112 => 3.9, 113 => 3.9, 114 => 3.9, 115 => 4.3, 116 => 4.3, 117 => 4.3, 118 => 4.3, 119 => 4.3, 130 => 1.2, 131 => 1.2, 132 => 1.2, 133 => 1.2, 134 => 1.2, 135 => 3.8, 136 => 3.8, 137 => 3.8, 138 => 3.8, 150 => 4.3, 151 => 4.3, ); # -------------- # main routine # -------------- my %varhints; my %cuts; my %comment; if (defined($varfile)) { open(TEMPLATE, "<$varfile"); my(@lines) =