Energy Over Momentum (E/p) Alignment Validation Tool
Complete:
Scope
This tool is developed to determine momentum changing weak modes in the tracker geometry.
Running
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/EopTreeWriter.cc (co)
* plugins/BuildFile.xml (update)
* python/eopTreeWriter_cfi.py (co)
* src/classes.h (update)
* src/classes_def.xml (update)
* test/eopTreeWriter_cfg.py (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
cmsenv
cd $CMSSW_BASE/src
cvs co UserCode/IPHC_Eop/install.sh
source UserCode/IPHC_Eop/install.sh
Configuring the Tree Writer
1. define the input files:
process.source = cms.Source( "PoolSource",
fileNames = cms.untracked.vstring(
'yourInputFiles.root'
)
)
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
cmsRun eopTreeWriter_cfg.py
Variables stored in Tree
Variable |
comments |
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_charge |
|
track_chi2 |
reco::TrackBase::chi2() |
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_eta |
|
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_innerOK |
reco::Track::innerOk() |
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. |
track_nHits |
reco::TrackBase::numberOfValidHits() |
track_nLostHits |
reco::TrackBase::numberOfLostHits() |
track_normalizedChi2 |
reco::TrackBase::normalizedChi2() |
track_outerRadius |
reco::Track::outerRadius() |
track_p |
|
track_phi |
|
track_pt |
|
track_ptError |
|
track_theta |
|
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
'eopTreeWriter_cfg.py'
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.
Outputs
Results obtained with global tag "GR_R_44_V13", and tracker geometry "TrackerAlignment_GR10_v4_offline"
- 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