Zll Analysis on Data: technical documentation
Some documentation on experiences of running on data, especially useful for running on
D3PDs outside of the Athena framework.
My talk in Atlas meeting 15/10/10 (with corrections)
Gla_Zll_talk_2.pdf
I'll try and document the various components of the analysis below, link to where I found information and describe how I solved problems not covered in the Twiki. You can look at my code at
https://ppes8.physics.gla.ac.uk/trac/user/browser/ncedwards/Zll/trunk (grid certificate required)
Datasets / Good Runs List
In order to use
GoodRunLists in standalone ROOT / C++ you can follow the instructions on the twiki page
https://twiki.cern.ch/twiki/bin/viewauth/Atlas/GoodRunsListsTutorial#Running_in_Root_or_python . I found it was easy to compile the standalong package and use it in the ROOT interactive environment, but to compile completely standalone code was a bit more complicated. Here is what I do:
svn co svn+ssh://svn.cern.ch/reps/atlasoff/DataQuality/GoodRunsLists/tags/GoodRunsLists-00-00-84
cd GoodRunsLists-00-00-84/cmt
make -f Makefile.Standalone
Then when you compile your main program, link to the Standalone library generated, for example your Makefile might look a bit like this:
CC=g++
CCFLAGS = -O3 -g3 -m32 -fPIC -enable-shared
ROOTINCS=`root-config --cflags`
ROOTLIBS=`root-config --libs`
GRLLIBDIR = GoodRunsLists/StandAlone
GRLDIR = GoodRunsLists/
all: Zll
Zll: Zll.cpp ConfigFile.cpp
${CC} $(CCFLAGS) -c -o Zll.o ${FLAGS} Zll.cpp ${ROOTINCS} -I${GRLDIR}/
${CC} $(CCFLAGS) ${ROOTLIBS} -lMathCore -lTreePlayer -L${GRLLIBDIR} -lGoodRunsLists Zll.o -o Zll
Then before running your executable add the location to the
GoodRunsList.so file to your LD_LIBRARY_PATH environment variable, e.g.:
export GRL_LIB_DIR=${PWD}/GoodRunsLists/StandAlone
export LD_LIBRARY_PATH=${GRL_LIB_DIR}:${LD_LIBRARY_PATH}
There may well be a better way of doing this, I'm not an expert at this sort of thing!
Important caveats!
- If you have Athena set up when you build the GoodRunsLists library you must have it set up when you compile and link your package. Alternatively you can compile the GoodRunsLists library without Athena set up, in which case you must compile and link your package without Athena set up.
- If you want to write Good Run Lists (either to file or to a string) (this is very useful for book keeping) then you need to uncomment the following line in GoodRunsLists/cmt/Makefile.Standalone :
## uncomment following line to turn on libxml2
#XMLCONFIG=on
It's about line 32. This isn't very well documented, and took me about a day to figure out!!
Good Run List Related links
Luminosity Calculation
The
LumiCalcTool takes care of all of this for you! You supply a Good Run List of events ran over and trigger used →
LumiCalc tool calculates the integrated luminosity. You need to be careful that you have run over every single lumi block in the GRL you supply to the
LumiCalcTool, otherwise the result will be wrong. You can use the
GoodRunsList package to write out a list of
LumiBlock run over, then use this to calculate the integrated Luminosity. You need to be careful if using L1 triggers that not prescaled at HLT (see Trigger section on ways you could check this).
There are 2 main ways to use the
LumiCalcTool. You can use the web interface, which is quick and easy - it's at
https://atlas-datasummary.cern.ch/lumicalc/ . Alternatively there is an Athena package if you want to integrate this into your analysis (not sure if you can use this standalone or not). See the Twiki:
https://twiki.cern.ch/twiki/bin/view/Atlas/CoolLumiCalcTutorial#Exercise_1_Using_i_LumiCalc_exe .
TODO - look into how
LumiCalcTool works and how uncertainties are estimated...
Trigger
There are various web tools available for investigating the trigger configuration.
http://atlas-service-db-runlist.web.cern.ch/atlas-service-db-runlist/cgi-bin/runDetails.py?run=160387 gives information on specific runs (change the run number in the URL). You can access the trigger menu by clicking the trigger tab. This page lists the triggers, their prescales and the number of accepted events at L1. A prescale of -1 indicates the trigger is masked / disabled, ie it won't fire at all.
However this page can be misleading. It shows the prescale for the first Luminosity block of the run. The trigger menu can, and often does, eveolve over the course of the run, and often triggers are unmasked after the first few
LumiBlocks (you can see this on the link above - some of the L1 triggers are masked but have L1 accept non-zero).
Instead, try the
http://atlas-trigconf.cern.ch . If you enter a run number and click "Show Run", then click on the "prescales" link in the appropriate row of the table, you can see the prescale for each
LumiBlock of the run.
Object Definitions
MET cleaning
This basically involves removing events containing 'fake' jets from calorimeter noise or cosmics, as these introduce errors into the MET calculation. Some groups do this before th
D3PD creation stage, so you may not need to do it in your analysis.
Z data analysis related links
Z related Data Notes
* Measurement of the Zll production cross section in proton-proton collisions at s = 7
TeV with the ATLAS detector
https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/CONFNOTES/ATLAS-CONF-2010-076/ATLAS-CONF-2010-076.pdf * Measurement of the Wlv production cross-section and observation of Zll production in proton-proton collisions at s = 7
TeV with the ATLAS detector
https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/CONFNOTES/ATLAS-CONF-2010-051/ATLAS-CONF-2010-051.pdf * Measurement of the W and Z/gamma* production cross sections in proton-proton collisions at sqrt{s}=7
TeV with the ATLAS detector
http://cdsweb.cern.ch/record/1294745
--
NickEdwards - 2010-10-15