The page on "egammaAODRender" has moved to
https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EgammaAODRender
Saving PrepRawData (PRD) in the RoI around a Tau
Preface
This page describes the steps undertaken to save PrepRawData (PRD) from the Inner Detector in a region of interest (RoI) around a "Tau" into the LargeMet performance DPD. Following is a prescription for re-running tracking and tau reconstruction on either a primary DPD or ESD
Motivation
There are several motivations for saving PRD around a tau candidate. In particular the saving of hits and clusters in the ID will allow for the re-running of pattern recognition with a specialised configuration or altogether new algorithms that may better resolve tracks from 1-prong and 3-prong Tau decays than do the nominal algorithms.
PrimaryDPDMaker and saving PRD
Karsten Köneke has done all the substantial groundwork for saving PRD near objects of interest from an ESD into a performance DPD. His implementation for the EGammaStream performance DPD forms the template for its inclusion into the LargeMetStream. Basically the following files, which are attached to this page), were edited
PhysicsAnalysis/PrimaryDPDMaker/share/PrimaryDPD_LargeMetStream.py
PhysicsAnalysis/PrimaryDPDMaker/python/PrimaryDPDFlags_LargeMetStream.py
following the same code structure found in
PhysicsAnalysis/PrimaryDPDMaker/share/PrimaryDPD_EGammaStream.py
PhysicsAnalysis/PrimaryDPDMaker/python/PrimaryDPDFlags_EGammaStream.py
Working in Athena release 14.5.0, Check out PrimaryDPDMaker-00-01-10, and replace the files listed above (PrimaryDPD_LargeMetStream.py and PrimaryDPDFlags_LargeMetStream.py) with ones attached to this twiki page.
Below is the jobOptions file used to produce the primary DPD. The "Skimming" option was set to false, simply because a viable DPD isn't produced when it is set to true.
#=======================================================
from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
from PrimaryDPDMaker.PrimaryDPDFlags_LargeMetStream import primLargeMetDPD
primDPD.WriteSingleElectronStream = False
primDPD.WriteLargeMetStream = True
primDPD.WriteEGammaStream = False
primDPD.WritePhotonJetStream = False
primDPD.WriteMuonStream = False
primDPD.WritePerfLiteStream = False
primDPD.ApplySkimming = False
primDPD.ApplySlimming = False
primDPD.ApplyThinning = True
primDPD.UseMCTruth = True
primDPD.ApplyJetSlimming = False
primDPD.SetupTrigDecisionTool = False
primDPD.WritePrimaryDPDTrigger = False
primDPD.OutputDirectoryName = "/home/antonio/atlas/testarea/14.5.0/run/outputdir"
primLargeMetDPD.ApplyThinning = True # Default True
primLargeMetDPD.ApplyPixelClusterThinning = True # Default False
primLargeMetDPD.ApplySCTClusterThinning = True # Default True
primLargeMetDPD.ApplyTRTDriftCircleThinning = True # Default True
InputCollections = [ "/home/wedavey/data/InterfaceTestData/ESDv14022000/valid1.005188.A3_Ztautau_filter.recon.ESD.e322_s472_r536/ESD.025556._00008.pool.root.1" ]
DetDescrVersion = "ATLAS-GEO-02-00-00"
include("PrimaryDPDMaker/esdtodpd.py")
#=======================================================
Results
They are preliminary and are basically a "first run"
Using a Z->!TauTau sample (5188) 1 ESD file of 250 events
LargeMet DPD Size (MBytes)
Default no PRD 198
With all PRD 229
With thinned PRD 212
For thinning I require cone size deltaR=0.3 for SiClusters and
deltaEta=!deltaPhi=0.3, where applicable, for TRT drift circles . These requirements are nominal and will require study.
There are ERRORs that Karsten warned me to expect (their cause is still being investigated)
PixelGangedClusterAmbiguitiesConverter ERROR Identifier = (0xa9eaac17), Local Position = (N3Trk13LocalPositionE: (0.390, -20.800)), RDO List = [0xa9eaac17, ], Local Error Matrix = (Trk::CovarianceMatrix of dimension = 2
PixelGangedClusterAmbiguitiesConverter ERROR Could not find matching PRD container for this PixelCluster! Dumping PRD: PixelCluster object
Re-running tracking and tau reconstruction on the DPD/ESD
How to re-run tracking and tau reconstruction is described in
https://twiki.cern.ch/twiki/bin/view/Atlas/RecoReReconstruction
Each subsection is geared towards describing how to re-run a particular component in a stand-alone mode. Presented here are instructions to re-run tracking and tau reconstruction consecutively.
Preparing to re-run tracking
Tracking needs to be re-run after the "Preparation" stage as it's defined in the "ATLAS Inner Detector Event Data Model" paper (ATL-SOFT-PUB-2007-006), because the containers holding the PrepRawData (PRD) objects already exist in the primary DPD/ESD. How to do this was gleaned from the ID Tracking Performance hypernews site
"Rerunning Trackfinding"
Check out InDetRecExample
cmt co -r InDetRecExample-01-15-13 InnerDetector/InDetExample/InDetRecExample
Add the following
DetFlags.ID_setOn()
DetFlags.makeRIO.pixel_setOff()
DetFlags.makeRIO.SCT_setOff()
DetFlags.makeRIO.TRT_setOff()
from InDetRecExample.InDetJobProperties import InDetFlags
InDetFlags.Enabled = True
InDetFlags.preProcessing = True
InDetFlags.doNewTracking = True
InDetFlags.doStatistics = True
InDetFlags.doTruth = True
InDetFlags.doStatNtuple = True
InDetFlags.doTrkNtuple = True
InDetFlags.doPixelTrkNtuple = True
InDetFlags.doVtxNtuple = True
InDetFlags.doConvVtxNtuple = True
to InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py and then recompile the InDetRecExample package.
Rerunning tracking and tau reconstruction on a primary DPD/ESD
The following job options can now be used to run the full chain.
EvtMax = -1
DetDescrVersion='ATLAS-GEO-02-00-00'
#PoolESDInput=["/home/wedavey/data/InterfaceTestData/ESDv14022000/valid1.005188.A3_Ztautau_filter.recon.ESD.e322_s472_r536/ESD.025556._00008.pool.root.1"]
PoolESDInput= ["/home/antonio/atlas/testarea/14.5.0/run/outputdir/PrimaryDPD_DefaultName_ThinLargeMet.pool.root" ]
doCBNT=False
readESD=True
doWriteESD=False
doWriteAOD=True
doAOD=True
doWriteTAG=False
from tauRec.tauRecFlags import jobproperties
jobproperties.tauRecFlags.Enabled.set_Value_and_Lock(True)
from CaloRec.CaloRecFlags import jobproperties
jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True)
jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True)
jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True)
from JetRec.JetRecFlags import jobproperties
jobproperties.JetRecFlags.Enabled.set_Value_and_Lock(True)
from JetRec.JetRecFlags import jetFlags
jetFlags.doBTagging = False
#if False prevents job from crashing when running over a primary DPD
#True is safe when running over ESD
# main jobOption
include ("RecExCommon/RecExCommon_topOptions.py")
Validation
Comparisons of track/tau collections written into an AOD when produced from ESD with and without re-running track and tau reconstruction have been performed. An increase in the number of Tau 1P3P-seeded candidates of order 10% is observed when re-running tracking and tau reconstruction over an ESD/DPD, why this occurs is not yet understood ... it is being investigated. The number of tracks in the TrackParticleContainer#TrackParticleCandidate collection is fairly consisent with a difference of about 1% in the number of tracks. Changing from the default, GlobalChi2Fitter, to a different fitter, GaussianSumFitter, reduces the number of tracks by about 5%.
When running over the ESD/DPD InDetTrackSlimmer records an error, as does ForwardIndexingPolicy. The first error doesn't affect tau reconstruction, since the tau1p3p algorithm sources the TrackParticleContainer#TrackParticleCandidate collection, and it has been checked that this collection is written anew in the ESD to AOD step.
On the second error, it has been reported
here. It's not clear whether it's a problem that affects track and tau re-reconstruction.
StoreGateSvc WARNING record: Problem setting up the proxy for object @0x3be20360
recorded with key Tracks of type TrackCollection (CLID 117682415) in DataObject @0x29c24a50
InDetTrackSlimmer ERROR Could not record tracks
ForwardIndexingPolicy ERROR reverseLookup: element not found
More to come ...
Feedback
Please send your comments and suggestions to
antonio.limosani@cernNOSPAMPLEASE.ch
--
AntonioLimosani - 16 February 2009
Test
InnerDetector and Tracking Software Package Tag Differences
?IDTagDifferences
The table below lists tag differences of packages belonging to
InnerDetector and Tracking software. It has been compiled after search for differences between
- 16.0.0-VAL and 15.5.2-VAL
- 15.5.2 and 15.5.X.Y-P1HLT
- 15.5.2 and 15.5.X.Y-T0
- 15.5.2 and 15.5.X.Y-Prod
If a difference of tag is found between any of the above comparisons then the actual tags will be given in the relevant column. If the tags are equivalent across all release types then the package won't be listed
Package name |
16.0.0-VAL |
15.5.2-VAL |
15.5.2 |
15.5.X.Y-P1HLT |
15.5.X.Y-T0 |
15.5.X.Y-Prod |
Comment |
InnerDetector/InDetAlignAlgs/SiRobustAlignAlgs |
- |
- |
01-05-16 |
- |
01-05-17 |
01-05-17 |
- |
InnerDetector/InDetConditions/SCT_ConditionsServices |
00-03-59 |
00-03-58 |
00-03-57 |
00-03-57 |
00-03-59 |
00-03-58 |
- |
InnerDetector/InDetConditions/TRT_ConditionsServices |
00-00-43 |
00-00-41 |
- |
- |
- |
- |
- |
InnerDetector/InDetDetDescr/InDetGeoModelUtils |
00-04-00 |
00-02-06 |
- |
- |
- |
- |
- |
InnerDetector/InDetDetDescr/InDetServMatGeoModel |
00-04-00 |
00-03-02 |
- |
- |
- |
- |
- |
InnerDetector/InDetDetDescr/PixelGeoModel |
00-09-04 |
00-08-09 |
- |
- |
- |
- |
- |
InnerDetector/InDetDigitization/SCT_Digitization |
00-11-32 |
00-11-31 |
- |
- |
- |
- |
- |
InnerDetector/InDetDigitization/TRT_Digitization |
00-10-30 |
00-10-29 |
- |
- |
- |
- |
- |
InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv |
00-02-11 |
00-02-10 |
- |
- |
- |
- |
- |
InnerDetector/InDetEventCnv/TRT_RawDataByteStreamCnv |
00-02-24 |
00-02-23 |
- |
- |
- |
- |
- |
InnerDetector/InDetExample/InDetBeamSpotExample |
00-00-06 |
00-00-04 |
- |
- |
- |
- |
- |
- |
InnerDetector/InDetExample/InDetRecExample |
01-18-61 |
01-18-59 |
01-18-59 |
01-18-55 |
- |
- |
- |
InnerDetector/InDetExample/InDetTrigRecExample |
00-09-26 |
00-09-22 |
00-09-22 |
00-09-20 |
00-09-20 |
00-09-20 |
- |
InnerDetector/InDetMonitoring/InDetAlignmentMonitoring |
00-03-19 |
00-03-18 |
00-03-18 |
- |
00-03-19 |
00-03-19 |
- |
InnerDetector/InDetMonitoring/InDetPerformanceMonitoring |
- |
- |
00-00-45 |
00-00-44 |
- |
- |
- |
InnerDetector/InDetMonitoring/TRT_Monitoring |
00-06-10 |
00-06-06 |
- |
- |
- |
- |
- |
InnerDetector/InDetRecAlgs/SiCTBTracking |
00-02-09 |
00-02-07 |
- |
- |
- |
- |
- |
InnerDetector/InDetRecTools/InDetTrackScoringTools |
- |
- |
00-04-14 |
00-04-13 |
- |
- |
- |
InnerDetector/InDetRecTools/TRT_TrackSegmentsTool_xk |
00-01-77 |
00-01-76 |
- |
- |
- |
- |
- |
InnerDetector/InDetSimUtils/TRT_PAI_Process |
00-00-32 |
00-00-31 |
- |
- |
- |
- |
- |
InnerDetector/InDetSimUtils/TRT_TR_Process |
00-00-34 |
00-00-32 |
- |
- |
- |
- |
- |
InnerDetector/InDetTrigRecAlgs/InDetTrigTrackCollectionMerger |
00-01-01 |
00-01-00 |
- |
- |
- |
- |
- |
InnerDetector/InDetValidation/InDetBackTrackingRTT |
00-01-11 |
00-01-09 |
- |
- |
- |
- |
- |
InnerDetector/InDetValidation/InDetTrackValidation |
00-05-11 |
00-05-10 |
00-05-10 |
00-05-09 |
- |
- |
- |
InnerDetector/InDetValidation/InDetVertexSplitter |
00-00-02 |
- |
- |
- |
- |
- |
- |
InnerDetector/InDetValidation/TRT_RTT |
00-01-30 |
00-01-28 |
- |
- |
- |
- |
- |
Tracking/TrkEventCnv/TrkEventTPCnv |
00-23-02 |
00-23-01 |
- |
- |
- |
- |
- |
Tracking/TrkExtrapolation/TrkExAlgs |
00-01-06 |
00-01-04 |
- |
- |
- |
- |
- |
Tracking/TrkExtrapolation/TrkExExample |
00-02-15 |
00-02-14 |
- |
- |
- |
- |
- |
Tracking/TrkExtrapolation/TrkExTools |
- |
- |
02-37-09 |
- |
02-37-13 |
- |
- |
Tracking/TrkTools/TrkRIO_OnTrackCreator |
00-07-10 |
00-07-09 |
- |
- |
- |
- |
- |
Tracking/TrkUtilityPackages/TrkDriftCircleMath |
00-07-01 |
00-07-02 |
00-06-01 |
- |
00-07-02 |
- |
- |
Tracking/TrkFitter/TrkiPatFitter |
- |
- |
02-04-06 |
- |
02-04-08 |
- |
- |
Tracking/TrkVertexFitter/TrkVKalVrtCore |
00-03-06 |
00-03-02 |
- |
- |
- |
- |
- |
Tracking/TrkVertexFitter/TrkVKalVrtFitter |
00-04-08 |
00-04-03 |
- |
- |
- |
- |
- |
Tracking/TrkVertexFitter/TrkVertexAnalysisUtils |
00-02-08 |
00-02-07 |
- |
- |
- |
- |
- |
To get tag differences between 16.0.0-VAL and 15.5.2-VAL
#!/bin/bash
wget http://atlas-computing.web.cern.ch/atlas-computing/links/distDirectory/nightlies/global/nicos_content16.X.0-VAL.html
wget http://atlas-computing.web.cern.ch/atlas-computing/links/distDirectory/nightlies/global/nicos_content15.5.X-VAL.html
cat nicos_content16.X.0-VAL.html | grep -e "InnerDetector/" -e "Tracking/" | awk -F\> '{print $3,$5}' | awk -F\<\/td '{print $1,$2}' > 16.0.0.log
sort 16.0.0.log > 16.0.0.sort.log
cat nicos_content15.5.X-VAL.html | grep -e "InnerDetector/" -e "Tracking/" | awk -F\> '{print $3,$5}' | awk -F\<\/td '{print $1,$2}' > 15.5.2.log
sort 15.5.2.log > 15.5.2.sort.log
diff 16.0.0.sort.log 15.5.2.sort.log | grep -e "InnerDetector" -e "Tracking"
To get tag differences between 15.5.2 and {15.5.X.Y-P1HLT,15.5.X.Y-T0,15.5.X.Y-Prod}
#!/bin/bash
wget http://atlas-computing.web.cern.ch/atlas-computing/projects/script_out/Tags_15.5.2__gt_16.0.0_.txt
wget http://atlas-computing.web.cern.ch/atlas-computing/projects/script_out/pTags_15.5.2--15.5.X.Y-T0_.txt
wget http://atlas-computing.web.cern.ch/atlas-computing/projects/script_out/pTags_15.5.2--15.5.X.Y-Prod_.txt
wget http://atlas-computing.web.cern.ch/atlas-computing/projects/script_out/pTags_15.5.2--15.5.X.Y-P1HLT_.txt
filelist=`ls *Tags_*.txt`
for file in $filelist
do
filename=`basename $file .txt`
outfile=${filename}.log
egrep "InnerDetector|Tracking" ${file} > ${outfile}
echo ""
echo $file
cat $outfile
done