//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- int parse_job_parameters(TString& Job, StnAnaGlobals_t& Glob) { int loc, loc1, loc2, len; // printf("job = %s\n",Job.Data()); //----------------------------------------------------------------------------- // job name //----------------------------------------------------------------------------- len = Job.Length(); loc = Job.Index("/"); if (loc > 0 ) g.JobName = Job(0,loc); else g.JobName = Job; //----------------------------------------------------------------------------- // MC flag //----------------------------------------------------------------------------- loc = Job.Index("/mc"); if (loc > 0) { loc = Job.Index("/mc="); if (loc <= 0) g.DoMc = 1; else { loc1 = loc+strlen ("/mc="); loc2 = Job.Index("/",loc+1); if (loc2 < 0) loc2 = len; g.DoMc = atoi(Job(loc1,loc2-loc1).Data()); } } else g.DoMc = 0; //----------------------------------------------------------------------------- // debug //----------------------------------------------------------------------------- loc = Job.Index("/debug"); if (loc > 0) g.Debug = 1; else g.Debug = 0; //----------------------------------------------------------------------------- // flag controlling writing out "little" ntuple //----------------------------------------------------------------------------- loc = Job.Index("/little="); if (loc > 0) { g.DoLittle = 1; loc1 = loc+strlen ("/little="); loc2 = Job.Index("/",loc+1); if (loc2 < 0) loc2 = len; g.LittleFileName = Job(loc1,loc2-loc1); printf("LITTLE_FILE : %s\n",g.LittleFileName.Data()); } //----------------------------------------------------------------------------- // flag controlling writing output of stripping //----------------------------------------------------------------------------- loc = Job.Index("/output="); g.OutputFileName = ""; if (loc > 0) { loc1 = loc+strlen ("/output="); loc2 = Job.Index("/",loc+1); if (loc2 < 0) loc2 = len; g.OutputFileName = Job(loc1,loc2-loc1); printf("OUTPUT_FILE : %s\n",g.OutputFileName.Data()); } //----------------------------------------------------------------------------- // saving the histograms //----------------------------------------------------------------------------- loc = Job.Index("/save="); g.HistFileName = ""; if (loc > 0) { loc1 = loc+strlen ("/save="); loc2 = Job.Index("/",loc+1); if (loc2 < 0) loc2 = len; g.HistFileName = Job(loc1,loc2-loc1); printf("HISTOGRAM_FILE: %s\n",g.HistFileName.Data()); } //----------------------------------------------------------------------------- // handle good run list ( use -x STNTUPLE_GRL=ETF,141544,156487 ) // use GRL only for non-MC jobs // finally allow to redefine GRL from the command line //----------------------------------------------------------------------------- const char *env, good_run_list[200]; TString s("none,1,300000"); env = gSystem->Getenv("STNTUPLE_GRL"); if (env != 0) s = env; loc = Job.Index("/grl="); // printf("loc= %i\n",loc); if (loc > 0) { loc1 = loc+strlen ("/grl="); loc2 = Job.Index("/",loc+1); if (loc2 < 0) loc2 = len; s = Job(loc1,loc2-loc1); // printf("s= %s\n",s.Data()); } s.ReplaceAll(","," "); sscanf(s.Data(),"%s %i %i",good_run_list,&g.MinRun,&g.MaxRun); g.GoodRunList = good_run_list; g.GoodRunList.ToUpper(); printf("GOOD RUN LIST : \"%s\" with run range %i-%i\n" ,g.GoodRunList.Data(),g.MinRun,g.MaxRun); //----------------------------------------------------------------------------- // check if specific L3 trigger path has been requested //----------------------------------------------------------------------------- g.L3TrigPath=gSystem->Getenv("L3_TRIG_PATH"); return 0; }