Skip to content
This repository has been archived by the owner on Jan 31, 2022. It is now read-only.

Commit

Permalink
Ge21 generalizing (#252)
Browse files Browse the repository at this point in the history
Closes #226 

Adaptations for generic usage of plotting tools with GE1/1 and GE2/1 electronics

* changed print to `print()` and change `%()` to `{}.format`, removed extra `print`s
* made `nVFATS` variable to pull out dictionary and made `maxChans` variable
* removed `gemType` dependence from `dbutils`
  • Loading branch information
dteague authored and jsturdy committed Nov 7, 2019
1 parent 0254a58 commit 8c844e3
Show file tree
Hide file tree
Showing 17 changed files with 1,059 additions and 903 deletions.
71 changes: 38 additions & 33 deletions anaSBitMonitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@
parser.set_defaults(outfilename="SBitMonitorData.root")
args = parser.parse_args()

filename = args.filename[:-5]
os.system("mkdir " + args.filename[:-5])
filename = args.infilename[:-5]
os.system("mkdir " + args.infilename[:-5])

print filename
outfilename = args.outfilename

import ROOT as r
Expand All @@ -40,6 +39,18 @@
isValidValues = np.unique(initInfo['isValid'])
ratesUsed = np.unique(initInfo['ratePulsed'])

##### FIXME
from gempython.gemplotting.mapping.chamberInfo import gemTypeMapping
if 'gemType' not in inF.sbitDataTree.GetListOfBranches():
gemType = "ge11"
else:
gemType = gemTypeMapping[rp.tree2array(tree=inF.sbitDataTree, branches =[ 'gemType' ] )[0][0]]
print gemType
##### END
from gempython.tools.hw_constants import vfatsPerGemVariant
nVFATS = vfatsPerGemVariant[gemType]
from gempython.gemplotting.mapping.chamberInfo import CHANNELS_PER_VFAT as maxChans

print('Initializing histograms')
from gempython.utils.nesteddict import nesteddict as ndict, flatten

Expand Down Expand Up @@ -88,15 +99,15 @@
dict_h_vfatObsVsVfatPulsed[isValid][calEnable][rate] = r.TH2F(
"h_vfatObservedVsVfatPulsed_{0}_{1}Hz".format(postScript,int(rate)),
"Summmary - Rate {0} Hz;VFAT {1};VFAT Observed".format(int(rate),strPulsedOrUnmasked),
24,-0.5,23.5,24,-0.5,23.5)
nVFATS,-0.5,nVFATS-0.5, nVFATS,-0.5,nVFATS-0.5)
dict_h_vfatObsVsVfatPulsed[isValid][calEnable][rate].Sumw2()

for vfat in range(0,24):
for vfat in range(0, nVFATS):
dict_h_chanVsRatePulsed_ZRateObs[isValid][calEnable][vfat] = r.TH2F(
"h_chanVsRatePulsed_ZRateObs_vfat{0}_{1}".format(vfat,postScript),
"VFAT{0};Rate #left(Hz#right);Channel",
len(ratesUsed),0,len(ratesUsed),
128,-0.5,127.5)
maxChans, -0.5, maxChans-0.5)

# Overall Rate Observed by CTP7
if calEnable:
Expand Down Expand Up @@ -157,7 +168,7 @@
dict_h_sbitObsVsChanPulsed[isValid][calEnable][rate][vfat] = r.TH2F(
"h_sbitObsVsChanPulsed_vfat{0}_{1}_{2}Hz".format(vfat,postScript,int(rate)),
"VFAT{0} - Rate {1} Hz;Channel {2};SBIT Observed".format(vfat,int(rate),strPulsedOrUnmasked),
128,-0.5,127.5,64,-0.5,63.5)
maxChans, -0.5, maxChans-0.5,64,-0.5,63.5)
dict_h_sbitObsVsChanPulsed[isValid][calEnable][rate][vfat].Sumw2()

dict_h_sbitMultiVsSbitSize[isValid][calEnable][rate][vfat] = r.TH2F(
Expand Down Expand Up @@ -277,15 +288,15 @@

for calEnable in calEnableValues:
for rate in ratesUsed:
for vfat in range(0,24):
for vfat in range(0, nVFATS):
for event,multi in dict_validSbitsPerEvt[isValid][calEnable][rate][vfat].iteritems():
dict_h_sbitMulti[isValid][calEnable][rate][vfat].Fill(multi)

for size in dict_listSbitSizesPerEvt[isValid][calEnable][rate][vfat][event]:
dict_h_sbitMultiVsSbitSize[isValid][calEnable][rate][vfat].Fill(size,multi)

print("Making summary plots")
from gempython.gemplotting.utils.anautilities import make3x8Canvas, saveSummary
from gempython.gemplotting.utils.anautilities import addPlotToCanvas, getSummaryCanvas
for isValid in isValidValues:
if not isValid and not args.checkInvalid:
continue
Expand All @@ -296,17 +307,11 @@
strValidity="invalidSbits"

# All Rates
rateCanvas = make3x8Canvas(
name="rateObservedVsRatePulsed_{0}".format(strValidity),
initialContent=dict_g_rateObsCTP7VsRatePulsed[isValid],
initialDrawOpt="APE1",
secondaryContent=dict_g_rateObsFPGAVsRatePulsed[isValid],
secondaryDrawOpt="PE1")
rateCanvas = make3x8Canvas(
name="",
secondaryContent=dict_g_rateObsVFATVsRatePulsed[isValid],
secondaryDrawOpt="PE1",
canv=rateCanvas)
rateCanvas = getSummaryCanvas(dict_g_rateObsCTP7VsRatePulsed[isValid],
name="rateObservedVsRatePulsed_{0}".format(strValidity),
drawOpt="APE1", gemType=gemType)
rateCanvas = addPlotToCanvas(rateCanvas, dict_g_rateObsFPGAVsRatePulsed[isValid], drawOpt="PE1", gemType=gemType)
rateCanvas = addPlotToCanvas(rateCanvas, dict_g_rateObsVFATVsRatePulsed[isValid], drawOpt="PE1", gemType=gemType)

# Make the legend
rateLeg = r.TLegend(0.5,0.5,0.9,0.9)
Expand All @@ -330,11 +335,11 @@
rateCanvas.SaveAs("{0}/rateObservedVsRatePulsed_{1}.png".format(filename,strValidity))

# CalDisable rate 0 case
saveSummary(dict_h_sbitMulti[isValid][0][0], name="{0}/sbitMulti_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="")
saveSummary(dict_h_sbitSize[isValid][0][0], name="{0}/sbitSize_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="")
getSummaryCanvas(dict_h_sbitMulti[isValid][0][0], name="{0}/sbitMulti_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="", gemType=gemType, write2Disk=True)
getSummaryCanvas(dict_h_sbitSize[isValid][0][0], name="{0}/sbitSize_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="", gemType=gemType, write2Disk=True)

saveSummary(dict_h_sbitObsVsChanPulsed[isValid][0][0], name="{0}/sbitObsVsChanUnmasked_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="COLZ")
saveSummary(dict_h_sbitMultiVsSbitSize[isValid][0][0], name="{0}/sbitMultiVsSbitSize_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="COLZ")
getSummaryCanvas(dict_h_sbitObsVsChanPulsed[isValid][0][0], name="{0}/sbitObsVsChanUnmasked_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="COLZ", gemType=gemType, write2Disk=True)
getSummaryCanvas(dict_h_sbitMultiVsSbitSize[isValid][0][0], name="{0}/sbitMultiVsSbitSize_{1}_calDisabled_0Hz.png".format(filename,strValidity), drawOpt="COLZ", gemType=gemType, write2Disk=True)

for idx,rate in enumerate(ratesUsed):
# Sum over all rates
Expand All @@ -347,8 +352,8 @@
else:
dict_h_vfatObsVsVfatPulsed[isValid][1][-1].Add(dict_h_vfatObsVsVfatPulsed[isValid][1][rate])

cloneExists = { vfat:False for vfat in range(0,24) }
for vfat in range(0,24):
cloneExists = { vfat:False for vfat in range(0, nVFATS) }
for vfat in range(0, nVFATS):
if ( not cloneExists[vfat] ):
cloneExists[vfat] = True

Expand Down Expand Up @@ -377,15 +382,15 @@
dict_h_sbitObsVsChanPulsed[isValid][1][-1][vfat].Add(dict_h_sbitObsVsChanPulsed[isValid][1][rate][vfat])
dict_h_sbitMultiVsSbitSize[isValid][1][-1][vfat].Add(dict_h_sbitMultiVsSbitSize[isValid][1][rate][vfat])

saveSummary(dict_h_sbitMulti[isValid][1][-1], name="{0}/sbitMulti_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="")
saveSummary(dict_h_sbitSize[isValid][1][-1], name="{0}/sbitSize_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="")
getSummaryCanvas(dict_h_sbitMulti[isValid][1][-1], name="{0}/sbitMulti_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="", gemType=gemType, write2Disk=True)
getSummaryCanvas(dict_h_sbitSize[isValid][1][-1], name="{0}/sbitSize_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="", gemType=gemType, write2Disk=True)

saveSummary(dict_h_sbitObsVsChanPulsed[isValid][1][-1], name="{0}/sbitObsVsChanPulsed_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="COLZ")
saveSummary(dict_h_sbitMultiVsSbitSize[isValid][1][-1], name="{0}/sbitMultiVsSbitSize_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="COLZ")
getSummaryCanvas(dict_h_sbitObsVsChanPulsed[isValid][1][-1], name="{0}/sbitObsVsChanPulsed_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="COLZ", gemType=gemType, write2Disk=True)
getSummaryCanvas(dict_h_sbitMultiVsSbitSize[isValid][1][-1], name="{0}/sbitMultiVsSbitSize_{1}_calEnabled_SumOfAllRates.png".format(filename,strValidity), drawOpt="COLZ", gemType=gemType, write2Disk=True)

print("Storing TObjects in output TFile")
# Per VFAT Plots
for vfat in range(0,24):
for vfat in range(0, nVFATS):
dirVFAT = outF.mkdir("VFAT{0}".format(vfat))

for isValid in isValidValues:
Expand Down Expand Up @@ -486,7 +491,7 @@
print("| :---: | :------: | :-------: | :----------: |")
fileMisMappedSbits.write("| :---: | :------: | :-------: | :----------: |\n")
for idx in range(0,len(wrongSBITMapping)):
print("| {0} | {1} | {2} | {3} |".format(
print("| {0:5d} | {1:8d} | {2:9d} | {3:12d} |".format(
wrongSBITMapping[idx]['vfatN'],
wrongSBITMapping[idx]['vfatSBIT'],
wrongSBITMapping[idx]['sbitSize'],
Expand Down Expand Up @@ -514,7 +519,7 @@
print("| :--------: | :----------: | :----------: |")
fileMisMappedVFATs.write("| :--------: | :----------: | :----------: |\n")
for idx in range(0,len(wrongVFATMapping)):
print("| {0} | {1} | {2} |".format(
print("| {0:10d} | {1:12d} | {2:12d} |".format(
wrongVFATMapping[idx]['vfatN'],
wrongVFATMapping[idx]['vfatObs'],
wrongVFATMapping[idx]['N_Mismatches']))
Expand Down
Loading

0 comments on commit 8c844e3

Please sign in to comment.