ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
python.BeamSpotData.BeamSpotAverage Class Reference
Collaboration diagram for python.BeamSpotData.BeamSpotAverage:

Public Member Functions

def __init__ (self, varList=None, weightedAverage=True)
 
def readLumiData (self, lumiCalcNtupleName)
 
def add (self, b)
 
def average (self)
 
def getIndex (self, varName)
 

Public Attributes

 varList
 
 weightedAverage
 
 sumw
 
 sumwx
 
 sumwxx
 
 sumwwee
 
 sum
 
 sumx
 
 sumxx
 
 nWarnings
 
 lumiData
 
 rms
 
 ave
 
 err
 

Detailed Description

A utility class for averaging beam spot data.

Definition at line 590 of file BeamSpotData.py.

Constructor & Destructor Documentation

◆ __init__()

def python.BeamSpotData.BeamSpotAverage.__init__ (   self,
  varList = None,
  weightedAverage = True 
)

Definition at line 593 of file BeamSpotData.py.

593  def __init__(self,varList=None,weightedAverage=True):
594  if varList:
595  self.varList = varList
596  else:
597  self.varList = ['posX','posY','posZ','sigmaX','sigmaY','sigmaZ','tiltX','tiltY','rhoXY','k']
598  self.weightedAverage = weightedAverage
599  self.sumw = numpy.zeros(len(self.varList))
600  self.sumwx = numpy.zeros(len(self.varList))
601  self.sumwxx = numpy.zeros(len(self.varList))
602  self.sumwwee = numpy.zeros(len(self.varList))
603  # Unweighted quantities always needed for RMS
604  self.sum = numpy.zeros(len(self.varList))
605  self.sumx = numpy.zeros(len(self.varList))
606  self.sumxx = numpy.zeros(len(self.varList))
607  self.nWarnings = 0
608  self.lumiData = None # luminosity data in ubarn, indexed by [run][LB]
609 

Member Function Documentation

◆ add()

def python.BeamSpotData.BeamSpotAverage.add (   self,
  b 
)
Add elements of BeamSpotValue b to average.

Definition at line 633 of file BeamSpotData.py.

633  def add(self,b):
634  """Add elements of BeamSpotValue b to average."""
635  if self.lumiData is not None:
636  lumi = 0
637  if b.lbEnd <= b.lbStart:
638  print ('ERROR: Illegal luminosity block range: [%i,%i]' % (b.lbStart,b.lbEnd))
639  self.nWarnings += 1
640  for lb in range(b.lbStart,b.lbEnd):
641  try:
642  lumi += self.lumiData[b.run][lb]
643  except Exception:
644  print ('ERROR: missing luminosity information for run %i LB %i (in [%i,%i]) - weight set to zero!!' % (b.run,lb,b.lbStart,b.lbEnd))
645  self.nWarnings += 1
646  for i in range(len(self.varList)):
647  parName = self.varList[i]
648  val = getattr(b,parName)
649  valErr = getattr(b,parName+'Err')
650  self.sum[i] += 1.
651  self.sumx[i] += val
652  self.sumxx[i] += val*val
653  if self.lumiData is None:
654  if valErr != 0. :
655  w = 1./valErr/valErr
656  else:
657  w = 1e-16
658  print ('WARNING: Divison by zero for parameter %s (val = %f valErr = %f)\n' % (parName,val,valErr))
659  self.nWarnings += 1
660  else:
661  w = lumi
662  self.sumw[i] += w
663  self.sumwx[i] += w*val
664  self.sumwxx[i] += w*val*val
665  self.sumwwee[i] += w*w*valErr*valErr
666 

◆ average()

def python.BeamSpotData.BeamSpotAverage.average (   self)

Definition at line 667 of file BeamSpotData.py.

667  def average(self):
668  self.rms = numpy.sqrt(self.sumxx/self.sum - self.sumx*self.sumx/self.sum/self.sum) # factor n/n-1 ?
669  if self.weightedAverage:
670  if self.lumiData is None:
671  self.ave = self.sumwx/self.sumw
672  self.err = 1./numpy.sqrt(self.sumw)
673  else:
674  self.ave = self.sumwx/self.sumw
675  self.err = numpy.sqrt(self.sumwwee)/self.sumw
676  else:
677  self.ave = self.sumx/self.sum
678  self.err = self.rms/numpy.sqrt(self.sum)
679 

◆ getIndex()

def python.BeamSpotData.BeamSpotAverage.getIndex (   self,
  varName 
)

Definition at line 680 of file BeamSpotData.py.

680  def getIndex(self, varName):
681  for i in range(len(self.varList)):
682  if self.varList[i]==varName:
683  return i
684  return None
685 
686 
687 

◆ readLumiData()

def python.BeamSpotData.BeamSpotAverage.readLumiData (   self,
  lumiCalcNtupleName 
)
Read iLumiCalc.exe ntuple with luminosity data, store data in self.lumiData dict.

Definition at line 610 of file BeamSpotData.py.

610  def readLumiData(self,lumiCalcNtupleName):
611  """Read iLumiCalc.exe ntuple with luminosity data, store data in self.lumiData dict."""
612  lumiFile = ROOT.TFile(lumiCalcNtupleName)
613  lumiNt = lumiFile.Get('LumiMetaData')
614  print ('Reading',lumiNt.GetEntries(), 'entries from luminosity ntuple',lumiCalcNtupleName)
615  self.lumiData = {}
616  for j in range(lumiNt.GetEntries()):
617  lumiNt.GetEntry(j)
618  run = lumiNt.RunNbr
619  lb = lumiNt.LBStart
620  lumi = lumiNt.IntLumi
621  try:
622  self.lumiData[run][lb] = lumi
623  except Exception:
624  self.lumiData[run] = {}
625  self.lumiData[run][lb] = lumi
626  lumiSum = 0.
627  for (run,lbdict) in self.lumiData.items():
628  for (lb,lumi) in lbdict.items():
629  lumiSum += lumi
630  print ('... total luminosity = %6.1f / pb' % (lumiSum/1.E6))
631  return self.lumiData
632 

Member Data Documentation

◆ ave

python.BeamSpotData.BeamSpotAverage.ave

Definition at line 671 of file BeamSpotData.py.

◆ err

python.BeamSpotData.BeamSpotAverage.err

Definition at line 672 of file BeamSpotData.py.

◆ lumiData

python.BeamSpotData.BeamSpotAverage.lumiData

Definition at line 608 of file BeamSpotData.py.

◆ nWarnings

python.BeamSpotData.BeamSpotAverage.nWarnings

Definition at line 607 of file BeamSpotData.py.

◆ rms

python.BeamSpotData.BeamSpotAverage.rms

Definition at line 668 of file BeamSpotData.py.

◆ sum

python.BeamSpotData.BeamSpotAverage.sum

Definition at line 604 of file BeamSpotData.py.

◆ sumw

python.BeamSpotData.BeamSpotAverage.sumw

Definition at line 599 of file BeamSpotData.py.

◆ sumwwee

python.BeamSpotData.BeamSpotAverage.sumwwee

Definition at line 602 of file BeamSpotData.py.

◆ sumwx

python.BeamSpotData.BeamSpotAverage.sumwx

Definition at line 600 of file BeamSpotData.py.

◆ sumwxx

python.BeamSpotData.BeamSpotAverage.sumwxx

Definition at line 601 of file BeamSpotData.py.

◆ sumx

python.BeamSpotData.BeamSpotAverage.sumx

Definition at line 605 of file BeamSpotData.py.

◆ sumxx

python.BeamSpotData.BeamSpotAverage.sumxx

Definition at line 606 of file BeamSpotData.py.

◆ varList

python.BeamSpotData.BeamSpotAverage.varList

Definition at line 595 of file BeamSpotData.py.

◆ weightedAverage

python.BeamSpotData.BeamSpotAverage.weightedAverage

Definition at line 598 of file BeamSpotData.py.


The documentation for this class was generated from the following file:
drawFromPickle.average
def average(lst)
Definition: drawFromPickle.py:38
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:79
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18