diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/CMakeLists.txt b/InnerDetector/InDetValidation/InDetPhysValMonitoring/CMakeLists.txt index 1a91575ac1192e190c108be82d55d6e7fcef6a6f..94e561c79e044ecf70252fdc1d708b7152ecd639 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/CMakeLists.txt +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/CMakeLists.txt @@ -51,6 +51,6 @@ atlas_add_component( InDetPhysValMonitoring # Install files from the package: atlas_install_headers( InDetPhysValMonitoring ) atlas_install_python_modules( python/*.py ) -atlas_install_runtime( share/*.hdef ) +atlas_install_runtime( share/*.hdef share/*.xml share/*.xsl} ) atlas_install_runtime( test/InDetPhysValMonitoring_TestConfiguration.xml ) diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValLargeD0Tool.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValLargeD0Tool.h index 84242ebb66bbd13459608b8dfac1eb3956b59673..a00f64682369f94b307caf70ef087e2d98774ede 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValLargeD0Tool.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValLargeD0Tool.h @@ -54,6 +54,7 @@ class InDetPhysValLargeD0Tool:public ManagedMonitorToolBase{ // * @asogaard bool isSignal (const xAOD::TruthParticle* p); bool isLargeD0Track (const xAOD::TrackParticle* p); + bool isPrimaryTrack (const xAOD::TruthParticle* p); bool MinTrackSelection (const xAOD::TrackParticle* p); // * Remove the following. bool isCameFromLLP(const xAOD::TruthParticle* p); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/cmt/requirements b/InnerDetector/InDetValidation/InDetPhysValMonitoring/cmt/requirements index 40a224ccf0b016b14259ef2fd56e6b72a8141e8a..403d7277d4799f6fade50c67b9022beec70a1306 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/cmt/requirements +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/cmt/requirements @@ -57,7 +57,8 @@ branches src src/components doc #apply_pattern lcgdict dict=InDetPhysValMonitoring selectionfile=selection.xml\ #headerfiles="../InDetPhysValMonitoring/InDetPhysValMonitoringDict.h" -apply_pattern declare_runtime files="*.hdef" +apply_pattern declare_runtime files="*.hdef *.xml *.xsl" + apply_pattern declare_joboptions files="*.py" diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/HistogramDefinitionSvc.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/HistogramDefinitionSvc.py index 3f9073bd8e31185534c093295a1e86272b1a7f54..680c6ce73d63c47b404f2bec60d11e64fb12b36b 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/HistogramDefinitionSvc.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/HistogramDefinitionSvc.py @@ -26,4 +26,6 @@ class HistogramDefinitionSvc(object) : name = self.__class__.__name__)) # special parameters of the default HistogramDefinitionSvc - self.DefinitionSource="inDetPhysValMonitoringPlotDefinitions.hdef" + self.DefinitionSource="InDetPhysValMonitoringPlotDefinitions.xml" + self.DefinitionFormat="text/xml" + diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecoration.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecoration.py index 7a431ee7b432695ae66d988ca0c8622b242f6d0a..ae3347449a4d8794d165aac5c96d78f74874c071 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecoration.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecoration.py @@ -22,12 +22,19 @@ def findAlg(alg_name) : if no algorithm of the given name is found the index just before the AhtenaOutputStream is returned. if all that fails None is returned. ''' + if not isinstance(alg_name, (list, tuple)) : + print >> sys.stderr,'ERROR logic error findAlg called with a non list argument %s / %s' %(alg_name,type(alg_name)) + import sys + sys.exit(1) + from AthenaCommon.AlgSequence import AlgSequence,AthSequencer topSequence = AlgSequence() count=0 mon_man_index=None for child in topSequence.getChildren() : + # if child.getName() in alg_name : if child.getName() in alg_name : + # print 'DEBUG findAlg %s =?= %s ' %(child.getName(),alg_name) mon_man_index = count if len(alg_name) == 1 : break @@ -35,10 +42,10 @@ def findAlg(alg_name) : if mon_man_index == None : count=0 - exclude_streams=['StreamBS'] + exclude_streams=['StreamBS'] for child in topSequence.getChildren() : if child.getType() == 'AthenaOutputStream' and child.getName() not in exclude_streams: - print 'DEBUG found %s at postion %i/%i' % (child.getFullName(),count,len(topSequence.getChildren() ) ) + # print 'DEBUG found %s at postion %i/%i' % (child.getFullName(),count,len(topSequence.getChildren() ) ) mon_man_index = count break count += 1 @@ -235,9 +242,16 @@ def _addDecorators(decorator_alg_list, add_after=None) : which is generally not available at later stages. The decorations added by this algorithm are used by InDetPhysValMonitoring tool. ''' + + if add_after != None and not isinstance(add_after, (list, tuple)) : + print >> sys.stderr,'ERROR logic error findAlg called with a non list argument %s / %s' %(alg_name,type(alg_name)) + import sys + sys.exit(1) + # Access the algorithm sequence: from AthenaCommon.AlgSequence import AlgSequence,AthSequencer topSequence = AlgSequence() + # print 'DEBUG add _addDecorators add after %s ' % (add_after) # if there is a monitoring manager add decorator before mon_man_index=findMonMan() @@ -246,10 +260,11 @@ def _addDecorators(decorator_alg_list, add_after=None) : if alg_index != None : # add after the found algorithm mon_man_index =alg_index + 1 + # print 'DEBUG _addDecorators after this %s ' % (mon_man_index) if mon_man_index == None : for decorator_alg in decorator_alg_list : - if findAlg(decorator_alg.getName()) != None : + if findAlg([decorator_alg.getName()]) != None : print 'DEBUG decorator %s already in sequence. Not adding again.' % (decorator_alg.getFullName()) continue print 'DEBUG add decorator %s at end of top sequence:' % (decorator_alg.getFullName()) @@ -257,8 +272,8 @@ def _addDecorators(decorator_alg_list, add_after=None) : else : for decorator_alg in decorator_alg_list : - if findAlg(decorator_alg.getName()) != None : - print 'DEBUG decorator %s already in sequence. Not adding again.' % (decorator_alg.getFullName()) + if findAlg([decorator_alg.getName()]) != None : + print 'DEBUG decorator %s already in sequence. Not inserting again.' % (decorator_alg.getFullName()) continue print 'DEBUG insert decorator %s at position %i' % (decorator_alg.getFullName(),mon_man_index) topSequence.insert(mon_man_index,decorator_alg) @@ -274,6 +289,7 @@ def addGSFTrackDecoratorAlg() : from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags if InDetPhysValFlags.doValidateGSFTracks() : + # print 'DEBUG add addGSFTrackDecoratorAlg' decorators=[InDetPhysValDecoratorAlg.InDetPhysValDecoratorAlgGSF() ] # add the InDetPhysValDecoratorAlgGSF after the egamma algorithms ran # they build the GSF track particles. @@ -287,7 +303,7 @@ def addGSFTrackDecoratorAlg() : # print ToolSvc # print 'DEBUG has EMBremCollectionBuilder %s' % hasattr(ToolSvc,'EMBremCollectionBuilder') if hasattr(ToolSvc,'EMBremCollectionBuilder') : - decor_index = findAlg(decorators[0].getName()) + decor_index = findAlg([decorators[0].getName()]) if decor_index != None : from TrkTrackSlimmer.TrkTrackSlimmerConf import Trk__TrackSlimmer as ConfigurableTrackSlimmer slimmer = ConfigurableTrackSlimmer(name = "RealGSFTrackSlimmer", diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringTool.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringTool.py index c36eea1866b3481f658dc4203e1abfb9cbf6f6e5..633e0c2329bcc8608d24a40afcbadbf042b5baca 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringTool.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringTool.py @@ -40,6 +40,9 @@ class InDetPhysValMonitoringTool(object) : if isMC() : self.TruthParticleContainerName = "TruthParticles" self.jetContainerName ='AntiKt4TruthJets' + from InDetPhysValMonitoring.addTruthJets import addTruthJetsIfNotExising + addTruthJetsIfNotExising(self.jetContainerName) + else : # disable truth monitoring for data self.TruthParticleContainerName = '' @@ -47,6 +50,26 @@ class InDetPhysValMonitoringTool(object) : self.jetContainerName ='' + # hack to remove example phyval monitor + from RecExConfig.AutoConfiguration import IsInInputFile + if not IsInInputFile('xAOD::JetContainer','AntiKt4EMTopoJets') : + from InDetPhysValDecoration import findMonMan + mon_index = findMonMan() + if mon_index != None : + import re + pattern=re.compile('.*PhysValExample') + + from AthenaCommon.AlgSequence import AlgSequence,AthSequencer + topSequence = AlgSequence() + mon_manager = topSequence.getChildren()[mon_index] + del_idx=None + for tool in mon_manager.AthenaMonTools : + print 'DEBUG %s AthenaMonTools %s' % (mon_manager.getName(),tool.getName()) + if pattern.match(tool.getName()) != None : + mon_manager.AthenaMonTools.remove(tool) + break + + class InDetPhysValMonitoringToolGSF(InDetPhysValMonitoringTool) : ''' InDetPhysValMonitoringTool for GSF track particles diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py new file mode 100644 index 0000000000000000000000000000000000000000..f4bf41ea47b535c9371ea13cf7f329895e3b14d4 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py @@ -0,0 +1,113 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + + +def addTruthJetsIfNotExising(truth_jets_name) : + ''' + Add algorithm to create the truth jets collection unless the + collection exists already, or a truth jet finder is already running + ''' + from RecExConfig.AutoConfiguration import IsInInputFile + + # the jet collection name does not exist in the input file + # add a jet finder algorithm in front of the monitoring if the algorithm + # does not yet exist. + if not IsInInputFile('xAOD::JetContainer',truth_jets_name) : + try : + from RecExConfig.InputFilePeeker import inputFileSummary + print 'DEBUG addTruthJetsIfNotExising %s not in %s [file_type=%s]' % ( truth_jets_name, inputFileSummary['eventdata_itemsDic'], inputFileSummary['file_type'] ) + if truth_jets_name in inputFileSummary['eventdata_itemsDic'] : + return + except : + pass + + # Access the algorithm sequence: + from AthenaCommon.AlgSequence import AlgSequence,AthSequencer + topSequence = AlgSequence() + + # extract the jet finder type and main parameter + import re + extract_alg=re.search('^([^0-9]+)([0-9]+)TruthJets',truth_jets_name) + if extract_alg != None : + alg_type=extract_alg.group(1) + alg_param_str=extract_alg.group(2) + else : + alg_type='AntiKt' + alg_param_str=4 + + jet_finder_alg_name = "jetalg"+alg_type+alg_param_str+'TruthJets' + + # add the jet finder unless it exists already in the alg sequence + from InDetPhysValDecoration import findAlg,findMonMan + alg_pos=findAlg([jet_finder_alg_name]) + if alg_pos == None : + from JetRec.JetRecStandard import jtm + mon_man_index=findMonMan() + + # configure truth jet finding ? + from JetRec.JetRecFlags import jetFlags + jetFlags.useTruth = True + jetFlags.useTracks = False + jetFlags.truthFlavorTags = ["BHadronsInitial", "BHadronsFinal", "BQuarksFinal", + "CHadronsInitial", "CHadronsFinal", "CQuarksFinal", + "TausFinal", + "Partons", + ] + + # tool to create truth jet finding inputs + truth_part_copy_name='truthpartcopy' + dir(jtm) + create_truth_jet_input=None + if not hasattr(jtm,truth_part_copy_name) : + + from MCTruthClassifier.MCTruthClassifierConf import MCTruthClassifier + truth_classifier_name='JetMCTruthClassifier' + if not hasattr(jtm,truth_classifier_name) : + from AthenaCommon.AppMgr import ToolSvc + if not hasattr(ToolSvc,truth_classifier_name) : + truthClassifier = MCTruthClassifier(name = truth_classifier_name, + ParticleCaloExtensionTool="") + else : + truthClassifier = getattr(ToolSvc,truth_classifier_name) + jtm += truthClassifier + else : + truthClassifier = getattr(jtm,truth_classifier_name) + + from ParticleJetTools.ParticleJetToolsConf import CopyTruthJetParticles + create_truth_jet_input=CopyTruthJetParticles(truth_part_copy_name, OutputName="JetInputTruthParticles", + MCTruthClassifier=truthClassifier) + jtm +=create_truth_jet_input + else : + create_truth_jet_input=getattr(jtm,truth_part_copy_name) + + jet_finder_tool = jtm.addJetFinder(truth_jets_name, + alg_type, + float(alg_param_str)/10., + "truth", + ghostArea=0.0) + + + jet_tools=[] + from JetRec.JetFlavorAlgs import scheduleCopyTruthParticles + jet_tools += scheduleCopyTruthParticles() + jet_tools += [create_truth_jet_input] + jet_tools += jtm.jetrecs + + # add the jet finder in front of the monitoring + from JetRec.JetRecConf import JetAlgorithm + from JetRec.JetRecConf import JetToolRunner + jtm += JetToolRunner("jetrun", + Tools=jet_tools, + EventShapeTools=[], + # OutputLevel = 1, + Timer=jetFlags.timeJetToolRunner() + ) + + # jet_finder_alg = JetAlgorithm(jet_finder_alg_name, jet_tools) + jet_finder_alg = JetAlgorithm(jet_finder_alg_name) + # jet_finder_alg.OutputLevel = 1 + jet_finder_alg.Tools = [jtm.jetrun] + + if mon_man_index != None : + topSequence.insert(mon_man_index,jet_finder_alg) + else : + topSequence += jet_finder_alg diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysValITk_jobOptions.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysValITk_jobOptions.py index d029ad0c170ecc2b01f007dbc5bdf06bad16ec7d..b61b4c220426c0d786a2252def7fad71efb05521 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysValITk_jobOptions.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysValITk_jobOptions.py @@ -3,17 +3,17 @@ # $Id: PhysVal_jobOptions.py 714189 2015-12-11 17:33:02Z sroe $ # Set up the reading of the input xAOD: +import AthenaPoolCnvSvc.ReadAthenaPool -#"AOD.05522648._000044.pool.root.1" K-short dataset -#"ESD.05108991._000060.pool.root.1" original ttbar dataset -#"ESD.05297574._000081.pool.root.1" new ttbar dataset (this one should enable residuals) -#import getpass -#FNAME="root://eosatlas//eos/atlas/atlascerngroupdisk/det-slhc/users/oda/xAODexample/mc12_14TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.AOD.e1323_ATLAS-P2-ITK-01-00-00_19.2.3.1_20.1.3.2.pool.root" - +# read single file FNAME="AOD.pool.root" -import AthenaPoolCnvSvc.ReadAthenaPool +#FNAME="root://eosatlas//eos/atlas/atlascerngroupdisk/det-slhc/users/oda/xAODexample/mc12_14TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.AOD.e1323_ATLAS-P2-ITK-01-00-00_19.2.3.1_20.1.3.2.pool.root" svcMgr.EventSelector.InputCollections = [ FNAME ] -#include( "AthenaPython/iread_file.py" ) + +# read multiple files: +#import glob +#INFILES=glob.glob('indir/*pool.root*') +#svcMgr.EventSelector.InputCollections = INFILES # Set global flags from AthenaCommon.AthenaCommonFlags import athenaCommonFlags @@ -88,9 +88,8 @@ topSequence = AlgSequence() from InDetPhysValMonitoring.InDetPhysValMonitoringConf import HistogramDefinitionSvc ToolSvc = ServiceMgr.ToolSvc ServiceMgr+=HistogramDefinitionSvc() -#ServiceMgr.HistogramDefinitionSvc.DefinitionSource="../share/inDetPhysValMonitoringPlotDefinitions.hdef" -ServiceMgr.HistogramDefinitionSvc.DefinitionSource="../share/ITKHistDef.hdef" - +ServiceMgr.HistogramDefinitionSvc.DefinitionSource="../share/ITKHistDef.xml" +ServiceMgr.HistogramDefinitionSvc.DefinitionFormat="text/xml" from InDetPhysValMonitoring.InDetPhysValMonitoringConf import InDetPhysValDecoratorAlg decorators = InDetPhysValDecoratorAlg() @@ -165,7 +164,7 @@ svcMgr.THistSvc.Output += ["MyPhysVal DATAFILE='MyPhysVal.root' OPT='RECREATE'"] from AthenaCommon.AppMgr import theApp ServiceMgr.MessageSvc.OutputLevel = INFO ServiceMgr.MessageSvc.defaultLimit = 10000 -theApp.EvtMax = 50 +#theApp.EvtMax = 50 # dump configuration from AthenaCommon.ConfigurationShelve import saveToAscii diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysVal_jobOptions.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysVal_jobOptions.py index b84aa117acc8035b78498e4071bfecb381f310d9..028e38c9763fee92aefec94ebc88271f2f00e40b 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysVal_jobOptions.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/PhysVal_jobOptions.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# $Id: PhysVal_jobOptions.py 747937 2016-05-18 10:37:38Z sroe $ +# $Id: PhysVal_jobOptions.py 757079 2016-06-22 18:56:37Z goetz $ # Set up the reading of the input xAOD: @@ -10,9 +10,9 @@ import getpass FNAME = "AOD.pool.root" if (getpass.getuser())=="mbaugh": - #FNAME = "../rootfile_storage/ESD.large.pool.root" + FNAME = "../rootfile_storage/ESD.largeC.pool.root" #FNAME = "../rootfile_storage/AOD.05522648._000044.pool.root.1" - FNAME = "../rootfile_storage/ESD.05297574._000081.pool.root.1" + #FNAME = "../rootfile_storage/ESD.05297574._000081.pool.root.1" print " Hello, Max" #FNAME = "ESD.05297574._000081.pool.root.1" @@ -27,7 +27,7 @@ topSequence = AlgSequence() from InDetPhysValMonitoring.InDetPhysValMonitoringConf import HistogramDefinitionSvc ToolSvc = ServiceMgr.ToolSvc ServiceMgr+=HistogramDefinitionSvc() -ServiceMgr.HistogramDefinitionSvc.DefinitionSource="../share/hdef.xml" +ServiceMgr.HistogramDefinitionSvc.DefinitionSource="../share/InDetPhysValMonitoringPlotDefinitions.xml" ServiceMgr.HistogramDefinitionSvc.DefinitionFormat="text/xml" from InDetPhysValMonitoring.InDetPhysValMonitoringConf import InDetPhysValDecoratorAlg @@ -81,4 +81,4 @@ ServiceMgr.MessageSvc.OutputLevel = INFO ServiceMgr.MessageSvc.defaultLimit = 10000 theApp.EvtMax = -1 if (getpass.getuser())=="sroe": - theApp.EvtMax = 1 \ No newline at end of file + theApp.EvtMax = 1 diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/generateESD.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/generateESD.py index 7ebb92d4f4db62396a19aa18cef4e2e8197382e0..6ff80c71d86dd3df2b63c6ee644ccd68137b5fd6 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/generateESD.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/run/generateESD.py @@ -19,8 +19,8 @@ AODFlags.TrackParticleLastHitAndPerigeeSlimmer=False from RecExConfig.RecFlags import rec rec.doTrigger=False -#from InDetRecExample.InDetjobProperties import InDetFlags -#InDetFlags.doSlimming.set_Value_and_Lock(False) +from InDetRecExample.InDetJobProperties import InDetFlags +InDetFlags.doSlimming.set_Value_and_Lock(False) #from JetRec.JetRecFlags import jetFlags #jetFlags.applyCalibration = False diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/ITKHistDef.hdef b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/ITKHistDef.hdef deleted file mode 100644 index ead99bad9dfae3b4b35f09d7c87bc418e315068b..0000000000000000000000000000000000000000 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/ITKHistDef.hdef +++ /dev/null @@ -1,239 +0,0 @@ -TH1F num_truthmatch_match "num_truthmatch_match" 10 0 10 "Num. matching truth" "Entries" default -TH1F nparticle "Number of Truth Particles" 200 0 2000 "Num. truth particles" "Entries" default -TH1F ntracksel "Number of Selected Tracks" 200 0 1000 "Num. tracks" "Entries" default -TH1F ntrack "Number of Tracks" 200 0 1000 "Num. tracks" "Entries" default -# -#testing -TH1F 002_Al_N_01 "Test Case: Visible E_{T} (SRoe)" 100 0 100 "Visible E_{T} (sroe)" "Entries" default -TH1F test "Test Case: Visible E_{T} (GeV)" 100 0 100 "Visible E_{T} (GeV)" "Entries" default -TProfile testProfile "Test of TProfile" 20 -50 50 0 200 "#eta" "Entries" default -# -#pT -TH1F recpT "p_{T} of selected rec tracks (in GeV)" 200 0. 200 "p_{T} (GeV/c)" "Entries" default -TH1F recpTlow "p_{T} of selected rec tracks (in GeV)" 200 0. 20 "p_{T} (GeV/c)" "Entries" default -# -#basic plots -TH1F basicd0 "d_{0} of selected tracks (in mm)" 200 -2 2 "d_{0}(mm)" "Entries" default -TH1F basicz0 "z_{0} of selected tracks (in mm)" 120 -300 300 "z_{0}(mm)" "Entries" default -TH1F basicphi "#phi of selected tracks" 100 -4 4 "#phi" "Entries" default -TH1F basiceta "#eta of selected tracks" 100 -5 5 "#eta" "Entries" default -TH1F basictheta "#theta of selected tracks" 100 0 3.1415926 "#theta" "Entries" default -TH1F basicqOverP "q/p of selected tracks (in GeV)" 200 -0.01 0.01 "p_{T}(GeV/c)" "Entries" default -TH1F truthd0 "d_{0} of selected truth (in mm)" 200 -2 2 "d_{0}(mm)" "Entries" default -TH1F truthz0 "z_{0} of selected truth (in mm)" 120 -300 300 "z_{0}(mm)" "Entries" default -TH1F truthphi "#phi of selected truth" 100 -4 4 "#phi" "Entries" default -TH1F trutheta "#eta of selected truth" 100 -5 5 "#theta" "Entries" default -TH1F truththeta "#theta of selected truth" 100 0 3.1415926 "#theta" "Entries" default -TH1F truthqOverP "q/p of selected truth (in GeV)" 200 -0.005 0.005 "p_{T}(GeV/c)" "Entries" default -TH1F truthz0st "z_{0} sin(#theta) of selected truth " 200 -300 300 "p_{T}(GeV/c)" "Entries" default -TH1F truthprodR "Radial distance (r) of truth vtx parameter from origin" 100 0.0 2.0 "(mm)" "Entries" default -TH1F truthprodZ "Longitudinal (z) distance of truth vtx parameter from origin" 100 0 300 "(mm)" "Entries" default - -# -#fakes -TH1F fakepT "p_{T} of selected fake tracks (in GeV)" 200 0. 200 "p_{T}(GeV/c)" "Entries" default -TH1F fakepTlow "p_{T} of selected fake tracks (in GeV)" 200 0 20 "p_{T}(GeV/c)" "Entries" default -TH1F fakephi "#phi of selected fake tracks" 100 -3.1415926 3.1415926 "#phi" "Entries" default -TH1F fakeeta "#eta of selected fake tracks" 100 -5 5 "#eta" "Entries" default -TH1F faked0 "d_{0} of selected fake tracks (in mm)" 200 -5 5 "d_{0}(mm)" "Entries" default -TH1F fakez0 "z_{0} of selected fake tracks (in mm)" 120 -300 300 "z_{0}(mm)" "Entries" default -TProfile track_fakerate_vs_eta "Fraction of tracks with <50% truth match probability" 20 -2.5 2.5 0 1 "#eta" "Fake Rate" default -TProfile track_fakerate_vs_pt "Fraction of tracks with <50% truth match probability" 25 0 50 0 1 "p_{T}(GeV/c)" "Fake Rate" default -TProfile track_fakerate_vs_phi "Fraction of tracks with <50% truth match probability" 24 -180 180 0 100 "#phi" "Fake Rate" default -TProfile track_fakerate_vs_d0 "Fraction of tracks with <50% truth match probability" 20 -6 6 0 100 "d0" "Fake Rate" default -TProfile track_fakerate_vs_z0 "Fraction of tracks with <50% truth match probability" 20 -300 300 0 100 "z0" "Fake Rate" default -# - -#eff -TH1F eff_pt_Numerator "p_{T} of reco-matched truth track (in GeV)" 200 0. 200 "p_{T}(GeV/c)" "Entries" default -TH1F eff_pt_Denominator "p_{T} of truth track (in GeV)" 200 0. 200 "p_{T}(GeV/c)" "Entries" default -TH1F eff_eta_Numerator "#eta of reco-matched truth track" 100 -5 5 "#eta" "Entries" default -TH1F eff_eta_Denominator "#eta of truth track" 100 -5 5 "#eta" "Entries" default -TH1F eff_phi_Numerator "#phi of reco-matched truth track" 100 -3.1415926 3.1415926 "#phi" "Entries" default -TH1F eff_phi_Denominator "#phi of truth track" 100 -3.1415926 3.1415926 "#phi" "Entries" default -TH1F eff_d0_Numerator "d_{0} of reco-matched truth track (in mm)" 150 -300 300 "d_{0}(mm)" "Entries" default -TH1F eff_d0_Denominator "d_{0} of truth track (in mm)" 150 -300 300 "d_{0}(mm)" "Entries" default -TH1F eff_z0_Numerator "z_{0} of reco-matched truth track (in mm)" 150 -1500 1500 "z_{0}(mm)" "Entries" default -TH1F eff_z0_Denominator "z_{0} of truth track (in mm)" 150 -1500 1500 "z_{0}(mm)" "Entries" default -TH1F eff_R_Numerator "R of reco-matched truth track (in mm)" 150 0 300 "R(mm)" "Entries" default -TH1F eff_R_Denominator "R of truth track (in mm)" 150 0 300 "R(mm)" "Entries" default -TH1F eff_Z_Numerator "Z of reco-matched truth track (in mm)" 150 -1500 1500 "Z(mm)" "Entries" default -TH1F eff_Z_Denominator "Z of truth track (in mm)" 150 -1500 1500 "Z(mm)" "Entries" default -TProfile eff_vs_pt "Fraction of reco-matched truth track" 40 0 200 0 1 "p_{T}(GeV/c)" "Efficiency" default -TProfile eff_vs_eta "Fraction of reco-matched truth track" 40 -2.5 2.5 0 1 "#eta" "Efficiency" default -TProfile eff_vs_phi "Fraction of reco-matched truth track" 40 -3.1415926 3.1415926 0 1 "#phi" "Efficiency" default -TProfile eff_vs_d0 "Fraction of reco-matched truth track" 40 -300 300 0 1 "d0" "Efficiency" default -TProfile eff_vs_z0 "Fraction of reco-matched truth track" 40 -1500 1500 0 1 "z0" "Efficiency" default -TProfile eff_vs_R "Fraction of reco-matched truth track" 40 0 300 0 1 "R" "Efficiency" default -TProfile eff_vs_Z "Fraction of reco-matched truth track" 40 -1500 1500 0 1 "Z" "Efficiency" default - -TH1F eff_pt_Numerator_st "p_{T} of reco-matched truth track (in GeV)" 200 0. 200 "p_{T}(GeV/c)" "Entries" default -TH1F eff_eta_Numerator_st "#eta of reco-matched truth track" 100 -5 5 "#eta" "Entries" default -TH1F eff_phi_Numerator_st "#phi of reco-matched truth track" 100 -3.1415926 3.1415926 "#phi" "Entries" default -TH1F eff_d0_Numerator_st "d_{0} of reco-matched truth track (in mm)" 150 -300 300 "d_{0}(mm)" "Entries" default -TH1F eff_z0_Numerator_st "z_{0} of reco-matched truth track (in mm)" 150 -1500 1500 "z_{0}(mm)" "Entries" default -TH1F eff_R_Numerator_st "R of reco-matched truth track (in mm)" 150 0 300 "R(mm)" "Entries" default -TH1F eff_Z_Numerator_st "Z of reco-matched truth track (in mm)" 150 -1500 1500 "Z(mm)" "Entries" default - -TProfile eff_vs_pt_st "Fraction of reco-matched truth track" 40 0 200 0 1 "p_{T}(GeV/c)" "Efficiency" default -TProfile eff_vs_eta_st "Fraction of reco-matched truth track" 40 -2.5 2.5 0 1 "#eta" "Efficiency" default -TProfile eff_vs_phi_st "Fraction of reco-matched truth track" 40 -3.1415926 3.1415926 0 1 "#phi" "Efficiency" default -TProfile eff_vs_d0_st "Fraction of reco-matched truth track" 40 -300 300 0 1 "d0" "Efficiency" default -TProfile eff_vs_z0_st "Fraction of reco-matched truth track" 40 -1500 1500 0 1 "z0" "Efficiency" default -TProfile eff_vs_R_st "Fraction of reco-matched truth track" 40 0 300 0 1 "R" "Efficiency" default -TProfile eff_vs_Z_st "Fraction of reco-matched truth track" 40 -1500 1500 0 1 "Z" "Efficiency" default - - -#vertices -TH1F vx_x "X position of vertex" 200 -1.0 1.0 "X (mm)" "Entries" default -TH1F vx_y "Y position of vertex" 200 -1.0 1.0 "Y (mm)" "Entries" default -TH1F vx_z "Z position of vertex" 100 -300.0 300.0 "Z (mm)" "Entries" default -TH1F vx_err_x "X position error of vertex" 100 0.0 0.2 "#sigma(X) (mm)" "Entries" default -TH1F vx_err_y "Y position error of vertex" 100 0.0 0.2 "#sigma(Y) (mm)" "Entries" default -TH1F vx_err_z "Z position error of vertex" 100 0.0 1.0 "#sigma(Z) (mm)" "Entries" default -TH1F vx_chi2_over_ndf "vertex #chi^2 / ndf" 50 0 10. "#chi^{2}/ndf" "Entries" default -TH1F vx_type "Vertex type" 7 0 7 "Vertex type" "Entries" default -TH1F vx_nTracks "Number of tracks at vertex" 150 0 150 "Number of Tracks" "Entries" default -TH1F vx_track_weights "Weights of tracks at vertex" 100 0. 10.0 "Weight" "Entries" default -TH1F vx_track_pt "Tracks at vertex p_{T}" 100 0 20. "p_{T} (GeV)" "Entries" default -TH1F vx_track_eta "Tracks at vertex #eta" 100 -2.7 2.7 "#eta" "Entries" default -TH1F vx_track_nSiHits "Tracks at vertex number of Silicon Hits" 15 5 20 "Num. Si Hits" "Entries" default -TH1F vx_track_nSiHoles "Tracks at vertex number of Silicon Holes" 5 0 5 "Num. Si Holes" "Entries" default -TH1F vx_track_d0 "Tracks at vertex d_{0}" 100 -2.0 2.0 "d_{0} (mm)" "Entries" default -TH1F vx_track_err_d0 "Tracks at vertex d_{0} error" 50 0.0 1.0 "#sigma(d_{0}) (mm)" "Entries" default -TH1F vx_track_z0 "Tracks at vertex z_{0} - z_{0}^{vertex}" 100 -5.0 5.0 "z_{0}-z_{0}^{vertex} (mm)" "Entries" default -TH1F vx_track_err_z0 "Tracks at vertex z_{0} error" 50 0.0 5.0 "#sigma(z_{0}) (mm)" "Entries" default -# - -#Bad Match Rate (BMR) plots -TProfile BadMatchRate "Fraction of Tracks with < 80% Truth Matching Probability" 20 -2.5 2.5 0 2 "eta" "Bad Match Rate" default -TProfile BadMatchRate_vs_logpt "Fraction of Tracks with < 80% TMP vs Log(Pt)" 10 -0.5 2 0 2 "eta" "Bad Match Rate vs Log(Pt)" default - -TProfile ReallyFakeRate "Fraction of Tracks with < 20% Truth Matching Probability" 20 -2.5 2.5 0 2 "eta" "Really Fake Rate" default -# - -#hitResidual plots -#x residuals -TH1F residualx_pixel_barrel "Residual: Pixel Barrel X" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_pixel_barrel_1hit "Residual: Pixel Barrel X 1 hit" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_pixel_barrel_2ormorehits "Residual: Pixel Barrel X >=2 hits" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_sct_barrel "Residual: SCT Barrel X" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_sct_barrel_1hit "Residual: SCT Barrel X 1 hit" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_sct_barrel_2ormorehits "Residual: SCT Barrel X >=2 hits" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_blayer_barrel "Residual: B-Layer Barrel X" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_blayer_barrel_1hit "Residual: B-Layer Barrel X 1 hit" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_blayer_barrel_2ormorehits "Residual: B-Layer Barrel X >=2 hits" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_trt_barrel "Residual: TRT Barrel X" 120 -3000 3000 "x residual(#mum)" "Entries" default -#endcaps -TH1F residualx_pixel_endcap "Residual: Pixel Endcap X" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_pixel_endcap_1hit "Residual: Pixel Endcap X 1 hit" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_pixel_endcap_2ormorehits "Residual: Pixel Endcap X >=2 hits" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_sct_endcap "Residual: SCT Endcap X" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_sct_endcap_1hit "Residual: SCT Endcap X 1 hit" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_sct_endcap_2ormorehits "Residual: SCT Endcap X >=2 hits" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_blayer_endcap "Residual: B-Layer Endcap X" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_blayer_endcap_1hit "Residual: B-Layer Endcap X 1 hit" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_blayer_endcap_2ormorehits "Residual: B-Layer Endcap X >=2 hits" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_trt_endcap "Residual: TRT Endcap X" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualx_dbm_neg "Residual: DBM -side X" 120 -3000 3000 "x residual(#mum)" "Entries" default -TH1F residualx_dbm_pos "Residual: DBM +side X" 120 -3000 3000 "x residual(#mum)" "Entries" default -#y residuals -TH1F residualy_pixel_barrel "Residual: Pixel Barrel Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_pixel_barrel_1hit "Residual: Pixel Barrel Y 1 hit" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_pixel_barrel_2ormorehits "Residual: Pixel Barrel Y >=2 hits" 120 -50 50 "x residual(#mum)" "Entries" default -TH1F residualy_sct_barrel "Residual: SCT Barrel Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_sct_barrel_1hit "Residual: SCT Barrel Y 1 hit" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_sct_barrel_2ormorehits "Residual: SCT Barrel Y >=2 hits" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_blayer_barrel "Residual: B-Layer Barrel Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_blayer_barrel_1hit "Residual: B-Layer Barrel Y 1 hit" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_blayer_barrel_2ormorehits "Residual: B-Layer Barrel Y >=2 hits" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_trt_barrel "Residual: TRT Barrel Y" 120 0 2500 "y residual(#mum)" "Entries" default -#endcaps -TH1F residualy_pixel_endcap "Residual: Pixel Endcap Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_pixel_endcap_1hit "Residual: Pixel Endcap Y 1 hit" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_pixel_endcap_2ormorehits "Residual: Pixel Endcap Y >=2 hits" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_sct_endcap "Residual: SCT Endcap Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_sct_endcap_1hit "Residual: SCT Endcap Y 1 hit" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_sct_endcap_2ormorehits "Residual: SCT Endcap Y >=2 hits" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_blayer_endcap "Residual: B-Layer Endcap Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_blayer_endcap_1hit "Residual: B-Layer Endcap Y 1 hit" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_blayer_endcap_2ormorehits "Residual: B-Layer Endcap Y >=2 hits" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_trt_endcap "Residual: TRT Endcap Y" 120 -50 50 "y residual(#mum)" "Entries" default -TH1F residualy_dbm_neg "Residual: DBM -side Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualy_dbm_pos "Residual: DBM +side Y" 10 -5 5 "y residual(#mum)" "Entries" default -#pulls -#barrel, x -TH1F residualpullx_blayer_barrel "Residualpull: B-Layer Barrel X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_pixel_barrel "Residualpull: Pixel Barrel X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_sct_barrel "Residualpull: SCT Barrel X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_trt_barrel "Residualpull: TRT Barrel X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_dbm_barrel "Residualpull: DBM -side X" 10 -5 5 "x residual(#mum)" "Entries" default -#endcap, x -TH1F residualpullx_blayer_endcap "Residualpull: B-Layer Endcap X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_pixel_endcap "Residualpull: Pixel Endcap X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_sct_endcap "Residualpull: SCT Endcap X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_trt_endcap "Residualpull: TRT Endcap X" 10 -5 5 "x residual(#mum)" "Entries" default -TH1F residualpullx_dbm_endcap "Residualpull: DBM +side X" 10 -5 5 "x residual(#mum)" "Entries" default -#barrel, y -TH1F residualpully_blayer_barrel "Residualpull: B-Layer Barrel Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_pixel_barrel "Residualpull: Pixel Barrel Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_sct_barrel "Residualpull: SCT Barrel Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_trt_barrel "Residualpull: TRT Barrel Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_dbm_barrel "Residualpull: DBM -side Y" 10 -5 5 "y residual(#mum)" "Entries" default -#endcap,y -TH1F residualpully_blayer_endcap "Residualpull: B-Layer Endcap Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_pixel_endcap "Residualpull: Pixel Endcap Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_sct_endcap "Residualpull: SCT Endcap Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_trt_endcap "Residualpull: TRT Endcap Y" 10 -5 5 "y residual(#mum)" "Entries" default -TH1F residualpully_dbm_endcap "Residualpull: DBM +side Y" 10 -5 5 "y residual(#mum)" "Entries" default -# -#TrackInJets -TH1F recInJetpT "p_{T} of selected rec tracks in jets(in GeV)" 200 0. 200 "p_{T}(GeV/c)" "Entries" default -TH1F nTrackInJet "Number of Tracks in Jet" 50 0. 50 "N Tracks" "Entries" "default" -TH1F sumPtinJet "Sum p_{T} of Tracks in Jet" 25 0 500 "sum p_{T}(GeV/c)" "Entries" default -TH1F fracPtInJet "Sum p_{T} of Tracks over jet p_{T}" 60 0 3 "sum Track p_{T}/jet p_{T}" "Entries" default - -#spectrum plots -TH1F nSCTHits "# SCT hits" 20 0. 20 "# SCT Hits" "Entries" default -TH1F nPixHits "# Pix hits" 20 0. 20 "# Pix Hits" "Entries" default -TH1F nTotHits "# Total hits" 20 0. 20 "# Totat Hits" "Entries" default -TH1F nSCTDeadSensors "# SCT DeadSensors" 20 0. 20 "# SCT DeadSensors" "Entries" default -TH1F nPixDeadSensors "# Pix DeadSensors" 20 0. 20 "# Pix DeadSensors" "Entries" default -TH1F nTotDeadSensors "# Total DeadSensors" 20 0. 20 "# Total DeadSensors" "Entries" default -TProfile nSCTHits_vs_eta "# SCT hits vs Eta" 80 -4 4 0 20 "#eta" "# SCT Hits" default -TProfile nPixHits_vs_eta "# Pix hits vs Eta" 80 -4 4 0 20 "#eta" "# Pix Hits" default -TProfile nTotHits_vs_eta "# total hits vs Eta" 80 -4 4 0 20 "#eta" "# total Hits" default -TProfile nSCTDeadSensors_vs_eta "# SCT deadsensors vs Eta" 80 -4 4 0 20 "#eta" "# SCT deadsensors" default -TProfile nPixDeadSensors_vs_eta "# pix deadsensors vs Eta" 80 -4 4 0 20 "#eta" "# pix deadsensors" default -TProfile nTotDeadSensors_vs_eta "# total deadsensors vs Eta" 80 -4 4 0 20 "#eta" "# total deadsensors" default -TH1F recoMatchProbabilitySpectrum "truth match probability spectrum" 40 0. 1 "truth match probability" "Entries" default -TH1F recoEtaSpectrum "reco eta spectrum" 80 -4 4 "#eta" "Entries" default -TH1F recoPhiSpectrum "reco phi spectrum" 60 -3 3 "#phi" "Entries" default -TH1F recoPtSpectrum "reco pt spectrum" 100 0. 100 "pt (GeV/c)" "Entries" default -TH1F truthEtaSpectrum "truth eta spectrum" 80 -4 4 "#eta" "Entries" default -TH1F truthPhiSpectrum "truth phi spectrum" 60 -3 3 "#phi" "Entries" default -TH1F truthPtSpectrum "truth pt spectrum" 100 0. 100 "pt (GeV/c)" "Entries" default - -#HitContent plots -TProfile HitContent_vs_eta_NBlayerHits "Number of B-Layer clusters" 80 -4 4 0 100 "#eta" "<Number of B-layer clusters>" default -TProfile HitContent_vs_eta_NPixelHits "Number of Pixel clusters" 80 -4 4 0 100 "#eta" "<Number of Pixel clusters>" default -TProfile HitContent_vs_eta_DBMHitsNeg "Number of DBM Clusters" 20 -3.8 -2.5 0 100 "#eta" "<Number of DBM clusters, - side>" default -TProfile HitContent_vs_eta_DBMHitsPos "Number of DBM Clusters" 20 2.5 3.8 0 100 "#eta" "<Number of DBM Clusters, + side>" default -TProfile HitContent_vs_eta_NPixelHoles "Number of Pixel Holes" 80 -4 4 0 100 "#eta" "<Number of Pixel Holes>" default -TProfile HitContent_vs_eta_NSCTHits "Number of SCT Clusters" 80 -4 4 0 100 "#eta" "<Number of SCT Clusters>" default -TProfile HitContent_vs_eta_NSCTHoles "Number of SCT Holes" 80 -4 4 0 100 "#eta" "<Number of SCT Holes>" default -TProfile HitContent_vs_eta_NTRTHits "Number of TRT Clusters" 80 -4 4 0 100 "#eta" "<Number of TRT Hits>" default -TProfile HitContent_vs_eta_NTRTHighThresholdHits "Number of TRT high threshold clusters" 80 -4 4 0 100 "#eta" "<Number of High Thresh TRT Hits>" default -TProfile HitContent_vs_eta_NBlayerOutliers "Number of B-layer outliers" 80 -4 4 0 100 "#eta" "<Number of B-layer Outliers>" default -TProfile HitContent_vs_eta_NBlayerSharedHits "Number of shared B-layer clusters" 80 -4 4 0 100 "#eta" "<Number of B-layer Shared Hits>" default -TProfile HitContent_vs_eta_NBLayerSplitHits "Number of split B-layer clusters" 80 -4 4 0 100 "#eta" "<Number of B-layer Split Hits>" default -TProfile HitContent_vs_eta_NPixelOutliers "Number of Pixel outliers" 80 -4 4 0 100 "#eta" "<Number of Pixel Outliers>" default -TProfile HitContent_vs_eta_NPixelContribLayers "Number of contributed Pixel layers" 80 -4 4 0 100 "#eta" "<Number of Pixel Layers>" default -TProfile HitContent_vs_eta_NPixelSharedHits "Number of shared Pixel clusters" 80 -4 4 0 100 "#eta" "<Number of Pixel Shared Hits>" default -TProfile HitContent_vs_eta_NPixelSplitHits "Number of split Pixel clusters" 80 -4 4 0 100 "#eta" "<Number of Pixel Split Hits>" default -TProfile HitContent_vs_eta_NPixelGangedHits "Number of ganged Pixel clusters" 80 -4 4 0 100 "#eta" "<Number of Pixel Ganged Hits>" default -TProfile HitContent_vs_eta_NSCTOutliers "Number of SCT Outliers" 80 -4 4 0 100 "#eta" "<Number of SCT Outliers>" default -TProfile HitContent_vs_eta_NSCTDoubleHoles "Number of SCT double holes" 80 -4 4 0 100 "#eta" "<Number of SCT Double Holes>" default -TProfile HitContent_vs_eta_NSCTSharedHits "Number of SCT Shared clusters" 80 -4 4 0 100 "#eta" "<Number of SCT Shared Hits>" default -TProfile HitContent_vs_eta_NTRTOutliers "Number of TRT outliers" 80 -4 4 0 100 "#eta" "<Number of TRT Outliers>" default -TProfile HitContent_vs_eta_NTRTHighThresholdOutliers "Number of TRT High Threshold outliers" 80 -4 4 0 100 "#eta" "<Number of TRT High Thresh Outliers>" default diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/ITKHistDef.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/ITKHistDef.xml new file mode 100644 index 0000000000000000000000000000000000000000..e615a9b50da028f39bf394db7aed3a94216e487e --- /dev/null +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/ITKHistDef.xml @@ -0,0 +1,929 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet type="text/xsl" media="screen" href="hdefhtml.xsl"?> +<?xml-stylesheet type="text/xsl" media="tty" href="hdeftty.xsl" alternate="yes"?> +<!DOCTYPE hdef [ +<!ENTITY PI "3.1415926"> +<!ENTITY ETA "4.0"> +]> +<hdef> +<h id="num_truthmatch_match" type="TH1F" title="num_truthmatch_match"> + <x title="Num. matching truth" n="10" lo="0" hi="10"/> + <y title="Entries"/> +</h> +<h id="nparticle" type="TH1F" title="Number of Truth Particles"> + <x title="Num. truth particles" n="200" lo="0" hi="2000"/> + <y title="Entries"/> +</h> +<h id="ntracksel" type="TH1F" title="Number of Selected Tracks"> + <x title="Num. tracks" n="200" lo="0" hi="1000"/> + <y title="Entries"/> +</h> +<h id="ntrack" type="TH1F" title="Number of Tracks"> + <x title="Num. tracks" n="200" lo="0" hi="1000"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- pT --> +<h id="recpT" type="TH1F" title="p_{T} of selected rec tracks (in GeV)"> + <x title="p_{T} (GeV/c)" n="200" lo="0." hi="200"/> + <y title="Entries"/> +</h> +<h id="recPtLow" type="TH1F" title="p_{T} of selected rec tracks (in GeV)"> + <x title="p_{T} (GeV/c)" n="200" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- basic plots --> +<h id="basicd0" type="TH1F" title="d_{0} of selected tracks (in mm)"> + <x title="d_{0}(mm)" n="200" lo="-2" hi="2"/> + <y title="Entries"/> +</h> +<h id="basicz0" type="TH1F" title="z_{0} of selected tracks (in mm)"> + <x title="z_{0}(mm)" n="120" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="basicphi" type="TH1F" title="#phi of selected tracks"> + <x title="#phi" n="100" lo="-4" hi="4"/> + <y title="Entries"/> +</h> +<h id="basiceta" type="TH1F" title="#eta of selected tracks"> + <x title="#eta" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="basictheta" type="TH1F" title="#theta of selected tracks"> + <x title="#theta" n="100" lo="0" hi="&PI;"/> + <y title="Entries"/> +</h> +<h id="basicqOverP" type="TH1F" title="q/p of selected tracks (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="-0.01" hi="0.01"/> + <y title="Entries"/> +</h> +<h id="truthd0" type="TH1F" title="d_{0} of selected truth (in mm)"> + <x title="d_{0}(mm)" n="200" lo="-2" hi="2"/> + <y title="Entries"/> +</h> +<h id="truthz0" type="TH1F" title="z_{0} of selected truth (in mm)"> + <x title="z_{0}(mm)" n="120" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="truthphi" type="TH1F" title="#phi of selected truth"> + <x title="#phi" n="100" lo="-4" hi="4"/> + <y title="Entries"/> +</h> +<h id="trutheta" type="TH1F" title="#eta of selected truth"> + <x title="#theta" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="truththeta" type="TH1F" title="#theta of selected truth"> + <x title="#theta" n="100" lo="0" hi="&PI;"/> + <y title="Entries"/> +</h> +<h id="truthqOverP" type="TH1F" title="q/p of selected truth (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="-0.005" hi="0.005"/> + <y title="Entries"/> +</h> +<h id="truthz0st" type="TH1F" title="z_{0} sin(#theta) of selected truth "> + <x title="p_{T}(GeV/c)" n="200" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="truthprodR" type="TH1F" title="Radial distance (r) of truth vtx parameter from origin"> + <x title="(mm)" n="100" lo="0.0" hi="2.0"/> + <y title="Entries"/> +</h> +<h id="truthprodZ" type="TH1F" title="Longitudinal (z) distance of truth vtx parameter from origin"> + <x title="(mm)" n="100" lo="0" hi="300"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- fakes --> +<h id="fakepT" type="TH1F" title="p_{T} of selected fake tracks (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="0." hi="200"/> + <y title="Entries"/> +</h> +<h id="fakepTlow" type="TH1F" title="p_{T} of selected fake tracks (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="0" hi="20"/> + <y title="Entries"/> +</h> +<h id="fakephi" type="TH1F" title="#phi of selected fake tracks"> + <x title="#phi" n="100" lo="-&PI;" hi="&PI;"/> + <y title="Entries"/> +</h> +<h id="fakeeta" type="TH1F" title="#eta of selected fake tracks"> + <x title="#eta" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="faked0" type="TH1F" title="d_{0} of selected fake tracks (in mm)"> + <x title="d_{0}(mm)" n="200" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="fakez0" type="TH1F" title="z_{0} of selected fake tracks (in mm)"> + <x title="z_{0}(mm)" n="120" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="track_fakerate_vs_eta" type="TProfile" title="Fraction of tracks with <50% truth match probability"> + <x title="#eta" n="20" lo="-&ETA;" hi="&ETA;"/> + <y title="Fake Rate" lo="0" hi="1"/> +</h> +<h id="track_fakerate_vs_pt" type="TProfile" title="Fraction of tracks with <50% truth match probability"> + <x title="p_{T}(GeV/c)" n="25" lo="0" hi="50"/> + <y title="Fake Rate" lo="0" hi="1"/> +</h> +<h id="track_fakerate_vs_phi" type="TProfile" title="Fraction of tracks with <50% truth match probability"> + <x title="#phi" n="24" lo="-180" hi="180"/> + <y title="Fake Rate" lo="0" hi="100"/> +</h> +<h id="track_fakerate_vs_d0" type="TProfile" title="Fraction of tracks with <50% truth match probability"> + <x title="d0" n="20" lo="-6" hi="6"/> + <y title="Fake Rate" lo="0" hi="100"/> +</h> +<h id="track_fakerate_vs_z0" type="TProfile" title="Fraction of tracks with <50% truth match probability"> + <x title="z0" n="20" lo="-300" hi="300"/> + <y title="Fake Rate" lo="0" hi="100"/> +</h> +<!-- --> +<!-- efficiency plots --> +<h id="eff_pt_Numerator" type="TH1F" title="p_{T} of reco-matched truth track (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="0." hi="200"/> + <y title="Entries"/> +</h> +<h id="eff_pt_Denominator" type="TH1F" title="p_{T} of truth track (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="0." hi="200"/> + <y title="Entries"/> +</h> +<h id="eff_eta_Numerator" type="TH1F" title="#eta of reco-matched truth track"> + <x title="#eta" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="eff_eta_Denominator" type="TH1F" title="#eta of truth track"> + <x title="#eta" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="eff_phi_Numerator" type="TH1F" title="#phi of reco-matched truth track"> + <x title="#phi" n="100" lo="-&PI;" hi="&PI;"/> + <y title="Entries"/> +</h> +<h id="eff_phi_Denominator" type="TH1F" title="#phi of truth track"> + <x title="#phi" n="100" lo="-&PI;" hi="&PI;"/> + <y title="Entries"/> +</h> +<h id="eff_d0_Numerator" type="TH1F" title="d_{0} of reco-matched truth track (in mm)"> + <x title="d_{0}(mm)" n="150" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="eff_d0_Denominator" type="TH1F" title="d_{0} of truth track (in mm)"> + <x title="d_{0}(mm)" n="150" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="eff_z0_Numerator" type="TH1F" title="z_{0} of reco-matched truth track (in mm)"> + <x title="z_{0}(mm)" n="150" lo="-1500" hi="1500"/> + <y title="Entries"/> +</h> +<h id="eff_z0_Denominator" type="TH1F" title="z_{0} of truth track (in mm)"> + <x title="z_{0}(mm)" n="150" lo="-1500" hi="1500"/> + <y title="Entries"/> +</h> +<h id="eff_R_Numerator" type="TH1F" title="R of reco-matched truth track (in mm)"> + <x title="R(mm)" n="150" lo="0" hi="300"/> + <y title="Entries"/> +</h> +<h id="eff_R_Denominator" type="TH1F" title="R of truth track (in mm)"> + <x title="R(mm)" n="150" lo="0" hi="300"/> + <y title="Entries"/> +</h> +<h id="eff_Z_Numerator" type="TH1F" title="Z of reco-matched truth track (in mm)"> + <x title="Z(mm)" n="150" lo="-1500" hi="1500"/> + <y title="Entries"/> +</h> +<h id="eff_Z_Denominator" type="TH1F" title="Z of truth track (in mm)"> + <x title="Z(mm)" n="150" lo="-1500" hi="1500"/> + <y title="Entries"/> +</h> +<h id="eff_vs_pt" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="p_{T}(GeV/c)" n="40" lo="0" hi="200"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_eta" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="#eta" n="40" lo="-&ETA;" hi="&ETA;"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_phi" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="#phi" n="40" lo="-&PI;" hi="&PI;"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_d0" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="d0" n="40" lo="-300" hi="300"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_z0" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="z0" n="40" lo="-1500" hi="1500"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_R" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="R" n="40" lo="0" hi="300"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_Z" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="Z" n="40" lo="-1500" hi="1500"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_pt_Numerator_st" type="TH1F" title="p_{T} of reco-matched truth track (in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="0." hi="200"/> + <y title="Entries"/> +</h> +<h id="eff_eta_Numerator_st" type="TH1F" title="#eta of reco-matched truth track"> + <x title="#eta" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="eff_phi_Numerator_st" type="TH1F" title="#phi of reco-matched truth track"> + <x title="#phi" n="100" lo="-&PI;" hi="&PI;"/> + <y title="Entries"/> +</h> +<h id="eff_d0_Numerator_st" type="TH1F" title="d_{0} of reco-matched truth track (in mm)"> + <x title="d_{0}(mm)" n="150" lo="-300" hi="300"/> + <y title="Entries"/> +</h> +<h id="eff_z0_Numerator_st" type="TH1F" title="z_{0} of reco-matched truth track (in mm)"> + <x title="z_{0}(mm)" n="150" lo="-1500" hi="1500"/> + <y title="Entries"/> +</h> +<h id="eff_R_Numerator_st" type="TH1F" title="R of reco-matched truth track (in mm)"> + <x title="R(mm)" n="150" lo="0" hi="300"/> + <y title="Entries"/> +</h> +<h id="eff_Z_Numerator_st" type="TH1F" title="Z of reco-matched truth track (in mm)"> + <x title="Z(mm)" n="150" lo="-1500" hi="1500"/> + <y title="Entries"/> +</h> +<h id="eff_vs_pt_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="p_{T}(GeV/c)" n="40" lo="0" hi="200"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_eta_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="#eta" n="40" lo="-&ETA;" hi="&ETA;"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_phi_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="#phi" n="40" lo="-&PI;" hi="&PI;"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_d0_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="d0" n="40" lo="-300" hi="300"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_z0_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="z0" n="40" lo="-1500" hi="1500"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_R_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="R" n="40" lo="0" hi="300"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<h id="eff_vs_Z_st" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="Z" n="40" lo="-1500" hi="1500"/> + <y title="Efficiency" lo="0" hi="1"/> +</h> +<!-- --> +<!-- vertices --> +<h id="vx_x" type="TH1F" title="X position of vertex"> + <x title="X (mm)" n="200" lo="-1.0" hi="1.0"/> + <y title="Entries"/> +</h> +<h id="vx_y" type="TH1F" title="Y position of vertex"> + <x title="Y (mm)" n="200" lo="-1.0" hi="1.0"/> + <y title="Entries"/> +</h> +<h id="vx_z" type="TH1F" title="Z position of vertex"> + <x title="Z (mm)" n="100" lo="-300.0" hi="300.0"/> + <y title="Entries"/> +</h> +<h id="vx_err_x" type="TH1F" title="X position error of vertex"> + <x title="#sigma(X) (mm)" n="100" lo="0.0" hi="0.2"/> + <y title="Entries"/> +</h> +<h id="vx_err_y" type="TH1F" title="Y position error of vertex"> + <x title="#sigma(Y) (mm)" n="100" lo="0.0" hi="0.2"/> + <y title="Entries"/> +</h> +<h id="vx_err_z" type="TH1F" title="Z position error of vertex"> + <x title="#sigma(Z) (mm)" n="100" lo="0.0" hi="1.0"/> + <y title="Entries"/> +</h> +<h id="vx_chi2_over_ndf" type="TH1F" title="vertex #chi^2 / ndf"> + <x title="#chi^{2}/ndf" n="50" lo="0" hi="10."/> + <y title="Entries"/> +</h> +<h id="vx_type" type="TH1F" title="Vertex type"> + <x title="Vertex type" n="7" lo="0" hi="7"/> + <y title="Entries"/> +</h> +<h id="vx_nTracks" type="TH1F" title="Number of tracks at vertex"> + <x title="Number of Tracks" n="150" lo="0" hi="150"/> + <y title="Entries"/> +</h> +<h id="vx_track_weights" type="TH1F" title="Weights of tracks at vertex"> + <x title="Weight" n="100" lo="0." hi="10.0"/> + <y title="Entries"/> +</h> +<h id="vx_track_pt" type="TH1F" title="Tracks at vertex p_{T}"> + <x title="p_{T} (GeV)" n="100" lo="0" hi="20."/> + <y title="Entries"/> +</h> +<h id="vx_track_eta" type="TH1F" title="Tracks at vertex #eta"> + <x title="#eta" n="100" lo="-2.7" hi="2.7"/> + <y title="Entries"/> +</h> +<h id="vx_track_nSiHits" type="TH1F" title="Tracks at vertex number of Silicon Hits"> + <x title="Num. Si Hits" n="15" lo="5" hi="20"/> + <y title="Entries"/> +</h> +<h id="vx_track_nSiHoles" type="TH1F" title="Tracks at vertex number of Silicon Holes"> + <x title="Num. Si Holes" n="5" lo="0" hi="5"/> + <y title="Entries"/> +</h> +<h id="vx_track_d0" type="TH1F" title="Tracks at vertex d_{0}"> + <x title="d_{0} (mm)" n="100" lo="-2.0" hi="2.0"/> + <y title="Entries"/> +</h> +<h id="vx_track_err_d0" type="TH1F" title="Tracks at vertex d_{0} error"> + <x title="#sigma(d_{0}) (mm)" n="50" lo="0.0" hi="1.0"/> + <y title="Entries"/> +</h> +<h id="vx_track_z0" type="TH1F" title="Tracks at vertex z_{0} - z_{0}^{vertex}"> + <x title="z_{0}-z_{0}^{vertex} (mm)" n="100" lo="-5.0" hi="5.0"/> + <y title="Entries"/> +</h> +<h id="vx_track_err_z0" type="TH1F" title="Tracks at vertex z_{0} error"> + <x title="#sigma(z_{0}) (mm)" n="50" lo="0.0" hi="5.0"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- Bad Match Rate (BMR) --> +<h id="BadMatchRate" type="TProfile" title="Fraction of Tracks with < 80% Truth Matching Probability"> + <x title="eta" n="20" lo="-&ETA;" hi="&ETA;"/> + <y title="Bad Match Rate" lo="0" hi="2"/> +</h> +<h id="BadMatchRate_vs_logpt" type="TProfile" title="Fraction of Tracks with < 80% TMP vs Log(Pt)"> + <x title="eta" n="10" lo="-0.5" hi="2"/> + <y title="Bad Match Rate vs Log(Pt)" lo="0" hi="2"/> +</h> +<h id="ReallyFakeRate" type="TProfile" title="Fraction of Tracks with < 20% Truth Matching Probability"> + <x title="eta" n="20" lo="-&ETA;" hi="&ETA;"/> + <y title="Really Fake Rate" lo="0" hi="2"/> +</h> +<!-- --> +<!-- hit residual plots --> +<!-- x residuals --> +<h id="residualx_pixel_barrel" type="TH1F" title="Residual: Pixel Barrel X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_pixel_barrel_1hit" type="TH1F" title="Residual: Pixel Barrel X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_pixel_barrel_2ormorehits" type="TH1F" title="Residual: Pixel Barrel X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_sct_barrel" type="TH1F" title="Residual: SCT Barrel X"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_sct_barrel_1hit" type="TH1F" title="Residual: SCT Barrel X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_sct_barrel_2ormorehits" type="TH1F" title="Residual: SCT Barrel X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_blayer_barrel" type="TH1F" title="Residual: B-Layer Barrel X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_blayer_barrel_1hit" type="TH1F" title="Residual: B-Layer Barrel X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_blayer_barrel_2ormorehits" type="TH1F" title="Residual: B-Layer Barrel X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_trt_barrel" type="TH1F" title="Residual: TRT Barrel X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<!-- endcaps --> +<h id="residualx_pixel_endcap" type="TH1F" title="Residual: Pixel Endcap X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_pixel_endcap_1hit" type="TH1F" title="Residual: Pixel Endcap X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_pixel_endcap_2ormorehits" type="TH1F" title="Residual: Pixel Endcap X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_sct_endcap" type="TH1F" title="Residual: SCT Endcap X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_sct_endcap_1hit" type="TH1F" title="Residual: SCT Endcap X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_sct_endcap_2ormorehits" type="TH1F" title="Residual: SCT Endcap X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_blayer_endcap" type="TH1F" title="Residual: B-Layer Endcap X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_blayer_endcap_1hit" type="TH1F" title="Residual: B-Layer Endcap X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_blayer_endcap_2ormorehits" type="TH1F" title="Residual: B-Layer Endcap X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_trt_endcap" type="TH1F" title="Residual: TRT Endcap X"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_dbm_neg" type="TH1F" title="Residual: DBM -side X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<h id="residualx_dbm_pos" type="TH1F" title="Residual: DBM +side X"> + <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <y title="Entries"/> +</h> +<!-- y residuals --> +<h id="residualy_pixel_barrel" type="TH1F" title="Residual: Pixel Barrel Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_pixel_barrel_1hit" type="TH1F" title="Residual: Pixel Barrel Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_pixel_barrel_2ormorehits" type="TH1F" title="Residual: Pixel Barrel Y >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_sct_barrel" type="TH1F" title="Residual: SCT Barrel Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_sct_barrel_1hit" type="TH1F" title="Residual: SCT Barrel Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_sct_barrel_2ormorehits" type="TH1F" title="Residual: SCT Barrel Y >=2 hits"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_blayer_barrel" type="TH1F" title="Residual: B-Layer Barrel Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_blayer_barrel_1hit" type="TH1F" title="Residual: B-Layer Barrel Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_blayer_barrel_2ormorehits" type="TH1F" title="Residual: B-Layer Barrel Y >=2 hits"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_trt_barrel" type="TH1F" title="Residual: TRT Barrel Y"> + <x title="y residual(#mum)" n="120" lo="0" hi="2500"/> + <y title="Entries"/> +</h> +<!-- endcaps --> +<h id="residualy_pixel_endcap" type="TH1F" title="Residual: Pixel Endcap Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_pixel_endcap_1hit" type="TH1F" title="Residual: Pixel Endcap Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_pixel_endcap_2ormorehits" type="TH1F" title="Residual: Pixel Endcap Y >=2 hits"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_sct_endcap" type="TH1F" title="Residual: SCT Endcap Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_sct_endcap_1hit" type="TH1F" title="Residual: SCT Endcap Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_sct_endcap_2ormorehits" type="TH1F" title="Residual: SCT Endcap Y >=2 hits"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_blayer_endcap" type="TH1F" title="Residual: B-Layer Endcap Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_blayer_endcap_1hit" type="TH1F" title="Residual: B-Layer Endcap Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_blayer_endcap_2ormorehits" type="TH1F" title="Residual: B-Layer Endcap Y >=2 hits"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_trt_endcap" type="TH1F" title="Residual: TRT Endcap Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_dbm_neg" type="TH1F" title="Residual: DBM -side Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualy_dbm_pos" type="TH1F" title="Residual: DBM +side Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- pulls --> +<!-- barrel, x --> +<h id="residualpullx_blayer_barrel" type="TH1F" title="Residualpull: B-Layer Barrel X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_pixel_barrel" type="TH1F" title="Residualpull: Pixel Barrel X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_sct_barrel" type="TH1F" title="Residualpull: SCT Barrel X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_trt_barrel" type="TH1F" title="Residualpull: TRT Barrel X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_dbm_barrel" type="TH1F" title="Residualpull: DBM -side X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<!-- endcap, x --> +<h id="residualpullx_blayer_endcap" type="TH1F" title="Residualpull: B-Layer Endcap X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_pixel_endcap" type="TH1F" title="Residualpull: Pixel Endcap X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_sct_endcap" type="TH1F" title="Residualpull: SCT Endcap X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_trt_endcap" type="TH1F" title="Residualpull: TRT Endcap X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpullx_dbm_endcap" type="TH1F" title="Residualpull: DBM +side X"> + <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<!-- barrel, y --> +<h id="residualpully_blayer_barrel" type="TH1F" title="Residualpull: B-Layer Barrel Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_pixel_barrel" type="TH1F" title="Residualpull: Pixel Barrel Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_sct_barrel" type="TH1F" title="Residualpull: SCT Barrel Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_trt_barrel" type="TH1F" title="Residualpull: TRT Barrel Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_dbm_barrel" type="TH1F" title="Residualpull: DBM -side Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<!-- endcap, y --> +<h id="residualpully_blayer_endcap" type="TH1F" title="Residualpull: B-Layer Endcap Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_pixel_endcap" type="TH1F" title="Residualpull: Pixel Endcap Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_sct_endcap" type="TH1F" title="Residualpull: SCT Endcap Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_trt_endcap" type="TH1F" title="Residualpull: TRT Endcap Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_dbm_endcap" type="TH1F" title="Residualpull: DBM +side Y"> + <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- TrackInJets --> +<h id="recInJetpT" type="TH1F" title="p_{T} of selected rec tracks in jets(in GeV)"> + <x title="p_{T}(GeV/c)" n="200" lo="0." hi="200"/> + <y title="Entries"/> +</h> +<h id="nTrackInJet" type="TH1F" title="Number of Tracks in Jet"> + <x title="N Tracks" n="50" lo="0." hi="50"/> + <y title="Entries"/> +</h> +<h id="sumPtinJet" type="TH1F" title="Sum p_{T} of Tracks in Jet"> + <x title="sum p_{T}(GeV/c)" n="25" lo="0" hi="500"/> + <y title="Entries"/> +</h> +<h id="fracPtInJet" type="TH1F" title="Sum p_{T} of Tracks over jet p_{T}"> + <x title="sum Track p_{T}/jet p_{T}" n="60" lo="0" hi="3"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- spectrum plots --> +<h id="nPixDeadSensors_vs_eta" type="TProfile" title="# pix deadsensors vs Eta"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="# pix deadsensors" lo="0" hi="20"/> +</h> +<h id="nTotDeadSensors_vs_eta" type="TProfile" title="# total deadsensors vs Eta"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="# total deadsensors" lo="0" hi="20"/> +</h> +<h id="recoMatchProbabilitySpectrum" type="TH1F" title="truth match probability spectrum"> + <x title="truth match probability" n="40" lo="0." hi="1"/> + <y title="Entries"/> +</h> +<h id="recoEtaSpectrum" type="TH1F" title="reco eta spectrum"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="Entries"/> +</h> +<h id="recoPhiSpectrum" type="TH1F" title="reco phi spectrum"> + <x title="#phi" n="60" lo="-3" hi="3"/> + <y title="Entries"/> +</h> +<h id="recoPtSpectrum" type="TH1F" title="reco pt spectrum"> + <x title="pt (GeV/c)" n="100" lo="0." hi="100"/> + <y title="Entries"/> +</h> +<h id="truthEtaSpectrum" type="TH1F" title="truth eta spectrum"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="Entries"/> +</h> +<h id="truthPhiSpectrum" type="TH1F" title="truth phi spectrum"> + <x title="#phi" n="60" lo="-3" hi="3"/> + <y title="Entries"/> +</h> +<h id="truthPtSpectrum" type="TH1F" title="truth pt spectrum"> + <x title="pt (GeV/c)" n="100" lo="0." hi="100"/> + <y title="Entries"/> +</h> +<!-- --> +<!-- HitContent plots --> +<h id="HitContent_vs_eta_NBlayerHits" type="TProfile" title="Number of B-Layer clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of B-layer clusters>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelHits" type="TProfile" title="Number of Pixel clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel clusters>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_DBMHitsNeg" type="TProfile" title="Number of DBM Clusters"> + <x title="#eta" n="20" lo="-3.8" hi="-2.5"/> + <y title="<Number of DBM clusters, - side>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_DBMHitsPos" type="TProfile" title="Number of DBM Clusters"> + <x title="#eta" n="20" lo="2.5" hi="3.8"/> + <y title="<Number of DBM Clusters, + side>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelHoles" type="TProfile" title="Number of Pixel Holes"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel Holes>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NSCTHits" type="TProfile" title="Number of SCT Clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of SCT Clusters>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NSCTHoles" type="TProfile" title="Number of SCT Holes"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of SCT Holes>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NTRTHits" type="TProfile" title="Number of TRT Clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of TRT Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NTRTHighThresholdHits" type="TProfile" title="Number of TRT high threshold clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of High Thresh TRT Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NBlayerOutliers" type="TProfile" title="Number of B-layer outliers"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of B-layer Outliers>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NBlayerSharedHits" type="TProfile" title="Number of shared B-layer clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of B-layer Shared Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NBLayerSplitHits" type="TProfile" title="Number of split B-layer clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of B-layer Split Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelOutliers" type="TProfile" title="Number of Pixel outliers"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel Outliers>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelContribLayers" type="TProfile" title="Number of contributed Pixel layers"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel Layers>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelSharedHits" type="TProfile" title="Number of shared Pixel clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel Shared Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelSplitHits" type="TProfile" title="Number of split Pixel clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel Split Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NPixelGangedHits" type="TProfile" title="Number of ganged Pixel clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of Pixel Ganged Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NSCTOutliers" type="TProfile" title="Number of SCT Outliers"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of SCT Outliers>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NSCTDoubleHoles" type="TProfile" title="Number of SCT double holes"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of SCT Double Holes>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NSCTSharedHits" type="TProfile" title="Number of SCT Shared clusters"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of SCT Shared Hits>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NTRTOutliers" type="TProfile" title="Number of TRT outliers"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of TRT Outliers>" lo="0" hi="100"/> +</h> +<h id="HitContent_vs_eta_NTRTHighThresholdOutliers" type="TProfile" title="Number of TRT High Threshold outliers"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="<Number of TRT High Thresh Outliers>" lo="0" hi="100"/> +</h> +<h id="residualx_ibl_barrel" type="TH1F" title="Residual: IBL Barrel X"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_ibl_barrel_1hit" type="TH1F" title="Residual: IBL Barrel X 1 hit"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualx_ibl_barrel_2ormorehits" type="TH1F" title="Residual: IBL Barrel X >=2 hits"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_ibl_barrel" type="TH1F" title="Residual: IBL Barrel Y"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_ibl_barrel_1hit" type="TH1F" title="Residual: IBL Barrel Y 1 hit"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualy_ibl_barrel_2ormorehits" type="TH1F" title="Residual: IBL Barrel Y >=2 hits"> + <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> + <y title="Entries"/> +</h> +<h id="residualpullx_ibl_barrel" type="TH1F" title="Residualpull: B-Layer Barrel X"> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="residualpully_ibl_barrel" type="TH1F" title="Residualpull: B-Layer Barrel Y"> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> + <y title="Entries"/> +</h> +<h id="HitContent_vs_eta_NPixelGangedHitsFlaggedFakes" type="TProfile" title="Number of ganged flagged fake Pixel hits vs eta"> + <x title="#eta" n="20" lo="-&ETA;" hi="&ETA;" /> + <y title="Flagged Fakes in Pixel" lo="0" hi="2" /> +</h> +<h id="trackeff_vs_eta" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="#eta" n="20" lo="-&ETA;" hi="&ETA;"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackeff_vs_pt" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="Pt (GeV)" n="25" lo="0" hi="50"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackeff_vs_phi" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="#phi" n="25" lo="-&PI;" hi="&PI;"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackeff_vs_d0" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="d0" n="100" lo="-25" hi="25"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackeff_vs_z0" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="z0" n="100" lo="-250" hi="250"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackeff_vs_R" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="R" n="100" lo="0" hi="50"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackeff_vs_Z" type="TProfile" title="Fraction of reco-matched truth track"> + <x title="Z" n="100" lo="-350" hi="350"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="trackinjeteff_vs_dr_gr_j100" type="TProfile" title="Track in jets efficiency vs #DeltaR for |#eta| < &ETA; (E_{T}(jet) >10 100 GeV)"> + <x title="#DeltaR" n="10" lo="0.0" hi="0.2"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_ibl_barrel" type="TProfile" title="Cluster Efficiency: Pixel Barrel IBL"> + <x title="#eta" n="10" lo="0" hi="&ETA;"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_pix_barrel" type="TProfile" title="Cluster Efficiency: Pixel Barrel"> + <x title="#eta" n="10" lo="0" hi="&ETA;"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_pix_endcap" type="TProfile" title="Cluster Efficiency: Pixel Endcaps"> + <x title="#eta" n="4" lo="1.5" hi="&ETA;"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_sct_barrel" type="TProfile" title="Cluster Efficiency: SCT Barrel"> + <x title="#eta" n="7" lo="0" hi="1.75"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_sct_endcap" type="TProfile" title="Cluster Efficiency: SCT Endcaps"> + <x title="#eta" n="6" lo="1.0" hi="&ETA;"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_trt_barrel" type="TProfile" title="Cluster Efficiency: TRT Barrel"> + <x title="#eta" n="5" lo="0" hi="1.25"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="eff_hit_vs_eta_trt_endcap" type="TProfile" title="Cluster Efficiency: TRT Endcaps"> + <x title="#eta" n="6" lo="0.75" hi="2.25"/> + <y title="Cluster Efficiency" lo="0" hi="2.0"/> +</h> +<h id="trackinjet_badmatchrate_vs_dr_gr_j100" type="TProfile" title="Fraction of tracks with < 80% truth matching probability in Jets with E_{T} > 100 GeV"> + <x title="#DeltaR" n="10" lo="0.0" hi="0.2"/> + <y title="Bad Match Rate" lo="0.0" hi="2.0"/> +</h> +<h id="nSCTHits" type="TH1F" title="# SCT hits"> + <x title="# SCT Hits" n="20" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<h id="nPixHits" type="TH1F" title="# Pix hits"> + <x title="# Pix Hits" n="20" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<h id="nTotHits" type="TH1F" title="# Total hits"> + <x title="# Totat Hits" n="20" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<h id="nSCTDeadSensors" type="TH1F" title="# SCT DeadSensors"> + <x title="# SCT DeadSensors" n="20" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<h id="nPixDeadSensors" type="TH1F" title="# Pix DeadSensors"> + <x title="# Pix DeadSensors" n="20" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<h id="nTotDeadSensors" type="TH1F" title="# Total DeadSensors"> + <x title="# Total DeadSensors" n="20" lo="0." hi="20"/> + <y title="Entries"/> +</h> +<h id="nSCTHits_vs_eta" type="TProfile" title="# SCT hits vs Eta"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="# SCT Hits" lo="0" hi="20"/> +</h> +<h id="nPixHits_vs_eta" type="TProfile" title="# Pix hits vs Eta"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="# Pix Hits" lo="0" hi="20"/> +</h> +<h id="nTotHits_vs_eta" type="TProfile" title="# total hits vs Eta"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="# total Hits" lo="0" hi="20"/> +</h> +<h id="nSCTDeadSensors_vs_eta" type="TProfile" title="# SCT deadsensors vs Eta"> + <x title="#eta" n="80" lo="-&ETA;" hi="&ETA;"/> + <y title="# SCT deadsensors" lo="0" hi="20"/> +</h> +</hdef> + + diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/hdef.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPhysValMonitoringPlotDefinitions.xml similarity index 91% rename from InnerDetector/InDetValidation/InDetPhysValMonitoring/share/hdef.xml rename to InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPhysValMonitoringPlotDefinitions.xml index 7a88abdcb873d6129b1dfb269aaa15a2b5b01714..7801fe848ed436c1be5d19f064bacbefd00b5868 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/hdef.xml +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPhysValMonitoringPlotDefinitions.xml @@ -160,11 +160,11 @@ <y title="Efficiency" lo="0.0" hi="2.0"/> </h> <h id="trackeff_vs_pt" type="TProfile" title="Fraction of reco-matched truth track"> - <x title="Pt (GeV)" n="40" lo="0" hi="50"/> + <x title="Pt (GeV)" n="25" lo="0" hi="50"/> <y title="Efficiency" lo="0.0" hi="2.0"/> </h> <h id="trackeff_vs_phi" type="TProfile" title="Fraction of reco-matched truth track"> - <x title="#phi" n="100" lo="-&PI;" hi="&PI;"/> + <x title="#phi" n="25" lo="-&PI;" hi="&PI;"/> <y title="Efficiency" lo="0.0" hi="2.0"/> </h> <h id="trackeff_vs_d0" type="TProfile" title="Fraction of reco-matched truth track"> @@ -367,7 +367,7 @@ <y title="Entries"/> </h> <h id="residualx_pixel_barrel_1hit" type="TH1F" title="Residual: Pixel Barrel X 1 hit"> - <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> <h id="residualx_pixel_barrel_2ormorehits" type="TH1F" title="Residual: Pixel Barrel X >=2 hits"> @@ -379,22 +379,22 @@ <y title="Entries"/> </h> <h id="residualx_sct_barrel_1hit" type="TH1F" title="Residual: SCT Barrel X 1 hit"> - <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <x title="x residual(#mum)" n="120" lo="-70" hi="70"/> <y title="Entries"/> </h> <h id="residualx_sct_barrel_2ormorehits" type="TH1F" title="Residual: SCT Barrel X >=2 hits"> - <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> + <x title="x residual(#mum)" n="120" lo="-70" hi="70"/> <y title="Entries"/> </h> -<h id="residualx_blayer_barrel" type="TH1F" title="Residual: B-Layer Barrel X"> - <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> +<h id="residualx_ibl_barrel" type="TH1F" title="Residual: IBL Barrel X"> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> -<h id="residualx_blayer_barrel_1hit" type="TH1F" title="Residual: B-Layer Barrel X 1 hit"> +<h id="residualx_ibl_barrel_1hit" type="TH1F" title="Residual: IBL Barrel X 1 hit"> <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> -<h id="residualx_blayer_barrel_2ormorehits" type="TH1F" title="Residual: B-Layer Barrel X >=2 hits"> +<h id="residualx_ibl_barrel_2ormorehits" type="TH1F" title="Residual: IBL Barrel X >=2 hits"> <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> @@ -408,7 +408,7 @@ <y title="Entries"/> </h> <h id="residualx_pixel_endcap_1hit" type="TH1F" title="Residual: Pixel Endcap X 1 hit"> - <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <x title="x residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> <h id="residualx_pixel_endcap_2ormorehits" type="TH1F" title="Residual: Pixel Endcap X >=2 hits"> @@ -420,11 +420,11 @@ <y title="Entries"/> </h> <h id="residualx_sct_endcap_1hit" type="TH1F" title="Residual: SCT Endcap X 1 hit"> - <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <x title="x residual(#mum)" n="120" lo="-70" hi="70"/> <y title="Entries"/> </h> <h id="residualx_sct_endcap_2ormorehits" type="TH1F" title="Residual: SCT Endcap X >=2 hits"> - <x title="x residual(#mum)" n="120" lo="-3000" hi="3000"/> + <x title="x residual(#mum)" n="120" lo="-70" hi="70"/> <y title="Entries"/> </h> <h id="residualx_blayer_endcap" type="TH1F" title="Residual: B-Layer Endcap X"> @@ -476,15 +476,15 @@ <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> -<h id="residualy_blayer_barrel" type="TH1F" title="Residual: B-Layer Barrel Y"> +<h id="residualy_ibl_barrel" type="TH1F" title="Residual: IBL Barrel Y"> <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> -<h id="residualy_blayer_barrel_1hit" type="TH1F" title="Residual: B-Layer Barrel Y 1 hit"> +<h id="residualy_ibl_barrel_1hit" type="TH1F" title="Residual: IBL Barrel Y 1 hit"> <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> -<h id="residualy_blayer_barrel_2ormorehits" type="TH1F" title="Residual: B-Layer Barrel Y >=2 hits"> +<h id="residualy_ibl_barrel_2ormorehits" type="TH1F" title="Residual: IBL Barrel Y >=2 hits"> <x title="y residual(#mum)" n="120" lo="-50" hi="50"/> <y title="Entries"/> </h> @@ -543,54 +543,54 @@ </h> <!-- pulls --> <!-- barrel, x --> -<h id="residualpullx_blayer_barrel" type="TH1F" title="Residualpull: B-Layer Barrel X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> +<h id="residualpullx_ibl_barrel" type="TH1F" title="Residualpull: B-Layer Barrel X"> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_pixel_barrel" type="TH1F" title="Residualpull: Pixel Barrel X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_sct_barrel" type="TH1F" title="Residualpull: SCT Barrel X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_trt_barrel" type="TH1F" title="Residualpull: TRT Barrel X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_dbm_barrel" type="TH1F" title="Residualpull: DBM -side X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <!-- endcap, x --> -<h id="residualpullx_blayer_endcap" type="TH1F" title="Residualpull: B-Layer Endcap X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> +<h id="residualpullx_ibl_endcap" type="TH1F" title="Residualpull: B-Layer Endcap X"> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_pixel_endcap" type="TH1F" title="Residualpull: Pixel Endcap X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_sct_endcap" type="TH1F" title="Residualpull: SCT Endcap X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_trt_endcap" type="TH1F" title="Residualpull: TRT Endcap X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpullx_dbm_endcap" type="TH1F" title="Residualpull: DBM +side X"> - <x title="x residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="x residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <!-- barrel, y --> -<h id="residualpully_blayer_barrel" type="TH1F" title="Residualpull: B-Layer Barrel Y"> - <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> +<h id="residualpully_ibl_barrel" type="TH1F" title="Residualpull: B-Layer Barrel Y"> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpully_pixel_barrel" type="TH1F" title="Residualpull: Pixel Barrel Y"> - <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpully_sct_barrel" type="TH1F" title="Residualpull: SCT Barrel Y"> @@ -602,16 +602,16 @@ <y title="Entries"/> </h> <h id="residualpully_dbm_barrel" type="TH1F" title="Residualpull: DBM -side Y"> - <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <!-- endcap,y --> -<h id="residualpully_blayer_endcap" type="TH1F" title="Residualpull: B-Layer Endcap Y"> - <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> +<h id="residualpully_ibl_endcap" type="TH1F" title="Residualpull: B-Layer Endcap Y"> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpully_pixel_endcap" type="TH1F" title="Residualpull: Pixel Endcap Y"> - <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <h id="residualpully_sct_endcap" type="TH1F" title="Residualpull: SCT Endcap Y"> @@ -623,7 +623,7 @@ <y title="Entries"/> </h> <h id="residualpully_dbm_endcap" type="TH1F" title="Residualpull: DBM +side Y"> - <x title="y residual(#mum)" n="10" lo="-5" hi="5"/> + <x title="y residual(#mum)" n="100" lo="-5" hi="5"/> <y title="Entries"/> </h> <!-- --> @@ -790,6 +790,12 @@ <x title="#eta" n="20" lo="-2.5" hi="2.5"/> <y title="<Number of Pixel Ganged Hits>" lo="0" hi="100"/> </h> + +<h id="HitContent_vs_eta_NPixelGangedHitsFlaggedFakes" type="TProfile" title="Number of ganged flagged fake Pixel hits vs eta"> + <x title="#eta" n="20" lo="-2.5" hi="2.5" /> + <y title="Flagged Fakes in Pixel" lo="0" hi="2" /> +</h> + <h id="HitContent_vs_eta_NSCTOutliers" type="TProfile" title="Number of SCT Outliers"> <x title="#eta" n="20" lo="-2.5" hi="2.5"/> <y title="<Number of SCT Outliers>" lo="0" hi="100"/> @@ -810,4 +816,21 @@ <x title="#eta" n="20" lo="-2.5" hi="2.5"/> <y title="<Number of TRT High Thresh Outliers>" lo="0" hi="100"/> </h> + +<!-- --> +<!-- Track in Jet efficiencies --> +<h id="trackinjeteff_vs_dr_gr_j100" type="TProfile" title="Track in jets efficiency vs #DeltaR for |#eta| < 2.5 (E_{T}(jet) >10 100 GeV)"> + <x title="#DeltaR" n="10" lo="0.0" hi="0.2"/> + <y title="Efficiency" lo="0.0" hi="2.0"/> +</h> + +<!-- --> +<!-- Track in Jet Bad Match Rates --> +<h id="trackinjet_badmatchrate_vs_dr_gr_j100" type="TProfile" title="Fraction of tracks with < 80% truth matching probability in Jets with E_{T} > 100 GeV"> + <x title="#DeltaR" n="10" lo="0.0" hi="0.2"/> + <y title="Bad Match Rate" lo="0.0" hi="2.0"/> +</h> + + + </hdef> diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/inDetPhysValMonitoringPlotDefinitions.hdef b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/inDetPhysValMonitoringPlotDefinitions.hdef index 94632188e15098cdeca4d8cc33f7a4ab07a802d6..fcac108b24dcdb9292b387cab55ca857a521581f 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/inDetPhysValMonitoringPlotDefinitions.hdef +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/inDetPhysValMonitoringPlotDefinitions.hdef @@ -265,8 +265,15 @@ TProfile HitContent_vs_eta_NPixelContribLayers "Number of contributed Pixel laye TProfile HitContent_vs_eta_NPixelSharedHits "Number of shared Pixel clusters" 20 -2.5 2.5 0 100 "#eta" "<Number of Pixel Shared Hits>" default TProfile HitContent_vs_eta_NPixelSplitHits "Number of split Pixel clusters" 20 -2.5 2.5 0 100 "#eta" "<Number of Pixel Split Hits>" default TProfile HitContent_vs_eta_NPixelGangedHits "Number of ganged Pixel clusters" 20 -2.5 2.5 0 100 "#eta" "<Number of Pixel Ganged Hits>" default +TProfile HitContent_vs_eta_NPixelGangedHitsFlaggedFakes "Number of ganged flagged fake Pixel hits vs eta" 20 -2.5 2.5 0 2 "#eta" "Flagged Fakes in Pixel" default TProfile HitContent_vs_eta_NSCTOutliers "Number of SCT Outliers" 20 -2.5 2.5 0 100 "#eta" "<Number of SCT Outliers>" default TProfile HitContent_vs_eta_NSCTDoubleHoles "Number of SCT double holes" 20 -2.5 2.5 0 100 "#eta" "<Number of SCT Double Holes>" default TProfile HitContent_vs_eta_NSCTSharedHits "Number of SCT Shared clusters" 20 -2.5 2.5 0 100 "#eta" "<Number of SCT Shared Hits>" default TProfile HitContent_vs_eta_NTRTOutliers "Number of TRT outliers" 20 -2.5 2.5 0 100 "#eta" "<Number of TRT Outliers>" default TProfile HitContent_vs_eta_NTRTHighThresholdOutliers "Number of TRT High Threshold outliers" 20 -2.5 2.5 0 100 "#eta" "<Number of TRT High Thresh Outliers>" default + +#trackinjet efficiencies +TProfile trackinjeteff_vs_dr_gr_j100 "Track in jets efficiency vs #DeltaR for |#eta| < 2.5 (E_{T}(jet) > 100 GeV)" 10 0 0.2 0 2.0 "#DeltaR" "Efficiency" default + +#trackinjet bad match rates +TProfile trackinjet_badmatchrate_vs_dr_gr_j100 "Fraction of tracks with < 80% truth matching probability in Jets with E_{T} > 100 GeV" 10 0 0.2 0 2 "#DeltaR" "Bad Match Rate" default \ No newline at end of file diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.cxx index 864948ca76650410d9df107f4211a98ac2a75315..84b4d20d46af3f6df9b28e19bcef79e3c98669a8 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.cxx @@ -16,8 +16,8 @@ m_trackeff_vs_phi{}, m_trackeff_vs_d0{}, m_trackeff_vs_z0{}, m_trackeff_vs_R{}, -m_trackeff_vs_Z{} - +m_trackeff_vs_Z{}, +m_trackinjeteff_vs_dr_gr_j100{} { //nop } @@ -32,12 +32,13 @@ InDetPerfPlot_Eff::initializePlots() { book(m_trackeff_vs_z0, "trackeff_vs_z0"); book(m_trackeff_vs_R, "trackeff_vs_R"); book(m_trackeff_vs_Z, "trackeff_vs_Z"); + + book(m_trackinjeteff_vs_dr_gr_j100, "trackinjeteff_vs_dr_gr_j100"); } void InDetPerfPlot_Eff::pro_fill(const xAOD::TruthParticle & truth, float weight){ double eta = truth.eta(); double pt = truth.pt()/1000.; //convert MeV to GeV - //double logpt = Log10(pt); //-3.0 switches MeV to GeV **UNUSED double phi = truth.phi(); double d0 = truth.auxdata<float>("d0"); double z0 = truth.auxdata<float>("z0"); @@ -53,6 +54,15 @@ void InDetPerfPlot_Eff::pro_fill(const xAOD::TruthParticle & truth, float weight m_trackeff_vs_Z->Fill(Z, weight); } +void InDetPerfPlot_Eff::jet_fill(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight){ + //double trketa = track.eta(); //unused + //double trkphi = track.phi(); //unused + + double dR = jet.p4().DeltaR( track.p4() ); + + m_trackinjeteff_vs_dr_gr_j100->Fill(dR, weight); + +} void InDetPerfPlot_Eff::finalizePlots() { } diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.h index df19b41f58713666a71e7667294dd4077f398e56..198ad58d45d6c2ce8ae3f05ff5b5eb5b8dc88ba5 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Eff.h @@ -25,6 +25,8 @@ #include "xAODBase/IParticle.h" #include "xAODTracking/TrackParticle.h" +#include "xAODJet/Jet.h" + #include "InDetPhysValMonitoring/IInDetPhysValDecoratorTool.h" ///class holding Pt plots for Inner Detector RTT Validation and implementing fill methods @@ -34,6 +36,7 @@ class InDetPerfPlot_Eff:public InDetPlotBase { InDetPerfPlot_Eff(InDetPlotBase * pParent, const std::string & dirName); void pro_fill(const xAOD::TruthParticle& truth, float weight); + void jet_fill(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight); private: @@ -44,6 +47,8 @@ class InDetPerfPlot_Eff:public InDetPlotBase { TProfile * m_trackeff_vs_z0; TProfile * m_trackeff_vs_R; TProfile * m_trackeff_vs_Z; + + TProfile * m_trackinjeteff_vs_dr_gr_j100; //plot base has nop default implementation of this; we use it to book the histos void initializePlots(); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.cxx index 32426adcef28f74203235883657489d61dcf9799..6998cac53eaeadddf7fc6bb8b5c233af43d0e879 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.cxx @@ -23,6 +23,7 @@ n_vs_eta_PixelContribLayers{}, n_vs_eta_PixelSharedHits{}, n_vs_eta_PixelSplitHits{}, n_vs_eta_PixelGangedHits{}, +n_vs_eta_PixelGangedHitsFlaggedFakes{}, n_vs_eta_SCTHits{}, n_vs_eta_SCTHoles{}, n_vs_eta_SCTOutliers{}, @@ -65,6 +66,7 @@ void InDetPerfPlot_HitDetailed::initializePlots(){ book(n_vs_eta_PixelSharedHits,"HitContent_vs_eta_NPixelSharedHits"); book(n_vs_eta_PixelSplitHits,"HitContent_vs_eta_NPixelSplitHits"); book(n_vs_eta_PixelGangedHits,"HitContent_vs_eta_NPixelGangedHits"); + book(n_vs_eta_PixelGangedHitsFlaggedFakes, "HitContent_vs_eta_NPixelGangedHitsFlaggedFakes"); book(n_vs_eta_SCTOutliers,"HitContent_vs_eta_NSCTOutliers"); book(n_vs_eta_SCTDoubleHoles,"HitContent_vs_eta_NSCTDoubleHoles"); book(n_vs_eta_SCTSharedHits,"HitContent_vs_eta_NSCTSharedHits"); @@ -91,7 +93,7 @@ void InDetPerfPlot_HitDetailed::fill(const xAOD::TrackParticle& trk) { //expert plots if (m_iDetailLevel >= 100) { uint8_t iBLayerOutliers(0),iBLayerShared(0),iBLayerSplit(0); - uint8_t iPixelOutliers(0),iPixelContribLayers(0),iPixelShared(0),iPixelSplit(0),iPixelGanged(0); + uint8_t iPixelOutliers(0),iPixelContribLayers(0),iPixelShared(0),iPixelSplit(0),iPixelGanged(0), iPixelGangedFF(0); uint8_t iSCTOutliers(0),iSCTDoubleHoles(0),iSCTShared(0); uint8_t iTRTOutliers(0),iTRTHTOutliers(0); if (trk.summaryValue(iBLayerOutliers,xAOD::numberOfBLayerOutliers)) n_vs_eta_BLayerOutliers->Fill(eta, iBLayerOutliers); @@ -102,6 +104,7 @@ void InDetPerfPlot_HitDetailed::fill(const xAOD::TrackParticle& trk) { if (trk.summaryValue(iPixelShared,xAOD::numberOfPixelSharedHits)) n_vs_eta_PixelSharedHits->Fill(eta, iPixelShared); if (trk.summaryValue(iPixelSplit,xAOD::numberOfPixelSplitHits)) n_vs_eta_PixelSplitHits->Fill(eta, iPixelSplit); if (trk.summaryValue(iPixelGanged,xAOD::numberOfGangedPixels)) n_vs_eta_PixelGangedHits->Fill(eta, iPixelGanged); + if (trk.summaryValue(iPixelGangedFF, xAOD::numberOfGangedFlaggedFakes)) n_vs_eta_PixelGangedHitsFlaggedFakes->Fill(eta, iPixelGangedFF); if (trk.summaryValue(iSCTOutliers,xAOD::numberOfSCTOutliers)) n_vs_eta_PixelOutliers->Fill(eta, iSCTOutliers); if (trk.summaryValue(iSCTDoubleHoles,xAOD::numberOfSCTDoubleHoles)) n_vs_eta_SCTDoubleHoles->Fill(eta, iSCTDoubleHoles); if (trk.summaryValue(iSCTShared,xAOD::numberOfSCTSharedHits)) n_vs_eta_SCTSharedHits->Fill(eta, iSCTShared); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.h index cf4d9f4205f57eec074471220a286bdb293c90a8..22a69b63006b8ad347929b27d79fa450bfc62312 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_HitDetailed.h @@ -38,6 +38,7 @@ class InDetPerfPlot_HitDetailed: public InDetPlotBase { TProfile* n_vs_eta_PixelSharedHits; TProfile* n_vs_eta_PixelSplitHits; TProfile* n_vs_eta_PixelGangedHits; + TProfile* n_vs_eta_PixelGangedHitsFlaggedFakes; TProfile* n_vs_eta_SCTHits; TProfile* n_vs_eta_SCTHoles; TProfile* n_vs_eta_SCTOutliers; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.cxx index d8a70a181ecb59ca2cef9d4a5f75a18cc1026ee5..2982500f7778795443653623d82d11e75b6c5be8 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.cxx @@ -30,3 +30,10 @@ InDetPerfPlot_Pt::fill(const xAOD::IParticle& particle){ m_recPtLow->Fill(pt); } +void +InDetPerfPlot_Pt::fill(const xAOD::TruthParticle& particle){ + const float pt(particle.pt()/1000.); + m_recPt->Fill(pt); + m_recPtLow->Fill(pt); +} + diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.h index 6dd5423e822829585c82e6c5d7aa8bf1e7cb764b..8f8fb09b1c157d0902a4af805718e184250a81c8 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Pt.h @@ -16,6 +16,7 @@ //local includes #include "InDetPlotBase.h" #include "xAODBase/IParticle.h" +#include "xAODTruth/TruthParticle.h" ///class holding Pt plots for Inner Detector RTT Validation and implementing fill methods @@ -23,6 +24,7 @@ class InDetPerfPlot_Pt:public InDetPlotBase { public: InDetPerfPlot_Pt(InDetPlotBase * pParent, const std::string & dirName); void fill(const xAOD::IParticle& particle); + void fill(const xAOD::TruthParticle& particle); private: ///Pt Histogram with full pt range diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.cxx index cb64887e41baa788798be377e176a6f7ea351da4..ec62963d7602a6f20c48a466aa2e1444770e21a5 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.cxx @@ -9,7 +9,7 @@ #include "InDetPerfPlot_hitResidual.h" - +using namespace TMath; InDetPerfPlot_hitResidual::InDetPerfPlot_hitResidual(InDetPlotBase* pParent, const std::string & sDir) :InDetPlotBase(pParent, sDir), m_residualx_1hit{}, @@ -28,7 +28,11 @@ InDetPerfPlot_hitResidual::InDetPerfPlot_hitResidual(InDetPlotBase* pParent, con void InDetPerfPlot_hitResidual::initializePlots() { //const bool prependDirectory(false); //x residuals - book(m_residualx[PIXEL][BARREL],"residualx_pixel_barrel"); + book(m_residualx[IBL][BARREL],"residualx_ibl_barrel"); + book(m_residualx_1hit[IBL][BARREL],"residualx_ibl_barrel_1hit"); + book(m_residualx_2ormorehits[IBL][BARREL],"residualx_ibl_barrel_2ormorehits"); + // + book(m_residualx[PIXEL][BARREL],"residualx_pixel_barrel"); book(m_residualx_1hit[PIXEL][BARREL],"residualx_pixel_barrel_1hit"); book(m_residualx_2ormorehits[PIXEL][BARREL],"residualx_pixel_barrel_2ormorehits"); // @@ -36,10 +40,6 @@ void InDetPerfPlot_hitResidual::initializePlots() { book(m_residualx_1hit[SCT][BARREL],"residualx_sct_barrel_1hit"); book(m_residualx_2ormorehits[SCT][BARREL],"residualx_sct_barrel_2ormorehits"); // - book(m_residualx[BLAYER][BARREL],"residualx_blayer_barrel"); - book(m_residualx_1hit[BLAYER][BARREL],"residualx_blayer_barrel_1hit"); - book(m_residualx_2ormorehits[BLAYER][BARREL],"residualx_blayer_barrel_2ormorehits"); - // book(m_residualx[TRT][BARREL],"residualx_trt_barrel"); //..now endcaps book(m_residualx[PIXEL][ENDCAP],"residualx_pixel_endcap"); @@ -49,72 +49,82 @@ void InDetPerfPlot_hitResidual::initializePlots() { book(m_residualx[SCT][ENDCAP],"residualx_sct_endcap"); book(m_residualx_1hit[SCT][ENDCAP],"residualx_sct_endcap_1hit"); book(m_residualx_2ormorehits[SCT][ENDCAP],"residualx_sct_endcap_2ormorehits"); - - book(m_residualx[BLAYER][ENDCAP],"residualx_blayer_endcap"); - book(m_residualx_1hit[BLAYER][ENDCAP],"residualx_blayer_endcap_1hit"); - book(m_residualx_2ormorehits[BLAYER][ENDCAP],"residualx_blayer_endcap_2ormorehits"); + //No IBL for ENDCAP (Can be added if need residuals / pulls for the first disk?) + //book(m_residualx[IBL][ENDCAP],"residualx_blayer_endcap"); + //book(m_residualx_1hit[IBL][ENDCAP],"residualx_blayer_endcap_1hit"); + //book(m_residualx_2ormorehits[IBL][ENDCAP],"residualx_blayer_endcap_2ormorehits"); // book(m_residualx[TRT][ENDCAP],"residualx_trt_endcap"); //DBM book(m_residualx[DBM][0],"residualx_dbm_neg"); book(m_residualx[DBM][1],"residualx_dbm_pos"); // - // y residuals - book(m_residualy[PIXEL][BARREL],"residualy_pixel_barrel"); + + //y residuals + book(m_residualy[IBL][BARREL],"residualy_ibl_barrel"); + book(m_residualy_1hit[IBL][BARREL],"residualy_ibl_barrel_1hit"); + book(m_residualy_2ormorehits[IBL][BARREL],"residualy_ibl_barrel_2ormorehits"); + // + book(m_residualy[PIXEL][BARREL],"residualy_pixel_barrel"); book(m_residualy_1hit[PIXEL][BARREL],"residualy_pixel_barrel_1hit"); book(m_residualy_2ormorehits[PIXEL][BARREL],"residualy_pixel_barrel_2ormorehits"); // - book(m_residualy[SCT][BARREL],"residualy_sct_barrel"); - book(m_residualy_1hit[SCT][BARREL],"residualy_sct_barrel_1hit"); - book(m_residualy_2ormorehits[SCT][BARREL],"residualy_sct_barrel_2ormorehits"); - // - book(m_residualy[BLAYER][BARREL],"residualy_blayer_barrel"); - book(m_residualy_1hit[BLAYER][BARREL],"residualy_blayer_barrel_1hit"); - book(m_residualy_2ormorehits[BLAYER][BARREL],"residualy_blayer_barrel_2ormorehits"); + //SCT and TRT do not have y-residuals/pulls + //book(m_residualy[SCT][BARREL],"residualy_sct_barrel"); + //book(m_residualy_1hit[SCT][BARREL],"residualy_sct_barrel_1hit"); + //book(m_residualy_2ormorehits[SCT][BARREL],"residualy_sct_barrel_2ormorehits"); // - book(m_residualy[TRT][BARREL],"residualy_trt_barrel"); + //book(m_residualy[TRT][BARREL],"residualy_trt_barrel"); //..now endcaps book(m_residualy[PIXEL][ENDCAP],"residualy_pixel_endcap"); book(m_residualy_1hit[PIXEL][ENDCAP],"residualy_pixel_endcap_1hit"); book(m_residualy_2ormorehits[PIXEL][ENDCAP],"residualy_pixel_endcap_2ormorehits"); // - book(m_residualy[SCT][ENDCAP],"residualy_sct_endcap"); - book(m_residualy_1hit[SCT][ENDCAP],"residualy_sct_endcap_1hit"); - book(m_residualy_2ormorehits[SCT][ENDCAP],"residualy_sct_endcap_2ormorehits"); - - book(m_residualy[BLAYER][ENDCAP],"residualy_blayer_endcap"); - book(m_residualy_1hit[BLAYER][ENDCAP],"residualy_blayer_endcap_1hit"); - book(m_residualy_2ormorehits[BLAYER][ENDCAP],"residualy_blayer_endcap_2ormorehits"); + //SCT and TRT do not have y-residuals/pulls + //book(m_residualy[SCT][ENDCAP],"residualy_sct_endcap"); + //book(m_residualy_1hit[SCT][ENDCAP],"residualy_sct_endcap_1hit"); + //book(m_residualy_2ormorehits[SCT][ENDCAP],"residualy_sct_endcap_2ormorehits"); + // + //No IBL for ENDCAP (Can be added if need residuals / pulls for the first disk?) + //book(m_residualy[IBL][ENDCAP],"residualy_blayer_endcap"); + //book(m_residualy_1hit[IBL][ENDCAP],"residualy_blayer_endcap_1hit"); + //book(m_residualy_2ormorehits[IBL][ENDCAP],"residualy_blayer_endcap_2ormorehits"); // - book(m_residualy[TRT][ENDCAP],"residualy_trt_endcap"); + //SCT and TRT do not have y-residuals/pulls + //book(m_residualy[TRT][ENDCAP],"residualy_trt_endcap"); //DBM book(m_residualy[DBM][0],"residualy_dbm_neg"); book(m_residualy[DBM][1],"residualy_dbm_pos"); // pulls //barrel - book(m_residualpullx[BLAYER][BARREL],"residualpullx_blayer_barrel"); + book(m_residualpullx[IBL][BARREL],"residualpullx_ibl_barrel"); book(m_residualpullx[PIXEL][BARREL],"residualpullx_pixel_barrel"); book(m_residualpullx[SCT][BARREL],"residualpullx_sct_barrel"); book(m_residualpullx[TRT][BARREL],"residualpullx_trt_barrel"); book(m_residualpullx[DBM][0],"residualpullx_dbm_barrel"); // - book(m_residualpullx[BLAYER][ENDCAP],"residualpullx_blayer_endcap"); + //No IBL for ENDCAPS + //book(m_residualpullx[IBL][ENDCAP],"residualpullx_ibl_endcap"); book(m_residualpullx[PIXEL][ENDCAP],"residualpullx_pixel_endcap"); book(m_residualpullx[SCT][ENDCAP],"residualpullx_sct_endcap"); book(m_residualpullx[TRT][ENDCAP],"residualpullx_trt_endcap"); book(m_residualpullx[DBM][1],"residualpullx_dbm_endcap"); // //barrel - book(m_residualpully[BLAYER][BARREL],"residualpully_blayer_barrel"); + book(m_residualpully[IBL][BARREL],"residualpully_ibl_barrel"); book(m_residualpully[PIXEL][BARREL],"residualpully_pixel_barrel"); - book(m_residualpully[SCT][BARREL],"residualpully_sct_barrel"); - book(m_residualpully[TRT][BARREL],"residualpully_trt_barrel"); + // + //SCT and TRT do not have y-residuals/pulls + //book(m_residualpully[SCT][BARREL],"residualpully_sct_barrel"); + //book(m_residualpully[TRT][BARREL],"residualpully_trt_barrel"); book(m_residualpully[DBM][0],"residualpully_dbm_barrel"); - // - book(m_residualpully[BLAYER][ENDCAP],"residualpully_blayer_endcap"); + //No IBL for ENDCAPS + //book(m_residualpully[IBL][ENDCAP],"residualpully_ibl_endcap"); book(m_residualpully[PIXEL][ENDCAP],"residualpully_pixel_endcap"); - book(m_residualpully[SCT][ENDCAP],"residualpully_sct_endcap"); - book(m_residualpully[TRT][ENDCAP],"residualpully_trt_endcap"); + // + ////SCT and TRT do not have y-residuals/pulls + //book(m_residualpully[SCT][ENDCAP],"residualpully_sct_endcap"); + //book(m_residualpully[TRT][ENDCAP],"residualpully_trt_endcap"); book(m_residualpully[DBM][1],"residualpully_dbm_endcap"); } @@ -128,7 +138,7 @@ void InDetPerfPlot_hitResidual::fill(const xAOD::TrackParticle& trkprt) { if (!result_det.empty()) { const std::vector<int> & result_region=trkprt.auxdata< std::vector<int> >("hitResiduals_region"); //const std::vector<int> &result_iLayer = trkprt.auxdata< std::vector<int> >("hitResiduals_iLayer"); - const std::vector<float> &result_residualLocX = trkprt.auxdata< std::vector<float> >("hitResiduals_residualLocX"); + const std::vector<float> &result_residualLocX = trkprt.auxdata< std::vector<float> >("hitResiduals_residualLocX"); const std::vector<float> &result_pullLocX = trkprt.auxdata< std::vector<float> >("hitResiduals_pullLocX"); const std::vector<float> &result_residualLocY = trkprt.auxdata< std::vector<float> >("hitResiduals_residualLocY"); const std::vector<float> &result_pullLocY = trkprt.auxdata< std::vector<float> >("hitResiduals_pullLocY"); @@ -138,25 +148,34 @@ void InDetPerfPlot_hitResidual::fill(const xAOD::TrackParticle& trkprt) { const int region = result_region.at(idx); // const int layer = result_iLayer.at(idx); const int width = result_phiWidth.at(idx); - const float residualLocX = result_residualLocX.at(idx); + const float residualLocX = result_residualLocX.at(idx); const float pullLocX = result_pullLocX.at(idx); const float residualLocY = result_residualLocY.at(idx); const float pullLocY = result_pullLocY.at(idx); if ((det == INVALID_DETECTOR) or (region==INVALID_REGION)) continue; + if ((region == ENDCAP) and (det == IBL)) continue; //Endcap does not have ibl (m_residualx[det][region])->Fill(residualLocX); - if (not std::isnan(residualLocY)) (m_residualy[det][region])->Fill(residualLocY); + + if (not std::isnan(residualLocY) and !( det == SCT || det == TRT)){ //SCT & TRT does not have LocY + (m_residualy[det][region])->Fill(residualLocY); + } (m_residualpullx[det][region])->Fill(pullLocX); - if (not std::isnan(pullLocY)) (m_residualpully[det][region])->Fill(pullLocY); + if (not std::isnan(pullLocY) and !( det == SCT || det == TRT)){ //SCT & TRT does not have LocY + (m_residualpully[det][region])->Fill(pullLocY); + } if ((det == TRT) or (det == DBM) or (width<0)){ continue; } - if (width == 1){ + if (width == 1){ (m_residualx_1hit[det][region])->Fill(residualLocX); - if (not std::isnan(residualLocY)) (m_residualy_1hit[det][region])->Fill(residualLocY); + if (not std::isnan(residualLocY)and !( det == SCT || det == TRT)) { + (m_residualy_1hit[det][region])->Fill(residualLocY); + } } else { (m_residualx_2ormorehits[det][region])->Fill(residualLocX); - if (not std::isnan(residualLocY)) (m_residualy_2ormorehits[det][region])->Fill(residualLocY); - + if (not std::isnan(residualLocY)and !( det == SCT || det == TRT)){ + (m_residualy_2ormorehits[det][region])->Fill(residualLocY); + } } } } diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.h index 681e89aebb409ae952823ddcdd34cc112d10ddb3..8c647808e967b8b6db363d22e6cff2845f79b186 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_hitResidual.h @@ -39,7 +39,7 @@ public: private: //enum copied from the hitDecorator tool in InDetPhysValMonitoring - enum Subdetector{INVALID_DETECTOR=-1, BLAYER, PIXEL, SCT, TRT, DBM, N_SUBDETECTORS}; + enum Subdetector{INVALID_DETECTOR=-1, IBL, PIXEL, SCT, TRT, DBM, N_SUBDETECTORS}; enum Region{INVALID_REGION=-1, BARREL, ENDCAP,N_REGIONS}; void initializePlots(); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_res.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_res.h index ad918b2301926cc4e8856867748fff664532fef2..4ced581bfa518fcf02ab1993c74ec2a860b51f5e 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_res.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_res.h @@ -48,10 +48,9 @@ private: unsigned int m_trackEtaBins; float m_etaMin, m_etaMax; //float m_truthEtaCut; - //int nBins, m_yBins; + unsigned int m_PtBins; float m_PtMin, m_PtMax; - //double m_Pt_logmin, m_Pt_logmax; //double mean; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_resITk.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_resITk.cxx index 02aa301f1c86ee17408bdc01e76111d78c497248..a6e5666521150a0029c669caec8f4052e7add55c 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_resITk.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_resITk.cxx @@ -4,7 +4,7 @@ /** * @file InDetPerfPlot_resITk.cxx - * @author me! + * @author me! WHO?! :P **/ #include "InDetPerfPlot_resITk.h" @@ -582,7 +582,7 @@ void InDetPerfPlot_resITk::makeResolutions(TH3* h, TH1* hres_eta[4][4], TH1* hre } } - for(unsigned int ipt = 0; ipt < 5; ipt++){ + for(unsigned int ipt = 0; ipt < 4; ipt++){ for(unsigned int ieta = 0; ieta < m_nEtaBins; ieta++){ std::string tmpName = h->GetName() + std::string("pz_binPt") + std::to_string(ipt+1) + std::string("pz_binEta") + std::to_string(ieta+1); TH1D *tmp = (TH1D*)h->ProjectionZ(tmpName.c_str(),h->GetXaxis()->FindBin(BinPt[ipt]),h->GetXaxis()->FindBin(BinPt[ipt+1]),h->GetYaxis()->FindBin(m_EtaBins[ieta]),h->GetYaxis()->FindBin(m_EtaBins[ieta+1])); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.cxx index f2f3238465e0bc6bfc669075cd25a72c55b3c0f1..a88253eda2fd4c2c64ca3474b3cd2e86ecab402e 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.cxx @@ -176,7 +176,7 @@ InDetPhysHitDecoratorTool::decorateTrack(const xAOD::TrackParticle & particle, c //copy-paste from original if (hit && m_isUnbiased) { // Cluster width determination - if((det == PIXEL) or (det==SCT)) { + if((det == IBL) or (det == PIXEL) or (det==SCT)) { const InDet::SiCluster* pCluster = dynamic_cast <const InDet::SiCluster*>(hit->prepRawData()); if(pCluster){ InDet::SiWidth width = pCluster->width(); @@ -187,7 +187,7 @@ InDetPhysHitDecoratorTool::decorateTrack(const xAOD::TrackParticle & particle, c } //end copy-paste thisResult=std::make_tuple(det, r, iLayer, residualLocX, pullLocX, residualLocY, pullLocY, phiWidth); - ATH_MSG_DEBUG ("**dimension: result "<<det<<":"<<r<<":"<<residualPull->dimension()<<":"<<iLayer<<", "<<residualLocX<<", "<<pullLocX<<", "<<residualLocY<<", "<<pullLocY<<", "<<phiWidth ); + ATH_MSG_DEBUG ("**dimension: result "<<det<<":"<<r<<":"<<residualPull->dimension()<<":"<<iLayer<<", "<<residualLocX<<", "<<pullLocX<<",: "<<residualLocY<<", "<<pullLocY<<", "<<phiWidth ); result.push_back(thisResult); //must delete the pointers? } else { @@ -242,7 +242,7 @@ InDetPhysHitDecoratorTool::decideDetectorRegion(const Identifier & id, Subdetect const int normalBarrel(0); const int upgradedBarrel(1); const int normalTrtBarrel(1); - const int dbm(2); + const int dbm(4); det = INVALID_DETECTOR;//default r = INVALID_REGION; @@ -251,7 +251,7 @@ InDetPhysHitDecoratorTool::decideDetectorRegion(const Identifier & id, Subdetect //following the logic in the original code, should be reviewed! if (m_idHelper->is_pixel(id)) { bec = abs(m_pixelID->barrel_ec(id)); - if (bec == dbm) + if (bec == dbm) det=DBM; else det=PIXEL; @@ -262,9 +262,9 @@ InDetPhysHitDecoratorTool::decideDetectorRegion(const Identifier & id, Subdetect //check this specifically if (det==PIXEL) { bec = abs(m_pixelID->barrel_ec(id)); - r= (bec==normalBarrel)?(BARREL):(ENDCAP); + r= (bec==normalBarrel)?(BARREL):(ENDCAP); layer = m_pixelID->layer_disk(id); - if (layer == 0) det=BLAYER; + if (layer == 0) det=IBL; } /** cf. Miriam's code if (det==PIXEL) { diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.h index b1e9eb00b30e5d240b5883aa441f5c2bf5a5de90..cd1a44677d08b49bdb03ff2923c3345ce04b01cc 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorTool.h @@ -33,7 +33,7 @@ class IResidualPullCalculator; //class to decorate xAOD::TruthParticles with additional information required by validation class InDetPhysHitDecoratorTool:virtual public IInDetPhysValDecoratorTool, public AthAlgTool{ public: - enum Subdetector{INVALID_DETECTOR=-1, BLAYER, PIXEL, SCT, TRT, DBM, N_SUBDETECTORS}; + enum Subdetector{INVALID_DETECTOR=-1, IBL, PIXEL, SCT, TRT, DBM, N_SUBDETECTORS}; enum Region{INVALID_REGION=-1, BARREL, ENDCAP}; InDetPhysHitDecoratorTool(const std::string& type,const std::string& name,const IInterface* parent); virtual ~InDetPhysHitDecoratorTool (); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValLargeD0Tool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValLargeD0Tool.cxx index fcdadc4083b5e2226c23ab839735f808d27071e2..8465046915d02b7afacd86df454bae7d0f8ffc71 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValLargeD0Tool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValLargeD0Tool.cxx @@ -35,7 +35,6 @@ #include "xAODTruth/TruthParticleContainer.h" #include "xAODTruth/TruthVertexContainer.h" - //#include <unordered_map> using std::pair; @@ -188,7 +187,7 @@ InDetPhysValLargeD0Tool::fillHistograms() ++nSelectedTracks; // * Get associated truth particle and match probability. - //const xAOD::TruthParticle * associatedTruth = getTruthPtr(*thisTrack); + const xAOD::TruthParticle * associatedTruth = getTruthPtr(*thisTrack); float prob = getMatchingProbability(*thisTrack); //This is where the BMR, Fake, and Really Fake fillers need to go. @@ -205,21 +204,25 @@ InDetPhysValLargeD0Tool::fillHistograms() m_LargeD0Plots->fillRF(*thisTrack, RF_w); bool isFake = (prob < minProbEffLow); - // * Distributions for all particles, regardless of fake status. - m_LargeD0Plots->fill(*thisTrack); - if(isFake) - { - // * Distributions for only fake tracks. - // (Necessary, or should this simply be included under 'fillFakeRate'?) - m_LargeD0Plots->fillFake(*thisTrack); - } - else - { - // * Distributions for non fake tracks. - m_LargeD0Plots->fill(*thisTrack); + bool hasTruthLink = !(associatedTruth == nullptr); + int barcode = 0; + //bool isPrimary = false; + + if (hasTruthLink) { + barcode = associatedTruth->barcode(); } + // * Fake rate plots, using 'fake' flag. - m_LargeD0Plots->fillFakeRate(*thisTrack, isFake); + m_LargeD0Plots->fillFakeRate(*thisTrack, isFake, hasTruthLink); + + // * Distributions for only fake tracks. + if(isFake) { + m_LargeD0Plots->fillFake(*thisTrack); + } + else { + // * Distributions for non-fake tracks. + m_LargeD0Plots->fill(*thisTrack,barcode); + } } // END: Main track loop. @@ -288,38 +291,8 @@ InDetPhysValLargeD0Tool::fillHistograms() } m_LargeD0Plots->pro_fill(*thisTruth, PF_w); // end of bestMatch >= minProbEffHigh - - // * Efficiencies. - /** - For standard tracking, the efficiency is defined as: - - number of truth particles reconstructed by standard tracking - ------------------------------------------------------------ - number of ALL truth particles - - For LRT, the efficiency is defined as: - - number of truth particles reconstructed by LRT - ----------------------------------------------------------------------------------- - number of all truth particles which haven't been reconstructed by standard tracking - - */ - //bool standardTrack = !largeD0Track; //unused m_LargeD0Plots->fillEfficiency(*thisTruth,reconstructed,largeD0Track,isSignal(thisTruth)); - /* - m_LargeD0Plots->fillEfficiency(*thisTruth, \ - reconstructed && standardTrack, \ - false, \ - isSignal(thisTruth)); - - if (reconstructed && standardTrack) { continue; } - - m_LargeD0Plots->fillEfficiency(*thisTruth, \ - reconstructed && largeD0Track, \ - true, \ - isSignal(thisTruth)); - */ } // END: loop truthParticles } // END: if truthParticles @@ -374,6 +347,12 @@ bool InDetPhysValLargeD0Tool::isLargeD0Track (const xAOD::TrackParticle* tp) { return false; } +//bool InDetPhysValLargeD0Tool::isPrimaryTrack (const xAOD::TruthParticle* tp) { +// if ((tp->barcode() > 0) and (tp->barcode() < 200000)) return true; +// else return false; +//} + + bool InDetPhysValLargeD0Tool::isSignal (const xAOD::TruthParticle* p) { if (m_signalIds.empty()) { return false; } if ((p != NULL) && \ @@ -383,21 +362,23 @@ bool InDetPhysValLargeD0Tool::isSignal (const xAOD::TruthParticle* p) { (p->nParents() > 0) && \ (p->isCharged())) { const xAOD::TruthParticle *parent = p->parent(); - while ((parent != NULL) && \ - (parent->hasProdVtx()) && \ - (parent->nParents() > 0)) { - if ( (std::find(m_signalIds.begin(), \ + if (parent == NULL) { return false; } + do { + if ( (std::find(m_signalIds.begin(), \ m_signalIds.end(), \ parent->absPdgId()) != m_signalIds.end())) { return true; } parent = parent->parent(); - } + } while ((parent != NULL) && \ + (parent->hasProdVtx()) && \ + (parent->nParents() > 0)); + } return false; } bool InDetPhysValLargeD0Tool::MinTrackSelection (const xAOD::TrackParticle* tp) { float maxEta = 2.5; - float minPt = 1000; + float minPt = 0; if ( (tp->pt()>1e-7 ? (fabs(tp->eta()) < maxEta) : false) && \ (tp->pt() > minPt) ) return true; else return false; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx index 4093a25d3f326dedbd73ee1e040cbebb45cdaa54..61a681473d58a1483e2505ee34aff9a87491ac68 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx @@ -163,14 +163,14 @@ InDetPhysValMonitoringTool::fillHistograms(){ unsigned int nSelectedTracks(0), num_truthmatch_match(0); // the truth matching probability must not be <= 0., otherwise the tool will seg fault in case of missing truth (e.g. data): - const float minProbEffReallyLow(0.20); //temporary probability for plot comparison with PRTT + // unused const float minProbEffReallyLow(0.20); //temporary probability for plot comparison with PRTT const float minProbEffLow(0.50); //if the probability of a match is less than this, we call it a fake const float minProbEffHigh(0.80); //if the probability of a match is higher than this, it is either a match or a duplicate // //Main track loop, filling Track-only, Track 'n' Truth with good matching probability (meas, res, & pull), and Fakes for(const auto & thisTrack: *ptracks){ - m_monPlots->fillSpectrum(*thisTrack); + m_monPlots->fillSpectrum(*thisTrack); //This one needs prob anyway, why not rearrange & eliminate getMatchingProbability from RttPlots? 5-17-16 if(m_useTrackSelection){ //0 means z0, d0 cut is wrt beam spot - put in a PV to change this if( !(m_trackSelectionTool->accept(*thisTrack, 0))) continue; } @@ -185,7 +185,7 @@ InDetPhysValMonitoringTool::fillHistograms(){ if(prob < minProbEffHigh){ BMR_w = 1; } - if(prob < minProbEffReallyLow){ + if(prob < minProbEffLow){ RF_w = 1; } @@ -326,7 +326,6 @@ InDetPhysValMonitoringTool::fillHistograms(){ } } - if (num_truthmatch_match == 0){ ATH_MSG_DEBUG("NO TRACKS had associated truth."); } else { @@ -377,12 +376,19 @@ InDetPhysValMonitoringTool::fillHistograms(){ if(m_onlyInsideOutTracks and !(isInsideOut(*thisTrack))) continue; //not an inside out track if(thisJet->p4().DeltaR( thisTrack->p4() ) > m_maxTrkJetDR ) continue; - if(m_monPlots->filltrkInJetPlot(*thisTrack, *thisJet)){ - m_monPlots->fillSimpleJetPlots(*thisTrack); //Fill all the simple jet plots + if(m_monPlots->filltrkInJetPlot(*thisTrack, *thisJet)){ + float trkInJet_w(0), trkInJet_BMR(1); + float prob = getMatchingProbability(*thisTrack); + if(prob > minProbEffHigh){ + trkInJet_w = 1; + trkInJet_BMR = 0; + } + m_monPlots->jet_fill(*thisTrack, *thisJet, trkInJet_w); //fill trkinjeteff plots + m_monPlots->jetBMR(*thisTrack, *thisJet, trkInJet_BMR); //fin in track in jet bad match rate plots + m_monPlots->fillSimpleJetPlots(*thisTrack, prob); //Fill all the simple jet plots const xAOD::TruthParticle * associatedTruth = getTruthPtr(*thisTrack); //Get the associated truth for this track if (associatedTruth) { m_monPlots->fillJetResPlots(*thisTrack, *associatedTruth, *thisJet); //Fill jet pull & resolution plots - float prob = getMatchingProbability(*thisTrack); int barcode = associatedTruth->barcode(); m_monPlots->fillJetHitsPlots(*thisTrack, prob, barcode); //Fill the two extra plots if( m_truthSelectionTool->accept(associatedTruth) ){ //Fill the Jet plots with "Eff" in the name diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.cxx index 489464be87a05f62fa974b35d5207e8f7b77cc8e..d2b90bb03458d7e58a28eaeb9c6853cc41987d04 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.cxx @@ -2,7 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -/** +/* * @file InDetRttLargeD0Plots.cxx * @author shaun roe **/ @@ -39,8 +39,15 @@ InDetRttLargeD0Plots::InDetRttLargeD0Plots(InDetPlotBase* pParent, const std::st // hits plots m_hitsPlots_nonfake_st(this,"LargeD0/HitsPlots/StandardTracks/NonFakeTracks"), - m_hitsPlots_nonfake_ld0(this,"LargeD0/HitsPlots/LargeD0Tracks/NonFakeTracks"), + m_hitsPlots_matching_truthLink_primary_st(this,"LargeD0/HitsPlots/StandardTracks/Matching/TruthLink/Primary"), + m_hitsPlots_matching_truthLink_secondary_st(this,"LargeD0/HitsPlots/StandardTracks/Matching/TruthLink/Secondary"), + m_hitsPlots_matching_NotruthLink_st(this,"LargeD0/HitsPlots/StandardTracks/Matching/NotruthLink"), m_hitsPlots_fake_st(this,"LargeD0/HitsPlots/StandardTracks/FakeTracks"), + + m_hitsPlots_nonfake_ld0(this,"LargeD0/HitsPlots/LargeD0Tracks/NonFakeTracks"), + m_hitsPlots_matching_truthLink_primary_ld0(this,"LargeD0/HitsPlots/LargeD0Tracks/Matching/TruthLink/Primary"), + m_hitsPlots_matching_truthLink_secondary_ld0(this,"LargeD0/HitsPlots/LargeD0Tracks/Matching/TruthLink/Secondary"), + m_hitsPlots_matching_NotruthLink_ld0(this,"LargeD0/HitsPlots/LargeD0Tracks/Matching/NotruthLink"), m_hitsPlots_fake_ld0(this,"LargeD0/HitsPlots/LargeD0Tracks/FakeTracks"), // basic plots @@ -48,7 +55,14 @@ InDetRttLargeD0Plots::InDetRttLargeD0Plots(InDetPlotBase* pParent, const std::st m_basicPlot_nonfake_ld0(this,"LargeD0/basicPlot/LargeD0Tracks/NonFakeTracks"), m_basicPlot_fake_st(this,"LargeD0/basicPlot/StandardTracks/FakeTracks"), m_basicPlot_fake_ld0(this,"LargeD0/basicPlot/LargeD0Tracks/FakeTracks"), - m_basicPlot_truth(this, "LargeD0/basicPlot/TruthTracks/"), + m_basicPlot_truth(this, "LargeD0/basicPlot/TruthTracks"), + + m_basicPlot_primary_truth(this, "LargeD0/basicPlot/TruthTracksPrimary"), + m_basicPlot_secondary_truth(this, "LargeD0/basicPlot/TruthTracksSecondary"), + + m_basicPlot_pileup_primary_truth(this, "LargeD0/basicPlot/Pileup/TruthTracksPrimary"), + m_basicPlot_pileup_secondary_truth(this, "LargeD0/basicPlot/Pileup/TruthTracksSecondary"), + // pt plots m_ptPlot_nonfake_st(this,"LargeD0/ptPlot/StandardTracks/NonFakeTracks"), @@ -56,6 +70,11 @@ InDetRttLargeD0Plots::InDetRttLargeD0Plots(InDetPlotBase* pParent, const std::st m_ptPlot_fake_st(this,"LargeD0/ptPlot/StandardTracks/FakeTracks"), m_ptPlot_fake_ld0(this,"LargeD0/ptPlot/LargeD0Tracks/FakeTracks"), + m_ptPlot_primary(this,"LargeD0/ptPlot/TruthTracks/Primary"), + m_ptPlot_secondary(this,"LargeD0/ptPlot/TruthTracks/Secondary"), + m_ptPlot_pileup_primary(this,"LargeD0/ptPlot/Pileup/TruthTracks/Primary"), + m_ptPlot_pileup_secondary(this,"LargeD0/ptPlot/Pileup/TruthTracks/Secondary"), + // Reco info plots m_TrackRecoInfoPlots_nonfake_st(this,"LargeD0/TrackRecoInfoPlots/StandardTracks/NonFakeTracks"), m_TrackRecoInfoPlots_nonfake_ld0(this,"LargeD0/TrackRecoInfoPlots/LargeD0Tracks/NonFakeTracks"), @@ -66,6 +85,11 @@ InDetRttLargeD0Plots::InDetRttLargeD0Plots(InDetPlotBase* pParent, const std::st m_fakePlots (this,"LargeD0/FakeRatePlots/StandardTracks"), m_fakePlotsLRT (this,"LargeD0/FakeRatePlots/LargeD0Tracks"), + m_fakePlots_noTruthLink (this,"LargeD0/FakeRatePlots/StandardTracks/noTruthLink"), + m_fakePlots_noTruthLink_matched_05 (this,"LargeD0/FakeRatePlots/StandardTracks/noTruthLink_matched_05"), + m_fakePlots_noTruthLink_LRT (this,"LargeD0/FakeRatePlots/LargeD0Tracks/noTruthLink"), + m_fakePlots_noTruthLink_matched_05_LRT (this,"LargeD0/FakeRatePlots/LargeD0Tracks/noTruthLink_matched_05"), + // Efficiency plots m_effPlotsStd (this, "LargeD0/EffPlots/StandardTracks/All"), m_effPlotsStdSignal (this, "LargeD0/EffPlots/StandardTracks/Signal"), @@ -77,8 +101,6 @@ InDetRttLargeD0Plots::InDetRttLargeD0Plots(InDetPlotBase* pParent, const std::st m_effPlotsAllSignal (this, "LargeD0/EffPlots/AllTracks/Signal"), m_effPlots (this, "LargeD0/EffPlots"), - - //============================================================= // plots not used for LargeD0 //============================================================= @@ -120,19 +142,6 @@ InDetRttLargeD0Plots::InDetRttLargeD0Plots(InDetPlotBase* pParent, const std::st void InDetRttLargeD0Plots::fill(const xAOD::TrackParticle& particle){ - // filling non-fake tracks - if (isLargeD0Track(particle)) { - m_hitsPlots_nonfake_ld0.fill(particle); - m_basicPlot_nonfake_ld0.fill(particle); - m_ptPlot_nonfake_ld0.fill(particle); - m_TrackRecoInfoPlots_nonfake_ld0.fill(particle); - } - else { - m_hitsPlots_nonfake_st.fill(particle); - m_basicPlot_nonfake_st.fill(particle); - m_ptPlot_nonfake_st.fill(particle); - m_TrackRecoInfoPlots_nonfake_st.fill(particle); - } m_hitResidualPlot.fill(particle); //fill pt plots @@ -145,6 +154,50 @@ InDetRttLargeD0Plots::fill(const xAOD::TrackParticle& particle){ m_hitsDetailedPlots.fill(particle); } +void +InDetRttLargeD0Plots::fill(const xAOD::TrackParticle& particle, const int barcode){ + + if (isLargeD0Track(particle)) { + m_basicPlot_nonfake_ld0.fill(particle); + m_ptPlot_nonfake_ld0.fill(particle); + m_TrackRecoInfoPlots_nonfake_ld0.fill(particle); + m_hitsPlots_nonfake_ld0.fill(particle); + + // primary tracks + if ((barcode > 0) and (barcode <200000)) { + m_hitsPlots_matching_truthLink_primary_ld0.fill(particle); + } + // secondary tracks + if (barcode >= 200000) { + m_hitsPlots_matching_truthLink_secondary_ld0.fill(particle); + } + // no truth link + if (barcode == 0){ + m_hitsPlots_matching_NotruthLink_ld0.fill(particle); + } + } + else { + m_basicPlot_nonfake_st.fill(particle); + m_ptPlot_nonfake_st.fill(particle); + m_TrackRecoInfoPlots_nonfake_st.fill(particle); + m_hitsPlots_nonfake_st.fill(particle); + + // primary tracks + if ((barcode > 0) and (barcode <200000)) { + m_hitsPlots_matching_truthLink_primary_st.fill(particle); + } + // secondary tracks + if (barcode >= 200000) { + m_hitsPlots_matching_truthLink_secondary_st.fill(particle); + } + // no truth link + if (barcode == 0){ + m_hitsPlots_matching_NotruthLink_st.fill(particle); + } + + } + +} //=================================================================================== // In the loop over all track particles // filling track particle with truthMatching < minProbEffHigh (fake tracks) @@ -175,6 +228,16 @@ void InDetRttLargeD0Plots::fillFake(const xAOD::TrackParticle& trackParticle){ void InDetRttLargeD0Plots::fillTruth(const xAOD::TruthParticle& truth){ m_basicPlot_truth.fill(truth); + + if ((truth.barcode() > 0) and (truth.barcode() < 200000)) { + m_basicPlot_primary_truth.fill(truth); + m_ptPlot_primary.fill(truth); + } + else { + m_basicPlot_secondary_truth.fill(truth); + m_ptPlot_secondary.fill(truth); + } + } void @@ -189,26 +252,17 @@ InDetRttLargeD0Plots::fillEfficiency (const xAOD::TruthParticle& truth, \ const bool isLargeD0Track, \ const bool isSignal) { - bool isStandardTrack = !isLargeD0Track; - - float weight(1); - if(!(isReconstructed)) weight = 0; - m_effPlotsAll.pro_fill(truth, weight); - if(!(isStandardTrack)) weight = 0; - m_effPlotsStd.pro_fill(truth, weight); - if(!(isLargeD0Track)) weight = 0; - m_effPlotsLRT.pro_fill(truth, weight); + unsigned int rec = (unsigned int) isReconstructed; + unsigned int LRT = (unsigned int) isLargeD0Track; + m_effPlotsAll.pro_fill(truth, rec); + m_effPlotsStd.pro_fill(truth, rec and not LRT); + m_effPlotsLRT.pro_fill(truth, rec and LRT); if(isSignal){ - float sig_weight(1); - if(!(isReconstructed)) weight = 0; - m_effPlotsAllSignal.pro_fill(truth, sig_weight); - if(!(isStandardTrack)) weight = 0; - m_effPlotsStdSignal.pro_fill(truth, sig_weight); - if(!(isLargeD0Track)) weight = 0; - m_effPlotsLRTSignal.pro_fill(truth, sig_weight); - + m_effPlotsAllSignal.pro_fill(truth, rec); + m_effPlotsStdSignal.pro_fill(truth, rec and not LRT); + m_effPlotsLRTSignal.pro_fill(truth, rec and LRT); } //Not entirely sure what the LRTnonStd conditions should be @@ -283,10 +337,18 @@ InDetRttLargeD0Plots::fillCounter(const unsigned int freq, const InDetPerfPlot_n } void -InDetRttLargeD0Plots::fillFakeRate(const xAOD::TrackParticle& particle, const bool match, const InDetPerfPlot_fakes::Category c){ +InDetRttLargeD0Plots::fillFakeRate(const xAOD::TrackParticle& particle, const bool match, const bool hasTruthLink, const InDetPerfPlot_fakes::Category c){ + + //unsigned int link = (unsigned int) hasTruthLink; + + if (isLargeD0Track(particle)) { - m_fakePlotsLRT.fill(particle, match, c); + if (hasTruthLink) m_fakePlotsLRT.fill(particle, match, c); + m_fakePlots_noTruthLink_matched_05_LRT.fill(particle, !(match) and !(hasTruthLink), c); + m_fakePlots_noTruthLink_LRT.fill(particle,!(hasTruthLink), c); } else { - m_fakePlots.fill(particle, match, c); + if (hasTruthLink) m_fakePlots.fill(particle, match, c); + m_fakePlots_noTruthLink_matched_05.fill(particle, !(match) and !(hasTruthLink), c); + m_fakePlots_noTruthLink.fill(particle, !(hasTruthLink), c); } } diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.h index 49054c88c1977fb85c8c848aac0c53395e4f6928..9d3e6c06b40be42069168d7f13a532994a6c7098 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttLargeD0Plots.h @@ -52,6 +52,7 @@ public: //void fill(const xAOD::TrackParticle& particle, const xAOD::TruthParticle& truthParticle); // not used. SC ///fill for things needing track only void fill(const xAOD::TrackParticle& particle); + void fill(const xAOD::TrackParticle& particle, const int barcode); ///fill for things needing truth only void fill(const xAOD::TruthParticle& particle); ///fill for things needing all truth - not just the ones from the reco tracks @@ -78,7 +79,7 @@ public: ///fill for Counters void fillCounter(const unsigned int freq, const InDetPerfPlot_nTracks::CounterCategory counter); ///fill for fakes - void fillFakeRate(const xAOD::TrackParticle& particle, const bool isFake, const InDetPerfPlot_fakes::Category c = InDetPerfPlot_fakes::ALL); + void fillFakeRate(const xAOD::TrackParticle& particle, const bool isFake, const bool hasTruthLink, const InDetPerfPlot_fakes::Category c = InDetPerfPlot_fakes::ALL); ///fill for fakes (Siinn) void fillFake(const xAOD::TrackParticle& particle); @@ -92,8 +93,15 @@ private: // hit plots Trk::IDHitPlots m_hitsPlots_nonfake_st; - Trk::IDHitPlots m_hitsPlots_nonfake_ld0; + Trk::IDHitPlots m_hitsPlots_matching_truthLink_primary_st; + Trk::IDHitPlots m_hitsPlots_matching_truthLink_secondary_st; + Trk::IDHitPlots m_hitsPlots_matching_NotruthLink_st; Trk::IDHitPlots m_hitsPlots_fake_st; + + Trk::IDHitPlots m_hitsPlots_nonfake_ld0; + Trk::IDHitPlots m_hitsPlots_matching_truthLink_primary_ld0; + Trk::IDHitPlots m_hitsPlots_matching_truthLink_secondary_ld0; + Trk::IDHitPlots m_hitsPlots_matching_NotruthLink_ld0; Trk::IDHitPlots m_hitsPlots_fake_ld0; // basic plots @@ -103,12 +111,25 @@ private: InDetBasicPlot m_basicPlot_fake_ld0; InDetBasicPlot m_basicPlot_truth; + InDetBasicPlot m_basicPlot_primary_truth; + InDetBasicPlot m_basicPlot_secondary_truth; + + InDetBasicPlot m_basicPlot_pileup_primary_truth; + InDetBasicPlot m_basicPlot_pileup_secondary_truth; + // pT plots InDetPerfPlot_Pt m_ptPlot_nonfake_st; InDetPerfPlot_Pt m_ptPlot_nonfake_ld0; InDetPerfPlot_Pt m_ptPlot_fake_st; InDetPerfPlot_Pt m_ptPlot_fake_ld0; + InDetPerfPlot_Pt m_ptPlot_primary; + InDetPerfPlot_Pt m_ptPlot_secondary; + + InDetPerfPlot_Pt m_ptPlot_pileup_primary; + InDetPerfPlot_Pt m_ptPlot_pileup_secondary; + + // Reco info plots Trk::RecoInfoPlots m_TrackRecoInfoPlots_nonfake_st; Trk::RecoInfoPlots m_TrackRecoInfoPlots_nonfake_ld0; @@ -119,6 +140,12 @@ private: InDetPerfPlot_ExtendedFakes m_fakePlots; InDetPerfPlot_ExtendedFakes m_fakePlotsLRT; + InDetPerfPlot_ExtendedFakes m_fakePlots_noTruthLink; + InDetPerfPlot_ExtendedFakes m_fakePlots_noTruthLink_matched_05; + + InDetPerfPlot_ExtendedFakes m_fakePlots_noTruthLink_LRT; + InDetPerfPlot_ExtendedFakes m_fakePlots_noTruthLink_matched_05_LRT; + // Efficiency plots InDetPerfPlot_Eff m_effPlotsStd; InDetPerfPlot_Eff m_effPlotsStdSignal; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx index 642c1abb8b16bba1f823792c35ddf5c77acea095..17c7ccc45754dd117be5c734dcf9049278410fc9 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx @@ -60,6 +60,7 @@ InDetRttPlots::InDetRttPlots(InDetPlotBase* pParent, const std::string & sDir):I m_trkInJetHitsDetailedPlots(this,"Tracks/SelectedGoodJetTracks"), m_trkInJetFakePlots(this,"Tracks/SelectedFakeJetTracks"), m_trkInJetResPlots(this,"Tracks/SelectedGoodJetTracks"), + m_trkInJetEffPlots(this,"Tracks/SelectedGoodJetTracks"), m_trkInJetHighPtResPlots(this,"Tracks/SelectedGoodJetHighPtTracks"), m_trkInJetHitsFakeTracksPlots(this,"Tracks/SelectedFakeJetTracks"), m_trkInJetHitsMatchedTracksPlots(this,"Tracks/SelectedMatchedJetTracks"), @@ -207,11 +208,13 @@ bool InDetRttPlots::filltrkInJetPlot(const xAOD::TrackParticle& particle, const xAOD::Jet& jet){ bool pass = m_trkInJetPlot.fill(particle, jet); m_trkInJetPlot_highPt.fill(particle, jet); + + //m_effPlots.jet_fill(particle, jet, weight); return pass; } void -InDetRttPlots::fillSimpleJetPlots(const xAOD::TrackParticle& particle){ +InDetRttPlots::fillSimpleJetPlots(const xAOD::TrackParticle& particle, float prob){ // the full suit of track plots m_trkInJetPtPlot.fill(particle); m_trkInJetPtEtaPlots.fill(particle); @@ -220,12 +223,10 @@ InDetRttPlots::fillSimpleJetPlots(const xAOD::TrackParticle& particle){ m_trkInJetHitsPlots.fill(particle); m_trkInJetHitsDetailedPlots.fill(particle); - float minProbEffLow(0.5); - float prob = getMatchingProbability(particle); - if ( std::isnan(prob) ) { return; } - const bool isFake=(prob<minProbEffLow); + const bool isFake=(prob<m_truthProbLowThreshold); m_trkInJetFakePlots.fill(particle, isFake, InDetPerfPlot_fakes::ALL); + } void @@ -256,21 +257,21 @@ InDetRttPlots::fillJetResPlots(const xAOD::TrackParticle& particle, const xAOD:: } // m_moreJetPlots } - -void -InDetRttPlots::fillJetFakes(const xAOD::TrackParticle& particle){ - const bool isFake = true; - m_trkInJetFakePlots.fill(particle, isFake, InDetPerfPlot_fakes::ALL); - //m_trkInJetHitsFakeTracksPlots.fill(particle); //How is this one different from the above one?! -} - - void InDetRttPlots::fillJetEffPlots(const xAOD::TruthParticle& truth, const xAOD::Jet& jet){ m_trkInJetPlot.BookEffReco(truth,jet); // fill hists with truth info! m_trkInJetPlot_highPt.BookEffReco(truth,jet); // fill hists with truth info! } +void +InDetRttPlots::jet_fill(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight){ + m_trkInJetEffPlots.jet_fill(track, jet, weight); +} + +void +InDetRttPlots::jetBMR(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight){ + m_BadMatchRate.jetBMR(track, jet, weight); +} void InDetRttPlots::fillJetTrkTruth(const xAOD::TruthParticle& truth, const xAOD::Jet& jet){ @@ -289,9 +290,3 @@ InDetRttPlots::fillJetTrkTruthCounter(const xAOD::Jet& jet){ m_trkInJetPlot.fillEff(jet); m_trkInJetPlot_highPt.fillEff(jet); } -/* -void InDetRttPlots::SetPrimaryEtaCut( float eta ) { - m_truthPrimaryEtaCut = eta; - m_resPlots.SetEtaBinning( int(2*eta/0.25), -1*eta, eta ); //Isn't this hard-coded into res.cxx anyway? -} -*/ diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h index f0c18c83de57d7b4392a709f18743982dcabdec9..291c15cdddc1ef44b052be760513e975fa6570a8 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h @@ -52,7 +52,6 @@ class InDetRttPlots:public InDetPlotBase { public: InDetRttPlots(InDetPlotBase * pParent, const std::string & dirName); void SetFillExtraTIDEPlots( bool fillthem ) { m_moreJetPlots = fillthem; } - //void SetPrimaryEtaCut( float eta ); //5-16-16: seems unnecessary, can probably erase w/out harm ///fill for things needing truth and track only void fill(const xAOD::TrackParticle& particle, const xAOD::TruthParticle& truthParticle); ///fill for things needing track only @@ -78,14 +77,14 @@ public: //New set has replaced fillJetPlot bool filltrkInJetPlot(const xAOD::TrackParticle& particle, const xAOD::Jet& jet); - void fillSimpleJetPlots(const xAOD::TrackParticle& particle); - + void fillSimpleJetPlots(const xAOD::TrackParticle& particle, float prob); void fillJetHitsPlots(const xAOD::TrackParticle& particle, float prob, int barcode); - void fillJetResPlots(const xAOD::TrackParticle& particle, const xAOD::TruthParticle& truth, const xAOD::Jet& jet); - void fillJetFakes(const xAOD::TrackParticle& particle); void fillJetEffPlots(const xAOD::TruthParticle& truth, const xAOD::Jet& jet); + void jet_fill(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight); + void jetBMR(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight); + void fillJetPlotCounter(const xAOD::Jet& jet); void fillJetTrkTruth(const xAOD::TruthParticle& truth, const xAOD::Jet& jet); void fillJetTrkTruthCounter(const xAOD::Jet& jet); @@ -141,6 +140,7 @@ private: InDetPerfPlot_res* m_trkInJetResPlotsDr0010; InDetPerfPlot_res* m_trkInJetResPlotsDr1020; InDetPerfPlot_res* m_trkInJetResPlotsDr2030; + InDetPerfPlot_Eff m_trkInJetEffPlots; InDetPerfPlot_res m_trkInJetHighPtResPlots; Trk::IDHitPlots m_trkInJetHitsFakeTracksPlots; Trk::IDHitPlots m_trkInJetHitsMatchedTracksPlots; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.cxx index 337c4984b57f12b4e8636e03da060d2e951722a3..c5bedb871b98e808db2211d4b08a038bacd18d62 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.cxx @@ -27,12 +27,11 @@ InDet_BadMatchRate::initializePlots(){ book(m_BadMatchRate, "BadMatchRate"); book(m_BMR_vs_logpt, "BadMatchRate_vs_logpt"); - //Fake Rate plots, TMP < 50% - //book(m_trackeff_vs_eta, "trackeff_vs_eta"); - //Really Fake Rate plots, Truth Matching Probability < 20% book(m_ReallyFakeRate, "ReallyFakeRate"); + //TrackinJet Bad Match Rate plots + book(m_trackinjet_badmatchrate_vs_dr_gr_j100, "trackinjet_badmatchrate_vs_dr_gr_j100"); } void @@ -46,13 +45,33 @@ InDet_BadMatchRate::fillBMR(const xAOD::TrackParticle& particle, float weight){ } void -InDet_BadMatchRate::fillRF(const xAOD::TrackParticle& particle, Float_t weight){ +InDet_BadMatchRate::fillRF(const xAOD::TrackParticle& particle, float weight){ float trketa = particle.eta(); //float trkpt = particle.pt();//unused m_ReallyFakeRate->Fill(trketa, weight); } +void +InDet_BadMatchRate::jetBMR(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight){ + float jet_et = jet.pt()/1000.; //divide by 1000 to convert to GeV + //unused float trketa = track.eta(); + //unused float trkphi = track.phi(); + + //unused float jeteta = jet.eta(); + //unused float jetphi = jet.phi(); + + //float deta = trketa - jeteta; + //float dphi = trkphi - jetphi; + + float dR = jet.p4().DeltaR( track.p4() ); + + if(jet_et > 100){ + m_trackinjet_badmatchrate_vs_dr_gr_j100->Fill(dR, weight); + } + +} + /* void InDet_BadMatchRate::finalizePlots(){ } diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.h index 890e658791c706630ed9054fd8f1616d8c9ef13b..af044c7bbcc5a4971d1085ad8c9288fb8791065f 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDet_BadMatchRate.h @@ -14,7 +14,7 @@ #include <string> #include "InDetPlotBase.h" #include "xAODTracking/TrackParticle.h" - +#include "xAODJet/Jet.h" #include "TProfile.h" class IToolSvc; @@ -28,6 +28,8 @@ class InDet_BadMatchRate:public InDetPlotBase{ void fillBMR(const xAOD::TrackParticle& particle, float weight); void fillRF(const xAOD::TrackParticle& particle, float weight); + + void jetBMR(const xAOD::TrackParticle& track, const xAOD::Jet& jet, float weight); private: TProfile* m_BadMatchRate; @@ -35,6 +37,8 @@ class InDet_BadMatchRate:public InDetPlotBase{ TProfile* m_ReallyFakeRate; + TProfile* m_trackinjet_badmatchrate_vs_dr_gr_j100; + void initializePlots(); //void finalizePlots(); //I'm not 100% sure a finalize section is actually needed here }; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx index fd87eb76720aa409581709b499b180415d1db3d0..98f6e814d8885477024d0cc779071d1db6eb3b27 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx @@ -17,7 +17,7 @@ TrackTruthSelectionTool::TrackTruthSelectionTool(const std::string& name): //declareProperty( "Property", m_nProperty ); //example property declaration declareProperty("maxEta", m_maxEta = 2.5); - declareProperty("minPt", m_minPt = 400); //4-4-16 normally 400, set to 300 for testing + declareProperty("minPt", m_minPt = 400); //5-20-16: normally 400, set to 950 for testing declareProperty("maxPt", m_maxPt = -1); declareProperty("maxBarcode", m_maxBarcode = 200e3); //4-7-16 normally 200e3, set to 100e3 for testing declareProperty("requireCharged", m_requireCharged = true); //4-1-16 normally true, setting to false for testing diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/InDetPhysValMonitoring_TestConfiguration.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/InDetPhysValMonitoring_TestConfiguration.xml index 98e3d90136473a656e4343fdee368dbefc95c012..a39eaa4c0d02942b785a188bce211f1a5504c994 100755 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/InDetPhysValMonitoring_TestConfiguration.xml +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/InDetPhysValMonitoring_TestConfiguration.xml @@ -16,36 +16,36 @@ </classification> <jobTransform userJobId="IdPhysValTtbar"> - <doc>ttbar, mc10</doc> + <doc>ttbar, mc15</doc> <jobTransformJobName> IdPhysValTtbar </jobTransformJobName> <jobTransformCmd> - Reco_tf.py --checkEventCount False --ignoreErrors True --maxEvents 25 --valid True --inputRDOFile root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105200.T1_McAtNlo_Jimmy.digit.RDO.e598_s933_s946_d366/RDO.197091._000015.pool.root.1 --outputNTUP_PHYSVALFile physval.root --outputAODFile physval.AOD.root --validationFlags doInDet --preExec "from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doSlimming.set_Value_and_Lock(False);rec.doTrigger.set_Value_and_Lock(False); from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False);rec.doDumpProperties=True;" + Reco_tf.py --steering doRAWtoALL --checkEventCount False --ignoreErrors True --maxEvents 25 --valid True --inputRDOFile root://eosatlas//eos/atlas/atlasgroupdisk/perf-idtracking/dq2/rucio/mc15_13TeV/60/11/RDO.07497143._000001.pool.root.1 --outputNTUP_PHYSVALFile physval.root --outputAODFile physval.AOD.root --validationFlags doInDet --preExec "from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doSlimming.set_Value_and_Lock(False);rec.doTrigger.set_Value_and_Lock(False); from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False);rec.doDumpProperties=True;rec.doCalo=False;rec.doEgamma=False;rec.doForwardDet=False;rec.doInDet=True;rec.doJetMissingETTag=False;rec.doLArg=False;rec.doLucid=False;rec.doMuon=False;rec.doMuonCombined=False;rec.doSemiDetailedPerfMon=True;rec.doTau=False;rec.doTile=False;" </jobTransformCmd> <group>IdPhysValTtbar</group> <queue>medium</queue> </jobTransform> <jobTransform userJobId="IdPhysValMinBias"> - <doc>minbias, mc10</doc> + <doc>minbias, mc15</doc> <jobTransformJobName> InPhysValMinbias </jobTransformJobName> <jobTransformCmd> - Reco_tf.py --checkEventCount False --ignoreErrors True --maxEvents 25 --valid True --inputRDOFile root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105001.pythia_minbias.digit.RDO.e574_s932_s946_d369/RDO.197112._000270.pool.root.1 root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105001.pythia_minbias.digit.RDO.e574_s932_s946_d369/RDO.197112._000757.pool.root.1 --outputNTUP_PHYSVALFile physval.root --outputAODFile physval.AOD.root --validationFlags doInDet --preExec "from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doSlimming.set_Value_and_Lock(False);rec.doTrigger.set_Value_and_Lock(False); from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False);rec.doDumpProperties=True;InDetFlags.doMinBias.set_Value_and_Lock(True);" + Reco_tf.py --steering doRAWtoALL --checkEventCount False --ignoreErrors True --maxEvents 25 --valid True --inputRDOFile root://eosatlas//eos/atlas/atlasgroupdisk/perf-idtracking/dq2/rucio/mc15_13TeV/0c/a1/RDO.07497163._000001.pool.root.1 root://eosatlas//eos/atlas/atlasgroupdisk/perf-idtracking/dq2/rucio/mc15_13TeV/61/b8/RDO.07497154._000001.pool.root.1 --outputNTUP_PHYSVALFile physval.root --outputAODFile physval.AOD.root --validationFlags doInDet --preExec "from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doSlimming.set_Value_and_Lock(False);rec.doTrigger.set_Value_and_Lock(False); from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False);rec.doDumpProperties=True;InDetFlags.doMinBias.set_Value_and_Lock(True);rec.doCalo=False;rec.doEgamma=False;rec.doForwardDet=False;rec.doInDet=True;rec.doJetMissingETTag=False;rec.doLArg=False;rec.doLucid=False;rec.doMuon=False;rec.doMuonCombined=False;rec.doSemiDetailedPerfMon=True;rec.doTau=False;rec.doTile=False;" </jobTransformCmd> <group>IdPhysValMinBias</group> <queue>medium</queue> </jobTransform> <jobTransform userJobId="IdPhysValGSFSingleE"> - <doc>gsf, single-electrons, mc12</doc> + <doc>gsf, single-electrons, mc15</doc> <jobTransformJobName> InPhysValGSFSingleE </jobTransformJobName> <jobTransformCmd> - Reco_tf.py --checkEventCount False --ignoreErrors True --maxEvents 25 --valid True --inputRDOFile root://eosatlas//eos/atlas/atlascerngroupdisk/perf-egamma/rtt/mc12_valid1.107061.singlepart_e_E100.digit.RDO.e1127_s1469_d701_tid790115_00/RDO.790115._000001.pool.root.1 --outputNTUP_PHYSVALFile physval.root --outputAODFile physval.AOD.root --validationFlags doInDet --preExec "from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doSlimming.set_Value_and_Lock(False);rec.doTrigger.set_Value_and_Lock(False); from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(True);rec.doDumpProperties=True;" + Reco_tf.py --steering doRAWtoALL --checkEventCount False --ignoreErrors True --maxEvents 25 --valid True --inputRDOFile root://eosatlas//eos/atlas/atlasgroupdisk/perf-idtracking/dq2/rucio/mc15_13TeV/ef/41/RDO.07275505._000001.pool.root.1 --outputNTUP_PHYSVALFile physval.root --outputAODFile physval.AOD.root --validationFlags doInDet --preExec "from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doSlimming.set_Value_and_Lock(False);rec.doTrigger.set_Value_and_Lock(False); from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(True);rec.doForwardDet=False;rec.doInDet=True;rec.doJetMissingETTag=False;rec.doCalo=True;rec.doEgamma=True;rec.doLucid=False;rec.doMuon=False;rec.doMuonCombined=False;rec.doSemiDetailedPerfMon=True;rec.doTau=False;rec.doDumpProperties=True;" </jobTransformCmd> <group>IdPhysValGSFSingleE</group> <queue>medium</queue>