Skip to content
Snippets Groups Projects
Commit 4062241c authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'flake8_recexonline' into 'master'

RecExOnline: enable flake8, delete obsolete files

See merge request atlas/athena!39158
parents 7fb8dbdd 3f0fdc65
No related branches found
No related tags found
No related merge requests found
Showing
with 30 additions and 701 deletions
################################################################################
# Package: RecExOnline
################################################################################
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
# Declare the package name:
atlas_subdir( RecExOnline )
# Install files from the package:
atlas_install_python_modules( python/*.py )
atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
atlas_install_joboptions( share/*.py )
atlas_install_runtime( test/RecExOnline_TestConfiguration.xml share/RootHis*.C share/RecExOnline_Test*.C )
atlas_install_runtime( share/RecExOnline_Test*.C )
atlas_install_scripts( scripts/*.sh )
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
from __future__ import print_function
from future import standard_library
standard_library.install_aliases()
import subprocess
import ispy
......@@ -14,7 +9,7 @@ def GetAtlasReady():
r4p = ISObject(IPCPartition("ATLAS"), 'RunParams.Ready4Physics', 'RunParams')
r4p.checkout()
return r4p.ready4physics
except:
except Exception:
print ("#### Failed to determine if we are ready for physics")
raise
......@@ -33,15 +28,15 @@ def GetRunType():
partition = "ATLAS"
except KeyError:
partition = "ATLAS"
mlog.warning("TDAQ_PARTITION not defined in environment, using %s as default" % partition)
mlog.warning("TDAQ_PARTITION not defined in environment, using %s as default", partition)
#now try and read the information from IS
try:
from ipc import IPCPartition
from ispy import ISObject
ipcPart = IPCPartition(partition);
ipcPart = IPCPartition(partition)
if not ipcPart.isValid():
raise UserWarning("Partition %s invalid - cannot access run type settings" % partition);
raise UserWarning("Partition %s invalid - cannot access run type settings" % partition)
runparams = ISObject(ipcPart, 'RunParams.RunParams', 'RunParams')
runparams.checkout()
beamEnergy = runparams.beam_energy
......@@ -51,7 +46,7 @@ def GetRunType():
beamEnergy = None
projectTag = None
mlog.info("Setting project tag to %s" % projectTag)
mlog.info("Setting project tag to %s", projectTag)
return (None, beamEnergy, projectTag) # the BeamType in the IS RunParams is not useful for auto-configuration
def GetBFields():
......@@ -61,16 +56,16 @@ def GetBFields():
#BFields are read from initial partition
partition = 'initial'
mlog.debug("Trying to read magnetic field configuration from partition %s" % partition)
mlog.debug("Trying to read magnetic field configuration from partition %s", partition)
#now try and read the information from IS
try:
from ipc import IPCPartition
from ispy import ISObject
ipcPart = IPCPartition(partition);
ipcPart = IPCPartition(partition)
if not ipcPart.isValid():
raise UserWarning("Partition %s invalid - cannot access magnetic field setting" % partition);
raise UserWarning("Partition %s invalid - cannot access magnetic field setting" % partition)
#Get the current and valid status
# from ispy import ISObject
# torCurrent = ISObject(ipcPart, 'DCS_GENERAL.MagnetToroidsCurrent.value', 'DdcFloatInfo')
# solCurrent = ISObject(ipcPart, 'DCS_GENERAL.MagnetSolenoidCurrent.value', 'DdcFloatInfo')
# torInvalid = ISObject(ipcPart, 'DCS_GENERAL.MagnetToroidsCurrent.invalid', 'DdcIntInfo')
......@@ -107,8 +102,8 @@ def GetBFields():
sys.exit(1)
#print the result
mlog.info("Magnetic field in solenoid is %s" % ((solOn and "ON") or "OFF"))
mlog.info("Magnetic field in toroid is %s" % ((torOn and "ON") or "OFF"))
mlog.info("Magnetic field in solenoid is %s", ((solOn and "ON") or "OFF"))
mlog.info("Magnetic field in toroid is %s", ((torOn and "ON") or "OFF"))
#finally return our values
return (solCurrent, torCurrent)
......
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
"""
Draw comparison plots and statistical tables for each 2 histograms inside 2 data sets.
"""
import rootpy.ROOT as ROOT
from rootpy.plotting.hist import Hist
from rootpy.plotting.style import get_style, set_style
import rootpy.plotting.root2matplotlib as rplt
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.ticker
import itertools
import numpy as np
import pandas as pd
import re
from collections import defaultdict
import HistCompare.test_statistics as TS
import copy
from UnbinnedHist import UnbinnedHist
from hash_tool import HashTool
matplotlib.rcParams["text.usetex"]=True
matplotlib.rcParams['text.latex.preamble']=['\\usepackage{booktabs}']
def tree(): return defaultdict(tree)
#set_style('ATLAS',mpl=True)
def set_yaxis(ax, tick=None):
if tick == "%":
def to_percent(y, position):
s = format(100*y, '.1f')
if matplotlib.rcParams['text.usetex'] is True:
return s + r'$\%$'
else:
return s + '%'
formatter = matplotlib.ticker.FuncFormatter(to_percent)
ax.yaxis.set_major_formatter(formatter)
def identity(*x):
if len(x)==1:
return x[0]
return x
def formatted_plt_dict(plt_kw, length, **kwarg):
for i in range(length):
yield dict((key, val[i]) if np.iterable(val) else (key, val) for key, val in plt_kw.iteritems())
# keyword arguments for matplotlib.pyplot.text
TEXT_KW = {
"x": 0.94,
"y": 0.25,
"ha": "right",
"va": "center",
'zorder': 2}
# keyword arguments for auto_statistic_table
STATISTIC_TABLE_KW = {
"iterfunc": itertools.combinations,
"iterkey": {"r": 2},
"row_title_func": identity,
"col_title_func": identity,
"table_fformat": ".2e",
"text_kw": TEXT_KW}
# keyword arguments for matplotlib.pyplot.setp
AXES_KW = {
"ylim":(0,None)}
# keyword arguments for matplotlib.pyplot.plot
PLT_KW = {
"linewidth": 2,
"color": None,
'zorder': 1
}
def statistic_table_kw_func(ax):
statistic_table_kw = copy.deepcopy(STATISTIC_TABLE_KW)
statistic_table_kw["text_kw"].update({"axes": ax, "transform": ax.transAxes})
return statistic_table_kw
def auto_draw(hist_dict, cumulative = False, normalized = False, table = True, axes = None, frameon = True, cmap = plt.cm.brg, add_statistic_table_kw = {}, add_axes_kw = {}, add_plt_kw = {}):
"""
Draw comparison plots and statistical tables for each 2 histograms inside 2 data sets.
Parameters
----------
hist_dict : pandas dataframe
Input data. *hist_dict* Should have 2 *rootpy.plotting.Hist*/*UnbinnedHist* instances
in each row.
cumulative : bool, optional
If True, then a histogram is computed where each bin gives the counts in that bin plus all bins for smaller
values. The last bin gives the total number of datapoints. If normed is also True then the histogram is
normalized such that the last bin equals 1. If cumulative evaluates to less than 0 (e.g., -1), the direction
of accumulation is reversed. In this case, if normed is also True, then the histogram is normalized such that
the first bin equals 1.
normalized : bool, optional
If False, the result will contain the number of samples in each bin. If True, the result is the value of the
probability density function at the bin, normalized such that the integral over the range is 1.
table : bool, optional
If True, places a statistical table on each axes.
axes : list of matplotlib axis, optional, default : None
if provided, plot on these axes. Note *axes* should have the same number as *hist_dict*. i.e.::
>>> len(axes) = len(hist_dict)
frameon : bool, optional, default : True
If False, suppress drawing the figure frame
cmap : matplotlib.colors.Colormap instance or list of str, optional, default : plt.cm.brg
list of any matplotlib colors.
add_statistic_table_kw : dict, optional
Additional Keyword Arguments for ``statistic_table``
add_axes_kw : dict, optional
Additional Keyword Arguments for ``matplotlib.pyplot.setp``
add_plt_kw : dict, optional
dditional Keyword Arguments for ``matplotlib.pyplot.plot``
Returns
-------
[ax1, ax2, ...] : list
list of matplotlib axes
"""
if axes == None:
axes = [plt.axes() for _ in hist_dict if plt.figure(frameon=frameon)]
for ax, kind in zip(axes, hist_dict):
statistic_table_kw = statistic_table_kw_func(ax)
statistic_table_kw.update(add_statistic_table_kw)
axes_kw = AXES_KW
axes_kw.update(add_axes_kw)
plt_kw = PLT_KW
plt_kw.update(add_plt_kw)
if cmap:
plt_kw["color"] = cmap(np.linspace(0, 1, len(hist_dict)))
plt_dicts = formatted_plt_dict(plt_kw, len(hist_dict))
for (i, h), d in zip(hist_dict[kind].iteritems(), plt_dicts):
entries = h.entries
h_ = h.clone("New1")
if normalized:
h_.Scale(1./h_.Integral())
if cumulative:
arr = np.cumsum([bin.value for bin in h_ ])
h_.set_content(arr)
for key, val in d.iteritems():
setattr(h_,key,val)
rplt.hist(h_, label = "%s (%i)" % (statistic_table_kw["col_title_func"](i),entries), axes = ax)
########################################################################
if np.all([type(v)==UnbinnedHist for v in hist_dict[kind].values]) and cumulative:
data_all = np.concatenate(map(UnbinnedHist.get_raw_data, hist_dict[kind].values))
if normalized:
cdfs = [sorted(np.searchsorted(data.get_raw_data(), data_all, side='right')*1.0 / data.get_raw_data().shape[0]) for data in hist_dict[kind].values]
else:
cdfs = [sorted(np.searchsorted(data.get_raw_data(), data_all, side='right')) for data in hist_dict[kind].values]
for i, cdf, d in zip(hist_dict[kind].keys(), cdfs, plt_dicts):
plt.plot(sorted(data_all), cdf, label = "%s (%i)" % (statistic_table_kw["col_title_func"](i),entries), linestyle="--", axes = ax, **d)
########################################################################
ax.legend()
if table:
df = auto_statistic_table(hist_dict[kind], ax=ax, ret_table=False, ret_text=False, **statistic_table_kw)
if HASH.objs:
textkw = statistic_table_kw["text_kw"].copy()
text = ax.text(textkw.pop("x"), textkw.pop("y"), df[0].to_latex(escape=False, sparsify=False, index_names=False).replace("\n",""), **textkw)
ax.set_xlabel(kind, fontsize=25)
plt.setp(ax, **axes_kw)
if normalized:
ax.set_ylim(0,1)
set_yaxis(ax,tick='%')
if not cumulative:
ax.set_ylabel("Events", fontsize=25)
else:
ax.set_ylabel("Cumulative Events", fontsize=25)
return axes
HASH = HashTool('hist_dict', ret_table=True)
@HASH
def auto_statistic_table(hist_dict, ax=None, ret_table=True, ret_text=True, **statistic_table_kw):
"""Compute statistic tables for the 2 histograms in each row of *hist_dict*.
Parameters
----------
hist_dict : pandas dataframe
Input data. *hist_dict* Should have 2 *rootpy.plotting.Hist*/*UnbinnedHist* instances
in each row.
ax : matplotlib axis, optional, default : None
if provided, plot on this axis
statistic_table_kw : dict, optional
Other keyword arguments
ret_table : bool, optional, default : True
If True, returns the formatted table in *list* form.
ret_text : bool, optional, default : True
If True, returns the formatted table in *latex* form.
Returns
-------
[text[, table]] : list
depending on *ret_table* and *ret_text*, returns a list with required inside.
"""
header = ["Type of Test", "Bin", "T","P","NDF","Description"]
df_ = pd.DataFrame()
textkw = statistic_table_kw["text_kw"].copy()
for (nA,A),(nB,B) in statistic_table_kw["iterfunc"](hist_dict.iteritems(), **statistic_table_kw["iterkey"]):
A_Arr_Binned = np.array([bin.value for bin in A.bins()])
B_Arr_Binned = np.array([bin.value for bin in B.bins()])
bin_str = A_Arr_Binned.shape[0]
Table=[#["$\chi^2$ Absolute Comparison", bin_str] + list(TS.chi2_2samp(A_Arr_Binned, B_Arr_Binned, normed=False, binned=True)) + ["Scipy + Modificatoin"],
["$\chi^2$ Shape Comparison",bin_str] + list(TS.chi2_2samp(A_Arr_Binned, B_Arr_Binned, normed=True, binned=True)) + ["Scipy + Modificatoin"],
["",bin_str, A.Chi2Test(B,"WW CHI2"), A.Chi2Test(B,"WW"),'',"ROOT"],
["Likelihood Ratio Shape Comparison",bin_str]+list(TS.likelihoodratio_ksamp(A_Arr_Binned, B_Arr_Binned))+["Scipy + Modification"],
#["Likelihood Value Shape Comparison",bin_str]+list(TS.likelihoodvalue_ksamp(A_Arr_Binned, B_Arr_Binned))+["Scipy + Modification"],
#["BDM Shape Comparison",bin_str] + list(TS.BDM_2samp(A_Arr_Binned, B_Arr_Binned))+["Scipy + Modification"],
["K-S Shape Comparison",bin_str] + list(TS.ks_2samp(A_Arr_Binned,B_Arr_Binned,binned=True))+ ["SciPy + Modification"],
["",bin_str,A.KolmogorovTest(B,"M"), A.KolmogorovTest(B), '',"ROOT"],
["A-D Shape Comparison",bin_str] + list(TS.anderson_ksamp(A_Arr_Binned, B_Arr_Binned, binned=True)) + ["Scipy + Modification"],
["CVM Shape Comparison",bin_str] + list(TS.CVM_2samp(A_Arr_Binned, B_Arr_Binned, binned=True)) + ["Matlab"]]
if type(A)==UnbinnedHist and type(B)==UnbinnedHist:
Table.insert(8, ["","Unbinned"] + list(TS.ks_2samp(A.get_raw_data(), B.get_raw_data(), binned=False)) + ["SciPy + Modification"])
Table.insert(10, ["","Unbinned"] + list(TS.anderson_ksamp(A.get_raw_data(), B.get_raw_data(), binned=False)) + ["Scipy"])
Table.insert(12, ["","Unbinned"] + list(TS.CVM_2samp(A.get_raw_data(), B.get_raw_data(), binned=False)) + ["Matlab"])
df=pd.DataFrame(Table, columns=header)
df["T/P"] = map(lambda tp: "/".join(["%"+statistic_table_kw["table_fformat"]]*2)%(tp[0],tp[1]), zip(df["T"],df.P))
df_ = df[header]
text = ax.text(textkw.pop("x"), textkw.pop("y"), df_.to_latex(escape=False, sparsify=False, index_names=False).replace("\n",""), **textkw)
result = []
if ret_text:
result.append(text)
if ret_table:
result.append(df_)
return result
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
import inspect
import warnings
import numpy as np
import sys
class HashTool:
def __init__(self, *args, **parse):
......
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
from scipy.stats import rv_discrete
import test_statistics as TS
import numpy as np
import warnings
# If True, import IPyParallel package to do the parallel computation.
# And if IPyParallel is not installed, automatically turns it False.
......@@ -121,7 +120,7 @@ def power_of_test(data1, data2, rvs_func = 'rvs_pairs', tests = ['chi2_2samp'],
[p1, p2, ...] : 1-D array
The corresponding p-values for each histogram pairs.
"""
if parallel == None: parallel = PARALLEL
if parallel is None: parallel = PARALLEL
if parallel:
try:
global client
......@@ -131,7 +130,7 @@ def power_of_test(data1, data2, rvs_func = 'rvs_pairs', tests = ['chi2_2samp'],
jobs = []
for i in range(N):
rvs_key['size'] = (size//N + 1) if (i < size % N) else size//N
jobs.append(client[client.ids[i]].apply_async(power_of_test, data1, data2, rvs_func, test, rvs_key, test_key, False))
jobs.append(client[client.ids[i]].apply_async(power_of_test, data1, data2, rvs_func, tests, rvs_key, test_key, False))
ars = client._asyncresult_from_jobs(jobs)
if sync:
ars.wait_interactive()
......
# -*- coding: utf-8 -*-
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
"""
Test statistic functions.
"""
......@@ -8,6 +8,7 @@ import numpy as np
import scipy.stats
import scipy.interpolate
import scipy.special
import statsmodels.api as sm
import warnings
import distributions as distr
from sympy import binomial, log
......@@ -94,7 +95,7 @@ def ks_2samp(data1, data2, binned=False):
(0.07999999999999996, 0.41126949729859719)
"""
if binned == True:
if binned is True:
cdf1 = np.cumsum(data1)
cdf2 = np.cumsum(data2)
n1 = cdf1[-1]
......@@ -106,7 +107,7 @@ def ks_2samp(data1, data2, binned=False):
n1 = data1.shape[0]
n2 = data2.shape[0]
ndf = float("nan")
if binned == False:
if binned is False:
data1 = np.sort(data1)
data2 = np.sort(data2)
data_all = np.concatenate([data1, data2])
......@@ -129,7 +130,7 @@ def ks_2samp(data1, data2, binned=False):
en = np.sqrt(n1 * n2 / float(n1 + n2))
try:
prob = scipy.stats.distributions.kstwobign.sf((en + 0.12 + 0.11 / en) * d)
except:
except Exception:
prob = 1.0
if DEBUG:
global statistic_seq
......@@ -169,7 +170,7 @@ def chi2_2samp(data1, data2, normed=True, binned=True):
This code is modified from scipy.stats.chisquare and extended with supporting on
2 sample cases and shape comparison test.
"""
if binned == True:
if binned is True:
filter = ~((data1 == 0.) & (data2 == 0.))
data1 = data1[filter]
data2 = data2[filter]
......@@ -385,7 +386,7 @@ def _anderson_ksamp_right(samples, Z, Zstar, k, n, N):
A2kN = 0.
lj = Z.searchsorted(Zstar[:-1], 'right') - Z.searchsorted(Zstar[:-1], 'left')
Bj = lj.cumsum()
for i in arange(0, k):
for i in range(0, k):
s = np.sort(samples[i])
Mij = s.searchsorted(Zstar[:-1], side='right')
inner = lj / float(N) * (N * Mij - Bj * n[i])**2 / (Bj * (N - Bj))
......
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
import ROOT
import numpy as np
import warnings
def fill_branch_by_arr(filename ,treename, list_of_branchname, list_of_entrylist):
of = ROOT.TFile(filename, 'update')
if of.GetListOfKeys().Contains(treename):
t = of.Get(treename)
warnings.warn('%r exsists.' % t, Warning)
else:
t = ROOT.TTree(treename, treename)
for branchname, entrylist in zip(list_of_branchname, list_of_entrylist):
t.SetEntries(entrylist.size)
address = np.zeros(1, 'float32')
br = t.Branch(branchname, address, branchname+'/F')
for en in entrylist:
address[0] = en
br.Fill()
of.Write("", 2)
of.Close()
\ No newline at end of file
# -*- coding: utf-8 -*-
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
from collections import defaultdict
import numpy as np
def tree(key_wrapper = None):
......@@ -15,10 +15,10 @@ def get_array(hist):
arr.SetSize(hist.GetNbinsX() + 2)
return np.fromiter(arr, np.float)
TAIL = lambda s: u' └── {} '.format(s)
BRANCH = lambda s: u' ├── {} '.format(s)
LINE = lambda s: u' │ {} '.format(s)
SPACE = lambda s: u' {} '.format(s)
TAIL = lambda s: u' └── {} '.format(s) # noqa: E731
BRANCH = lambda s: u' ├── {} '.format(s) # noqa: E731
LINE = lambda s: u' │ {} '.format(s) # noqa: E731
SPACE = lambda s: u' {} '.format(s) # noqa: E731
class TreeDict(defaultdict):
def __init__(self, dic = {}, key_wrapper=None):
super(defaultdict,self).__init__(dic)
......
#include <iostream>
#include <string>
#include <fstream>
#include "TH1F.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TSystem.h"
#include "TKey.h"
void RootHis_RTT()
{
TFile *file = new TFile("Monitor.root");
// TH1F *h1_AK4LCTTopoJetsPt= (TH1F*)gDirectory->FindObjectAny("Jets/AntiKt4LCTTopoJets/pt");
TH1F *h1_AK4LCTTopoJetsPt= (TH1F*)gDirectory->FindObjectAny("pt");
TCanvas *c1 = new TCanvas("c1", "GIF Canvas", 400, 300);
h1_AK4LCTTopoJetsPt->Draw("HistE");
c1->Print("AK4LCTTopoJetsPt.png");
}
theApp.EvtMax = 5
<?xml version="1.0"?>
<!-- MB: Search for RUNNUMBER to replace the run input collections and setting -->
<!-- MB: xml file validation: http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/onlineValidation/validator.html -->
<!-- <!DOCTYPE unifiedTestConfiguration SYSTEM "https://test-rtt.web.cern.ch/test-rtt/brinick/Results/unifiedTestConfiguration.dtd"> --> <!-- xmltest -->
<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> <!-- official -->
<!-- A test version -->
<unifiedTestConfiguration>
<atn/>
<kv/>
<rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt">
<rttContactPerson>Yun-Ju Lu</rttContactPerson>
<mailto>yunju@cern.ch</mailto>
<refRelease>20.1.X.Y</refRelease>
<jobList>
<chain>
<chainName>OfflineChainJob</chainName>
<sequential>
<chainElement>
<jobTransform userJobId="RecExOnline_User_Offline_test_v1">
<doc>Recexonline test</doc>
<jobTransformJobName>First_RecexOnline_test</jobTransformJobName>
<jobTransformCmd>
athena.py -c "inpuevtMax=850" RecExOnline/RecExOnline_User_Offline.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<queue>medium</queue>
<!--
<test>
<modulename>RttLibraryTools</modulename>
<testname>FileGrepper</testname>
<arg>
<fileGrepperArgs>
<fileGrepperInputFile>*v1_log</fileGrepperInputFile>
<fileGrepperSearchPattern>
<fileGrepperPattern>Number of events processed</fileGrepperPattern>
</fileGrepperSearchPattern>
</fileGrepperArgs>
</arg>
</test>
<test>
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RootHis_RTT.C</argvalue>
</arg>
</test>
<test>
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT.C</argvalue>
</arg>
</test>
-->
<test position="1">
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT_Cpp_rename.C</argvalue>
</arg>
</test>
<alwaysRunPostProc />
</jobTransform>
<chainfileout>Monitor.root</chainfileout>
</chainElement>
<chainElement>
<jobTransform userJobId="RTTAlgs">
<doc>RTTAlgs</doc>
<jobTransformJobName>RTTAlgs</jobTransformJobName>
<jobTransformCmd>
athena.py RecExOnline/RTTAlgmain.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<chaindataset_info>
<jobTransformData />
<chaindatasetName>Monitor.root</chaindatasetName>
<!-- If the file on the previous line is not in the chain store, then use the following fallback file. -->
<dataset_info>
<jobTransformData />
<datasetName>/afs/cern.ch/user/y/yunju/working/yunju/public/GM_ref_plots/Monitor.root</datasetName>
</dataset_info>
</chaindataset_info>
<testToRemove>
<jobGroupName>AthenaRecExOnline_Test</jobGroupName>
<testidentifier>FileGrepperprocessed</testidentifier>
</testToRemove>
<alwaysRunPostProc />
</jobTransform>
</chainElement>
<chainElement>
<jobTransform userJobId="ohp_hispathcheck">
<doc>ohp_hispathcheck</doc>
<jobTransformJobName>ohp_hispathcheck</jobTransformJobName>
<jobTransformCmd>
athena.py RecExOnline/Rtt_histogram.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<testToRemove>
<jobGroupName>AthenaRecExOnline_Test</jobGroupName>
<testidentifier>FileGrepperprocessed</testidentifier>
</testToRemove>
<alwaysRunPostProc />
</jobTransform>
</chainElement>
</sequential>
</chain>
<jobTransform userJobId="Online_reconstruction_autoconfiguration_test_v1">
<doc>Recexonline test Online_reconstruction_autoconfiguration</doc>
<jobTransformJobName>Online_reconstruction_autoconfiguration_test_v1</jobTransformJobName>
<jobTransformCmd>
athena.py -c "REO_doAutoConfiguration=True" RecExOnline/RecExOnline_User_Offline_isOnlineTrue.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<queue>medium</queue>
<test position="1">
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT_Cpp_Online.C</argvalue>
</arg>
</test>
<alwaysRunPostProc />
</jobTransform>
<jobTransform userJobId="Online_reconstruction_autoconfiguration_False_test_v1">
<doc>Recexonline test Online_reconstruction_autoconfiguration_False</doc>
<jobTransformJobName>Online_reconstruction_autoconfiguration_False_test_v1</jobTransformJobName>
<jobTransformCmd>
athena.py -c "REO_doAutoConfiguration=False" RecExOnline/RecExOnline_User_Offline_isOnlineTrue.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<queue>medium</queue>
<test position="1">
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT_Cpp_Online.C</argvalue>
</arg>
</test>
<alwaysRunPostProc />
</jobTransform>
<jobTransform userJobId="Online_reconstruction_autoconfiguration_False_cosmics_test_v1">
<doc>Recexonline test Online_reconstruction_autoconfiguration_False_cosmics</doc>
<jobTransformJobName>Online_reconstruction_autoconfiguration_False_cosmics_test_v1</jobTransformJobName>
<jobTransformCmd>
athena.py -c "REO_doAutoConfiguration=False; beamType='cosmics'" RecExOnline/RecExOnline_User_Offline_isOnlineTrue.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<queue>medium</queue>
<test position="1">
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT_Cpp_Online.C</argvalue>
</arg>
</test>
<alwaysRunPostProc />
</jobTransform>
<jobTransform userJobId="RTTTool_test_v1">
<doc>RTTTool_test_v1</doc>
<jobTransformJobName>RTTTool_test_v1</jobTransformJobName>
<jobTransformCmd>
athena.py RecExOnline/SimpleJobOptions_ForRTT.py
</jobTransformCmd>
<group>RecExOnline_Test</group>
<testToRemove>
<jobGroupName>AthenaRecExOnline_Test</jobGroupName>
<testidentifier>FileGrepperprocessed</testidentifier>
</testToRemove>
<alwaysRunPostProc />
</jobTransform>
</jobList>
<jobGroups>
<jobGroup name="AthenaRecExOnline_Test" parent="Athena">
<keepFilePattern>*.root</keepFilePattern>
<keepFilePattern>*.png</keepFilePattern>
<keepFilePattern>testlog*.log</keepFilePattern>
<keepFilePattern>RTTAlg.html</keepFilePattern>
<keepFilePattern>P1MON_RTT_result_template_v1.html</keepFilePattern>
<auxFilePattern>RootHis*.C</auxFilePattern>
<auxFilePattern>RecExOnline_Test*.C</auxFilePattern>
<auxFilePattern>RecExOnline_Test_Obj_His_RTT.C</auxFilePattern>
<auxFilePattern>RecExOnline_Test_Obj_His_RTT_CINT.C</auxFilePattern>
<!--
<action>
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT.C</argvalue>
</arg>
</action>
<action>
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT_CINT.C</argvalue>
</arg>
</action>
<action>
<modulename>RttLibraryTools</modulename>
<testname>ROOTMacroRunner</testname>
<arg>
<argname>macro</argname>
<argvalue>RecExOnline_Test_Obj_His_RTT_CINT.C</argvalue>
</arg>
</action>
-->
<test position="2">
<modulename>RttLibraryTools</modulename>
<testname>FileGrepper</testname>
<testidentifier>FileGrepperprocessed</testidentifier>
<arg>
<argname>inputFile</argname>
<argvalue>*v1_log</argvalue> <!-- put this one if you use job log -->
</arg>
<arg>
<argname>outputFile</argname>
<argvalue>testlogprocessed.log</argvalue>
</arg>
<arg>
<argname>searchList</argname>
<argvalue>Number of events processed</argvalue> <!-- put here the string you should find to mean all ok -->
</arg>
</test>
<test position="3">
<modulename>RttLibraryTools</modulename>
<testname>FileGrepper</testname>
<testnegate />
<testidentifier>FileGrepperERROR3</testidentifier>
<arg>
<argname>inputFile</argname>
<argvalue>*v1_log</argvalue> <!-- put this one if you use job log -->
</arg>
<arg>
<argname>outputFile</argname>
<argvalue>testlogError.log</argvalue>
</arg>
<arg>
<argname>searchList</argname>
<argvalue>ERROR</argvalue> <!-- put here the string you should find to mean all ok -->
</arg>
<noalarm />
</test>
<test position="4">
<modulename>RttLibraryTools</modulename>
<testname>FileGrepper</testname>
<testidentifier>FileGrepperERROR4</testidentifier>
<arg>
<argname>inputFile</argname>
<argvalue>*v1_log</argvalue> <!-- put this one if you use job log -->
</arg>
<arg>
<argname>outputFile</argname>
<argvalue>testlogError2.log</argvalue>
</arg>
<arg>
<argname>searchList</argname>
<argvalue>ERROR</argvalue> <!-- put here the string you should find to mean all ok -->
</arg>
<noalarm />
</test>
<test position="5">
<modulename>RttLibraryTools</modulename>
<testname>FileGrepper</testname>
<testnegate />
<testidentifier>FileGrepperFATAL</testidentifier>
<arg>
<argname>inputFile</argname>
<argvalue>*v1_log</argvalue> <!-- put this one if you use job log -->
</arg>
<arg>
<argname>outputFile</argname>
<argvalue>testlogFATAL.log</argvalue>
</arg>
<arg>
<argname>searchList</argname>
<argvalue>FATAL</argvalue> <!-- put here the string you should find to mean all ok -->
</arg>
</test>
<test position="6">
<modulename>RttLibraryTools</modulename>
<testname>FileGrepper</testname>
<testnegate />
<testidentifier>FileGrepperTraceback</testidentifier>
<arg>
<argname>inputFile</argname>
<argvalue>*v1_log</argvalue> <!-- put this one if you use job log -->
</arg>
<arg>
<argname>outputFile</argname>
<argvalue>testlogTraceback.log</argvalue>
</arg>
<arg>
<argname>searchList</argname>
<argvalue>Traceback</argvalue> <!-- put here the string you should find to mean all ok -->
</arg>
<noalarm />
</test>
<testToRemove>
<jobGroupName>RTT:Top</jobGroupName>
<testidentifier>CheckFileRunner0</testidentifier>
</testToRemove>
<testToRemove>
<jobGroupName>RTT:Athena</jobGroupName>
<testidentifier>Athena_FileGrepper</testidentifier>
</testToRemove>
</jobGroup>
</jobGroups>
</rtt>
</unifiedTestConfiguration>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment