A package to handle CMS Ecal InterCalibration constants and Ecal geometry
Project description
ecalic package
This package handles CMS Ecal Intercalibration Constant (IC) and IC-like operation and visualisation. This applies to several type of Ecal conditions which have a value per crystal, for example:
- EcalIntercalibConstantsRcd
- EcalLaserAPDPNRatiosRcd
- EcalChannelStatusRcd
- EcalPedestalsRcd (pedestal or rms)
The package contains two modules:
ecalic.iov
decodes ecal conditions (xml format)ecalic.ic
the main module
To install the package one needs (automatically installed)
pip install --user ecalic
All the examples below were tested in ipython
, to try them:
- install ipython
pip install --user ipython
- start by typing
ipython
- copy-paste the block of commands
Documentation (in ipython):
import ecalic as ecal
help(ecal)
ecalic.iov
Use this module to decode an xml file downloaded from the database.
The example (the commands can be run in ipython
) below will transform a pedestal xml file
in a txt file format (ix iy iz ic
) where ic
is the pedestal RMS in gain 6
import ecalic as ecal
### for python2 python3 compatibility
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
### input files
www = 'https://ecaldpg.web.cern.ch/ecaldpg/users/fcouderc/examples/ecalic/'
pedestal_file = urlopen(www + '/pedestals_hlt_run324773.xml' )
i = ecal.xml( pedestal_file, type = 'noise6' )
### dump to a txt
i.dump_txt('noise_gain6.txt')
### or directly as icCMS
ic = ecal.xml( pedestal_file, type = 'noise6' ).icCMS('noise Gx6')
The available types type
can be found in the help
? ecal.xml
ecalic.ic
This is the heart of the package. It contains:
- the class
icCMS
which represents the IC - the
geom
variable which handles all the different crystal properties (pandas DataFrame) - the function
icCovCor
to get the correlation and covariance between different IC sets.
A first simple example to see and plot crystal properties
import matplotlib.pyplot as plt
import ecalic as ecal
### activate pyplot visualisation
plt.ion()
plt.show()
### dump the properties of 2 first crytals
ecal.geom.head(2)
### define an empty icCMS instance
i = ecal.icCMS()
### plot the FED in 2D
i.plot(var= 'FED', title = 'FED number')
### plot the crytal type (BTCP or SIC)
i.plot(var='fabric', title = 'producer')
### EB plot only
i.plot(var='fabric', title = 'producer',ecalpart = 'eb')
Note that the cmsStyle
package is provided for plot polishing and is not mandatory.
The different methods from the icCMS
class can be found:
help(ecal.icCMS)
use-case example
In this example we do some simple ecalic.ic
operations.
First, download an example file:
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
### getting the example txt file from the web
www = 'https://ecaldpg.web.cern.ch/ecaldpg/users/fcouderc/examples/ecalic/'
inputtxt = urlopen(www + '/ic_example.txt')
with open( 'ic.test.txt','wb') as ftest: ftest.write(inputtxt.read())
inputtxt.close()
And try the commands:
import ecalic as ecal
###create an instance of ecalic.ic
i = ecal.icCMS( 'ic.test.txt' , 'example IC' )
### help for each method
?i.etaRingNorm
### normalize to 1 per eta ring
i.etaRingNorm()
### plot 2D
i.plot( zRange_eb = [0.98,1.02], zRange_ee = [0.95,1.05], title = 'IC test' )
### average per harness and plot,
### remove 10% of the most tailish cristals (left and right from mean)
# add a variable with the average
# trim = remove 10% of the most tailish cristals (left and right from mean)
i['ic_av'] = i.average( groupby='harness', trim = 0.10 )
# plot the average
i.plot( var = 'ic_av', zRange_eb = [0.98,1.02], zRange_ee = [0.95,1.05], title = 'IC test average' )
ecal.plt.show()
A more involved example
In the following example we will:
- get the noise (in gain 12) from two different runs (xml included in the package)
- get the corresponding channel status
- mask the bad channel in the noise ics
- plot the noise in 2D
- profile these noise along
ieta
- get the correlation between the 2 ics
Get the example script at testNoise.py
And run the script
python testNoise.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ecalic-1.0.4.tar.gz
.
File metadata
- Download URL: ecalic-1.0.4.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.11.3 pkginfo/1.8.3 requests/2.28.1 requests-toolbelt/0.9.1 tqdm/4.64.1 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10d8a56091f590cbb5b71545ab11b79bf4f414ed42cd7ea4ed2b7d1b8dde3a04 |
|
MD5 | 802b6bc49f5c5d6deaee7cfd6a7fa012 |
|
BLAKE2b-256 | 9389df76fa97b2e5d9511598cb0461c004f00d81c1da4f1faeec9431bc2d89fc |