From 8f3ce0261aaea84d657aef0866c2bb94d32dcfeb Mon Sep 17 00:00:00 2001 From: Nikita Belyaev <nikita.belyaev@cern.ch> Date: Mon, 9 Aug 2021 18:30:34 +0000 Subject: [PATCH] TRTMonitoringRun3 release for the M9 --- .../data/postprocessing/TRTmon.yaml | 43 +- .../TRTMonitoringRun3ESD_Alg.h | 8 +- .../TRTMonitoringRun3RAW_Alg.h | 5 + .../python/TRTMonitoringRun3ESD_Alg.py | 36 +- .../python/TRTMonitoringRun3RAW_Alg.py | 124 +- .../python/TRTPostProcessing.py | 79 +- .../TRTMonitoringRun3RAW_Alg_jobOptions.py | 133 +- .../src/TRTMonitoringRun3ESD_Alg.cxx | 140 +- .../src/TRTMonitoringRun3RAW_Alg.cxx | 1738 ++++++++++------- 9 files changed, 1444 insertions(+), 862 deletions(-) diff --git a/DataQuality/DataQualityUtils/data/postprocessing/TRTmon.yaml b/DataQuality/DataQualityUtils/data/postprocessing/TRTmon.yaml index 16f185e825e..aa5eba91145 100644 --- a/DataQuality/DataQualityUtils/data/postprocessing/TRTmon.yaml +++ b/DataQuality/DataQualityUtils/data/postprocessing/TRTmon.yaml @@ -3,12 +3,37 @@ # Separate blocks with --- # --- -Input: [ 'run_(?P<n>\d.....)/TRT/Barrel/Stack(?P<stack>\d.)(?P<side>[A,C]*)/hHitAMapS' ] -Output: [ 'run_{n}/TRT/Barrel/Stack{stack}{side}/hOccupancyS' ] -Function: TRTMonitoringRun3.TRTPostProcessing.occupancyS -Description: TRTOCCS ---- -Input: [ 'run_(?P<n>\d.....)/TRT/Barrel/Stack(?P<stack>\d.)(?P<side>[A,C]*)/hHitAMapC' ] -Output: [ 'run_{n}/TRT/Barrel/Stack{stack}{side}/hOccupancyC' ] -Function: TRTMonitoringRun3.TRTPostProcessing.occupancyC -Description: TRTOCCC \ No newline at end of file +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/hHitAMap(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hOccupancy{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hOccupancy +Description: TRTOCCUPANCY +--- +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/(?P<histogram>unscaled_hHitHWonTMap|hEfficiency)(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hHitHWonTMap{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hHitXonTMap +Description: TRTHITHWONTMAP +--- +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/(?P<histogram>unscaled_hHitWonTMap|hEfficiency)(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hHitWonTMap{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hHitXonTMap +Description: TRTHITWONTMAP +--- +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/(?P<histogram>unscaled_hHitAonTMap|hEfficiency)(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hHitAonTMap{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hHitXonTMap +Description: TRTHITAONTMAP +--- +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/(?P<histogram>unscaled_hHitAWonTMap|hEfficiency)(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hHitAWonTMap{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hHitXonTMap +Description: TRTHITAWONTMAP +--- +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/(?P<histogram>unscaled_hHitHonTMap|hEfficiency)(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hHitHonTMap{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hHitXonTMap +Description: TRTHITHONTMAP +--- +Input: [ 'run_(?P<n>\d.....)/TRT/(?P<region>Barrel/Stack\d.[A,C]*|[EndcapA|EndcapC]*/Sector\d.)/(?P<histogram>unscaled_hHitAonTMap|hHitAMap|unscaled_hHitAMap)(?P<element>S|C)' ] +Output: [ 'run_{n}/TRT/{region}/hHitOnTrackVsAll{element}' ] +Function: TRTMonitoringRun3.TRTPostProcessing.hHitOnTrackVsAll +Description: TRTHITONTRACKVSALL diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3ESD_Alg.h b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3ESD_Alg.h index e447bf5f7d5..cfda0e201ac 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3ESD_Alg.h +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3ESD_Alg.h @@ -45,7 +45,7 @@ namespace Trk { namespace InDetDD { class TRT_DetectorManager; } - + class AtlasDetectorID; class TRT_ID; class Identifier; @@ -72,9 +72,9 @@ private: StatusCode fillTRTTracks(const xAOD::TrackParticleContainer& trackCollection, const xAOD::TrigDecision* trigDecision, const ComTime* comTimeObject, - const xAOD::EventInfo& eventInfo) const; + const xAOD::EventInfo& eventInfo) const; StatusCode fillTRTHighThreshold(const xAOD::TrackParticleContainer& trackCollection, - const xAOD::EventInfo& eventInfo) const; + const xAOD::EventInfo& eventInfo, const EventContext& ctx) const; int strawLayerNumber(int strawLayerNumber, int LayerNumber) const; @@ -159,7 +159,7 @@ private: } return Gas; } - + int m_EventBurstCut; }; #endif diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3RAW_Alg.h b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3RAW_Alg.h index 22b858b6bdd..c8439de79d0 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3RAW_Alg.h +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3RAW_Alg.h @@ -67,6 +67,7 @@ private: enum GasType{ Xe = 0, Ar = 1, Kr = 2 }; static const int s_Straw_max[2]; + static const int s_iChip_max[2]; static const int s_numberOfBarrelStacks; static const int s_numberOfEndCapStacks; @@ -82,6 +83,7 @@ private: bool m_useHoleFinder; bool m_doHitsMon; float m_DistToStraw; + float m_usedEvents; BooleanProperty m_ArgonXenonSplitter{this, "doArgonXenonSeparation", true}; @@ -111,11 +113,14 @@ private: int chipToBoard(int chip) const; int chipToBoard_EndCap(int chip) const; StatusCode checkTRTReadoutIntegrity(const xAOD::EventInfo& eventInfo) const; + std::vector<std::vector<std::vector<int>>> initScaleVectors() const; bool checkEventBurst(const TRT_RDO_Container& rdoContainer) const; int strawNumberEndCap(int strawNumber, int strawLayerNumber, int LayerNumber, int phi_stack, int side) const; int strawNumber(int strawNumber, int strawlayerNumber, int LayerNumber) const; int strawLayerNumber(int strawLayerNumber, int LayerNumber) const; float radToDegrees(float radValue) const; + int strawNumber_reverse(int inp_strawnumber, int* strawNumber, int* strawlayerNumber, int* LayerNumber) const; + int strawLayerNumber_reverse(int strawLayerNumInp,int* strawLayerNumber, int* LayerNumber) const; // Services ToolHandle<ITRT_StrawStatusSummaryTool> m_sumTool; diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py index b2660039ee6..4835963b407 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py @@ -39,7 +39,7 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): from SCT_Monitoring.TrackSummaryToolWorkaround import TrackSummaryToolWorkaround algTRTMonitoringRun3ESD.TrackSummaryTool = result.popToolsAndMerge(TrackSummaryToolWorkaround(inputFlags)) ############################## WORKAROUND (END) ############################ - + # # To run job only with ID # if hasattr(inputFlags, "Detector") and hasattr(inputFlags.Detector, "GeometryMuon") and hasattr(inputFlags.Detector, "GeometryID"): # TrkEventCnvSuperTool = CompFactory.Trk.EventCnvSuperTool(name = "EventCnvSuperTool", @@ -81,7 +81,7 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): oss = 'TRT/EndcapA/Sector{0}'.format(nBarrelModules) elif i >= numberOfStacks[ibe]: nBarrelModules = i + 1 - 32 - oss = 'TRT/EndcapC/Sector{0}'.format(nBarrelModules) + oss = 'TRT/EndcapC/Sector{0}'.format(nBarrelModules) trackGroup.defineHistogram('HitTronTMapS_x,HitTronTMapS_y;hHitTronTMapS',type='TProfile',title='Mean Trailing Edge on Track: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe],duration='run') trackGroup.defineHistogram('HitToTonTMapS_x,HitToTonTMapS_y;hHitToTonTMapS',type='TProfile',title='Mean ToT on Track: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe],duration='run') @@ -117,15 +117,21 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): shiftTrackGroup.defineHistogram('Pull_Biased_Barrel;hPull_Biased_Barrel',type='TH1F',title='Biased Track Pulls for Barrel Hits;Pulls;Entries',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackGroup.defineHistogram('Residual_B_Ar;hResidual_Ar',type='TH1F',title='Residuals for Argon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') shiftTrackGroup.defineHistogram('Residual_B_Ar;hResidual_Ar',type='TH1F',title='Residuals for Argon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackGroup.defineHistogram('Residual_noTubeHits_B_Ar;hResidual_noTubeHits_Ar',type='TH1F',title='Residuals for Argon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') + shiftTrackGroup.defineHistogram('Residual_noTubeHits_B_Ar;hResidual_noTubeHits_Ar',type='TH1F',title='Residuals for Argon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackGroup.defineHistogram('Residual_B_Ar_20GeV;hResidual_Ar_20GeV',type='TH1F',title='Residuals for Argon Straws{0} (After 20GeV pT cut);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackGroup.defineHistogram('Residual_noTubeHits_B_Ar_20GeV;hResidual_noTubeHits_Ar_20GeV',type='TH1F',title='Residuals for Argon Straws{0} (After 20GeV pT cut, no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackGroup.defineHistogram('AvgTroTDetPhi_B_Ar_x,AvgTroTDetPhi_B_Ar_y;hAvgTroTDetPhi_Ar',type='TProfile',title='Avg. Trailing Edge on Track vs #phi (2D) for Argon{0};#phi (deg);Trailing Edge (ns)'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=nPhiBins,xmin=0,xmax=360,duration='run') shiftTrackGroup.defineHistogram('TimeResidual_B_Ar;hTimeResidual_Ar',type='TH1F',title='Time Residuals for Argon Straws{0};Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackGroup.defineHistogram('TimeResidual_noTubeHits_B_Ar;hTimeResidual_noTubeHits_Ar',type='TH1F',title='Time Residuals for Argon Straws{0} (no tube hits);Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackGroup.defineHistogram('WireToTrkPosition_B_Ar;hWireToTrkPosition_Ar',type='TH1F',title='Track-to-Wire Distance for Argon{0};Track-to-Wire Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=100,xmin=-5,xmax=5,duration='run') - + shiftTrackGroup.defineHistogram('Residual_B;hResidual_Xe',type='TH1F',title='Residuals for Xenon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') shiftTrackGroup.defineHistogram('Residual_B;hResidual_Xe',type='TH1F',title='Residuals for Xenon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackGroup.defineHistogram('Residual_noTubeHits_B;hResidual_noTubeHits_Xe',type='TH1F',title='Residuals for Xenon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') + shiftTrackGroup.defineHistogram('Residual_noTubeHits_B;hResidual_noTubeHits_Xe',type='TH1F',title='Residuals for Xenon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackGroup.defineHistogram('Residual_B_20GeV;hResidual_Xe_20GeV',type='TH1F',title='Residuals for Xenon Straws{0} (After 20GeV pT cut);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackGroup.defineHistogram('Residual_noTubeHits_B_20GeV;hResidual_noTubeHits_Xe_20GeV',type='TH1F',title='Residuals for Xenon Straws{0} (After 20GeV pT cut, no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackGroup.defineHistogram('TimeResidual_B;hTimeResidual',type='TH1F',title='Time Residuals for Xenon Straws{0};Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackGroup.defineHistogram('TimeResidual_noTubeHits_B;hTimeResidual_noTubeHits',type='TH1F',title='Time Residuals for Xenon Straws{0} (no tube hits);Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackGroup.defineHistogram('WireToTrkPosition_B;hWireToTrkPosition',type='TH1F',title='Track-to-Wire Distance for Xenon{0};Track-to-Wire Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=100,xmin=-5,xmax=5,duration='run') @@ -146,7 +152,10 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): shiftTrackEndcapGroup.defineHistogram('NumTrksDetPhi_E;hNumTrksDetPhi_{0}'.format(sideId[iside]),type='TH1F',title='Number of Reconstructed Tracks vs #phi (2D){0};#phi (deg);Number of Tracks'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=60,xmin=0,xmax=360,duration='run') shiftTrackEndcapGroup.defineHistogram('Residual_E;hResidual_Xe_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Xenon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') shiftTrackEndcapGroup.defineHistogram('Residual_E;hResidual_Xe_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Xenon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackEndcapGroup.defineHistogram('Residual_noTubeHits_E;hResidual_noTubeHits_Xe_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Xenon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') + shiftTrackEndcapGroup.defineHistogram('Residual_noTubeHits_E;hResidual_noTubeHits_Xe_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Xenon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackEndcapGroup.defineHistogram('Residual_E_20GeV;hResidual_Xe_{0}_20GeV'.format(sideId[iside]),type='TH1F',title='Residuals for Xenon Straws{0} (After 20GeV pT cut);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackEndcapGroup.defineHistogram('Residual_noTubeHits_E_20GeV;hResidual_noTubeHits_Xe_{0}_20GeV'.format(sideId[iside]),type='TH1F',title='Residuals for Xenon Straws{0} (After 20GeV pT cut, no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackEndcapGroup.defineHistogram('TimeResidual_E;hTimeResidual_{0}'.format(sideId[iside]),type='TH1F',title='Time Residuals for Xenon Straws{0};Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackEndcapGroup.defineHistogram('TimeResidual_noTubeHits_E;hTimeResidual_noTubeHits_{0}'.format(sideId[iside]),type='TH1F',title='Time Residuals for Xenon Straws{0} (no tube hits);Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') @@ -156,20 +165,23 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): shiftTrackEndcapGroup.defineHistogram('DriftTimeonTrkDist_E_Ar;hDriftTimeonTrkDist_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Drift Time Distribution on Track for Argon Straws{0};Drift Time (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=100,duration='run') shiftTrackEndcapGroup.defineHistogram('Residual_E_Ar;hResidual_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Argon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') shiftTrackEndcapGroup.defineHistogram('Residual_E_Ar;hResidual_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Argon Straws{0};Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackEndcapGroup.defineHistogram('Residual_noTubeHits_E_Ar;hResidual_noTubeHits_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Argon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='lowStat') + shiftTrackEndcapGroup.defineHistogram('Residual_noTubeHits_E_Ar;hResidual_noTubeHits_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Residuals for Argon Straws{0} (no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackEndcapGroup.defineHistogram('Residual_E_Ar_20GeV;hResidual_Ar_{0}_20GeV'.format(sideId[iside]),type='TH1F',title='Residuals for Argon Straws{0} (After 20GeV pT cut);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') + shiftTrackEndcapGroup.defineHistogram('Residual_noTubeHits_E_Ar_20GeV;hResidual_noTubeHits_Ar_{0}_20GeV'.format(sideId[iside]),type='TH1F',title='Residuals for Argon Straws{0} (After 20GeV pT cut, no tube hits);Hit-to-Track Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-2.5,xmax=2.5,duration='run') shiftTrackEndcapGroup.defineHistogram('TimeResidual_E_Ar;hTimeResidual_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Time Residuals for Argon Straws{0};Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackEndcapGroup.defineHistogram('TimeResidual_noTubeHits_E_Ar;hTimeResidual_noTubeHits_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Time Residuals for Argon Straws{0} (no tube hits);Time Residual (ns);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=200,xmin=-20,xmax=20,duration='run') shiftTrackEndcapGroup.defineHistogram('WireToTrkPosition_E_Ar;hWireToTrkPosition_Ar_{0}'.format(sideId[iside]),type='TH1F',title='Track-to-Wire Distance for Argon{0};Track-to-Wire Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=100,xmin=-5,xmax=5,duration='run') - + shiftTrackEndcapGroup.defineHistogram('WireToTrkPosition_E;hWireToTrkPosition_{0}'.format(sideId[iside]),type='TH1F',title='Track-to-Wire Distance for Xenon{0};Track-to-Wire Distance (mm);Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=100,xmin=-5,xmax=5,duration='run') shiftTrackEndcapGroup.defineHistogram('AvgTroTDetPhi_E_x,AvgTroTDetPhi_E_y;hAvgTroTDetPhi_{0}'.format(sideId[iside]),type='TProfile',title='Avg. Trailing Edge on Track vs #phi (2D) for Xenon{0};#phi (deg);Trailing Edge (ns)'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=nPhiBins,xmin=0,xmax=360,duration='run') shiftTrackEndcapGroup.defineHistogram('NTrksperLB_x,NTrksperLB_y;hNTrksperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. Number of Reconstructed Tracks per Even{0};Luminosity Block;Number of Tracks'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(hNTrksperLB_[iside]); - + #Initialize Aging plots for iL in range(5): - for iSide in range(2): - if ibe == 0: + for iSide in range(2): + if ibe == 0: if iL < 3: agingGroup = helper.addGroup(algTRTMonitoringRun3ESD,'TRTAgingHistograms0{0}{1}'.format(iL,iSide)) agingGroup.defineHistogram('Trackz_All;trackz_m{0}_{1}_All'.format(Mod[iL],sideId[iSide]),type='TH1F',title='Number All Hits side {0} Layer {1};z [mm];Number of Hits'.format(sideId[iSide],Mod[iL]),path='TRT/Aging/{0}'.format(barrelOrEndcap[ibe]),xbins=30,xmin=-750.,xmax=750.,duration='run') @@ -190,7 +202,7 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): agingGroup.defineHistogram('Trackz_HT;trackz_m1_{0}_HT_{1}'.format(sideId[iSide],Mod[iL]),type='TH1F',title='Number HT Hits side {0} Layer 1 {1};z [mm];Number of HT Hits'.format(sideId[iSide],Mod[iL]),path='TRT/Aging/{0}'.format(barrelOrEndcap[ibe]),xbins=30,xmin=-725.,xmax=0.,duration='lowStat') elif ibe == 1: # prevent double booking of histograms here - if iL < 4: + if iL < 4: agingGroup = helper.addGroup(algTRTMonitoringRun3ESD,'TRTAgingHistograms1{0}{1}'.format(iL,iSide)) agingGroup.defineHistogram('Trackr_All;trackr_E{0}_{1}_All'.format(sideId[iSide],gas[iL]),type='TH1F',title='Number All Hits E{0} {1};r [mm];Number of Hits'.format(sideId[iSide],gas[iL]),path='TRT/Aging/{0}'.format(barrelOrEndcap[ibe]),xbins=30,xmin=644.,xmax=1004.,duration='run') agingGroup.defineHistogram('Trackr_All;trackr_E{0}_{1}_All'.format(sideId[iSide],gas[iL]),type='TH1F',title='Number All Hits E{0} {1};r [mm];Number of Hits'.format(sideId[iSide],gas[iL]),path='TRT/Aging/{0}'.format(barrelOrEndcap[ibe]),xbins=30,xmin=644.,xmax=1004.,duration='lowStat') @@ -199,8 +211,10 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags): smryGroup = helper.addGroup(algTRTMonitoringRun3ESD,'SmryHistograms') sumLabels = ['Events', 'Tracks Total', 'Tracks BA', 'Tracks BC', 'Tracks EA', 'Tracks EC', 'Transition Side A', 'Transition Side C'] - smryGroup.defineHistogram('Summary;hSummary',weight='SummaryWeight',type='TH1F',title='Run Summary;;Entries',path='TRT/Shift/Summary',xbins=8,xmin=0,xmax=8,xlabels=sumLabels) - + smryGroup.defineHistogram('Summary;hSummary',weight='SummaryWeight',type='TH1F',title='Run Summary;;Entries',path='TRT/Shift/Summary',xbins=8,xmin=0,xmax=8,xlabels=sumLabels) + smryGroup.defineHistogram('IntLum;hIntLum',weight='IntLumWeight',type='TH1F',title='Luminosity;;Luminosity [#mub^{1}]',path='TRT/Shift/Summary',xbins=1,xmin=0.,xmax=1.) + smryGroup.defineHistogram('LBvsLum;hLBvsLum',weight='LBvsLumWeight',type='TH1F',title='Luminosity;Luminosity Bin;Luminosity [#mub^{1}]',path='TRT/Shift/Summary',xbins=2000,xmin=0.,xmax=2000.) + smryGroup.defineHistogram('LBvsTime;hLBvsTime',weight='LBvsTimeWeight',type='TH1F',title='Time;Luminosity Bin;Time [s]',path='TRT/Shift/Summary',xbins=2000,xmin=0.,xmax=2000.) acc = helper.result() result.merge(acc) @@ -252,4 +266,4 @@ if __name__ == '__main__': ServiceMgr.Dump = False cfg.merge(TRTMonitoringRun3Acc) - cfg.run(200) + cfg.run(100) diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py index 737aac03293..6690133d2ea 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py @@ -55,8 +55,8 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): algTRTMonitoringRun3RAW.trt_hole_search=TRTHoleSearch() - maxLumiBlock = 200 - maxLumiblock = 720 + maxLumiBlockSummary = 200 + maxLumiBlockShift = 720 numberOfBarrelStacks = 32 distToStraw = 0.4 numberOfStacks = (32, 32) @@ -89,50 +89,44 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): elif i >= numberOfStacks[ibe]: oss = 'TRT/EndcapC/Sector' + str(i + 1 - 32) - rdoStackGroup.defineHistogram('HitWMapS_passed,strawNumber;hHitWMapS',type='TEfficiency',title='Leading Edge in Time Window: Straws;Straw Number in Stack;Probability per Event',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitWMapS_passed;hHitWMapS',cutmask='HitWMapS_cut',type='TProfile',title='Leading Edge in Time Window: Straws;Straw Number in Stack;Probability per Event',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoStackGroup.defineHistogram('strawNumber,HitTrWMapS_y;hHitTrWMapS',cutmask='HitTrWMapS_cut',type='TProfile',title='Mean Trailing Edge in Time Window: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoStackGroup.defineHistogram('strawNumber,HitTrMapS_y;hHitTrMapS',type='TProfile',title='Mean Trailing Edge: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitAWMapS_passed,strawNumber;hHitAWMapS',type='TEfficiency',title='LL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitAMapS_passed,strawNumber;hHitAMapS',type='TEfficiency',title='Any LL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('StrawOcc_passed,StrawOcc;hOccupancyS',type='TEfficiency',title='Straw Occupancy Distribution: Straws;Occupancy;Number of Straws',path=oss,xbins=201,xmin=0,xmax=1.005) + rdoStackGroup.defineHistogram('strawNumber,HitAWMapS_passed;hHitAWMapS',cutmask='HitAWMapS_cut',type='TProfile',title='LL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitAMapS_passed;hHitAMapS',cutmask='HitAMapS_cut',type='TProfile',title='Any LL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber;unscaled_hHitAMapS',cutmask='HitAMapS_cut',type='TH1F',title='Any LL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('StrawOcc,StrawOcc_passed;hOccupancyS',type='TProfile',title='Straw Occupancy Distribution: Straws;Occupancy;Number of Straws',path=oss,xbins=201,xmin=0,xmax=1.005) rdoStackGroup.defineHistogram('strawNumber,HitToTMapS_y;hHitToTMapS',type='TProfile',title='Mean ToT: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoStackGroup.defineHistogram('strawNumber,HitToTMapS_y;hHitToTLongMapS',cutmask='HitToTLong_cut',type='TProfile',title='Mean ToT for Straws with ToT > LongToTCut: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('strawNumber,HitTrMapS_y;hHitToTLongTrMapS',cutmask='HitToTLong_cut',type='TProfile',title='Mean Trailing Edge for Straws with ToT > LongToTCut: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitHMapS_passed,strawNumber;hHitHMapS',type='TEfficiency',title='Any HL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitHWMapS_passed,strawNumber;hHitHWMapS',type='TEfficiency',title='HL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HtoLMapS_passed,HtoLMapS;hHtoLMapS',type='TEfficiency',title='HL/LL Ratio: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitTrMapS_y;hHitToTLongTrMapS',cutmask='HitToTLong_cut',type='TProfile',title='Mean Trailing Edge for Straws with ToT > LongToTCut: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitHMapS_passed;hHitHMapS',cutmask='HitHMapS_cut',type='TProfile',title='Any HL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitHWMapS_passed;hHitHWMapS',cutmask='HitHWMapS_cut',type='TProfile',title='HL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('HtoLMapS,HtoLMapS_passed;hHtoLMapS',type='TProfile',title='HL/LL Ratio: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitWMapC_passed,chipNumber;hHitWMapC',type='TEfficiency',title='Leading Edge in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitWMapC_passed;hHitWMapC',cutmask='HitWMapC_cut',type='TProfile',title='Leading Edge in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('chipNumber,HitTrMapC_y;hHitTrMapC',type='TProfile',title='Mean Trailing Edge: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('chipNumber,HitTrMapC_y;hHitTrWMapC',cutmask='HitTrWMapC_cut',type='TProfile',title='Mean Trailing Edge in Time Window: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitAWMapC_passed,chipNumber;hHitAWMapC',type='TEfficiency',title='LL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitAMapC_passed,chipNumber;hHitAMapC',type='TEfficiency',title='Any LL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitAWMapC_passed;hHitAWMapC',cutmask='HitAWMapC_cut',type='TProfile',title='LL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitAMapC_passed;hHitAMapC',cutmask='HitAMapC_cut',type='TProfile',title='Any LL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber;unscaled_hHitAMapC',cutmask='HitAMapC_cut',type='TH1F',title='Any LL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('OccupancyC;hOccupancyC',type='TH1F',title='Chip Occupancy Distribution;Occupancy;Number of Chips',path=oss,xbins=201,xmin=0,xmax=1.005) rdoStackGroup.defineHistogram('chipNumber,HitToTMapC_y;hHitToTMapC',type='TProfile',title='Mean ToT: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitHMapC_passed,chipNumber;hHitHMapC',type='TEfficiency',title='Any HL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitHWMapC_passed,chipNumber;hHitHWMapC',type='TEfficiency',title='HL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HtoLMapC_passed,HtoLMapC;hHtoLMapC',type='TEfficiency',title='HL/LL Ratio: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitHMapC_passed;hHitHMapC',cutmask='HitHMapC_cut',type='TProfile',title='Any HL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitHWMapC_passed;hHitHWMapC',cutmask='HitHWMapC_cut',type='TProfile',title='HL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('HtoLMapC,HtoLMapC_passed;hHtoLMapC',type='TProfile',title='HL/LL Ratio: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('HtoBCMapC_x,chipNumber;hHtoBCMapC',cutmask='HtoBCMap_cut',type='TH2F',title='HL in BC: Chips;Bunch Crossing ID;Chip Number in Stack',path=oss,xbins=3,xmin=0,xmax=3,ybins=iChipMax[ibe],ymin=0,ymax=iChipMax[ibe]) if ibe == 0: rdoStackGroup.defineHistogram('HtoBCMapB_x,HtoBCMapB_y;hHtoBCMapB',type='TH2F',title='HL in BC: Boards;Bunch Crossing ID;Board Number in Stack',path=oss,xbins=3,xmin=0,xmax=3,ybins=9,ymin=0,ymax=9) elif ibe == 1: rdoStackGroup.defineHistogram('HtoBCMapB_x,HtoBCMapB_y;hHtoBCMapB',type='TH2F',title='HL in BC: Boards;Bunch Crossing ID;Board Number in Stack',path=oss,xbins=3,xmin=0,xmax=3,ybins=20,ymin=-0.5,ymax=19.5) - ### Registering Collisions Histograms ### - rdoShiftSmryGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftSmryHistograms') - - # Luminosity summary histograms - rdoShiftSmryGroup.defineHistogram('IntLum_passed,IntLum;IntLum',type='TEfficiency',title='Luminosity;;Luminosity [#mub^{1}]',path='TRT/Shift/Summary',xbins=1,xmin=0.,xmax=1.) - rdoShiftSmryGroup.defineHistogram('LBvsLum_passed,LBvsLum;LBvsLum',type='TEfficiency',title='Luminosity;Luminosity Bin;Luminosity [#mub^{1}]',path='TRT/Shift/Summary',xbins=2000,xmin=0.,xmax=2000.) - rdoShiftSmryGroup.defineHistogram('LBvsTime_passed,LBvsTime;LBvsTime',type='TEfficiency',title='Time;Luminosity Bin;Time [s]',path='TRT/Shift/Summary',xbins=2000,xmin=0.,xmax=2000.) - for ibe in range(2): for iside in range(2): regionTag = ' (' + beId[ibe] + sideId[iside] + ')' rdoShiftSmryRebinnedGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftSmryRebinnedHistograms{0}{1}'.format(ibe,iside)) - rdoShiftSmryRebinnedGroup.defineHistogram('ChipBSErrorsVsLB_x,ChipBSErrorsVsLB_y;hChipBSErrorsVsLB{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Chip Bytestream Errors vs LB{0};Luminosity Block;Fraction of Chips with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlock + 1,xmin=-0.5,xmax=maxLumiBlock + 0.5) + rdoShiftSmryRebinnedGroup.defineHistogram('ChipBSErrorsVsLB_x,ChipBSErrorsVsLB_y;hChipBSErrorsVsLB_{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Chip Bytestream Errors vs LB{0};Luminosity Block;Fraction of Chips with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlockSummary + 1,xmin=-0.5,xmax=maxLumiBlockSummary + 0.5) #CAN_REBIN(m_hChipBSErrorsVsLB[ibe][iside]); - rdoShiftSmryRebinnedGroup.defineHistogram('RobBSErrorsVsLB_x,RobBSErrorsVsLB_y;hRobBSErrorsVsLB_{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Rob Bytestream Errors vs LB{0};Luminosity Block;Fraction of RODs with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlock + 1,xmin=-0.5,xmax=maxLumiBlock + 0.5) + rdoShiftSmryRebinnedGroup.defineHistogram('RobBSErrorsVsLB_x,RobBSErrorsVsLB_y;hRobBSErrorsVsLB_{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Rob Bytestream Errors vs LB{0};Luminosity Block;Fraction of RODs with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlockSummary + 1,xmin=-0.5,xmax=maxLumiBlockSummary + 0.5) #CAN_REBIN(m_hRobBSErrorsVsLB[ibe][iside]); # Barrel/Endcap Histograms @@ -141,15 +135,15 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): rdoGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOHistograms{0}'.format(ibe)) rdoGroup.defineHistogram('BCIDvsOcc_x,BCIDvsOcc_y;hBCIDvsOcc',type='TProfile',title='Avg. Occupancy vs BCID{0};Bunch Crossing ID;Occupancy'.format(regionTag),path='TRT/{0}/Expert'.format(barrelOrEndcap[ibe]),xbins=3564,xmin=0,xmax=3564) if ibe == 0: - rdoGroup.defineHistogram('HitWMap_passed,strawNumber;hHitWMap',type='TEfficiency',title='Leading Edge in Time Window: Xenon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(str(barrelOrEndcap[ibe])),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoGroup.defineHistogram('HitWMap_Ar_passed,strawNumber;hHitWMap_Ar',type='TEfficiency',title='Leading Edge in Time Window: Argon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoGroup.defineHistogram('strawNumber,HitWMap_passed;hHitWMap',cutmask='isNotAr',type='TProfile',title='Leading Edge in Time Window: Xenon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(str(barrelOrEndcap[ibe])),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoGroup.defineHistogram('strawNumber,HitWMap_Ar_passed;hHitWMap_Ar',cutmask='isAr',type='TProfile',title='Leading Edge in Time Window: Argon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoGroup.defineHistogram('OccAll;hOccAll',type='TH1F',title='Occupancy per Event;Occupancy;Events',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=400,xmin=0.0,xmax=1.0) elif ibe == 1: for iside in range(2): side = ('A', 'C') rdoEndcapGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOHistograms1{0}'.format(iside)) - rdoEndcapGroup.defineHistogram('HitWMap_passed,strawNumber;hHitWMap_{0}'.format(side[iside]),type='TEfficiency',title='Leading Edge in Time Window: Xenon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoEndcapGroup.defineHistogram('HitWMap_Ar_passed,strawNumber;hHitWMap_Ar_{0}'.format(side[iside]),type='TEfficiency',title='Leading Edge in Time Window: Argon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoEndcapGroup.defineHistogram('strawNumber,HitWMap_passed;hHitWMap_{0}'.format(side[iside]),cutmask='isNotAr',type='TProfile',title='Leading Edge in Time Window: Xenon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoEndcapGroup.defineHistogram('strawNumber,HitWMap_Ar_passed;hHitWMap_Ar_{0}'.format(side[iside]),cutmask='isAr',type='TProfile',title='Leading Edge in Time Window: Argon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) for iside in range(2): regionTag = ' (' + beId[ibe] + sideId[iside] + ')' regionMarker = (beId[ibe] + sideId[iside]) if isOnline is True else (sideId[iside]) @@ -160,22 +154,22 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): rdoLLHLOccGroup.defineHistogram('AvgHLOccMod_side_x,AvgHLOccMod_side_y;hAvgHLOccMod_{0}'.format(regionMarker),type='TProfile',title='Avg. HL Occupancy: {0}s{1};{2};Occupancy'.format(moduleOrWheel[ibe],regionTag,moduleNumAssign[ibe]),path='TRT/{0}/Expert'.format(barrelOrEndcap[ibe]),xbins=moduleNum[ibe],xmin=0,xmax=moduleNum[ibe]) effGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistograms') - effGroup.defineHistogram('Efficiency_eta_passed,Efficiency_eta;hefficiency_eta',type='TEfficiency',title='Efficiency vs #eta;#eta;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.8,xmax=2.8) - effGroup.defineHistogram('Efficiency_phi_passed,Efficiency_phi;hefficiency_phi',type='TEfficiency',title='Efficiency vs #phi;#phi (deg);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-3.2,xmax=3.2) - effGroup.defineHistogram('Efficiency_pt_passed,Efficiency_pt;hefficiency_pt',type='TEfficiency',title='Efficiency vs pT;pT (GeV);Efficiency',path='TRT/Efficiency',xbins=50,xmin=0,xmax=10) - effGroup.defineHistogram('Efficiency_z0_passed,Efficiency_z0;hefficiency_z0',type='TEfficiency',title='Efficiency vs z0;z0;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-200,xmax=200) - effGroup.defineHistogram('EfficiencyBarrel_locR_passed,EfficiencyBarrel_locR;hefficiencyBarrel_locR',type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Xenon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) - effGroup.defineHistogram('EfficiencyBarrel_locR_Ar_passed,EfficiencyBarrel_locR_Ar;hefficiencyBarrel_locR_Ar',type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Argon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) + effGroup.defineHistogram('Efficiency_eta_passed,Efficiency_eta;hefficiency_eta',type='TProfile',title='Efficiency vs #eta;#eta;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.8,xmax=2.8) + effGroup.defineHistogram('Efficiency_phi_passed,Efficiency_phi;hefficiency_phi',type='TProfile',title='Efficiency vs #phi;#phi (deg);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-3.2,xmax=3.2) + effGroup.defineHistogram('Efficiency_pt_passed,Efficiency_pt;hefficiency_pt',type='TProfile',title='Efficiency vs pT;pT (GeV);Efficiency',path='TRT/Efficiency',xbins=50,xmin=0,xmax=10) + effGroup.defineHistogram('Efficiency_z0_passed,Efficiency_z0;hefficiency_z0',type='TProfile',title='Efficiency vs z0;z0;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-200,xmax=200) + effGroup.defineHistogram('EfficiencyBarrel_locR,EfficiencyBarrel_locR_passed;hefficiencyBarrel_locR',type='TProfile',title='Efficiency vs Track-to-Wire Distance for Xenon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) + effGroup.defineHistogram('EfficiencyBarrel_locR_Ar,EfficiencyBarrel_locR_Ar_passed;hefficiencyBarrel_locR_Ar',type='TProfile',title='Efficiency vs Track-to-Wire Distance for Argon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) effBarrelGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistogramsBarrel') - effBarrelGroup.defineHistogram('EfficiencyBarrelMap_passed,EfficiencyBarrelMap;hEfficiencyBarrelMap',type='TEfficiency',title='Straw Efficiency Map (Barrel);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[0],xmin=0,xmax=strawMax[0]) + effBarrelGroup.defineHistogram('EfficiencyBarrelMap,EfficiencyBarrelMap_passed;hEfficiencyBarrelMap',type='TProfile',title='Straw Efficiency Map (Barrel);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[0],xmin=0,xmax=strawMax[0]) effEndcapGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistogramsEndCap') - effEndcapGroup.defineHistogram('EfficiencyEndCapMap_passed,EfficiencyEndCapMap;hEfficiencyEndCapMap',type='TEfficiency',title='Straw Efficiency Map (Endcap);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[1],xmin=0,xmax=strawMax[1]) + effEndcapGroup.defineHistogram('EfficiencyEndCapMap,EfficiencyEndCapMap_passed;hEfficiencyEndCapMap',type='TProfile',title='Straw Efficiency Map (Endcap);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[1],xmin=0,xmax=strawMax[1]) for iside in range(2): regionTag = ' (' + beId[1] + sideId[iside] + ')' effTRTEndcapACGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistogramsEndCap{0}'.format(iside)) - effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR_passed,EfficiencyEndCap_locR;hEfficiencyEndCap{0}_locR'.format(sideId[iside]),type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Xenon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) - effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR_Ar_passed,EfficiencyEndCap_locR_Ar;hEfficiencyEndCap{0}_locR_Ar'.format(sideId[iside]),type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Argon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) + effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR,EfficiencyEndCap_locR_passed;hEfficiencyEndCap{0}_locR'.format(sideId[iside]),type='TProfile',title='Efficiency vs Track-to-Wire Distance for Xenon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) + effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR_Ar,EfficiencyEndCap_locR_Ar_passed;hEfficiencyEndCap{0}_locR_Ar'.format(sideId[iside]),type='TProfile',title='Efficiency vs Track-to-Wire Distance for Argon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) for ibe in range(2): for iside in range(2): @@ -188,8 +182,8 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): elif ibe == 1: oss = 'TRT/Endcap' + str(sideId[iside]) + '/Sector' + str(i + 1 - 32*iside) effStrawChipGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistograms{0}{1}'.format(ibe,i)) - effStrawChipGroup.defineHistogram('EfficiencyS_passed,EfficiencyS;hHitEfficiencyS',type='TEfficiency',title='Straw Efficiency Map;Straw Number;Efficiency',path=oss,xbins=strawMax[ibe],xmin=0.5,xmax=strawMax[ibe]) - effStrawChipGroup.defineHistogram('EfficiencyC_passed,EfficiencyC;hHitEfficiencyC',type='TEfficiency',title='Chip Efficiency Map;Chip Number;Efficiency', path=oss,xbins=iChipMax[ibe],xmin=0.5,xmax=iChipMax[ibe]) + effStrawChipGroup.defineHistogram('EfficiencyS,EfficiencyS_passed;hHitEfficiencyS',type='TProfile',title='Straw Efficiency Map;Straw Number;Efficiency',path=oss,xbins=strawMax[ibe],xmin=0.5,xmax=strawMax[ibe]) + effStrawChipGroup.defineHistogram('EfficiencyC,EfficiencyC_passed;hHitEfficiencyC',type='TProfile',title='Chip Efficiency Map;Chip Number;Efficiency', path=oss,xbins=iChipMax[ibe],xmin=0.5,xmax=iChipMax[ibe]) ## Finished Booking TRT RDO Histograms ### ### Booking TRT Hits Histograms ### @@ -215,24 +209,24 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): nBarrelModules = i + 1 - 32 oss = 'TRT/EndcapC/Sector{0}'.format(nBarrelModules) - trackGroup.defineHistogram('HitWonTMapS_passed,HitWonTMapS;hHitWonTMapS',type='TEfficiency',title='Leading Edge on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitAonTMapS_passed,HitAonTMapS;hHitAonTMapS',type='TEfficiency',title='Any LL Bit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('EfficiencyS_passed,EfficiencyS;hEfficiencyS',type='TEfficiency',title='Straw Efficiency with {0} mm Cut;Straw Number in Stack;Efficiency'.format(distance),path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitHonTMapS_passed,HitHonTMapS;hHitHonTMapS',type='TEfficiency',title='HL Hit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitHWonTMapS_passed,HitHWonTMapS;hHitHWonTMapS',type='TEfficiency',title='HL Hit(In Time Window) on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitAWonTMapS_passed,HitAWonTMapS;hHitAWonTMapS',type='TEfficiency',title='Any LL Bit on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitWonTMapC_passed,HitWonTMapC;hHitWonTMapC',type='TEfficiency',title='Leading Edge on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitAonTMapC_passed,HitAonTMapC;hHitAonTMapC',type='TEfficiency',title='Any LL Bit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('EfficiencyC_passed,EfficiencyC;hEfficiencyC',type='TEfficiency',title='Chip Efficiency with {0} mm Cut;Chip Number in Stack;Efficiency'.format(distance),path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitAWonTMapC_passed,HitAWonTMapC;hHitAWonTMapC',type='TEfficiency',title='Any LL Bit on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitHonTMapC_passed,HitHonTMapC;hHitHonTMapC',type='TEfficiency',title='HL Hit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitHWonTMapC_passed,HitHWonTMapC;hHitHWonTMapC',type='TEfficiency',title='HL Hit(In time Window) on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HtoLonTMapS_passed,HtoLonTMapS;hHtoLonTMapS',type='TEfficiency',title='HL/LL Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HtoLWonTMapS_passed,HtoLWonTMapS;hHtoLWonTMapS',type='TEfficiency',title='HL/LL (In Time Window) Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitWonTMapS;unscaled_hHitWonTMapS',type='TH1F',title='Leading Edge on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitAonTMapS;unscaled_hHitAonTMapS',type='TH1F',title='Any LL Bit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitHonTMapS;unscaled_hHitHonTMapS',type='TH1F',title='HL Hit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitHWonTMapS;unscaled_hHitHWonTMapS',type='TH1F',title='HL Hit(In Time Window) on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitAWonTMapS;unscaled_hHitAWonTMapS',type='TH1F',title='Any LL Bit on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('EfficiencyS,EfficiencyS_passed;hEfficiencyS',type='TProfile',title='Straw Efficiency with {0} mm Cut;Straw Number in Stack;Efficiency'.format(distance),path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('EfficiencyC,EfficiencyC_passed;hEfficiencyC',type='TProfile',title='Chip Efficiency with {0} mm Cut;Chip Number in Stack;Efficiency'.format(distance),path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitWonTMapC;unscaled_hHitWonTMapC',type='TH1F',title='Leading Edge on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitAonTMapC;unscaled_hHitAonTMapC',type='TH1F',title='Any LL Bit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitAWonTMapC;unscaled_hHitAWonTMapC',type='TH1F',title='Any LL Bit on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitHonTMapC;unscaled_hHitHonTMapC',type='TH1F',title='HL Hit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitHWonTMapC;unscaled_hHitHWonTMapC',type='TH1F',title='HL Hit(In time Window) on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HtoLonTMapS,HtoLonTMapS_passed;hHtoLonTMapS',type='TProfile',title='HL/LL Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HtoLWonTMapS,HtoLWonTMapS_passed;hHtoLWonTMapS',type='TProfile',title='HL/LL (In Time Window) Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) trackGroup.defineHistogram('HitonTrackVAllS_x,HitonTrackVAllS_y;hHitonTrackVAllS',type='TProfile',title='(Hit on Track) / (Any LL Bit): Straws;Straw Number in Stack;Ratio',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) trackGroup.defineHistogram('HitonTrackVAllC_x,HitonTrackVAllC_y;hHitonTrackVAllC',type='TProfile',title='(Hit on Track) / (Any LL Bit): Chips;Chip Number in Stack;Ratio',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HtoLWonTMapC_passed,HtoLWonTMapC;hHtoLWonTMapC',type='TEfficiency',title='HL/LL(In Time Window) Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HtoLonTMapC_passed,HtoLonTMapC;hHtoLonTMapC',type='TEfficiency',title='HL/LL Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HtoLWonTMapC,HtoLWonTMapC_passed;hHtoLWonTMapC',type='TProfile',title='HL/LL(In Time Window) Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HtoLonTMapC,HtoLonTMapC_passed;hHtoLonTMapC',type='TProfile',title='HL/LL Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) for ibe in range(2): if ibe == 0: @@ -244,7 +238,7 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): shiftTrackGroup.defineHistogram('HLhitOnTrack_B;hHLhitOnTrack',type='TH1F',title='Number of HL Hits per Reconstructed Track{0};Number of HL Hits per Track;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=50) shiftTrackGroup.defineHistogram('HtoLRatioOnTrack_B;hHtoLRatioOnTrack',type='TH1F',title='HL/LL Ratio per Reconstructed Track for All{0};HL/LL Ratio;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=1) shiftTrackGroup.defineHistogram('HitWonTMap_B;hHitWonTMap',type='TH1F',title='Leading Edge in Time Window per Reconstructed Track{0};Straw Number;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[0],xmin=0,xmax=strawMax[0]) - shiftTrackGroup.defineHistogram('StrawEffDetPhi_B_passed,StrawEffDetPhi_B;hStrawEffDetPhi',type='TEfficiency',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) + shiftTrackGroup.defineHistogram('StrawEffDetPhi_B_passed,StrawEffDetPhi_B;hStrawEffDetPhi',type='TProfile',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) elif ibe == 1: for iside in range(2): regionTag = ' (' + beId[ibe] + sideId[iside] + ')' @@ -255,19 +249,21 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags): shiftTrackEndcapGroup.defineHistogram('HLhitOnTrack_E;hHLhitOnTrack_{0}'.format(sideId[iside]),type='TH1F',title='Number of HL Hits per Reconstructed Track{0};Number of HL Hits per Track;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=50) shiftTrackEndcapGroup.defineHistogram('HtoLRatioOnTrack_E;hHtoLRatioOnTrack_{0}'.format(sideId[iside]),type='TH1F',title='HL/LL Ratio per Reconstructed Track for All{0};HL/LL Ratio;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=1) shiftTrackEndcapGroup.defineHistogram('HitWonTMap_E;hHitWonTMap_{0}'.format(sideId[iside]),type='TH1F',title='Leading Edge in Time Window per Reconstructed Track{0};Straw Number;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[1],xmin=0,xmax=strawMax[1]) - shiftTrackEndcapGroup.defineHistogram('StrawEffDetPhi_E_passed,StrawEffDetPhi_E;hStrawEffDetPhi_{0}'.format(sideId[iside]),type='TEfficiency',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) + shiftTrackEndcapGroup.defineHistogram('StrawEffDetPhi_E_passed,StrawEffDetPhi_E;hStrawEffDetPhi_{0}'.format(sideId[iside]),type='TProfile',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) ### Finished Booking TRT Hits Histograms ### for ibe in range(2): + regionTag = ' (' + barrelOrEndcap[ibe] + ')' if ibe == 0: rdoShiftRebinnedBarrelGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftRebinnedBarrelHistograms0') - rdoShiftRebinnedBarrelGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB',type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_B); - rdoShiftRebinnedBarrelGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB',type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_B); + rdoShiftRebinnedBarrelGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB',type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_B); + rdoShiftRebinnedBarrelGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB',type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_B); elif ibe == 1: for iside in range(2): + regionTag = ' (' + beId[ibe] + sideId[iside] + ')' rdoShiftRebinnedEndcapGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftRebinnedEndcapHistograms1{0}'.format(iside)) - rdoShiftRebinnedEndcapGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_E[iside]); - rdoShiftRebinnedEndcapGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_E[iside]); + rdoShiftRebinnedEndcapGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_E[iside]); + rdoShiftRebinnedEndcapGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_E[iside]); if isRun3Cfg(): diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTPostProcessing.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTPostProcessing.py index 538e0873426..3049cd7a1c2 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTPostProcessing.py +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTPostProcessing.py @@ -1,20 +1,79 @@ # # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration # -def occupancyS(inputs): +def hOccupancy(inputs): import ROOT - rh = ROOT.TH1F('hOccupancyS', 'Straw Occupancy Distribution', 201, 0, 1.005) + element = inputs[0][0]['element'] + name = 'hOccupancy' + element + if element == 'C': title = 'Chip' + if element == 'S': title = 'Straw' + rh = ROOT.TH1F(name, title + ' Occupancy Distribution', 201, 0, 1.005) + rh.GetXaxis().SetTitle('Occupancy') + rh.GetYaxis().SetTitle('Number of ' + title + 's') plots = [_[1][0] for _ in inputs] # all plots passed as first element of list for plot in plots: - for j in range(201): - rh.Fill(plot.GetEfficiency(j+1)) + nBins = plot.GetNbinsX() + for j in range(nBins): #range of the input histogram, not the output + rh.Fill(plot.GetBinContent(j + 1)) + return [rh] + +def hHitXonTMap(inputs): + import ROOT + hist = inputs[1][0]['histogram'][9:] #removing "unscaled_" prefix + element = inputs[1][0]['element'] + if element == 'S': + name = hist + 'S' + titleElement = 'Straws' + if element == 'C': + name = hist + 'C' + titleElement = 'Chips' + if hist == 'hHitHWonTMap': title = 'HL Hit(In time Window) on Track: ' + if hist == 'hHitWonTMap': title = 'Leading Edge on Track in Time Window: ' + if hist == 'hHitAonTMap': title = 'Any LL Bit on Track: ' + if hist == 'hHitAWonTMap': title = 'Any LL Bit on Track in Time Window: ' + if hist == 'hHitHonTMap': title = 'HL Hit on Track: ' + rh = ROOT.TH1F(name, title + titleElement, 1, 0, 1) + rh.GetXaxis().SetTitle(titleElement[:-1] + ' Number in Stack') + rh.GetYaxis().SetTitle('Probability') + for i in range(len(inputs[0][1])): + plots = [_[1][i] for _ in inputs] + if i < 3: + for m in range(int(len(plots)/2)): + plot0 = plots[2*m] + plot1 = plots[2*m + 1] + nBins = plots[0].GetNbinsX() + rh.SetBins(nBins, 0, nBins) + for j in range(nBins): #range of the input histogram, not the output + if plot0.GetBinEntries(j + 1) > 0: + rh.SetBinContent(j + 1, plot1.GetBinContent(j + 1)*1./plot0.GetBinEntries(j + 1)) + else: + rh.SetBinContent(j + 1, 0) return [rh] -def occupancyC(inputs): +def hHitOnTrackVsAll(inputs): import ROOT - rh = ROOT.TH1F('hOccupancyC', 'Chip Occupancy Distribution', 201, 0, 1.005) - plots = [_[1][0] for _ in inputs] # all plots passed as first element of list - for plot in plots: - for j in range(201): - rh.Fill(plot.GetEfficiency(j+1)) + element = inputs[0][0]['element'] + if element == 'S': + name ='S' + titleElement = 'Straws' + if element == 'C': + name = 'C' + titleElement = 'Chips' + rh = ROOT.TH1F('hHitOnTrackVsAll' + name, '(Hit on Track) / (Any LL Bit): ' + titleElement, 1, 0, 1) + rh.GetXaxis().SetTitle(titleElement[:-1] + ' Number in Stack') + rh.GetYaxis().SetTitle('Ratio') + for i in range(len(inputs[0][1])): + plots = [_[1][i] for _ in inputs] + if i < 4: + for m in range(int(len(plots)/3)): + plot0 = plots[3*m] + plot1 = plots[3*m + 1] + plot2 = plots[3*m + 2] + nBins = plots[0].GetNbinsX() + rh.SetBins(nBins, 0, nBins) + for j in range(nBins): #range of the input histogram, not the output + if (plot0.GetBinContent(j + 1)*plot1.GetBinContent(j + 1)) > 0: + rh.SetBinContent(j + 1, plot2.GetBinContent(j + 1)/(plot0.GetBinContent(j + 1)*plot1.GetBinContent(j + 1))) + else: + rh.SetBinContent(j + 1, 0) return [rh] \ No newline at end of file diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/share/TRTMonitoringRun3RAW_Alg_jobOptions.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/share/TRTMonitoringRun3RAW_Alg_jobOptions.py index 54702129036..68ef492e8ec 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/share/TRTMonitoringRun3RAW_Alg_jobOptions.py +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/share/TRTMonitoringRun3RAW_Alg_jobOptions.py @@ -12,7 +12,8 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags algTRTMonitoringRun3RAW.TrackSummaryTool = InDetTrackSummaryTool -maxLumiBlock = 200 +maxLumiBlockSummary = 200 +maxLumiBlockShift = 720 numberOfBarrelStacks = 32 distToStraw = 0.4 maxLumiblock = 720 @@ -46,53 +47,44 @@ for ibe in range(2): elif i >= numberOfStacks[ibe]: oss = 'TRT/EndcapC/Sector' + str(i + 1 - 32) - rdoStackGroup.defineHistogram('HitWMapS_passed,strawNumber;hHitWMapS',type='TEfficiency',title='Leading Edge in Time Window: Straws;Straw Number in Stack;Probability per Event',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitWMapS_passed;hHitWMapS',cutmask='HitWMapS_cut',type='TProfile',title='Leading Edge in Time Window: Straws;Straw Number in Stack;Probability per Event',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoStackGroup.defineHistogram('strawNumber,HitTrWMapS_y;hHitTrWMapS',cutmask='HitTrWMapS_cut',type='TProfile',title='Mean Trailing Edge in Time Window: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoStackGroup.defineHistogram('strawNumber,HitTrMapS_y;hHitTrMapS',type='TProfile',title='Mean Trailing Edge: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitAWMapS_passed,strawNumber;hHitAWMapS',type='TEfficiency',title='LL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitAMapS_passed,strawNumber;hHitAMapS',type='TEfficiency',title='Any LL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('StrawOcc_passed,StrawOcc;hOccupancyS',type='TEfficiency',title='Straw Occupancy Distribution: Straws;Occupancy;Number of Straws',path=oss,xbins=201,xmin=0,xmax=1.005) + rdoStackGroup.defineHistogram('strawNumber,HitAWMapS_passed;hHitAWMapS',cutmask='HitAWMapS_cut',type='TProfile',title='LL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitAMapS_passed;hHitAMapS',cutmask='HitAMapS_cut',type='TProfile',title='Any LL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber;unscaled_hHitAMapS',cutmask='HitAMapS_cut',type='TH1F',title='Any LL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('StrawOcc,StrawOcc_passed;hOccupancyS',type='TProfile',title='Straw Occupancy Distribution: Straws;Occupancy;Number of Straws',path=oss,xbins=201,xmin=0,xmax=1.005) rdoStackGroup.defineHistogram('strawNumber,HitToTMapS_y;hHitToTMapS',type='TProfile',title='Mean ToT: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoStackGroup.defineHistogram('strawNumber,HitToTMapS_y;hHitToTLongMapS',cutmask='HitToTLong_cut',type='TProfile',title='Mean ToT for Straws with ToT > LongToTCut: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('strawNumber,HitTrMapS_y;hHitToTLongTrMapS',cutmask='HitToTLong_cut',type='TProfile',title='Mean Trailing Edge for Straws with ToT > LongToTCut: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitHMapS_passed,strawNumber;hHitHMapS',type='TEfficiency',title='Any HL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitHWMapS_passed,strawNumber;hHitHWMapS',type='TEfficiency',title='HL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HtoLMapS_passed,HtoLMapS;hHtoLMapS',type='TEfficiency',title='HL/LL Ratio: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitTrMapS_y;hHitToTLongTrMapS',cutmask='HitToTLong_cut',type='TProfile',title='Mean Trailing Edge for Straws with ToT > LongToTCut: Straws;Straw Number in Stack;Time (ns)',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitHMapS_passed;hHitHMapS',cutmask='HitHMapS_cut',type='TProfile',title='Any HL Bit: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('strawNumber,HitHWMapS_passed;hHitHWMapS',cutmask='HitHWMapS_cut',type='TProfile',title='HL in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoStackGroup.defineHistogram('HtoLMapS,HtoLMapS_passed;hHtoLMapS',type='TProfile',title='HL/LL Ratio: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoStackGroup.defineHistogram('HitWMapC_passed,chipNumber;hHitWMapC',type='TEfficiency',title='Leading Edge in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitWMapC_passed;hHitWMapC',cutmask='HitWMapC_cut',type='TProfile',title='Leading Edge in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('chipNumber,HitTrMapC_y;hHitTrMapC',type='TProfile',title='Mean Trailing Edge: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('chipNumber,HitTrMapC_y;hHitTrWMapC',cutmask='HitTrWMapC_cut',type='TProfile',title='Mean Trailing Edge in Time Window: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitAWMapC_passed,chipNumber;hHitAWMapC',type='TEfficiency',title='LL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitAMapC_passed,chipNumber;hHitAMapC',type='TEfficiency',title='Any LL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitAWMapC_passed;hHitAWMapC',cutmask='HitAWMapC_cut',type='TProfile',title='LL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitAMapC_passed;hHitAMapC',cutmask='HitAMapC_cut',type='TProfile',title='Any LL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber;unscaled_hHitAMapC',cutmask='HitAMapC_cut',type='TH1F',title='Any LL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('OccupancyC;hOccupancyC',type='TH1F',title='Chip Occupancy Distribution;Occupancy;Number of Chips',path=oss,xbins=201,xmin=0,xmax=1.005) rdoStackGroup.defineHistogram('chipNumber,HitToTMapC_y;hHitToTMapC',type='TProfile',title='Mean ToT: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitHMapC_passed,chipNumber;hHitHMapC',type='TEfficiency',title='Any HL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HitHWMapC_passed,chipNumber;hHitHWMapC',type='TEfficiency',title='HL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - rdoStackGroup.defineHistogram('HtoLMapC_passed,HtoLMapC;hHtoLMapC',type='TEfficiency',title='HL/LL Ratio: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitHMapC_passed;hHitHMapC',cutmask='HitHMapC_cut',type='TProfile',title='Any HL Bit: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('chipNumber,HitHWMapC_passed;hHitHWMapC',cutmask='HitHWMapC_cut',type='TProfile',title='HL in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + rdoStackGroup.defineHistogram('HtoLMapC,HtoLMapC_passed;hHtoLMapC',type='TProfile',title='HL/LL Ratio: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) rdoStackGroup.defineHistogram('HtoBCMapC_x,chipNumber;hHtoBCMapC',cutmask='HtoBCMap_cut',type='TH2F',title='HL in BC: Chips;Bunch Crossing ID;Chip Number in Stack',path=oss,xbins=3,xmin=0,xmax=3,ybins=iChipMax[ibe],ymin=0,ymax=iChipMax[ibe]) - + if ibe == 0: rdoStackGroup.defineHistogram('HtoBCMapB_x,HtoBCMapB_y;hHtoBCMapB',type='TH2F',title='HL in BC: Boards;Bunch Crossing ID;Board Number in Stack',path=oss,xbins=3,xmin=0,xmax=3,ybins=9,ymin=0,ymax=9) elif ibe == 1: rdoStackGroup.defineHistogram('HtoBCMapB_x,HtoBCMapB_y;hHtoBCMapB',type='TH2F',title='HL in BC: Boards;Bunch Crossing ID;Board Number in Stack',path=oss,xbins=3,xmin=0,xmax=3,ybins=20,ymin=-0.5,ymax=19.5) - ### Registering Collisions Histograms ### -rdoShiftSmryGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftSmryHistograms') - -sumLabels = ['Events', 'Tracks Total', 'Tracks BA', 'Tracks BA', 'Tracks BC', 'Tracks EA', 'Tracks EC', 'Transition Side A', 'Transition Side C'] -rdoShiftSmryGroup.defineHistogram('Summary;hSummary',weight='SummaryWeight',type='TH1F',title='Run Summary;;Entries',path='TRT/Shift/Summary',xbins=8,xmin=0,xmax=8,xlabels=sumLabels) - -# Luminosity summary histograms -rdoShiftSmryGroup.defineHistogram('IntLum_passed,IntLum;IntLum',type='TEfficiency',title='Luminosity;;Luminosity [#mub^{1}]',path='TRT/Shift/Summary',xbins=1,xmin=0.,xmax=1.) -rdoShiftSmryGroup.defineHistogram('LBvsLum_passed,LBvsLum;LBvsLum',type='TEfficiency',title='Luminosity;Luminosity Bin;Luminosity [#mub^{1}]',path='TRT/Shift/Summary',xbins=2000,xmin=0.,xmax=2000.) -rdoShiftSmryGroup.defineHistogram('LBvsTime_passed,LBvsTime;LBvsTime',type='TEfficiency',title='Time;Luminosity Bin;Time [s]',path='TRT/Shift/Summary',xbins=2000,xmin=0.,xmax=2000.) - for ibe in range(2): for iside in range(2): regionTag = ' (' + beId[ibe] + sideId[iside] + ')' rdoShiftSmryRebinnedGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftSmryRebinnedHistograms{0}{1}'.format(ibe,iside)) - rdoShiftSmryRebinnedGroup.defineHistogram('ChipBSErrorsVsLB_x,ChipBSErrorsVsLB_y;hChipBSErrorsVsLB{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Chip Bytestream Errors vs LB{0};Luminosity Block;Fraction of Chips with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlock + 1,xmin=-0.5,xmax=maxLumiBlock + 0.5) + rdoShiftSmryRebinnedGroup.defineHistogram('ChipBSErrorsVsLB_x,ChipBSErrorsVsLB_y;hChipBSErrorsVsLB_{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Chip Bytestream Errors vs LB{0};Luminosity Block;Fraction of Chips with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlockSummary + 1,xmin=-0.5,xmax=maxLumiBlockSummary + 0.5) #CAN_REBIN(m_hChipBSErrorsVsLB[ibe][iside]); - rdoShiftSmryRebinnedGroup.defineHistogram('RobBSErrorsVsLB_x,RobBSErrorsVsLB_y;hRobBSErrorsVsLB_{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Rob Bytestream Errors vs LB{0};Luminosity Block;Fraction of RODs with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlock + 1,xmin=-0.5,xmax=maxLumiBlock + 0.5) + rdoShiftSmryRebinnedGroup.defineHistogram('RobBSErrorsVsLB_x,RobBSErrorsVsLB_y;hRobBSErrorsVsLB_{0}{1}'.format(beId[ibe],sideId[iside]),type='TProfile',title='Rob Bytestream Errors vs LB{0};Luminosity Block;Fraction of RODs with Errors'.format(regionTag),path='TRT/Shift/Summary',xbins=maxLumiBlockSummary + 1,xmin=-0.5,xmax=maxLumiBlockSummary + 0.5) #CAN_REBIN(m_hRobBSErrorsVsLB[ibe][iside]); # Barrel/Endcap Histograms @@ -101,15 +93,15 @@ for ibe in range(2): rdoGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOHistograms{0}'.format(ibe)) rdoGroup.defineHistogram('BCIDvsOcc_x,BCIDvsOcc_y;hBCIDvsOcc',type='TProfile',title='Avg. Occupancy vs BCID{0};Bunch Crossing ID;Occupancy'.format(regionTag),path='TRT/{0}/Expert'.format(barrelOrEndcap[ibe]),xbins=3564,xmin=0,xmax=3564) if ibe == 0: - rdoGroup.defineHistogram('HitWMap_passed,strawNumber;hHitWMap',type='TEfficiency',title='Leading Edge in Time Window: Xenon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(str(barrelOrEndcap[ibe])),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoGroup.defineHistogram('HitWMap_Ar_passed,strawNumber;hHitWMap_Ar',type='TEfficiency',title='Leading Edge in Time Window: Argon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoGroup.defineHistogram('strawNumber,HitWMap_passed;hHitWMap',cutmask='isNotAr',type='TProfile',title='Leading Edge in Time Window: Xenon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(str(barrelOrEndcap[ibe])),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoGroup.defineHistogram('strawNumber,HitWMap_Ar_passed;hHitWMap_Ar',cutmask='isAr',type='TProfile',title='Leading Edge in Time Window: Argon Straws (Barrel);Straw Number in Stack;Probability',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) rdoGroup.defineHistogram('OccAll;hOccAll',type='TH1F',title='Occupancy per Event;Occupancy;Events',path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=400,xmin=0.0,xmax=1.0) elif ibe == 1: for iside in range(2): side = ('A', 'C') rdoEndcapGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOHistograms1{0}'.format(iside)) - rdoEndcapGroup.defineHistogram('HitWMap_passed,strawNumber;hHitWMap_{0}'.format(side[iside]),type='TEfficiency',title='Leading Edge in Time Window: Xenon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - rdoEndcapGroup.defineHistogram('HitWMap_Ar_passed,strawNumber;hHitWMap_Ar_{0}'.format(side[iside]),type='TEfficiency',title='Leading Edge in Time Window: Argon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoEndcapGroup.defineHistogram('strawNumber,HitWMap_passed;hHitWMap_{0}'.format(side[iside]),cutmask='isNotAr',type='TProfile',title='Leading Edge in Time Window: Xenon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + rdoEndcapGroup.defineHistogram('strawNumber,HitWMap_Ar_passed;hHitWMap_Ar_{0}'.format(side[iside]),cutmask='isAr',type='TProfile',title='Leading Edge in Time Window: Argon Straws (E{0});Straw Number in Stack;Probability'.format(side[iside]),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) for iside in range(2): regionTag = ' (' + beId[ibe] + sideId[iside] + ')' regionMarker = (beId[ibe] + sideId[iside]) if athenaCommonFlags.isOnline is True else (sideId[iside]) @@ -120,22 +112,22 @@ for ibe in range(2): rdoLLHLOccGroup.defineHistogram('AvgHLOccMod_side_x,AvgHLOccMod_side_y;hAvgHLOccMod_{0}'.format(regionMarker),type='TProfile',title='Avg. HL Occupancy: {0}s{1};{2};Occupancy'.format(moduleOrWheel[ibe],regionTag,moduleNumAssign[ibe]),path='TRT/{0}/Expert'.format(barrelOrEndcap[ibe]),xbins=moduleNum[ibe],xmin=0,xmax=moduleNum[ibe]) effGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistograms') -effGroup.defineHistogram('Efficiency_eta_passed,Efficiency_eta;hefficiency_eta',type='TEfficiency',title='Efficiency vs #eta;#eta;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.8,xmax=2.8) -effGroup.defineHistogram('Efficiency_phi_passed,Efficiency_phi;hefficiency_phi',type='TEfficiency',title='Efficiency vs #phi;#phi (deg);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-3.2,xmax=3.2) -effGroup.defineHistogram('Efficiency_pt_passed,Efficiency_pt;hefficiency_pt',type='TEfficiency',title='Efficiency vs pT;pT (GeV);Efficiency',path='TRT/Efficiency',xbins=50,xmin=0,xmax=10) -effGroup.defineHistogram('Efficiency_z0_passed,Efficiency_z0;hefficiency_z0',type='TEfficiency',title='Efficiency vs z0;z0;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-200,xmax=200) -effGroup.defineHistogram('EfficiencyBarrel_locR_passed,EfficiencyBarrel_locR;hEfficiencyBarrel_locR',type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Xenon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) -effGroup.defineHistogram('EfficiencyBarrel_locR_Ar_passed,EfficiencyBarrel_locR_Ar;hEfficiencyBarrel_locR_Ar',type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Argon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) +effGroup.defineHistogram('Efficiency_eta_passed,Efficiency_eta;hefficiency_eta',type='TProfile',title='Efficiency vs #eta;#eta;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.8,xmax=2.8) +effGroup.defineHistogram('Efficiency_phi_passed,Efficiency_phi;hefficiency_phi',type='TProfile',title='Efficiency vs #phi;#phi (deg);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-3.2,xmax=3.2) +effGroup.defineHistogram('Efficiency_pt_passed,Efficiency_pt;hefficiency_pt',type='TProfile',title='Efficiency vs pT;pT (GeV);Efficiency',path='TRT/Efficiency',xbins=50,xmin=0,xmax=10) +effGroup.defineHistogram('Efficiency_z0_passed,Efficiency_z0;hefficiency_z0',type='TProfile',title='Efficiency vs z0;z0;Efficiency',path='TRT/Efficiency',xbins=50,xmin=-200,xmax=200) +effGroup.defineHistogram('EfficiencyBarrel_locR,EfficiencyBarrel_locR_passed;hefficiencyBarrel_locR',type='TProfile',title='Efficiency vs Track-to-Wire Distance for Xenon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) +effGroup.defineHistogram('EfficiencyBarrel_locR_Ar,EfficiencyBarrel_locR_Ar_passed;hefficiencyBarrel_locR_Ar',type='TProfile',title='Efficiency vs Track-to-Wire Distance for Argon Straws (Barrel);Track-to-Wire Distance (mm);Efficiency',path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) effBarrelGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistogramsBarrel') -effBarrelGroup.defineHistogram('EfficiencyBarrelMap_passed,EfficiencyBarrelMap;hEfficiencyBarrelMap',type='TEfficiency',title='Straw Efficiency Map (Barrel);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[0],xmin=0,xmax=strawMax[0]) +effBarrelGroup.defineHistogram('EfficiencyBarrelMap,EfficiencyBarrelMap_passed;hEfficiencyBarrelMap',type='TProfile',title='Straw Efficiency Map (Barrel);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[0],xmin=0,xmax=strawMax[0]) effEndcapGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistogramsEndCap') -effEndcapGroup.defineHistogram('EfficiencyEndCapMap_passed,EfficiencyEndCapMap;hEfficiencyEndCapMap',type='TEfficiency',title='Straw Efficiency Map (Endcap);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[1],xmin=0,xmax=strawMax[1]) +effEndcapGroup.defineHistogram('EfficiencyEndCapMap,EfficiencyEndCapMap_passed;hEfficiencyEndCapMap',type='TProfile',title='Straw Efficiency Map (Endcap);Straw Number;Efficiency',path='TRT/Efficiency',xbins=strawMax[1],xmin=0,xmax=strawMax[1]) for iside in range(2): regionTag = ' (' + beId[1] + sideId[iside] + ')' effTRTEndcapACGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistogramsEndCap{0}'.format(iside)) - effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR_passed,EfficiencyEndCap_locR;hEfficiencyEndCap{0}_locR'.format(sideId[iside]),type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Xenon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) - effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR_Ar_passed,EfficiencyEndCap_locR_Ar;hEfficiencyEndCap{0}_locR_Ar'.format(sideId[iside]),type='TEfficiency',title='Efficiency vs Track-to-Wire Distance for Argon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) + effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR,EfficiencyEndCap_locR_passed;hEfficiencyEndCap{0}_locR'.format(sideId[iside]),type='TProfile',title='Efficiency vs Track-to-Wire Distance for Xenon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) + effTRTEndcapACGroup.defineHistogram('EfficiencyEndCap_locR_Ar,EfficiencyEndCap_locR_Ar_passed;hEfficiencyEndCap{0}_locR_Ar'.format(sideId[iside]),type='TProfile',title='Efficiency vs Track-to-Wire Distance for Argon Straws{0};Track-to-Wire Distance (mm);Efficiency'.format(regionTag),path='TRT/Efficiency',xbins=50,xmin=-2.5,xmax=2.5) for ibe in range(2): for iside in range(2): @@ -148,8 +140,8 @@ for ibe in range(2): elif ibe == 1: oss = 'TRT/Endcap' + str(sideId[iside]) + '/Sector' + str(i + 1 - 32*iside) effStrawChipGroup = helper.addGroup(algTRTMonitoringRun3RAW,'TRTEfficiencyHistograms{0}{1}'.format(ibe,i)) - effStrawChipGroup.defineHistogram('EfficiencyS_passed,EfficiencyS;hHitEfficiencyS',type='TEfficiency',title='Straw Efficiency Map;Straw Number;Efficiency',path=oss,xbins=strawMax[ibe],xmin=0.5,xmax=strawMax[ibe]) - effStrawChipGroup.defineHistogram('EfficiencyC_passed,EfficiencyC;hHitEfficiencyC',type='TEfficiency',title='Chip Efficiency Map;Chip Number;Efficiency', path=oss,xbins=iChipMax[ibe],xmin=0.5,xmax=iChipMax[ibe]) + effStrawChipGroup.defineHistogram('EfficiencyS,EfficiencyS_passed;hHitEfficiencyS',type='TProfile',title='Straw Efficiency Map;Straw Number;Efficiency',path=oss,xbins=strawMax[ibe],xmin=0.5,xmax=strawMax[ibe]) + effStrawChipGroup.defineHistogram('EfficiencyC,EfficiencyC_passed;hHitEfficiencyC',type='TProfile',title='Chip Efficiency Map;Chip Number;Efficiency', path=oss,xbins=iChipMax[ibe],xmin=0.5,xmax=iChipMax[ibe]) ## Finished Booking TRT RDO Histograms ### ### Booking TRT Hits Histograms ### @@ -175,27 +167,26 @@ for ibe in range(2): nBarrelModules = i + 1 - 32 oss = 'TRT/EndcapC/Sector{0}'.format(nBarrelModules) - trackGroup.defineHistogram('HitWonTMapS_passed,HitWonTMapS;hHitWonTMapS',type='TEfficiency',title='Leading Edge on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitAonTMapS_passed,HitAonTMapS;hHitAonTMapS',type='TEfficiency',title='Any LL Bit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('EfficiencyS_passed,EfficiencyS;hEfficiencyS',type='TEfficiency',title='Straw Efficiency with {0} mm Cut;Straw Number in Stack;Efficiency'.format(distance),path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitHonTMapS_passed,HitHonTMapS;hHitHonTMapS',type='TEfficiency',title='HL Hit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitHWonTMapS_passed,HitHWonTMapS;hHitHWonTMapS',type='TEfficiency',title='HL Hit(In Time Window) on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitAWonTMapS_passed,HitAWonTMapS;hHitAWonTMapS',type='TEfficiency',title='Any LL Bit on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HitWonTMapC_passed,HitWonTMapC;hHitWonTMapC',type='TEfficiency',title='Leading Edge on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitTronTMapC_x,HitTronTMapC_y;hHitTronTMapC',type='TProfile',title='Mean Trailing Edge on Track: Chips;Chip Number in Stack;Time (ns)',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitAonTMapC_passed,HitAonTMapC;hHitAonTMapC',type='TEfficiency',title='Any LL Bit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('EfficiencyC_passed,EfficiencyC;hEfficiencyC',type='TEfficiency',title='Chip Efficiency with {0} mm Cut;Chip Number in Stack;Efficiency'.format(distance),path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitAWonTMapC_passed,HitAWonTMapC;hHitAWonTMapC',type='TEfficiency',title='Any LL Bit on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitHonTMapC_passed,HitHonTMapC;hHitHonTMapC',type='TEfficiency',title='HL Hit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HitHWonTMapC_passed,HitHWonTMapC;hHitHWonTMapC',type='TEfficiency',title='HL Hit(In time Window) on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HtoLonTMapS_passed,HtoLonTMapS;hHtoLonTMapS',type='TEfficiency',title='HL/LL Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) - trackGroup.defineHistogram('HtoLWonTMapS_passed,HtoLWonTMapS;hHtoLWonTMapS',type='TEfficiency',title='HL/LL (In Time Window) Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitWonTMapS;unscaled_hHitWonTMapS',type='TH1F',title='Leading Edge on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitAonTMapS;unscaled_hHitAonTMapS',type='TH1F',title='Any LL Bit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitHonTMapS;unscaled_hHitHonTMapS',type='TH1F',title='HL Hit on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitHWonTMapS;unscaled_hHitHWonTMapS',type='TH1F',title='HL Hit(In Time Window) on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HitAWonTMapS;unscaled_hHitAWonTMapS',type='TH1F',title='Any LL Bit on Track in Time Window: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('EfficiencyS,EfficiencyS_passed;hEfficiencyS',type='TProfile',title='Straw Efficiency with {0} mm Cut;Straw Number in Stack;Efficiency'.format(distance),path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('EfficiencyC,EfficiencyC_passed;hEfficiencyC',type='TProfile',title='Chip Efficiency with {0} mm Cut;Chip Number in Stack;Efficiency'.format(distance),path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitWonTMapC;unscaled_hHitWonTMapC',type='TH1F',title='Leading Edge on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitAonTMapC;unscaled_hHitAonTMapC',type='TH1F',title='Any LL Bit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitAWonTMapC;unscaled_hHitAWonTMapC',type='TH1F',title='Any LL Bit on Track in Time Window: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitHonTMapC;unscaled_hHitHonTMapC',type='TH1F',title='HL Hit on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HitHWonTMapC;unscaled_hHitHWonTMapC',type='TH1F',title='HL Hit(In time Window) on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HtoLonTMapS,HtoLonTMapS_passed;hHtoLonTMapS',type='TProfile',title='HL/LL Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) + trackGroup.defineHistogram('HtoLWonTMapS,HtoLWonTMapS_passed;hHtoLWonTMapS',type='TProfile',title='HL/LL (In Time Window) Ratio on Track: Straws;Straw Number in Stack;Probability',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) trackGroup.defineHistogram('HitonTrackVAllS_x,HitonTrackVAllS_y;hHitonTrackVAllS',type='TProfile',title='(Hit on Track) / (Any LL Bit): Straws;Straw Number in Stack;Ratio',path=oss,xbins=strawMax[ibe],xmin=0,xmax=strawMax[ibe]) trackGroup.defineHistogram('HitonTrackVAllC_x,HitonTrackVAllC_y;hHitonTrackVAllC',type='TProfile',title='(Hit on Track) / (Any LL Bit): Chips;Chip Number in Stack;Ratio',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HtoLWonTMapC_passed,HtoLWonTMapC;hHtoLWonTMapC',type='TEfficiency',title='HL/LL(In Time Window) Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - trackGroup.defineHistogram('HtoLonTMapC_passed,HtoLonTMapC;hHtoLonTMapC',type='TEfficiency',title='HL/LL Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) - -for ibe in range(2): + trackGroup.defineHistogram('HtoLWonTMapC,HtoLWonTMapC_passed;hHtoLWonTMapC',type='TProfile',title='HL/LL(In Time Window) Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + trackGroup.defineHistogram('HtoLonTMapC,HtoLonTMapC_passed;hHtoLonTMapC',type='TProfile',title='HL/LL Ratio on Track: Chips;Chip Number in Stack;Probability',path=oss,xbins=iChipMax[ibe],xmin=0,xmax=iChipMax[ibe]) + +for ibe in range(2): if ibe == 0: regionTag = ' (' + barrelOrEndcap[ibe] + ')' shiftTrackGroup = helper.addGroup(algTRTMonitoringRun3RAW,'ShiftTRTTrackHistograms0') @@ -205,7 +196,7 @@ for ibe in range(2): shiftTrackGroup.defineHistogram('HLhitOnTrack_B;hHLhitOnTrack',type='TH1F',title='Number of HL Hits per Reconstructed Track{0};Number of HL Hits per Track;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=50) shiftTrackGroup.defineHistogram('HtoLRatioOnTrack_B;hHtoLRatioOnTrack',type='TH1F',title='HL/LL Ratio per Reconstructed Track for All{0};HL/LL Ratio;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=1) shiftTrackGroup.defineHistogram('HitWonTMap_B;hHitWonTMap',type='TH1F',title='Leading Edge in Time Window per Reconstructed Track{0};Straw Number;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[0],xmin=0,xmax=strawMax[0]) - shiftTrackGroup.defineHistogram('StrawEffDetPhi_B_passed,StrawEffDetPhi_B;hStrawEffDetPhi',type='TEfficiency',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) + shiftTrackGroup.defineHistogram('StrawEffDetPhi_B_passed,StrawEffDetPhi_B;hStrawEffDetPhi',type='TProfile',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) elif ibe == 1: for iside in range(2): regionTag = ' (' + beId[ibe] + sideId[iside] + ')' @@ -216,18 +207,20 @@ for ibe in range(2): shiftTrackEndcapGroup.defineHistogram('HLhitOnTrack_E;hHLhitOnTrack_{0}'.format(sideId[iside]),type='TH1F',title='Number of HL Hits per Reconstructed Track{0};Number of HL Hits per Track;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=50) shiftTrackEndcapGroup.defineHistogram('HtoLRatioOnTrack_E;hHtoLRatioOnTrack_{0}'.format(sideId[iside]),type='TH1F',title='HL/LL Ratio per Reconstructed Track for All{0};HL/LL Ratio;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=50,xmin=0,xmax=1) shiftTrackEndcapGroup.defineHistogram('HitWonTMap_E;hHitWonTMap_{0}'.format(sideId[iside]),type='TH1F',title='Leading Edge in Time Window per Reconstructed Track{0};Straw Number;Entries'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=strawMax[1],xmin=0,xmax=strawMax[1]) - shiftTrackEndcapGroup.defineHistogram('StrawEffDetPhi_E_passed,StrawEffDetPhi_E;hStrawEffDetPhi_{0}'.format(sideId[iside]),type='TEfficiency',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) + shiftTrackEndcapGroup.defineHistogram('StrawEffDetPhi_E_passed,StrawEffDetPhi_E;hStrawEffDetPhi_{0}'.format(sideId[iside]),type='TProfile',title='Straw Efficiency on Track with {0} mm Cut vs #phi(2D){1};Stack;Avg. Straw Efficiency'.format(distance,regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=32,xmin=0,xmax=32) ### Finished Booking TRT Hits Histograms ### for ibe in range(2): + regionTag = ' (' + barrelOrEndcap[ibe] + ')' if ibe == 0: rdoShiftRebinnedBarrelGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftRebinnedBarrelHistograms0') - rdoShiftRebinnedBarrelGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB',type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_B); - rdoShiftRebinnedBarrelGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB',type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_B); + rdoShiftRebinnedBarrelGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB',type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_B); + rdoShiftRebinnedBarrelGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB',type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_B); elif ibe == 1: for iside in range(2): + regionTag = ' (' + beId[ibe] + sideId[iside] + ')' rdoShiftRebinnedEndcapGroup = helper.addGroup(algTRTMonitoringRun3RAW,'RDOShiftRebinnedEndcapHistograms1{0}'.format(iside)) - rdoShiftRebinnedEndcapGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_E[iside]); - rdoShiftRebinnedEndcapGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiblock,xmin=-0.5,xmax=maxLumiblock-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_E[iside]); + rdoShiftRebinnedEndcapGroup.defineHistogram('NHitsperLB_x,NHitsperLB_y;hNHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHitsperLB_E[iside]); + rdoShiftRebinnedEndcapGroup.defineHistogram('NHLHitsperLB_x,NHLHitsperLB_y;hNHLHitsperLB_{0}'.format(sideId[iside]),type='TProfile',title='Avg. HL Occupancy{0};Luminosity Block;Occupancy'.format(regionTag),path='TRT/Shift/{0}'.format(barrelOrEndcap[ibe]),xbins=maxLumiBlockShift,xmin=-0.5,xmax=maxLumiBlockShift-0.5,duration='run') #CAN_REBIN(m_hNHLHitsperLB_E[iside]); topSequence += helper.result() diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3ESD_Alg.cxx b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3ESD_Alg.cxx index 65fdd687bc3..b000d7fb3bd 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3ESD_Alg.cxx +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3ESD_Alg.cxx @@ -24,7 +24,7 @@ #include <sstream> #include <iomanip> -#include <memory> +#include <memory> #include <cmath> using namespace std; @@ -57,9 +57,9 @@ TRTMonitoringRun3ESD_Alg::TRTMonitoringRun3ESD_Alg( const std::string& name, ISv declareProperty("DoTracksMon", m_doTracksMon = true); declareProperty("doStraws", m_doStraws = true); declareProperty("doChips", m_doChips = true); - declareProperty("doExpert", m_doExpert = true); - declareProperty("doShift", m_doShift = true); - declareProperty("DistanceToStraw", m_DistToStraw = 0.4); + declareProperty("doExpert", m_doExpert = false); + declareProperty("doShift", m_doShift = true); + declareProperty("DistanceToStraw", m_DistToStraw = 0.4); declareProperty("min_si_hits", m_min_si_hits = 1); declareProperty("min_pixel_hits", m_min_pixel_hits = 0); declareProperty("min_sct_hits", m_min_sct_hits = 0); @@ -68,17 +68,17 @@ TRTMonitoringRun3ESD_Alg::TRTMonitoringRun3ESD_Alg( const std::string& name, ISv declareProperty("MinTrackP", m_minP = 0.0 * CLHEP::GeV); declareProperty("min_pT", m_min_pT = 0.5 * CLHEP::GeV); } - + TRTMonitoringRun3ESD_Alg::~TRTMonitoringRun3ESD_Alg() {} -StatusCode TRTMonitoringRun3ESD_Alg::initialize() { +StatusCode TRTMonitoringRun3ESD_Alg::initialize() { using namespace Monitored; - + ATH_MSG_VERBOSE("Initializing TRT Monitoring"); // Initialize superclass ATH_CHECK( AthMonitorAlgorithm::initialize() ); - + // Retrieve detector manager ATH_CHECK( detStore()->retrieve(m_mgr, "TRT") ); // Get ID helper for TRT to access various detector components like straw, straw_layer, layer_or_wheel, phi_module, etc. @@ -410,7 +410,7 @@ StatusCode TRTMonitoringRun3ESD_Alg::fillTRTTracks(const xAOD::TrackParticleCont const xAOD::EventInfo& eventInfo) const { //----------------------------------------------------------------------------------// ATH_MSG_VERBOSE("Filling TRT Tracks Histos"); - + // TProfile auto HitToTonTMapS_x = Monitored::Scalar<float>("HitToTonTMapS_x", 0.0); auto HitToTonTMapS_y = Monitored::Scalar<float>("HitToTonTMapS_y", 0.0); @@ -446,8 +446,8 @@ StatusCode TRTMonitoringRun3ESD_Alg::fillTRTTracks(const xAOD::TrackParticleCont auto EvtPhaseDetPhi_E_y = Monitored::Scalar<float>("EvtPhaseDetPhi_E_y", 0.0); auto NTrksperLB_x = Monitored::Scalar<float>("NTrksperLB_x", 0.0); auto NTrksperLB_y = Monitored::Scalar<float>("NTrksperLB_y", 0.0); - - + + // TH1F auto DriftTimeonTrkDist_B = Monitored::Scalar<float>("DriftTimeonTrkDist_B", 0.0); auto DriftTimeonTrkDist_B_Ar = Monitored::Scalar<float>("DriftTimeonTrkDist_B_Ar", 0.0); @@ -465,6 +465,14 @@ StatusCode TRTMonitoringRun3ESD_Alg::fillTRTTracks(const xAOD::TrackParticleCont auto Residual_E_Ar = Monitored::Scalar<float>("Residual_E_Ar", 0.0); auto Residual_E_20GeV = Monitored::Scalar<float>("Residual_E_20GeV", 0.0); auto Residual_E_Ar_20GeV = Monitored::Scalar<float>("Residual_E_Ar_20GeV", 0.0); + auto Residual_noTubeHits_B = Monitored::Scalar<float>("Residual_noTubeHits_B", 0.0); + auto Residual_noTubeHits_B_Ar = Monitored::Scalar<float>("Residual_noTubeHits_B_Ar", 0.0); + auto Residual_noTubeHits_B_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_B_20GeV", 0.0); + auto Residual_noTubeHits_B_Ar_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_B_Ar_20GeV", 0.0); + auto Residual_noTubeHits_E = Monitored::Scalar<float>("Residual_noTubeHits_E", 0.0); + auto Residual_noTubeHits_E_Ar = Monitored::Scalar<float>("Residual_noTubeHits_E_Ar", 0.0); + auto Residual_noTubeHits_E_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_E_20GeV", 0.0); + auto Residual_noTubeHits_E_Ar_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_E_Ar_20GeV", 0.0); auto TimeResidual_B = Monitored::Scalar<float>("TimeResidual_B", 0.0); auto TimeResidual_B_Ar = Monitored::Scalar<float>("TimeResidual_B_Ar", 0.0); auto TimeResidual_E = Monitored::Scalar<float>("TimeResidual_E", 0.0); @@ -496,7 +504,7 @@ StatusCode TRTMonitoringRun3ESD_Alg::fillTRTTracks(const xAOD::TrackParticleCont auto RtRelation_E_y = Monitored::Scalar<float>("RtRelation_E_y", 0.0); auto EvtPhaseVsTrig_x = Monitored::Scalar<float>("EvtPhaseVsTrig_x", 0.0); auto EvtPhaseVsTrig_y = Monitored::Scalar<float>("EvtPhaseVsTrig_y", 0.0); - + // Initialize a bunch of stuff before looping over the track collection. Fill some basic histograms. const float timeCor = comTimeObject ? comTimeObject->getTime() : 0; @@ -555,7 +563,7 @@ for (; p_trk != trackCollection.end(); ++p_trk) { DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBegin = trackStates->begin(); DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBeginTemp = trackStates->begin(); DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItEnd = trackStates->end(); - + (*p_trk)->summaryValue(tempHitsVariable, xAOD::SummaryType::numberOfTRTHits); int n_trt_hits = unsigned(tempHitsVariable); (*p_trk)->summaryValue(tempHitsVariable, xAOD::SummaryType::numberOfSCTHits); @@ -670,7 +678,7 @@ for (; p_trk != trackCollection.end(); ++p_trk) { for (int i = 0; i < 2; i++) { std::fill(trackfound[i], trackfound[i] + 64, false); } - + for (TSOSItBegin = TSOSItBegin0; TSOSItBegin != TSOSItEnd; ++TSOSItBegin) { // Select a TSOS which is non-empty, measurement type and contains both drift circle and track parameters informations if ((*TSOSItBegin) == 0) continue; @@ -718,12 +726,12 @@ for (; p_trk != trackCollection.end(); ++p_trk) { nTracksB[iside]++; checkB[iside] = 1; } - + if (checkEC[iside] == 0 && ibe == 1) { nTracksEC[iside]++; checkEC[iside] = 1; } - + if (checkEC_B[iside] == 0 && checkB[iside] == 1 && ibe == 1 ) { nTracksEC_B[iside]++; checkEC_B[iside] = 1; @@ -757,7 +765,7 @@ for (; p_trk != trackCollection.end(); ++p_trk) { hitontrack_E_side[iside]++; } } - } + } const InDet::TRT_DriftCircle *RawDriftCircle = dynamic_cast<const InDet::TRT_DriftCircle *>(trtCircle->prepRawData()); bool isTubeHit = (mesb->localCovariance()(Trk::locX, Trk::locX) > 1.0) ? 1 : 0; if (RawDriftCircle) { @@ -765,6 +773,12 @@ for (; p_trk != trackCollection.end(); ++p_trk) { float timeOverThreshold = RawDriftCircle->timeOverThreshold(); double t0 = m_TRTCalDbTool->getT0(DCoTId, TRTCond::ExpandedIdentifier::STRAW); + if (m_doExpert && m_doStraws) { + HitToTonTMapS_x = thisStrawNumber[ibe]; + HitToTonTMapS_y = timeOverThreshold; + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitToTonTMapS_x, HitToTonTMapS_y); + } + if (m_doExpert && m_doChips) { HitToTonTMapC_x = chip[ibe] - 1; HitToTonTMapC_y = timeOverThreshold; @@ -856,10 +870,14 @@ for (; p_trk != trackCollection.end(); ++p_trk) { if (isArgonStraw) { Residual_B_Ar = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B_Ar); + Residual_noTubeHits_B_Ar = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B_Ar); if (cnst_is_pT_over_20GeV) { Residual_B_Ar_20GeV = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B_Ar_20GeV); + Residual_noTubeHits_B_Ar_20GeV = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B_Ar_20GeV); } TimeResidual_B_Ar = timeresidual; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TimeResidual_B_Ar); @@ -868,6 +886,8 @@ for (; p_trk != trackCollection.end(); ++p_trk) { } else { Residual_B = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B); + Residual_noTubeHits_B = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B); TimeResidual_B = timeresidual; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TimeResidual_B); TimeResidual_noTubeHits_B = timeresidual; @@ -876,6 +896,8 @@ for (; p_trk != trackCollection.end(); ++p_trk) { if (cnst_is_pT_over_20GeV) { Residual_B_20GeV = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B_20GeV); + Residual_noTubeHits_B_20GeV = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B_20GeV); } } } else if (ibe == 1) { @@ -889,6 +911,8 @@ for (; p_trk != trackCollection.end(); ++p_trk) { if (isArgonStraw) { Residual_E_Ar = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E_Ar); + Residual_noTubeHits_E_Ar = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E_Ar); TimeResidual_E_Ar = timeresidual; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TimeResidual_E_Ar); TimeResidual_noTubeHits_E_Ar = timeresidual; @@ -897,10 +921,14 @@ for (; p_trk != trackCollection.end(); ++p_trk) { if (cnst_is_pT_over_20GeV) { Residual_E_Ar_20GeV = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E_Ar_20GeV); + Residual_noTubeHits_E_Ar_20GeV = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E_Ar_20GeV); } } else { Residual_E = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E); + Residual_noTubeHits_E = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E); TimeResidual_E = timeresidual; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TimeResidual_E); TimeResidual_noTubeHits_E = timeresidual; @@ -909,6 +937,8 @@ for (; p_trk != trackCollection.end(); ++p_trk) { if (cnst_is_pT_over_20GeV) { Residual_E_20GeV = loc - locR; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E_20GeV); + Residual_noTubeHits_E_20GeV = loc - locR; + if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E_20GeV); } } } @@ -1001,25 +1031,25 @@ for (; p_trk != trackCollection.end(); ++p_trk) { HitTronTMapS_y = trailingEdgeScaled; fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTMapS_x, HitTronTMapS_y); } - + if (m_doExpert && m_doChips) { HitTronTMapC_x = chip[ibe] - 1; HitTronTMapC_y = trailingEdgeScaled; fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTMapC_x, HitTronTMapC_y); } - + if (m_doExpert && m_doStraws) { HitTronTwEPCMapS_x = thisStrawNumber[ibe]; HitTronTwEPCMapS_y = trailingEdgeScaled - timeCor; fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTwEPCMapS_x, HitTronTwEPCMapS_y); } - + if (m_doExpert && m_doChips) { HitTronTwEPCMapC_x = chip[ibe] - 1; HitTronTwEPCMapC_y = trailingEdgeScaled - timeCor; fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTwEPCMapC_x, HitTronTwEPCMapC_y); } - + if (m_doShift && m_doStraws) { if (RawDriftCircle->driftTimeValid()) { if (ibe == 0) { @@ -1030,8 +1060,8 @@ for (; p_trk != trackCollection.end(); ++p_trk) { AvgTroTDetPhi_B_Ar_y = trailingEdgeScaled; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), AvgTroTDetPhi_B_Ar_x, AvgTroTDetPhi_B_Ar_y); } else { - TronTDist_B_Ar = trailingEdgeScaled; - fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TronTDist_B_Ar); + TronTDist_B = trailingEdgeScaled; + fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TronTDist_B); AvgTroTDetPhi_B_x = phi2D[ibe]; AvgTroTDetPhi_B_y = trailingEdgeScaled; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), AvgTroTDetPhi_B_x, AvgTroTDetPhi_B_y); @@ -1172,7 +1202,7 @@ for (; p_trk != trackCollection.end(); ++p_trk) { Summary = 0; SummaryWeight = 1.; fill("SmryHistograms", SummaryWeight, Summary); - + if (m_doTracksMon) { Summary = 1; SummaryWeight = nTotalTracks; @@ -1197,37 +1227,37 @@ for (; p_trk != trackCollection.end(); ++p_trk) { fill("SmryHistograms", SummaryWeight, Summary); } } - + if (m_doShift) { const unsigned int lumiBlock = eventInfo.lumiBlock(); ATH_MSG_VERBOSE("This is lumiblock : " << lumiBlock); - int lastLumiBlock = -99; + int lastLumiBlock = -99; // ToDo - last lumiblock calculation is not correct if ((int)lumiBlock != lastLumiBlock) { lastLumiBlock = lumiBlock; } float evtLumiBlock = 1.; float lumiBlockScale = (evtLumiBlock > 0) ? (1. / evtLumiBlock) : 0; - + if (m_doTracksMon && evtLumiBlock > 0) { NTrksperLB_x = lastLumiBlock; NTrksperLB_y = (float)nTrksperLB_B * lumiBlockScale; fill("ShiftTRTTrackHistograms0", NTrksperLB_x, NTrksperLB_y); - + for (int iside = 0; iside < 2; iside++) { NTrksperLB_x = lastLumiBlock; NTrksperLB_y = (float)nTrksperLB_E[iside] * lumiBlockScale; fill("ShiftTRTTrackHistograms1"+std::to_string(iside), NTrksperLB_x, NTrksperLB_y); } - + nTrksperLB_B = 0; - + for (int iside = 0; iside < 2; iside++) { nTrksperLB_E[iside] = 0; } } } - + ATH_MSG_DEBUG("end of event and lumi block"); //number of events in lumiblock counter setted to zero since it is end of the run or the lumiblock } @@ -1235,26 +1265,56 @@ for (; p_trk != trackCollection.end(); ++p_trk) { return StatusCode::SUCCESS; } - //----------------------------------------------------------------------------------// StatusCode TRTMonitoringRun3ESD_Alg::fillTRTHighThreshold(const xAOD::TrackParticleContainer& trackCollection, - const xAOD::EventInfo& eventInfo) const { + const xAOD::EventInfo& eventInfo, const EventContext& ctx) const { //----------------------------------------------------------------------------------// + int maxtimestamp = 0.; // ToDo - this should be outside the function, + // but such thing is restricted by the MT-safe paradigm + + auto IntLum = Monitored::Scalar<float>("IntLum", 0.0); + auto LBvsLum = Monitored::Scalar<float>("LBvsLum", 0.0); + auto LBvsTime = Monitored::Scalar<float>("LBvsTime", 0.0); + auto IntLumWeight = Monitored::Scalar<float>("IntLumWeight", 0.0); + auto LBvsLumWeight = Monitored::Scalar<float>("LBvsLumWeight", 0.0); + auto LBvsTimeWeight = Monitored::Scalar<float>("LBvsTimeWeight", 0.0); + + int lumiBlockNumber; + int timeStamp; + lumiBlockNumber = eventInfo.lumiBlock(); + timeStamp = eventInfo.timeStamp(); + + if (timeStamp > maxtimestamp) { + maxtimestamp = timeStamp; + } + + int runNumber; + runNumber = eventInfo.runNumber(); + // get Online Luminosity + double intLum = (lbDuration(ctx) * lbAverageLuminosity(ctx)); + double timeStampAverage = (maxtimestamp - 0.5*lbDuration(ctx)); + IntLum = 0.5; + IntLumWeight = intLum; + fill("SmryHistograms", IntLumWeight, IntLum); + LBvsLum = lumiBlockNumber; + LBvsLumWeight = intLum; + fill("SmryHistograms", LBvsLumWeight, LBvsLum); + LBvsTime = lumiBlockNumber; + LBvsTimeWeight = timeStampAverage; + fill("SmryHistograms", LBvsTimeWeight, LBvsTime); + ATH_MSG_VERBOSE("Filling TRT Aging Histos"); - + auto Trackr_HT = Monitored::Scalar<float>("Trackr_HT", 0.0); auto Trackr_All = Monitored::Scalar<float>("Trackr_All", 0.0); auto Trackz_HT = Monitored::Scalar<float>("Trackz_HT", 0.0); auto Trackz_All = Monitored::Scalar<float>("Trackz_All", 0.0); - + auto p_trk = trackCollection.begin(); const Trk::Perigee *perigee = NULL; const DataVector<const Trk::TrackParameters> *AllTrkPar(0); DataVector<const Trk::TrackParameters>::const_iterator p_trkpariter; - int runNumber; - runNumber = eventInfo.runNumber(); - for (; p_trk != trackCollection.end(); ++p_trk) { AllTrkPar = ((*p_trk)->track())->trackParameters(); @@ -1493,9 +1553,9 @@ StatusCode TRTMonitoringRun3ESD_Alg::fillHistograms( const EventContext& ctx ) c } if (passEventBurst) { // ESD files does not have an RDO container to pass event burst, what to do? - ATH_CHECK( fillTRTHighThreshold(*trackCollection, *xAODEventInfo) ); + ATH_CHECK( fillTRTHighThreshold(*trackCollection, *xAODEventInfo, ctx) ); } - + return StatusCode::SUCCESS; diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3RAW_Alg.cxx b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3RAW_Alg.cxx index 1117b1e064a..5f0bb2e2535 100644 --- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3RAW_Alg.cxx +++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3RAW_Alg.cxx @@ -33,14 +33,15 @@ for (int i = 1; i <= NBINS; i++) \ #include <sstream> #include <iomanip> -#include <memory> +#include <memory> #include <cmath> using namespace std; //Private Static Const data member initialization -const int TRTMonitoringRun3RAW_Alg::s_numberOfBarrelStacks = 32; -const int TRTMonitoringRun3RAW_Alg::s_numberOfEndCapStacks = 32; -const int TRTMonitoringRun3RAW_Alg::s_Straw_max[2] = {1642, 3840}; +constexpr int TRTMonitoringRun3RAW_Alg::s_numberOfBarrelStacks = 32; +constexpr int TRTMonitoringRun3RAW_Alg::s_numberOfEndCapStacks = 32; +constexpr int TRTMonitoringRun3RAW_Alg::s_Straw_max[2] = {1642, 3840}; +constexpr int TRTMonitoringRun3RAW_Alg::s_iChip_max[2] = {104, 240}; TRTMonitoringRun3RAW_Alg::TRTMonitoringRun3RAW_Alg( const std::string& name, ISvcLocator* pSvcLocator ) :AthMonitorAlgorithm(name,pSvcLocator) @@ -62,7 +63,8 @@ TRTMonitoringRun3RAW_Alg::TRTMonitoringRun3RAW_Alg( const std::string& name, ISv declareProperty("doMaskStraws", m_doMaskStraws = true); declareProperty("useHoleFinder", m_useHoleFinder = true); declareProperty("DoHitsMon", m_doHitsMon = true); - declareProperty("DistanceToStraw", m_DistToStraw = 0.4); + declareProperty("DistanceToStraw", m_DistToStraw = 0.4); + declareProperty("totalEvents", m_usedEvents = -1); declareProperty("min_si_hits", m_min_si_hits = 1); declareProperty("min_pixel_hits", m_min_pixel_hits = 0); declareProperty("min_sct_hits", m_min_sct_hits = 0); @@ -75,24 +77,23 @@ TRTMonitoringRun3RAW_Alg::TRTMonitoringRun3RAW_Alg( const std::string& name, ISv declareProperty("MinTrackP", m_minP = 0.0 * CLHEP::GeV); declareProperty("min_pT", m_min_pT = 0.5 * CLHEP::GeV); } - - + TRTMonitoringRun3RAW_Alg::~TRTMonitoringRun3RAW_Alg() {} StatusCode TRTMonitoringRun3RAW_Alg::initialize() { using namespace Monitored; - + ATH_MSG_VERBOSE("Initializing TRT Monitoring"); // initialize superclass ATH_CHECK( AthMonitorAlgorithm::initialize() ); - + // Retrieve detector manager. ATH_CHECK( detStore()->retrieve(m_mgr, "TRT") ); // Get ID helper for TRT to access various detector components like straw, straw_layer, layer_or_wheel, phi_module, etc... ATH_CHECK( detStore()->retrieve(m_pTRTHelper, "TRT_ID") ); ATH_CHECK( detStore()->retrieve(m_idHelper, "AtlasID") ); - + if (m_doExpert) { // Retrieve the TRT_Straw Status Service. if (m_sumTool.name().empty()) { @@ -107,13 +108,13 @@ StatusCode TRTMonitoringRun3RAW_Alg::initialize() { ATH_MSG_VERBOSE("Trying " << m_sumTool << " isGood"); ATH_MSG_VERBOSE("TRT_StrawStatusTool reports status = " << m_sumTool->getStatus(ident)); } - + // Retrieve the TRT_ByteStreamService. - if (m_BSSvc.name().empty()) { - ATH_MSG_WARNING("TRT_ByteStreamSvc not given."); - } else { - ATH_CHECK( m_BSSvc.retrieve() ); - } + if (m_BSSvc.name().empty()) { + ATH_MSG_WARNING("TRT_ByteStreamSvc not given."); + } else { + ATH_CHECK( m_BSSvc.retrieve() ); + } }//If do expert // Get Track summary tool @@ -123,12 +124,12 @@ StatusCode TRTMonitoringRun3RAW_Alg::initialize() { ATH_MSG_DEBUG("Retrieved succesfully the track summary tool" << m_TrackSummaryTool); // Retrieve TRTTrackHoleSearchTool - if (m_doEfficiency || m_doExpert) { - ATH_CHECK( m_trt_hole_finder.retrieve() ); - } - else { - m_trt_hole_finder.disable(); - } + if (m_doEfficiency || m_doExpert) { + ATH_CHECK( m_trt_hole_finder.retrieve() ); + } + else { + m_trt_hole_finder.disable(); + } // Initialization of VarHandleKeys ATH_CHECK( m_rdoContainerKey.initialize() ); @@ -215,16 +216,83 @@ StatusCode TRTMonitoringRun3RAW_Alg::initialize() { return StatusCode::SUCCESS; } +//----------------------------------------------------------------------------------// +std::vector<std::vector<std::vector<int>>> TRTMonitoringRun3RAW_Alg::initScaleVectors() const { +//----------------------------------------------------------------------------------// +// if (m_flagforscale == 0 ) return 0; + std::vector<std::vector<std::vector<int>>> scale_hHitWMap; + std::vector<std::vector<int>> scale_hHitWMap_B, scale_hHitWMap_EA, scale_hHitWMap_EC; + std::vector<int> scale_B_Xe, scale_B_Ar, scale_EA_Xe, scale_EA_Ar, scale_EC_Xe, scale_EC_Ar; + + scale_hHitWMap.clear(); + scale_hHitWMap_B.clear(); + scale_hHitWMap_EA.clear(); + scale_hHitWMap_EC.clear(); + scale_B_Xe.clear(); + scale_B_Ar.clear(); + scale_EA_Xe.clear(); + scale_EA_Ar.clear(); + scale_EC_Xe.clear(); + scale_EC_Ar.clear(); + + for (int i = 0; i < s_Straw_max[0]; i++) { + float countAr = 0; + float countXe = 0; + int sN, sLN, lN; + strawNumber_reverse(i, &sN, &sLN, &lN); + + for (int side = -1 ; side < 2; side += 2 ) { + for (int j = 0; j < 32; j++ ) { + Identifier Dummy_Identifier; + Dummy_Identifier = m_pTRTHelper->straw_id(side, j, lN, sLN, sN); + bool isArgonStraw = (Straw_Gastype( m_sumTool->getStatusHT(Dummy_Identifier) ) == GasType::Ar); + + if (isArgonStraw) + countAr += 1.0; + else + countXe += 1.0; + } + } + scale_B_Xe.push_back(countXe); + scale_B_Ar.push_back(countAr); + } + + for (int i = 0; i < s_Straw_max[1]; i++) { + scale_EA_Xe.push_back(32); + scale_EA_Ar.push_back(32); + scale_EC_Xe.push_back(32); + scale_EC_Ar.push_back(32); + } + + scale_hHitWMap_B.push_back(scale_B_Xe); + scale_hHitWMap_B.push_back(scale_B_Ar); + scale_hHitWMap_EA.push_back(scale_EA_Xe); + scale_hHitWMap_EA.push_back(scale_EA_Ar); + scale_hHitWMap_EC.push_back(scale_EC_Xe); + scale_hHitWMap_EC.push_back(scale_EC_Ar); + scale_hHitWMap.push_back(scale_hHitWMap_B); + scale_hHitWMap.push_back(scale_hHitWMap_EA); + scale_hHitWMap.push_back(scale_hHitWMap_EC); + +// m_flagforscale = 0; + return scale_hHitWMap; +} + //-------------------------------------------------------------------------------------------------// StatusCode TRTMonitoringRun3RAW_Alg::checkTRTReadoutIntegrity(const xAOD::EventInfo& eventInfo) const { //-------------------------------------------------------------------------------------------------// StatusCode sc = StatusCode::SUCCESS; + auto ChipBSErrorsVsLB_x = Monitored::Scalar<float>("ChipBSErrorsVsLB_x", 0.0); + auto ChipBSErrorsVsLB_y = Monitored::Scalar<float>("ChipBSErrorsVsLB_y", 0.0); + auto RobBSErrorsVsLB_x = Monitored::Scalar<float>("RobBSErrorsVsLB_x", 0.0); + auto RobBSErrorsVsLB_y = Monitored::Scalar<float>("RobBSErrorsVsLB_y", 0.0); + const TRT_BSErrContainer emptyErrCont;//Empty dummy instance for MC const TRT_BSErrContainer* bsErrCont=&emptyErrCont; - - if (!m_bsErrContKey.empty()) { + + if (!m_bsErrContKey.empty()) { //Regular real-data case, get the byte-stream errors from SG SG::ReadHandle<TRT_BSErrContainer> bsErrContHdl{m_bsErrContKey}; bsErrCont=bsErrContHdl.cptr(); @@ -236,9 +304,9 @@ StatusCode TRTMonitoringRun3RAW_Alg::checkTRTReadoutIntegrity(const xAOD::EventI const unsigned int lumiBlock = eventInfo.lumiBlock(); ATH_MSG_VERBOSE("This is lumiblock : " << lumiBlock); -// if ((int)lumiBlock != m_lastLumiBlock) { -// m_lastLumiBlock = lumiBlock; -// } + //if ((int)lumiBlock != m_lastLumiBlock) { + // m_lastLumiBlock = lumiBlock; + //} //Get BSConversion errors const std::set<std::pair<uint32_t, uint32_t> > &L1IDErrorSet = bsErrCont->getL1ErrorSet(); @@ -283,8 +351,10 @@ StatusCode TRTMonitoringRun3RAW_Alg::checkTRTReadoutIntegrity(const xAOD::EventI for (int ibe = 0; ibe < 2; ++ibe) { for (int iside = 0; iside < 2; ++iside) { -// m_hChipBSErrorsVsLB[ibe][iside]->Fill(lumiBlock, nBSErrors[ibe][iside]); -// m_hChipBSErrorsVsLB[ibe][iside]->SetEntries(lumiBlock); // we need this so the LastBinThreshold algorithm can find the last bin + ChipBSErrorsVsLB_x = lumiBlock; + ChipBSErrorsVsLB_y = nBSErrors[ibe][iside]; + for (unsigned int i = 0; i < lumiBlock; i++) // we need this so the LastBinThreshold algorithm can find the last bin + fill("RDOShiftSmryRebinnedHistograms"+std::to_string(ibe)+std::to_string(iside), ChipBSErrorsVsLB_x, ChipBSErrorsVsLB_y); } } @@ -300,8 +370,10 @@ StatusCode TRTMonitoringRun3RAW_Alg::checkTRTReadoutIntegrity(const xAOD::EventI for (int ibe = 0; ibe < 2; ++ibe) { for (int iside = 0; iside < 2; ++iside) { -// m_hRobBSErrorsVsLB[ibe][iside]->Fill(lumiBlock, nRobErrors[ibe][iside]); -// m_hRobBSErrorsVsLB[ibe][iside]->SetEntries(lumiBlock); // we need this so the LastBinThreshold algorithm can find the last bin + RobBSErrorsVsLB_x = lumiBlock; + RobBSErrorsVsLB_y = nRobErrors[ibe][iside]; + for (unsigned int i = 0; i < lumiBlock; i++) // we need this so the LastBinThreshold algorithm can find the last bin + fill("RDOShiftSmryRebinnedHistograms"+std::to_string(ibe)+std::to_string(iside), RobBSErrorsVsLB_x, RobBSErrorsVsLB_y); } } @@ -431,6 +503,45 @@ int TRTMonitoringRun3RAW_Alg::strawNumber(int strawNumber, int strawlayerNumber, return strawNumber; } +//----------------------------------------------------------------------------------// +int TRTMonitoringRun3RAW_Alg::strawNumber_reverse (int inp_strawnumber, int *strawNumber, int *strawlayerNumber, int *LayerNumber) const { +//----------------------------------------------------------------------------------// + const int numberOfStraws[75] = { + 0, + 15, + 16, 16, 16, 16, + 17, 17, 17, 17, 17, + 18, 18, 18, 18, 18, + 19, 19, 19, + 18, + 19, + 20, 20, 20, 20, 20, + 21, 21, 21, 21, 21, + 22, 22, 22, 22, 22, + 23, 23, 23, 23, 23, + 24, 24, + 23, 23, + 24, 24, 24, 24, + 25, 25, 25, 25, 25, + 26, 26, 26, 26, 26, + 27, 27, 27, 27, 27, + 28, 28, 28, 28, 28, + 29, 29, 29, 29, + 28, + 0 + }; + //ToDo check inp_strawnumber + int i = 1; + + for (i = 1; inp_strawnumber >= 0; i++) { + inp_strawnumber -= numberOfStraws[i]; + } + + i -= 2; + strawLayerNumber_reverse(i, strawlayerNumber, LayerNumber); + *strawNumber = -inp_strawnumber - 1; + return 0; +} //----------------------------------------------------------------------------------// int TRTMonitoringRun3RAW_Alg::strawNumberEndCap(int strawNumber, int strawLayerNumber, int LayerNumber, int phi_stack, int side) const { @@ -529,24 +640,37 @@ int TRTMonitoringRun3RAW_Alg::strawLayerNumber(int strawLayerNumber, int LayerNu } } +//----------------------------------------------------------------------------------// +int TRTMonitoringRun3RAW_Alg::strawLayerNumber_reverse(int strawLayerNumInp, int *strawLayerNumber, int *LayerNumber) const { +//----------------------------------------------------------------------------------// + //Danger? There are no checks on input + //use with care + if (strawLayerNumInp < 19) { + *strawLayerNumber = strawLayerNumInp; + *LayerNumber = 0; + } else if (strawLayerNumInp < 43) { + *strawLayerNumber = strawLayerNumInp - 19; + *LayerNumber = 1; + } else { + *strawLayerNumber = strawLayerNumInp - 43; + *LayerNumber = 2; + } + + return 0; +} //----------------------------------------------------------------------------------// float TRTMonitoringRun3RAW_Alg::radToDegrees(float radValue) const{ //----------------------------------------------------------------------------------// - float degreeValue = radValue / M_PI * 180; + float degreeValue = radValue / M_PI * 180; - if (degreeValue < 0) degreeValue += 360; + if (degreeValue < 0) degreeValue += 360; - return degreeValue; + return degreeValue; } struct straw_struct { int strawNumber; - bool HitWMapS_passed; - bool HitAWMapS_passed; - bool HitAMapS_passed; - bool HitHMapS_passed; - bool HitHWMapS_passed; float HitTrMapS_y; float HitToTMapS_y; bool HitToTLong_cut; @@ -554,18 +678,8 @@ struct straw_struct { float HitTrWMapS_y; }; -struct straw_norm_struct { - int strawNumber; - bool HitAMapS_passed; -}; - struct chip_struct { int chipNumber; - bool HitWMapC_passed; - bool HitAWMapC_passed; - bool HitAMapC_passed; - bool HitHMapC_passed; - bool HitHWMapC_passed; float HitTrMapC_y; bool HitTrWMapC_cut; float HitToTMapC_y; @@ -575,10 +689,39 @@ struct chip_struct { bool HtoBCMap_cut; }; +struct straw_struct_prob { + int strawNumber; + bool HitHWMapS_cut; + float HitHWMapS_passed; + bool HitWMapS_cut; + float HitWMapS_passed; + bool HitAMapS_cut; + float HitAMapS_passed; + bool HitAWMapS_cut; + float HitAWMapS_passed; + bool HitHMapS_cut; + float HitHMapS_passed; +}; + +struct chip_struct_prob { + int chipNumber; + bool HitHWMapC_cut; + float HitHWMapC_passed; + bool HitWMapC_cut; + float HitWMapC_passed; + bool HitAMapC_cut; + float HitAMapC_passed; + bool HitAWMapC_cut; + float HitAWMapC_passed; + bool HitHMapC_cut; + float HitHMapC_passed; +}; + struct straw_shifter_struct { int strawNumber; bool isAr; - bool HitWMap_passed; + float HitWMap_passed; + float HitWMap_Ar_passed; }; //Fill the TRT RDO Histograms @@ -615,40 +758,23 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon // TH1F auto OccAll = Monitored::Scalar<float>("OccAll", 0.0); - + // TH2F - + // TEfficiency auto HtoLMapS = Monitored::Scalar<float>("HtoLMapS", 0.0); auto HtoLMapS_passed = Monitored::Scalar<bool>("HtoLMapS_passed", false); - auto HitWMap_A = Monitored::Scalar<float>("HitWMap_A", 0.0); - auto HitWMap_A_passed = Monitored::Scalar<bool>("HitWMap_A_passed", false); - auto HitWMap_C = Monitored::Scalar<float>("HitWMap_C", 0.0); - auto HitWMap_C_passed = Monitored::Scalar<bool>("HitWMap_C_passed", false); - auto HitWMap_Ar_A = Monitored::Scalar<float>("HitWMap_Ar_A", 0.0); - auto HitWMap_Ar_A_passed = Monitored::Scalar<bool>("HitWMap_Ar_A_passed", false); - auto HitWMap_Ar_C = Monitored::Scalar<float>("HitWMap_Ar_C", 0.0); - auto HitWMap_Ar_C_passed = Monitored::Scalar<bool>("HitWMap_Ar_C_passed", false); auto HtoLMapC = Monitored::Scalar<float>("HtoLMapC", 0.0); auto HtoLMapC_passed = Monitored::Scalar<bool>("HtoLMapC_passed", false); auto OccupancyC = Monitored::Scalar<float>("OccupancyC", 0.0); auto OccupancyC_passed = Monitored::Scalar<bool>("OccupancyC_passed", false); - auto IntLum = Monitored::Scalar<float>("IntLum", 0.0); - auto IntLum_passed = Monitored::Scalar<bool>("IntLum_passed_passed", false); - auto LBvsLum = Monitored::Scalar<float>("LBvsLum", 0.0); - auto LBvsLum_passed = Monitored::Scalar<bool>("LBvsLum_passed", false); - auto LBvsTime = Monitored::Scalar<float>("LBvsTime", 0.0); - auto LBvsTime_passed = Monitored::Scalar<bool>("LBvsTime_passed", false); auto StrawOcc = Monitored::Scalar<float>("StrawOcc", 0.0); auto StrawOcc_passed = Monitored::Scalar<bool>("StrawOcc_passed", false); - - auto strawnumber = Monitored::Scalar<int>("strawNumber", 0.0); - auto HitAMapS_passed = Monitored::Scalar<bool>("HitAMapS_passed", false); - + const unsigned int lumiBlock = eventInfo.lumiBlock(); ATH_MSG_VERBOSE("This is lumiblock : " << lumiBlock); auto good_bcid = eventInfo.bcid(); - + TRT_RDO_Container::const_iterator RDO_CollectionBegin = rdoContainer.begin(); TRT_RDO_Container::const_iterator RDO_CollectionEnd = rdoContainer.end(); //Check readout Integrity of TRT @@ -672,7 +798,7 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon int nHLHitsperLB_B = 0; int nHitsperLB_E[2] = {0, 0}; int nHLHitsperLB_E[2] = {0, 0}; - + for (int i = 0; i < 192; i++) { moduleHits_B[i] = 0; HLmoduleHits_B[i] = 0; @@ -683,6 +809,79 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon HLmoduleHits_E[i] = 0; } + short int scale_hHitWMap_B_passed[2][s_Straw_max[0]]; + short int scale_hHitWMap_E_passed[2][2][s_Straw_max[1]]; + + for (int i = 0; i < 2; i++) { + for (int j = 0; j < s_Straw_max[0]; j++) { + scale_hHitWMap_B_passed[i][j] = 0; + } + } + + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + for (int k = 0; k < s_Straw_max[1]; k++) { + scale_hHitWMap_E_passed[i][j][k] = 0; + } + } + } + + short int scale_hHitHWMapS_B_passed[s_numberOfBarrelStacks*2][s_Straw_max[0]]; + short int scale_hHitHWMapC_B_passed[s_numberOfBarrelStacks*2][s_iChip_max[0]]; + short int scale_hHitWMapS_B_passed[s_numberOfBarrelStacks*2][s_Straw_max[0]]; + short int scale_hHitWMapC_B_passed[s_numberOfBarrelStacks*2][s_iChip_max[0]]; + short int scale_hHitAMapS_B_passed[s_numberOfBarrelStacks*2][s_Straw_max[0]]; + short int scale_hHitAMapC_B_passed[s_numberOfBarrelStacks*2][s_iChip_max[0]]; + short int scale_hHitAWMapS_B_passed[s_numberOfBarrelStacks*2][s_Straw_max[0]]; + short int scale_hHitAWMapC_B_passed[s_numberOfBarrelStacks*2][s_iChip_max[0]]; + short int scale_hHitHMapS_B_passed[s_numberOfBarrelStacks*2][s_Straw_max[0]]; + short int scale_hHitHMapC_B_passed[s_numberOfBarrelStacks*2][s_iChip_max[0]]; + + for (int i = 0; i < s_numberOfBarrelStacks*2; i++) { + for (int j = 0; j < s_iChip_max[0]; j++) { + scale_hHitHWMapC_B_passed[i][j] = 0; + scale_hHitWMapC_B_passed[i][j] = 0; + scale_hHitAMapC_B_passed[i][j] = 0; + scale_hHitAWMapC_B_passed[i][j] = 0; + scale_hHitHMapC_B_passed[i][j] = 0; + } + for (int j = 0; j < s_Straw_max[0]; j++) { + scale_hHitHWMapS_B_passed[i][j] = 0; + scale_hHitWMapS_B_passed[i][j] = 0; + scale_hHitAMapS_B_passed[i][j] = 0; + scale_hHitAWMapS_B_passed[i][j] = 0; + scale_hHitHMapS_B_passed[i][j] = 0; + } + } + + short int scale_hHitHWMapS_E_passed[s_numberOfEndCapStacks*2][s_Straw_max[1]]; + short int scale_hHitHWMapC_E_passed[s_numberOfEndCapStacks*2][s_iChip_max[1]]; + short int scale_hHitWMapS_E_passed[s_numberOfEndCapStacks*2][s_Straw_max[1]]; + short int scale_hHitWMapC_E_passed[s_numberOfEndCapStacks*2][s_iChip_max[1]]; + short int scale_hHitAMapS_E_passed[s_numberOfEndCapStacks*2][s_Straw_max[1]]; + short int scale_hHitAMapC_E_passed[s_numberOfEndCapStacks*2][s_iChip_max[1]]; + short int scale_hHitAWMapS_E_passed[s_numberOfEndCapStacks*2][s_Straw_max[1]]; + short int scale_hHitAWMapC_E_passed[s_numberOfEndCapStacks*2][s_iChip_max[1]]; + short int scale_hHitHMapC_E_passed[s_numberOfEndCapStacks*2][s_iChip_max[1]]; + short int scale_hHitHMapS_E_passed[s_numberOfEndCapStacks*2][s_Straw_max[1]]; + + for (int i = 0; i < s_numberOfEndCapStacks*2; i++) { + for (int j = 0; j < s_iChip_max[1]; j++) { + scale_hHitHWMapC_E_passed[i][j] = 0; + scale_hHitWMapC_E_passed[i][j] = 0; + scale_hHitAMapC_E_passed[i][j] = 0; + scale_hHitAWMapC_E_passed[i][j] = 0; + scale_hHitHMapC_E_passed[i][j] = 0; + } + for (int j = 0; j < s_Straw_max[1]; j++) { + scale_hHitHWMapS_E_passed[i][j] = 0; + scale_hHitWMapS_E_passed[i][j] = 0; + scale_hHitAMapS_E_passed[i][j] = 0; + scale_hHitAWMapS_E_passed[i][j] = 0; + scale_hHitHMapS_E_passed[i][j] = 0; + } + } + int goodid_status = 0; int prev_bcid = 0; @@ -711,7 +910,7 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon ATH_MSG_VERBOSE("Trying " << m_sumTool << " isGood"); ATH_MSG_VERBOSE("TRT_StrawStatusTool reports status = " << m_sumTool->getStatus(TRT_Identifier)); } - + // ibe = 0 (Barrel), ibe = 1 (Endcap) int nTRTHits[2]; for (int ibe = 0; ibe < 2; ibe++) { @@ -719,15 +918,18 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon // Insert here // Scaling for online environment - + } int nhitsall = 0; - std::map<int,std::map<int, std::vector<straw_norm_struct>>> straw_norm_map; std::map<int,std::map<int, std::vector<straw_struct>>> straw_map; std::map<int,std::map<int, std::vector<chip_struct>>> chip_map; std::map<int,std::vector<straw_shifter_struct>> straw_shifter_map; + std::map<int,std::map<int, std::vector<straw_struct_prob>>> straw_map_prob; + std::map<int,std::map<int, std::vector<chip_struct_prob>>> chip_map_prob; + + std::vector<std::vector<std::vector<int>>> scale_hHitWMap = initScaleVectors(); for (; RDO_CollectionBegin != RDO_CollectionEnd; ++RDO_CollectionBegin) { const InDetRawDataCollection<TRT_RDORawData> *TRT_Collection(*RDO_CollectionBegin); @@ -784,7 +986,7 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon //ToDo: Check if that is really neccessary bool is_barrel = m_pTRTHelper->is_barrel(TRT_Identifier); - //check straw number and find the correct chip and m_ board values + //Сheck straw number and find the correct chip and m_ board values if ( is_barrel && ibe == 0 ) { thisStrawNumber = strawNumber(straw, straw_layer, layer_or_wheel); @@ -812,16 +1014,16 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon } const int driftTimeBin = p_lolum->driftTimeBin(); const int trailingEdge = p_lolum->trailingEdge(); - const bool highlevel = is_middleHTbit_high;//Hardcoded Middle Bit - const bool firstBinHigh = p_lolum->firstBinHigh(); // if the first time bin is up then the hit is out of time window - const bool lastBinHigh = p_lolum->lastBinHigh(); // if the last bin is up then the hit is out of time window. + const bool highlevel = is_middleHTbit_high; //Hardcoded Middle Bit + const bool firstBinHigh = p_lolum->firstBinHigh(); // If the first time bin is up then the hit is out of time window + const bool lastBinHigh = p_lolum->lastBinHigh(); // If the last bin is up then the hit is out of time window. const float timeOverThreshold = p_lolum->timeOverThreshold(); moduleNumber_barrel1[0] = phi_module; moduleNumber_barrel1[1] = phi_module + 96; moduleNumber_barrel2[0] = phi_module + s_numberOfBarrelStacks; moduleNumber_barrel2[1] = phi_module + s_numberOfBarrelStacks + 96; - moduleNumber_barrel3[0] = phi_module + 2 * s_numberOfBarrelStacks; - moduleNumber_barrel3[1] = phi_module + 2 * s_numberOfBarrelStacks + 96; + moduleNumber_barrel3[0] = phi_module + 2*s_numberOfBarrelStacks; + moduleNumber_barrel3[1] = phi_module + 2*s_numberOfBarrelStacks + 96; moduleNumber_endcapA[0] = phi_module; moduleNumber_endcapA[1] = phi_module + 64; moduleNumber_endcapB[0] = phi_module + s_numberOfEndCapStacks; @@ -838,8 +1040,12 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon straw_shifter_struct& this_struct = straw_shifter_map[barrel_ec].emplace_back(); this_struct.strawNumber = thisStrawNumber; this_struct.isAr = isArgonStraw; - this_struct.HitWMap_passed = false; + this_struct.HitWMap_passed = true; + this_struct.HitWMap_Ar_passed = true; + if (abs(barrel_ec) == 1) scale_hHitWMap_B_passed[isArgonStraw ? 1 : 0][thisStrawNumber]++; + if (abs(barrel_ec) == 2) scale_hHitWMap_E_passed[barrel_ec < 0 ? 1 : 0][isArgonStraw ? 1 : 0][thisStrawNumber]++; } + nTRTHits[ibe]++; if (ibe == 0) { @@ -863,64 +1069,96 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon } if (m_doExpert) { + if (m_doStraws) { + straw_struct_prob& this_struct = straw_map_prob[ibe][iphi_module].emplace_back(); + this_struct.strawNumber = thisStrawNumber; + this_struct.HitHWMapS_cut = highlevel && is_middleHTbit_high; + this_struct.HitWMapS_cut = (driftTimeBin > 2) && (driftTimeBin < 17); + this_struct.HitAMapS_cut = (firstBinHigh || lastBinHigh || (driftTimeBin > 0) || (trailingEdge < 23)); + this_struct.HitAWMapS_cut = is_anybininVgate_high; + this_struct.HitHMapS_cut = highlevel; + this_struct.HitHWMapS_passed = 1.; + this_struct.HitWMapS_passed = 1.; + this_struct.HitAMapS_passed = 1.; + this_struct.HitAWMapS_passed = 1.; + this_struct.HitHMapS_passed = 1.; + if (ibe == 0) { + if (highlevel && is_middleHTbit_high) scale_hHitHWMapS_B_passed[iphi_module][thisStrawNumber]++; + if ((driftTimeBin > 2) && (driftTimeBin < 17)) scale_hHitWMapS_B_passed[iphi_module][thisStrawNumber]++; + if (firstBinHigh || lastBinHigh || (driftTimeBin > 0) || (trailingEdge < 23)) scale_hHitAMapS_B_passed[iphi_module][thisStrawNumber]++; + if (is_anybininVgate_high) scale_hHitAWMapS_B_passed[iphi_module][thisStrawNumber]++; + if (highlevel) scale_hHitHMapS_B_passed[iphi_module][thisStrawNumber]++; + } + if (ibe == 1) { + if (highlevel && is_middleHTbit_high) scale_hHitHWMapS_E_passed[iphi_module][thisStrawNumber]++; + if ((driftTimeBin > 2) && (driftTimeBin < 17)) scale_hHitWMapS_E_passed[iphi_module][thisStrawNumber]++; + if (firstBinHigh || lastBinHigh || (driftTimeBin > 0) || (trailingEdge < 23)) scale_hHitAMapS_E_passed[iphi_module][thisStrawNumber]++; + if (is_anybininVgate_high) scale_hHitAWMapS_E_passed[iphi_module][thisStrawNumber]++; + if (highlevel) scale_hHitHMapS_E_passed[iphi_module][thisStrawNumber]++; + } + } + float trailingEdgeScaled = (trailingEdge + 1)*3.125; - if (m_doStraws) { // Experimental - straw_struct& this_struct = straw_map[ibe][iphi_module].emplace_back(); - this_struct.strawNumber=thisStrawNumber; - this_struct.HitWMapS_passed=((driftTimeBin > 2) && (driftTimeBin < 17) ? 1 : 0); - this_struct.HitHMapS_passed=highlevel; - this_struct.HitHWMapS_passed=(highlevel && is_middleHTbit_high); - this_struct.HitTrMapS_y=trailingEdgeScaled; - this_struct.HitAMapS_passed=((firstBinHigh || lastBinHigh || driftTimeBin > 0 || trailingEdge < 23) ? 1 : 0); - this_struct.HitAWMapS_passed=(is_anybininVgate_high ? 1 : 0); - this_struct.HitToTMapS_y = timeOverThreshold; + if (m_doStraws) { + straw_struct& this_struct = straw_map[ibe][iphi_module].emplace_back(); + this_struct.strawNumber = thisStrawNumber; + this_struct.HitTrMapS_y = trailingEdgeScaled; + this_struct.HitToTMapS_y = timeOverThreshold; this_struct.HitToTLong_cut = (timeOverThreshold > m_longToTCut); - this_struct.HitTrWMapS_y = trailingEdgeScaled; + this_struct.HitTrWMapS_y = trailingEdgeScaled; this_struct.HitTrWMapS_cut = (trailingEdge < 23) && !lastBinHigh && !firstBinHigh; - } - if (m_doStraws) { // Experimental - double histLow = 0.; - double histBinWidth = 1.; - straw_norm_struct& this_struct = straw_norm_map[ibe][iphi_module].emplace_back(); - for (int i = 1; i <= m_strawMax[ibe]; i++) { - if (histLow + histBinWidth*(i-1) >= thisStrawNumber || histLow + histBinWidth*(i+1) <= thisStrawNumber) { - this_struct.strawNumber = i; - this_struct.HitAMapS_passed = 0; - } - } + if (highlevel) { + HtoLMapS = thisStrawNumber; + HtoLMapS_passed = 1.0; + fill("RDOStackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLMapS_passed, HtoLMapS); + } else { + HtoLMapS = thisStrawNumber; + HtoLMapS_passed = 0.0; + fill("RDOStackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLMapS_passed, HtoLMapS); + } } - if (highlevel) { - if (m_doStraws) { - HtoLMapS = thisStrawNumber; - HtoLMapS_passed = 1.0; - fill("RDOStackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLMapS_passed, HtoLMapS); - } - } else { - if (m_doStraws) { - HtoLMapS = thisStrawNumber; - HtoLMapS_passed = 0.0; - fill("RDOStackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLMapS_passed, HtoLMapS); + if (m_doChips) { + chip_struct_prob& this_struct = chip_map_prob[ibe][iphi_module].emplace_back(); + this_struct.chipNumber = chip - 1; + this_struct.HitHWMapC_cut = highlevel && is_middleHTbit_high; + this_struct.HitWMapC_cut = (driftTimeBin > 2) && (driftTimeBin < 17); + this_struct.HitAMapC_cut = (firstBinHigh || lastBinHigh || (driftTimeBin > 0) || (trailingEdge < 23)); + this_struct.HitAWMapC_cut = is_anybininVgate_high; + this_struct.HitHMapC_cut = highlevel; + this_struct.HitHWMapC_passed = 1.; + this_struct.HitWMapC_passed = 1.; + this_struct.HitAMapC_passed = 1.; + this_struct.HitAWMapC_passed = 1.; + this_struct.HitHMapC_passed = 1.; + if (ibe == 0) { + if (highlevel && is_middleHTbit_high) scale_hHitHWMapC_B_passed[iphi_module][chip - 1]++; + if ((driftTimeBin > 2) && (driftTimeBin < 17)) scale_hHitWMapC_B_passed[iphi_module][chip - 1]++; + if (firstBinHigh || lastBinHigh || (driftTimeBin > 0) || (trailingEdge < 23)) scale_hHitAMapC_B_passed[iphi_module][chip - 1]++; + if (is_anybininVgate_high) scale_hHitAWMapC_B_passed[iphi_module][chip - 1]++; + if (highlevel) scale_hHitHMapC_B_passed[iphi_module][chip - 1]++; + } + if (ibe == 1) { + if (highlevel && is_middleHTbit_high) scale_hHitHWMapC_E_passed[iphi_module][chip - 1]++; + if ((driftTimeBin > 2) && (driftTimeBin < 17)) scale_hHitWMapC_E_passed[iphi_module][chip - 1]++; + if (firstBinHigh || lastBinHigh || (driftTimeBin > 0) || (trailingEdge < 23)) scale_hHitAMapC_E_passed[iphi_module][chip - 1]++; + if (is_anybininVgate_high) scale_hHitAWMapC_E_passed[iphi_module][chip - 1]++; + if (highlevel) scale_hHitHMapC_E_passed[iphi_module][chip - 1]++; + } } - } - - if (m_doChips) { // Experimental + + if (m_doChips) { chip_struct& this_struct = chip_map[ibe][iphi_module].emplace_back(); this_struct.chipNumber = chip - 1; - this_struct.HitWMapC_passed = (driftTimeBin > 2) && (driftTimeBin < 17) ? 1 : 0; - this_struct.HitHMapC_passed = highlevel; - this_struct.HitHWMapC_passed = highlevel && is_middleHTbit_high; this_struct.HitTrMapC_y = trailingEdgeScaled; - this_struct.HitAMapC_passed = ((firstBinHigh || lastBinHigh || driftTimeBin > 0 || trailingEdge < 23) ? 1 : 0); - this_struct.HitAWMapC_passed = is_anybininVgate_high ? 1 : 0; this_struct.HitToTMapC_y = timeOverThreshold; this_struct.HitTrWMapC_cut = (trailingEdge < 23) && !lastBinHigh && !firstBinHigh; - this_struct.HtoBCMap_cut=false; - this_struct.HtoBCMapB_y = board - 1; - this_struct.HtoBCMapC_x = -1; - this_struct.HtoBCMapB_x = -1; + this_struct.HtoBCMap_cut = false; + this_struct.HtoBCMapB_y = board - 1; + this_struct.HtoBCMapC_x = -1; + this_struct.HtoBCMapB_x = -1; if (p_lolum->highLevel(1)) { this_struct.HtoBCMapC_x = 0.; this_struct.HtoBCMapB_x = 0.; @@ -938,15 +1176,12 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon this_struct.HtoBCMapB_x = 2.; this_struct.HtoBCMap_cut=true; } - } - if (highlevel) { - if (m_doChips) { + + if (highlevel) { HtoLMapC = chip - 1; HtoLMapC_passed = 1.0; fill("RDOStackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLMapC_passed, HtoLMapC); - } - } else { - if (m_doChips) { + } else { HtoLMapC = chip - 1; HtoLMapC_passed = 0.0; fill("RDOStackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLMapC_passed, HtoLMapC); @@ -1003,28 +1238,300 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon } } + // Barrel straw normalization + for (int k = 0; k < s_Straw_max[0]; k++) { + for (int iGas = 0; iGas < 2; iGas++) { + try { + if (scale_hHitWMap[0][iGas].at(k) - scale_hHitWMap_B_passed[iGas][k] >= 0) { + for (int j = 0; j < scale_hHitWMap[0][iGas].at(k) - scale_hHitWMap_B_passed[iGas][k]; j++) { + if (m_doStraws) { + straw_shifter_struct& this_struct = straw_shifter_map[1].emplace_back(); // index 1 is Barrel + this_struct.strawNumber = k; + this_struct.isAr = iGas > 0 ? true : false; + this_struct.HitWMap_passed = false; + this_struct.HitWMap_Ar_passed = false; + } + } + } else { + ATH_MSG_ERROR("Scale value " << scale_hHitWMap[0][iGas].at(k) - scale_hHitWMap_B_passed[iGas][k] << + " is less than zero in scaling for Barrel, iGas = " << iGas << ", k = " << k); + } + } catch (out_of_range &e) { + ATH_MSG_ERROR("Index " << k << " out of range in scaling for Barrel"); + } + } + } + + // Endcap straw normalization + for (int k = 0; k < s_Straw_max[1]; k++) { + for (int iside = 0; iside < 2; iside++) { + for (int iGas = 0; iGas < 2; iGas++) { + try { + if (scale_hHitWMap[iside + 1][iGas].at(k) - scale_hHitWMap_E_passed[iside][iGas][k] >= 0) { + for (int j = 0; j < scale_hHitWMap[iside + 1][iGas].at(k) - scale_hHitWMap_E_passed[iside][iGas][k]; j++) { + if (m_doStraws) { + straw_shifter_struct& this_struct = straw_shifter_map[iside == 0 ? 2 : -2].emplace_back(); // index 2 is EA, index -2 is EC + this_struct.strawNumber = k; + this_struct.isAr = iGas > 0 ? true : false; + this_struct.HitWMap_passed = false; + this_struct.HitWMap_Ar_passed = false; + } + } + } else { + ATH_MSG_ERROR("Scale value " << scale_hHitWMap[iside + 1][iGas].at(k) - scale_hHitWMap_E_passed[iside][iGas][k] << + " is less than zero in scaling for Endcap, iside = " << iside << ", iGas = " << iGas << ", k = " << k); + } + } catch (out_of_range &e) { + ATH_MSG_ERROR("Index " << k << " out of range in scaling for Endcap"); + } + } + } + } + + if (m_doExpert) { + // Barrel straw normalization + for (int k = 0; k < s_Straw_max[0]; k++) { + for (int iside = 0; iside < 2; iside++) { + for (int phi_module = 0; phi_module < s_numberOfBarrelStacks; phi_module++) { + int iphi_module = -999;; + if (iside == 0) iphi_module = phi_module; else if (iside == 1) iphi_module = phi_module + 32; + if (scale_hHitHWMapS_B_passed[iphi_module][k] < 2 || scale_hHitWMapS_B_passed[iphi_module][k] < 2 || + scale_hHitAMapS_B_passed[iphi_module][k] < 2 || scale_hHitAWMapS_B_passed[iphi_module][k] < 2 || + scale_hHitHMapS_B_passed[iphi_module][k] < 2) { + for (int l = 0; l < 1 - scale_hHitHWMapS_B_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[0][iphi_module].emplace_back(); // index 0 is Barrel, A and C are splitted by iphi_module + this_struct.strawNumber = k; + this_struct.HitHWMapS_cut = true; + this_struct.HitHWMapS_passed = false; + } + for (int l = 0; l < 1 - scale_hHitWMapS_B_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[0][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitWMapS_cut = true; + this_struct.HitWMapS_passed = false; + } + for (int l = 0; l < 1 - scale_hHitAMapS_B_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[0][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitAMapS_cut = true; + this_struct.HitAMapS_passed = false; + } + for (int l = 0; l < 1 - scale_hHitAWMapS_B_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[0][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitAWMapS_cut = true; + this_struct.HitAWMapS_passed = false; + } + for (int l = 0; l < 1 - scale_hHitHMapS_B_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[0][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitHMapS_cut = true; + this_struct.HitHMapS_passed = false; + } + } else{ + ATH_MSG_ERROR("Scale value is less than zero in normalization for Barrel straw!"); + } + } + } + } + + // Barrel chip normalization + for (int k = 0; k < s_iChip_max[0]; k++) { + for (int iside = 0; iside < 2; iside++) { + for (int phi_module = 0; phi_module < s_numberOfBarrelStacks; phi_module++) { + int iphi_module = -999;; + if (iside == 0) iphi_module = phi_module; else if (iside == 1) iphi_module = phi_module + 32; + if (scale_hHitHWMapC_B_passed[iphi_module][k] < 17 || scale_hHitWMapC_B_passed[iphi_module][k] < 17 || + scale_hHitAMapC_B_passed[iphi_module][k] < 17 || scale_hHitAWMapC_B_passed[iphi_module][k] < 17 || + scale_hHitHMapC_B_passed[iphi_module][k] < 17) { + for (int l = 0; l < 16*1. - scale_hHitHWMapC_B_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[0][iphi_module].emplace_back(); // index 0 is Barrel, A and C are splitted by iphi_module + this_struct.chipNumber = k; + this_struct.HitHWMapC_cut = true; + this_struct.HitHWMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitWMapC_B_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[0][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitWMapC_cut = true; + this_struct.HitWMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitAMapC_B_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[0][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitAMapC_cut = true; + this_struct.HitAMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitAWMapC_B_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[0][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitAWMapC_cut = true; + this_struct.HitAWMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitHMapC_B_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[0][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitHMapC_cut = true; + this_struct.HitHMapC_passed = false; + } + } else{ + ATH_MSG_ERROR("Scale value is less than zero in normalization for Barrel chip!"); + } + } + } + } + + // Endcap straw normalization + for (int k = 0; k < s_Straw_max[1]; k++) { + for (int iside = 0; iside < 2; iside++) { + for (int phi_module = 0; phi_module < s_numberOfEndCapStacks; phi_module++) { + int iphi_module = -999;; + if (iside == 0) iphi_module = phi_module; else if (iside == 1) iphi_module = phi_module + 32; + if (scale_hHitHWMapS_E_passed[iphi_module][k] < 2 || scale_hHitWMapS_E_passed[iphi_module][k] < 2 || + scale_hHitAMapS_E_passed[iphi_module][k] < 2 || scale_hHitAWMapS_E_passed[iphi_module][k] < 2 || + scale_hHitHMapS_E_passed[iphi_module][k] < 2) { + for (int l = 0; l < 1. - scale_hHitHWMapS_E_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[1][iphi_module].emplace_back(); // index 1 is Endcap, A and C are splitted by iphi_module + this_struct.strawNumber = k; + this_struct.HitHWMapS_cut = true; + this_struct.HitHWMapS_passed = false; + } + for (int l = 0; l < 1. - scale_hHitWMapS_E_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[1][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitWMapS_cut = true; + this_struct.HitWMapS_passed = false; + } + for (int l = 0; l < 1. - scale_hHitAMapS_E_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[1][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitAMapS_cut = true; + this_struct.HitAMapS_passed = false; + } + for (int l = 0; l < 1. - scale_hHitAWMapS_E_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[1][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitAWMapS_cut = true; + this_struct.HitAWMapS_passed = false; + } + for (int l = 0; l < 1. - scale_hHitHMapS_E_passed[iphi_module][k]; l++){ + straw_struct_prob& this_struct = straw_map_prob[1][iphi_module].emplace_back(); + this_struct.strawNumber = k; + this_struct.HitHMapS_cut = true; + this_struct.HitHMapS_passed = false; + } + } else{ + ATH_MSG_ERROR("Scale value is less than zero in normalization for Endcap straw!"); + } + } + } + } + + // Endcap chip normalization + for (int k = 0; k < s_iChip_max[1]; k++) { + for (int iside = 0; iside < 2; iside++) { + for (int phi_module = 0; phi_module < s_numberOfEndCapStacks; phi_module++) { + int iphi_module = -999;; + if (iside == 0) iphi_module = phi_module; else if (iside == 1) iphi_module = phi_module + 32; + if (scale_hHitHWMapC_E_passed[iphi_module][k] < 17 || scale_hHitWMapC_E_passed[iphi_module][k] < 17 || + scale_hHitAMapC_E_passed[iphi_module][k] < 17 || scale_hHitAWMapC_E_passed[iphi_module][k] < 17 || + scale_hHitHMapC_E_passed[iphi_module][k] < 17) { + for (int l = 0; l < 16*1. - scale_hHitHWMapC_E_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[1][iphi_module].emplace_back(); // index 0 is Barrel, A and C are splitted by iphi_module + this_struct.chipNumber = k; + this_struct.HitHWMapC_cut = true; + this_struct.HitHWMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitWMapC_E_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[1][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitWMapC_cut = true; + this_struct.HitWMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitAMapC_E_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[1][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitAMapC_cut = true; + this_struct.HitAMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitAWMapC_E_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[1][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitAWMapC_cut = true; + this_struct.HitAWMapC_passed = false; + } + for (int l = 0; l < 16*1. - scale_hHitHMapC_E_passed[iphi_module][k]; l++){ + chip_struct_prob& this_struct = chip_map_prob[1][iphi_module].emplace_back(); + this_struct.chipNumber = k; + this_struct.HitHMapC_cut = true; + this_struct.HitHMapC_passed = false; + } + } else{ + ATH_MSG_ERROR("Scale value is less than zero in normalization for Endcap chip!"); + } + } + } + } + } + for (const auto& ibarrel_ecpair : straw_shifter_map) { int ibe = abs(ibarrel_ecpair.first) - 1; int iside = ibarrel_ecpair.first > 0 ? 0 : 1; auto strawNumber = Monitored::Collection("strawNumber", ibarrel_ecpair.second, [](const auto& s){return s.strawNumber;}); auto HitWMap_passed = Monitored::Collection("HitWMap_passed", ibarrel_ecpair.second, [](const auto& s){return s.HitWMap_passed;}); - auto isAr = Monitored::Collection("isAr", ibarrel_ecpair.second, [](const auto& s){return s.isAr;}); - auto isNotAr = Monitored::Collection("isNotAr", ibarrel_ecpair.second, [](const auto& s){return not s.isAr;}); + auto HitWMap_Ar_passed = Monitored::Collection("HitWMap_Ar_passed", ibarrel_ecpair.second, [](const auto& s){return s.HitWMap_Ar_passed;}); + auto isAr = Monitored::Collection("isAr", ibarrel_ecpair.second, [](const auto& s){return s.isAr;}); + auto isNotAr = Monitored::Collection("isNotAr", ibarrel_ecpair.second, [](const auto& s){return not s.isAr;}); if (ibe == 0) { - fill("RDOHistograms0", strawNumber, HitWMap_passed, isAr, isNotAr); + fill("RDOHistograms0", strawNumber, HitWMap_passed, HitWMap_Ar_passed, isAr, isNotAr); } else if (ibe == 1) { - fill("RDOHistograms1"+std::to_string(iside), strawNumber, HitWMap_passed, isAr, isNotAr); + fill("RDOHistograms1"+std::to_string(iside), strawNumber, HitWMap_passed, HitWMap_Ar_passed, isAr, isNotAr); + } + } + + if (m_doExpert) { + for (const auto& ibepair : straw_map_prob) { + for (const auto& iphi_modulepair : ibepair.second ) { + auto strawNumber = Monitored::Collection("strawNumber", iphi_modulepair.second, [](const auto& s){return s.strawNumber;}); + auto HitHWMapS_passed = Monitored::Collection("HitHWMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitHWMapS_passed;}); + auto HitWMapS_passed = Monitored::Collection("HitWMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitWMapS_passed;}); + auto HitAMapS_passed = Monitored::Collection("HitAMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitAMapS_passed;}); + auto HitAWMapS_passed = Monitored::Collection("HitAWMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitAWMapS_passed;}); + auto HitHMapS_passed = Monitored::Collection("HitHMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitHMapS_passed;}); + auto HitHWMapS_cut = Monitored::Collection("HitHWMapS_cut", iphi_modulepair.second, [](const auto& s){return s.HitHWMapS_cut;}); + auto HitWMapS_cut = Monitored::Collection("HitWMapS_cut", iphi_modulepair.second, [](const auto& s){return s.HitWMapS_cut;}); + auto HitAMapS_cut = Monitored::Collection("HitAMapS_cut", iphi_modulepair.second, [](const auto& s){return s.HitAMapS_cut;}); + auto HitAWMapS_cut = Monitored::Collection("HitAWMapS_cut", iphi_modulepair.second, [](const auto& s){return s.HitAWMapS_cut;}); + auto HitHMapS_cut = Monitored::Collection("HitHMapS_cut", iphi_modulepair.second, [](const auto& s){return s.HitHMapS_cut;}); + + fill("RDOStackHistograms"+std::to_string(ibepair.first)+std::to_string(iphi_modulepair.first), strawNumber, HitHWMapS_passed, HitHWMapS_cut, + HitWMapS_passed, HitWMapS_cut, HitAMapS_passed, HitAMapS_cut, HitAWMapS_passed, HitAWMapS_cut, HitHMapS_passed, HitHMapS_cut); + } + } + + for (const auto& ibepair : chip_map_prob) { + for (const auto& iphi_modulepair : ibepair.second ) { + auto chipNumber = Monitored::Collection("chipNumber", iphi_modulepair.second, [](const auto& s){return s.chipNumber;}); + auto HitHWMapC_passed = Monitored::Collection("HitHWMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitHWMapC_passed;}); + auto HitWMapC_passed = Monitored::Collection("HitWMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitWMapC_passed;}); + auto HitAMapC_passed = Monitored::Collection("HitAMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitAMapC_passed;}); + auto HitAWMapC_passed = Monitored::Collection("HitAWMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitAWMapC_passed;}); + auto HitHMapC_passed = Monitored::Collection("HitHMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitHMapC_passed;}); + auto HitHWMapC_cut = Monitored::Collection("HitHWMapC_cut", iphi_modulepair.second, [](const auto& s){return s.HitHWMapC_cut;}); + auto HitWMapC_cut = Monitored::Collection("HitWMapC_cut", iphi_modulepair.second, [](const auto& s){return s.HitWMapC_cut;}); + auto HitAMapC_cut = Monitored::Collection("HitAMapC_cut", iphi_modulepair.second, [](const auto& s){return s.HitAMapC_cut;}); + auto HitAWMapC_cut = Monitored::Collection("HitAWMapC_cut", iphi_modulepair.second, [](const auto& s){return s.HitAWMapC_cut;}); + auto HitHMapC_cut = Monitored::Collection("HitHMapC_cut", iphi_modulepair.second, [](const auto& s){return s.HitHMapC_cut;}); + + fill("RDOStackHistograms"+std::to_string(ibepair.first)+std::to_string(iphi_modulepair.first), chipNumber, HitHWMapC_passed, HitHWMapC_cut, + HitWMapC_passed, HitWMapC_cut, HitAMapC_passed, HitAMapC_cut, HitAWMapC_passed, HitAWMapC_cut, HitHMapC_passed, HitHMapC_cut); + } } } for (const auto& ibepair : straw_map) { for (const auto& iphi_modulepair : ibepair.second ) { auto strawNumber = Monitored::Collection("strawNumber", iphi_modulepair.second, [](const auto& s){return s.strawNumber;}); - auto HitWMapS_passed = Monitored::Collection("HitWMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitWMapS_passed;}); - auto HitAWMapS_passed = Monitored::Collection("HitAWMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitAWMapS_passed;}); - auto HitAMapS_passed = Monitored::Collection("HitAMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitAMapS_passed;}); - auto HitHMapS_passed = Monitored::Collection("HitHMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitHMapS_passed;}); - auto HitHWMapS_passed = Monitored::Collection("HitHWMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitHWMapS_passed;}); auto HitTrMapS_y = Monitored::Collection("HitTrMapS_y", iphi_modulepair.second, [](const auto& s){return s.HitTrMapS_y;}); auto HitToTMapS_y = Monitored::Collection("HitToTMapS_y", iphi_modulepair.second, [](const auto& s){return s.HitToTMapS_y;}); auto HitToTLong_cut = Monitored::Collection("HitToTLong_cut", iphi_modulepair.second, [](const auto& s){return s.HitToTLong_cut;}); @@ -1032,28 +1539,13 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon auto HitTrWMapS_cut = Monitored::Collection("HitTrWMapS_cut", iphi_modulepair.second, [](const auto& s){return s.HitTrWMapS_cut;}); fill("RDOStackHistograms"+std::to_string(ibepair.first)+std::to_string(iphi_modulepair.first), strawNumber, - HitWMapS_passed, HitHWMapS_passed, HitHMapS_passed, HitAMapS_passed, HitAWMapS_passed, HitTrMapS_y, HitToTMapS_y, HitToTLong_cut, HitTrWMapS_y, HitTrWMapS_cut); } } - - // Experimental - for (const auto& ibepair : straw_norm_map) { - for (const auto& iphi_modulepair : ibepair.second ) { - auto strawNumber = Monitored::Collection("strawNumber", iphi_modulepair.second, [](const auto& s){return s.strawNumber;}); - auto HitAMapS_passed = Monitored::Collection("HitAMapS_passed", iphi_modulepair.second, [](const auto& s){return s.HitAMapS_passed;}); - fill("RDOStackHistograms"+std::to_string(ibepair.first)+std::to_string(iphi_modulepair.first), strawNumber, HitAMapS_passed); - } - } for (const auto& ibepair : chip_map) { for (const auto& iphi_modulepair : ibepair.second ) { auto chipNumber = Monitored::Collection("chipNumber", iphi_modulepair.second, [](const auto& s){return s.chipNumber;}); - auto HitWMapC_passed = Monitored::Collection("HitWMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitWMapC_passed;}); - auto HitAWMapC_passed = Monitored::Collection("HitAWMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitAWMapC_passed;}); - auto HitAMapC_passed = Monitored::Collection("HitAMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitAMapC_passed;}); - auto HitHMapC_passed = Monitored::Collection("HitHMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitHMapC_passed;}); - auto HitHWMapC_passed = Monitored::Collection("HitHWMapC_passed", iphi_modulepair.second, [](const auto& s){return s.HitHWMapC_passed;}); auto HitTrMapC_y = Monitored::Collection("HitTrMapC_y", iphi_modulepair.second, [](const auto& s){return s.HitTrMapC_y;}); auto HitToTMapC_y = Monitored::Collection("HitToTMapC_y", iphi_modulepair.second, [](const auto& s){return s.HitToTMapC_y;}); auto HtoBCMapC_x = Monitored::Collection("HtoBCMapC_x", iphi_modulepair.second, [](const auto& s){return s.HtoBCMapC_x;}); @@ -1062,11 +1554,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon auto HtoBCMap_cut = Monitored::Collection("HtoBCMap_cut", iphi_modulepair.second, [](const auto& s){return s.HtoBCMap_cut;}); auto HitTrWMapC_cut = Monitored::Collection("HitTrWMapC_cut", iphi_modulepair.second, [](const auto& s){return s.HitTrWMapC_cut;}); - fill("RDOStackHistograms"+std::to_string(ibepair.first)+std::to_string(iphi_modulepair.first), - chipNumber, HitWMapC_passed, HitHWMapC_passed, HitHMapC_passed, - HitAMapC_passed, HitAWMapC_passed, HitTrMapC_y, HitToTMapC_y, - HtoBCMapC_x, HtoBCMapB_x, HtoBCMapB_y, - HtoBCMap_cut, HitTrWMapC_cut); + fill("RDOStackHistograms"+std::to_string(ibepair.first)+std::to_string(iphi_modulepair.first), + chipNumber, HitTrMapC_y, HitToTMapC_y, HtoBCMapC_x, HtoBCMapB_x, HtoBCMapB_y, HtoBCMap_cut, HitTrWMapC_cut); } } @@ -1150,138 +1639,134 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTRDOs(const TRT_RDO_Container& rdoCon } // Normalization for online environmenmet // Insert here - } - - -if (m_environment != Environment_t::online) { - - if (m_doShift) { - const unsigned int lumiBlock = eventInfo.lumiBlock(); - ATH_MSG_VERBOSE("This is lumiblock : " << lumiBlock); -int lastLumiBlock = -99; - if ((int)lumiBlock != lastLumiBlock) { - lastLumiBlock = lumiBlock; - } - float evtLumiBlock = 1.; - float lumiBlockScale = (evtLumiBlock > 0) ? (1. / evtLumiBlock) : 0; - const float barrelConst = 1. / 105088; - const float endcapConst = 1. / 122880; - - if (m_doTracksMon && evtLumiBlock > 0) { - NHitsperLB_x = lastLumiBlock; - NHitsperLB_y = (float)nHitsperLB_B * lumiBlockScale * barrelConst; - fill("RDOShiftRebinnedBarrelHistograms0", NHitsperLB_x, NHitsperLB_y); - NHLHitsperLB_x = lastLumiBlock; - NHLHitsperLB_y = (float)nHLHitsperLB_B * lumiBlockScale * barrelConst; - fill("RDOShiftRebinnedBarrelHistograms0", NHLHitsperLB_x, NHLHitsperLB_y); - - for (int iside = 0; iside < 2; iside++) { + + + if (m_environment != Environment_t::online) { + + if (m_doShift) { + const unsigned int lumiBlock = eventInfo.lumiBlock(); + ATH_MSG_VERBOSE("This is lumiblock : " << lumiBlock); + int lastLumiBlock = -99; // ToDo - last lumiblock calculation is not correct + if ((int)lumiBlock != lastLumiBlock) { + lastLumiBlock = lumiBlock; + } + float evtLumiBlock = 1.; + float lumiBlockScale = (evtLumiBlock > 0) ? (1. / evtLumiBlock) : 0; + const float barrelConst = 1. / 105088; + const float endcapConst = 1. / 122880; + + if (m_doTracksMon && evtLumiBlock > 0) { NHitsperLB_x = lastLumiBlock; - NHitsperLB_y = (float)nHitsperLB_E[iside] * lumiBlockScale * endcapConst; - fill("RDOShiftRebinnedEndcapHistograms1"+std::to_string(iside), NHitsperLB_x, NHitsperLB_y); + NHitsperLB_y = (float)nHitsperLB_B * lumiBlockScale * barrelConst; + fill("RDOShiftRebinnedBarrelHistograms0", NHitsperLB_x, NHitsperLB_y); NHLHitsperLB_x = lastLumiBlock; - NHLHitsperLB_y = (float)nHLHitsperLB_E[iside] * lumiBlockScale * endcapConst; - fill("RDOShiftRebinnedEndcapHistograms1"+std::to_string(iside), NHLHitsperLB_x, NHLHitsperLB_y); - } - - nHitsperLB_B = 0; - nHLHitsperLB_B = 0; - - for (int iside = 0; iside < 2; iside++) { - nHitsperLB_E[iside] = 0; - nHLHitsperLB_E[iside] = 0; - } - } - } - - ATH_MSG_DEBUG("end of event and lumi block"); -} // TODO! - - - //Get BSConversion Errors from BSConditionsServices: - std::set<std::pair<uint32_t, uint32_t> > *L1IDErrorSet = m_BSSvc->getIdErrorSet(TRTByteStreamErrors::L1IDError); - std::set<std::pair<uint32_t, uint32_t> > *BCIDErrorSet = m_BSSvc->getIdErrorSet(TRTByteStreamErrors::BCIDError); - std::set<uint32_t> *MissingErrorSet = m_BSSvc->getErrorSet(TRTByteStreamErrors::MISSINGError); - std::set<uint32_t> *SidErrorSet = m_BSSvc->getErrorSet(TRTByteStreamErrors::SIDError); - std::set<std::pair<uint32_t, uint32_t> > *RobStatusErrorSet = m_BSSvc->getRodRobErrorSet(TRTByteStreamErrors::RobStatusError); - const unsigned int rod_id_base[2][2] = { { 0x310000, 0x320000 }, { 0x330000, 0x340000 } }; - const unsigned int nChipsTotal[2][2] = { { 3328, 3328 }, { 7680, 7680 } }; - const unsigned int nRobsTotal[2][2] = { { 32, 32 }, { 64, 64 } }; - float nBSErrors[2][2] = { { 0, 0 }, { 0, 0 } }; - float nRobErrors[2][2] = { { 0, 0 }, { 0, 0 } }; - const std::set<std::pair<uint32_t, uint32_t> > *errorset1[2] = { BCIDErrorSet, L1IDErrorSet }; - - for (int iset = 0; iset < 2; ++iset) { - for (auto setIt = errorset1[iset]->begin(); setIt != errorset1[iset]->end(); ++setIt) { - for (int ibe = 0; ibe < 2; ++ibe) { - for (int iside = 0; iside < 2; ++iside) { - if (((setIt->first >> 8) & 0xFF0000) == rod_id_base[ibe][iside]) { - nBSErrors[ibe][iside] += 1. / nChipsTotal[ibe][iside]; - } - } - } - } - } - - const std::set<uint32_t> *errorset2[2] = { MissingErrorSet, SidErrorSet }; - - for (int iset = 0; iset < 2; ++iset) { - for (auto setIt = errorset2[iset]->begin(); setIt != errorset2[iset]->end(); ++setIt) { - for (int ibe = 0; ibe < 2; ++ibe) { - for (int iside = 0; iside < 2; ++iside) { - if (((*setIt >> 8) & 0xFF0000) == rod_id_base[ibe][iside]) { - nBSErrors[ibe][iside] += 1. / nChipsTotal[ibe][iside]; - } - } - } - } - } - - for (int ibe = 0; ibe < 2; ++ibe) { - for (int iside = 0; iside < 2; ++iside) { + NHLHitsperLB_y = (float)nHLHitsperLB_B * lumiBlockScale * barrelConst; + fill("RDOShiftRebinnedBarrelHistograms0", NHLHitsperLB_x, NHLHitsperLB_y); + + for (int iside = 0; iside < 2; iside++) { + NHitsperLB_x = lastLumiBlock; + NHitsperLB_y = (float)nHitsperLB_E[iside] * lumiBlockScale * endcapConst; + fill("RDOShiftRebinnedEndcapHistograms1"+std::to_string(iside), NHitsperLB_x, NHitsperLB_y); + NHLHitsperLB_x = lastLumiBlock; + NHLHitsperLB_y = (float)nHLHitsperLB_E[iside] * lumiBlockScale * endcapConst; + fill("RDOShiftRebinnedEndcapHistograms1"+std::to_string(iside), NHLHitsperLB_x, NHLHitsperLB_y); + } + + nHitsperLB_B = 0; + nHLHitsperLB_B = 0; + + for (int iside = 0; iside < 2; iside++) { + nHitsperLB_E[iside] = 0; + nHLHitsperLB_E[iside] = 0; + } + } + } + + ATH_MSG_DEBUG("end of event and lumi block"); + } // TODO! + + //Get BSConversion Errors from BSConditionsServices: + std::set<std::pair<uint32_t, uint32_t> > *L1IDErrorSet = m_BSSvc->getIdErrorSet(TRTByteStreamErrors::L1IDError); + std::set<std::pair<uint32_t, uint32_t> > *BCIDErrorSet = m_BSSvc->getIdErrorSet(TRTByteStreamErrors::BCIDError); + std::set<uint32_t> *MissingErrorSet = m_BSSvc->getErrorSet(TRTByteStreamErrors::MISSINGError); + std::set<uint32_t> *SidErrorSet = m_BSSvc->getErrorSet(TRTByteStreamErrors::SIDError); + std::set<std::pair<uint32_t, uint32_t> > *RobStatusErrorSet = m_BSSvc->getRodRobErrorSet(TRTByteStreamErrors::RobStatusError); + const unsigned int rod_id_base[2][2] = { { 0x310000, 0x320000 }, { 0x330000, 0x340000 } }; + const unsigned int nChipsTotal[2][2] = { { 3328, 3328 }, { 7680, 7680 } }; + const unsigned int nRobsTotal[2][2] = { { 32, 32 }, { 64, 64 } }; + float nBSErrors[2][2] = { { 0, 0 }, { 0, 0 } }; + float nRobErrors[2][2] = { { 0, 0 }, { 0, 0 } }; + const std::set<std::pair<uint32_t, uint32_t> > *errorset1[2] = { BCIDErrorSet, L1IDErrorSet }; + + for (int iset = 0; iset < 2; ++iset) { + for (auto setIt = errorset1[iset]->begin(); setIt != errorset1[iset]->end(); ++setIt) { + for (int ibe = 0; ibe < 2; ++ibe) { + for (int iside = 0; iside < 2; ++iside) { + if (((setIt->first >> 8) & 0xFF0000) == rod_id_base[ibe][iside]) { + nBSErrors[ibe][iside] += 1. / nChipsTotal[ibe][iside]; + } + } + } + } + } + + const std::set<uint32_t> *errorset2[2] = { MissingErrorSet, SidErrorSet }; + + for (int iset = 0; iset < 2; ++iset) { + for (auto setIt = errorset2[iset]->begin(); setIt != errorset2[iset]->end(); ++setIt) { + for (int ibe = 0; ibe < 2; ++ibe) { + for (int iside = 0; iside < 2; ++iside) { + if (((*setIt >> 8) & 0xFF0000) == rod_id_base[ibe][iside]) { + nBSErrors[ibe][iside] += 1. / nChipsTotal[ibe][iside]; + } + } + } + } + } + + for (int ibe = 0; ibe < 2; ++ibe) { + for (int iside = 0; iside < 2; ++iside) { ChipBSErrorsVsLB_x = lumiBlock; ChipBSErrorsVsLB_y = nBSErrors[ibe][iside]; - fill("RDOShiftSmryRebinnedHistograms"+std::to_string(ibe)+std::to_string(iside), ChipBSErrorsVsLB_x, ChipBSErrorsVsLB_y); -// m_hChipBSErrorsVsLB[ibe][iside]->Fill(lumiBlock, nBSErrors[ibe][iside]); -// m_hChipBSErrorsVsLB[ibe][iside]->SetEntries(lumiBlock); // we need this so the LastBinThreshold algorithm can find the last bin - } - } - - for (auto setIt = RobStatusErrorSet->begin(); setIt != RobStatusErrorSet->end(); ++setIt) { - for (int ibe = 0; ibe < 2; ++ibe) { - for (int iside = 0; iside < 2; ++iside) { - if (setIt->first % rod_id_base[ibe][iside] < 0xffff) { - nRobErrors[ibe][iside] += 1. / nRobsTotal[ibe][iside]; - } - } - } - } - - for (int ibe = 0; ibe < 2; ++ibe) { - for (int iside = 0; iside < 2; ++iside) { + for (unsigned int i = 0; i < lumiBlock; i++) { + // we need this so the LastBinThreshold algorithm can find the last bin + fill("RDOShiftSmryRebinnedHistograms"+std::to_string(ibe)+std::to_string(iside), ChipBSErrorsVsLB_x, ChipBSErrorsVsLB_y); + } + } + } + + for (auto setIt = RobStatusErrorSet->begin(); setIt != RobStatusErrorSet->end(); ++setIt) { + for (int ibe = 0; ibe < 2; ++ibe) { + for (int iside = 0; iside < 2; ++iside) { + if (setIt->first % rod_id_base[ibe][iside] < 0xffff) { + nRobErrors[ibe][iside] += 1. / nRobsTotal[ibe][iside]; + } + } + } + } + + for (int ibe = 0; ibe < 2; ++ibe) { + for (int iside = 0; iside < 2; ++iside) { RobBSErrorsVsLB_x = lumiBlock; RobBSErrorsVsLB_y = nRobErrors[ibe][iside]; - fill("RDOShiftSmryRebinnedHistograms"+std::to_string(ibe)+std::to_string(iside), RobBSErrorsVsLB_x, RobBSErrorsVsLB_y); -// m_hRobBSErrorsVsLB[ibe][iside]->Fill(lumiBlock, nRobErrors[ibe][iside]); -// m_hRobBSErrorsVsLB[ibe][iside]->SetEntries(lumiBlock); // we need this so the LastBinThreshold algorithm can find the last bin - } - } + for (unsigned int i = 0; i < lumiBlock; i++) { + // we need this so the LastBinThreshold algorithm can find the last bin + fill("RDOShiftSmryRebinnedHistograms"+std::to_string(ibe)+std::to_string(iside), RobBSErrorsVsLB_x, RobBSErrorsVsLB_y); + } + } + } ATH_MSG_VERBOSE("Leaving Fill TRT RDO Histograms"); return StatusCode::SUCCESS; } - - - - // Fill the TRT Efficiency Histograms //----------------------------------------------------------------------------------// StatusCode TRTMonitoringRun3RAW_Alg::fillTRTEfficiency(const TrackCollection& combTrackCollection) const { //----------------------------------------------------------------------------------// - ATH_MSG_VERBOSE("Filling TRT Efficiency Histograms"); - + ATH_MSG_VERBOSE("Filling TRT Efficiency Histograms"); + // TEfficiency auto Efficiency_eta = Monitored::Scalar<float>("Efficiency_eta", 0.0); auto Efficiency_phi = Monitored::Scalar<float>("Efficiency_phi", 0.0); @@ -1295,10 +1780,10 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTEfficiency(const TrackCollection& co auto EfficiencyEndCap_locR_Ar = Monitored::Scalar<float>("EfficiencyEndCap_locR_Ar", 0.0); auto EfficiencyS = Monitored::Scalar<float>("EfficiencyS", 0.0); auto EfficiencyC = Monitored::Scalar<float>("EfficiencyC", 0.0); - auto Efficiency_eta_passed = Monitored::Scalar<bool>("Efficiency_eta_passed", false); - auto Efficiency_phi_passed = Monitored::Scalar<bool>("Efficiency_phi_passed", false); - auto Efficiency_pt_passed = Monitored::Scalar<bool>("Efficiency_pt_passed", false); - auto Efficiency_z0_passed = Monitored::Scalar<bool>("Efficiency_z0_passed", false); + auto Efficiency_eta_passed = Monitored::Scalar<float>("Efficiency_eta_passed", 0.0); + auto Efficiency_phi_passed = Monitored::Scalar<float>("Efficiency_phi_passed", 0.0); + auto Efficiency_pt_passed = Monitored::Scalar<float>("Efficiency_pt_passed", 0.0); + auto Efficiency_z0_passed = Monitored::Scalar<float>("Efficiency_z0_passed", 0.0); auto EfficiencyBarrel_locR_passed = Monitored::Scalar<bool>("EfficiencyBarrel_locR_passed", false); auto EfficiencyBarrel_locR_Ar_passed = Monitored::Scalar<bool>("EfficiencyBarrel_locR_Ar_passed", false); auto EfficiencyBarrelMap_passed = Monitored::Scalar<bool>("EfficiencyBarrelMap_passed", false); @@ -1308,148 +1793,148 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTEfficiency(const TrackCollection& co auto EfficiencyS_passed = Monitored::Scalar<bool>("EfficiencyS_passed", false); auto EfficiencyC_passed = Monitored::Scalar<bool>("EfficiencyC_passed", false); - // Reduce unnecessary divisions - const float invGeV = 1. / CLHEP::GeV; - const float invmm = 1. / CLHEP::mm; - int itrack = 0; + // Reduce unnecessary divisions + const float invGeV = 1. / CLHEP::GeV; + const float invmm = 1. / CLHEP::mm; + int itrack = 0; float track_pt = 0; float track_eta = 0; float track_phi = 0; float track_d0 = 0; float track_z0 = 0; - for (auto track = combTrackCollection.begin(); track != combTrackCollection.end(); ++track) { - // Online: use all tracks, offline: use only every xth track, skip the rest + for (auto track = combTrackCollection.begin(); track != combTrackCollection.end(); ++track) { + // Online: use all tracks, offline: use only every xth track, skip the rest if (m_environment != Environment_t::online && (itrack % m_every_xth_track) != 0) continue; - - ++itrack; - // Get perigee - const Trk::Perigee *perigee = (*track)->perigeeParameters(); - - if (perigee) { - track_pt = perigee->pT(); - track_eta = perigee->eta(); - track_phi = perigee->parameters()[Trk::phi0]; - track_d0 = perigee->parameters()[Trk::d0]; - track_z0 = perigee->parameters()[Trk::z0]; - ATH_MSG_DEBUG("This track has perigee parameters:\n" - << " pT = " << track_pt * invGeV << " GeV" << "\n" - << " eta = " << track_eta << "\n" - << " phi0 = " << track_phi << "\n" - << " d0 = " << track_d0 * invmm << "\n" - << " z0 = " << track_z0 * invmm << "\n" - << " theta = " << perigee->parameters()[Trk::theta] << "\n" - << " qOverP = " << perigee->parameters()[Trk::qOverP]); - } else { - ATH_MSG_DEBUG("This track has null perigeeParameters."); - continue; - } - - const DataVector<const Trk::TrackStateOnSurface> *track_states = (*track)->trackStateOnSurfaces(); - - if (track_states) { - ATH_MSG_DEBUG("This track has " << track_states->size() << " track states on surface."); - } else { - ATH_MSG_DEBUG("This track has null track states on surface."); - continue; - } - - const std::unique_ptr<const Trk::TrackSummary> summary(m_TrackSummaryTool->summary(*(*track))); - int n_trt_hits = summary->get(Trk::numberOfTRTHits); - int n_sct_hits = summary->get(Trk::numberOfSCTHits); - int n_pixel_hits = summary->get(Trk::numberOfPixelHits); - float p = 1.0e+08; - - if (perigee) { - p = (perigee->parameters()[Trk::qOverP] != 0.) ? fabs(1. / (perigee->parameters()[Trk::qOverP])) : 1.0e+08; - } - - float min_pt_new = m_min_pT; - - if (m_isCosmics == false) { - min_pt_new = 2.0 * CLHEP::GeV; - } - // Preselect tracks - const bool passed_track_preselection = - (fabs(perigee->parameters()[Trk::d0]) < m_max_abs_d0) && - (fabs(perigee->parameters()[Trk::z0]) < m_max_abs_z0) && - (perigee->pT() > min_pt_new) && - (p > m_minP) && - (fabs(perigee->eta()) < m_max_abs_eta) && - (n_pixel_hits >= m_min_pixel_hits) && - (n_sct_hits >= m_min_sct_hits) && - (n_trt_hits >= m_min_trt_hits); - ATH_MSG_DEBUG("track has ntrt = " << n_trt_hits - << " and nsct = " << n_sct_hits - << " and npix = " << n_pixel_hits); - - if (!passed_track_preselection) { - ATH_MSG_DEBUG("This track failed preselection."); - continue; - } - - ATH_MSG_DEBUG("This track passed preselection."); - - for (auto it = track_states->begin(); it != track_states->end(); it++) { - if ( !((*it)->type(Trk::TrackStateOnSurface::Measurement)) ) continue; - - const Trk::TrackParameters *track_parameters = (*it)->trackParameters(); - - if (!track_parameters) continue; - - Identifier id = track_parameters->associatedSurface().associatedDetectorElementIdentifier(); - - if ( !((m_pTRTHelper->is_trt(id)) )) continue; - - float locR = track_parameters->parameters()[Trk::driftRadius]; - int barrel_ec = m_pTRTHelper->barrel_ec(id); - int layer_or_wheel = m_pTRTHelper->layer_or_wheel(id); - int phi_module = m_pTRTHelper->phi_module(id); - int straw_layer = m_pTRTHelper->straw_layer(id); - int straw = m_pTRTHelper->straw(id); - const bool isArgonStraw = (Straw_Gastype( m_sumTool->getStatusHT(id) ) == GasType::Ar); - // Assume always Xe if m_ArgonXenonSplitter is not enabled, otherwise check the straw status (good is Xe, non-good is Ar) - int ibe = abs(barrel_ec) - 1; // ibe = 0 (Barrel), ibe = 1 (Endcap) - int iside = barrel_ec > 0 ? 0 : 1; // iside = 0 (Side A), iside = 1 (Side C) - - if (ibe == 0) { - if (isArgonStraw) { + + ++itrack; + // Get perigee + const Trk::Perigee *perigee = (*track)->perigeeParameters(); + + if (perigee) { + track_pt = perigee->pT(); + track_eta = perigee->eta(); + track_phi = perigee->parameters()[Trk::phi0]; + track_d0 = perigee->parameters()[Trk::d0]; + track_z0 = perigee->parameters()[Trk::z0]; + ATH_MSG_DEBUG("This track has perigee parameters:\n" + << " pT = " << track_pt * invGeV << " GeV" << "\n" + << " eta = " << track_eta << "\n" + << " phi0 = " << track_phi << "\n" + << " d0 = " << track_d0 * invmm << "\n" + << " z0 = " << track_z0 * invmm << "\n" + << " theta = " << perigee->parameters()[Trk::theta] << "\n" + << " qOverP = " << perigee->parameters()[Trk::qOverP]); + } else { + ATH_MSG_DEBUG("This track has null perigeeParameters."); + continue; + } + + const DataVector<const Trk::TrackStateOnSurface> *track_states = (*track)->trackStateOnSurfaces(); + + if (track_states) { + ATH_MSG_DEBUG("This track has " << track_states->size() << " track states on surface."); + } else { + ATH_MSG_DEBUG("This track has null track states on surface."); + continue; + } + + const std::unique_ptr<const Trk::TrackSummary> summary(m_TrackSummaryTool->summary(*(*track))); + int n_trt_hits = summary->get(Trk::numberOfTRTHits); + int n_sct_hits = summary->get(Trk::numberOfSCTHits); + int n_pixel_hits = summary->get(Trk::numberOfPixelHits); + float p = 1.0e+08; + + if (perigee) { + p = (perigee->parameters()[Trk::qOverP] != 0.) ? fabs(1. / (perigee->parameters()[Trk::qOverP])) : 1.0e+08; + } + + float min_pt_new = m_min_pT; + + if (m_isCosmics == false) { + min_pt_new = 2.0 * CLHEP::GeV; + } + // Preselect tracks + const bool passed_track_preselection = + (fabs(perigee->parameters()[Trk::d0]) < m_max_abs_d0) && + (fabs(perigee->parameters()[Trk::z0]) < m_max_abs_z0) && + (perigee->pT() > min_pt_new) && + (p > m_minP) && + (fabs(perigee->eta()) < m_max_abs_eta) && + (n_pixel_hits >= m_min_pixel_hits) && + (n_sct_hits >= m_min_sct_hits) && + (n_trt_hits >= m_min_trt_hits); + ATH_MSG_DEBUG("track has ntrt = " << n_trt_hits + << " and nsct = " << n_sct_hits + << " and npix = " << n_pixel_hits); + + if (!passed_track_preselection) { + ATH_MSG_DEBUG("This track failed preselection."); + continue; + } + + ATH_MSG_DEBUG("This track passed preselection."); + + for (auto it = track_states->begin(); it != track_states->end(); it++) { + if ( !((*it)->type(Trk::TrackStateOnSurface::Measurement)) ) continue; + + const Trk::TrackParameters *track_parameters = (*it)->trackParameters(); + + if (!track_parameters) continue; + + Identifier id = track_parameters->associatedSurface().associatedDetectorElementIdentifier(); + + if ( !((m_pTRTHelper->is_trt(id)) )) continue; + + float locR = track_parameters->parameters()[Trk::driftRadius]; + int barrel_ec = m_pTRTHelper->barrel_ec(id); + int layer_or_wheel = m_pTRTHelper->layer_or_wheel(id); + int phi_module = m_pTRTHelper->phi_module(id); + int straw_layer = m_pTRTHelper->straw_layer(id); + int straw = m_pTRTHelper->straw(id); + const bool isArgonStraw = (Straw_Gastype( m_sumTool->getStatusHT(id) ) == GasType::Ar); + // Assume always Xe if m_ArgonXenonSplitter is not enabled, otherwise check the straw status (good is Xe, non-good is Ar) + int ibe = abs(barrel_ec) - 1; // ibe = 0 (Barrel), ibe = 1 (Endcap) + int iside = barrel_ec > 0 ? 0 : 1; // iside = 0 (Side A), iside = 1 (Side C) + + if (ibe == 0) { + if (isArgonStraw) { EfficiencyBarrel_locR_Ar = locR; EfficiencyBarrel_locR_Ar_passed = 1.0; fill("TRTEfficiencyHistogramsBarrel", EfficiencyBarrel_locR_Ar_passed, EfficiencyBarrel_locR_Ar); - } else { + } else { EfficiencyBarrel_locR = locR; EfficiencyBarrel_locR_passed = 1.0; fill("TRTEfficiencyHistogramsBarrel", EfficiencyBarrel_locR_passed, EfficiencyBarrel_locR); - } - } else if (ibe == 1) { - if (isArgonStraw) { + } + } else if (ibe == 1) { + if (isArgonStraw) { EfficiencyBarrel_locR_Ar = locR; EfficiencyBarrel_locR_Ar_passed = 1.0; fill("TRTEfficiencyHistogramsEndCap"+std::to_string(iside), EfficiencyBarrel_locR_Ar_passed, EfficiencyBarrel_locR_Ar); - } else { + } else { EfficiencyEndCap_locR = locR; EfficiencyEndCap_locR_passed = 1.0; fill("TRTEfficiencyHistogramsEndCap"+std::to_string(iside), EfficiencyEndCap_locR_passed, EfficiencyEndCap_locR); - } - } + } + } - if (fabs(locR) >= 1.3) continue; + if (fabs(locR) >= 1.3) continue; - int thisStrawNumber = 0; - int chip = 0; + int thisStrawNumber = 0; + int chip = 0; - if (ibe == 0) { - thisStrawNumber = strawNumber(straw, straw_layer, layer_or_wheel); + if (ibe == 0) { + thisStrawNumber = strawNumber(straw, straw_layer, layer_or_wheel); - if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) - chip = m_mat_chip_B[phi_module][thisStrawNumber]; - } else if (ibe == 1) { - thisStrawNumber = strawNumberEndCap(straw, straw_layer, layer_or_wheel, phi_module, barrel_ec); + if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) + chip = m_mat_chip_B[phi_module][thisStrawNumber]; + } else if (ibe == 1) { + thisStrawNumber = strawNumberEndCap(straw, straw_layer, layer_or_wheel, phi_module, barrel_ec); - if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) - chip = m_mat_chip_E[phi_module][thisStrawNumber]; - } + if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) + chip = m_mat_chip_E[phi_module][thisStrawNumber]; + } if (ibe == 0) { EfficiencyBarrelMap = thisStrawNumber; @@ -1461,110 +1946,110 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTEfficiency(const TrackCollection& co fill("TRTEfficiencyHistogramsEndCap", EfficiencyEndCapMap_passed, EfficiencyEndCapMap); } - if (m_doExpert) { - if (iside == 0) { + if (m_doExpert) { + if (iside == 0) { EfficiencyS = thisStrawNumber; EfficiencyS_passed = 1.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module), EfficiencyS_passed, EfficiencyS); EfficiencyC = chip; EfficiencyC_passed = 1.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module), EfficiencyC_passed, EfficiencyC); - } else if (iside == 1) { + } else if (iside == 1) { EfficiencyS = thisStrawNumber; EfficiencyS_passed = 1.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module + 32), EfficiencyS_passed, EfficiencyS); EfficiencyC = chip; EfficiencyC_passed = 1.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module + 32), EfficiencyC_passed, EfficiencyC); - } - } + } + } - Efficiency_eta = track_eta; - Efficiency_eta_passed = 1.0; + Efficiency_eta_passed = track_eta; + Efficiency_eta = 1.0; fill("TRTEfficiencyHistograms", Efficiency_eta_passed, Efficiency_eta); - Efficiency_phi = track_phi; - Efficiency_phi_passed = 1.0; + Efficiency_phi_passed = track_phi; + Efficiency_phi = 1.0; fill("TRTEfficiencyHistograms", Efficiency_phi_passed, Efficiency_phi); - Efficiency_pt = track_pt*invGeV; - Efficiency_pt_passed = 1.0; + Efficiency_pt_passed = track_pt*invGeV; + Efficiency_pt = 1.0; fill("TRTEfficiencyHistograms", Efficiency_pt_passed, Efficiency_pt); - Efficiency_z0 = track_z0; - Efficiency_z0_passed = 1.0; + Efficiency_z0_passed = track_z0; + Efficiency_z0 = 1.0; fill("TRTEfficiencyHistograms", Efficiency_z0_passed, Efficiency_z0); - } + } - // Use hole finder to find holes on this track - if (m_useHoleFinder) { - const DataVector<const Trk::TrackStateOnSurface> *holes = m_trt_hole_finder->getHolesOnTrack(**track); + // Use hole finder to find holes on this track + if (m_useHoleFinder) { + const DataVector<const Trk::TrackStateOnSurface> *holes = m_trt_hole_finder->getHolesOnTrack(**track); - if (!holes) { + if (!holes) { - ATH_MSG_WARNING("TRTTrackHoleSearchTool returned null results."); - continue; - } else { - for (auto it = holes->begin(); it != holes->end(); ++it) { - if ( !((*it)->type(Trk::TrackStateOnSurface::Hole)) ) continue; + ATH_MSG_WARNING("TRTTrackHoleSearchTool returned null results."); + continue; + } else { + for (auto it = holes->begin(); it != holes->end(); ++it) { + if ( !((*it)->type(Trk::TrackStateOnSurface::Hole)) ) continue; - const Trk::TrackParameters *track_parameters = (*it)->trackParameters(); + const Trk::TrackParameters *track_parameters = (*it)->trackParameters(); - if (!track_parameters) continue; + if (!track_parameters) continue; - Identifier id = track_parameters->associatedSurface().associatedDetectorElementIdentifier(); + Identifier id = track_parameters->associatedSurface().associatedDetectorElementIdentifier(); - if ( !(m_pTRTHelper->is_trt(id)) ) continue; + if ( !(m_pTRTHelper->is_trt(id)) ) continue; - float locR = track_parameters->parameters()[Trk::driftRadius]; - int barrel_ec = m_pTRTHelper->barrel_ec(id); - int layer_or_wheel = m_pTRTHelper->layer_or_wheel(id); - int phi_module = m_pTRTHelper->phi_module(id); - int straw_layer = m_pTRTHelper->straw_layer(id); - int straw = m_pTRTHelper->straw(id); - const bool isArgonStraw = Straw_Gastype( m_sumTool->getStatusHT(id) ) == GasType::Ar; - // Assume always Xe if m_ArgonXenonSplitter is not enabled, otherwise check the straw status (good is Xe, non-good is Ar) - int ibe = abs(barrel_ec) - 1; // ibe = 0 (Barrel), ibe = 1 (Endcap) - int iside = barrel_ec > 0 ? 0 : 1; // iside = 0 (Side A), iside = 1 (Side C) + float locR = track_parameters->parameters()[Trk::driftRadius]; + int barrel_ec = m_pTRTHelper->barrel_ec(id); + int layer_or_wheel = m_pTRTHelper->layer_or_wheel(id); + int phi_module = m_pTRTHelper->phi_module(id); + int straw_layer = m_pTRTHelper->straw_layer(id); + int straw = m_pTRTHelper->straw(id); + const bool isArgonStraw = Straw_Gastype( m_sumTool->getStatusHT(id) ) == GasType::Ar; + // Assume always Xe if m_ArgonXenonSplitter is not enabled, otherwise check the straw status (good is Xe, non-good is Ar) + int ibe = abs(barrel_ec) - 1; // ibe = 0 (Barrel), ibe = 1 (Endcap) + int iside = barrel_ec > 0 ? 0 : 1; // iside = 0 (Side A), iside = 1 (Side C) - if (ibe == 0) { - if (isArgonStraw) { + if (ibe == 0) { + if (isArgonStraw) { EfficiencyBarrel_locR_Ar = locR; EfficiencyBarrel_locR_Ar_passed = 0.0; fill("TRTEfficiencyHistograms", EfficiencyBarrel_locR_Ar_passed, EfficiencyBarrel_locR_Ar); - } else { + } else { EfficiencyBarrel_locR = locR; EfficiencyBarrel_locR_passed = 0.0; fill("TRTEfficiencyHistograms", EfficiencyBarrel_locR_passed, EfficiencyBarrel_locR); - } - } else if (ibe == 1) { - if (isArgonStraw) { + } + } else if (ibe == 1) { + if (isArgonStraw) { EfficiencyEndCap_locR_Ar = locR; EfficiencyEndCap_locR_Ar_passed = 0.0; fill("TRTEfficiencyHistogramsEndCap"+std::to_string(iside), EfficiencyEndCap_locR_Ar_passed, EfficiencyEndCap_locR_Ar); - } else { + } else { EfficiencyEndCap_locR = locR; EfficiencyEndCap_locR_passed = 0.0; fill("TRTEfficiencyHistogramsEndCap"+std::to_string(iside), EfficiencyEndCap_locR_passed, EfficiencyEndCap_locR); - } - } + } + } + + if (fabs(locR) >= 1.3) continue; - if (fabs(locR) >= 1.3) continue; + int thisStrawNumber = 0; + int chip = 0; - int thisStrawNumber = 0; - int chip = 0; + if (ibe == 0) { + thisStrawNumber = strawNumber(straw, straw_layer, layer_or_wheel); - if (ibe == 0) { - thisStrawNumber = strawNumber(straw, straw_layer, layer_or_wheel); + if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) { + chip = m_mat_chip_B[phi_module][thisStrawNumber]; + } + } else if (ibe == 1) { + thisStrawNumber = strawNumberEndCap(straw, straw_layer, layer_or_wheel, phi_module, barrel_ec); - if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) { - chip = m_mat_chip_B[phi_module][thisStrawNumber]; - } - } else if (ibe == 1) { - thisStrawNumber = strawNumberEndCap(straw, straw_layer, layer_or_wheel, phi_module, barrel_ec); + if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) { + chip = m_mat_chip_E[phi_module][thisStrawNumber]; + } + } - if (thisStrawNumber >= 0 && thisStrawNumber < s_Straw_max[ibe]) { - chip = m_mat_chip_E[phi_module][thisStrawNumber]; - } - } - if (ibe == 0) { EfficiencyBarrelMap = thisStrawNumber; EfficiencyBarrelMap_passed = 0.0; @@ -1575,46 +2060,46 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTEfficiency(const TrackCollection& co fill("TRTEfficiencyHistogramsEndCap", EfficiencyEndCapMap_passed, EfficiencyEndCapMap); } - if (m_doExpert) { - if (iside == 0) { + if (m_doExpert) { + if (iside == 0) { EfficiencyS = thisStrawNumber; EfficiencyS_passed = 0.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module), EfficiencyS_passed, EfficiencyS); EfficiencyC = chip; EfficiencyC_passed = 0.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module), EfficiencyC_passed, EfficiencyC); - } else if (iside == 1) { + } else if (iside == 1) { EfficiencyS = thisStrawNumber; EfficiencyS_passed = 0.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module + 32), EfficiencyS_passed, EfficiencyS); EfficiencyC = chip; EfficiencyC_passed = 0.0; fill("TRTEfficiencyHistograms"+std::to_string(ibe)+std::to_string(phi_module + 32), EfficiencyC_passed, EfficiencyC); - } - } - Efficiency_eta = track_eta; - Efficiency_eta_passed = 0.0; + } + } + Efficiency_eta_passed = track_eta; + Efficiency_eta = 0.0; fill("TRTEfficiencyHistograms", Efficiency_eta_passed, Efficiency_eta); - Efficiency_phi = track_phi; - Efficiency_phi_passed = 0.0; + Efficiency_phi_passed = track_phi; + Efficiency_phi = 0.0; fill("TRTEfficiencyHistograms", Efficiency_phi_passed, Efficiency_phi); - Efficiency_pt = track_pt*invGeV; - Efficiency_pt_passed = 0.0; + Efficiency_pt_passed = track_pt*invGeV; + Efficiency_pt = 0.0; fill("TRTEfficiencyHistograms", Efficiency_pt_passed, Efficiency_pt); - Efficiency_z0 = track_z0; - Efficiency_z0_passed = 0.0; - fill("TRTEfficiencyHistograms", Efficiency_z0_passed, Efficiency_z0); - } + Efficiency_z0_passed = track_z0; + Efficiency_z0 = 0.0; + fill("TRTEfficiencyHistograms", Efficiency_z0_passed, Efficiency_z0); + } - delete holes; - } - } - } + delete holes; + } + } + } // Efficiency calculations // Insert here - return StatusCode::SUCCESS; + return StatusCode::SUCCESS; } @@ -1623,114 +2108,103 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTEfficiency(const TrackCollection& co StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCollection) const { //----------------------------------------------------------------------------------// ATH_MSG_VERBOSE("Filling TRT Tracks Histos"); - + // TH1F - auto HLhitOnTrack_B = Monitored::Scalar<float>("HLhitOnTrack_B", 0.0); - auto HLhitOnTrack_E = Monitored::Scalar<float>("HLhitOnTrack_E", 0.0); - auto HitWonTMap_B = Monitored::Scalar<float>("HitWonTMap_B", 0.0); - auto HitWonTMap_E = Monitored::Scalar<float>("HitWonTMap_E", 0.0); - auto HtoLRatioOnTrack_B_Ar = Monitored::Scalar<float>("HtoLRatioOnTrack_B_Ar", 0.0); - auto HtoLRatioOnTrack_B_Xe = Monitored::Scalar<float>("HtoLRatioOnTrack_B_Xe", 0.0); - auto HtoLRatioOnTrack_B = Monitored::Scalar<float>("HtoLRatioOnTrack_B", 0.0); - auto HtoLRatioOnTrack_E = Monitored::Scalar<float>("HtoLRatioOnTrack_E", 0.0); - auto HtoLRatioOnTrack_E_Ar = Monitored::Scalar<float>("HtoLRatioOnTrack_E_Ar", 0.0); - auto HtoLRatioOnTrack_E_Xe = Monitored::Scalar<float>("HtoLRatioOnTrack_E_Xe", 0.0); - auto NumSwLLWoT_E = Monitored::Scalar<float>("NumSwLLWoT_E", 0.0); - auto NumSwLLWoT_B = Monitored::Scalar<float>("NumSwLLWoT_B", 0.0); - + auto HLhitOnTrack_B = Monitored::Scalar<float>("HLhitOnTrack_B", 0.0); + auto HLhitOnTrack_E = Monitored::Scalar<float>("HLhitOnTrack_E", 0.0); + auto HitWonTMap_B = Monitored::Scalar<float>("HitWonTMap_B", 0.0); + auto HitWonTMap_E = Monitored::Scalar<float>("HitWonTMap_E", 0.0); + auto HtoLRatioOnTrack_B_Ar = Monitored::Scalar<float>("HtoLRatioOnTrack_B_Ar", 0.0); + auto HtoLRatioOnTrack_B_Xe = Monitored::Scalar<float>("HtoLRatioOnTrack_B_Xe", 0.0); + auto HtoLRatioOnTrack_B = Monitored::Scalar<float>("HtoLRatioOnTrack_B", 0.0); + auto HtoLRatioOnTrack_E = Monitored::Scalar<float>("HtoLRatioOnTrack_E", 0.0); + auto HtoLRatioOnTrack_E_Ar = Monitored::Scalar<float>("HtoLRatioOnTrack_E_Ar", 0.0); + auto HtoLRatioOnTrack_E_Xe = Monitored::Scalar<float>("HtoLRatioOnTrack_E_Xe", 0.0); + auto NumSwLLWoT_E = Monitored::Scalar<float>("NumSwLLWoT_E", 0.0); + auto NumSwLLWoT_B = Monitored::Scalar<float>("NumSwLLWoT_B", 0.0); + auto HitHWonTMapS = Monitored::Scalar<float>("HitHWonTMapS", 0.0); + auto HitWonTMapS = Monitored::Scalar<float>("HitWonTMapS", 0.0); + auto HitAonTMapS = Monitored::Scalar<float>("HitAonTMapS", 0.0); + auto HitAWonTMapS = Monitored::Scalar<float>("HitAWonTMapS", 0.0); + auto HitHonTMapS = Monitored::Scalar<float>("HitHonTMapS", 0.0); + auto HitHWonTMapC = Monitored::Scalar<float>("HitHWonTMapC", 0.0); + auto HitWonTMapC = Monitored::Scalar<float>("HitWonTMapC", 0.0); + auto HitAonTMapC = Monitored::Scalar<float>("HitAonTMapC", 0.0); + auto HitAWonTMapC = Monitored::Scalar<float>("HitAWonTMapC", 0.0); + auto HitHonTMapC = Monitored::Scalar<float>("HitHonTMapC", 0.0); + // TEfficiency - auto StrawEffDetPhi_B = Monitored::Scalar<float>("StrawEffDetPhi_B", 0.0); - auto StrawEffDetPhi_B_passed = Monitored::Scalar<bool>("StrawEffDetPhi_B_passed", false); - auto StrawEffDetPhi_E = Monitored::Scalar<float>("StrawEffDetPhi_E", 0.0); - auto StrawEffDetPhi_E_passed = Monitored::Scalar<bool>("StrawEffDetPhi_E_passed", false); - auto EfficiencyS = Monitored::Scalar<float>("EfficiencyS", 0.0); - auto EfficiencyS_passed = Monitored::Scalar<bool>("EfficiencyS_passed", false); - auto EfficiencyC = Monitored::Scalar<float>("EfficiencyC", 0.0); - auto EfficiencyC_passed = Monitored::Scalar<bool>("EfficiencyC_passed", false); - auto HitHonTMapS = Monitored::Scalar<float>("HitHonTMapS", 0.0); - auto HitHonTMapS_passed = Monitored::Scalar<bool>("HitHonTMapS_passed", false); - auto HitHWonTMapS = Monitored::Scalar<float>("HitHWonTMapS", 0.0); - auto HitHWonTMapS_passed = Monitored::Scalar<bool>("HitHWonTMapS_passed", false); - auto HitHWonTMapC = Monitored::Scalar<float>("HitHWonTMapC", 0.0); - auto HitHWonTMapC_passed = Monitored::Scalar<bool>("HitHWonTMapC_passed", false); - auto HitHonTMapC = Monitored::Scalar<float>("HitHonTMapC", 0.0); - auto HitHonTMapC_passed = Monitored::Scalar<bool>("HitHonTMapC_passed", false); - auto HitWonTMapS = Monitored::Scalar<float>("HitWonTMapS", 0.0); - auto HitWonTMapS_passed = Monitored::Scalar<bool>("HitWonTMapS_passed", false); - auto HitWonTMapC = Monitored::Scalar<float>("HitWonTMapC", 0.0); - auto HitWonTMapC_passed = Monitored::Scalar<bool>("HitWonTMapC_passed", false); - auto HitAonTMapS = Monitored::Scalar<float>("HitAonTMapS", 0.0); - auto HitAonTMapS_passed = Monitored::Scalar<bool>("HitAonTMapS_passed", false); - auto HitAonTMapC = Monitored::Scalar<float>("HitAonTMapC", 0.0); - auto HitAonTMapC_passed = Monitored::Scalar<bool>("HitAonTMapC_passed", false); - auto HitAWonTMapS = Monitored::Scalar<float>("HitAWonTMapS", 0.0); - auto HitAWonTMapS_passed = Monitored::Scalar<bool>("HitAWonTMapS_passed", false); - auto HitAWonTMapC = Monitored::Scalar<float>("HitAWonTMapC", 0.0); - auto HitAWonTMapC_passed = Monitored::Scalar<bool>("HitAWonTMapC_passed", false); - auto HtoLonTMapS = Monitored::Scalar<float>("HtoLonTMapS", 0.0); - auto HtoLonTMapS_passed = Monitored::Scalar<bool>("HtoLonTMapS_passed", false); - auto HtoLWonTMapS = Monitored::Scalar<float>("HtoLWonTMapS", 0.0); - auto HtoLWonTMapS_passed = Monitored::Scalar<bool>("HtoLWonTMapS_passed", false); - auto HtoLonTMapC = Monitored::Scalar<float>("HtoLonTMapC", 0.0); - auto HtoLonTMapC_passed = Monitored::Scalar<bool>("HtoLonTMapC_passed", false); - auto HtoLWonTMapC = Monitored::Scalar<float>("HtoLWonTMapC", 0.0); - auto HtoLWonTMapC_passed = Monitored::Scalar<bool>("HtoLWonTMapC_passed", false); - - auto HitTronTMapC_x = Monitored::Scalar<float>("HitTronTMapC_x", 0.0); - auto HitTronTMapC_y = Monitored::Scalar<float>("HitTronTMapC_y", 0.0); - auto HitonTrackVAllS_x = Monitored::Scalar<float>("HitonTrackVAllS_x", 0.0); - auto HitonTrackVAllS_y = Monitored::Scalar<float>("HitonTrackVAllS_y", 0.0); - + auto StrawEffDetPhi_B = Monitored::Scalar<float>("StrawEffDetPhi_B", 0.0); + auto StrawEffDetPhi_B_passed = Monitored::Scalar<float>("StrawEffDetPhi_B_passed", 0.0); + auto StrawEffDetPhi_E = Monitored::Scalar<float>("StrawEffDetPhi_E", 0.0); + auto StrawEffDetPhi_E_passed = Monitored::Scalar<float>("StrawEffDetPhi_E_passed", 0.0); + auto EfficiencyS = Monitored::Scalar<float>("EfficiencyS", 0.0); + auto EfficiencyS_passed = Monitored::Scalar<bool>("EfficiencyS_passed", false); + auto EfficiencyC = Monitored::Scalar<float>("EfficiencyC", 0.0); + auto EfficiencyC_passed = Monitored::Scalar<bool>("EfficiencyC_passed", false); + auto HtoLonTMapS = Monitored::Scalar<float>("HtoLonTMapS", 0.0); + auto HtoLonTMapS_passed = Monitored::Scalar<bool>("HtoLonTMapS_passed", false); + auto HtoLWonTMapS = Monitored::Scalar<float>("HtoLWonTMapS", 0.0); + auto HtoLWonTMapS_passed = Monitored::Scalar<bool>("HtoLWonTMapS_passed", false); + auto HtoLonTMapC = Monitored::Scalar<float>("HtoLonTMapC", 0.0); + auto HtoLonTMapC_passed = Monitored::Scalar<bool>("HtoLonTMapC_passed", false); + auto HtoLWonTMapC = Monitored::Scalar<float>("HtoLWonTMapC", 0.0); + auto HtoLWonTMapC_passed = Monitored::Scalar<bool>("HtoLWonTMapC_passed", false); + auto HitTronTMapC_x = Monitored::Scalar<float>("HitTronTMapC_x", 0.0); + auto HitTronTMapC_y = Monitored::Scalar<float>("HitTronTMapC_y", 0.0); + auto HitonTrackVAllS_x = Monitored::Scalar<float>("HitonTrackVAllS_x", 0.0); + auto HitonTrackVAllS_y = Monitored::Scalar<float>("HitonTrackVAllS_y", 0.0); + auto p_trk = trackCollection.begin(); const Trk::Perigee *mPer = nullptr; const DataVector<const Trk::TrackParameters> *AllTrkPar(0); DataVector<const Trk::TrackParameters>::const_iterator p_trkpariter; - int ntrackstack[2][64]; + int ntrackstack[2][64]; - for (int ibe = 0; ibe < 2; ibe++) { - std::fill(ntrackstack[ibe], ntrackstack[ibe] + 64, 0); - } + for (int ibe = 0; ibe < 2; ibe++) { + std::fill(ntrackstack[ibe], ntrackstack[ibe] + 64, 0); + } - for (; p_trk != trackCollection.end(); ++p_trk) { - const std::unique_ptr<const Trk::TrackSummary> summary(m_TrackSummaryTool->summary(*(*p_trk))); - int nTRTHits = summary->get(Trk::numberOfTRTHits); + for (; p_trk != trackCollection.end(); ++p_trk) { + const std::unique_ptr<const Trk::TrackSummary> summary(m_TrackSummaryTool->summary(*(*p_trk))); + int nTRTHits = summary->get(Trk::numberOfTRTHits); - if (nTRTHits < m_minTRThits) continue; + if (nTRTHits < m_minTRThits) continue; - AllTrkPar = (*p_trk)->trackParameters(); + AllTrkPar = (*p_trk)->trackParameters(); - // Search of MeasuredPerigee in TrackParameters - // The following algorithm only finds the First perigee measurement. - // As there should be one and only one perigee measurement then this assumption should be valid. - // But no check is done to see if there is more than one perigee measurement. - for (p_trkpariter = AllTrkPar->begin(); p_trkpariter != AllTrkPar->end(); ++p_trkpariter) { - //if track parameter does have a measured perigee then the track parameter is a keeper and break out of the loop - if ((mPer = dynamic_cast<const Trk::Perigee *>(*p_trkpariter))) break; - } + // Search of MeasuredPerigee in TrackParameters + // The following algorithm only finds the First perigee measurement. + // As there should be one and only one perigee measurement then this assumption should be valid. + // But no check is done to see if there is more than one perigee measurement. + for (p_trkpariter = AllTrkPar->begin(); p_trkpariter != AllTrkPar->end(); ++p_trkpariter) { + //if track parameter does have a measured perigee then the track parameter is a keeper and break out of the loop + if ((mPer = dynamic_cast<const Trk::Perigee *>(*p_trkpariter))) break; + } - if (!mPer) continue; + if (!mPer) continue; - float theta = mPer->parameters()[Trk::theta]; - float p = (mPer->parameters()[Trk::qOverP] != 0.) ? fabs(1. / (mPer->parameters()[Trk::qOverP])) : 10e7; - float pT = (p * sin(theta)); - pT = pT * 1e-3; // GeV + float theta = mPer->parameters()[Trk::theta]; + float p = (mPer->parameters()[Trk::qOverP] != 0.) ? fabs(1. / (mPer->parameters()[Trk::qOverP])) : 10e7; + float pT = (p * sin(theta)); + pT = pT * 1e-3; // GeV - if (p < m_minP) continue; + if (p < m_minP) continue; - const DataVector<const Trk::TrackStateOnSurface> *trackStates = (**p_trk).trackStateOnSurfaces(); + const DataVector<const Trk::TrackStateOnSurface> *trackStates = (**p_trk).trackStateOnSurfaces(); - if (trackStates == 0) continue; + if (trackStates == 0) continue; - DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBegin0 = trackStates->begin(); - DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBegin = trackStates->begin(); - DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBeginTemp = trackStates->begin(); - DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItEnd = trackStates->end(); - int n_trt_hits = summary->get(Trk::numberOfTRTHits); - int n_sct_hits = summary->get(Trk::numberOfSCTHits); - int n_pixel_hits = summary->get(Trk::numberOfPixelHits); - const int n_si_hits = n_pixel_hits + n_sct_hits; + DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBegin0 = trackStates->begin(); + DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBegin = trackStates->begin(); + DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItBeginTemp = trackStates->begin(); + DataVector<const Trk::TrackStateOnSurface>::const_iterator TSOSItEnd = trackStates->end(); + int n_trt_hits = summary->get(Trk::numberOfTRTHits); + int n_sct_hits = summary->get(Trk::numberOfSCTHits); + int n_pixel_hits = summary->get(Trk::numberOfPixelHits); + const int n_si_hits = n_pixel_hits + n_sct_hits; float min_pt_new = m_min_pT; @@ -1838,7 +2312,7 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol for (int i = 0; i < 2; i++) { std::fill(trackfound[i], trackfound[i] + 64, false); } - + for (TSOSItBegin = TSOSItBegin0; TSOSItBegin != TSOSItEnd; ++TSOSItBegin) { // Select a TSOS which is non-empty, measurement type and contains both drift circle and track parameters informations if ((*TSOSItBegin) == 0) continue; @@ -1914,8 +2388,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol hitontrack[ibe]++; if (m_doShift) { - StrawEffDetPhi_B = phi_module; - StrawEffDetPhi_B_passed = 1.0; + StrawEffDetPhi_B_passed = phi_module; + StrawEffDetPhi_B = 1.0; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), StrawEffDetPhi_B_passed, StrawEffDetPhi_B); } @@ -1924,8 +2398,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol hitontrack_E_side[iside]++; if (m_doShift) { - StrawEffDetPhi_E = phi_module; - StrawEffDetPhi_E_passed = 1.0; + StrawEffDetPhi_E_passed = phi_module; + StrawEffDetPhi_E = 1.0; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), StrawEffDetPhi_E_passed, StrawEffDetPhi_E); } } @@ -1946,8 +2420,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol if (m_idHelper->is_trt(DCoTId)) { // ToDo: Is this really needed? if (ibe == 0) { if (m_doShift) { - StrawEffDetPhi_B = phi_module; - StrawEffDetPhi_B_passed = 0.0; + StrawEffDetPhi_B_passed = phi_module; + StrawEffDetPhi_B = 0.0; fill("ShiftTRTTrackHistograms"+std::to_string(ibe), StrawEffDetPhi_B_passed, StrawEffDetPhi_B); } @@ -1955,8 +2429,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol } } else if (ibe == 1) { if (m_doShift) { - StrawEffDetPhi_E = phi_module; - StrawEffDetPhi_E_passed = 0.0; + StrawEffDetPhi_E_passed = phi_module; + StrawEffDetPhi_E = 0.0; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), StrawEffDetPhi_E_passed, StrawEffDetPhi_E); } } @@ -1985,21 +2459,12 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol bool is_anybininVgate_high = (hitinvaliditygate != 0); if (m_doExpert && m_doStraws) { - HitHonTMapS = thisStrawNumber[ibe]; - HitHonTMapS_passed = 0.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHonTMapS_passed, HitHonTMapS); // Experimental - HitHWonTMapS = thisStrawNumber[ibe]; - HitHWonTMapS_passed = 0.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHWonTMapS_passed, HitHWonTMapS); // Experimental - if (is_middleHTbit_high) { HitHonTMapS = thisStrawNumber[ibe]; - HitHonTMapS_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHonTMapS_passed, HitHonTMapS); + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHonTMapS); HitHWonTMapS = thisStrawNumber[ibe]; - HitHWonTMapS_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHWonTMapS_passed, HitHWonTMapS); - + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHWonTMapS); + HtoLonTMapS = thisStrawNumber[ibe]; HtoLonTMapS_passed = 1.0; fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLonTMapS_passed, HtoLonTMapS); @@ -2008,23 +2473,13 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLWonTMapS_passed, HtoLWonTMapS); } } - - if (m_doExpert && m_doChips) { // Experimental - HitHWonTMapC = chip[ibe] - 1; - HitHWonTMapC_passed = 0.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHWonTMapC_passed, HitHWonTMapC); - HitHonTMapC = chip[ibe] - 1; - HitHonTMapC_passed = 0.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHonTMapC_passed, HitHonTMapC); - } + if (m_doExpert && m_doChips) { if (is_middleHTbit_high) { HitHWonTMapC = chip[ibe] - 1; - HitHWonTMapC_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHWonTMapC_passed, HitHWonTMapC); + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHWonTMapC); HitHonTMapC = chip[ibe] - 1; - HitHonTMapC_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHonTMapC_passed, HitHonTMapC); + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitHonTMapC); HtoLonTMapC = chip[ibe] - 1; HtoLonTMapC_passed = 1.0; fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HtoLonTMapC_passed, HtoLonTMapC); @@ -2050,34 +2505,21 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol } } - if (m_doExpert && m_doStraws) { // Experimental - HitWonTMapS = thisStrawNumber[ibe]; - HitWonTMapS_passed = 0.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitWonTMapS_passed, HitWonTMapS); - } - if (m_doExpert && m_doChips) { // Experimental - HitWonTMapC = chip[ibe] - 1; - HitWonTMapC_passed = 0.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitWonTMapC_passed, HitWonTMapC); - } - if ((driftTimeBin > 2) && (driftTimeBin < 17)) { if (m_doExpert && m_doStraws) { HitWonTMapS = thisStrawNumber[ibe]; - HitWonTMapS_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitWonTMapS_passed, HitWonTMapS); + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitWonTMapS); } if (m_doExpert && m_doChips) { HitWonTMapC = chip[ibe] - 1; - HitWonTMapC_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitWonTMapC_passed, HitWonTMapC); + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitWonTMapC); } } const int trailingEdge = RawDriftCircle->trailingEdge(); float trailingEdgeScaled = (trailingEdge + 1) * 3.125; - + if ((trailingEdge < 23) && !(RawDriftCircle->lastBinHigh()) && !(RawDriftCircle->firstBinHigh())) { @@ -2094,9 +2536,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol if (firstBinHigh || lastBinHigh || driftTimeBin > 0 || trailingEdge < 23) { if (m_doExpert && m_doStraws) { HitAonTMapS = thisStrawNumber[ibe]; - HitAonTMapS_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAonTMapS_passed, HitAonTMapS); - + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAonTMapS); + if (!is_middleHTbit_high) { HtoLonTMapS = thisStrawNumber[ibe]; HtoLonTMapS_passed = 0.0; @@ -2106,8 +2547,7 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol if (m_doExpert && m_doChips) { HitAonTMapC = chip[ibe] - 1; - HitAonTMapC_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAonTMapC_passed, HitAonTMapC); + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAonTMapC); if (!is_middleHTbit_high) { HtoLonTMapC = chip[ibe] - 1; HtoLonTMapC_passed = 0.0; @@ -2120,29 +2560,20 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol if (isArgonStraw) nTRTHitsW_Ar[ibe][iside]++; else nTRTHitsW_Xe[ibe][iside]++; - nTRTHitsW_perwheel[iside][layer_or_wheel]++; if (is_middleHTbit_high) { nTRTHLHitsW[ibe][iside]++; if (isArgonStraw) nTRTHLHitsW_Ar[ibe][iside]++; - else nTRTHLHitsW_Xe[ibe][iside]++; + else nTRTHLHitsW_Xe[ibe][iside]++; } } - // Experimental - if (m_doExpert && m_doStraws) { - double histLow = 0; - double histBinWidth = 1; - FILLEVENTNORMALIZATION(m_strawMax[ibe], histLow, histBinWidth, thisStrawNumber[ibe], HitAWonTMapS_passed, HitAWonTMapS, "TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module)) - } - if (is_anybininVgate_high) { if (m_doExpert && m_doStraws) { HitAWonTMapS = thisStrawNumber[ibe]; - HitAWonTMapS_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAWonTMapS_passed, HitAWonTMapS); - + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAWonTMapS); + if (!is_middleHTbit_high) { HtoLWonTMapS = thisStrawNumber[ibe]; HtoLWonTMapS_passed = 0.0; @@ -2152,9 +2583,8 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol if (m_doExpert && m_doChips) { HitAWonTMapC = chip[ibe] - 1; - HitAWonTMapC_passed = 1.0; - fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAWonTMapC_passed, HitAWonTMapC); - + fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitAWonTMapC); + if (!is_middleHTbit_high) { HtoLWonTMapC = chip[ibe] - 1; HtoLWonTMapC_passed = 0.0; @@ -2242,7 +2672,7 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol NumSwLLWoT_E = nTRTHitsW[ibe][1]; fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+"1", NumSwLLWoT_E); } - } + } for (int iside = 0; iside < 2; iside++) { if (nTRTHLHitsW[ibe][iside] > 0) { @@ -2277,9 +2707,9 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillTRTHits(const TrackCollection& trackCol StatusCode TRTMonitoringRun3RAW_Alg::fillHistograms( const EventContext& ctx ) const { using namespace Monitored; bool passEventBurst; - + ATH_MSG_VERBOSE("Monitoring Histograms being filled"); - + SG::ReadHandle<TRT_RDO_Container> rdoContainer(m_rdoContainerKey, ctx); SG::ReadHandle<xAOD::EventInfo> xAODEventInfo(m_xAODEventInfoKey, ctx); SG::ReadHandle<InDetTimeCollection> trtBCIDCollection(m_TRT_BCIDCollectionKey, ctx); @@ -2303,25 +2733,25 @@ StatusCode TRTMonitoringRun3RAW_Alg::fillHistograms( const EventContext& ctx ) c ATH_CHECK( fillTRTRDOs(*rdoContainer, *xAODEventInfo, trtBCIDCollection.ptr()) ); } } else passEventBurst = true; - + if (m_doEfficiency) { - if (!combTrackCollection.isValid()) { - ATH_MSG_ERROR("Could not find track collection " << m_combTrackCollectionKey.key() << - " in store"); - return StatusCode::FAILURE; - } - ATH_CHECK( fillTRTEfficiency(*combTrackCollection) ); - } - + if (!combTrackCollection.isValid()) { + ATH_MSG_ERROR("Could not find track collection " << m_combTrackCollectionKey.key() << + " in store"); + return StatusCode::FAILURE; + } + ATH_CHECK( fillTRTEfficiency(*combTrackCollection) ); + } + if (m_doHitsMon) { if (!trackCollection.isValid()) { ATH_MSG_ERROR("Could not find track collection " << m_trackCollectionKey.key() << " in store"); return StatusCode::FAILURE; } - if (passEventBurst) { + if (passEventBurst) { ATH_CHECK( fillTRTHits(*trackCollection) ); - } + } } return StatusCode::SUCCESS; -- GitLab