Skip to content
Snippets Groups Projects
Commit 1663947a authored by Mark K Jones's avatar Mark K Jones Committed by GitHub
Browse files

Merge pull request #119 from MarkKJones/scaler-update

Scaler replay and online GUI
parents 4c3527ee fea2fb1f
No related branches found
No related tags found
No related merge requests found
map 3801 5 6 00000620 ffffffff 12
map 3801 5 7 00200720 ffffffff 12
map 3801 5 8 00400820 ffffffff 12
map 3801 5 9 00600920 ffffffff 12
map 3801 5 10 00800a20 ffffffff 12
map 3801 5 11 00a00b20 ffffffff 12
map 3801 5 12 00c00c20 ffffffff 12 31 1000000
variable 3 3 1 hhod2y7P HMS 2Y+ paddle 7
variable 3 3 2 hhod2y7Pr HMS 2Y+ paddle 7
variable 0 8 1 hhod1x9P HMS 1X+ paddle 9
variable 0 8 2 hhod1x9Pr HMS 1X+ paddle 9
variable 0 24 1 hhod1x9M HMS 1X- paddle 9
variable 0 24 2 hhod1x9Mr HMS 1X- paddle 9
variable 3 19 1 hhod2y7M HMS 2Y- paddle 7
variable 3 19 2 hhod2y7Mr HMS 2Y- paddle 7
variable 6 4 1 h1Xh1y h1T
variable 6 4 2 h1Xh1yr h1T
variable 2 22 1 hhod2x6M HMS 2X- paddle 6
variable 2 22 2 hhod2x6Mr HMS 2X- paddle 6
variable 6 5 1 h2Xh2Y h2T
variable 6 5 2 h2Xh2Yr h2T
variable 2 6 1 hhod2x6P HMS 2X+ paddle 6
variable 2 6 2 hhod2x6Pr HMS 2X+ paddle 6
variable 2 27 1 hhod2x15M HMS 2X- paddle 15
variable 2 27 2 hhod2x15Mr HMS 2X- paddle 15
variable 3 26 1 Empty_20 Empty
variable 3 26 2 Empty_20r Empty
variable 1 2 1 hhod1y5P HMS 1Y+ paddle 5
variable 1 2 2 hhod1y5Pr HMS 1Y+ paddle 5
variable 3 29 1 Empty_22 Empty
variable 3 29 2 Empty_22r Empty
variable 1 18 1 hhod1y5M HMS 1Y- paddle 5
variable 1 18 2 hhod1y5Mr HMS 1Y- paddle 5
variable 3 31 1 Empty_24 Empty
variable 3 31 2 Empty_24r Empty
variable 2 11 1 hhod2x15P HMS 2X+ paddle 15
variable 2 11 2 hhod2x15Pr HMS 2X+ paddle 15
variable 6 13 1 hSHWR hSHWR
variable 6 13 2 hSHWRr hSHWR
variable 1 20 1 hhod1y2M HMS 1Y- paddle 2
variable 1 20 2 hhod1y2Mr HMS 1Y- paddle 2
variable 1 4 1 hhod1y2P HMS 1Y+ paddle 2
variable 1 4 2 hhod1y2Pr HMS 1Y+ paddle 2
variable 0 13 1 hhod1x12P HMS 1X+ paddle 12
variable 0 13 2 hhod1x12Pr HMS 1X+ paddle 12
variable 0 29 1 hhod1x12M HMS 1X- paddle 12
variable 0 29 2 hhod1x12Mr HMS 1X- paddle 12
variable 2 0 1 hhod2x1P HMS 2X+ paddle 1
variable 2 0 2 hhod2x1Pr HMS 2X+ paddle 1
variable 2 16 1 hhod2x1M HMS 2X- paddle 1
variable 2 16 2 hhod2x1Mr HMS 2X- paddle 1
variable 3 21 1 hhod2y4M HMS 2Y- paddle 4
variable 3 21 2 hhod2y4Mr HMS 2Y- paddle 4
variable 3 5 1 hhod2y4P HMS 2Y+ paddle 4
variable 3 5 2 hhod2y4Pr HMS 2Y+ paddle 4
variable 6 30 1 Unser Unser
variable 6 30 2 Unserr Unser
variable 1 5 1 hhod1y4P HMS 1Y+ paddle 4
variable 1 5 2 hhod1y4Pr HMS 1Y+ paddle 4
variable 2 8 1 hhod2x9P HMS 2X+ paddle 9
variable 2 8 2 hhod2x9Pr HMS 2X+ paddle 9
variable 2 24 1 hhod2x9M HMS 2X- paddle 9
variable 2 24 2 hhod2x9Mr HMS 2X- paddle 9
variable 1 21 1 hhod1y4M HMS 1Y- paddle 4
variable 1 21 2 hhod1y4Mr HMS 1Y- paddle 4
variable 0 0 1 hhod1x1P HMS 1X+ paddle 1
variable 0 0 2 hhod1x1Pr HMS 1X+ paddle 1
variable 0 16 1 hhod1x1M HMS 1X- paddle 1
variable 0 16 2 hhod1x1Mr HMS 1X- paddle 1
variable 0 18 1 hhod1x5M HMS 1X- paddle 5
variable 0 18 2 hhod1x5Mr HMS 1X- paddle 5
variable 0 27 1 hhod1x15M HMS 1X- paddle 15
variable 0 27 2 hhod1x15Mr HMS 1X- paddle 15
variable 0 11 1 hhod1x15P HMS 1X+ paddle 15
variable 0 11 2 hhod1x15Pr HMS 1X+ paddle 15
variable 3 27 1 Empty_21 Empty
variable 3 27 2 Empty_21r Empty
variable 3 2 1 hhod2y5P HMS 2Y+ paddle 5
variable 3 2 2 hhod2y5Pr HMS 2Y+ paddle 5
variable 3 18 1 hhod2y5M HMS 2Y- paddle 5
variable 3 18 2 hhod2y5Mr HMS 2Y- paddle 5
variable 2 7 1 hhod2x8P HMS 2X+ paddle 8
variable 2 7 2 hhod2x8Pr HMS 2X+ paddle 8
variable 1 19 1 hhod1y7M HMS 1Y- paddle 7
variable 1 19 2 hhod1y7Mr HMS 1Y- paddle 7
variable 0 2 1 hhod1x5P HMS 1X+ paddle 5
variable 0 2 2 hhod1x5Pr HMS 1X+ paddle 5
variable 1 3 1 hhod1y7P HMS 1Y+ paddle 7
variable 1 3 2 hhod1y7Pr HMS 1Y+ paddle 7
variable 3 30 1 Empty_23 Empty
variable 3 30 2 Empty_23r Empty
variable 2 23 1 hhod2x8M HMS 2X- paddle 8
variable 2 23 2 hhod2x8Mr HMS 2X- paddle 8
variable 0 22 1 hhod1x6M HMS 1X- paddle 6
variable 0 22 2 hhod1x6Mr HMS 1X- paddle 6
variable 2 15 1 hhod2x16P HMS 2X+ paddle 16
variable 2 15 2 hhod2x16Pr HMS 2X+ paddle 16
variable 6 11 1 hPSHWRLO hPSHWRLO
variable 6 11 2 hPSHWRLOr hPSHWRLO
variable 2 31 1 hhod2x16M HMS 2X- paddle 16
variable 2 31 2 hhod2x16Mr HMS 2X- paddle 16
variable 0 6 1 hhod1x6P HMS 1X+ paddle 6
variable 0 6 2 hhod1x6Pr HMS 1X+ paddle 6
variable 0 30 1 hhod1x14M HMS 1X- paddle 14
variable 0 30 2 hhod1x14Mr HMS 1X- paddle 14
variable 6 2 1 h2X h2X
variable 6 2 2 h2Xr h2X
variable 6 3 1 h2Y h2Y
variable 6 3 2 h2Yr h2Y
variable 6 27 1 BCM1 bcm1
variable 6 27 2 BCM1r bcm1
variable 0 14 1 hhod1x14P HMS 1X+ paddle 14
variable 0 14 2 hhod1x14Pr HMS 1X+ paddle 14
variable 2 17 1 hhod2x3M HMS 2X- paddle 3
variable 2 17 2 hhod2x3Mr HMS 2X- paddle 3
variable 2 1 1 hhod2x3P HMS 2X+ paddle 3
variable 2 1 2 hhod2x3Pr HMS 2X+ paddle 3
variable 1 29 1 Empty_10 Empty
variable 1 29 2 Empty_10r Empty
variable 1 30 1 Empty_11 Empty
variable 1 30 2 Empty_11r Empty
variable 1 31 1 Empty_12 Empty
variable 1 31 2 Empty_12r Empty
variable 3 9 1 Empty_13 Empty
variable 3 9 2 Empty_13r Empty
variable 3 10 1 Empty_14 Empty
variable 3 10 2 Empty_14r Empty
variable 3 11 1 Empty_15 Empty
variable 3 11 2 Empty_15r Empty
variable 3 4 1 hhod2y2P HMS 2Y+ paddle 2
variable 3 4 2 hhod2y2Pr HMS 2Y+ paddle 2
variable 2 28 1 hhod2x10M HMS 2X- paddle 10
variable 2 28 2 hhod2x10Mr HMS 2X- paddle 10
variable 3 15 1 Empty_18 Empty
variable 3 15 2 Empty_18r Empty
variable 3 25 1 Empty_19 Empty
variable 3 25 2 Empty_19r Empty
variable 6 8 1 hBSUM hBSUM
variable 6 8 2 hBSUMr hBSUM
variable 3 20 1 hhod2y2M HMS 2Y- paddle 2
variable 3 20 2 hhod2y2Mr HMS 2Y- paddle 2
variable 0 19 1 hhod1x7M HMS 1X- paddle 7
variable 0 19 2 hhod1x7Mr HMS 1X- paddle 7
variable 0 3 1 hhod1x7P HMS 1X+ paddle 7
variable 0 3 2 hhod1x7Pr HMS 1X+ paddle 7
variable 2 12 1 hhod2x10P HMS 2X+ paddle 10
variable 2 12 2 hhod2x10Pr HMS 2X+ paddle 10
variable 6 7 1 hASUM hASUM
variable 6 7 2 hASUMr hASUM
variable 6 1 1 h1Y h1Y
variable 6 1 2 h1Yr h1Y
variable 6 0 1 h1X h1X
variable 6 0 2 h1Xr h1X
variable 6 25 1 BCM4A bcm4a
variable 6 25 2 BCM4Ar bcm4a
variable 0 31 1 hhod1x16M HMS 1X- paddle 16
variable 0 31 2 hhod1x16Mr HMS 1X- paddle 16
variable 0 15 1 hhod1x16P HMS 1X+ paddle 16
variable 0 15 2 hhod1x16Pr HMS 1X+ paddle 16
variable 3 13 1 Empty_16 Empty
variable 3 13 2 Empty_16r Empty
variable 1 24 1 hhod1y9M HMS 1Y- paddle 9
variable 1 24 2 hhod1y9Mr HMS 1Y- paddle 9
variable 2 4 1 hhod2x2P HMS 2X+ paddle 2
variable 2 4 2 hhod2x2Pr HMS 2X+ paddle 2
variable 2 20 1 hhod2x2M HMS 2X- paddle 2
variable 2 20 2 hhod2x2Mr HMS 2X- paddle 2
variable 1 8 1 hhod1y9P HMS 1Y+ paddle 9
variable 1 8 2 hhod1y9Pr HMS 1Y+ paddle 9
variable 2 9 1 hhod2x11P HMS 2X+ paddle 11
variable 2 9 2 hhod2x11Pr HMS 2X+ paddle 11
variable 3 17 1 hhod2y3M HMS 2Y- paddle 3
variable 3 17 2 hhod2y3Mr HMS 2Y- paddle 3
variable 2 25 1 hhod2x11M HMS 2X- paddle 11
variable 2 25 2 hhod2x11Mr HMS 2X- paddle 11
variable 3 1 1 hhod2y3P HMS 2Y+ paddle 3
variable 3 1 2 hhod2y3Pr HMS 2Y+ paddle 3
variable 6 29 1 BCM17 bcm17
variable 6 29 2 BCM17r bcm17
variable 3 14 1 Empty_17 Empty
variable 3 14 2 Empty_17r Empty
variable 1 6 1 hhod1y6P HMS 1Y+ paddle 6
variable 1 6 2 hhod1y6Pr HMS 1Y+ paddle 6
variable 1 22 1 hhod1y6M HMS 1Y- paddle 6
variable 1 22 2 hhod1y6Mr HMS 1Y- paddle 6
variable 6 15 1 hCERSUM hCERSUM
variable 6 15 2 hCERSUMr hCERSUM
variable 0 5 1 hhod1x4P HMS 1X+ paddle 4
variable 0 5 2 hhod1x4Pr HMS 1X+ paddle 4
variable 0 21 1 hhod1x4M HMS 1X- paddle 4
variable 0 21 2 hhod1x4Mr HMS 1X- paddle 4
variable 6 12 1 hPSHWRHI hPSHWRHI
variable 6 12 2 hPSHWRHIr hPSHWRHI
variable 3 7 1 hhod2y8P HMS 2Y+ paddle 8
variable 3 7 2 hhod2y8Pr HMS 2Y+ paddle 8
variable 3 23 1 hhod2y8M HMS 2Y- paddle 8
variable 3 23 2 hhod2y8Mr HMS 2Y- paddle 8
variable 2 18 1 hhod2x5M HMS 2X- paddle 5
variable 2 18 2 hhod2x5Mr HMS 2X- paddle 5
variable 1 23 1 hhod1y8M HMS 1Y- paddle 8
variable 1 23 2 hhod1y8Mr HMS 1Y- paddle 8
variable 1 7 1 hhod1y8P HMS 1Y+ paddle 8
variable 1 7 2 hhod1y8Pr HMS 1Y+ paddle 8
variable 2 2 1 hhod2x5P HMS 2X+ paddle 5
variable 2 2 2 hhod2x5Pr HMS 2X+ paddle 5
variable 2 29 1 hhod2x12M HMS 2X- paddle 12
variable 2 29 2 hhod2x12Mr HMS 2X- paddle 12
variable 2 13 1 hhod2x12P HMS 2X+ paddle 12
variable 2 13 2 hhod2x12Pr HMS 2X+ paddle 12
variable 6 6 1 hTrig hT1
variable 6 6 2 hTrigr hT1
variable 0 4 1 hhod1x2P HMS 1X+ paddle 2
variable 0 4 2 hhod1x2Pr HMS 1X+ paddle 2
variable 0 20 1 hhod1x2M HMS 1X- paddle 2
variable 0 20 2 hhod1x2Mr HMS 1X- paddle 2
variable 1 16 1 hhod1y1M HMS 1Y- paddle 1
variable 1 16 2 hhod1y1Mr HMS 1Y- paddle 1
variable 1 26 1 Empty_8 Empty
variable 1 26 2 Empty_8r Empty
variable 1 27 1 Empty_9 Empty
variable 1 27 2 Empty_9r Empty
variable 1 0 1 hhod1y1P HMS 1Y+ paddle 1
variable 1 0 2 hhod1y1Pr HMS 1Y+ paddle 1
variable 1 10 1 Empty_2 Empty
variable 1 10 2 Empty_2r Empty
variable 1 11 1 Empty_3 Empty
variable 1 11 2 Empty_3r Empty
variable 1 15 1 Empty_6 Empty
variable 1 15 2 Empty_6r Empty
variable 1 25 1 Empty_7 Empty
variable 1 25 2 Empty_7r Empty
variable 1 13 1 Empty_4 Empty
variable 1 13 2 Empty_4r Empty
variable 1 14 1 Empty_5 Empty
variable 1 14 2 Empty_5r Empty
variable 0 9 1 hhod1x11P HMS 1X+ paddle 11
variable 0 9 2 hhod1x11Pr HMS 1X+ paddle 11
variable 1 9 1 Empty Empty
variable 1 9 2 Emptyr Empty
variable 0 25 1 hhod1x11M HMS 1X- paddle 11
variable 0 25 2 hhod1x11Mr HMS 1X- paddle 11
variable 1 28 1 hhod1y10M HMS 1Y- paddle 10
variable 1 28 2 hhod1y10Mr HMS 1Y- paddle 10
variable 1 12 1 hhod1y10P HMS 1Y+ paddle 10
variable 1 12 2 hhod1y10Pr HMS 1Y+ paddle 10
variable 3 24 1 hhod2y9M HMS 2Y- paddle 9
variable 3 24 2 hhod2y9Mr HMS 2Y- paddle 9
variable 6 10 1 hDSUM hDSUM
variable 6 10 2 hDSUMr hDSUM
variable 3 8 1 hhod2y9P HMS 2Y+ paddle 9
variable 3 8 2 hhod2y9Pr HMS 2Y+ paddle 9
variable 2 21 1 hhod2x4M HMS 2X- paddle 4
variable 2 21 2 hhod2x4Mr HMS 2X- paddle 4
variable 2 5 1 hhod2x4P HMS 2X+ paddle 4
variable 2 5 2 hhod2x4Pr HMS 2X+ paddle 4
variable 3 16 1 hhod2y1M HMS 2Y- paddle 1
variable 3 16 2 hhod2y1Mr HMS 2Y- paddle 1
variable 2 10 1 hhod2x13P HMS 2X+ paddle 13
variable 2 10 2 hhod2x13Pr HMS 2X+ paddle 13
variable 0 1 1 hhod1x3P HMS 1X+ paddle 3
variable 0 1 2 hhod1x3Pr HMS 1X+ paddle 3
variable 6 26 1 BCM4B bcm4b
variable 6 26 2 BCM4Br bcm4b
variable 2 26 1 hhod2x13M HMS 2X- paddle 13
variable 2 26 2 hhod2x13Mr HMS 2X- paddle 13
variable 0 17 1 hhod1x3M HMS 1X- paddle 3
variable 0 17 2 hhod1x3Mr HMS 1X- paddle 3
variable 6 31 1 1Mhz 1MHz
variable 6 31 2 1Mhzr 1MHz
variable 0 12 1 hhod1x10P HMS 1X+ paddle 10
variable 0 12 2 hhod1x10Pr HMS 1X+ paddle 10
variable 0 28 1 hhod1x10M HMS 1X- paddle 10
variable 0 28 2 hhod1x10Mr HMS 1X- paddle 10
variable 3 0 1 hhod2y1P HMS 2Y+ paddle 1
variable 3 0 2 hhod2y1Pr HMS 2Y+ paddle 1
variable 6 9 1 hCSUM hCSUM
variable 6 9 2 hCSUMr hCSUM
variable 3 28 1 hhod2y10M HMS 2Y- paddle 10
variable 3 28 2 hhod2y10Mr HMS 2Y- paddle 10
variable 0 23 1 hhod1x8M HMS 1X- paddle 8
variable 0 23 2 hhod1x8Mr HMS 1X- paddle 8
variable 0 7 1 hhod1x8P HMS 1X+ paddle 8
variable 0 7 2 hhod1x8Pr HMS 1X+ paddle 8
variable 3 12 1 hhod2y10P HMS 2Y+ paddle 10
variable 3 12 2 hhod2y10Pr HMS 2Y+ paddle 10
variable 6 28 1 BCM2 bcm2
variable 6 28 2 BCM2r bcm2
variable 3 6 1 hhod2y6P HMS 2Y+ paddle 6
variable 3 6 2 hhod2y6Pr HMS 2Y+ paddle 6
variable 3 22 1 hhod2y6M HMS 2Y- paddle 6
variable 3 22 2 hhod2y6Mr HMS 2Y- paddle 6
variable 2 3 1 hhod2x7P HMS 2X+ paddle 7
variable 2 3 2 hhod2x7Pr HMS 2X+ paddle 7
variable 6 14 1 hAERSUM hAERSUM
variable 6 14 2 hAERSUMr hAERSUM
variable 2 19 1 hhod2x7M HMS 2X- paddle 7
variable 2 19 2 hhod2x7Mr HMS 2X- paddle 7
variable 2 30 1 hhod2x14M HMS 2X- paddle 14
variable 2 30 2 hhod2x14Mr HMS 2X- paddle 14
variable 2 14 1 hhod2x14P HMS 2X+ paddle 14
variable 2 14 2 hhod2x14Pr HMS 2X+ paddle 14
variable 1 1 1 hhod1y3P HMS 1Y+ paddle 3
variable 1 1 2 hhod1y3Pr HMS 1Y+ paddle 3
variable 1 17 1 hhod1y3M HMS 1Y- paddle 3
variable 1 17 2 hhod1y3Mr HMS 1Y- paddle 3
variable 0 26 1 hhod1x13M HMS 1X- paddle 13
variable 0 26 2 hhod1x13Mr HMS 1X- paddle 13
variable 0 10 1 hhod1x13P HMS 1X+ paddle 13
variable 0 10 2 hhod1x13Pr HMS 1X+ paddle 13
map 3801 8 6 02800620 ffffffff 13
map 3801 8 7 02a00720 ffffffff 13
map 3801 8 8 02c00820 ffffffff 13
map 3801 8 9 02e00920 ffffffff 13
map 3801 8 10 03000a20 ffffffff 13
map 3801 8 11 03200b20 ffffffff 13
map 3801 8 12 03400c20 ffffffff 13
map 3801 8 13 03600d20 ffffffff 13 31 1000000
variable 7 31 1 1Mhz 1MHz
variable 7 31 2 1Mhzr 1MHz
variable 7 28 1 BCM2 bcm2
variable 7 28 2 BCM2r bcm2
variable 7 27 1 BCM1 bcm1
variable 7 27 2 BCM1r bcm1
variable 0 16 1 shod1x1M SHMS 1X- paddle 1
variable 0 16 2 shod1x1Mr SHMS 1X- paddle 1
variable 0 20 1 shod1x2M SHMS 1X- paddle 2
variable 0 20 2 shod1x2Mr SHMS 1X- paddle 2
variable 0 17 1 shod1x3M SHMS 1X- paddle 3
variable 0 17 2 shod1x3Mr SHMS 1X- paddle 3
variable 0 21 1 shod1x4M SHMS 1X- paddle 4
variable 0 21 2 shod1x4Mr SHMS 1X- paddle 4
variable 0 18 1 shod1x5M SHMS 1X- paddle 5
variable 0 18 2 shod1x5Mr SHMS 1X- paddle 5
variable 0 22 1 shod1x6M SHMS 1X- paddle 6
variable 0 22 2 shod1x6Mr SHMS 1X- paddle 6
variable 0 19 1 shod1x7M SHMS 1X- paddle 7
variable 0 19 2 shod1x7Mr SHMS 1X- paddle 7
variable 0 23 1 shod1x8M SHMS 1X- paddle 8
variable 0 23 2 shod1x8Mr SHMS 1X- paddle 8
variable 0 24 1 shod1x9M SHMS 1X- paddle 9
variable 0 24 2 shod1x9Mr SHMS 1X- paddle 9
variable 0 28 1 shod1x10M SHMS 1X- paddle 10
variable 0 28 2 shod1x10Mr SHMS 1X- paddle 10
variable 0 25 1 shod1x11M SHMS 1X- paddle 11
variable 0 25 2 shod1x11Mr SHMS 1X- paddle 11
variable 0 30 1 shod1x12M SHMS 1X- paddle 12
variable 0 30 2 shod1x12Mr SHMS 1X- paddle 12
variable 0 26 1 shod1x13M SHMS 1X- paddle 13
variable 0 26 2 shod1x13Mr SHMS 1X- paddle 13
variable 0 0 1 shod1x1P SHMS 1X+ paddle 1
variable 0 0 2 shod1x1Pr SHMS 1X+ paddle 1
variable 0 4 1 shod1x2P SHMS 1X+ paddle 2
variable 0 4 2 shod1x2Pr SHMS 1X+ paddle 2
variable 0 1 1 shod1x3P SHMS 1X+ paddle 3
variable 0 1 2 shod1x3Pr SHMS 1X+ paddle 3
variable 0 5 1 shod1x4P SHMS 1X+ paddle 4
variable 0 5 2 shod1x4Pr SHMS 1X+ paddle 4
variable 0 2 1 shod1x5P SHMS 1X+ paddle 5
variable 0 2 2 shod1x5Pr SHMS 1X+ paddle 5
variable 0 6 1 shod1x6P SHMS 1X+ paddle 6
variable 0 6 2 shod1x6Pr SHMS 1X+ paddle 6
variable 0 3 1 shod1x7P SHMS 1X+ paddle 7
variable 0 3 2 shod1x7Pr SHMS 1X+ paddle 7
variable 0 7 1 shod1x8P SHMS 1X+ paddle 8
variable 0 7 2 shod1x8Pr SHMS 1X+ paddle 8
variable 0 8 1 shod1x9P SHMS 1X+ paddle 9
variable 0 8 2 shod1x9Pr SHMS 1X+ paddle 9
variable 0 12 1 shod1x10P SHMS 1X+ paddle 10
variable 0 12 2 shod1x10Pr SHMS 1X+ paddle 10
variable 0 9 1 shod1x11P SHMS 1X+ paddle 11
variable 0 9 2 shod1x11Pr SHMS 1X+ paddle 11
variable 0 13 1 shod1x12P SHMS 1X+ paddle 12
variable 0 13 2 shod1x12Pr SHMS 1X+ paddle 12
variable 0 10 1 shod1x13P SHMS 1X+ paddle 13
variable 0 10 2 shod1x13Pr SHMS 1X+ paddle 13
variable 1 0 1 shod1y1M SHMS 1Y- paddle 1
variable 1 0 2 shod1y1Mr SHMS 1Y- paddle 1
variable 1 4 1 shod1y2M SHMS 1Y- paddle 2
variable 1 4 2 shod1y2Mr SHMS 1Y- paddle 2
variable 1 1 1 shod1y3M SHMS 1Y- paddle 3
variable 1 1 2 shod1y3Mr SHMS 1Y- paddle 3
variable 1 5 1 shod1y4M SHMS 1Y- paddle 4
variable 1 5 2 shod1y4Mr SHMS 1Y- paddle 4
variable 1 2 1 shod1y5M SHMS 1Y- paddle 5
variable 1 2 2 shod1y5Mr SHMS 1Y- paddle 5
variable 1 3 1 shod1y7M SHMS 1Y- paddle 7
variable 1 3 2 shod1y7Mr SHMS 1Y- paddle 7
variable 1 7 1 shod1y8M SHMS 1Y- paddle 8
variable 1 7 2 shod1y8Mr SHMS 1Y- paddle 8
variable 1 8 1 shod1y9M SHMS 1Y- paddle 9
variable 1 8 2 shod1y9Mr SHMS 1Y- paddle 9
variable 1 12 1 shod1y10M SHMS 1Y- paddle 10
variable 1 12 2 shod1y10Mr SHMS 1Y- paddle 10
variable 1 9 1 shod1y11M SHMS 1Y- paddle 11
variable 1 9 2 shod1y11Mr SHMS 1Y- paddle 11
variable 1 13 1 shod1y12M SHMS 1Y- paddle 12
variable 1 13 2 shod1y12Mr SHMS 1Y- paddle 12
variable 1 10 1 shod1y13M SHMS 1Y- paddle 13
variable 1 10 2 shod1y13Mr SHMS 1Y- paddle 13
variable 1 16 1 shod1y1P SHMS 1Y+ paddle 1
variable 1 16 2 shod1y1Pr SHMS 1Y+ paddle 1
variable 1 20 1 shod1y2P SHMS 1Y+ paddle 2
variable 1 20 2 shod1y2Pr SHMS 1Y+ paddle 2
variable 1 17 1 shod1y3P SHMS 1Y+ paddle 3
variable 1 17 2 shod1y3Pr SHMS 1Y+ paddle 3
variable 1 21 1 shod1y4P SHMS 1Y+ paddle 4
variable 1 21 2 shod1y4Pr SHMS 1Y+ paddle 4
variable 1 18 1 shod1y5P SHMS 1Y+ paddle 5
variable 1 18 2 shod1y5Pr SHMS 1Y+ paddle 5
variable 1 22 1 shod1y6P SHMS 1Y+ paddle 6
variable 1 22 2 shod1y6Pr SHMS 1Y+ paddle 6
variable 1 19 1 shod1y7P SHMS 1Y+ paddle 7
variable 1 19 2 shod1y7Pr SHMS 1Y+ paddle 7
variable 1 23 1 shod1y8P SHMS 1Y+ paddle 8
variable 1 23 2 shod1y8Pr SHMS 1Y+ paddle 8
variable 1 24 1 shod1y9P SHMS 1Y+ paddle 9
variable 1 24 2 shod1y9Pr SHMS 1Y+ paddle 9
variable 1 28 1 shod1y10P SHMS 1Y+ paddle 10
variable 1 28 2 shod1y10Pr SHMS 1Y+ paddle 10
variable 1 25 1 shod1y11P SHMS 1Y+ paddle 11
variable 1 25 2 shod1y11Pr SHMS 1Y+ paddle 11
variable 1 29 1 shod1y12P SHMS 1Y+ paddle 12
variable 1 29 2 shod1y12Pr SHMS 1Y+ paddle 12
variable 1 26 1 shod1y13P SHMS 1Y+ paddle 13
variable 1 26 2 shod1y13Pr SHMS 1Y+ paddle 13
variable 2 9 1 shod2x11P SHMS 2X+ paddle 11
variable 2 9 2 shod2x11Pr SHMS 2X+ paddle 11
variable 7 1 1 s1Y s1Y
variable 7 1 2 s1Yr s1Y
variable 7 30 1 Unser Unser
variable 7 30 2 Unserr Unser
variable 2 30 1 shod2x14M SHMS 2X- paddle 14
variable 2 30 2 shod2x14Mr SHMS 2X- paddle 14
variable 7 14 1 sAERSUM sAERSUM
variable 7 14 2 sAERSUMr sAERSUM
variable 3 19 1 shod2y7M SHMS 2y- paddle 7
variable 3 19 2 shod2y7Mr SHMS 2y- paddle 7
variable 3 3 1 shod2y7P SHMS 2y+ paddle 7
variable 3 3 2 shod2y7Pr SHMS 2y+ paddle 7
variable 2 19 1 shod2x7M SHMS 2X- paddle 7
variable 2 19 2 shod2x7Mr SHMS 2X- paddle 7
variable 2 3 1 shod2x7P SHMS 2X+ paddle 7
variable 2 3 2 shod2x7Pr SHMS 2X+ paddle 7
variable 3 31 1 shod2y16M SHMS 2y- paddle 16
variable 3 31 2 shod2y16Mr SHMS 2y- paddle 16
variable 3 15 1 shod2y16P SHMS 2y+ paddle 16
variable 3 15 2 shod2y16Pr SHMS 2y+ paddle 16
variable 3 24 1 shod2y9M SHMS 2y- paddle 9
variable 3 24 2 shod2y9Mr SHMS 2y- paddle 9
variable 7 15 1 sCERSUM sCERSUM
variable 7 15 2 sCERSUMr sCERSUM
variable 3 14 1 shod2y14P SHMS 2y+ paddle 14
variable 3 14 2 shod2y14Pr SHMS 2y+ paddle 14
variable 2 5 1 shod2x4P SHMS 2X+ paddle 4
variable 2 5 2 shod2x4Pr SHMS 2X+ paddle 4
variable 2 21 1 shod2x4M SHMS 2X- paddle 4
variable 2 21 2 shod2x4Mr SHMS 2X- paddle 4
variable 7 3 1 s2Y s2Y
variable 7 3 2 s2Yr s2Y
variable 7 2 1 s2X s2X
variable 7 2 2 s2Xr s2X
variable 2 13 1 shod2x12P SHMS 2X+ paddle 12
variable 2 13 2 shod2x12Pr SHMS 2X+ paddle 12
variable 2 2 1 shod2x5P SHMS 2X+ paddle 5
variable 2 2 2 shod2x5Pr SHMS 2X+ paddle 5
variable 3 8 1 shod2y9P SHMS 2y+ paddle 9
variable 3 8 2 shod2y9Pr SHMS 2y+ paddle 9
variable 3 16 1 shod2y1M SHMS 2y- paddle 1
variable 3 16 2 shod2y1Mr SHMS 2y- paddle 1
variable 3 0 1 shod2y1P SHMS 2y+ paddle 1
variable 3 0 2 shod2y1Pr SHMS 2y+ paddle 1
variable 7 7 1 sASUM sASUM
variable 7 7 2 sASUMr sASUM
variable 2 25 1 shod2x11M SHMS 2X- paddle 11
variable 2 25 2 shod2x11Mr SHMS 2X- paddle 11
variable 3 28 1 shod2y10M SHMS 2y- paddle 10
variable 3 28 2 shod2y10Mr SHMS 2y- paddle 10
variable 3 12 1 shod2y10P SHMS 2y+ paddle 10
variable 3 12 2 shod2y10Pr SHMS 2y+ paddle 10
variable 7 9 1 sCSUM sCSUM
variable 7 9 2 sCSUMr sCSUM
variable 3 5 1 shod2y4P SHMS 2y+ paddle 4
variable 3 5 2 shod2y4Pr SHMS 2y+ paddle 4
variable 3 10 1 shod2y13P SHMS 2y+ paddle 13
variable 3 10 2 shod2y13Pr SHMS 2y+ paddle 13
variable 7 4 1 s1Xs1y s1T
variable 7 4 2 s1Xs1yr s1T
variable 2 4 1 shod2x2P SHMS 2X+ paddle 2
variable 2 4 2 shod2x2Pr SHMS 2X+ paddle 2
variable 2 20 1 shod2x2M SHMS 2X- paddle 2
variable 2 20 2 shod2x2Mr SHMS 2X- paddle 2
variable 3 22 1 shod2y6M SHMS 2y- paddle 6
variable 3 22 2 shod2y6Mr SHMS 2y- paddle 6
variable 2 12 1 shod2x10P SHMS 2X+ paddle 10
variable 2 12 2 shod2x10Pr SHMS 2X+ paddle 10
variable 2 28 1 shod2x10M SHMS 2X- paddle 10
variable 2 28 2 shod2x10Mr SHMS 2X- paddle 10
variable 3 25 1 shod2y11M SHMS 2y- paddle 11
variable 3 25 2 shod2y11Mr SHMS 2y- paddle 11
variable 2 10 1 shod2x13P SHMS 2X+ paddle 13
variable 2 10 2 shod2x13Pr SHMS 2X+ paddle 13
variable 3 6 1 shod2y6P SHMS 2y+ paddle 6
variable 3 6 2 shod2y6Pr SHMS 2y+ paddle 6
variable 2 22 1 shod2x6M SHMS 2X- paddle 6
variable 2 22 2 shod2x6Mr SHMS 2X- paddle 6
variable 3 23 1 shod2y8M SHMS 2y- paddle 8
variable 3 23 2 shod2y8Mr SHMS 2y- paddle 8
variable 3 7 1 shod2y8P SHMS 2y+ paddle 8
variable 3 7 2 shod2y8Pr SHMS 2y+ paddle 8
variable 2 1 1 shod2x3P SHMS 2X+ paddle 3
variable 2 1 2 shod2x3Pr SHMS 2X+ paddle 3
variable 2 17 1 shod2x3M SHMS 2X- paddle 3
variable 2 17 2 shod2x3Mr SHMS 2X- paddle 3
variable 3 9 1 shod2y11P SHMS 2y+ paddle 11
variable 3 9 2 shod2y11Pr SHMS 2y+ paddle 11
variable 3 1 1 shod2y3P SHMS 2y+ paddle 3
variable 3 1 2 shod2y3Pr SHMS 2y+ paddle 3
variable 2 24 1 shod2x9M SHMS 2X- paddle 9
variable 2 24 2 shod2x9Mr SHMS 2X- paddle 9
variable 3 17 1 shod2y3M SHMS 2y- paddle 3
variable 3 17 2 shod2y3Mr SHMS 2y- paddle 3
variable 2 26 1 shod2x13M SHMS 2X- paddle 13
variable 2 26 2 shod2x13Mr SHMS 2X- paddle 13
variable 2 8 1 shod2x9P SHMS 2X+ paddle 9
variable 2 8 2 shod2x9Pr SHMS 2X+ paddle 9
variable 3 13 1 shod2y12P SHMS 2y+ paddle 12
variable 3 13 2 shod2y12Pr SHMS 2y+ paddle 12
variable 7 0 1 s1X s1X
variable 7 0 2 s1Xr s1X
variable 3 29 1 shod2y12M SHMS 2y- paddle 12
variable 3 29 2 shod2y12Mr SHMS 2y- paddle 12
variable 7 8 1 sBSUM sBSUM
variable 7 8 2 sBSUMr sBSUM
variable 7 29 1 BCM17 bcm17
variable 7 29 2 BCM17r bcm17
variable 3 20 1 shod2y2M SHMS 2y- paddle 2
variable 3 20 2 shod2y2Mr SHMS 2y- paddle 2
variable 7 13 1 sSHWR sSHWR
variable 7 13 2 sSHWRr sSHWR
variable 3 4 1 shod2y2P SHMS 2y+ paddle 2
variable 3 4 2 shod2y2Pr SHMS 2y+ paddle 2
variable 2 23 1 shod2x8M SHMS 2X- paddle 8
variable 2 23 2 shod2x8Mr SHMS 2X- paddle 8
variable 7 6 1 sTrig sT1
variable 7 6 2 sTrigr sT1
variable 2 7 1 shod2x8P SHMS 2X+ paddle 8
variable 2 7 2 shod2x8Pr SHMS 2X+ paddle 8
variable 7 10 1 sDSUM sDSUM
variable 7 10 2 sDSUMr sDSUM
variable 2 16 1 shod2x1M SHMS 2X- paddle 1
variable 2 16 2 shod2x1Mr SHMS 2X- paddle 1
variable 3 2 1 shod2y5P SHMS 2y+ paddle 5
variable 3 2 2 shod2y5Pr SHMS 2y+ paddle 5
variable 3 18 1 shod2y5M SHMS 2y- paddle 5
variable 3 18 2 shod2y5Mr SHMS 2y- paddle 5
variable 2 0 1 shod2x1P SHMS 2X+ paddle 1
variable 2 0 2 shod2x1Pr SHMS 2X+ paddle 1
variable 2 14 1 shod2x14P SHMS 2X+ paddle 14
variable 2 14 2 shod2x14Pr SHMS 2X+ paddle 14
variable 7 11 1 sPSHWRLO sPSHWRLO
variable 7 11 2 sPSHWRLOr sPSHWRLO
variable 7 5 1 s2Xs2Y s2T
variable 7 5 2 s2Xs2Yr s2T
variable 3 30 1 shod2y14M SHMS 2y- paddle 14
variable 3 30 2 shod2y14Mr SHMS 2y- paddle 14
variable 2 6 1 shod2x6P SHMS 2X+ paddle 6
variable 2 6 2 shod2x6Pr SHMS 2X+ paddle 6
variable 7 26 1 BCM4B bcm4b
variable 7 26 2 BCM4Br bcm4b
variable 3 21 1 shod2y4M SHMS 2y- paddle 4
variable 3 21 2 shod2y4Mr SHMS 2y- paddle 4
variable 3 26 1 shod2y13M SHMS 2y- paddle 13
variable 3 26 2 shod2y13Mr SHMS 2y- paddle 13
variable 7 25 1 BCM4A bcm4a
variable 7 25 2 BCM4Ar bcm4a
variable 3 11 1 shod2y15P SHMS 2y+ paddle 15
variable 3 11 2 shod2y15Pr SHMS 2y+ paddle 15
variable 3 27 1 shod2y15M SHMS 2y- paddle 15
variable 3 27 2 shod2y15Mr SHMS 2y- paddle 15
variable 7 12 1 sPSHWRHI sPSHWRHI
variable 7 12 2 sPSHWRHIr sPSHWRHI
variable 2 29 1 shod2x12M SHMS 2X- paddle 12
variable 2 29 2 shod2x12Mr SHMS 2X- paddle 12
variable 1 6 1 shod1y6M SHMS 1Y- paddle 6
variable 1 6 2 shod1y6Mr SHMS 1Y- paddle 6
variable 2 18 1 shod2x5M SHMS 2X- paddle 5
variable 2 18 2 shod2x5Mr SHMS 2X- paddle 5
#!/usr/bin/python
# Deal with args
xscalerMapName = 'scaler.map'
cratemap = {
"4":{"spec":"H", "firstslot":6, "nslots":7, "roc":5, "offset":0},
"5":{"spec":"P", "firstslot":6, "nslots":8, "roc":8, "offset":640}
}
chandict = {}
nperslot = 32
clockrate = 1000000
class Channel:
def __init__(self, spec, slot, chan, comment=''):
self.spec = spec
self.slot = slot
self.chan = chan
self.comment = comment
def __str__(self):
string = self.spec+"."+str(self.slot)+"."+str(self.chan)+"."+self.comment
return string
with open(xscalerMapName, 'r') as fi:
for line in fi:
# Skip empty lines
if line.isspace():
continue
line = line.strip()
# Check if comment line
if line.startswith('#'):
continue
if line.startswith('DATE') or line.startswith('xscaler-'):
continue
splitline = line.split(None,6)
helicity = splitline[1]
spec = cratemap[splitline[2]]["spec"]
name = spec+splitline[0]
slot = int(splitline[3])+cratemap[splitline[2]]["firstslot"]
start = int(splitline[4])
nchan = splitline[5] # This better be 1
comment = splitline[6]
uniquename = name
count = 2
while chandict.has_key(uniquename):
uniquename = name+"_"+str(count)
count += 1
chandict[uniquename] = Channel(cratemap[splitline[2]]["spec"],slot,start,comment)
for spec in cratemap:
firstslot = cratemap[spec]["firstslot"]
nslots = cratemap[spec]["nslots"]
roc = cratemap[spec]["roc"]
lastslot = firstslot + nslots - 1
offset = cratemap[spec]["offset"]
specprefix = cratemap[spec]["spec"]
hcanaMapName = 'db_'+specprefix+'SScalevt.dat'
with open(hcanaMapName, 'w') as fo:
for slot in range(firstslot,firstslot+nslots):
if slot == lastslot:
rateinfo=' {0} {1}'.format(nperslot-1,clockrate)
else:
rateinfo=''
print >>fo, 'map 3801 {0} {1} {2:04x}{1:02x}{3:02x} ffffffff {4}'.\
format(roc, slot, offset+(slot-firstslot)*nperslot,nperslot,lastslot)\
+rateinfo
for name in chandict:
channel = chandict[name]
slot = channel.slot-firstslot
printname = name[1:] # Drop prefix
printname = printname.replace("+","P")
printname = printname.replace("-","M")
if specprefix == channel.spec and slot<nslots:
chan = channel.chan
slot = channel.slot-firstslot
comment = channel.comment
print >>fo, 'variable', slot, chan, 1, printname, comment
print >>fo, 'variable', slot, chan, 2, printname+'r', comment
# See $ANALYZER/examples/output_example.def for examples
begin epics
IBC3H00CRCUR4
hac_bcm_average
ibcm1
ibcm2
iunser
itov3out
itov4out
end epics
void replay_hms_scalers(Int_t RunNumber=0, Int_t MaxEvent=0) {
// Get RunNumber and MaxEvent if not provided.
if(RunNumber == 0) {
cout << "Enter a Run Number (-1 to exit): ";
cin >> RunNumber;
if( RunNumber<=0 ) return;
}
if(MaxEvent == 0) {
cout << "\nNumber of Events to analyze: ";
cin >> MaxEvent;
if(MaxEvent == 0) {
cerr << "...Invalid entry\n";
exit;
}
}
// Create file name patterns.
const char* RunFileNamePattern = "raw/hms_all_%05d.dat";
const char* ROOTFileNamePattern = "ROOTfiles/hms_replay_scalers_%d.root";
// Add variables to global list.
gHcParms->Define("gen_run_number", "Run Number", RunNumber);
gHcParms->AddString("g_ctp_database_filename", "DBASE/standard.database");
// Load varibles from files to global list.
gHcParms->Load(gHcParms->GetString("g_ctp_database_filename"), RunNumber);
// g_ctp_parm_filename and g_decode_map_filename should now be defined.
gHcParms->Load(gHcParms->GetString("g_ctp_kinematics_filename"), RunNumber);
gHcParms->Load(gHcParms->GetString("g_ctp_parm_filename"));
// Load params for HMS trigger configuration
gHcParms->Load("PARAM/TRIG/thms.param");
// Load params for HODO tof calibration.
// gHcParms->Load("PARAM/HMS/HODO/htofcal.param");
// Load the Hall C style detector map
gHcDetectorMap = new THcDetectorMap();
if ( RunNumber > 243) {
gHcDetectorMap->Load("MAPS/HMS/DETEC/hms_stack.map");
} else {
gHcDetectorMap->Load("MAPS/HMS/DETEC/hms_stack_spring17_run_00001_00243.map");
}
gHaEvtHandlers->Add (new THaEpicsEvtHandler("epics","HC EPICS event type 180"));
THcScalerEvtHandler *hscaler = new THcScalerEvtHandler("HS","Hall C scaler event type 1");
hscaler->AddEventType(1);
hscaler->SetUseFirstEvent(kTRUE);
// hscaler->SetDebugFile("REPORT_OUTPUT/hms_scaler_debug.txt");
gHaEvtHandlers->Add(hscaler);
// Set up the analyzer - we use the standard one,
// but this could be an experiment-specific one as well.
// The Analyzer controls the reading of the data, executes
// tests/cuts, loops over Acpparatus's and PhysicsModules,
// and executes the output routines.
THcAnalyzer* analyzer = new THcAnalyzer;
// A simple event class to be output to the resulting tree.
// Creating your own descendant of THaEvent is one way of
// defining and controlling the output.
THaEvent* event = new THaEvent;
// Define the run(s) that we want to analyze.
// We just set up one, but this could be many.
char RunFileName[100];
sprintf(RunFileName, RunFileNamePattern, RunNumber);
THaRun* run = new THaRun(RunFileName);
// Eventually need to learn to skip over, or properly analyze
// the pedestal events
run->SetEventRange(1, MaxEvent); // Physics Event number, does not
// include scaler or control events.
run->SetNscan(1);
run->SetDataRequired(0x7);
run->Print();
// Define the analysis parameters
TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber);
analyzer->SetCountMode(2); // 0 = counter is # of physics triggers
// 1 = counter is # of all decode reads
// 2 = counter is event number
analyzer->SetEvent(event);
analyzer->SetEpicsEvtType(180);
analyzer->SetCrateMapFileName("MAPS/db_cratemap.dat");
analyzer->SetOutFile(ROOTFileName.Data());
analyzer->SetOdefFile("DEF-files/HMS/EPICS/epics_short.def"); // Call EPICS variables K.Park
// analyzer->SetOdefFile("DEF-files/HMS/GEN/hstackana_report.def");
//analyzer->SetCutFile("DEF-files/HMS/GEN/hstackana_report_cuts.def"); // optional
// File to record cuts accounting information
analyzer->SetSummaryFile(Form("REPORT_OUTPUT/HMS/summary_%05d.report", RunNumber)); // optional
// Start the actual analysis.
analyzer->Process(run);
// Create report file from template.
// analyzer->PrintReport("TEMPLATES/hstackana.template",Form("REPORT_OUTPUT/HMS/replay_hms_%05d.report", RunNumber));
}
void replay_shms_scalers(Int_t RunNumber=0, Int_t MaxEvent=0) {
// Get RunNumber and MaxEvent if not provided.
if(RunNumber == 0) {
cout << "Enter a Run Number (-1 to exit): ";
cin >> RunNumber;
if( RunNumber<=0 ) return;
}
if(MaxEvent == 0) {
cout << "\nNumber of Events to analyze: ";
cin >> MaxEvent;
if(MaxEvent == 0) {
cerr << "...Invalid entry\n";
exit;
}
}
// Create file name patterns.
const char* RunFileNamePattern = "raw/shms_all_%05d.dat";
const char* ROOTFileNamePattern = "ROOTfiles/shms_replay_scalers_%d.root";
// Add variables to global list.
gHcParms->Define("gen_run_number", "Run Number", RunNumber);
gHcParms->AddString("g_ctp_database_filename", "DBASE/standard.database");
// Load varibles from files to global list.
gHcParms->Load(gHcParms->GetString("g_ctp_database_filename"), RunNumber);
// g_ctp_parm_filename and g_decode_map_filename should now be defined.
gHcParms->Load(gHcParms->GetString("g_ctp_kinematics_filename"), RunNumber);
gHcParms->Load(gHcParms->GetString("g_ctp_parm_filename"));
// Load the Hall C style detector map
gHcDetectorMap = new THcDetectorMap();
gHcDetectorMap->Load("MAPS/SHMS/DETEC/shms_stack.map");
gHaEvtHandlers->Add (new THaEpicsEvtHandler("epics","HC EPICS event type 180"));
// Add EPICS variables
// THaEpics* epics = new THaEpics("T", "Epics");
// gHaApps->AddDetector(epics);
THcScalerEvtHandler *pscaler = new THcScalerEvtHandler("PS","Hall C scaler event type 1");
pscaler->AddEventType(1);
pscaler->SetUseFirstEvent(kTRUE);
// pscaler->SetDebugFile("REPORT_OUTPUT/scaler_debug.txt");
gHaEvtHandlers->Add (pscaler);
// Set up the analyzer - we use the standard one,
// but this could be an experiment-specific one as well.
// The Analyzer controls the reading of the data, executes
// tests/cuts, loops over Acpparatus's and PhysicsModules,
// and executes the output routines.
THcAnalyzer* analyzer = new THcAnalyzer;
// A simple event class to be output to the resulting tree.
// Creating your own descendant of THaEvent is one way of
// defining and controlling the output.
THaEvent* event = new THaEvent;
// Define the run(s) that we want to analyze.
// We just set up one, but this could be many.
char RunFileName[100];
sprintf(RunFileName, RunFileNamePattern, RunNumber);
THaRun* run = new THaRun(RunFileName);
// Eventually need to learn to skip over, or properly analyze
// the pedestal events
run->SetEventRange(1, MaxEvent); // Physics Event number, does not
// include scaler or control events.
run->SetNscan(1);
run->SetDataRequired(0x7);
run->Print();
// Define the analysis parameters
TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber);
analyzer->SetCountMode(2); // 0 = counter is # of physics triggers
// 1 = counter is # of all decode reads
// 2 = counter is event number
analyzer->SetEvent(event);
analyzer->SetEpicsEvtType(180);
analyzer->SetCrateMapFileName("MAPS/db_cratemap.dat");
analyzer->SetOutFile(ROOTFileName.Data());
analyzer->SetOdefFile("DEF-files/HMS/EPICS/epics_short.def"); // Call EPICS variables K.Park
//analyzer->SetOdefFile("DEF-files/SHMS/GEN/pstackana_report.def");
//analyzer->SetCutFile("DEF-files/SHMS/GEN/pstackana_report_cuts.def"); // optional
// File to record cuts accounting information
// analyzer->SetSummaryFile(Form("REPORT_OUTPUT/SHMS/summary_%05d.report", RunNumber)); // optional
// Start the actual analysis.
analyzer->Process(run);
// Create report file from template.
//analyzer->PrintReport("TEMPLATES/pstackana.template",Form("REPORT_OUTPUT/SHMS/replay_shms_%05d.report", RunNumber));
}
protorootfile ../ROOTfiles/hms_replay_scalers_XXXXX.root
guicolor lightblue
canvassize 800 800
newpage 2 3
title Trig rates
macro Macros/plot_hms_scalers.C("uhScalTrigh1X","none")
macro Macros/plot_hms_scalers.C("uhScalTrigh1Y","none")
macro Macros/plot_hms_scalers.C("uhScalTrigh2X","none")
macro Macros/plot_hms_scalers.C("uhScalTrigh2Y","none")
macro Macros/plot_hms_scalers.C("uhScalTrigh1Xh1y","none")
macro Macros/plot_hms_scalers.C("uhScalTrighTrig","none")
newpage 2 2
title Hod ave rates
macro Macros/plot_hms_scalers.C("uhScalHodNeg1x","uhScalHodPos1x")
macro Macros/plot_hms_scalers.C("uhScalHodNeg1y","uhScalHodPos1y")
macro Macros/plot_hms_scalers.C("uhScalHodNeg2x","uhScalHodPos2x")
macro Macros/plot_hms_scalers.C("uhScalHodNeg2y","uhScalHodPos2y")
newpage 2 2
title BCM rates
macro Macros/plot_hms_scalers.C("uhScalBCM1","none")
macro Macros/plot_hms_scalers.C("uhScalBCM2","none")
macro Macros/plot_hms_scalers.C("uhScalBCM1","uhScalBCM2")
macro Macros/plot_hms_scalers.C("uhScalUnser","none")
newpage 2 2
title BCM current
macro Macros/plot_hms_scalers.C("uhCurBCM1","none")
macro Macros/plot_hms_scalers.C("uhCurBCM2","none")
macro Macros/plot_hms_scalers.C("uhCurBCM1","uhCurBCM2")
macro Macros/plot_hms_scalers.C("uhCurUnser","none")
newpage 4 4
title X1 Scalers
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad01","uhScalEvHodPos1xPad01")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad02","uhScalEvHodPos1xPad02")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad03","uhScalEvHodPos1xPad03")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad04","uhScalEvHodPos1xPad04")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad05","uhScalEvHodPos1xPad05")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad06","uhScalEvHodPos1xPad06")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad07","uhScalEvHodPos1xPad07")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad08","uhScalEvHodPos1xPad08")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad09","uhScalEvHodPos1xPad09")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad10","uhScalEvHodPos1xPad10")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad11","uhScalEvHodPos1xPad11")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad12","uhScalEvHodPos1xPad12")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad13","uhScalEvHodPos1xPad13")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad14","uhScalEvHodPos1xPad14")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad15","uhScalEvHodPos1xPad15")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1xPad16","uhScalEvHodPos1xPad16")
newpage 3 4
title Y1 Scalers
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad01","uhScalEvHodPos1yPad01")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad02","uhScalEvHodPos1yPad02")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad03","uhScalEvHodPos1yPad03")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad04","uhScalEvHodPos1yPad04")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad05","uhScalEvHodPos1yPad05")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad06","uhScalEvHodPos1yPad06")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad07","uhScalEvHodPos1yPad07")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad08","uhScalEvHodPos1yPad08")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad09","uhScalEvHodPos1yPad09")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg1yPad10","uhScalEvHodPos1yPad10")
newpage 4 4
title X2 Scalers
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad01","uhScalEvHodPos2xPad01")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad02","uhScalEvHodPos2xPad02")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad03","uhScalEvHodPos2xPad03")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad04","uhScalEvHodPos2xPad04")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad05","uhScalEvHodPos2xPad05")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad06","uhScalEvHodPos2xPad06")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad07","uhScalEvHodPos2xPad07")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad08","uhScalEvHodPos2xPad08")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad09","uhScalEvHodPos2xPad09")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad10","uhScalEvHodPos2xPad10")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad11","uhScalEvHodPos2xPad11")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad12","uhScalEvHodPos2xPad12")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad13","uhScalEvHodPos2xPad13")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad14","uhScalEvHodPos2xPad14")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad15","uhScalEvHodPos2xPad15")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2xPad16","uhScalEvHodPos2xPad16")
newpage 3 4
title Y2 Scalers
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad01","uhScalEvHodPos2yPad01")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad02","uhScalEvHodPos2yPad02")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad03","uhScalEvHodPos2yPad03")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad04","uhScalEvHodPos2yPad04")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad05","uhScalEvHodPos2yPad05")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad06","uhScalEvHodPos2yPad06")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad07","uhScalEvHodPos2yPad07")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad08","uhScalEvHodPos2yPad08")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad09","uhScalEvHodPos2yPad09")
macro Macros/plot_hms_scalers.C("uhScalEvHodNeg2yPad10","uhScalEvHodPos2yPad10")
protorootfile ../ROOTfiles/shms_replay_scalers_XXXXX.root
guicolor lightblue
canvassize 800 800
newpage 2 3
title Trig rates
macro Macros/plot_shms_scalers.C("uhScalTrigs1X","none")
macro Macros/plot_shms_scalers.C("uhScalTrigs1Y","none")
macro Macros/plot_shms_scalers.C("uhScalTrigs2X","none")
macro Macros/plot_shms_scalers.C("uhScalTrigs2Y","none")
macro Macros/plot_shms_scalers.C("uhScalTrigs1Xs1y","none")
macro Macros/plot_shms_scalers.C("uhScalTrigsTrig","none")
newpage 2 2
title Hod ave rates
macro Macros/plot_shms_scalers.C("uhScalHodNeg1x","uhScalHodPos1x")
macro Macros/plot_shms_scalers.C("uhScalHodNeg1y","uhScalHodPos1y")
macro Macros/plot_shms_scalers.C("uhScalHodNeg2x","uhScalHodPos2x")
newpage 2 2
title BCM rates
macro Macros/plot_shms_scalers.C("uhScalBCM1","none")
macro Macros/plot_shms_scalers.C("uhScalBCM2","none")
macro Macros/plot_shms_scalers.C("uhScalBCM1","uhScalBCM2")
macro Macros/plot_shms_scalers.C("uhScalUnser","none")
newpage 2 2
title BCM current
macro Macros/plot_shms_scalers.C("uhCurBCM1","none")
macro Macros/plot_shms_scalers.C("uhCurBCM2","none")
macro Macros/plot_shms_scalers.C("uhCurBCM1","uhCurBCM2")
macro Macros/plot_shms_scalers.C("uhCurUnser","none")
newpage 4 4
title X1 Scalers
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad01","uhScalEvHodPos1xPad01")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad02","uhScalEvHodPos1xPad02")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad03","uhScalEvHodPos1xPad03")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad04","uhScalEvHodPos1xPad04")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad05","uhScalEvHodPos1xPad05")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad06","uhScalEvHodPos1xPad06")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad07","uhScalEvHodPos1xPad07")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad08","uhScalEvHodPos1xPad08")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad09","uhScalEvHodPos1xPad09")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad10","uhScalEvHodPos1xPad10")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad11","uhScalEvHodPos1xPad11")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad12","uhScalEvHodPos1xPad12")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1xPad13","uhScalEvHodPos1xPad13")
newpage 4 4
title Y1 Scalers
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad01","uhScalEvHodPos1yPad01")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad02","uhScalEvHodPos1yPad02")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad03","uhScalEvHodPos1yPad03")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad04","uhScalEvHodPos1yPad04")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad05","uhScalEvHodPos1yPad05")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad06","uhScalEvHodPos1yPad06")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad07","uhScalEvHodPos1yPad07")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad08","uhScalEvHodPos1yPad08")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad09","uhScalEvHodPos1yPad09")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad10","uhScalEvHodPos1yPad10")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad11","uhScalEvHodPos1yPad11")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad12","uhScalEvHodPos1yPad12")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg1yPad13","uhScalEvHodPos1yPad13")
newpage 4 4
title X2 Scalers
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad01","uhScalEvHodPos2xPad01")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad02","uhScalEvHodPos2xPad02")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad03","uhScalEvHodPos2xPad03")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad04","uhScalEvHodPos2xPad04")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad05","uhScalEvHodPos2xPad05")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad06","uhScalEvHodPos2xPad06")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad07","uhScalEvHodPos2xPad07")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad08","uhScalEvHodPos2xPad08")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad09","uhScalEvHodPos2xPad09")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad10","uhScalEvHodPos2xPad10")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad11","uhScalEvHodPos2xPad11")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad12","uhScalEvHodPos2xPad12")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad13","uhScalEvHodPos2xPad13")
macro Macros/plot_shms_scalers.C("uhScalEvHodNeg2xPad14","uhScalEvHodPos2xPad14")
// UserScript.C
//
// Helper macro to build additional histograms
void UserScript()
{
//
const UInt_t NTRIGS = 6;
const TString trig_names[NTRIGS]={"h1X","h1Y","h1Xh1y","h2X","h2Y","hTrig"};
TH1F* hScalTrig[NTRIGS];
Double_t trig_scal[NTRIGS];
Double_t trig_ave[NTRIGS]={0,0,0,0,0,0};
TH1F* hAveTrig;
hAveTrig=new TH1F("AveTrig","Ave Trig Rates ",NTRIGS,0,NTRIGS);
//
const UInt_t NBCMS = 3;
const TString bcm_names[NBCMS] = {"BCM1", "BCM2","Unser"};
TH1F* hScalBCM[NBCMS];
TH1F* hCurBCM[NBCMS];
TH1F* hAveCurBCM;
hAveCurBCM=new TH1F("AveCurBCM","Ave Current ",NBCMS,0,NBCMS);
TH1F* hAveRateBCM;
hAveRateBCM=new TH1F("AveRateBCM","Ave BCM Rate ",NBCMS,0,NBCMS);
Double_t bcm_scal[NBCMS];
Double_t bcm_cur[NBCMS];
Double_t bcm_ave_cur[NBCMS]={0.,0.,0.};
Double_t bcm_ave_rate[NBCMS]={0.,0.,0.};
Double_t bcm_offset[NBCMS]={250000,250000,393000};
Double_t bcm_slope[NBCMS]={4500*1.15,4500,4000};
//
const UInt_t NPLANES = 4;
const TString plane_names[NPLANES] = {"1x", "1y", "2x", "2y"};
const UInt_t nbars[NPLANES] = {16, 10, 16, 10};
const UInt_t nbars_low[NPLANES] = {1, 1, 1, 1};
TH1F* hScalHodNegEv[NPLANES][16];
TH1F* hScalHodPosEv[NPLANES][16];
TH1F* hScalHodNeg[NPLANES];
TH1F* hScalHodPos[NPLANES];
Double_t hod_scalneg[NPLANES][16];
Double_t hod_scalpos[NPLANES][16];
Double_t hod_scalneg_rate[NPLANES][16];
Double_t hod_scalpos_rate[NPLANES][16];
Double_t good_bcm=0;
Double_t good_bcm_limit=265000.;
//
TTree *T=(TTree*)gDirectory->Get("TSHS");
Int_t totev=T->GetEntries();
// totev=400;
//
TString i2dbarname;TString h2dttitle;TString h2dtname;TString list_name;
for(UInt_t ip = 0; ip < NTRIGS; ip++) {
h2dttitle= trig_names[ip]+"; Event Number ; Rate ";
h2dtname="uhScalTrig"+trig_names[ip];
hScalTrig[ip]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
list_name ="HS"+trig_names[ip]+"r";
T->SetBranchAddress(list_name,&trig_scal[ip]);
}
//
for(UInt_t ip = 0; ip < NBCMS; ip++) {
h2dttitle= bcm_names[ip]+"; Event Number ; Rate ";
h2dtname="uhScal"+bcm_names[ip];
hScalBCM[ip]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
h2dttitle= bcm_names[ip]+"; Event Number ; Current ";
h2dtname="uhCur"+bcm_names[ip];
hCurBCM[ip]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
list_name ="HS"+bcm_names[ip]+"r";
T->SetBranchAddress(list_name,&bcm_scal[ip]);
}
//
for(UInt_t ip = 0; ip < NPLANES; ip++) {
h2dttitle= "Beam On,Neg"+plane_names[ip]+"; Scintillator Bar ; Ave Rate ";
h2dtname="uhScalHodNeg"+plane_names[ip];
hScalHodNeg[ip]= new TH1F(h2dtname,h2dttitle,nbars[ip],0.5,nbars[ip]+.5);
h2dttitle= "Beam on,Pos"+plane_names[ip]+"; Scintillator Bar ; Ave Rate ";
h2dtname="uhScalHodPos"+plane_names[ip];
hScalHodPos[ip]= new TH1F(h2dtname,h2dttitle,nbars[ip],0.5,nbars[ip]+.5);
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
i2dbarname = Form("%02d",ibar+1);
h2dttitle= "Neg Hod"+plane_names[ip]+i2dbarname+"; Event Number ; Rate ";
h2dtname="uhScalEvHodNeg"+plane_names[ip]+"Pad"+i2dbarname;
hScalHodNegEv[ip][ibar]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
h2dttitle= "Pos Hod"+plane_names[ip]+i2dbarname+"; Event Number ; Rate ";
h2dtname="uhScalEvHodPos"+plane_names[ip]+"Pad"+i2dbarname;
hScalHodPosEv[ip][ibar]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
hod_scalneg_rate[ip][ibar]=0;
hod_scalpos_rate[ip][ibar]=0;
}
}
//
//
for(UInt_t ip = 0; ip < NPLANES; ip++) {
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
i2dbarname = Form("%d",ibar+1);
list_name ="HShhod"+plane_names[ip]+i2dbarname+"Mr";
T->SetBranchAddress(list_name,&hod_scalneg[ip][ibar]);
list_name ="HShhod"+plane_names[ip]+i2dbarname+"Pr";
T->SetBranchAddress(list_name,&hod_scalpos[ip][ibar]);
}
}
// Loop over the events, filling the histograms
// cout << " looping over data " << endl;
for(UInt_t iev = 0; iev < totev; iev++) {
// cout << " iev = " << iev << endl;
// cout << " get entry = " << iev << endl;
T->GetEntry(iev);
//
for(UInt_t ip = 0; ip < NTRIGS; ip++) {
hScalTrig[ip]->SetBinContent(iev,trig_scal[ip]);
if (bcm_scal[0] > good_bcm_limit) trig_ave[ip]+=trig_scal[ip];
}
//
for(UInt_t ip = 0; ip < NBCMS; ip++) {
hScalBCM[ip]->SetBinContent(iev,bcm_scal[ip]);
bcm_cur[ip]=(bcm_scal[ip]-bcm_offset[ip])/bcm_slope[ip];
hCurBCM[ip]->SetBinContent(iev,bcm_cur[ip]);
if (bcm_scal[0] > good_bcm_limit) bcm_ave_cur[ip]+=bcm_cur[ip];
if (bcm_scal[0] > good_bcm_limit) bcm_ave_rate[ip]+=bcm_scal[ip];
}
if (bcm_scal[0] > good_bcm_limit) good_bcm++;
//
for(UInt_t ip = 0; ip < NPLANES; ip++) {
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
hScalHodNegEv[ip][ibar]->SetBinContent(iev,hod_scalneg[ip][ibar]);
hScalHodPosEv[ip][ibar]->SetBinContent(iev,hod_scalpos[ip][ibar]);
if (bcm_scal[0] > good_bcm_limit) {
hod_scalneg_rate[ip][ibar]+=hod_scalneg[ip][ibar];
hod_scalpos_rate[ip][ibar]+=hod_scalpos[ip][ibar];
}
// cout << ip+1 << " " << ibar+1 << " " << hod_scalneg[ip][ibar]<< " " << hod_scalpos[ip][ibar] << endl;
}
}
// cout << " finish event = " << iev << endl;
}
cout << " Done " << endl;
// calculate average when beam-on
if (good_bcm >0) {
cout << " tot ev = " << totev << " Good BCm events = " << good_bcm << endl;
for(UInt_t ip = 0; ip < NBCMS; ip++) {
hAveCurBCM->SetBinContent(ip,bcm_ave_cur[ip]/good_bcm);
hAveRateBCM->SetBinContent(ip,bcm_ave_rate[ip]/good_bcm);
}
for(UInt_t ip = 0; ip < NTRIGS; ip++) {
hAveTrig->SetBinContent(ip,trig_ave[ip]/good_bcm);
}
for(UInt_t ip = 0; ip < NPLANES; ip++) {
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
hScalHodNeg[ip]->SetBinContent(ibar+1,hod_scalneg_rate[ip][ibar]/good_bcm);
hScalHodPos[ip]->SetBinContent(ibar+1,hod_scalpos_rate[ip][ibar]/good_bcm);
}
}
}
//
return;
}
void plot_hms_scalers(TString histname,TString histname2) {
const UInt_t NTRIGS = 6;
const TString trig_names[NTRIGS]={"h1X","h1Y","h1Xh1y","h2X","h2Y","hTrig"};
const UInt_t NPLANES = 4;
const TString plane_names[NPLANES] = {"1x", "1y", "2x", "2y"};
const TString bar_names[16] = {"Pad01", "Pad02", "Pad03", "Pad04","Pad05", "Pad06", "Pad07", "Pad08","Pad09","Pad10","Pad11", "Pad12", "Pad13", "Pad14","Pad15", "Pad16"};
const UInt_t nbars[NPLANES] = {16, 10, 16, 10};
const UInt_t nbars_low[NPLANES] = {1, 1, 1, 1};
TH1F* h;
TH1F* hh;
TH1F* htrig;
TH1F* hhtrig;
TText* htext;
TText* hhtext;
Double_t aveh=0,avehh=0;
h = (TH1F*) gDirectory->Get(histname);
hh = (TH1F*) gDirectory->Get(histname2);
if(!h) {
UserScript();
h = (TH1F*) gDirectory->Get(histname);
if(!h) {
cout << "User histogram " << histname << " not found" << endl;
exit(1);
}
if (histname2!="none") {
hh = (TH1F*) gDirectory->Get(histname2);
if(!hh) {
cout << "User histogram " << histname2 << " not found" << endl;
exit(1);
}
}
}
if (histname.Contains("Trig")) {
htrig = (TH1F*) gDirectory->Get("AveTrig");
}
if (histname2.Contains("Trig")) {
hhtrig = (TH1F*) gDirectory->Get("AveTrig");
}
for (Int_t ip=0;ip<NTRIGS;ip++) {
if (histname.Contains(trig_names[ip])) aveh=htrig->GetBinContent(ip);
if (histname2.Contains(trig_names[ip])) avehh=hhtrig->GetBinContent(ip);
}
// cout << histname.Contains("adcpeak") << endl;
Double_t maxf=0,max1=0,max2=0;
h->SetStats(0);
h->GetXaxis()->SetTitleOffset(.6);
h->GetXaxis()->SetTitleSize(0.08);
h->GetYaxis()->SetTitleOffset(.6);
h->GetYaxis()->SetTitleSize(0.08);
h->SetMinimum(0);
max1=h->GetBinContent(h->GetMaximumBin());
if (histname.Contains("uhScalHod")) {
TH1F* h1hod;
TH1F* h2hod;
TString h1title;
TString h2title;
UInt_t ipl_f1=0;
UInt_t ipl_f2=0;
for(UInt_t ipl = 0; ipl < NPLANES; ipl++) {
if (histname.Contains(plane_names[ipl]))ipl_f1 = ipl;
if (histname2.Contains(plane_names[ipl])) ipl_f2=ipl;
}
if (histname.Contains("Neg")) h1title="uhScalHodNeg"+plane_names[ipl_f1];
if (histname.Contains("Pos")) h1title="uhScalHodPos"+plane_names[ipl_f1];
if (histname2.Contains("Neg")) h2title="uhScalHodNeg"+plane_names[ipl_f2];
if (histname2.Contains("Pos")) h2title="uhScalHodPos"+plane_names[ipl_f2];
h1hod = (TH1F*) gDirectory->Get(h1title);
h2hod = (TH1F*) gDirectory->Get(h2title);
for(UInt_t ibar = nbars_low[ipl_f1]-1; ibar < nbars[ipl_f1]; ibar++) {
if (h1hod) aveh+=h1hod->GetBinContent(ibar+1);
}
for(UInt_t ibar = nbars_low[ipl_f2]-1; ibar < nbars[ipl_f2]; ibar++) {
if (h2hod) avehh+=h2hod->GetBinContent(ibar+1);
}
}
if (histname.Contains("EvHod")) {
TH1F* h1hod;
TH1F* h2hod;
TString h1title;
TString h2title;
TString i2barname;
for(UInt_t ipl = 0; ipl < NPLANES; ipl++) {
for(UInt_t ibar = nbars_low[ipl]-1; ibar < nbars[ipl]; ibar++) {
if (histname.Contains(plane_names[ipl]) && histname.Contains(bar_names[ibar])) {
if (histname.Contains("Neg")) h1title="uhScalHodNeg"+plane_names[ipl];
if (histname.Contains("Pos")) h1title="uhScalHodPos"+plane_names[ipl];
h1hod = (TH1F*) gDirectory->Get(h1title);
if (h1hod) aveh=h1hod->GetBinContent(ibar+1);
}
if (histname2.Contains(plane_names[ipl]) && histname2.Contains(bar_names[ibar])) {
if (histname2.Contains("Neg")) h2title="uhScalHodNeg"+plane_names[ipl];
if (histname2.Contains("Pos")) h2title="uhScalHodPos"+plane_names[ipl];
h2hod = (TH1F*) gDirectory->Get(h2title);
if (h2hod) avehh=h2hod->GetBinContent(ibar+1);
}
}
}
}
if (histname.Contains("BCM") || histname.Contains("Unser")) {
TH1F* hbcm;
if (histname.Contains("Cur") ) hbcm = (TH1F*) gDirectory->Get("AveCurBCM");
if (histname.Contains("Scal") ) hbcm = (TH1F*) gDirectory->Get("AveRateBCM");
if (histname.Contains("BCM1")) aveh=hbcm->GetBinContent(0);
if (histname.Contains("BCM2")) aveh=hbcm->GetBinContent(1);
if (histname.Contains("Unser")) aveh=hbcm->GetBinContent(2);
if (histname2!="none") {
if (histname2.Contains("BCM1")) avehh=hbcm->GetBinContent(0);
if (histname2.Contains("BCM2")) avehh=hbcm->GetBinContent(1);
if (histname2.Contains("Unser")) avehh=hbcm->GetBinContent(2);
}
}
if (hh) max2=hh->GetBinContent(hh->GetMaximumBin());
maxf=max1*1.2;
if (hh && max2>max1) maxf=max2*1.2;
if (h && !histname.Contains("uhScalHod")) htext = new TText(2,maxf*.95,Form("%s Ave = %7.2f",h->GetTitle(),aveh));
if (hh && !histname.Contains("uhScalHod")) hhtext = new TText(2,maxf*.90,Form("%s Ave = %7.2f",hh->GetTitle(),avehh));
if (h && histname.Contains("uhScalHod")) htext = new TText(2,maxf*.95,Form("%s Integral = %7.2f",h->GetTitle(),aveh));
if (hh && histname.Contains("uhScalHod")) hhtext = new TText(2,maxf*.90,Form("%s Integral = %7.2f",hh->GetTitle(),avehh));
h->SetMaximum(maxf);
h->Draw("p");
h->SetMarkerStyle(7);
h->SetMarkerColor(1);
htext->Draw();
if (hh) {
hh->Draw("p same");
hh->SetMarkerColor(2);
hh->SetMarkerStyle(7);
hhtext->Draw();
hhtext->SetTextColor(2);
}
}
// UserScript.C
//
// Helper macro to build additional histograms
void UserScript()
{
//
const UInt_t NTRIGS = 6;
const TString trig_names[NTRIGS]={"s1X","s1Y","s1Xs1y","s2X","s2Y","sTrig"};
TH1F* hScalTrig[NTRIGS];
Double_t trig_scal[NTRIGS];
Double_t trig_ave[NTRIGS]={0,0,0,0,0,0};
TH1F* hAveTrig;
hAveTrig=new TH1F("AveTrig","Ave Trig Rates ",NTRIGS,0,NTRIGS);
//
const UInt_t NBCMS = 3;
const TString bcm_names[NBCMS] = {"BCM1", "BCM2","Unser"};
TH1F* hScalBCM[NBCMS];
TH1F* hCurBCM[NBCMS];
TH1F* hAveCurBCM;
hAveCurBCM=new TH1F("AveCurBCM","Ave Current ",NBCMS,0,NBCMS);
TH1F* hAveRateBCM;
hAveRateBCM=new TH1F("AveRateBCM","Ave BCM Rate ",NBCMS,0,NBCMS);
Double_t bcm_scal[NBCMS];
Double_t bcm_cur[NBCMS];
Double_t bcm_ave_cur[NBCMS]={0.,0.,0.};
Double_t bcm_ave_rate[NBCMS]={0.,0.,0.};
Double_t bcm_offset[NBCMS]={250000,250000,393000};
Double_t bcm_slope[NBCMS]={4500*1.15,4500,4000};
//
const UInt_t NPLANES = 4;
const TString plane_names[NPLANES] = {"1x", "1y", "2x", "2y"};
const UInt_t nbars[NPLANES] = {13, 13, 14, 16};
const UInt_t nbars_low[NPLANES] = {1, 1, 1, 7};
TH1F* hScalHodNegEv[NPLANES][16];
TH1F* hScalHodPosEv[NPLANES][16];
TH1F* hScalHodNeg[NPLANES];
TH1F* hScalHodPos[NPLANES];
Double_t hod_scalneg[NPLANES][16];
Double_t hod_scalpos[NPLANES][16];
Double_t hod_scalneg_rate[NPLANES][16];
Double_t hod_scalpos_rate[NPLANES][16];
Double_t good_bcm=0;
Double_t good_bcm_limit=260000.;
//
TTree *T=(TTree*)gDirectory->Get("TSPS");
Int_t totev=T->GetEntries();
totev=400;
//
TString i2dbarname;TString h2dttitle;TString h2dtname;TString list_name;
for(UInt_t ip = 0; ip < NTRIGS; ip++) {
h2dttitle= trig_names[ip]+"; Event Number ; Rate ";
h2dtname="uhScalTrig"+trig_names[ip];
hScalTrig[ip]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
list_name ="PS"+trig_names[ip]+"r";
T->SetBranchAddress(list_name,&trig_scal[ip]);
}
//
for(UInt_t ip = 0; ip < NBCMS; ip++) {
h2dttitle= bcm_names[ip]+"; Event Number ; Rate ";
h2dtname="uhScal"+bcm_names[ip];
hScalBCM[ip]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
h2dttitle= bcm_names[ip]+"; Event Number ; Current ";
h2dtname="uhCur"+bcm_names[ip];
hCurBCM[ip]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
list_name ="PS"+bcm_names[ip]+"r";
T->SetBranchAddress(list_name,&bcm_scal[ip]);
}
//
for(UInt_t ip = 0; ip < NPLANES; ip++) {
h2dttitle= "Beam On,Neg"+plane_names[ip]+"; Scintillator Bar ; Ave Rate ";
h2dtname="uhScalHodNeg"+plane_names[ip];
hScalHodNeg[ip]= new TH1F(h2dtname,h2dttitle,nbars[ip],0.5,nbars[ip]+.5);
h2dttitle= "Beam On,Pos"+plane_names[ip]+"; Scintillator Bar ; Ave Rate ";
h2dtname="uhScalHodPos"+plane_names[ip];
hScalHodPos[ip]= new TH1F(h2dtname,h2dttitle,nbars[ip],0.5,nbars[ip]+.5);
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
i2dbarname = Form("%02d",ibar+1);
h2dttitle= "Neg Hod"+plane_names[ip]+i2dbarname+"; Event Number ; Rate ";
h2dtname="uhScalEvHodNeg"+plane_names[ip]+"Pad"+i2dbarname;
hScalHodNegEv[ip][ibar]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
h2dttitle= "Pos Hod"+plane_names[ip]+i2dbarname+"; Event Number ; Rate ";
h2dtname="uhScalEvHodPos"+plane_names[ip]+"Pad"+i2dbarname;
hScalHodPosEv[ip][ibar]= new TH1F(h2dtname,h2dttitle,totev,0,totev);
hod_scalneg_rate[ip][ibar]=0;
hod_scalpos_rate[ip][ibar]=0;
}
}
//
//
for(UInt_t ip = 0; ip < NPLANES; ip++) {
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
i2dbarname = Form("%d",ibar+1);
list_name ="PSshod"+plane_names[ip]+i2dbarname+"Mr";
T->SetBranchAddress(list_name,&hod_scalneg[ip][ibar]);
list_name ="PSshod"+plane_names[ip]+i2dbarname+"Pr";
T->SetBranchAddress(list_name,&hod_scalpos[ip][ibar]);
}
}
// Loop over the events, filling the histograms
// cout << " looping over data " << endl;
for(UInt_t iev = 0; iev < totev; iev++) {
// cout << " iev = " << iev << endl;
// cout << " get entry = " << iev << endl;
T->GetEntry(iev);
//
for(UInt_t ip = 0; ip < NTRIGS; ip++) {
hScalTrig[ip]->SetBinContent(iev,trig_scal[ip]);
if (bcm_scal[0] > good_bcm_limit) trig_ave[ip]+=trig_scal[ip];
}
//
for(UInt_t ip = 0; ip < NBCMS; ip++) {
hScalBCM[ip]->SetBinContent(iev,bcm_scal[ip]);
bcm_cur[ip]=(bcm_scal[ip]-bcm_offset[ip])/bcm_slope[ip];
hCurBCM[ip]->SetBinContent(iev,bcm_cur[ip]);
if (bcm_scal[0] > good_bcm_limit) bcm_ave_cur[ip]+=bcm_cur[ip];
if (bcm_scal[0] > good_bcm_limit) bcm_ave_rate[ip]+=bcm_scal[ip];
}
if (bcm_scal[0] > good_bcm_limit) good_bcm++;
//
for(UInt_t ip = 0; ip < NPLANES; ip++) {
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
hScalHodNegEv[ip][ibar]->SetBinContent(iev,hod_scalneg[ip][ibar]);
hScalHodPosEv[ip][ibar]->SetBinContent(iev,hod_scalpos[ip][ibar]);
if (bcm_scal[0] > good_bcm_limit) {
hod_scalneg_rate[ip][ibar]+=hod_scalneg[ip][ibar];
hod_scalpos_rate[ip][ibar]+=hod_scalpos[ip][ibar];
}
// cout << ip+1 << " " << ibar+1 << " " << hod_scalneg[ip][ibar]<< " " << hod_scalpos[ip][ibar] << endl;
}
}
// cout << " finish event = " << iev << endl;
}
cout << " Done " << endl;
// calculate average when beam-on
if (good_bcm >0) {
for(UInt_t ip = 0; ip < NBCMS; ip++) {
hAveCurBCM->SetBinContent(ip,bcm_ave_cur[ip]/good_bcm);
hAveRateBCM->SetBinContent(ip,bcm_ave_rate[ip]/good_bcm);
}
for(UInt_t ip = 0; ip < NTRIGS; ip++) {
hAveTrig->SetBinContent(ip,trig_ave[ip]/good_bcm);
}
for(UInt_t ip = 0; ip < NPLANES; ip++) {
for(UInt_t ibar = nbars_low[ip]-1; ibar < nbars[ip]; ibar++) {
hScalHodNeg[ip]->SetBinContent(ibar+1,hod_scalneg_rate[ip][ibar]/good_bcm);
hScalHodPos[ip]->SetBinContent(ibar+1,hod_scalpos_rate[ip][ibar]/good_bcm);
}
}
}
//
return;
}
void plot_shms_scalers(TString histname,TString histname2) {
const UInt_t NTRIGS = 6;
const TString trig_names[NTRIGS]={"s1X","s1Y","s1Xs1y","s2X","s2Y","sTrig"};
const UInt_t NPLANES = 4;
const TString plane_names[NPLANES] = {"1x", "1y", "2x", "2y"};
const TString bar_names[16] = {"Pad01", "Pad02", "Pad03", "Pad04","Pad05", "Pad06", "Pad07", "Pad08","Pad09","Pad10","Pad11", "Pad12", "Pad13", "Pad14","Pad15", "Pad16"};
const UInt_t nbars[NPLANES] = {13, 13, 14, 16};
const UInt_t nbars_low[NPLANES] = {1, 1, 1, 7};
TH1F* h;
TH1F* hh;
TH1F* htrig;
TH1F* hhtrig;
TText* htext;
TText* hhtext;
Double_t aveh=0,avehh=0;
h = (TH1F*) gDirectory->Get(histname);
hh = (TH1F*) gDirectory->Get(histname2);
if(!h) {
UserScript();
h = (TH1F*) gDirectory->Get(histname);
if(!h) {
cout << "User histogram " << histname << " not found" << endl;
exit(1);
}
if (histname2!="none") {
hh = (TH1F*) gDirectory->Get(histname2);
if(!hh) {
cout << "User histogram " << histname2 << " not found" << endl;
exit(1);
}
}
}
if (histname.Contains("Trig")) {
htrig = (TH1F*) gDirectory->Get("AveTrig");
}
if (histname2.Contains("Trig")) {
hhtrig = (TH1F*) gDirectory->Get("AveTrig");
}
for (Int_t ip=0;ip<NTRIGS;ip++) {
if (histname.Contains(trig_names[ip])) aveh=htrig->GetBinContent(ip);
if (histname2.Contains(trig_names[ip])) avehh=hhtrig->GetBinContent(ip);
}
// cout << histname.Contains("adcpeak") << endl;
Double_t maxf=0,max1=0,max2=0;
h->SetStats(0);
h->GetXaxis()->SetTitleOffset(.6);
h->GetXaxis()->SetTitleSize(0.08);
h->GetYaxis()->SetTitleOffset(.6);
h->GetYaxis()->SetTitleSize(0.08);
h->SetMinimum(0);
max1=h->GetBinContent(h->GetMaximumBin());
if (histname.Contains("uhScalHod")) {
TH1F* h1hod;
TH1F* h2hod;
TString h1title;
TString h2title;
UInt_t ipl_f1=0;
UInt_t ipl_f2=0;
for(UInt_t ipl = 0; ipl < NPLANES; ipl++) {
if (histname.Contains(plane_names[ipl]))ipl_f1 = ipl;
if (histname2.Contains(plane_names[ipl])) ipl_f2=ipl;
}
if (histname.Contains("Neg")) h1title="uhScalHodNeg"+plane_names[ipl_f1];
if (histname.Contains("Pos")) h1title="uhScalHodPos"+plane_names[ipl_f1];
if (histname2.Contains("Neg")) h2title="uhScalHodNeg"+plane_names[ipl_f2];
if (histname2.Contains("Pos")) h2title="uhScalHodPos"+plane_names[ipl_f2];
h1hod = (TH1F*) gDirectory->Get(h1title);
h2hod = (TH1F*) gDirectory->Get(h2title);
for(UInt_t ibar = nbars_low[ipl_f1]-1; ibar < nbars[ipl_f1]; ibar++) {
if (h1hod) aveh+=h1hod->GetBinContent(ibar+1);
}
for(UInt_t ibar = nbars_low[ipl_f2]-1; ibar < nbars[ipl_f2]; ibar++) {
if (h2hod) avehh+=h2hod->GetBinContent(ibar+1);
}
}
if (histname.Contains("EvHod")) {
TH1F* h1hod;
TH1F* h2hod;
TString h1title;
TString h2title;
TString i2barname;
for(UInt_t ipl = 0; ipl < NPLANES; ipl++) {
for(UInt_t ibar = nbars_low[ipl]-1; ibar < nbars[ipl]; ibar++) {
if (histname.Contains(plane_names[ipl]) && histname.Contains(bar_names[ibar])) {
if (histname.Contains("Neg")) h1title="uhScalHodNeg"+plane_names[ipl];
if (histname.Contains("Pos")) h1title="uhScalHodPos"+plane_names[ipl];
h1hod = (TH1F*) gDirectory->Get(h1title);
if (h1hod) aveh=h1hod->GetBinContent(ibar+1);
}
if (histname2.Contains(plane_names[ipl]) && histname2.Contains(bar_names[ibar])) {
if (histname2.Contains("Neg")) h2title="uhScalHodNeg"+plane_names[ipl];
if (histname2.Contains("Pos")) h2title="uhScalHodPos"+plane_names[ipl];
h2hod = (TH1F*) gDirectory->Get(h2title);
if (h2hod) avehh=h2hod->GetBinContent(ibar+1);
}
}
}
}
if (histname.Contains("BCM") || histname.Contains("Unser")) {
TH1F* hbcm;
if (histname.Contains("Cur") ) hbcm = (TH1F*) gDirectory->Get("AveCurBCM");
if (histname.Contains("Scal") ) hbcm = (TH1F*) gDirectory->Get("AveRateBCM");
if (histname.Contains("BCM1")) aveh=hbcm->GetBinContent(0);
if (histname.Contains("BCM2")) aveh=hbcm->GetBinContent(1);
if (histname.Contains("Unser")) aveh=hbcm->GetBinContent(2);
if (histname2!="none") {
if (histname2.Contains("BCM1")) avehh=hbcm->GetBinContent(0);
if (histname2.Contains("BCM2")) avehh=hbcm->GetBinContent(1);
if (histname2.Contains("Unser")) avehh=hbcm->GetBinContent(2);
}
}
if (hh) max2=hh->GetBinContent(hh->GetMaximumBin());
maxf=max1*1.2;
if (hh && max2>max1) maxf=max2*1.2;
if (h && !histname.Contains("uhScalHod")) htext = new TText(2,maxf*.95,Form("%s Ave = %7.2f",h->GetTitle(),aveh));
if (hh && !histname.Contains("uhScalHod")) hhtext = new TText(2,maxf*.90,Form("%s Ave = %7.2f",hh->GetTitle(),avehh));
if (h && histname.Contains("uhScalHod")) htext = new TText(2,maxf*.95,Form("%s Integral = %7.2f",h->GetTitle(),aveh));
if (hh && histname.Contains("uhScalHod")) hhtext = new TText(2,maxf*.90,Form("%s Integral = %7.2f",hh->GetTitle(),avehh));
h->SetMaximum(maxf);
h->Draw("p");
h->SetMarkerStyle(7);
h->SetMarkerColor(1);
htext->Draw();
if (hh) {
hh->Draw("p same");
hh->SetMarkerColor(2);
hh->SetMarkerStyle(7);
hhtext->Draw();
hhtext->SetTextColor(2);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment