
jetmonmanager seems to have really bad scaling behaviour under pileup, and at mu=40 (in ttbar mc) it uses ~350 ms/evt:

https://atlas-pmb.web.cern.ch/atlas-pmb/temp/pileup_sep2011_details/#plot22

to help investigate this a bit further, here is a callgrind file (gunzip and then open and investigate with &quot;kcachegrind&quot;) of just the dq monitoring algs in the rawtoesd eventloop:

http://atlas-pmb.web.cern.ch/atlas-pmb/temp/callgrind_mu40ttbar_oct5/run_dqmon_rawtoesd_callgrind.out.1238.gz

a quick glance tells me that 2/3 of the jet monitoring time is spent in jetrecmontoolbase::isgoodjet, with most time spent in the two calls to jetcaloqualityutils::jetquality(..) and jetcaloqualityutils::jettimecells(..).

several points, (#1 and #5 likely to affect performance most, the others just other issues i noticed after a quick glance):

1) are you sure you are only calling this method exactly once per event for a given jet? if not, perhaps the problem can be solved with caching.

2) why is such a hugh method inlined? it should be in the .cxx.

3) why is the library dual_use and not components?

4) i see unprotected debug messages.

5) i see a hardcoded &quot;recalculatequantities = true;&quot; which results in the calls to the jetquality and jettimecells methods.

6) in the copyvectors method just below, a reserve call should be added.

cheers,
thomas