CMS Description
CMS Maintenance and Improvements (Driven by DanK)
- CMS uses some old data - how to update that
- CMS has some older version of the ROOT script, how to update it
- the OGRE UI needs to be updated
Ways to empower Dan Karmgard:
- access to the CVS
- testing environment for Dan (maybe a virtual machine with the CMS installed)
- discuss and document a clean interface between the UI, the ROOT part, and the GRID compoment
The Making of a Grid-Enabled CMS
Start with the Root scripts: extract the script from the original CGI-BIN, and document its inputs, its outputs, and its dependencies
- inputs: some parameters from the from that invokes the CGI get embedded into the Root script
- outputs: a plot file with a well-known name (depending on one input variable), and a raw data (text file)
- dependencies: the tb.data archives that contain pre-recorded physics experiments, used in the CMS elab
Create a swift workflow that produces the same results as the CGI-BIN:
- write the workflow
- install the remote components on the selected grid sites:
- install Root
- install the data dependencies (tb,data)
- execute the workflow from the command line, with the proper parameters
Integrate the workflow into the ELabs portal
- use the jsp pages and the java classes that Mihael developed to include transparently the stand-alone workflow into the portal
- the cms-vdl2/src/jsp/ogre-new.jsp (from CVS) is the part that builds up the user interface
- the FORM ACTION points to the code in cms-vdl2/src/jsp/ogreProcess.jsp (from CVS) Here a workflow object is created and initialized with the relevant workflow (the one illustrated below), then the user is forwarded to the workflowStart.jsp which triggers the workflow execution
- link the output from the workflow running Root to the output pages in the portal (embed the plot file)
- once the workflow finished executing ROOT, the output files are brought back to the local directory, which I made sure to be web-visible, then the window that is supposed to display the results will simply embed the plots produced by root
The Grid Workflow
type file {}
(file t, file o) rootInvoke (file s) {
app {
rootInvoke @filename(s) stdout=@filename(o);
}
}
file script<fixed_mapper; file=@arg("scriptFile")>;
file img <fixed_mapper; file=@arg("outputFile")>;
file out <fixed_mapper; file=@arg("rawOutData")>;
(img,out) = rootInvoke(script);
//img,out = root("-b -q -l -n /home/tiberius/local/OGRE/script-tibi.c");
The Grid Resources setup
They determine where the Root script will run
These can be found on www12.i2u2.org, in /var/tmp/quarknet-m/tomcat/webapps/elab/cms/output, under ./etc and ./var
sites.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated Wed Aug 17 15:17:52 PDT 2005-->
<!--Generated by gmehta [US] -->
<config xmlns="http://www.griphyn.org/chimera/GVDS-PoolConfig" xsi:schemaLocation="http://www.griphyn.org/chimera/GVDS http://www.griphyn.org/chimera/gvds-poolcfg-1.5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.5">
<pool handle="localhost" sysinfo="INTEL32::LINUX">
<gridftp url="local://localhost" storage="/home/mike/work/i2u2/tmp" major="1" minor="0" patch="0"/>
<jobmanager universe="vanilla" url="local://localhost" major="1" minor="0" patch="0"/>
<workdirectory>/sandbox/hategan/vdlworkdir</workdirectory>
</pool>
<pool handle="evitable" sysinfo="INTEL32::LINUX" gridlaunch="/autonfs/home/tiberius/local/vds-1.4.7cvs/bin/kickstart">
<lrc url="rlsn://evitable.ci.uchicago.edu"/>
<gridftp url="gsiftp://evitable.ci.uchicago.edu" storage="/home/tiberius" major="2" minor="4" patch="3"/>
<jobmanager universe="vanilla" url="evitable.ci.uchicago.edu/jobmanager-condor" major="2" minor="4" patch="3" />
<jobmanager universe="transfer" url="evitable.ci.uchicago.edu/jobmanager-fork" major="2" minor="4" patch="3"/>
<workdirectory>/home/tiberius</workdirectory>
</pool>
</config>
tc.data:
evitable rootInvoke /home/tiberius/local/OGRE-v2/rootInvoke.sh INSTALLED INTEL32::LINUX null
{
gROOT->Reset();
TCanvas *canvas = new TCanvas("c1","",800,600);
canvas->Divide(1,2);
TChain *chain = new TChain("Event");
chain->Add("/home/tiberius/local/tbdata/r11001.root");
chain->Add("/home/tiberius/local/tbdata/r11002.root");
c1_1->cd();
chain->SetFillColor(0);
chain->Draw("cluster.c1x1.e", NULL, NULL);
htemp->GetXaxis()->SetTitle("E (GeV)");
htemp->GetYaxis()->SetTitle("Number of Events");
htemp->SetTitle("Total Energy (1x1)");
c1_2->cd();
chain->SetFillColor(0);
chain->Draw("cluster.c1x1.ee", NULL, NULL);
htemp->GetXaxis()->SetTitle("E (GeV)");
htemp->GetYaxis()->SetTitle("Number of Events");
htemp->SetTitle("Ecal Energy (1x1)");
canvas->cd();
canvas->Update();
canvas->SaveAs("canvas-0.709243756044679.png");
chain->SetScanField(chain->GetEntries()+1);
chain->Scan("cluster.c1x1.e:cluster.c1x1.ee");
}
-- Main.TiberiuStefPraun - 29 May 2007