diff --git a/Simulation/Tools/HitAnalysis/share/AFPHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/AFPHitAnalysis_topOptions.py index f22c3e8ac83892f18399764b7a53036eef2bd9c4..289e29f26d9c39d02e31d5881cfa728bd3cd075c 100755 --- a/Simulation/Tools/HitAnalysis/share/AFPHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/AFPHitAnalysis_topOptions.py @@ -7,20 +7,25 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import AFPHitAnalysis -topSequence += AFPHitAnalysis() +topSequence += AFPHitAnalysis() AFPHitAnalysis = AFPHitAnalysis() -AFPHitAnalysis.NtupleFileName = '/AFPHitAnalysis/' -AFPHitAnalysis.HistPath = '/AFPHitAnalysis/' +AFPHitAnalysis.NtupleFileName = '/AFPHitAnalysis/ntuples/' +AFPHitAnalysis.HistPath = '/AFPHitAnalysis/histos/' from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() diff --git a/Simulation/Tools/HitAnalysis/share/ALFAHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/ALFAHitAnalysis_topOptions.py index 4065c4d2854ae79935020940bafa6c0941488215..703f02c0a154aa870e0b74cc5af44e05bec55f9e 100755 --- a/Simulation/Tools/HitAnalysis/share/ALFAHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/ALFAHitAnalysis_topOptions.py @@ -4,22 +4,26 @@ import AthenaPoolCnvSvc.ReadAthenaPool from PartPropSvc.PartPropSvcConf import PartPropSvc -include( "ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") -include( "EventAthenaPool/EventAthenaPool_joboptions.py" ) +include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") +include("EventAthenaPool/EventAthenaPool_joboptions.py" ) + +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import ALFAHitAnalysis -topSequence += ALFAHitAnalysis() +topSequence += ALFAHitAnalysis() ALFAHitAnalysis = ALFAHitAnalysis() -ALFAHitAnalysis.NtupleFileName = '/ALFAHitAnalysis/' ALFAHitAnalysis.HistPath = '/ALFAHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/share/AllHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/AllHitAnalysis_topOptions.py index e815ea4a872cf0b663c56543e70653ee72e37f88..b6323b351b3cf951f93f90e4136bead63f0a984a 100755 --- a/Simulation/Tools/HitAnalysis/share/AllHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/AllHitAnalysis_topOptions.py @@ -2,15 +2,21 @@ from AthenaCommon.AppMgr import ServiceMgr import AthenaPoolCnvSvc.ReadAthenaPool + from PartPropSvc.PartPropSvcConf import PartPropSvc -include( "ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") -include( "EventAthenaPool/EventAthenaPool_joboptions.py" ) +include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") +include("EventAthenaPool/EventAthenaPool_joboptions.py" ) + +from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +GeoModelSvc = GeoModelSvc() +GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +#athenaCommonFlags.FilesInput = glob( "/afs/cern.ch/work/a/ancuetog/HitsAreas/20.3.X.Y-VAL-r3/atlasG4_10ttbar_20.3.X.Y-VAL-r3-modtime.NoFrozenShower.DeadLAr.hits.pool.root" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() from AthenaCommon.AlgSequence import AlgSequence @@ -19,68 +25,62 @@ from HitAnalysis.HitAnalysisConf import * topSequence += SiHitAnalysis('PixelHitAnalysis') topSequence.PixelHitAnalysis.CollectionName='PixelHits' -topSequence.PixelHitAnalysis.NtupleFileName='/HitAnalysis/Pixel/' -topSequence.PixelHitAnalysis.HistPath='/HitAnalysis/Pixel/' - topSequence += SiHitAnalysis('SCTHitAnalysis') topSequence.SCTHitAnalysis.CollectionName='SCT_Hits' -topSequence.SCTHitAnalysis.NtupleFileName='/HitAnalysis/SCT/' -topSequence.SCTHitAnalysis.HistPath='/HitAnalysis/SCT/' - topSequence += SiHitAnalysis('BCMHitAnalysis') topSequence.BCMHitAnalysis.CollectionName='BCMHits' -topSequence.BCMHitAnalysis.NtupleFileName='/HitAnalysis/BCM/' -topSequence.BCMHitAnalysis.HistPath='/HitAnalysis/BCM/' - topSequence += SiHitAnalysis('BLMHitAnalysis') topSequence.BLMHitAnalysis.CollectionName='BLMHits' -topSequence.BLMHitAnalysis.NtupleFileName='/HitAnalysis/BLM/' -topSequence.BLMHitAnalysis.HistPath='/HitAnalysis/BLM/' - topSequence += TRTHitAnalysis('TRTHitAnalysis') -topSequence.TRTHitAnalysis.NtupleFileName='/HitAnalysis/TRT/' -topSequence.TRTHitAnalysis.HistPath='/HitAnalysis/TRT/' - topSequence += RPCHitAnalysis('RPCHitAnalysis') -topSequence.RPCHitAnalysis.NtupleFileName='/HitAnalysis/RPC/' -topSequence.RPCHitAnalysis.HistPath='/HitAnalysis/RPC/' - topSequence += MDTHitAnalysis('MDTHitAnalysis') -topSequence.MDTHitAnalysis.NtupleFileName='/HitAnalysis/MDT/' -topSequence.MDTHitAnalysis.HistPath='/HitAnalysis/MDT/' - topSequence += CSCHitAnalysis('CSCHitAnalysis') -topSequence.CSCHitAnalysis.NtupleFileName='/HitAnalysis/CSC/' -topSequence.CSCHitAnalysis.HistPath='/HitAnalysis/CSC/' - topSequence += TGCHitAnalysis('TGCHitAnalysis') -topSequence.TGCHitAnalysis.NtupleFileName='/HitAnalysis/TGC/' -topSequence.TGCHitAnalysis.HistPath='/HitAnalysis/TGC/' - #topSequence += ALFAHitAnalysis('ALFAHitAnalysis') -#topSequence.ALFAHitAnalysis.NtupleFileName='/HitAnalysis/ALFA/' -#topSequence.ALFAHitAnalysis.HistPath='/HitAnalysis/ALFA/' - #topSequence += LucidHitAnalysis('LucidHitAnalysis') -#topSequence.LucidHitAnalysis.NtupleFileName='/HitAnalysis/Lucid/' -#topSequence.LucidHitAnalysis.HistPath='/HitAnalysis/Lucid/' - #topSequence += ZDCHitAnalysis('ZDCHitAnalysis') -#topSequence.ZDCHitAnalysis.NtupleFileName='/HitAnalysis/ZDC/' -#topSequence.ZDCHitAnalysis.HistPath='/HitAnalysis/ZDC/' - topSequence += TrackRecordAnalysis('TrackRecordAnalysis') -topSequence.TrackRecordAnalysis.NtupleFileName='/HitAnalysis/Track/' -topSequence.TrackRecordAnalysis.HistPath='/HitAnalysis/Track/' - topSequence += TruthHitAnalysis('TruthHitAnalysis') -topSequence.TruthHitAnalysis.NtupleFileName = '/HitAnalysis/Truth/' -topSequence.TruthHitAnalysis.HistPath = '/HitAnalysis/Truth/' - topSequence += CaloHitAnalysis('CaloHitAnalysis') -topSequence.CaloHitAnalysis.NtupleFileName = '/HitAnalysis/Calo/' -topSequence.CaloHitAnalysis.HistPath = '/HitAnalysis/Calo/' - +topSequence += MMHitAnalysis('MMHitAnalysis') +topSequence += sTGCHitAnalysis('sTGCHitAnalysis') + + + +topSequence.PixelHitAnalysis.HistPath='/HitAnalysis/Pixel/histos/' +topSequence.SCTHitAnalysis.HistPath='/HitAnalysis/SCT/histos/' +topSequence.BCMHitAnalysis.HistPath='/HitAnalysis/BCM/histos/' +topSequence.BLMHitAnalysis.HistPath='/HitAnalysis/BLM/histos/' +topSequence.TRTHitAnalysis.HistPath='/HitAnalysis/TRT/histos/' +topSequence.RPCHitAnalysis.HistPath='/HitAnalysis/RPC/histos/' +topSequence.MDTHitAnalysis.HistPath='/HitAnalysis/MDT/histos/' +topSequence.CSCHitAnalysis.HistPath='/HitAnalysis/CSC/histos/' +topSequence.TGCHitAnalysis.HistPath='/HitAnalysis/TGC/histos/' +#topSequence.ALFAHitAnalysis.HistPath='/HitAnalysis/' +#topSequence.LucidHitAnalysis.HistPath='/HitAnalysis/' +#topSequence.ZDCHitAnalysis.HistPath='/HitAnalysis/' +topSequence.TrackRecordAnalysis.HistPath='/HitAnalysis/Track/histos/' +topSequence.TruthHitAnalysis.HistPath = '/HitAnalysis/Truth/histos/' +topSequence.CaloHitAnalysis.HistPath = '/HitAnalysis/Calo/histos/' +topSequence.MMHitAnalysis.HistPath='/HitAnalysis/MM/histos/' +topSequence.sTGCHitAnalysis.HistPath='/HitAnalysis/sTGC/histos/' +topSequence.PixelHitAnalysis.NtupleFileName='/HitAnalysis/Pixel/ntuple/' +topSequence.SCTHitAnalysis.NtupleFileName='/HitAnalysis/SCT/ntuple/' +topSequence.BCMHitAnalysis.NtupleFileName='/HitAnalysis/BCM/ntuple/' +topSequence.BLMHitAnalysis.NtupleFileName='/HitAnalysis/BLM/ntuple/' +topSequence.TRTHitAnalysis.NtupleFileName='/HitAnalysis/TRT/ntuple/' +topSequence.RPCHitAnalysis.NtupleFileName='/HitAnalysis/RPC/ntuple/' +topSequence.MDTHitAnalysis.NtupleFileName='/HitAnalysis/MDT/ntuple/' +topSequence.CSCHitAnalysis.NtupleFileName='/HitAnalysis/CSC/ntuple/' +topSequence.TGCHitAnalysis.NtupleFileName='/HitAnalysis/TGC/ntuple/' +#topSequence.ALFAHitAnalysis.NtupleFileName='/HitAnalysis/' +#topSequence.LucidHitAnalysis.NtupleFileName='/HitAnalysis/' +#topSequence.ZDCHitAnalysis.NtupleFileName='/HitAnalysis/' +topSequence.TrackRecordAnalysis.NtupleFileName='/HitAnalysis/Track/ntuple/' +topSequence.TruthHitAnalysis.NtupleFileName = '/HitAnalysis/Truth/ntuple/' +topSequence.CaloHitAnalysis.NtupleFileName = '/HitAnalysis/Calo/ntuple/' +topSequence.MMHitAnalysis.NtupleFileName='/HitAnalysis/MM/ntuple/' +topSequence.sTGCHitAnalysis.NtupleFileName='/HitAnalysis/sTGC/ntuple/' #Add some more TH2 histograms @@ -90,12 +90,13 @@ topSequence.SCTHitAnalysis.ExpertMode= "off" topSequence.BCMHitAnalysis.ExpertMode= "off" topSequence.BLMHitAnalysis.ExpertMode= "off" topSequence.CaloHitAnalysis.ExpertMode = "off" -topSequence.CaloHitAnalysis.CalibHits = "off" +topSequence.CaloHitAnalysis.CalibHits = "off" from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() ServiceMgr.THistSvc.Output += ["HitAnalysis DATAFILE='AllHitAnalysis.root' OPT='RECREATE'" ] + ServiceMgr.MessageSvc.OutputLevel = INFO ServiceMgr.MessageSvc.defaultLimit = 9999999 @@ -110,5 +111,4 @@ AthenaPoolCnvSvc.UseDetailChronoStat = TRUE from RecExConfig.AutoConfiguration import * ConfigureFieldAndGeo() # Configure the settings for the geometry include("RecExCond/AllDet_detDescr.py") # Actually load the geometry -#include( "TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work - +#include("TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work diff --git a/Simulation/Tools/HitAnalysis/share/CSCHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/CSCHitAnalysis_topOptions.py index dd817a4ea6ea792796d5315c6a1636c71619b204..0d77065a929110fbb7b9b1312f746971e07900c2 100755 --- a/Simulation/Tools/HitAnalysis/share/CSCHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/CSCHitAnalysis_topOptions.py @@ -7,19 +7,23 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import CSCHitAnalysis -topSequence += CSCHitAnalysis() +topSequence += CSCHitAnalysis() CSCHitAnalysis = CSCHitAnalysis() -CSCHitAnalysis.NtupleFileName = '/CSCHitAnalysis/' CSCHitAnalysis.HistPath = '/CSCHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/share/CaloHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/CaloHitAnalysis_topOptions.py index d3b16e0b037577228c68ffbec3f70ce1745d4133..e8ae3d1cc6a4153237505774976c1c3062927d95 100755 --- a/Simulation/Tools/HitAnalysis/share/CaloHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/CaloHitAnalysis_topOptions.py @@ -5,23 +5,27 @@ import AthenaPoolCnvSvc.ReadAthenaPool from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") -include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#include("EventAthenaPool/EventAthenaPool_joboptions.py" ) + +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import CaloHitAnalysis -topSequence += CaloHitAnalysis() CaloHitAnalysis = CaloHitAnalysis() -CaloHitAnalysis.NtupleFileName = '/CaloHitAnalysis/' -CaloHitAnalysis.HistPath = '/CaloHitAnalysis/' - +topSequence += CaloHitAnalysis +CaloHitAnalysis.HistPath = '/CaloHitAnalysis/histos/' +CaloHitAnalysis.NtupleFileName = '/CaloHitAnalysis/ntuple/' #ExpertMode adds more histograms to the output. Default mode is off CaloHitAnalysis.ExpertMode = "off" #CalibHits adds Calibrated hits histograms to the output. Default mode is off @@ -31,6 +35,7 @@ from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() ServiceMgr.THistSvc.Output += ["CaloHitAnalysis DATAFILE='CaloHitAnalysis.root' OPT='RECREATE'" ] + ServiceMgr.MessageSvc.OutputLevel = INFO ServiceMgr.MessageSvc.defaultLimit = 9999999 @@ -45,4 +50,4 @@ AthenaPoolCnvSvc.UseDetailChronoStat = TRUE from RecExConfig.AutoConfiguration import * ConfigureFieldAndGeo() # Configure the settings for the geometry include("RecExCond/AllDet_detDescr.py") # Actually load the geometry -#include( "TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work +#include("TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work diff --git a/Simulation/Tools/HitAnalysis/share/HitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/HitAnalysis_topOptions.py index ecece8910f816a82e74668a41431b8bd0c12dbc3..8bdd8445e84ed835a78863f831837759d467ea46 100755 --- a/Simulation/Tools/HitAnalysis/share/HitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/HitAnalysis_topOptions.py @@ -1,72 +1,62 @@ #from AthenaCommon.AppMgr import ToolSvc -from AthenaCommon.AppMgr import ServiceMgr -import AthenaPoolCnvSvc.ReadAthenaPool +#from AthenaCommon.AppMgr import ServiceMgr +#import AthenaPoolCnvSvc.ReadAthenaPool from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) -#import os -#from glob import glob -#from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -#athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) -#ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() +from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +GeoModelSvc = GeoModelSvc() +GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" +import os +from glob import glob from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() - - from HitAnalysis.HitAnalysisConf import * -topSequence += SiHitAnalysis('PixelHitAnalysis') -topSequence.PixelHitAnalysis.CollectionName = 'PixelHits' -topSequence.PixelHitAnalysis.HistPath = '/HitAnalysis/Pixel/' +topSequence += SiHitAnalysis('PixelHitAnalysis') +topSequence.PixelHitAnalysis.CollectionName='PixelHits' topSequence += SiHitAnalysis('SCTHitAnalysis') -topSequence.SCTHitAnalysis.CollectionName = 'SCT_Hits' -topSequence.SCTHitAnalysis.HistPath = '/HitAnalysis/SCT/' - +topSequence.SCTHitAnalysis.CollectionName='SCT_Hits' topSequence += SiHitAnalysis('BCMHitAnalysis') -topSequence.BCMHitAnalysis.CollectionName = 'BCMHits' -topSequence.BCMHitAnalysis.HistPath = '/HitAnalysis/BCM/' - +topSequence.BCMHitAnalysis.CollectionName='BCMHits' topSequence += SiHitAnalysis('BLMHitAnalysis') -topSequence.BLMHitAnalysis.CollectionName = 'BLMHits' -topSequence.BLMHitAnalysis.HistPath = '/HitAnalysis/BLM/' - +topSequence.BLMHitAnalysis.CollectionName='BLMHits' topSequence += TRTHitAnalysis('TRTHitAnalysis') -topSequence.TRTHitAnalysis.HistPath = '/HitAnalysis/TRT/' - topSequence += RPCHitAnalysis('RPCHitAnalysis') -topSequence.RPCHitAnalysis.HistPath = '/HitAnalysis/RPC/' - topSequence += MDTHitAnalysis('MDTHitAnalysis') -topSequence.MDTHitAnalysis.HistPath = '/HitAnalysis/MDT/' - topSequence += CSCHitAnalysis('CSCHitAnalysis') -topSequence.CSCHitAnalysis.HistPath = '/HitAnalysis/CSC/' - topSequence += TGCHitAnalysis('TGCHitAnalysis') -topSequence.TGCHitAnalysis.HistPath = '/HitAnalysis/TGC/' - #topSequence += ALFAHitAnalysis('ALFAHitAnalysis') -#topSequence.ALFAHitAnalysis.HistPath = '/HitAnalysis/ALFA/' - #topSequence += LucidHitAnalysis('LucidHitAnalysis') -#topSequence.LucidHitAnalysis.HistPath = '/HitAnalysis/Lucid/' - #topSequence += ZDCHitAnalysis('ZDCHitAnalysis') -#topSequence.ZDCHitAnalysis.HistPath = '/HitAnalysis/ZDC/' - topSequence += TrackRecordAnalysis('TrackRecordAnalysis') -topSequence.TrackRecordAnalysis.HistPath = '/HitAnalysis/Track/' - topSequence += TruthHitAnalysis('TruthHitAnalysis') -topSequence.TruthHitAnalysis.HistPath = '/HitAnalysis/Truth/' - topSequence += CaloHitAnalysis('CaloHitAnalysis') -topSequence.CaloHitAnalysis.HistPath = '/HitAnalysis/Calo' - +topSequence += MMHitAnalysis('MMHitAnalysis') +topSequence += sTGCHitAnalysis('sTGCHitAnalysis') + + +topSequence.PixelHitAnalysis.HistPath='/HitAnalysis/' +topSequence.SCTHitAnalysis.HistPath='/HitAnalysis/' +topSequence.BCMHitAnalysis.HistPath='/HitAnalysis/' +topSequence.BLMHitAnalysis.HistPath='/HitAnalysis/' +topSequence.TRTHitAnalysis.HistPath='/HitAnalysis/' +topSequence.RPCHitAnalysis.HistPath='/HitAnalysis/' +topSequence.MDTHitAnalysis.HistPath='/HitAnalysis/' +topSequence.CSCHitAnalysis.HistPath='/HitAnalysis/' +topSequence.TGCHitAnalysis.HistPath='/HitAnalysis/' +#topSequence.ALFAHitAnalysis.HistPath='/HitAnalysis/' +#topSequence.LucidHitAnalysis.HistPath='/HitAnalysis/' +#topSequence.ZDCHitAnalysis.HistPath='/HitAnalysis/' +topSequence.TrackRecordAnalysis.HistPath='/HitAnalysis/' +topSequence.TruthHitAnalysis.HistPath = '/HitAnalysis/' +topSequence.CaloHitAnalysis.HistPath = '/HitAnalysis/' +topSequence.MMHitAnalysis.HistPath='/HitAnalysis/' +topSequence.sTGCHitAnalysis.HistPath='/HitAnalysis/' #Add some more TH2 histograms @@ -75,7 +65,11 @@ topSequence.SCTHitAnalysis.ExpertMode= "off" topSequence.BCMHitAnalysis.ExpertMode= "off" topSequence.BLMHitAnalysis.ExpertMode= "off" topSequence.CaloHitAnalysis.ExpertMode = "off" -topSequence.CaloHitAnalysis.CalibHits = "off" +topSequence.CaloHitAnalysis.CalibHits = "off" + +#from GaudiSvc.GaudiSvcConf import THistSvc +#ServiceMgr += THistSvc() +#ServiceMgr.THistSvc.Output += ["CaloHitAnalysis DATAFILE='CaloHitAnalysis_v2.root' OPT='RECREATE'" ] ServiceMgr.MessageSvc.OutputLevel = INFO @@ -92,4 +86,4 @@ AthenaPoolCnvSvc.UseDetailChronoStat = TRUE from RecExConfig.AutoConfiguration import * ConfigureFieldAndGeo() # Configure the settings for the geometry include("RecExCond/AllDet_detDescr.py") # Actually load the geometry -#include( "TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work +#include("TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work diff --git a/Simulation/Tools/HitAnalysis/share/LucidHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/LucidHitAnalysis_topOptions.py index 0255deadc37b0653458fecd968f2b08a6be9427c..d9203d2ee4701a2422efdcdef4d046e2b3b11472 100755 --- a/Simulation/Tools/HitAnalysis/share/LucidHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/LucidHitAnalysis_topOptions.py @@ -7,19 +7,23 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import LucidHitAnalysis -topSequence += LucidHitAnalysis() +topSequence += LucidHitAnalysis() LucidHitAnalysis = LucidHitAnalysis() -LucidHitAnalysis.NtupleFileName = '/LucidHitAnalysis/' LucidHitAnalysis.HistPath = '/LucidHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/share/MDTHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/MDTHitAnalysis_topOptions.py index f29cb9b63d5d4867acf9e183c38e3ddcc776e38a..14ded9513575f1dab78096dee7a31b5547947127 100755 --- a/Simulation/Tools/HitAnalysis/share/MDTHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/MDTHitAnalysis_topOptions.py @@ -7,20 +7,24 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import MDTHitAnalysis -topSequence += MDTHitAnalysis() +topSequence += MDTHitAnalysis() MDTHitAnalysis = MDTHitAnalysis() -MDTHitAnalysis.NtupleFileName = '/MDTHitAnalysis/' -MDTHitAnalysis.HistPath = '/MDTHitAnalysis/' +MDTHitAnalysis.NtupleFileName = 'MDTHitAnalysis' from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() diff --git a/Simulation/Tools/HitAnalysis/share/MuonHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/MuonHitAnalysis_topOptions.py index cc465ff0c4626c926e4070f85fb41c067b0b7a56..2bcac8140ca9b420c367f2e516c2b740c41ebea6 100755 --- a/Simulation/Tools/HitAnalysis/share/MuonHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/MuonHitAnalysis_topOptions.py @@ -7,36 +7,32 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() - from HitAnalysis.HitAnalysisConf import RPCHitAnalysis topSequence += RPCHitAnalysis('RPCHitAnalysis') -topSequence.RPCHitAnalysis.NtupleFileName = '/MuonHitAnalysis/RPC/' -topSequence.RPCHitAnalysis.HistPath = '/MuonHitAnalysis/RPC/' - +topSequence.RPCHitAnalysis.HistPath = '/MuonHitAnalysis/' from HitAnalysis.HitAnalysisConf import MDTHitAnalysis topSequence += MDTHitAnalysis('MDTHitAnalysis') -topSequence.MDTHitAnalysis.NtupleFileName = '/MuonHitAnalysis/MDT/' -topSequence.MDTHitAnalysis.HistPath = '/MuonHitAnalysis/MDT/' - +topSequence.MDTHitAnalysis.HistPath = '/MuonHitAnalysis/' from HitAnalysis.HitAnalysisConf import CSCHitAnalysis topSequence += CSCHitAnalysis('CSCHitAnalysis') -topSequence.CSCHitAnalysis.NtupleFileName = '/MuonHitAnalysis/CSC/' -topSequence.CSCHitAnalysis.HistPath = '/MuonHitAnalysis/CSC/' - +topSequence.CSCHitAnalysis.HistPath = '/MuonHitAnalysis/' from HitAnalysis.HitAnalysisConf import TGCHitAnalysis topSequence += TGCHitAnalysis('TGCHitAnalysis') -topSequence.TGCHitAnalysis.NtupleFileName = '/MuonHitAnalysis/TGC/' -topSequence.TGCHitAnalysis.HistPath = '/MuonHitAnalysis/TGC/' - +topSequence.TGCHitAnalysis.HistPath = '/MuonHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() diff --git a/Simulation/Tools/HitAnalysis/share/RPCHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/RPCHitAnalysis_topOptions.py index 3f5d19055403fc052bca9352ac94f1bda6202446..936a30ace4a25ca78a196ac24e4a362bb4732b42 100755 --- a/Simulation/Tools/HitAnalysis/share/RPCHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/RPCHitAnalysis_topOptions.py @@ -7,20 +7,24 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import RPCHitAnalysis -topSequence += RPCHitAnalysis() +topSequence += RPCHitAnalysis() RPCHitAnalysis = RPCHitAnalysis() -RPCHitAnalysis.NtupleFileName = '/RPCHitAnalysis/' -RPCHitAnalysis.HistPath = '/RPCHitAnalysis/' +RPCHitAnalysis.NtupleFileName = 'RPCHitAnalysis' from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() diff --git a/Simulation/Tools/HitAnalysis/share/SiHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/SiHitAnalysis_topOptions.py index 0d71eb7c54700a66f9160c5734f171fb04fe3417..998e5b0274ae8ed73f8e512ff1bd6d9dcc568625 100755 --- a/Simulation/Tools/HitAnalysis/share/SiHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/SiHitAnalysis_topOptions.py @@ -7,36 +7,39 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() - from HitAnalysis.HitAnalysisConf import SiHitAnalysis -topSequence += SiHitAnalysis('PixelHitAnalysis') +topSequence += SiHitAnalysis('PixelHitAnalysis') topSequence.PixelHitAnalysis.CollectionName='PixelHits' -topSequence.PixelHitAnalysis.NtupleFileName='/SiHitAnalysis/' -topSequence.PixelHitAnalysis.HistPath='/SiHitAnalysis/' - topSequence += SiHitAnalysis('SCTHitAnalysis') topSequence.SCTHitAnalysis.CollectionName='SCT_Hits' -topSequence.SCTHitAnalysis.NtupleFileName='/SiHitAnalysis/' -topSequence.SCTHitAnalysis.HistPath='/SiHitAnalysis/' - topSequence += SiHitAnalysis('BCMHitAnalysis') topSequence.BCMHitAnalysis.CollectionName='BCMHits' -topSequence.BCMHitAnalysis.NtupleFileName='/SiHitAnalysis/' -topSequence.BCMHitAnalysis.HistPath='/SiHitAnalysis/' - topSequence += SiHitAnalysis('BLMHitAnalysis') topSequence.BLMHitAnalysis.CollectionName='BLMHits' -topSequence.BLMHitAnalysis.NtupleFileName='/SiHitAnalysis/' -topSequence.BLMHitAnalysis.HistPath='/SiHitAnalysis/' + +topSequence.PixelHitAnalysis.HistPath='/SiHitAnalysis/histos/' +topSequence.SCTHitAnalysis.HistPath='/SiHitAnalysis/histos/' +topSequence.BCMHitAnalysis.HistPath='/SiHitAnalysis/histos/' +topSequence.BLMHitAnalysis.HistPath='/SiHitAnalysis/histos/' + +topSequence.PixelHitAnalysis.NtupleFileName='/SiHitAnalysis/ntuples/' +topSequence.SCTHitAnalysis.NtupleFileName='/SiHitAnalysis/ntuples/' +topSequence.BCMHitAnalysis.NtupleFileName='/SiHitAnalysis/ntuples/' +topSequence.BLMHitAnalysis.NtupleFileName='/SiHitAnalysis/ntuples/' #Add some more TH2 histograms @@ -63,4 +66,4 @@ AthenaPoolCnvSvc.UseDetailChronoStat = TRUE from RecExConfig.AutoConfiguration import * ConfigureFieldAndGeo() # Configure the settings for the geometry include("RecExCond/AllDet_detDescr.py") # Actually load the geometry -#include( "TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work +#include("TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work diff --git a/Simulation/Tools/HitAnalysis/share/TGCHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/TGCHitAnalysis_topOptions.py index d5a7d70e879aa346d5533c752ec482c8bebab97c..a180fc146bd1c5d0c8079455aa615aa4b82c1717 100755 --- a/Simulation/Tools/HitAnalysis/share/TGCHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/TGCHitAnalysis_topOptions.py @@ -7,19 +7,23 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import TGCHitAnalysis -topSequence += TGCHitAnalysis() +topSequence += TGCHitAnalysis() TGCHitAnalysis = TGCHitAnalysis() -TGCHitAnalysis.NtupleFileName = '/TGCHitAnalysis/' TGCHitAnalysis.HistPath = '/TGCHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/share/TRTHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/TRTHitAnalysis_topOptions.py index 157d3fc1c48251276050ed7b39cf256ee1d231f3..333514924f1e8e092b7e3b731fb1565b4389f1c3 100755 --- a/Simulation/Tools/HitAnalysis/share/TRTHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/TRTHitAnalysis_topOptions.py @@ -7,19 +7,23 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import TRTHitAnalysis -topSequence += TRTHitAnalysis() +topSequence += TRTHitAnalysis() TRTHitAnalysis = TRTHitAnalysis() -TRTHitAnalysis.NtupleFileName = '/TRTHitAnalysis/' TRTHitAnalysis.HistPath = '/TRTHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc @@ -40,4 +44,4 @@ AthenaPoolCnvSvc.UseDetailChronoStat = TRUE from RecExConfig.AutoConfiguration import * ConfigureFieldAndGeo() # Configure the settings for the geometry include("RecExCond/AllDet_detDescr.py") # Actually load the geometry -#include( "TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work +#include("TrkDetDescrSvc/AtlasTrackingGeometrySvc.py" ) # Tracking geometry, handy for ID work diff --git a/Simulation/Tools/HitAnalysis/share/TrackRecordAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/TrackRecordAnalysis_topOptions.py index d4deea7d5d31c393b0a9ec7c2f862bb5e0e8115d..10fd75347cc7e7519ef2c0ddc5446567688b3961 100755 --- a/Simulation/Tools/HitAnalysis/share/TrackRecordAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/TrackRecordAnalysis_topOptions.py @@ -7,31 +7,31 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*.root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() - from HitAnalysis.HitAnalysisConf import TrackRecordAnalysis -topSequence += TrackRecordAnalysis('TrackRecordCaloEntry') -topSequence.TrackRecordCaloEntry.CollectionName = 'CaloEntryLayer' -topSequence.TrackRecordCaloEntry.NtupleFileName = '/TrackRecordAnalysis/' -topSequence.TrackRecordCaloEntry.HistPath = '/TrackRecordAnalysis/' - -topSequence += TrackRecordAnalysis('TrackRecordMuonEntry') -topSequence.TrackRecordMuonEntry.CollectionName = 'MuonEntryLayer' -topSequence.TrackRecordMuonEntry.NtupleFileName = '/TrackRecordAnalysis/' -topSequence.TrackRecordMuonEntry.HistPath = '/TrackRecordAnalysis/' - -topSequence += TrackRecordAnalysis('TrackRecordMuonExit') -topSequence.TrackRecordMuonExit.CollectionName = 'MuonExitLayer' -topSequence.TrackRecordMuonExit.NtupleFileName = '/TrackRecordAnalysis/' -topSequence.TrackRecordMuonExit.HistPath = '/TrackRecordAnalysis/' +topSequence += TrackRecordAnalysis('TrackRecordCaloEntry') +topSequence.TrackRecordCaloEntry.CollectionName='CaloEntryLayer' +topSequence.TrackRecordCaloEntry.HistPath='/TrackRecordAnalysis/' +topSequence += TrackRecordAnalysis('TrackRecordMuonEntry') +topSequence.TrackRecordMuonEntry.CollectionName='MuonEntryLayer' +topSequence.TrackRecordMuonEntry.HistPath='/TrackRecordAnalysis/' +topSequence += TrackRecordAnalysis('TrackRecordMuonExit') +topSequence.TrackRecordMuonExit.CollectionName='MuonExitLayer' +topSequence.TrackRecordMuonExit.HistPath='/TrackRecordAnalysis/' + from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/share/TruthHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/TruthHitAnalysis_topOptions.py index 3299fb3dc509a2bea610cb1086efa076bee6205b..2a177cb68f1e35844be4e1c181e762aacac8fac4 100755 --- a/Simulation/Tools/HitAnalysis/share/TruthHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/TruthHitAnalysis_topOptions.py @@ -7,19 +7,23 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" + "HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import TruthHitAnalysis -topSequence += TruthHitAnalysis() +topSequence += TruthHitAnalysis() TruthHitAnalysis = TruthHitAnalysis() -TruthHitAnalysis.NtupleFileName = '/TruthHitAnalysis/' TruthHitAnalysis.HistPath = '/TruthHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/share/ZDCHitAnalysis_topOptions.py b/Simulation/Tools/HitAnalysis/share/ZDCHitAnalysis_topOptions.py index 02da3c262fb44fcfc5f82b657ce623b71bdf074b..a0199baa5874cf83425f95c446dbc9718029946d 100755 --- a/Simulation/Tools/HitAnalysis/share/ZDCHitAnalysis_topOptions.py +++ b/Simulation/Tools/HitAnalysis/share/ZDCHitAnalysis_topOptions.py @@ -7,19 +7,23 @@ from PartPropSvc.PartPropSvcConf import PartPropSvc include("ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") include("EventAthenaPool/EventAthenaPool_joboptions.py" ) +#Use these lines if the NSW is included in the simulation +#from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +#GeoModelSvc = GeoModelSvc() +#GeoModelSvc.MuonVersionOverride="MuonSpectrometer-R.07.00-NSW" + import os from glob import glob from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput = glob( "/tmp/" + os.environ['USER'] + "/" +"HITS*root*" ) +athenaCommonFlags.FilesInput = glob( "/tmp/"+os.environ['USER']+"/"+"HITS*root*" ) ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput() # This is stupid and redundant, but necessary from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() from HitAnalysis.HitAnalysisConf import ZDCHitAnalysis -topSequence += ZDCHitAnalysis() +topSequence += ZDCHitAnalysis() ZDCHitAnalysis = ZDCHitAnalysis() -ZDCHitAnalysis.NtupleFileName = '/ZDCHitAnalysis/' ZDCHitAnalysis.HistPath = '/ZDCHitAnalysis/' from GaudiSvc.GaudiSvcConf import THistSvc diff --git a/Simulation/Tools/HitAnalysis/src/MMHitAnalysis.cxx b/Simulation/Tools/HitAnalysis/src/MMHitAnalysis.cxx new file mode 100755 index 0000000000000000000000000000000000000000..b97939056d5cb18a3faf5ab799141c94408856cb --- /dev/null +++ b/Simulation/Tools/HitAnalysis/src/MMHitAnalysis.cxx @@ -0,0 +1,427 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "MMHitAnalysis.h" + + +/*Includes specific to Micromegas*/ +#include "GeoAdaptors/GeoMuonHits.h" +#include "MuonReadoutGeometry/MuonDetectorManager.h" +#include "MuonReadoutGeometry/MMReadoutElement.h" +#include "MuonIdHelpers/MmIdHelper.h" +#include "MuonSimEvent/MicromegasHitIdHelper.h" +#include "MuonSimEvent/GenericMuonSimHitCollection.h" +#include "MuonSimEvent/GenericMuonSimHit.h" +#include "CLHEP/Vector/LorentzVector.h" + +#include "TH1.h" +#include "TTree.h" +#include "TString.h" + +#include <algorithm> +#include <math.h> +#include <functional> +#include <iostream> +#include <stdio.h> + +using namespace std; + +MMHitAnalysis::MMHitAnalysis(const std::string& name, ISvcLocator* pSvcLocator) + : AthAlgorithm(name, pSvcLocator) + , h_S1_xy_A(0) + , h_S1_rz_A(0) + , h_S1_r_A(0) + , h_S1_xy_C(0) + , h_S1_rz_C(0) + , h_S1_r_C(0) + , h_S2_xy_A(0) + , h_S2_rz_A(0) + , h_S2_r_A(0) + , h_S2_xy_C(0) + , h_S2_rz_C(0) + , h_S2_r_C(0) + , h_S_xy_A(0) + , h_S_xy_C(0) + , h_S_rz_A(0) + , h_S_rz_C(0) + , h_xy_A(0) + , h_xy_C(0) + , h_rz_A(0) + , h_rz_C(0) + , h_L1_xy_A(0) + , h_L1_rz_A(0) + , h_L1_r_A(0) + , h_L1_xy_C(0) + , h_L1_rz_C(0) + , h_L1_r_C(0) + , h_L2_xy_A(0) + , h_L2_rz_A(0) + , h_L2_r_A(0) + , h_L2_xy_C(0) + , h_L2_rz_C(0) + , h_L2_r_C(0) + , h_L_xy_A(0) + , h_L_xy_C(0) + , h_L_rz_A(0) + , h_L_rz_C(0) + , m_hits_x(0) + , m_ntupleFileName("MMHitAnalysis/ntuple/") + , m_path("/MMHitAnalysis/histos/") + , m_thistSvc("THistSvc", name) +{ + declareProperty("NtupleFileName", m_ntupleFileName); + declareProperty("HistPath", m_path); + +} + +StatusCode MMHitAnalysis::initialize() { + ATH_MSG_DEBUG( "Initializing MMHitAnalysis" ); + +// Grab the Ntuple and histogramming service for the tree + CHECK(m_thistSvc.retrieve()); + + +/** Histograms */ + +/*-----------------------------------Small sector Wedge 1 histos begin--------------------------------------*/ + h_S1_xy_A = new TH2D("h_mm_S1_xy_A","S1_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S1_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S1_xy_A->GetName(), h_S1_xy_A)); + + h_S1_rz_A = new TH2D("h_mm_S1_rz_A","S1_rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_S1_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S1_rz_A->GetName(), h_S1_rz_A)); + + h_S1_r_A = new TH1D("h_mm_S1_r_A","S1_r_A", 1000,0., 14000.); + h_S1_r_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S1_r_A->GetName(), h_S1_r_A)); + + h_S1_xy_C = new TH2D("h_mm_S1_xy_C","S1_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S1_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S1_xy_C->GetName(), h_S1_xy_C)); + + h_S1_rz_C = new TH2D("h_mm_S1_rz_C","S1_rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_S1_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S1_rz_C->GetName(), h_S1_rz_C)); + + h_S1_r_C = new TH1D("h_mm_S1_r_C","S1_r_C", 1000,0., 14000.); + h_S1_r_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S1_r_C->GetName(), h_S1_r_C)); + /*-----------------------------------Small sector Wedge 1 histos end--------------------------------------*/ + + /*-----------------------------------Small sector Wedge 2 histos begin--------------------------------------*/ + h_S2_xy_A = new TH2D("h_mm_S2_xy_A","S2_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S2_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S2_xy_A->GetName(), h_S2_xy_A)); + + h_S2_rz_A = new TH2D("h_mm_S2_rz_A","S2_rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_S2_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S2_rz_A->GetName(), h_S2_rz_A)); + + h_S2_r_A = new TH1D("h_mm_S2_r_A","S2_r_A", 1000,0., 14000.); + h_S2_r_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S2_r_A->GetName(), h_S2_r_A)); + + h_S2_xy_C = new TH2D("h_mm_S2_xy_C","S2_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S2_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S2_xy_C->GetName(), h_S2_xy_C)); + + h_S2_rz_C = new TH2D("h_mm_S2_rz_C","S2_rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_S2_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S2_rz_C->GetName(), h_S2_rz_C)); + + h_S2_r_C = new TH1D("h_mm_S2_r_C","S2_r_C", 1000,0., 14000.); + h_S2_r_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S2_r_C->GetName(), h_S2_r_C)); +/*---------------------------------Small sector Wedge 2 histos end--------------------------------------*/ + +/*-----------------------------------Small sector both Wedges histos begin--------------------------------------*/ + h_S_xy_A = new TH2D("h_mm_S_xy_A","S_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_xy_A->GetName(), h_S_xy_A)); + + h_S_xy_C = new TH2D("h_mm_S_xy_C","S_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_xy_C->GetName(), h_S_xy_C)); + + h_S_rz_A = new TH2D("h_mm_S_rz_A","S_rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_S_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_rz_A->GetName(), h_S_rz_A)); + + h_S_rz_C = new TH2D("h_mm_S_rz_C","S_rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_S_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_rz_C->GetName(), h_S_rz_C)); + /*---------------------------------Small sector both Wedges histos end--------------------------------------*/ + + /*-----------------------------------All sector histos begin--------------------------------------*/ + h_xy_A = new TH2D("h_mm_xy_A","xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_xy_A->GetName(), h_xy_A)); + + h_xy_C = new TH2D("h_mm_xy_C","xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_xy_C->GetName(), h_xy_C)); + + h_rz_A = new TH2D("h_mm_rz_A","rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_rz_A->GetName(), h_rz_A)); + + h_rz_C = new TH2D("h_mm_rz_C","rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_rz_C->GetName(), h_rz_C)); + /*---------------------------------All sector histos end-------------------------------------------*/ + + /*-----------------------------------Large sector Wedge 1 histos begin--------------------------------------*/ + h_L1_xy_A = new TH2D("h_mm_L1_xy_A","L1_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L1_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L1_xy_A->GetName(), h_L1_xy_A)); + + h_L1_rz_A = new TH2D("h_mm_L1_rz_A","L1_rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_L1_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L1_rz_A->GetName(), h_L1_rz_A)); + + h_L1_r_A = new TH1D("h_mm_L1_r_A","L1_r_A", 1000,0., 14000.); + h_L1_r_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L1_r_A->GetName(), h_L1_r_A)); + + h_L1_xy_C = new TH2D("h_mm_L1_xy_C","L1_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L1_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L1_xy_C->GetName(), h_L1_xy_C)); + + h_L1_rz_C = new TH2D("h_mm_L1_rz_C","L1_rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_L1_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L1_rz_C->GetName(), h_L1_rz_C)); + + h_L1_r_C = new TH1D("h_mm_L1_r_C","L1_r_C", 1000,0., 14000.); + h_L1_r_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L1_r_C->GetName(), h_L1_r_C)); + /*-----------------------------------Large sector Wedge 1 histos end--------------------------------------*/ + + /*-----------------------------------Large sector Wedge 2 histos begin--------------------------------------*/ + h_L2_xy_A = new TH2D("h_mm_L2_xy_A","L2_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L2_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L2_xy_A->GetName(), h_L2_xy_A)); + + h_L2_rz_A = new TH2D("h_mm_L2_rz_A","L2_rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_L2_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L2_rz_A->GetName(), h_L2_rz_A)); + + h_L2_r_A = new TH1D("h_mm_L2_r_A","L2_r_A", 1000,0., 14000.); + h_L2_r_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L2_r_A->GetName(), h_L2_r_A)); + + h_L2_xy_C = new TH2D("h_mm_L2_xy_C","L2_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L2_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L2_xy_C->GetName(), h_L2_xy_C)); + + h_L2_rz_C = new TH2D("h_mm_L2_rz_C","L2_rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_L2_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L2_rz_C->GetName(), h_L2_rz_C)); + + h_L2_r_C = new TH1D("h_mm_L2_r_C","L2_r_C", 1000,0., 14000.); + h_L2_r_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L2_r_C->GetName(), h_L2_r_C)); + /*-----------------------------------Large sector Wedge 1 histos end--------------------------------------*/ + + /*-----------------------------------Large sector both Wedge histos begin--------------------------------------*/ + h_L_xy_A = new TH2D("h_mm_L_xy_A","L_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_xy_A->GetName(), h_L_xy_A)); + + h_L_rz_A = new TH2D("h_mm_L_rz_A","L_rz_A", 1000,7000., 8000., 5000, 0., 5000.); + h_L_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_rz_A->GetName(), h_L_rz_A)); + + h_L_xy_C = new TH2D("h_mm_L_xy_C","L_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_xy_C->GetName(), h_L_xy_C)); + + h_L_rz_C = new TH2D("h_mm_L_rz_C","L_rz_C", 1000,-8000., -7000., 5000, 0., 5000.); + h_L_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_rz_C->GetName(), h_L_rz_C)); + /*-----------------------------------Large sector both Wedge histos end--------------------------------------*/ + + m_tree= new TTree("NtupleMMHitAnalysis","MMHitAna"); + std::string fullNtupleName = "/"+m_ntupleFileName+"/"; + CHECK(m_thistSvc->regTree(fullNtupleName,m_tree)); + + + /** now add branches and leaves to the tree */ + + if (m_tree){ + m_tree->Branch("x", &m_hits_x); + } + else{ + ATH_MSG_ERROR("No tree found!"); + } + + return StatusCode::SUCCESS; +} + +StatusCode MMHitAnalysis::execute() { + ATH_MSG_DEBUG( "In MMHitAnalysis::execute()" ); + + m_hits_x->clear(); + + const DataHandle<GenericMuonSimHitCollection> p_collection;; + if ((evtStore()->retrieve(p_collection,"MicromegasSensitiveDetector"))==StatusCode::SUCCESS) { + for (GenericMuonSimHitCollection::const_iterator i_hit = p_collection->begin(); i_hit != p_collection->end(); ++i_hit){ + + Amg::Vector3D p = (*i_hit).globalPosition(); + //Get station names and make plots for each sector + MicromegasHitIdHelper* hitHelper = MicromegasHitIdHelper::GetHelper(); + int simId = (*i_hit).GenericId(); + std::string sim_stationName = hitHelper->GetStationName(simId); + int sim_side = hitHelper->GetSide(simId); + //Declare station name strings + static std::string s_m1s1("M1S1"); + static std::string s_m2s1("M2S1"); + static std::string s_m1s2("M1S2"); + static std::string s_m2s2("M2S2"); + static std::string s_m1l1("M1L1"); + static std::string s_m2l1("M2L1"); + static std::string s_m1l2("M1L2"); + static std::string s_m2l2("M2L2"); + + //Small sectors + /*-------------------------Wedge 1 Fill histos begin-------------------------*/ + //M1S1 (Note: M1->Module 1, S1->Small sector wedge 1) + + //Small sectors at +ve Z (A-Side) + if ((sim_stationName==s_m1s1 || sim_stationName==s_m2s1) && sim_side==1){ + double r_S1_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S1_xy_A->Fill(p.x(),p.y()); + h_S1_rz_A->Fill(p.z(), r_S1_A); + h_S1_r_A->Fill(r_S1_A); + } + + //Small sectors at -ve Z (C-Side) + if ((sim_stationName==s_m1s1 || sim_stationName==s_m2s1) && sim_side==-1){ + double r_S1_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S1_xy_C->Fill(p.x(),p.y()); + h_S1_rz_C->Fill(p.z(), r_S1_C); + h_S1_r_C->Fill(r_S1_C); + } + + /*------------------------Wedge 1 Fill histos end---------------------------*/ + + /*------------------------- Wedge 2 Fill histos begin-------------------------*/ + //Small sectors at +ve Z (A-Side) + if ((sim_stationName==s_m1s2 || sim_stationName==s_m2s2) && sim_side==1){ + double r_S2_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S2_xy_A->Fill(p.x(),p.y()); + h_S2_rz_A->Fill(p.z(), r_S2_A); + h_S2_r_A->Fill(r_S2_A); + } + + //Small sectors at -ve Z (C-Side) + if ((sim_stationName==s_m1s2 || sim_stationName==s_m2s2) && sim_side==-1){ + double r_S2_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S2_xy_C->Fill(p.x(),p.y()); + h_S2_rz_C->Fill(p.z(), r_S2_C); + h_S2_r_C->Fill(r_S2_C); + } + + /*------------------------Wedge 2 Fill histos end---------------------------*/ + + /*------------------------- Small sectors both wedges Fill histos begin-------------------------*/ + //Small sectors at +ve Z (A-Side) + if ((sim_stationName==s_m1s2 || sim_stationName==s_m2s2 || sim_stationName==s_m1s1 || sim_stationName==s_m2s1) && sim_side==1){ + double r_S_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S_xy_A->Fill(p.x(),p.y()); + h_S_rz_A->Fill(p.z(), r_S_A); + } + + //Small sectors at -ve Z (C-Side) + if ((sim_stationName==s_m1s2 || sim_stationName==s_m2s2 || sim_stationName==s_m1s1 || sim_stationName==s_m2s1) && sim_side==-1){ + double r_S_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S_xy_C->Fill(p.x(),p.y()); + h_S_rz_C->Fill(p.z(), r_S_C); + } + /*------------------------Small sectors both wedges Fill histos end---------------------------*/ + + //All sectors + /*-------------------------All sectors Fill histos begin-------------------------*/ + //Sectors at +ve Z (A-Side) + if (sim_side==1){ + double r_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_xy_A->Fill(p.x(),p.y()); + h_rz_A->Fill(p.z(), r_A); + } + + //Sectors at -ve Z (C-Side) + if (sim_side==-1){ + double r_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_xy_C->Fill(p.x(),p.y()); + h_rz_C->Fill(p.z(), r_C); + } + /*------------------------All sectors Fill histos end---------------------------*/ + + //Large sectors + /*-------------------------Wedge 1 Fill histos begin-------------------------*/ + //M1L1 (Note: M1->Module 1, L1->Large sector wedge 1) + + //Large sectors at +ve Z (A-Side) + if ((sim_stationName==s_m1l1 || sim_stationName==s_m2l1) && sim_side==1){ + double r_L1_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L1_xy_A->Fill(p.x(),p.y()); + h_L1_rz_A->Fill(p.z(), r_L1_A); + h_L1_r_A->Fill(r_L1_A); + } + + //Large sectors at -ve Z (C-Side) + if ((sim_stationName==s_m1l1 || sim_stationName==s_m2l1) && sim_side==-1){ + double r_L1_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L1_xy_C->Fill(p.x(),p.y()); + h_L1_rz_C->Fill(p.z(), r_L1_C); + h_L1_r_C->Fill(r_L1_C); + } + + /*------------------------Wedge 1 Fill histos end---------------------------*/ + + /*-------------------------Wedge 2 Fill histos begin-------------------------*/ + //M1L1 (Note: M1->Module 1, L1->Large sector wedge 1) + + //Large sectors at +ve Z (A-Side) + if ((sim_stationName==s_m1l2 || sim_stationName==s_m2l2) && sim_side==1){ + double r_L2_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L2_xy_A->Fill(p.x(),p.y()); + h_L2_rz_A->Fill(p.z(), r_L2_A); + h_L2_r_A->Fill(r_L2_A); + } + + //Large sectors at -ve Z (C-Side) + if ((sim_stationName==s_m1l2 || sim_stationName==s_m2l2) && sim_side==-1){ + double r_L2_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L2_xy_C->Fill(p.x(),p.y()); + h_L2_rz_C->Fill(p.z(), r_L2_C); + h_L2_r_C->Fill(r_L2_C); + } + + /*------------------------Wedge 2 Fill histos end---------------------------*/ + + /*------------------------- Large sectors both wedges Fill histos begin-------------------------*/ + //Large sectors at +ve Z (A-Side) + if ((sim_stationName==s_m1l2 || sim_stationName==s_m2l2 || sim_stationName==s_m1l1 || sim_stationName==s_m2l1) && sim_side==1){ + double r_L_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L_xy_A->Fill(p.x(),p.y()); + h_L_rz_A->Fill(p.z(), r_L_A); + } + + //Large sectors at -ve Z (C-Side) + if ((sim_stationName==s_m1l2 || sim_stationName==s_m2l2 || sim_stationName==s_m1l1 || sim_stationName==s_m2l1) && sim_side==-1){ + double r_L_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L_xy_C->Fill(p.x(),p.y()); + h_L_rz_C->Fill(p.z(), r_L_C); + } + /*------------------------Large sectors both wedges Fill histos end---------------------------*/ + + m_hits_x->push_back(p.x()); + } + } // End while hits + + if (m_tree) m_tree->Fill(); + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/HitAnalysis/src/MMHitAnalysis.h b/Simulation/Tools/HitAnalysis/src/MMHitAnalysis.h new file mode 100755 index 0000000000000000000000000000000000000000..fddbb787bd6201e24c1db40ea7c3d332b1576b12 --- /dev/null +++ b/Simulation/Tools/HitAnalysis/src/MMHitAnalysis.h @@ -0,0 +1,88 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef MM_HIT_ANALYSIS_H +#define MM_HIT_ANALYSIS_H + +#include "AthenaBaseComps/AthAlgorithm.h" + +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ITHistSvc.h" + +#include <string> +#include <vector> +#include "TH1.h" +#include "TH2.h" +#include "TTree.h" + + + +class TH1; +class TH2; +class TTree; + +class MMHitAnalysis : public AthAlgorithm { + + public: + + MMHitAnalysis(const std::string& name, ISvcLocator* pSvcLocator); + ~MMHitAnalysis(){} + + virtual StatusCode initialize(); + virtual StatusCode execute(); + + private: + + /** Some variables**/ + TH2 *h_S1_xy_A; + TH2 *h_S1_rz_A; + TH1 *h_S1_r_A; + TH2 *h_S1_xy_C; + TH2 *h_S1_rz_C; + TH1 *h_S1_r_C; + TH2 *h_S2_xy_A; + TH2 *h_S2_rz_A; + TH1 *h_S2_r_A; + TH2 *h_S2_xy_C; + TH2 *h_S2_rz_C; + TH1 *h_S2_r_C; + TH2 *h_S_xy_A; + TH2 *h_S_xy_C; + TH2 *h_S_rz_A; + TH2 *h_S_rz_C; + + TH2 *h_xy_A; + TH2 *h_xy_C; + TH2 *h_rz_A; + TH2 *h_rz_C; + + TH2 *h_L1_xy_A; + TH2 *h_L1_rz_A; + TH1 *h_L1_r_A; + TH2 *h_L1_xy_C; + TH2 *h_L1_rz_C; + TH1 *h_L1_r_C; + TH2 *h_L2_xy_A; + TH2 *h_L2_rz_A; + TH1 *h_L2_r_A; + TH2 *h_L2_xy_C; + TH2 *h_L2_rz_C; + TH1 *h_L2_r_C; + + TH2 *h_L_xy_A; + TH2 *h_L_xy_C; + TH2 *h_L_rz_A; + TH2 *h_L_rz_C; + + std::vector<float>* m_hits_x; + + TTree * m_tree; + std::string m_ntupleFileName; + + std::string m_path; + ServiceHandle<ITHistSvc> m_thistSvc; + +}; + +#endif // MM_HIT_ANALYSIS_H diff --git a/Simulation/Tools/HitAnalysis/src/components/HitAnalysis_entries.cxx b/Simulation/Tools/HitAnalysis/src/components/HitAnalysis_entries.cxx index ee89af53ce7dcd141d5329f44748de814851eefc..de29e151b3f5b7cfefacfb69d08255293ad7cd9c 100755 --- a/Simulation/Tools/HitAnalysis/src/components/HitAnalysis_entries.cxx +++ b/Simulation/Tools/HitAnalysis/src/components/HitAnalysis_entries.cxx @@ -13,6 +13,8 @@ #include "../LucidHitAnalysis.h" #include "../ZDCHitAnalysis.h" #include "../AFPHitAnalysis.h" +#include "../MMHitAnalysis.h" +#include "../sTGCHitAnalysis.h" DECLARE_ALGORITHM_FACTORY( CaloHitAnalysis ) DECLARE_ALGORITHM_FACTORY( SiHitAnalysis ) @@ -27,6 +29,8 @@ DECLARE_ALGORITHM_FACTORY( ALFAHitAnalysis ) DECLARE_ALGORITHM_FACTORY( LucidHitAnalysis ) DECLARE_ALGORITHM_FACTORY( ZDCHitAnalysis ) DECLARE_ALGORITHM_FACTORY( AFPHitAnalysis ) +DECLARE_ALGORITHM_FACTORY( MMHitAnalysis ) +DECLARE_ALGORITHM_FACTORY( sTGCHitAnalysis ) DECLARE_FACTORY_ENTRIES( HitAnalysis ) { DECLARE_ALGORITHM( CaloHitAnalysis ) @@ -42,6 +46,8 @@ DECLARE_FACTORY_ENTRIES( HitAnalysis ) { DECLARE_ALGORITHM( LucidHitAnalysis ) DECLARE_ALGORITHM( ZDCHitAnalysis ) DECLARE_ALGORITHM( AFPHitAnalysis ) + DECLARE_ALGORITHM( MMHitAnalysis ) + DECLARE_ALGORITHM( sTGCHitAnalysis ) } diff --git a/Simulation/Tools/HitAnalysis/src/sTGCHitAnalysis.cxx b/Simulation/Tools/HitAnalysis/src/sTGCHitAnalysis.cxx new file mode 100755 index 0000000000000000000000000000000000000000..a854a52dd04cbb0fc24993d46056ea05dbb90ac9 --- /dev/null +++ b/Simulation/Tools/HitAnalysis/src/sTGCHitAnalysis.cxx @@ -0,0 +1,188 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "sTGCHitAnalysis.h" + + +/*Includes specific to sTGCs*/ +#include "GeoAdaptors/GeoMuonHits.h" +#include "MuonReadoutGeometry/MuonDetectorManager.h" +#include "MuonReadoutGeometry/sTgcReadoutElement.h" +#include "MuonIdHelpers/sTgcIdHelper.h" +#include "MuonSimEvent/sTgcHitIdHelper.h" +#include "MuonSimEvent/GenericMuonSimHitCollection.h" +#include "MuonSimEvent/GenericMuonSimHit.h" +#include "CLHEP/Vector/LorentzVector.h" + +#include "TH1.h" +#include "TTree.h" +#include "TString.h" + +#include <algorithm> +#include <math.h> +#include <functional> +#include <iostream> +#include <stdio.h> + +using namespace std; + +sTGCHitAnalysis::sTGCHitAnalysis(const std::string& name, ISvcLocator* pSvcLocator) + : AthAlgorithm(name, pSvcLocator) + , h_S_rz_A(0) + , h_S_rz_C(0) + , h_S_xy_A(0) + , h_S_xy_C(0) + , h_L_rz_A(0) + , h_L_rz_C(0) + , h_L_xy_A(0) + , h_L_xy_C(0) + , h_rz_A(0) + , h_rz_C(0) + , h_xy_A(0) + , h_xy_C(0) + , h_r_A(0) + , h_r_C(0) + , m_ntupleFileName("sTGCHitAnalysis/ntuple/") + , m_path("/sTGCHitAnalysis/histos/") + , m_thistSvc("THistSvc", name) +{ + declareProperty("NtupleFileName", m_ntupleFileName); + declareProperty("HistPath", m_path); + +} + +StatusCode sTGCHitAnalysis::initialize() { + ATH_MSG_DEBUG( "Initializing sTGCHitAnalysis" ); + + // Grab the Ntuple and histogramming service for the tree + CHECK(m_thistSvc.retrieve()); + + + /** Histograms */ + + h_rz_A = new TH2D("h_stgc_rz_A","rz_A", 2000,6500., 8500., 1000, -5000., 5000.); + h_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_rz_A->GetName(), h_rz_A)); + + h_rz_C = new TH2D("h_stgc_rz_C","rz_C", 2000,-8500., -6500., 5000, 0., 5000.); + h_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_rz_C->GetName(), h_rz_C)); + + h_L_rz_A = new TH2D("h_stgc_L_rz_A","L_rz_A", 2000, 6500., 8500., 5000, 0., 5000.); + h_L_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_rz_A->GetName(), h_L_rz_A)); + + h_L_rz_C = new TH2D("h_stgc_L_rz_C","L_rz_C", 2000,-8500., -6500., 5000, 0., 5000.); + h_L_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_rz_C->GetName(), h_L_rz_C)); + + h_S_rz_A = new TH2D("h_stgc_S_rz_A","S_rz_A", 2000,6500., 8500., 5000, 0., 5000.); + h_S_rz_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_rz_A->GetName(), h_S_rz_A)); + + h_S_rz_C = new TH2D("h_stgc_S_rz_C","S_rz_C", 2000, -8500., -6500., 5000, 0., 5000.); + h_S_rz_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_rz_C->GetName(), h_S_rz_C)); + + + h_xy_A = new TH2D("h_stgc_xy_A","xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_xy_A->GetName(), h_xy_A)); + + h_xy_C = new TH2D("h_stgc_xy_C","xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_xy_C->GetName(), h_xy_C)); + + h_L_xy_A = new TH2D("h_stgc_L_xy_A","L_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_xy_A->GetName(), h_L_xy_A)); + + h_L_xy_C = new TH2D("h_stgc_L_xy_C","L_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_L_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_L_xy_C->GetName(), h_L_xy_C)); + + h_S_xy_A = new TH2D("h_stgc_S_xy_A","S_xy_A", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S_xy_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_xy_A->GetName(), h_S_xy_A)); + + h_S_xy_C = new TH2D("h_stgc_S_xy_C","S_xy_C", 1200,-6000., 6000., 1200, -6000., 6000.); + h_S_xy_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_S_xy_C->GetName(), h_S_xy_C)); + + h_r_A = new TH1D("h_stgc_r_A","r_A", 1000,0., 14000.); + h_r_A->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_r_A->GetName(), h_r_A)); + + h_r_C = new TH1D("h_stgc_r_C","r_C", 1000,0., 14000.); + h_r_C->StatOverflows(); + CHECK(m_thistSvc->regHist(m_path + h_r_C->GetName(), h_r_C)); + + + return StatusCode::SUCCESS; +} + +StatusCode sTGCHitAnalysis::execute() { + ATH_MSG_DEBUG( "In sTGCHitAnalysis::execute()" ); + + const DataHandle<GenericMuonSimHitCollection> p_collection;; + if ((evtStore()->retrieve(p_collection,"sTGCSensitiveDetector"))==StatusCode::SUCCESS) { + for (GenericMuonSimHitCollection::const_iterator i_hit = p_collection->begin(); i_hit != p_collection->end(); ++i_hit){ + + Amg::Vector3D p = (*i_hit).globalPosition(); + //Get station names and make plots for each wedge + sTgcHitIdHelper* hitHelper = sTgcHitIdHelper::GetHelper(); + int simId = (*i_hit).GenericId(); + std::string sim_stationName = hitHelper->GetStationName(simId); + + static std::string TS11("TS11"); + static std::string TS21("TS21"); + static std::string TS31("TS31"); + static std::string TL11("TL11"); + static std::string TL21("TL21"); + static std::string TL31("TL31"); + + int sim_side = hitHelper->GetSide(simId); + + if ( sim_side==1){ //Both sectors A side + double r_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_rz_A->Fill(p.z(), r_A); + h_xy_A->Fill(p.x(), p.y()); + h_r_A->Fill(r_A); + } + + if ( sim_side==-1){ //Both sectors C side + double r_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_rz_C->Fill(p.z(), r_C); + h_xy_C->Fill(p.x(), p.y()); + h_r_C->Fill(r_C); + } + + if ((sim_stationName==TS11 || sim_stationName==TS21 || sim_stationName==TS31) && sim_side==1){ //Small sectors A side + double r_S_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S_rz_A->Fill(p.z(), r_S_A); + h_S_xy_A->Fill(p.x(), p.y()); + } + + if ((sim_stationName==TS11 || sim_stationName==TS21 || sim_stationName==TS31) && sim_side==-1){ //Small sectors C side + double r_S_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_S_rz_C->Fill(p.z(), r_S_C); + h_S_xy_C->Fill(p.x(), p.y()); + } + + if ((sim_stationName==TL11 || sim_stationName==TL21 || sim_stationName==TL31) && sim_side==1){ //Large sectors A side + double r_L_A = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L_rz_A->Fill(p.z(), r_L_A); + h_L_xy_A->Fill(p.x(), p.y()); + } + + if ((sim_stationName==TL11 || sim_stationName==TL21 || sim_stationName==TL31) && sim_side==-1){ //Large sectors C side + double r_L_C = sqrt(p.x()*p.x()+p.y()*p.y()); //Evaluate r + h_L_rz_C->Fill(p.z(), r_L_C); + h_L_xy_C->Fill(p.x(), p.y()); + } + + } + } + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/HitAnalysis/src/sTGCHitAnalysis.h b/Simulation/Tools/HitAnalysis/src/sTGCHitAnalysis.h new file mode 100755 index 0000000000000000000000000000000000000000..9c3cf94c39e3fe2fb3f12885a79d6c7cd9b37f05 --- /dev/null +++ b/Simulation/Tools/HitAnalysis/src/sTGCHitAnalysis.h @@ -0,0 +1,64 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef sTGC_HIT_ANALYSIS_H +#define sTGC_HIT_ANALYSIS_H + +#include "AthenaBaseComps/AthAlgorithm.h" + +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ITHistSvc.h" + +#include <string> +#include <vector> +#include "TH1.h" +#include "TH2.h" +#include "TTree.h" + + + +class TH1; +class TH2; +class TTree; + +class sTGCHitAnalysis : public AthAlgorithm { + + public: + + sTGCHitAnalysis(const std::string& name, ISvcLocator* pSvcLocator); + ~sTGCHitAnalysis(){} + + virtual StatusCode initialize(); + virtual StatusCode execute(); + + private: + + /** Some variables**/ + + TH2 *h_S_rz_A; + TH2 *h_S_rz_C; + TH2 *h_S_xy_A; + TH2 *h_S_xy_C; + TH2 *h_L_rz_A; + TH2 *h_L_rz_C; + TH2 *h_L_xy_A; + TH2 *h_L_xy_C; + TH2 *h_rz_A; + TH2 *h_rz_C; + TH2 *h_xy_A; + TH2 *h_xy_C; + TH1 *h_r_A; + TH1 *h_r_C; + + std::vector<float>* m_hits_x; + + TTree * m_tree; + std::string m_ntupleFileName; + + std::string m_path; + ServiceHandle<ITHistSvc> m_thistSvc; + +}; + +#endif // sTGC_HIT_ANALYSIS_H