From cdbdcd03cb281af655b71cbe1b71477d8d8805ac Mon Sep 17 00:00:00 2001
From: Savannah Rose Shively <sshively@lxplus725.cern.ch>
Date: Thu, 26 Jan 2023 12:05:07 +0100
Subject: [PATCH] storage

---
 .../PairVertex/scripts/Storage.py             | 251 +++++++++++++++++-
 1 file changed, 250 insertions(+), 1 deletion(-)

diff --git a/Tracker/TrackerRecAlgs/PairVertex/scripts/Storage.py b/Tracker/TrackerRecAlgs/PairVertex/scripts/Storage.py
index b13fab4a..466fb406 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)
-- 
GitLab