--
KrystsinaPetukhova - 2016-12-22
Modernisation of topological clusters reconstruction procedure within the high luminosity conditions
Introduction
This page is dedicated to
ESD->DESDM file transformation to modify energetic thresholds for seeding in topological clusterization. Modified topological clusters are then used for jets reconstruction.
Analysis code source
Git repository
All the project files and changes are available at:
https://gitlab.cern.ch/kpetukho/TileClusterization
To download source to your lxplus use:
git clone ssh://git@gitlab.cern.ch:7999/kpetukho/TileClusterization.git
README file contains basic information how to submit analysis.
Setup code
Please, before you want to run transformation setup software and compile the code:
-
cd PerfDPD_TileNoise
-
setupATLAS
-
asetup 20.7.5.4,here
-
source setupWork.sh
Run analysis
The basic command line to launch transformation locally is (${PWD}=TileClusterization/PerfDPD_TileNoise/WorkArea/run/):
Reco_tf.py --autoConfiguration='everything' --inputESDFile inputESDfile_Name --outputDESDM_TILENOISEFile outputESDfile_Name
There is also an example file running on GRID: e.g.
PerfDPD_TileNoise/WorkArea/run/RunTransformation.sh
Writing DESDM files with the Tile calorimeter cells
Initial code for considered analysis was a template performance DESDM for Tile noise study. It was provided by Siarhei Harkusha
.
The following file tunes content of output file: TileClusterization/PerfDPD_TileNoise/PhysicsAnalysis/PrimaryDPDMaker/share/PerfDPD_Tile.py
Initially the source was performing
ESD->DESDM transformation with copying Tile cells content to the output (lines 39-46). Such transformation reduces files size, which is significant for Tile calls analysis (i.e. during pile-up noise analysis).
Topological clusters modification
The code performing transformation for the Tile calorimeter study is here:
TileClusterization/PerfDPD_TileNoise/PhysicsAnalysis/PrimaryDPDMaker/share/PerfDPD_Tile.py
NB! It includes file '
JetAlgorithm.py' which is being imported from local directory. (It is required since includes needed changes to write output jets.)
CaloClusterTopoGetter performs building up topological clusters from the ATLAS calorimeters cells.
Documentation about
TopoMaker is available there:
https://svnweb.cern.ch/trac/atlasoff/browser/Calorimeter/CaloRec/trunk/python/CaloClusterTopoGetter.py
Seed cell threshold setup in topological clusterization
If you want to make changes for 'seed' cells energetic thresholds, use
PerfDPD_Tile.py, line 82:
topSequence.CaloTopoCluster.TopoMaker.SeedThresholdOnEorAbsEinSigma = 6.0 // 4.0, 10.0, 14.0, 20.0
Neighbour and cell threshold setup on topological clusterization (optional)
For example, it is also possible to modify energetic threshold for 'neighbouring' and 'cell' cell e.g.,
TopoMaker.CellThresholdOnEorAbsEinSigma = 0.0
TopoMaker.NeighborThresholdOnEorAbsEinSigma = 2.0
TpoMaker.SeedThresholdOnEorAbsEinSigma = 4.0
Clusterization settings
Input for topological cluster performance is
CaloCellContainer --
'AllCalo' .
This analysis implement EM scaled topological clusters. No local hadronic calibration applied.
As xAOD::CaloClusterContainer is being redefined during modification performance, the new output is named 'CaloTopoClusters' (setup by default in
TopoMaker).
(FYI, the standard name of
CaloClusterContainer in input
ESD is
'CaloCalTopoClusters' .)
Jets reconstruction with Anti-Kt4 algorithm
Input for
PseudoJetGetter is
TopoClusterContainer -- '
CaloTopoCluster', which was made during the previous step of clusterization (
PerfDPD_Tile.py, line 102).
Here jets are reconstructed with
AntiKt4 algorithm on basis of topological clusters. It is launched with jets finding (
PerfDPD_Tile.py, line 122):
jtm.addJetFinder("MyAntiKt4EMTopoJets", "AntiKt", 0.4, "emtopo", "mymods", ghostArea=0.01, ptmin= 0, ptminFilter= 1)
The method addJetFinder(
alg
,
radius
, gettersin,
modifiersin
, ghostArea,
ptmin
,
ptminFilter
) create jets finder (uses pseudojets as input) and rectool. Its input parameters are described below:
# alg = akgorithm name (Kt, CamKt, AntiKt)
# radius = size parameter
# gettersin = array of input pseudojet builders (or name in gettersMap)
# modifiersin = list of modifier tools (or name of such in modifiersMap)
# ghostArea: if > 0, then ghosts are found with this inverse density
# ptminFilter: If > 0, then this is used as the pT threhold for filtering jets
Have a look at jets finders and rectool:
http://acode-browser2.usatlas.bnl.gov/lxr-AthAna/source/atlas/Reconstruction/Jet/JetRec/python/JetToolSupport.py
Calibration
At jets calibration step the following corrections are applied (
PerfDPD _Tile.py, line 113): "calib:ar", where
a = Active area correction (rho*A)
r = Pileup residual correction (i.e. using mu and NPV)
j = JES correction (from MC)
More details about jets finding, calibration and recording are given there:
http://acode-browser2.usatlas.bnl.gov/lxr-AthAna/source/atlas/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py
For the purpose of the current analysis jets are EM scaled, inheriting the energetic scale of topoclusters.
Recording
As jets are being reconstructed on-the-fly from redefined topoclusters, appropriate names for output xAOD::JetContainer and xAOD::JetAuxContainer should be specified (lines 135-137) e.g:
jetFlags.jetAODList += [ "xAOD::JetContainer#" + 'My' + jetrec.name() ]
where jetrec.name is the default name --
'AntiKt4EMTopoJets' .
NB! '
JetAlgorithm.py' is being imported from local directory (
TileClusterization /PerfDPD_TileNoise/PhysicsAnalysis/PrimaryDPDMaker/share/). This file contains important information about reassignment of
EventShapeTool names (lines 62-67, 86-89). This is done to avoid conflict between containers in input
ESD and output produced by the current reconstruction.
All jets reconstruction steps is performed by
JetToolManager. Its source is available there:
http://acode-browser2.usatlas.bnl.gov/lxr-AthAna/source/atlas/Reconstruction/Jet/JetRec/python/JetRecStandardToolManager.py
Output Stream tuning
To tune content of output file all the containers needed into the output file are added explicitly (lines 152 and so on).
You can write containers made on-the-fly during the transformation but specify new names for them to prevent issues.
Unless
StreamDESDM_TILENOISE.GetEventStream().TakeItemsFromInput = False
is not changed (line 84), you are able to write to the output file containers directly from the input ESD.