CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions | Variables
estimatePileup_makeJSON_2015 Namespace Reference

Functions

def CalcPileup
 

Variables

int aveLumi = 0
 
tuple BX = int(iBX)
 Let's start the fun. More...
 
dictionary csvDict = {}
 
tuple events = open(options.csvInput, 'r')
 
dictionary GapDict = {}
 
string help = 'Use CSV file from lumiCalc.py instead of lumiDB'
 
int InGap = 0
 
tuple inputGroup = optparse.OptionGroup(parser, "Input Options")
 
int ipiece = 0
 
int LastDelivered = 0
 
tuple lastindex = len(OUTPUTLINE)
 
int lastLumiS = 0
 
list LastValidLumi = []
 
tuple LumiArray
 
tuple luminometer = str( pieces[14] )
 
string LumiString = "[%d,%2.4e,%2.4e,%2.4e],"
 
int OldRun = -1
 
list output = args[0]
 
tuple outputfile = open(output,'w')
 
string OUTPUTLINE = ""
 
tuple parameters = LumiQueryAPI.ParametersObject()
 

## Main Program

More...
 
tuple parser
 
list peakratio = lumiInfo[0]
 
tuple pieces = sepRE.split(line.strip())
 
list pileup = LastValidLumi[3]
 
tuple pileupGroup = optparse.OptionGroup(parser, "Pileup Options")
 
list record = lumiInfo[1]
 
dictionary runLumiDict = {}
 
list selBXs = []
 
tuple sepRE = re.compile(r'[\]\[\s,;:]+')
 
list trunc = OUTPUTLINE[0:lastindex]
 
list xingInstLumiArray
 

Function Documentation

def estimatePileup_makeJSON_2015.CalcPileup (   deadTable,
  parameters,
  luminometer,
  mode = 'deadtable' 
)
Given a deadtable, will calculate parameters of pileup distribution. Return formatted
string with LumiSection, LS integrated lumi, RMS of bunch to bunch lumi and pileup.

Definition at line 14 of file estimatePileup_makeJSON_2015.py.

References mathSSE.sqrt().

14 
15 def CalcPileup (deadTable, parameters, luminometer, mode='deadtable'):
16  '''Given a deadtable, will calculate parameters of pileup distribution. Return formatted
17  string with LumiSection, LS integrated lumi, RMS of bunch to bunch lumi and pileup.'''
18 
19  LumiString = ""
20  LumiArray = []
21 
22  for lumiSection, deadArray in sorted (deadTable.iteritems()):
23  numerator = 0
24  if luminometer == "HFOC":
25  threshold = 8.
26  else:
27  threshold = 1.2
28  if mode == 'csv':
29  numerator = float (deadArray[1])
30  denominator = float (deadArray[0])
31  instLumiArray = deadArray[2]
32  livetime = 1
33  if numerator < 0:
34  numerator = 0
35  if denominator:
36  livetime = numerator / denominator
37 
38 
39 
40  #print "params", parameters.lumiSectionLen, parameters.rotationTime
41 
42  else:
43  print "no csv input! Doh!"
44  return
45  # totalInstLumi = reduce(lambda x, y: x+y, instLumiArray) # not needed
46  if lumiSection > 0:
47  TotalLumi = 0
48  TotalInt = 0
49  TotalInt2 = 0
50  TotalWeight = 0
51  TotalWeight2 = 0
52  FilledXings = 0
53  for xing, xingInstLumi, xingDelvLumi in instLumiArray:
54  if selBXs and xing not in selBXs:
55  continue
56  xingIntLumi = xingInstLumi * livetime # * parameters.lumiSectionLen
57  mean = xingInstLumi * parameters.rotationTime / parameters.lumiSectionLen
58  if mean > 100:
59  if runNumber:
60  print "mean number of pileup events > 100 for run %d, lum %d : m %f l %f" % \
61  (runNumber, lumiSection, mean, xingInstLumi)
62  else:
63  print "mean number of pileup events > 100 for lum %d: m %f l %f" % \
64  (lumiSection, mean, xingInstLumi)
65  #print "mean number of pileup events for lum %d: m %f idx %d l %f" % (lumiSection, mean, xing, xingIntLumi)
66 
67  if xingInstLumi > threshold:
68 
69  TotalLumi = TotalLumi+xingIntLumi
70  TotalInt+= mean*xingIntLumi
71  FilledXings = FilledXings+1
72  #print "xing inst lumi %f %f %d" % (xingIntLumi,TotalLumi,FilledXings)
73 
74  #compute weighted mean, then loop again to get weighted RMS
75  MeanInt = 0
76  if TotalLumi >0:
77  MeanInt = TotalInt/TotalLumi
78  for xing, xingInstLumi, xingDelvlumi in instLumiArray:
79  if selBXs and xing not in selBXs:
80  continue
81  if xingInstLumi > threshold:
82  xingIntLumi = xingInstLumi * livetime # * parameters.lumiSectionLen
83  mean = xingInstLumi * parameters.rotationTime / parameters.lumiSectionLen
84  TotalInt2+= xingIntLumi*(mean-MeanInt)*(mean-MeanInt)
85  TotalWeight+= xingIntLumi
86  TotalWeight2+= xingIntLumi*xingIntLumi
87 
88 
89 
90  if ((lumiSection > 0)):
91  #print " LS, Total lumi, filled xings %d, %f, %d" %(lumiSection,TotalLumi,FilledXings)
92  if FilledXings > 0:
93  AveLumi = TotalLumi/FilledXings
94  else:
95  AveLumi = 0
96  RMSLumi = 0
97  Denom = TotalWeight*TotalWeight-TotalWeight2
98  if TotalLumi > 0 and Denom > 0:
99  RMSLumi = sqrt(TotalWeight/(TotalWeight*TotalWeight-TotalWeight2)*TotalInt2)
100  LumiString = "[%d,%2.4e,%2.4e,%2.4e]," % (lumiSection, TotalLumi, RMSLumi, MeanInt)
101  LumiArray.append(lumiSection)
102  LumiArray.append(TotalLumi) # should really weight by total lumi in LS
103  LumiArray.append(RMSLumi)
104  LumiArray.append(MeanInt)
105  lumiX=MeanInt*parameters.lumiSectionLen*FilledXings*(1./parameters.rotationTime)
106 
107  #print lumiX
108  # if TotalLumi<(lumiX*0.8):
109 # print lumiSection
110 # print FilledXings
111 # print TotalLumi
112 # print lumiX
113 # print numerator
114 # print denominator
115 
116  #print FilledXings
117  return LumiArray
118 
119 
T sqrt(T t)
Definition: SSEVec.h:18

Variable Documentation

list estimatePileup_makeJSON_2015.aveLumi = 0

Definition at line 240 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.BX = int(iBX)

Let's start the fun.

Definition at line 163 of file estimatePileup_makeJSON_2015.py.

dictionary estimatePileup_makeJSON_2015.csvDict = {}

Definition at line 189 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.events = open(options.csvInput, 'r')

Definition at line 177 of file estimatePileup_makeJSON_2015.py.

dictionary estimatePileup_makeJSON_2015.GapDict = {}

Definition at line 181 of file estimatePileup_makeJSON_2015.py.

string estimatePileup_makeJSON_2015.help = 'Use CSV file from lumiCalc.py instead of lumiDB'

Definition at line 140 of file estimatePileup_makeJSON_2015.py.

int estimatePileup_makeJSON_2015.InGap = 0

Definition at line 180 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.inputGroup = optparse.OptionGroup(parser, "Input Options")

Definition at line 137 of file estimatePileup_makeJSON_2015.py.

int estimatePileup_makeJSON_2015.ipiece = 0

Definition at line 196 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.LastDelivered = 0

Definition at line 183 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.lastindex = len(OUTPUTLINE)

Definition at line 259 of file estimatePileup_makeJSON_2015.py.

estimatePileup_makeJSON_2015.lastLumiS = 0

Definition at line 232 of file estimatePileup_makeJSON_2015.py.

estimatePileup_makeJSON_2015.LastValidLumi = []

Definition at line 182 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.LumiArray
Initial value:
1 = CalcPileup(lumiDict, parameters, luminometer,
2  mode='csv')

Definition at line 272 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.luminometer = str( pieces[14] )

Definition at line 216 of file estimatePileup_makeJSON_2015.py.

string estimatePileup_makeJSON_2015.LumiString = "[%d,%2.4e,%2.4e,%2.4e],"

Definition at line 243 of file estimatePileup_makeJSON_2015.py.

estimatePileup_makeJSON_2015.OldRun = -1

Definition at line 178 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.output = args[0]

Definition at line 154 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.outputfile = open(output,'w')

Definition at line 298 of file estimatePileup_makeJSON_2015.py.

estimatePileup_makeJSON_2015.OUTPUTLINE = ""

Definition at line 171 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.parameters = LumiQueryAPI.ParametersObject()

## Main Program

Definition at line 134 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.parser
Initial value:
1 = optparse.OptionParser("Usage: %prog [--options] output.root",
2  description = "Script to estimate average instantaneous bunch crossing luminosity using xing instantaneous luminosity information. Output is JSON format file with one entry per LumiSection")

Definition at line 135 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.peakratio = lumiInfo[0]

Definition at line 238 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.pieces = sepRE.split(line.strip())

Definition at line 194 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.pileup = LastValidLumi[3]

Definition at line 239 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.pileupGroup = optparse.OptionGroup(parser, "Pileup Options")

Definition at line 138 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.record = lumiInfo[1]

Definition at line 234 of file estimatePileup_makeJSON_2015.py.

dictionary estimatePileup_makeJSON_2015.runLumiDict = {}

Definition at line 188 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.selBXs = []

Definition at line 13 of file estimatePileup_makeJSON_2015.py.

tuple estimatePileup_makeJSON_2015.sepRE = re.compile(r'[\]\[\s,;:]+')

Definition at line 176 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.trunc = OUTPUTLINE[0:lastindex]

Definition at line 260 of file estimatePileup_makeJSON_2015.py.

list estimatePileup_makeJSON_2015.xingInstLumiArray
Initial value:
1 = [( int(orbit), float(lum), float(lumdelv) ) \
2  for orbit, lum, lumdelv in zip( pieces[15::3],
3  pieces[16::3],
4  pieces[17::3]) ]
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)

Definition at line 217 of file estimatePileup_makeJSON_2015.py.