Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SiPixelTools/TrackHitPattern

Pixel hit efficiency from the track hit pattern stored in AOD. Important to be aware of the bug fixed by this PR: cms-sw/cmssw#51478 It affects only muon tracks built with out-in tracking algorithm. It would not store L1 (most likely missing) hits in secondary hit patterns biasing the results towards higher efficiencies. The recommendation is to run the tool on general tracks because of this.

Install

cmsrel CMSSW_16_0_6 && cd CMSSW_16_0_6/src && cmsenv
git clone git@github.com:CMSTrackerDPG/SiPixelTools-TrackHitPattern.git SiPixelTools/TrackHitPattern
scram b -j 8

Run

cd SiPixelTools/TrackHitPattern/test
cmsRun hitPatternFromAod_cfg.py \
    inputFiles_load=filelist.txt \
    lumiMask=Cert_Collisions2026_Golden.json \
    outputFileName=hitPattern.root maxEvents=-1

Batch

One job per run, on Slurm (PSI T3) or HTCondor (lxplus). Set "backend": "condor" in the task .json for the latter; Slurm is the default.

# Edit the tasks .json you want to run
cd SiPixelTools/TrackHitPattern/batch
./submit.py tasks/Run3_1fb.json --create
./submit.py tasks/Run3_1fb.json --submit
./submit.py tasks/Run3_1fb.json --status

--create queries DAS, shuffles the file list (fixed seed per run, so it is reproducible but not in lumisection order), and writes job.sh (plus job.sub for Condor). A run is ~0.2 CPU-hours and ~0.3 GB at 100k events (this estimate is outdated, wall-time is limited by network speed of reading the file(s)).

Runs whose dataset has no complete disk replica are dropped by --create, since a job reading them would only wait on tape. [26/08/20] For the golden runs of 2024--2026 that costs 55 of 1093 runs: Run2024B, Run2025B and Run2026A Prompt AOD are tape-only, and no reprocessed AOD exists for them.

Output

Two trees, both in the hitPattern TDirectory.

hitPattern/tracks — one row per selected track

branch meaning
run, ls, event, bx event id
npv good primary vertices in the event (pileup proxy)
pv_ntrk, pv_z tracks on, and z of, the leading PV
trk_pt, trk_eta, trk_phi track kinematics
trk_d0, trk_dz distance to the leading PV in cm
trk_algo reco::TrackBase::TrackAlgorithm (for debugging)
nvalid[7], nmissing[7], ninactive[7] per region: BPIX L1–L4, then FPIX D1–D3

Counts hit statuses per layer so that (in an unlikely case) a track crossing a layer twice through a ladder overlap is not collapsed.

Efficiency to be measured is valid / (valid + missing).

hitPattern/jobInfo — one row per job

Bookkeeping with the cuts actually applied and counters.

Selection

Applied here:

cut default
highPurity, pt > 1, nstrip > 10 on
good leading PV, ndof >= 4, |z| < 24, rho < 2, ntrk > 10 on
|d0| < d0Max = 0.1 cm on
|dz| < dzMax = 0.5 cm on

The d0/dz defaults are looser than any working point the analysis is expected to use, 0.5 cm in dz is the loosest of the DQM reference selections (0.1 in BPIX).

Everything layer-dependent, including the requirement of valid pixel hits on the other layers, is left to analysis.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages