diff --git a/Tracker/TrackerRecAlgs/PairVertex/scripts/Storage.py b/Tracker/TrackerRecAlgs/PairVertex/scripts/Storage.py index b13fab4a0a5700d9eb4ca23e21b4e23ab05ca9f8..466fb4064eaa1e5d594067358564c9681374c11e 100644 --- a/Tracker/TrackerRecAlgs/PairVertex/scripts/Storage.py +++ b/Tracker/TrackerRecAlgs/PairVertex/scripts/Storage.py @@ -1,5 +1,25 @@ from PairVertexReader import * +def BoolWhatever(event): + boollist=[ + BoolDaughtersMatched(event), + event.TrackCount>=2] + + td2i=None + td3i=None + for i in range(event.TrackCount): + if event.tracksTruthBarcode[i]==2: td2i=i + if event.tracksTruthBarcode[i]==3: td3i=i + if event.tracksDoF[i]==0: boollist+= [False] + else: boollist+= [event.tracksChi2[i]/event.tracksDoF[i]<=10] + + if type(td2i)==int and type(td3i)==int: + boollist+= [event.tracksNLayersHit[td2i]>=7 and event.tracksNLayersHit[td3i]>=7] + else: boollist+= [False] + + + return all(boollist) + ArrayStorageDict={ 'TruthMaxMomentum':{ 'array':[], 'lambda': lambda event:max(event.tracksTruthPmag), @@ -88,4 +108,233 @@ ArrayStorageDict={ 'TruthMaxMomentum':{ 'plotterfunc': configBasicHist, 'plotkwargs' : {'bins':25,'kwargs':{'range':[0,25]}}, 'descr':'How many clusters have energy deposits from both daughter particles and fail track cuts?' - },} \ No newline at end of file + }, + 'CountSharedCluster':{ + 'array':[], + 'lambda': CountSharedCluster, + 'plotterfunc': configBasicHist, + 'plotkwargs' : {'bins':25,'kwargs':{'range':[0,25]},'pckwargs':{'xlabel':'# Shared Clusters'}}, + 'descr':'How many clusters have energy deposits from both daughter particles and fail track cuts?' + },'DPDecayVertexZ':{ + 'array':[], + 'lambda': lambda event: event.vertexPos[2], + 'plotterfunc': configBasicHist, + 'plotkwargs' : {}, + 'descr':'Dark photon decay vertex coordinate along beamline' + }, + 'DPDecayVertexZ_Compare':{ + 'array':[[],[],[]], + 'lambda': VertexZCompare, + 'plotterfunc': configMultiHist, + 'plotkwargs' : {'label':['No Cuts','Has Shared Clusters','No Shared Clusters'],'bins':25,'kwargs':{'range':[-1600,0]},'pckwargs':{'xscale':'linear','legend':True,'legloc':'center right'}}, + 'descr':'Compare dp-decay z-coordinate cuts', + 'SepHist':'arrays allowed to have different lengths' + }, + 'NumClusters':{ + 'array':[], + 'lambda': lambda event: event.clusterCount, + 'plotterfunc': configBasicHist, + 'plotkwargs' :{'kwargs':{'range':[0,200]}}, + }, + 'NumClustersBool':{ + 'array':[], + 'lambda': lambda event: event.clusterCount<200, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr':'How many events have a cluster count in a certain range?' + }, + 'ClusterStation':{ + 'array':[], + 'lambda': lambda event: [i for i in event.clusterLocStation], + 'plotterfunc': configBasicHist, + 'plotkwargs' :{'bins':8,'kwargs':{'range':[0,4]},'pckwargs':{'xlabel':'Station #','ylabel':'#Clusters'}}, + 'descr':'Where are any clusters?' + }, + 'SharedClusterLocation':{ + 'array':[], + 'lambda': SharedClusterLocation, + 'plotterfunc': configBasicHist, + 'plotkwargs' :{'bins':8,'kwargs':{'range':[0,4]},'pckwargs':{'xlabel':'Station #','ylabel':'#Clusters'}}, + 'descr': 'Where are the shared clusters?' + }, + 'FiducialDaughters':{ + 'array':[], + 'lambda': BoolDaughtersFiducial, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr':'' + }, + 'FiducialMatchedDaughters':{ + 'array':[], + 'lambda': BoolDaughtersMatchedFiducial, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr':'' + }, + 'BoolDaughtersUltraFiducial':{ + 'array':[], + 'lambda': BoolDaughtersUltraFiducial, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr':'' + }, + 'BoolDaughtersUltraFiducialMatched':{ + 'array':[], + 'lambda':BoolDaughtersUltraFiducial, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr':'' + }, + 'ClustersPerDaughter':{ + 'array':[], + 'lambda': ClustersPerDaughter, + 'plotterfunc': configBasicHist, + 'plotkwargs' :{'bins':41,'kwargs':{'range':[0,41]},'pckwargs':{'xlabel':'# of Clusters','ylabel':'# Daughter Particle'}}, + 'descr': 'How many clusters does a daughter particle cause?' + }, + 'PercentDaughterClusterShared':{ + 'array':[], + 'lambda': PercentDaughterClusterShared, + 'plotterfunc': configBasicHist, + 'plotkwargs' :{'pckwargs':{'xlabel':'Percent of clusters shared','ylabel':'# Daughter Paricles'}}, + 'descr': 'How many clusters does a daughter particle cause?' + }, + 'Chi2DoF':{ + 'array':[], + 'lambda': lambda e: max(Chi2DoF(e)), + 'plotterfunc': configBasicHist, + 'plotkwargs' :{'kwargs':{'range':[0,20]},'pckwargs':{'xlabel':'Chi2/DoF','ylabel':'# Tracks'}}, + 'descr': 'How many clusters does a daughter particle cause?' + }, + # 1-24-23 plots + 'Efficiency0':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':0}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + }, + 'Efficiency1':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':1}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr': 'Fiducial, track, shared, matched' + }, + 'Efficiency2':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':2}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr': 'Fiducial, track, not shared, matched' + }, + 'Efficiency3':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':3}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr': 'Fiducial,shared' + }, + 'Efficiency4':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':4}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr': 'Fiducial, no shared' + }, + 'Efficiency5':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':5}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr': 'Track' + }, + 'Efficiency6':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':6}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr': 'Fid vol' + }, + 'Efficiency7':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':7}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + }, + 'Efficiency8':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':8}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + }, + 'Efficiency9':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':9}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + }, + 'Efficiency10':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':10}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + }, + 'Efficiency11':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':11}, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + }, + 'RecoMinMomentum':{ + 'array':[], + 'lambda': lambda event:min(event.tracksPmag), + 'plotterfunc': configBasicHist, + 'plotkwargs' : {'pckwargs':{'xlabel':'Minimum P_mag (MeV)','xscale':'log'}}#'rrange':[10**2,10**7], + }, + 'NTracks':{ + 'array':[], + 'lambda': FlexiBool, + 'lkwargs':{'stage':6}, + 'plotterfunc': configBasicHist, + 'plotkwargs' : {'pckwargs':{}} + }, + 'BoolWhatever':{ + 'array':[], + 'lambda': BoolChi2DoF, + 'plotterfunc': PrintBoolPercent, + 'plotkwargs' :{}, + 'descr':'something with efficiency' + } + } + + #1-24-23 Plots + # GeneralPlotter(MakePlotDict('Efficiency0'),dcuts=[{}],lcuts=[]) + # GeneralPlotter(MakePlotDict([f'Efficiency{i}' for i in range(7,12)]),dcuts=[{}],lcuts=[]) + # print() + # GeneralPlotter(MakePlotDict('Efficiency4'),dcuts=[{}],lcuts=[BoolDaughtersFiducial,BoolHasSharedCluster]) + # GeneralPlotter(MakePlotDict('Efficiency4'),dcuts=[{}],lcuts=[BoolDaughtersFiducial,BoolNotHasSharedCluster]) + + # GeneralPlotter(MakePlotDict('Chi2DoF'),dcuts=[{'TrackCount':[0,None,None,None]}],lcuts=[],label='All Events',showplot=False) + # GeneralPlotter(MakePlotDict('Chi2DoF'),dcuts=[{'TrackCount':[0,None,None,None]}],lcuts=[BoolDaughtersMatched,BoolDaughtersFiducial],label='Daughters Matched & Fiducial') + + # GeneralPlotter(MakePlotDict('CountSharedCluster'),dcuts=[],lcuts=[],label='All Events',showplot=False) + # GeneralPlotter(MakePlotDict('CountSharedCluster'),dcuts=[{'TrackCount':[1,None,None,None]}],lcuts=[BoolDaughtersMatched,BoolDaughtersFiducial,BoolChi2DoF, BoolLayersHit],label='Passes Track Cuts',showplot=False) + # GeneralPlotter(MakePlotDict('CountSharedCluster'),dcuts=[{'TrackCount':[None,None,None,2]}],lcuts=[BoolDaughtersMatched,BoolDaughtersFiducial,BoolAntiTrack],label='Fails Track Cuts') + + #GeneralPlotter(MakePlotDict('SharedClusterLocation'),dcuts=[],lcuts=[],label='Shared Cllusters') + + # GeneralPlotter(MakePlotDict('DPDecayVertexZ_Compare'),dcuts=[],lcuts=[]) + + #GeneralPlotter(MakePlotDict('RecoMinMomentum'),dcuts=[{'TrackCount':[None,None,2,None]},WaveformCuts],lcuts=[BoolDaughtersMatched,BoolDaughtersFiducial,BoolChi2DoF, BoolLayersHit,BoolTEMP]+WaveformCuts2)