track filtering quality merging
play

Track Filtering/Quality/Merging A proposal for data format of track - PowerPoint PPT Presentation

Track Filtering/Quality/Merging A proposal for data format of track quality and track merging in CMSSW K.Burkett, L.Lista, B.Mangano, S.Rahatlou, A.Rizzi, J.-R.Vlimant 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 1 Requirements


  1. Track Filtering/Quality/Merging A proposal for data format of track quality and track merging in CMSSW K.Burkett, L.Lista, B.Mangano, S.Rahatlou, A.Rizzi, J.-R.Vlimant 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 1

  2. Requirements ● No changes to the reco::Track class ● Associate track quality to reference to track ● Minimal size of data formats ● Being able to handle different sources of tracks (rs, ctf, gsf) ● Keep track of provenance of tracks 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 2

  3. Proposal 1 ● Each track reconstruction path removes fake to a certain level ➔ xxFinalTracks (xx=ctf, rs, ...) ● The merger module mergedTracks runs on all those collections ➔ produce one collection for each  mergedTrack ➔ Set a provenance “bit” to the reco::Track ● The filter module trackQualityProducer runs this collection ( mergedTrack ) ➔ Set a quality “bit” to the reco::Track  Event Size: ➔ just adding 2 uint on top of a lot of things <1% increase in size  Pros: ➔ Easy access in FWLite (track.quality()==tight, track.provenance()==CTF,...)  Cons: ➔ Provenance “bit” is a “waste of event size (not that much waste anyway) ➔ Need to drop&create track collection to set quality “bit” ➔ Loose specific track type (GsfTracks, DAFTracks,...) 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 3

  4. Proposal 2 ● Each track reconstruction path removes fake to a certain level ➔ xxFinalTracks (xx=ctf, rs, ...) ● The merger module mergedTracks runs on all those collections ➔ produce a separate clean collection for each  mergedTrack:ctfFinalTracks  mergedTrack:rsFinalTracks  ... ● The filter module trackQualityProducer runs on all those collections ➔ Produces one single ValueMap<trackQuality> object ➔ Provenance kept by the instance name and the RefToBase in ValueMap  Event Size: ➔ just adding 2 uint on top of a lot of things <1% increase in size  Pros: ➔ Full Provenance ➔ RefToBase possible from ValueMap (CMSSW) ➔ Minimal event size to keep track of provenance  Cons: ➔ ValueMap and FWLite ? See usage slide later on in FW. 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 4

  5. Proposal 2 ● reco::TrackQuality holds the track quality status bit (DataFormats) ● Helpers that calculate TrackQuality from Event and Track (tools) ● edm::ValueMap<reco::TrackQuality> as the quality collection ➔ Can hold “association” from different productID ➔ ProductID is not stored many times (gain in size w.r. Ref) ● edm::ValueMap<T>::Parser<O> as the Parser ➔ ctor( const Event& , const ValueMap<T>& ) ➔ regular begin() / end() iterators ➔ special begin(const T&t) and next(const T&t) members 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 5

  6. Proposal 2: Usage 1 namespace reco { typedef edm::ValueMap<reco::TrackQuality> TrackQualityValueMap; The map } namespace edm { namespace helper { typedef reco::TrackQualityValueMap::Parser<reco::Track> TrackQualityParser; The map parser }} edm::Handle<reco::TrackQualityValueMap > qualityMapH; iEvent.getByLabel(theTag, qualityMapH); edm::helper::TrackQualityParser parser(iEvent, *qualityMapH); edm::helper::TrackQualityParser::iterator it = parser.begin(); edm::helper::TrackQualityParser::iterator end = parser.end(); loop through all for (; it!=end; ++it){ associations. edm::helper::TrackQualityParser::iterator::value_type association = it.get(); Referencing all edm::helper::TrackQualityParser::iterator::first_type ref = association.key; tracks. edm::helper::TrackQualityParser::iterator::second_type quality = association.value; const edm::Provenance & provenance = iEvent.getProvenance(ref.id());} 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 6

  7. Proposal 2: Usage 2 namespace reco { typedef edm::ValueMap<reco::TrackQuality> TrackQualityValueMap; The map } namespace edm { namespace helper { typedef reco::TrackQualityValueMap::Parser<reco::Track> TrackQualityParser; The map parser }} edm::Handle<reco::TrackQualityValueMap > qualityMapH; iEvent.getByLabel(theTag, qualityMapH); edm::helper::TrackQualityParser parser(iEvent, *qualityMapH); A user selected reco::TrackQuality aCertainQuality(reco::TrackQuality::TIGHT); quality. edm::helper::TrackQualityParser::iterator it = parser.begin(aCertainQuality); edm::helper::TrackQualityParser::iterator end = parser.end(); loop only for (; it!=end; it.next(aCertainQuality)){ through the edm::helper::TrackQualityParser::iterator::value_type association = it.get(); given quality. edm::helper::TrackQualityParser::iterator::first_type ref = association.key; No referencing edm::helper::TrackQualityParser::iterator::second_type quality = association.value; of other tracks. const edm::Provenance & provenance = iEvent.getProvenance(ref.id());} 2/4/08 Track Quality/Filtering/Merging Jean-Roch Vlimant 7

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend