Energy Over Momentum (E/p) Alignment Validation Tool

Complete: 2


This tool is developed to determine momentum changing weak modes in the tracker geometry.


Checking out the Code

Stable release

At the moment, you have to check out or update following files from the HEAD of Alignment/OfflineValidation

* interface/EopVariables.h (co)

* macros/momentumBiasValidation (co)

* plugins/EopTreeWriter.h (co)

* plugins/ (co)

* plugins/BuildFile.xml (update)

* python/ (co)

* src/classes.h (update)

* src/classes_def.xml (update)

* test/ (co)

This version is tested in CMSSW_4_2_X and CMSSW_4_4_X.

release in development

The code is under development and the last release is stored in a UserCode folder.

scramv1 project CMSSW CMSSW_4_4_2
cd CMSSW_4_4_2
cd $CMSSW_BASE/src
cvs co UserCode/IPHC_Eop/
source UserCode/IPHC_Eop/

Configuring the Tree Writer

1. define the input files:

process.source = cms.Source( "PoolSource",
    fileNames = cms.untracked.vstring(

2. choose the geometry you want to validate optionally with alignment errors and/or surface deformations:

from CondCore.DBCommon.CondDBSetup_cfi import *
process.trackerAlignment = cms.ESSource("PoolDBESSource",CondDBSetup,                                        
                                        connect = cms.string("yourDbFile"),
                                        toGet = cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"),
                                                                   tag = cms.string("yourAlignmentTag")
                                                                   )## ,
##                                                             cms.PSet(record = cms.string("TrackerAlignmentErrorRcd"),
##                                                                   tag = cms.string("yourAlignmentErrorTag")
##                                                                   ),
##                                                             cms.PSet(record = cms.string("TrackerSurfaceDeformationRcd"),
##                                                                   tag = cms.string("yourDeformationTag")
##                                                                   )
process.prefer( "trackerAlignment")

(3.) if you run on files other than HcalCalIsoTrk, adapt the input tags:

process.TrackRefitter.src = cms.InputTag( 'yourInputTag')

(4.) if you want to validate the geometry used for the track reconstruction, switch of the track refitter:

process.energyOverMomentumTree.src = cms.InputTag('yourInputTag') # 'TkAlIsoProd:' for HcalCalIsoTrk files
process.p = cms.Path(process.offlineBeamSpot*process.energyOverMomentumTree)

Running the Tree Writer


Variables stored in Tree

Variable comments
track_outerRadius reco::Track::outerRadius()
track_chi2 reco::TrackBase::chi2()
track_normalizedChi2 reco::TrackBase::normalizedChi2()
track_emc1 energy deposit in Ecal considering 1x1 cell
track_emc3 energy deposit in Ecal considering 3x3 cells
track_emc5 energy deposit in Ecal considering 5x5 cells
track_hac1 energy deposit in Hcal considering 1x1 cell
track_hac3 energy deposit in Hcal considering 3x3 cells
track_hac5 energy deposit in Hcal considering 5x5 cells
track_maxPNearby for the considered track, gives the momentum magnitude of the "higher momentum track" in a cone whose differential radius is defined by the user. The informations used for calculation are the eta and phi parameters of propagated tracks in Ecal. Default value is -10 GeV (i.e. if there is no other tracks in the cone). An upper threshold on this value can be used as an isolation criteria.
distofmax Gives the radial distance in Ecal between the considered track and the eventual "higher momentum track" contained in the cone defined on the previous line. Default value is 50 cm (i.e. if there is no other tracks in the cone)
track_nHits reco::TrackBase::numberOfValidHits()
track_nLostHits reco::TrackBase::numberOfLostHits()
track_innerOK reco::Track::innerOk()

Running the Validation Macro

4 variables are mandatory:

root -l -b -q 'momentumBiasValidation.C+(variable, path, files+legend label, outputType)'

* variable (string): "eta" for twist validation, "phi", "phi1", "phi2", and "phi3" for validation of phi-modes for all tracks, eta<-0.9, |eta|<0.9, eta>0.9, respectively.

* path (string): path to the produced tree files int the form: "/myRep/rep/.../"

* files+legend label (string): list of the files with the corresponding legend entry in the following form: "firstFile.root=first legend entry\\secondFile.root=second legend entry\\..."

* outputType (string): set the type of the produced plots, e.g. "gif", "root", "eps", etc...

3 more optional variables:

root -l -b -q 'momentumBiasValidation.C+(variable, path, files+legend label, outputType, verbose, givenMin, givenMax)'

* verbose (bool): set true for verbose mode (default: false)

* givenMin/givenMax (double): set the lowest and the highest value of the Y-axis of the output plot

* files+legend label: list of the files with the corresponding legend entry in the following form: "firstFile.root=first legend entry\\secondFile.root=second legend entry\\..."

Track Selection

There are two levels were selections criteria are applied on tracks: in the tree writer '' and in the validation macro 'momentumBiasValidation.C'.

The selection criteria applied for the Tree Writer are:

  • Lower threshold of 9 GeV on track momentum magnitude.
  • Lower threshold of 5 GeV on energy deposit in 3x3 Hadronic Calorimeter tower cluster.
  • For a given track, no track of more than 5 GeV is allowed in a dR of 40cm.

The selection criteria applied for the validation macro are:

  • Trigger selection: high pT QCD events (as they frequently contain isolated tracks). Lower threshold of 38 GeV on track momentum magnitude.
  • Number of valid hits greater or equal to 13.
  • No lost hits.
  • Radius of outermost hit greater than 99cm.
  • Normalized chi square smaller than 5.
  • Upper threshold of 1 GeV on energy deposit in ECAL (in a 9cm radius cylinder), to ensure that particles do not shower until they enter the HCAL.
  • Upper threshold of 8 GeV on energy deposit in ECAL between to concentric cylinders (respective radii: 15 and 35 cm) arround impact point, to ensure isolation against neutral particles.


Results obtained with global tag "GR_R_44_V13", and tracker geometry "TrackerAlignment_GR10_v4_offline", with dataset: /Commissioning/Run2011A-HcalCalIsoTrk-08Nov2011-v1/ALCARECO.

  • Sagitta validation:

  • Sagitta validation for low eta:

  • Sagitta validation for central eta:

  • Sagitta validation for high eta:

  • Twist validation:

-- HolgerEnderle - 14-Nov-2011 -- ChristopheGoetzmann - 29-Feb-2012

Topic attachments
I Attachment History Action Size Date Who Comment
GIFgif sagitta_validation_all.gif r1 manage 17.7 K 2012-02-29 - 16:45 ChristopheGoetzmann  
GIFgif sagitta_validation_centralEta.gif r1 manage 18.8 K 2012-02-29 - 16:45 ChristopheGoetzmann  
GIFgif sagitta_validation_highEta.gif r1 manage 18.8 K 2012-02-29 - 16:45 ChristopheGoetzmann  
GIFgif sagitta_validation_lowEta.gif r1 manage 18.8 K 2012-02-29 - 16:45 ChristopheGoetzmann  
GIFgif twist_validation.gif r1 manage 19.9 K 2012-02-29 - 16:45 ChristopheGoetzmann  
Edit | Attach | Watch | Print version | History: r12 < r11 < r10 < r9 < r8 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r9 - 2012-03-01 - ChristopheGoetzmann
    • 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-2021 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