Adding RawToDigi to your HLT paths

Complete: 4

Overview

In order to ultimately measure the time spent in converting raw data to digis in the HLT we need to insert raw->digi modules into existing HLT paths. As the raw->digi conversion should happen as late as possible in each path to minimize the number of times the unpacking is needed, this requires some expert work.

There are two steps needed to switch from using the Digis from the MC file to those created by digi->raw (followed by raw->digi):

  1. Insert digi->raw, raw->digi sequences into your HLT paths.
  2. You can then switch from using the digis in the MC file to those generated by the raw->digi modules.

Status in 1_7_0_pre11

The table below summarizes progress up to the current 1_7_0 prerelease:

Subsystem Status in 1_7_0_pre11+tags Comments Developer Contact
Subsystem Status in 1_7_0_pre11+tags Comments Developer Contact
SiPixel OK   Marcin Konecki
SiStrip OK   Rob Bainbridge, Matt Wingham
Ecal OK   Nuno Almeida, Emmanuelle Perez
Preshower OK   Chia-Ming Kuo
Hcal OK   Jeremy Mans
CSC OK   Alex Tumanov
DT OK   Jesus Manuel Vizan Garcia
RPC OK   Marcin Konecki, Joanna Zalipska
GCT OK All digis (EM, Jet, ET, count) available Rob Frazier
GT OK   Vasile Ghete

PLEASE NOTE: Any tags needed on top of 1_7_0_pre11 are listed on the SWGuideGlobalHLT twiki page.

For all subsystems above, results were validated using 1000 GEN+SIM TTbar events created in 1_7_0_pre6. With these files as input, I ran CMS.RelVal_Digi_Digi2Raw.cfg and CMS.RelVal_HLTFromRaw.cfg (saving both initial and "unpacked" digis). For all events, the input digis are compared (digi by digi), to verify that digis IN == digis OUT.

Status in 1_6_1

For 1_6_1, the release validation was performed on a 1000 event QCD sample. Results were compared for the initial digis (obtained running CMS.RelVal_Digi_Digi2Raw.cfg) to the digis obtained by unpacking the raw data (using CMS.RelVal_HLTFromRaw.cfg)

The results of these tests are briefly summarized in the table below. The comments following the table give a more complete description when necessary.

Subsystem Digis/Clusters tested Status Comments Developer Contact
Subsystem Digis/Clusters tested Status Comments Developer Contact
SiPixel "siPixelDigis" OK   Marcin Konecki
SiStrip "siStripClusters" OK   Rob Bainbridge, Matt Wingham
Ecal "ecalDigis" (instances "ebDigis" and "eeDigis") OK   Nuno Almeida, Emmanuelle Perez
Preshower "ecalPreshowerDigis" OK   Chia-Ming Kuo
Hcal "hcalZeroSuppressedDigis" OK Initial "hcalDigis" must be zero-suppressed to agree with "unpacked" digis; perfect agreement after zero-suppression Jeremy Mans
CSC "muonCSCDigis" (instances "MuonCSCWireDigi" and "MuonCSCStripDigi") OK   Alex Tumanov
DT "muonDTDigis" OK Requires tags; discussion below Jesus Manuel Vizan Garcia
RPC "muonRPCDigis" OK Some known geometry problems; to be fixed in 1_7_0 Marcin Konecki
L1 none NOT UNPACKED Not expected to be implemented until 1_7_0 Jim Brooke (GCT), Werner Sun, Vasile Ghete (GMT)

Tags required on top of release 1_6_1 in order to run:

# Tags required to unpack the DT
cvs co -r V00-16-04 EventFilter/DTRawToDigi
cvs co -r V01-02-04 SimMuon/DTDigitizer
cvs co -r TBA HLTrigger/Configuration
# Other tags
cvs co -r V00-09-06 EventFilter/RPCRawToDigi
cvs co -r V01-05-11 DataFormats/HLTReco
cvs co -r V00-01-07 DQM/HLTEvF
cvs co -r V00-02-09 HLTrigger/Egamma
cvs co -r V01-00-13 HLTrigger/Muon
cvs co -r V00-00-19-06 HLTrigger/CMS.JetMET
cvs co -r V00-01-25 HLTrigger/special
cvs co -r V00-01-43 HLTrigger/xchannel

What are the changes with respect to 1_6_0?

With the above tags, you will now be able to run digi->raw and raw->digi for the DT.

What is still left to do?

At present, frontier is the only possible way to access the cabling maps. I will produce a private tag that will allow you to access the cabling maps without needing access to frontier.

What is queued for 1_7_X?

  • Add L1 digi->raw->digi
  • Enable access to the "fake" cabling maps (i.e. access without having to go to frontier)

1_6_0 (Release Validation and status of the software, updated 5 September 2007)

This section presents the release validation results for 1_6_0. As such, it presents the expectations for the code in CSA07. In addition to validation studies, I also include some comments about the state of the code. This includes:

  • Current functionality of digi->raw and raw->digi code
  • A discussion of various short term plans to improve functionality
  • Longer term (1_7_X and beyond) goals

Release validation

For 1_6_0, the release validation was performed on the samples indicated below. In each case, the inital digis (from process "Raw") were compared to the results of digi->raw->digi conversion ("HLT"). Each test examined 1000 events from the given sample. The samples are as follows:

  • QCD, with 80 < pT < 120 GeV (/RelVal145QCD_pt80_120/CMSSW_1_6_0/RelVal-1188851294/RAW)
  • TTbar (/RelVal145TTbar/CMSSW_1_6_0/RelVal-1188851294/RAW)
  • Z->mumu (/RelVal145Z-MM/CMSSW_1_6_0/RelVal-1188851294/RAW)
  • W->munu (/RelVal145W-M/CMSSW_1_6_0/RelVal-1188851294/RAW)

The results of these tests are briefly summarized in the table below. The comments following the table give a more complete description when necessary.

Subsystem Digis/Clusters tested Status Comments Developer Contact
Subsystem Digis/Clusters tested Status Comments Developer Contact
SiPixel "siPixelDigis" OK   Marcin Konecki
SiStrip "siStripClusters" OK   Rob Bainbridge, Matt Wingham
Ecal "ecalDigis" (instances "ebDigis" and "eeDigis") OK   Nuno Almeida, Emmanuelle Perez
Preshower "ecalPreshowerDigis" OK   Chia-Ming Kuo
Hcal "hcalZeroSuppressedDigis" OK Initial "hcalDigis" must be zero-suppressed to agree with "unpacked" digis; perfect agreement after zero-suppression Jeremy Mans
CSC "muonCSCDigis" (instances "MuonCSCWireDigi" and "MuonCSCStripDigi") OK   Alex Tumanov
DT "muonDTDigis" NOT UNPACKED Descoped for CSA07; discussion below Jesus Manuel Vizan Garcia
RPC "muonRPCDigis" OK Some known geometry problems; discussion below Marcin Konecki
L1 none NOT UNPACKED Not expected to be implemented until 1_7_0 Jim Brooke (GCT), Werner Sun, Vasile Ghete (GMT)

Comments on the validation:

  • When testing each of the samples mentioned above, unpacking was only performed if the relevant L1 Trigger bit was successful. This of course changes the amount of actual unpacking done for each subsystem as a function of the event sample. In all samples, each subsystem was unpacked at least 100 times (the lone exception was the RPC from the qcd sample, where 71 events unpacked RPC digis), and in many cases each subsystem was unpacked hundreds of times. In the past this has been sufficient to discover any problems in the digi->raw->digi process.
  • In order to validate the digi->raw->digi process, initial digis (Raw) are compared to digis produced by the digi->raw->digi process (HLT). Digi quantities and associated detector position values are compared, and any unexplained difference between initial and "unpacked" digis are a sign of a problem.
  • In each test, the Pixels, Strips, Ecal+Preshower, Hcal, and CSC show PERFECT agreement between initial and "unpacked" digis, as expected.
  • For the RPC, occasionally KNOWN Geometry bugs that cannot be fixed in 1_6_0. All problems are the result of two sectors (8 and 12) of RB4 (RPCDetId::station() == 4) being switched in the geometry. As the number of strips are different in these two sectors, some digis are lost in the digi->raw->digi conversion (see below for a summary). As the differences is small (less than 1%) and expected (as the cause is known), the differences are not considered to be alarming.
    • In the QCD sample, this error occurs in 1 event out of 71 events with unpacked RPC digis. 3 of 9 input digis are lost in this event.
    • There were no problem events in the TTbar sample, where RPC digis were unpacked in 455 events.
    • In the W->munu sample, this error occurs in 1 out of 439 events. In this case, 2 of the 19 input digis are lost.
    • In the Z->mumu sample, this error occurs in 5 out of 648 events. A total of 9 out of 99 digis (summed over all five events) are lost due to the geometry bug.
  • For the DT, a problem in simulation results in crashes in the raw->digi conversion. In simulation, occasionally large drift times, on the order of hundredths of a second when the expected time is hundreds of nanoseconds, occur which corrupt the digi output. The large drift times overflow the memory allocated to store these values (the real DT can only store times up to 2^18 nanoseconds), and end up corrupting DetId values as a result of the overflow.
    • This problem is being investigated by Simulation experts, and a patch at the digitization level is being tested.
    • It is possible to patch the DT digi->raw step to drop ALL the DT information for these events, but this solution is thought to be too drastic.
    • As no solution currently exists for this problem, DT digi->raw->digi has been DROPPED for CSA07.

Digi->Raw->Digi status in 1_6_0

In previous releases, digi->raw->digi was performed by accessing detector cabling maps, which were stored as SQLite files on afs (not a part of CMSSW). This is clearly not possible for production, which cannot be tied to afs. Consequently, for 1_6_0

  • Cabling maps are accessed via frontier by default.
  • Work is progressing to access the cabling maps as SQLite files (off of afs) using the CondCore/SQLiteData package. This package was not viewed to be ready for 1_6_0, and as such this functionality will need to be added to a later release.

The default digi->raw, raw->digi setup does not include L1 or DT packing/unpacking. Work on L1 (un)packing is proceeding (Jim Brooke, Werner Sun, Vasile Ghete are developers) and it is hoped that this will be ready by 1_7_0. The DT problem was discussed above.

Future plans

There are several updates to digi->raw->digi that are planned in the near future:

  • When the DT simulation problem is corrected, DT digi->raw->digi will be reintroduced.
  • Introduce SQLite file access (off of afs) using the CondCore/SQLiteData package. This is currently being made ready for use in CMSSW.
  • Plans for 1_7_0:
    • L1 digi->raw->digi validation, and subsequent introduction into the standard digi->raw->digi procedure.
    • Validation of the 1_7_0 fix in the RPC Geometry. All RPC geometry problems should be cured in this release.
  • (Unofficial) Goals for the future:
    • Migrate all subsystem-specific configuration files away from HLTrigger/Configuration and into relevant CMS.EventFilter/[Subsystem]RawToDigi packages. Currently subsystem digi->raw->digi code is kept in both CMS.EventFilter and HLTrigger/Configuration. This duplication is an historical artifact (only minor difference exist between the files today), and could potentially lead to problems later on as subsystems continue to develop their unpacking code.

Quick Summary of (outdated) prereleases

The summary of the status of the digi->raw->digi software as a function of the (now obsolete) 1_6_0 pre-releases has been moved to CMSPublicSWGuideAddingRawToDigiOldReleases

Setup for CSA07

NOTE: All cabling maps are currently accessed via frontier. If for some reason you need to run on event samples from an earlier release, your results will certainly be corrupt. In many cases, it is far more likely that your job will crash! Contact me if you have any special requests that predate 1_6_0.

I have included two configuration (*.cfg) files in HLTrigger/Configuration/data/rawToDigi to help with using the digi->raw and raw->digi modules:

  • example_digi2raw.cfg: This file takes the available digis and outputs one FEDRawDataCollection. L1extra information is also included in the output.
  • example_raw2digi.cfg: After you have run example_digi2raw.cfg you will have a root file that contains a single FEDRawDataCollection. Running example_raw2digi.cfg unpacks each subsystem's digis using the appropriate unpacker. Attaching your favorite timing monitor in your path, you will
be able to measure digi unpacking times.

If you wish to run the standard (release validation) configuration files, please use CMS.RelVal_Digi_Digi2Raw.cfg and CMS.RelVal_HLTFromRaw.cfg, which are located in HLTrigger/Configuration/test.

NOTE: Please be aware that the DigiToRaw and RawToDigi sequences include digi->raw (and raw->digi) modules from all available subsystems. If you desire to run only a subset of the digi->raw + raw->digi conversion, you will need to edit DigiToRaw.cff or RawToDigi.cff. Failure to do this will lead to runtime errors.

Raw->Digi timing information using 1000 event QCD sample (test performed on the now obsolete 1_6_0_pre5 release)

Given that most of the subsystems have been migrated to 1_6_0_pre5, it is beneficial to check the performance of the available unpacking modules. Using tag V01-05-05 of DataFormats/HLTReco (applied on top of 1_6_0_pre5), I have examined a 1000 event QCD sample:

   source = PoolSource {
      untracked vstring fileNames = {
         #--- Release 1_5_0 QCD sample: 80 < p_T < 120 GeV ---#
         '/store/RelVal/2007/6/22/RelVal/RelVal150QCD_pt80_120-1182500741/0000/7EEAEE46-BD20-DC11-848C-000423D9880C.root',
         '/store/RelVal/2007/6/22/RelVal/RelVal150QCD_pt80_120-1182500741/0000/B281439E-AA20-DC11-9266-001617C3B606.root',
         '/store/RelVal/2007/6/22/RelVal/RelVal150QCD_pt80_120-1182500741/0000/D0A7A0DD-AB20-DC11-8EC0-000423D6628E.root',
         '/store/RelVal/2007/6/22/RelVal/RelVal150QCD_pt80_120-1182500741/0000/F688CAD5-AA20-DC11-8EDB-000423D99B46.root',
         '/store/RelVal/2007/6/22/RelVal/RelVal150QCD_pt80_120-1182500741/0000/FA02203F-AA20-DC11-B625-00304885B022.root'
      }
   }

A few notes about this test:

  • No L1 filtering was applied.
  • The first event is thrown out due to the extra time associated with module startup.
  • I get the raw data collection using hltGetRaw. This module's timing information is skipped in the summary.
  • Timing information is only presented for Pixels, Ecal+Preshower, DT, CSC, and RPC. Hcal, L1, and Strips will be added soon.
  • The Ecal regional unpacking is not applied by default.

Results based on the output of the hltTimingSummary macro:

  • PDF file: hltTiming.pdf
  • The total time taken up by the unpacking modules (mentioned above) is 18.6 msec (page 2)
  • The average time per module appears on page 3
    • Pixels: 2 msec (see page 10 for the event-by-event distribution)
    • Ecal: 14 msec (page 11)
    • Preshower: 1 msec (page 12)
    • CSC: 0.5 msec (page 13)
    • DT: 0.6 msec (page 14)
    • RPC: 0.2 msec (page 15)

Review Status

Reviewer/Editor and Date (copy from screen) Comments
Main.bdahmes - 18 Apr 2007 page author
JennyWilliams - 01 Oct 2007 Moved information on obselete releases to CMSPublicSWGuideAddingRawToDigiOldReleases

Responsible: Main.bdahmes
Last reviewed by: Reviewer

Topic attachments
I Attachment History Action Size Date Who Comment
PDFpdf hltTiming.pdf r1 manage 52.4 K 2007-07-25 - 13:33 UnknownUser Timing information for 1000 QCD events using hltTimingSummary
PDFpdf myR2Doutput-noFirst.pdf r1 manage 63.1 K 2007-05-16 - 15:49 UnknownUser Summary of raw->digi conversion for 500 event (L1 pass) QCD sample, first event removed
PDFpdf myR2Doutput.pdf r1 manage 63.2 K 2007-05-16 - 04:34 UnknownUser Summary of raw->digi conversion for 500 event (L1 pass) QCD sample
Edit | Attach | Watch | Print version | History: r49 < r48 < r47 < r46 < r45 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r49 - 2011-12-06 - KatiLassilaPerini



 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

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