Tuesday 7th November 2006

Attempting to integrate James' monitoring code in TrigT2InDetMonitoring into the online. This essentially means adding the monitoring algorithm into TopOptions_ReadBS_Egamma_Slice.py, and then testing with athena_MT

To start:

cmt co Trigger/TrigAlgorithms/TrigT2InDetMonitoring
gets version 00-00-07
cd Trigger/TrigAlgorithms/TrigT2InDetMonitoring/cmt
source ./setup.sh 
gmake 
Makes OK, no errors.

Note that we run from the directory called "run" these days and we are now using this checked out package automatically without having to add anything to a req file. After the gmake, have an install area.

cd to the run dir, copy the TopOptions_ReadBS_Egamma_Slice.py in which James has tried to add the monitoring algorithm

cp ~baines/releases/monitoring/testarea/rel_1/run/TopOptions_ReadBS_Egamma_Slice.py TopOptions_ReadBS_Egamma_Slice_moni.py
also get the default file
get_files -copy TopOptions_ReadBS_Egamma_Slice.py
diff them - very different, since I am in 12.0.3 and the nightly is much newer now (12.0.4 or something else).

I guess I need to do all of the following for the latest version, but for now stick to 12.0.3

I need to add to the TopOptions in the "LVL2 Egamma ID algorithms" section

theApp.Dlls += [ "TrigT2InDetMonitoring" ]
include( "TrigT2InDetMonitoring/jobOfragment_TrigInDetTrack_InDetTrack.py" )
Try and run it...
athena.py TopOptions_ReadBS_Egamma_Slice.py &> log

The job runs but I see nothing from the monitoring. It seems I need to add something in the xml that the TopOptions reads.

Get the file "HLTsequenceEgammaSlice.xml". This xml defines the chain - made of sequences (algos). Note that it contains all sequences for L2 and EF, i.e. for athena running. For mt its "HLTsequenceL2Egamma.xml" and for pt its "HLTsequenceEFEgamma.xml" - these contain just the L2 and just the EF sequences, respectively.

Within the chain of L2 and EF algos, you see each algo takes some input, runs the algo on it, and passes the output as the input to the next sequence in the chain. These inputs and outputs are the trigger elements. At the start you see the first input trigger element as EM01 which is some L1 output I guess. After all the L2 algos are applied, the final output is l2_e10, which is the input to the EF, etc.

  • It seems odd that we are going to add the monitoring in series to the L2 algs - it takes an input, does the monitoring (executes the alg) and passes output to next stage - but output is unchanged, by definition we are only monitoring things. More natural would be to run somehow in parallel rather than in series like this but perhaps this is the only way to do it?.

The problem seems to be getting the sequence recognised. There are some notes on this at https://twiki.cern.ch/twiki/bin/view/Atlas/TriggerConfigXML but it doesn't make much sense. Make some investigation:

  • Lets consider the first sequence
<SEQUENCE level="L2" input="EM01" algorithm="T2CaloEgamma/T2CaloEgamma/g4" output="teL2em10cl" />
See how the naming is derived:

  • There is a package called TrigT2CaloEgamma, and in here there is some src code called T2CaloEgamma.cxx
  • There is a jO fragment called jobOfragment_TrigT2CaloEgamma.py which is included from the TopOptions
  • In the jO I see T2CaloEgamma_g4_L2 = Algorithm( "!T2CaloEgamma_g4_L2" )

  • Now look at the third sequence:
<SEQUENCE level="L2" input="teL2em10clhy" algorithm="TrigIdScan::IdScanMain/IdScan/Egamma" output="teL2em25trIDSCAN" />
  • The package is TrigIDScan with .cxx IdScanMain.cxx
  • The jO fragment is jobOfragment_TrigIDSCAN_Egamma.py
  • The jO defines IdScan_Egamma_L2 = Algorithm( "!IdScan_Egamma_L2" )

So, lets try James package by analogy:

  • package = TrigT2InDetMonitoring with cxx code for example TrigInDetTrackMoni.cxx
  • jobOfragment_TrigInDetTrack_InDetTrack.py
  • jO defines T2IDMoni_TrigInDetTrack_L2 = Algorithm( "!T2IDMoni_TrigInDetTrack_L2" )

This seems inconsisent with others as T2IDMoni is not the package name or the algo name...

I guess anyway the new sequence may fit as:

<SEQUENCE level="L2" input="teL2em25trIDSCAN" algorithm="TrigSiTrack/TrigSiTrack/HighPtSingle" output="teL2em25trSiTrack" />
<SEQUENCE level="L2" input="teL2em25trSiTrack" algorithm="TrigInDetTrackMoni/TrigT2InDetMonitoring/TrigInDetTrack" output="teL2em25trSiTrackmon
<SEQUENCE level="L2" input="teL2em25trSiTrackmon" algorithm="TrigTRTxK/TRTxK/param" output="teL2em25trTRTxK" />

Try and run... fails...

System::doLoad: ERROR: libTrigInDetTrackMoni.so: cannot open shared object file: No such file or directory
In fact I have the library libTrigT2InDetMonitoring.so instead, as specified in the req file of the monitoring package, and loaded as a library in the jOfragment

Wednesday 8th November 2006

As a test try

<SEQUENCE level="L2" input="teL2em25trSiTrack" algorithm="ALibrary/TrigT2InDetMonitoring/TrigInDetTrack" output="teL2em25trSiTrackmon" />
and as suspected I see
System::doLoad: ERROR: libALibrary.so: cannot open shared object file: No such file or directory
So I must need
<SEQUENCE level="L2" input="teL2em25trSiTrack" algorithm="TrigT2InDetMonitoring/TrigT2InDetMonitoring/TrigInDetTrack" output="teL2em25trSiTrackmon" />
Now it finds the library but
DEBUG algorithm    : TrigT2InDetMonitoring/TrigT2InDetMonitoring/TrigInDetTrack
AlgorithmManager                                  ERROR Not found entry point
StepSequencer_L2                                  FATAL TrigT2InDetMonitoring/TrigT2InDetMonitoring/TrigInDetTrack sub-algorithm create failed!
By further comparison to IDScan: the algo here is IDScanMain, within the IDScan namespace. The namespace of the monitoring is TrigInDetMoni which does not seem to relate to anything - does it have to?

I change it to TrigT2InDetMonitoring and remake the package.

Also now use

<SEQUENCE level="L2" input="teL2em25trSiTrack" algorithm="TrigT2InDetMonitoring::TrigInDetTrackMoni/TrigT2InDetMonitoring/TrigInDetTrack" output="teL2em25trSiTrackmon" />
and set the jO fragment to
T2InDetMonitoring_TrigInDetTrack_L2 = Algorithm( "T2InDetMonitoring_TrigInDetTrack_L2" )
...now it runs!!!

It would make sense to rename the joboptions from

jobOfragment_TrigInDetTrack_InDetTrack.py    
jobOfragment_TrigInDetVertex_InDetVertex.py   
jobOfragment_TrigSiSpacePoint_SiSpacePoint.py 
to
obOfragment_TrigT2InDetMonitoring_InDetTrack.py
jobOfragment_TrigT2InDetMonitoring_InDetVertex.py
jobOfragment_TrigT2InDetMonitoring_SiSpacePoint.py
to be consistent with the IDScan naming

Have to change the include in the TopOptions

Also, remove Trig from TrigInDetTrack to give

<SEQUENCE level="L2" input="teL2em25trSiTrack" algorithm="TrigT2InDetMonitoring::TrigInDetTrackMoni/TrigT2InDetMonitoring/InDetTrack" output="teL2em25trSiTrackmon" />

  • It works now - but the rules on the naming of the sequence and of the algo are not that clear to me - I just made it consistent with IDScan

Now, try and run with athena_MT...

-- PaulBell - 07 Nov 2006

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r5 - 2006-11-08 - PaulBell
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback