ATLAS Offline Software
Loading...
Searching...
No Matches
python.BeamSpotData.BeamSpotAverage Class Reference
Collaboration diagram for python.BeamSpotData.BeamSpotAverage:

Public Member Functions

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

Public Attributes

list varList = varList
 weightedAverage = weightedAverage
 sumw = numpy.zeros(len(self.varList))
 sumwx = numpy.zeros(len(self.varList))
 sumwxx = numpy.zeros(len(self.varList))
 sumwwee = numpy.zeros(len(self.varList))
 sum = numpy.zeros(len(self.varList))
 sumx = numpy.zeros(len(self.varList))
 sumxx = numpy.zeros(len(self.varList))
int nWarnings = 0
dict lumiData = None
 rms = numpy.sqrt(self.sumxx/self.sum - self.sumx*self.sumx/self.sum/self.sum)
 ave = self.sumwx/self.sumw
int err = 1./numpy.sqrt(self.sumw)

Detailed Description

A utility class for averaging beam spot data.

Definition at line 590 of file BeamSpotData.py.

Constructor & Destructor Documentation

◆ __init__()

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()

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
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55

◆ average()

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()

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()

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 = self.sumwx/self.sumw

Definition at line 671 of file BeamSpotData.py.

◆ err

int python.BeamSpotData.BeamSpotAverage.err = 1./numpy.sqrt(self.sumw)

Definition at line 672 of file BeamSpotData.py.

◆ lumiData

dict python.BeamSpotData.BeamSpotAverage.lumiData = None

Definition at line 608 of file BeamSpotData.py.

◆ nWarnings

int python.BeamSpotData.BeamSpotAverage.nWarnings = 0

Definition at line 607 of file BeamSpotData.py.

◆ rms

python.BeamSpotData.BeamSpotAverage.rms = numpy.sqrt(self.sumxx/self.sum - self.sumx*self.sumx/self.sum/self.sum)

Definition at line 668 of file BeamSpotData.py.

◆ sum

python.BeamSpotData.BeamSpotAverage.sum = numpy.zeros(len(self.varList))

Definition at line 604 of file BeamSpotData.py.

◆ sumw

python.BeamSpotData.BeamSpotAverage.sumw = numpy.zeros(len(self.varList))

Definition at line 599 of file BeamSpotData.py.

◆ sumwwee

python.BeamSpotData.BeamSpotAverage.sumwwee = numpy.zeros(len(self.varList))

Definition at line 602 of file BeamSpotData.py.

◆ sumwx

python.BeamSpotData.BeamSpotAverage.sumwx = numpy.zeros(len(self.varList))

Definition at line 600 of file BeamSpotData.py.

◆ sumwxx

python.BeamSpotData.BeamSpotAverage.sumwxx = numpy.zeros(len(self.varList))

Definition at line 601 of file BeamSpotData.py.

◆ sumx

python.BeamSpotData.BeamSpotAverage.sumx = numpy.zeros(len(self.varList))

Definition at line 605 of file BeamSpotData.py.

◆ sumxx

python.BeamSpotData.BeamSpotAverage.sumxx = numpy.zeros(len(self.varList))

Definition at line 606 of file BeamSpotData.py.

◆ varList

python.BeamSpotData.BeamSpotAverage.varList = varList

Definition at line 595 of file BeamSpotData.py.

◆ weightedAverage

python.BeamSpotData.BeamSpotAverage.weightedAverage = weightedAverage

Definition at line 598 of file BeamSpotData.py.


The documentation for this class was generated from the following file: