-- MilanStojanovic - 2019-02-20

Guidelines for using pixel tracks from 2018 PbPb data


1. Collections

Pixel tracks: "hiConformalPixelTracks"

Full tracks: "generalTracks"

2. Track selections

Pixel Track Cuts value
pt < ptCut
fabs(dz/dzError) < 20
fabs(d0/d0Error) < 7
Full Track Cuts value
pt >= ptCut
highPurity true
nHits >= 11
fabs(ptError)/pt < 0.1
fabs(dz/dzError) < 3.0
fabs(d0/d0Error) < 3.0
Chi2n/nLayers < 0.18
!( algo()==6 && trkMVA < 0.98 )

Centrality ptCut Value
Central events (0-10%) 1.0 GeV /c
Mid-central and peripheral events (10-100%) 0.6 GeV /c

3. Efficiency tables

Table for pixel tracks:

Table for full tracks:

Table for merged tracks: tracks of all charges: EffCorrectionsPixelPbPb2018_v0.root positive charge tracks: EffCorrectionsPixelPbPb2018_plusCharge_v0.root negative charge tracks: EffCorrectionsPixelPbPb2018_minusCharge_v0.root

New tables with larger statistics: EffCorrectionsPixelPbPb2018_v1.root

Efficiency corrected distributions:

pt_corrected.pdf eta_corrected.pdf

Tables for different pixel selection:

4. Procedure for using pixel tracks in an analysis

For pT differential analyses

If the analysis has fine pT binning, such that only one collection could be used inside one bin, the procedure is straight forward:

Running both collection for each event, with proper track selection and efficiency tables.

Example:

in config file

  genTrackSrc = cms.InputTag("hiGeneralTracks"),
pixTrackSrc = cms.InputTag("hiConformalPixelTracks"),

in analyzer

  genTrackSrc_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("genTrackSrc"))),
pixTrackSrc_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("pixTrackSrc"))),
...
// obtain reconstructed tracks
Handle<reco::TrackCollection> genTcol;
iEvent.getByToken(genTrackSrc_, genTcol);

Handle<reco::TrackCollection> pixTcol;
iEvent.getByToken(pixTrackSrc_, pixTcol);
...
/// analysis over full tracks
for(TrackCollection::const_iterator tr = genTcol->begin(); tr != genTcol->end(); tr++) {
if ( tr->charge() == 0 ) continue;
if ( tr->pt() < ptCut ) continue;
if( ! passesGenTrackCuts(*tr, vsorted) ) continue;
histoPt -> Fill(tr->pt() ); //here you do analysis
...
}

/// analysis over pixel tracks
for(TrackCollection::const_iterator tr = pixTcol->begin(); tr != pixTcol->end(); tr++) {
if ( tr->charge() == 0 ) continue;
if ( tr->pt() >= ptCut ) continue;
if( ! passesPixTrackCuts(*tr, vsorted) ) continue;
histoPt -> Fill(tr->pt() ); //here you do analysis
...
}


For spectrum-weighted analyses

If the analysis has a wide pT bin that include pTcutValue the same tracks could be reconstructed in both pixel tracks (with pt < ptCut) and full tracks (pt > ptCut) collections. Therefore one needs to apply procedure for removing this double tracks.

Run analysis on:

  • on full track collection with proper track selection and efficiency table (same as above), then
  • on pixel track collection with proper track selection and efficiency table for merging tracks, and additional procedure should be applied:
if (ptCut - 0.2 < pt pixel < ptCut) run a loop over full track collection and if there is a full track that satisfy condition:

fabs(eta pixel - eta full ) < 0.02 && fabs(phi pixel - phi full ) < 0.02

then leave out pixel track from the analysis.

Example:

in config file

  genTrackSrc = cms.InputTag("hiGeneralTracks"),
pixTrackSrc = cms.InputTag("hiConformalPixelTracks"),

in analyzer

  genTrackSrc_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("genTrackSrc"))),
pixTrackSrc_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("pixTrackSrc"))),
...
// obtain reconstructed tracks
Handle<reco::TrackCollection> genTcol;
iEvent.getByToken(genTrackSrc_, genTcol);

Handle<reco::TrackCollection> pixTcol;
iEvent.getByToken(pixTrackSrc_, pixTcol);
...
/// analysis over full tracks
for(TrackCollection::const_iterator tr = genTcol->begin(); tr != genTcol->end(); tr++) {
if ( tr->charge() == 0 ) continue;
if ( tr->pt() < ptCut ) continue;
if( ! passesGenTrackCuts(*tr, vsorted) ) continue;
histoPt -> Fill(tr->pt()); //here you do analysis
...
}

/// analysis over pixel tracks
for(TrackCollection::const_iterator tr = pixTcol->begin(); tr != pixTcol->end(); tr++) {
if ( tr->charge() == 0 ) continue;
if ( tr->pt() >= ptCut ) continue;
if( ! passesPixTrackCuts(*tr, vsorted) ) continue;
//// eliminating double reconstructed tracks
int nrec=0;
if ( tr->pt() > (ptCut - 0.2) && tr->pt() < ptCut ) {
for(TrackCollection::const_iterator genTr = genTcol->begin(); genTr != genTcol->end(); genTr++){
if ( genTr->charge() == 0 ) continue;
if ( genTr->pt() < ptCut ) continue;
if( ! passesGenTrackCuts(*genTr, vsorted) ) continue;
if ((tr->eta()- genTr->eta()) < 0.02 && (tr->phi()- genTr->phi()) < 0.02 ) {
nrec++;
}
}
}
if (nrec>0) continue;
histoPt -> Fill(tr->pt() ); //here you do analysis
...
}

Merged Track Collection Producer (for all type analyses)

The easier way is to run the merged track collection producer and then just analyze one (merged) collection. This approach can be used for both pt differential and spectrum-weighted analyses.

Setup

cmsrel CMSSW_10_3_2
cd CMSSW_10_3_2/src
cmsenv
git clone https://github.com/milanchestojanovic/MergingProducer.git
scram b

In your config file:

process.load('MergingProducer.generalAndHiPixelTracks.MergingPixAndGenProducer_cfi')
...
trackSrc = cms.InputTag("generalAndHiPixelTracks")
...
process.p = cms.Path( ... * process.generalAndHiPixelTracks * ...)

Recommended track selection is already applied in producer. However, efficiency corrections need to be applied in analyzer.

Use efficiency table for merged track collection.

Note that that centrality object creation is mandatory when using this producer. Instruction for using centrality objects can be found here: link.

Modification for 2022 PbPb data

For 2022 TestRun PbPb data please use this preliminary efficiency table: EffCorrectionsTracksPbPb2022_Merged.root

Setup

cmsrel CMSSW_12_5_2_patch1
cd CMSSW_12_5_2_patch1/src
cmsenv
git clone https://github.com/milanchestojanovic/MergingProducer.git
scram b

In your config file:

process.load('MergingProducer.generalAndHiPixelTracks.MergingPixAndGenProducer2022Run_cfi')
...
trackSrc = cms.InputTag("generalAndHiPixelTracks")
...
process.p = cms.Path( ... * process.generalAndHiPixelTracks * ...)

Merged Track Collection Producer for MINIAOD

The only differences wrt AOD format are different release (11_2_0_pre9) and different git branch (miniAOD). So the instructions are:

cmsrel CMSSW_11_2_0_pre9
cd CMSSW_10_2_0_pre9/src
cmsenv
git clone --branch miniAOD https://github.com/milanchestojanovic/MergingProducer.git
scram b

In your config file:

process.load('MergingProducer.generalAndHiPixelTracks.MergingPixAndGenProducer_cfi')
...
trackSrc = cms.InputTag("generalAndHiPixelTracks")
...
process.p = cms.Path( ... * process.generalAndHiPixelTracks * ...)
Topic attachments
I Attachment History Action Size Date Who Comment
Unknown file formatroot EffCorrectionsMergedPbPb2018_dxy7dz10.root r1 manage 245.8 K 2021-07-14 - 20:25 MilanStojanovic  
Unknown file formatroot EffCorrectionsMergedPbPb2018_dxy7dz7.root r1 manage 245.3 K 2021-07-14 - 20:25 MilanStojanovic  
Unknown file formatroot EffCorrectionsMergedPbPb2018_loose.root r1 manage 247.7 K 2021-08-05 - 04:42 MilanStojanovic  
Unknown file formatroot EffCorrectionsMergedPbPb2018_tight.root r1 manage 244.4 K 2021-08-05 - 04:42 MilanStojanovic  
Unknown file formatroot EffCorrectionsPixelPbPb2018_v1.root r1 manage 108.7 K 2019-07-12 - 09:36 MilanStojanovic  
Unknown file formatroot EffCorrectionsTracksPbPb2022_Merged.root r1 manage 74.7 K 2022-12-09 - 00:52 MilanStojanovic  
PDFpdf eta_corrected.pdf r1 manage 15.9 K 2019-02-21 - 16:31 MilanStojanovic  
PDFpdf pt_corrected.pdf r1 manage 15.2 K 2019-02-21 - 16:31 MilanStojanovic  
Edit | Attach | Watch | Print version | History: r20 < r19 < r18 < r17 < r16 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r20 - 2022-12-09 - MilanStojanovic
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Sandbox All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2023 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