-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprintingToSpreadsheet.py
More file actions
157 lines (115 loc) · 10.8 KB
/
printingToSpreadsheet.py
File metadata and controls
157 lines (115 loc) · 10.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
### code to divide the background in separate BXs
### run: python getBXForEBeamOnly.py <list of background file names>
import os
import sys
import time
import pprint
import math
from ROOT import *
from collections import OrderedDict
import argparse
def main():
parser = argparse.ArgumentParser(description='Code to find seed tracks')
parser.add_argument('-p', action="store", dest="Particle", type=str, default="Positron")
parser.add_argument('-process', action="store", dest="Process", type=str, default="hics")
args = parser.parse_args()
particle = args.Particle
process = args.Process
if(process == "hics"):
### low signal multiplicity tracks
#listOfTracks = [1, 5, 10, 20, 30, 50, 80, 100, 130, 150, 170, 185, 200, 220]
#outFileName = "hybridSVDCutsNumbersUpdated.csv"
### high signal multiplicity tracks
listOfTracks = [250, 300, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500]
outFileName = "hybridSVDCutsNumbersUpdatedELaserHighMultiplicity19May2020.csv"
else:
listOfTracks = [1, 4, 7, 10, 13, 16]
outFileName = "hybridSVDCutsNumbersgPlusLaser"+particle+".csv"
bxList = [1,1,1,1]
inDirectory = "." #"LooseSVDanddCuts_December29_2020"
nbXList = [1,1,1,1]
outCSVFile = open(outFileName, "w")
suffixToRootFile = "WithFit3or4HitsTracksAndDistanceCut"
trackList = {}
for tracks in listOfTracks:
bxValueList = {}
seedMultiplicityPrelimSignal = 0
seedMultiplicityPrelimBkg = 0
seedMultiplicityPrelimCombi = 0
for bx in bxList:
if(process == "hics"):
##### this is for electron beam plus laser case
##rootFileName = "seedingInformation_BkgEBeam_SignalHics3000nmOldForSignalMultiplicityLessThan20Or5000nmForSignalMultiplicityMoreThan20_BX"+str(bx)+"_SignalTracks"+str(tracks)+"_trackInfoClean_VariableEnergyCut_SignalAndBackground_PositronSide_"+suffixToRootFile+".root"
##rootFileNameOnlySignal = "seedingInformation_BkgEBeam_SignalHics3000nmOldForSignalMultiplicityLessThan20Or5000nmForSignalMultiplicityMoreThan20_BX"+str(bx)+"_SignalTracks"+str(tracks)+"_trackInfoClean_VariableEnergyCut_OnlySignal_PositronSide_"+suffixToRootFile+".root"
##rootFileOnlyBackground = "seedingInformation_EBeamOnlyWIS_DividedByBX"+str(bx)+"_trackInfoClean_VariableEnergyCut_SignalAndBackground_PositronSide_"+suffixToRootFile+".root"
rootFileName = "seedingInformationFiles/seedingInformation_BkgEBeam_SignalPositronhics3000nm_jeti40_122020_9550dac4_BX"+str(bx)+"_SignalTracks"+str(tracks)+"_trackInfoClean_VariableEnergyCut_SignalAndBackground_PositronSide_"+suffixToRootFile+".root"
rootFileNameOnlySignal = "seedingInformationFiles/seedingInformation_BkgEBeam_SignalPositronhics3000nm_jeti40_122020_9550dac4_BX"+str(bx)+"_SignalTracks"+str(tracks)+"_trackInfoClean_VariableEnergyCut_OnlySignal_PositronSide_"+suffixToRootFile+".root"
rootFileOnlyBackground = "seedingInformationFiles/seedingInformation_ePlusLaserBkgKaptonWindowNewSamplesMarch62021_DividedByBX"+str(bx)+"_trackInfoClean_VariableEnergyCut_SignalAndBackground_PositronSide_"+suffixToRootFile+".root"
else:
#### this is for g+laser beam case
rootFileName = "seedingInformation_BkgGBeam_Signal"+particle+"bppp3000nmOr5000nm_BX"+str(bx)+"_SignalTracks"+str(tracks)+"_trackInfoClean_VariableEnergyCut_SignalAndBackground_"+particle+"Side_"+suffixToRootFile+".root"
rootFileNameOnlySignal = "seedingInformation_BkgGBeam_Signal"+particle+"bppp3000nmOr5000nm_BX"+str(bx)+"_SignalTracks"+str(tracks)+"_trackInfoClean_VariableEnergyCut_OnlySignal_"+particle+"Side_"+suffixToRootFile+".root"
rootFileOnlyBackground = "seedingInformation_gPlusLaserBkgNewSamplesJan262021_DividedByBX"+str(bx)+"_trackInfoClean_VariableEnergyCut_SignalAndBackground_"+particle+"Side_"+suffixToRootFile+".root"
inRootFile = TFile(inDirectory+"/"+rootFileName)
inRootFileSignal = TFile(inDirectory+"/"+rootFileNameOnlySignal)
inRootFileBkg = TFile(inDirectory+"/"+rootFileOnlyBackground)
### prepare the signal only scenario
hSignalMultiplicity = inRootFileSignal.Get("hSignalMultiplicity")
hSeedEnergySignal = inRootFileSignal.Get("hSeedEnergy")
hSeedEnergyLooseSignal = inRootFileSignal.Get("hSeedEnergyLoose")
hSeedEnergyTightSignal = inRootFileSignal.Get("hSeedEnergyTight")
hSeedMultiplicityPrelimSignal = inRootFileSignal.Get("hSeedMultiplicityPrelim")
hSeedEnergyBkg = inRootFileBkg.Get("hSeedEnergy")
hSeedEnergyLooseBkg = inRootFileBkg.Get("hSeedEnergyLoose")
hSeedEnergyTightBkg = inRootFileBkg.Get("hSeedEnergyTight")
hSeedMultiplicityPrelimBkg = inRootFileBkg.Get("hSeedMultiplicityPrelim")
hSeedEnergy = inRootFile.Get("hSeedEnergy")
hSeedEnergyLoose = inRootFile.Get("hSeedEnergyLoose")
hSeedEnergyTight = inRootFile.Get("hSeedEnergyTight")
hSeedMultiplicityPrelim = inRootFile.Get("hSeedMultiplicityPrelim")
### irrespective of signal+background combination
trueSignal = 0
for nxBins in range(hSignalMultiplicity.GetNbinsX()+1):
if(hSignalMultiplicity.GetBinContent(nxBins)!=0):
trueSignal = (nxBins - 1)
break
#### find the seeds before the fit
### signal case
prelimSigMultiSignal = 0
for nxBins in range(hSeedMultiplicityPrelimSignal.GetNbinsX()+1):
if(hSeedMultiplicityPrelimSignal.GetBinContent(nxBins)!=0):
prelimSigMultiSignal = (nxBins - 1)
break
seedMultiplicityPrelimSignal += prelimSigMultiSignal
### background case
prelimSigMultiBkg = 0
for nxBins in range(hSeedMultiplicityPrelimBkg.GetNbinsX()+1):
if(hSeedMultiplicityPrelimBkg.GetBinContent(nxBins)!=0):
prelimSigMultiBkg = (nxBins - 1)
break
seedMultiplicityPrelimBkg += prelimSigMultiBkg
### signal and background case
prelimSigMultiCombi = 0
for nxBins in range(hSeedMultiplicityPrelim.GetNbinsX()+1):
if(hSeedMultiplicityPrelim.GetBinContent(nxBins)!=0):
prelimSigMultiCombi = (nxBins - 1)
break
seedMultiplicityPrelimCombi += prelimSigMultiCombi
bxValueList[bx] = {"trueSignal": str(trueSignal), "signalOnlyInclusive": str(hSeedEnergySignal.Integral()), "signalOnlyTight": str(hSeedEnergyTightSignal.Integral()), "signalOnlyLoose": str(hSeedEnergyLooseSignal.Integral()), "bkgOnlyInclusive": str(hSeedEnergyBkg.Integral()), "bkgOnlyTight": str(hSeedEnergyTightBkg.Integral()), "bkgOnlyLoose": str(hSeedEnergyLooseBkg.Integral()), "combinedInclusive": str(hSeedEnergy.Integral()), "combinedTight": str(hSeedEnergyTight.Integral()), "combinedLoose": str(hSeedEnergyLoose.Integral())}
avgPrelimSeedMultiSignal = seedMultiplicityPrelimSignal/4.0
avgPrelimSeedMultiBkg = seedMultiplicityPrelimBkg/4.0
avgPrelimSeedMultiCombined = seedMultiplicityPrelimCombi/4.0
### storing the values in the ditionary
trackList[tracks] = bxValueList
trackList[tracks].update({"prelimSeedSignal": str(avgPrelimSeedMultiSignal), "prelimSeedBkg": str(avgPrelimSeedMultiBkg), "prelimSeedCombined": str(avgPrelimSeedMultiCombined)})
#pprint.pprint(trackList)
firstTrack = listOfTracks[0]
outCSVFile.write(",,,,"+trackList[firstTrack][nbXList[0]]["bkgOnlyInclusive"]+","+trackList[firstTrack][nbXList[0]]["bkgOnlyTight"]+","+trackList[firstTrack][nbXList[0]]["bkgOnlyLoose"]+",,,,"+trackList[firstTrack][nbXList[1]]["bkgOnlyInclusive"]+","+trackList[firstTrack][nbXList[1]]["bkgOnlyTight"]+","+trackList[firstTrack][nbXList[1]]["bkgOnlyLoose"]+",,,,"+trackList[firstTrack][nbXList[2]]["bkgOnlyInclusive"]+","+trackList[firstTrack][nbXList[2]]["bkgOnlyTight"]+","+trackList[firstTrack][nbXList[2]]["bkgOnlyLoose"]+",,,,"+trackList[firstTrack][nbXList[3]]["bkgOnlyInclusive"]+","+trackList[firstTrack][nbXList[3]]["bkgOnlyTight"]+","+trackList[firstTrack][nbXList[3]]["bkgOnlyLoose"]+"\n")
for tracks in listOfTracks:
#print trackList[tracks][1][0], " ", trackList[tracks][1][1], " ", trackList[tracks][1][2], " ", trackList[tracks][1][3]
outCSVFile.write(trackList[tracks][nbXList[0]]["trueSignal"]+","+trackList[tracks][nbXList[0]]["signalOnlyInclusive"]+","+trackList[tracks][nbXList[0]]["signalOnlyTight"]+","+trackList[tracks][nbXList[0]]["signalOnlyLoose"]+","+trackList[tracks][nbXList[0]]["combinedInclusive"]+","+trackList[tracks][nbXList[0]]["combinedTight"]+","+trackList[tracks][nbXList[0]]["combinedLoose"]+","+trackList[tracks][nbXList[1]]["trueSignal"]+","+trackList[tracks][nbXList[1]]["signalOnlyInclusive"]+","+trackList[tracks][nbXList[1]]["signalOnlyTight"]+","+trackList[tracks][nbXList[1]]["signalOnlyLoose"]+","+trackList[tracks][nbXList[1]]["combinedInclusive"]+","+trackList[tracks][nbXList[1]]["combinedTight"]+","+trackList[tracks][nbXList[1]]["combinedLoose"]+","+trackList[tracks][nbXList[2]]["trueSignal"]+","+trackList[tracks][nbXList[2]]["signalOnlyInclusive"]+","+trackList[tracks][nbXList[2]]["signalOnlyTight"]+","+trackList[tracks][nbXList[2]]["signalOnlyLoose"]+","+trackList[tracks][nbXList[2]]["combinedInclusive"]+","+trackList[tracks][nbXList[2]]["combinedTight"]+","+trackList[tracks][nbXList[2]]["combinedLoose"]+","+trackList[tracks][nbXList[3]]["trueSignal"]+","+trackList[tracks][nbXList[3]]["signalOnlyInclusive"]+","+trackList[tracks][nbXList[3]]["signalOnlyTight"]+","+trackList[tracks][nbXList[3]]["signalOnlyLoose"]+","+trackList[tracks][nbXList[3]]["combinedInclusive"]+","+trackList[tracks][nbXList[3]]["combinedTight"]+","+trackList[tracks][nbXList[3]]["combinedLoose"]+",,,"+trackList[tracks]["prelimSeedBkg"]+",,,"+trackList[tracks]["prelimSeedCombined"]+",,,"+trackList[tracks]["prelimSeedSignal"]+"\n")
outCSVFile.close()
if __name__=="__main__":
start = time.time()
main()
print("--- The time taken: ", time.time() - start, " s")