Skip to content
Snippets Groups Projects
Commit bb651e60 authored by Marco Cattaneo's avatar Marco Cattaneo
Browse files

Remove Tutorial/Analysis package

parent a6fc730f
No related branches found
No related tags found
1 merge request!647Remove Tutorial/Analysis package
Pipeline #1750059 passed
Showing
with 0 additions and 3731 deletions
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
################################################################################
# Package: Analysis
################################################################################
gaudi_subdir(Analysis)
gaudi_depends_on_subdirs(Phys/DaVinciKernel
Phys/DaVinciMCKernel)
find_package(Boost)
find_package(ROOT)
include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS})
gaudi_add_module(AnalysisTutorial
src/*.cpp
LINK_LIBRARIES DaVinciKernelLib DaVinciMCKernelLib)
gaudi_install_python_modules()
!$Id: release.notes,v 1.100 2010-08-16 13:42:16 pkoppenb Exp $
!-----------------------------------------------------------------------------
! Package : Tutorial/Analysis
! Responsible : P. Koppenburg
! Purpose : Analysis tutorial
!-----------------------------------------------------------------------------
!
! See https://twiki.cern.ch/twiki/bin/view/LHCb/DaVinciTutorial
!
!-----------------------------------------------------------------------------
!========================= Analysis v10r6 2013-09-30 =========================
! 2013-09-30 - Patrick Koppenburg
- Adapt to DaVinci v33r7
. Use new LoKi Decay Descriptors
. Use DaVinciTupleAlgorithm
. Use addTupleTool
. Add Sim08a Bs->J/psiPhi
. Other minor stuff
- Tag as v10r6
!========================= Analysis v10r5 2013-06-13 =========================
! 2013-05-23 - Ben Couturier
- Remove use of DVAlgorithm from solution of DaVinci1
!========================= Analysis v10r4p2 2013-02-20 =========================
! 2013-02-08 Patrick Koppenburg
- Correct comment about what data to use
! 2012-12-09 - Chris Jones
- Remove use of obsolete DVAlgorithm
!========================= Analysis v10r4p1 2012-11-30 =========================
! 2012-11-29 - Marco Clemencic
- Added CMake configuration file.
!========================= Analysis v10r4 2012-10-16 =========================
! 2012-10-16 - Patrick Koppenburg
- Review for October 2012 tutorials.
- Added Stripping20 2012 data
- solutions/DaVinci?/*.py : use 2012 data
- solutions/DaVinci[1-3]/TutorialAlgorithm.cpp
. Bug fix: IPchi2 is no IP error
- solutions/DaVinci6/DVTutorial_6.py
. By default do not fill MC
- solutions/DaVinci8/DVReadStrippedDst.py
. Use BetaSJpsi2MuMuDetachedLine
!========================= Analysis v10r3 2012-03-29 =========================
! 2012-03-09 - Patrick Koppenburg
- Reduce warning printout level
! 2012-03-06 - Chris Jones
- Call the library AnalysisTutorial instead of just Analysis
!========================= Analysis v10r2p1 2011-12-15 =========================
! 2011-12-02 - Patrick Koppenburg
- Remove ancient Gaudipython .opts file
!========================== Analysis v10r2 2011-07-08 ================
! 2011-07-08 - Patrick Koppenburg
- Remove obsolete Hlt settings
- Test and update all solutions (work with stripping 13 dimuon DSTs)
!========================== Analysis v10r1 2011-03-25 ================
! 2011-03-25 - Patrick Koppenburg
- One more change
! 2011-03-23 - Patrick Koppenburg
- Adapt for Tutorial of March 25
!========================== Analysis v10r0 2011-02-21 ================
! 2011-02-21 - Juan Palacios
- solutions
. Provide complete paths for InputLocations, and use Inputs instead of
InputLocations
- Increase to v10r0.
!========================== Analysis v9r1 2011-01-24 =================
! 2011-01-24 - Rob Lambert
- Modified DecayTreeTuple tutorials to use the new wrappers
!========================== Analysis v9r0 2011-01-19 =================
! 2011-01-14 - Juan Palacios
- Remove all calls to DVAlgorithm::desktop()
- REQUIRES Phys/DaVinciKernel v9r0 OR HIGHER!!!
- Increase to v9r0.
! 2011-01-05 - Juan Palacios
- solutions/DaVinci1, solutions/DaVinci2
. Replace calls of obsolete desktop()->particles() by this->particles().
! 2011-01-04 - Jeremy Dickens
- Updated solutions to DVtutorial1 for v26r3p2
!========================== Analysis v8r8 2010-12-02 =================
! 2010-12-02 - Patrick Koppenburg
- Change line to NeuroBayes to be wused with Stripping12
! 2010-11-30 - Patrick Koppenburg
- Patch to tutorial 8
!========================== Analysis v8r7 2010-10-01 =================
! 2010-10-01 - Patrick Koppenburg
- Update tutorial 8
!========================== Analysis v8r6p1 2010-08-16 =================
! 2010-08-05 - Juan Palacios
- solutions/DaVinci3/TutorialAlgorithm.cpp
. Continue processing events when daughters are not found.
. Correct order of arguments to vertex fitter.
- cmt/requirements
. Increase to v8r6p1.
! 2010-07-05 - Jibo He
- solutions/DaVinci2/TutorialAlgorithm.cpp
Two bugs fixed:
1) it should continue processing the next event instead of exiting
when there is no muon in this event
2) wrong arguments given to vertex fitter
!========================== Analysis v8r6 2010-06-24 =================
! 2010-06-08 - Patrick Koppenburg
- New solution DaVinci8/DVReadStrippedDst.py
- v8r6
!========================== Analysis v8r5 2010-05-27 =================
! 2010-05-27 - Juan Palacios
- solutions/DaVinci2/TutorialAlgorithm
- solutions/DaVinci2/TutorialAlgorithm
. Use DaVinci::filter instead of IParticleFilter.
- cmt/requirements
. Increase to v8r5.
!========================== Analysis v8r4 2010-04-30 =================
! 2010-04-26 - Patrick Koppenburg
- Updated solutions 5 and 6 to synchrnize with 4.
- v8r4
!========================== Analysis v8r3p2 2010-01-28 ===============
! 2010-01-28 - Patrick Koppenburg
- Removed obsolete html pages
- v8r3p2
! 2010-01-05 - Patrick Koppenburg
- Remove 2008 MC Bs->J/spiPhi data, add MC09 version.
- v8r3p2
!========================== Analysis v8r3p1 2009-10-28 ===============
! 2009-10-28 - Juan PALACIOS
- python/DaVinci4/Bs2JpsiPhi.py
. Add name to SelectionSequence.
! 2009-10-15 - Patrick Koppenburg
- Replace HltType by Hlt and HltThresholdSettings
!========================== Analysis v8r3 2009-10-02 =================
! 2009-10-02 - Juan PALACIOS
- Add python/DaVinci4:
. Bs2JpsiPhi.py: dummy file, to be filled by students.
. solutions/Bs2JpsiPhi.py: file with "correct" answer.
- cmt/requirements
. Increase vo v8r3 and add python modules.
! 2009-10-02 - Marco Cattaneo
- Add src/DummyAnalysisAlg.{h,cpp} to allow building of a library from an
empty src directory.
! 2009-10-01 - Marco Cattaneo
- Remove obsolete file Analysis_dll.cpp
!========================== Analysis v8r2p1 2009-07-02 ===============
! 2009-07-01 - Patrick Koppenburg
- Fix solutions 5.
!========================== Analysis v8r2 2009-06-12 =================
! 2009-06-12 - Patrick Koppenburg
- Modifications to requirements
- Increment to v8r2
! 2009-06-11 - Rob Lambert
- Added DaVinci7 advanced TupleTool tutorial
! 2009-06-11 - Rob Lambert
- Modified to remove PhysDesktop from solutions
!========================== Analysis v8r1p1 2009-03-12 =================
! 2009-03-12 - Patrick Koppenburg
- Fix addTool
!========================== Analysis v8r1 2009-03-01 =================
! 2009-02-24 - Patrick Koppenburg
- PhysDesktop() -> PhysDesktop
! 2009-02-05 - Patrick Koppenburg
- PrintTree removed
- v8r1
!========================== Analysis v8r0 2009-01-14 =================
! 2009-01-06 - Patrick Koppenburg
- solutions/DaVinci1/TutorialAlgorithm.cpp : add counters
- solutions/DaVinci4/TutorialSeq.py : Use proper unit
- solutions/DaVinci6/DVTutorial_6.py : Add event tuple
! 2008-12-22 - Patrick Koppenburg
- Big cleanup for DaVinci v22r0
- Increment to v8r0
! 2008-12-06 - Vanya BELYAEV
- solutions/DaVinci3/TutorialAlgorithm.cpp
fix for new particle properties
- cmt/requirements
verison increment to v7r8
!========================== Analysis v7r7 2008-11-26 =================
! 2008-11-26 - Patrick Koppenburg
- Adapt cpp to new PhysDesktop interface
- Adapt options to HltConf()
- Do not use data internally in options.
- Needs DaVinci v21r0
!========================== Analysis v7r6p1 2008-11-26 =================
! 2008-09-23 - Juan PALACIOS
- solutions/DaVinci3/TutorialAlgorithm.cpp
- solutions/DaVinci6/TutorialChecker.cpp
. Adapt to new IPhysDesktop::primaryVertices() method
- cmt/requirements
. Increase version to v7r6p1
!========================== Analysis v7r6 2008-10-06 ===================
! 2008-09-23 - Patrick Koppenburg
- Changes in FilterDesktop
! 2008-09-10 - Patrick Koppenburg
- Change trigger includes
!========================== Analysis v7r5 2008-08-12 ===================
! 2008-08-12 - Patrick Koppenburg
- Fix a few typos. Tag as v7r5 to match instructions from wiki page.
! 2008-08-07 - Patrick Koppenburg
- Use IDistanceCalculator everywhere
- Compile all solutions
- Increment to v7r5
!========================== Analysis v7r4 2008-08-05 ===================
! 2008-07-10 - Patrick Koppenburg
- Use IDistanceCalculator
!==================== Tutorial/Analysis v7r3 2008-07-03 =====================
! 2008-06-25 - Patrick Koppenburg
- Use IANNSvc
! 2008-06-18 - Patrick Koppenburg
- Depend on HltInterfaces
! 2008-06-13 - Patrick Koppenburg
- Tutorial 4 : added a filter as testing
!==================== Tutorial/Analysis v7r2p1 2008-06-13 =====================
! 2008-06-13 - Patrick Koppenburg
- Minor typo in solutions fixed (python inconsistency, ignored by parser)
- Use HltSummaryTool in TutorialChecker
- Increment to v7r2p1
!===================== Tutorial/Analysis v7r2 2008-06-04 ======================
! 2008-06-03 - Patrick Koppenburg
- Added python solutions for all problems
- DaVinci6 : Use HLT summary tool
! 2008-06-03 - Patrick Koppenburg
- Created solutions/DaVinci3/DVTutorial_3.py
- Replaced all counter variables by counter("...")
- Checked StatusCodes up to Tutorial 3.
! 2008-06-02 - Patrick Koppenburg
- Created solutions/DaVinci1/DVTutorial_1.py
- Created solutions/DaVinci2/DVTutorial_2.py
- Increment to v7r2
!===================== Tutorial/Analysis v7r1 2008-04-24 ======================
! 2008-04-24 - Patrick Koppenburg
- Corrected way of using Linkers
! 2008-04-24 - Patrick Koppenburg
- Use new style CombineParticles. Requires DaVinci v19r12.
! 2008-04-21 - Patrick Koppenburg
- Changed desktop()->save() to desktop()->keep(). Requires DaVinci v19r12.
! 2008-04-08 - Patrick Koppenburg
- Added solutions/LoKiHybrid with some demo files
! 2008-03-32 - Ulrich Kerzel
- change options file to use new microDST code, adopt InitGaudi accordingly
! 2008-03-32 - Ulrich Kerzel
- added files for GaudiPython / MicroDST tutorial
- InitGaudi.py : initialise Gaudi
- Analysis.py : run a J/Psi -> MuMu vertex fit in GaudiPython
- AnalysisMicroDST.py : run over a microDST and analyse the particles
- JPsiMuMuMicroDST.opts : small options file to create a J/Psi->MuMu microDST,
to be used with AnalysisMicroDST.py
! 2008-03-26 - Patrick Koppenburg
- Some typos fixed thanks to Roel Aaij
! 2008-03-17 - Patrick Koppenburg
- Use ALL instaed of TRUE
!===================== Tutorial/Analysis v7r0 2008-03-06 ======================
! 2008-03-07 - Patrick KOPPENBURG
- Changed LFN data files. Bug found by Ulrik.
! 2008-03-04 - Patrick Koppenburg
- Adapted to LoKiHybrid for March 2008 tutorial
- Increment to v7r0
! 2008-02-12 - Juan PALACIOS
- cmt/requirements
. Increase version to v6r5p1
- solutions/DaVinci6/TutorialChecker.cpp
. Adapt to future removal of Particle2MCLinker constructor taking simple
string as location of objects to associate. Pass a size 1
std::vector<std::string> instead.
!===================== Tutorial/Analysis v6r5 2007-10-25 ======================
! 2007-10-25 - Juan PALACIOS
- cmt/requirements
. Really increment to v6r5!
! 2007-10-10 - Patrick Koppenburg
- solutions/DaVinci6 : use new PrintMCDecayTreeTool tool
- increment to v6r5
!===================== Tutorial/Analysis v6r4 2007-10-01 ======================
! 2007-06-16 - Patrick Koppenburg
- Remove .ignore() from setFilterPassed()
! 2007-06-14 - Patrick Koppenburg
- remove _load files everywhere
- compile a Test version of the library from the solutions directories,
just to make sure everything compiles in the release.
- remove obsolete tagging options
- minor bug fixes in solution6
!===================== Tutorial/Analysis v6r3 2007-05-25 ======================
! 2007-05-25 - Patrick Koppenburg
- solutions6:
- Corrected location of DaVinciAssociator
- Write nTuple for each candidate
- Always fill columns, even if nothing is found (MC)
- Fill momentum in one go (Gaudi bug fixed)
- This version requres DaVinci v19rX
!===================== Tutorial/Analysis v6r2p1 2007-01-12 ======================
! 2007-01-12 - P. Koppenburg
- added Trigger. NEEDS DaVinci v17r8 at least.
!===================== Tutorial/Analysis v6r2 2007-01-05 ======================
! 2007-01-05 - P. Koppenburg
Tagged as v6r2
- solutions/DaVinci6/TutorialChecker.cpp
. Added a loop on associated (MC)Particles
- solutions/DaVinci5/DVTutorial_5.opts
- solutions/DaVinci6/DVTutorial_6.opts
. Added a selection according to truth
! 2006-12-21 - P. Koppenburg
- Added exercise 4 and solutions 5 & 6.
. exercises/DaVinci2.html
. exercises/DaVinci3.html
. options/BTaggingTool.opts
. solutions/DaVinci6/Analysis_load.cpp
. solutions/DaVinci6/DVTutorial_6.opts
. solutions/DaVinci6/TutorialChecker.cpp
. solutions/DaVinci6/TutorialChecker.h
- updated:
. cmt/requirements
. exercises/DaVinci1.html
. exercises/DaVinci4.html
. solutions/DaVinci5/DVTutorial_5.opts
- removed:
. exercises/DaVinci2and3.html
. exercises/DaVinci5.txt
. exercises/DaVinci6.txt
. exercises/DaVinci7.txt
. solutions/DaVinci5/DVTutorialDC04.opts
! 2006-12-19 - P. Koppenburg for Raluca Muresan
- Use different cuts for J/psi and Phi
! 2006-12-15 - P. Koppenburg
- Corrected DaVinci1.html following Raluca's suggestions
- Use now v17r6
! 2006-12-07 - P. Koppenburg
- Prepare for Edinburgh tutorial. Exercises 1-4 are done.
- Removed text files for exercises. Use html instead.
- will be tagged as v6r2 later on
!===================== Tutorial/Analysis v6r1 2006-11-18 ======================#
! 2006-11-20 - P. Koppenburg
- solutions/DaVinci2/TutorialAlgorithm.*
- solutions/DaVinci3/TutorialAlgorithm.*
. Bug fix: The constructor Particle(int pid) does not exist anymore,
one has to use Particle(PatricleID pid) instead. The former syntax
was actually calling Particle(int key).
Retagged as v6r1
! 2006-11-18 - Vanya BELYAEV
- update for DaVinci v17r5
Major changes:
- use the regular standard particles
- remove "Bologna-hacks" with MC -particles
- LHCb::PrimVertex -> LHCb::RecVertex
- add new DC06 input data
- define locla input data in the
case of CMTSITE=UNI_DORTMUND
- cmt/requirements
version incrmement to v6r1
!===================== Tutorial/Analysis v6r0 2006-06-06 ======================#
! 06-06-06 - P. Koppenburg
- add J/psi Phi file tahnks to Gloria
! 2006-05-25 - P. Koppenburg
- Revise structure
exercises/ Contains exercises
solutions/XXX/ contains solutions
solutionX/ will become obsolete as well as doc/exercise
!! WAIT until all is done before removing these directories
! 2006-05-24 - P. Koppenburg
- Do not use DaVinci. DaVinciKernel should be enough for the moment.
! 2006-05-23 - Marco Cattaneo
- Bring requirements up to date with latest patterns and increment major
version in preparation for migration to DaVinci v16r*
!===================== Tutorial/Analysis v5r0 2006-01-12 ======================#
! 2006-01-12 P. Koppenburg
. corrected solution to exercises 2-6
Added J/psi name for Jpsi2MuMu. Not necessary as it is the default...
but inconsistent with solution2.
. set v5r0 in requirements
! 2006-01-10 P. Koppenburg
corrected solution to exercise 3.
! 2006-01-05 P. Koppenburg
- src/Analysis_load.cpp
. Comment all algorithms
! 2005-11-14 - P. Koppenburg
- solution6/*.*
. Added background category tool
. Added example root commands
! 2005-11-12 - P. Koppenburg and C. Lazzeroni
- solution{5,6}/*.*
. Revisited for v12r15.
!===================== Tutorial/Analysis v4 2005-11-15 ======================
! 2005-11-07 - P. Koppenburg
- cmt/requirements
. Revisited for v12r14.
! 2005-10-21 - P. Koppenburg
- cmt/requirements
. Use DaVinci v12r14
- solution2/TutorialAlgorithm.cpp
. Typo in name of J/psi
! 2004-11-08 - P. Koppenburg
- cmt/requirements
. Use DaVinci. That's much simpler. Thanks to Andrew for noticing.
! 2004-11-08 - P. Koppenburg
New implementation
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>LHCb-UK Software Training</title>
<link rel="stylesheet" media="screen" type="text/css"
href="http://www.hep.phy.cam.ac.uk/lhcb/LHCbSoftTraining/documents/lhcb-cambridge-blue.css">
<link rel="stylesheet" media="print" type="text/css"
href="http://www.hep.phy.cam.ac.uk/lhcb/LHCbSoftTraining/documents/lhcb-cambridge-print.css"></head><body>
<body>
<table id="titlebar">
<tbody>
<tr style="vertical-align: bottom;">
<td style="padding-bottom: 15px;">
<h1>LHCb Software Training: GaudiPython</h1></td>
<td id="lhcblogo" style="text-align: right;">
<a href="http://cern.ch/lhcb">
<img src="http://lhcb.web.cern.ch/lhcb/lhcblogo.gif"></a></td>
</tr>
</tbody>
</table>
<div id="content">
<h1><span lang="en-gb">Exercises linked to GaudiPython session</span></h1>
<p>
The purpose of these exercises is to allow you to become more familiar
with the Python interface to Gaudi and ROOT.
<h2>1. Python and Root </h2>
<p> The first exercise is concerned with the Python interface to ROOT.
Write a small Python function (e.g. <code>second.py</code>) which
draws a function, e.g. <code> sin(x)</code>. </p>
<p> The function should: </p>
<ul>
<li>Setup the environment via <code> SetupProject DaVinci v17r6</code>
(if you didn't do this already). Check that you have the right versions of
ROOT (<code>5.13.04c</code> from the LCG area) and Python (<code>2.4.2</code>
from the LCG area)</li>
<li>Import the ROOT package </li>
<li>Open a ROOT <code>TCanvas</code> </li>
<li>Take the limits between which the functions is drawn
as arguments</li>
<li>Define a new function using <code>TF1</code> from ROOT </li>
<li>Draw the function</li>
</ul>
<h2>2. Understand InitGaudi.py and GaudiPyTutorial.py</h2>
<ul>
<li>Copy the files InitGaudi.py and GaudiPyTutorial.py from <code>
solutions/GaudiPython</code> to your local
working directory</li>
<li>Setup the environment via <code> SetupProject DaVinci v17r6</code>
(if you didn't do this already). Check that you have the right versions of
ROOT (<code>5.13.04c</code> from the LCG area ) and Python (<code>2.4.2</code>
from the LCG area)</li>
<li>We will use a DST files from the Bs -> J/psi Phi dataset. You can either
make a copy of the file to some scratch area (e.g. <code> /tmp</code>
via e.g. <code>rfcp /castor/cern.ch/grid/lhcb/production/DC06/v1-lumi2/00001438/DST/0000/00001438_00000001_5.dst /tmp</code>
or use files from CASTOR</li>
<li>Go through the file and understand what happens. Execute the event-loop
for some events and look at the histograms. You can do this following
the steps
<ul>
<li> start a Python shell via <code>python</code> </li>
<li> <code> import GaudiPyTutorial </code> </li>
<li> <code> GaudiPyTutorial.eventLoop(N) </code> for N events</li>
</ul>
</li>
</ul>
<h2>Extend the event loop with own histograms and cuts</h2>
<ul>
<li>Extend the event-loop with own cuts and histograms. Reload the changed
Python script with <code>reload(GaudiPyTutorial)</code> and jump back
to the beginning of the data-file with <code>GaudiPyTuTorial.sel.rewind()</code>.
For example, you could apply a cut on the combined Particle ID for the muons and
compare how the invariant mass distribution changes, apply a cut on the
maximal chi**2 of the di-muon vertex fit, ...
</li>
</ul>
<hr>
<p><span lang="en-gb">Last modified by U. Kerzel, 2007-Jan-04
</div>
</body></html>
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
#-- GAUDI jobOptions generated on Mon Sep 30 12:11:46 2013
#-- Contains event types :
#-- 13144001 - 143 files - 2572489 events - 531.36 GBytes
#-- Extra information about the data processing phases:
from Gaudi.Configuration import *
from GaudiConf import IOHelper
IOHelper('ROOT').inputFiles(['LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000001_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000002_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000003_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000004_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000005_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000006_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000007_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000008_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000009_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000010_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000011_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000012_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000013_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000014_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000015_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000016_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000017_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000018_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000019_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000020_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000021_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000022_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000023_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000024_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000025_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000026_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000027_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000028_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000029_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000030_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000031_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000032_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000033_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000034_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000035_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000036_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000037_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000038_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000039_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000040_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000041_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000042_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000043_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000044_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000045_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000046_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000047_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000048_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000049_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000050_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000051_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000052_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000053_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000054_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000055_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000056_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000057_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000058_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000059_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000060_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000061_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000062_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000063_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000064_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000065_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000066_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000067_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000068_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000069_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000070_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000071_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000072_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000073_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000074_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000075_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000076_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000077_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000078_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000079_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000080_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000081_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000082_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000083_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000084_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000085_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000086_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000087_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000088_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000089_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000090_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000091_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000092_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000093_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000094_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000095_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000096_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000097_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000098_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000099_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000100_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000101_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000102_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000103_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000104_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000105_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000106_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000107_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000108_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000109_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000110_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000111_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000112_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000113_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000114_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000115_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000116_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000117_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000118_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000119_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000120_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000121_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000122_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000123_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000124_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000125_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000126_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000127_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000128_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000129_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000131_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000132_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000133_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000134_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000135_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000136_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000137_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000138_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000139_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000140_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000141_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000142_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000143_1.allstreams.dst',
'LFN:/lhcb/MC/2012/ALLSTREAMS.DST/00025235/0000/00025235_00000144_1.allstreams.dst'
], clear=True)
FileCatalog().Catalogs += [ 'xmlcatalog_file:$ANALYSISROOT/options/Bs2JpsiPhi_Sim08a.xml' ]
This diff is collapsed.
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
#-- GAUDI jobOptions generated on Tue Oct 16 09:20:38 2012
#-- Contains event types :
#-- 90000000 - 72 files - 2559519 events - 276.08 GBytes
#-- Extra information about the data processing phases:
#-- Processing Pass Step-54132
#-- StepId : 54132
#-- StepName : Stripping20-Merging-DV-v32r2p1
#-- ApplicationName : DaVinci
#-- ApplicationVersion : v32r2p1
#-- OptionFiles : $APPCONFIGOPTS/Merging/DV-Stripping-Merging.py
#-- DDDB : dddb-20120831
#-- CONDDB : cond-20120831
#-- ExtraPackages : AppConfig.v3r150
#-- Visible : N
from Gaudi.Configuration import *
from GaudiConf import IOHelper
IOHelper('ROOT').inputFiles(['LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000007_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000020_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000033_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000046_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000059_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000069_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000076_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000090_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000097_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000105_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000118_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000120_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000122_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000124_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000126_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000132_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000138_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000143_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000144_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000148_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000151_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000153_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000163_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000165_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000170_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000174_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000178_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000183_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000189_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000193_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000195_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000199_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000203_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000209_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000213_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000223_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000235_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000240_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000245_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000247_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000249_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000251_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000253_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000254_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000257_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000265_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000269_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000272_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000274_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000275_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000277_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000280_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000291_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000293_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000295_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000300_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000305_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000308_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000309_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000312_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000320_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000341_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000347_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000355_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000375_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000377_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000380_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000381_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000383_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000387_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000389_1.dimuon.dst',
'LFN:/lhcb/LHCb/Collision12/DIMUON.DST/00020241/0000/00020241_00000391_1.dimuon.dst'
], clear=True)
FileCatalog().Catalogs += [ 'xmlcatalog_file:$ANALYSISROOT/options/DimuonR14S20.xml' ]
This diff is collapsed.
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
########################################################################
# $Id: Bs2JpsiPhi.py,v 1.1 2009-10-02 14:09:26 jpalac Exp $
########################################################################
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
# empty
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
########################################################################
# $Id: Bs2JpsiPhi.py,v 1.4 2010-05-27 15:19:18 jpalac Exp $
########################################################################
"""
Selection module for exercise 4
@author Juan Palacios
@date 2009-10-02
"""
__author__ = ['Juan Palacios']
__date__ = '02/10/2009'
__version__ = '$Revision: 1.4 $'
# limit what we get with from Bs2JpsiPhi import *
__all__ = ('name',
'Phi2KK',
'LooseJpsi2MuMu',
'Jpsi2MuMu',
'Bs2Jpsi',
'SeqBs2JpsiPhi')
import GaudiKernel.SystemOfUnits as Units
from Gaudi.Configuration import *
from GaudiConfUtils import ConfigurableGenerators
from Configurables import FilterDesktop, CombineParticles
from PhysSelPython.Wrappers import Selection, SelectionSequence
from StandardParticles import StdLooseMuons, StdLooseKaons
# J/Psi configurable
_jpsi2mumu = ConfigurableGenerators.CombineParticles()
_jpsi2mumu.DecayDescriptor = "J/psi(1S) -> mu+ mu-"
_jpsi2mumu.CombinationCut = "ADAMASS('J/psi(1S)')<30*MeV"
_jpsi2mumu.MotherCut = "(VFASPF(VCHI2/VDOF)<10)"
# J/Psi -> MuMu Selection
LooseJpsi2MuMu = Selection("SelLooseJpsi2MuMu",
Algorithm = _jpsi2mumu,
RequiredSelections = [StdLooseMuons])
# Tighter J/Psi -> MuMu filter
_jpsifilter = ConfigurableGenerators.FilterDesktop()
_jpsifilter.Code = "(PT>1*GeV) & (P>3*GeV)"
# Tighter J/Psi -> MuMu Selection
Jpsi2MuMu = Selection("SelJpsi2MuMu",
Algorithm = _jpsifilter,
RequiredSelections = [LooseJpsi2MuMu])
# Phi configurable
_phi2kk = ConfigurableGenerators.CombineParticles()
_phi2kk.DecayDescriptor = "phi(1020) -> K+ K-"
_phi2kk.CombinationCut = "ADAMASS('phi(1020)')<50"
_phi2kk.MotherCut = "(VFASPF(VCHI2/VDOF)<100)"
# Phi -> KK Selection
Phi2KK = Selection("SelPhi2KK",
Algorithm = _phi2kk,
RequiredSelections = [StdLooseKaons])
# Bs configurable
_bs2jpsiphi = CombineParticles("Bs2JpsiPhi",
DecayDescriptor = "B_s0 -> phi(1020) J/psi(1S)",
CombinationCut = "ADAMASS('B_s0')<2*GeV",
MotherCut = "(VFASPF(VCHI2/VDOF)<10) & (BPVIPCHI2()<100)" )
# Now let's add some plots
from Configurables import LoKi__Hybrid__PlotTool as PlotTool
_bs2jpsiphi.HistoProduce = True
_bs2jpsiphi.addTool( PlotTool("DaughtersPlots") )
# Note that it's using the same functors as above. Hence the same syntax.
_bs2jpsiphi.DaughtersPlots.Histos = { "P/1000" : ('momentum',0,100) ,
"PT/1000" : ('pt_%1%',0,5,500) ,
"M" : ('mass in MeV_%1%_%2%_%3%',0.8*Units.GeV,4*Units.GeV) }
_bs2jpsiphi.addTool( PlotTool("MotherPlots") )
_bs2jpsiphi.MotherPlots.Histos = { "P/1000" : ('momentum',0,100) ,
"PT/1000" : ('pt_%1%',0,5,500) ,
"M" : ('mass in MeV_%1%_%2%_%3%',4*Units.GeV,6*Units.GeV) }
# Bs -> J/Psi Phi Selection
Bs2JpsiPhi = Selection("SelBs2JpsiPhi",
Algorithm = _bs2jpsiphi,
RequiredSelections = [ Jpsi2MuMu, Phi2KK ])
# finally, the Bs -> J/Psi Phi SelectionSequence
SeqBs2JpsiPhi = SelectionSequence("SeqBs2JpsiPhi", TopSelection = Bs2JpsiPhi)
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
# empty
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
########################################################################
# $Id: DVTutorial_1.py,v 1.8 2009-06-11 16:22:28 rlambert Exp $
#
# Options for exercise 1
#
# @author Patrick Koppenburg
# @date 2008-11-27
#
########################################################################
from Gaudi.Configuration import *
MessageSvc().Format = "% F%60W%S%7W%R%T %0W%M"
#######################################################################
#
# 1) Let's define a sequence
#
from Configurables import GaudiSequencer
tutorialseq = GaudiSequencer("TutorialSeq")
#######################################################################
#
# 2) Add the Tutorial algorithm
#
from Configurables import TutorialAlgorithm
tutalg = TutorialAlgorithm()
tutorialseq.Members += [ tutalg ]
tutalg.Inputs = [ "Phys/StdAllLooseMuons/Particles" ] # AllLooseMuons have no IP cuts
#######################################################################
#
# 3) Configure the application
#
from Configurables import DaVinci
DaVinci().HistogramFile = "DVHistos_1.root" # Histogram file
DaVinci().EvtMax = 1000 # Number of events
DaVinci().DataType = "2012" #
DaVinci().Simulation = True # When running on MC
#
# Add our own stuff
#
DaVinci().UserAlgorithms = [ tutorialseq ]
########################################################################
#
# To run in shell :
# gaudirun.py solutions/DaVinci1/DVTutorial_1.py options/Bs2JpsiPhi_Sim08a.py
#
########################################################################
/*****************************************************************************\
* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
TCanvas* c1 = new TCanvas("c1","DaVinci",600,600);
c1->SetLogy();
TFile* F = new TFile("DVHistos_1.root")
F->ls()
F->cd("TutorialAlgorithm")
F->ls()
TH1D* H1 = F->Get("TutorialAlgorithm/P")
TH1D* H2 = F->Get("TutorialAlgorithm/Pt")
TH1D* H3 = F->Get("TutorialAlgorithm/IP")
TH1D* H4 = F->Get("TutorialAlgorithm/IPS")
H1->SetLineColor(2)
H1->SetLineWidth(3)
H1->Draw()
gPad->SaveAs("DV1_P.eps");
H2->SetLineColor(2)
H2->SetLineWidth(3)
H2->Draw()
gPad->SaveAs("DV1_Pt.eps");
H3->SetLineColor(2)
H3->SetLineWidth(3)
H3->Draw()
gPad->SaveAs("DV1_IP.eps");
H4->SetLineColor(2)
H4->SetLineWidth(3)
H4->Draw()
gPad->SaveAs("DV1_IPS.eps");
/*****************************************************************************\
* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
// $Id: TutorialAlgorithm.cpp,v 1.9 2009-01-06 10:15:05 pkoppenb Exp $
// Include files
// from Gaudi
#include "GaudiKernel/AlgFactory.h"
// local
#include "TutorialAlgorithm.h"
//-----------------------------------------------------------------------------
// Implementation file for class : TutorialAlgorithm
//
// 2006-05-24 : Patrick Koppenburg
//-----------------------------------------------------------------------------
// Declaration of the Algorithm Factory
DECLARE_ALGORITHM_FACTORY( TutorialAlgorithm );
//=============================================================================
// Standard constructor, initializes variables
//=============================================================================
TutorialAlgorithm::TutorialAlgorithm( const std::string& name,
ISvcLocator* pSvcLocator)
: DaVinciTupleAlgorithm ( name , pSvcLocator )
{
}
//=============================================================================
// Destructor
//=============================================================================
TutorialAlgorithm::~TutorialAlgorithm() {}
//=============================================================================
// Initialization
//=============================================================================
StatusCode TutorialAlgorithm::initialize() {
StatusCode sc = DaVinciTupleAlgorithm::initialize();
if ( sc.isFailure() ) return sc;
if (msgLevel(MSG::DEBUG)) debug() << "==> Initialize" << endmsg;
return StatusCode::SUCCESS;
}
//=============================================================================
// Main execution
//=============================================================================
StatusCode TutorialAlgorithm::execute() {
if (msgLevel(MSG::DEBUG)) debug() << "==> Execute" << endmsg;
StatusCode sc = StatusCode::SUCCESS ;
// code goes here
const LHCb::Particle::Range muons = this->particles(); // get particles
sc = loopOnMuons(muons);
if (!sc) return sc;
setFilterPassed(true); // Mandatory. Set to true if event is accepted.
return StatusCode::SUCCESS;
}
//=============================================================================
// loop on muons
//=============================================================================
StatusCode TutorialAlgorithm::loopOnMuons(const LHCb::Particle::Range& muons)const {
StatusCode sc = StatusCode::SUCCESS ;
// code goes here
const LHCb::RecVertex::Range pvs = this->primaryVertices();
counter("# PV")+= pvs.size();
counter("# muons")+= muons.size();
for(LHCb::Particle::Range::const_iterator im = muons.begin(); im != muons.end(); ++im)
{
plot((*im)->p(), "P", "Muon P", 0., 50.*Gaudi::Units::GeV); // momentum
plot((*im)->pt(), "Pt", "Muon Pt", 0., 5.*Gaudi::Units::GeV ); // Pt
if(msgLevel(MSG::DEBUG)) { debug() << "Mu Momentum: " << (*im)->momentum() << endmsg; }
for(LHCb::RecVertex::Range::const_iterator ipv = pvs.begin(); ipv != pvs.end(); ++ipv)
{
double IP, IPchi2;
if(msgLevel(MSG::DEBUG)) { debug() << (*ipv)->position() << endmsg; }
sc = distanceCalculator()->distance((*im), (*ipv), IP, IPchi2);
if(sc)
{
plot(IP, "IP", "Muon IP", 0., 10.*Gaudi::Units::mm);
plot(IPchi2, "IPchi2", "Muon chi2 IP", 0., 25.);
if( (*im)->pt()>2*Gaudi::Units::GeV )
{
plot(IP, "IP_2", "Muon IP for PT>2GeV", 0., 10.*Gaudi::Units::mm);
}
}
}
}
return StatusCode::SUCCESS;
}
//=============================================================================
// Finalize
//=============================================================================
StatusCode TutorialAlgorithm::finalize() {
if (msgLevel(MSG::DEBUG)) debug() << "==> Finalize" << endmsg;
return DaVinciTupleAlgorithm::finalize();
}
//=============================================================================
/*****************************************************************************\
* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
// $Id: TutorialAlgorithm.h,v 1.2 2008-12-22 18:08:36 pkoppenb Exp $
#ifndef TUTORIALALGORITHM_H
#define TUTORIALALGORITHM_H 1
// Include files
// from DaVinci, this is a specialized GaudiAlgorithm
#include "Kernel/DaVinciTupleAlgorithm.h"
/** @class TutorialAlgorithm TutorialAlgorithm.h
*
* Simple algorithm that loops on muons and plots some quantities of interest.
*
* See https://twiki.cern.ch/twiki/bin/view/LHCb/DaVinciTutorial
*
* @author Patrick Koppenburg
* @date 2006-05-24
*/
class TutorialAlgorithm : public DaVinciTupleAlgorithm {
public:
/// Standard constructor
TutorialAlgorithm( const std::string& name, ISvcLocator* pSvcLocator );
virtual ~TutorialAlgorithm( ); ///< Destructor
virtual StatusCode initialize(); ///< Algorithm initialization
virtual StatusCode execute (); ///< Algorithm execution
virtual StatusCode finalize (); ///< Algorithm finalization
protected:
private:
StatusCode loopOnMuons(const LHCb::Particle::Range&)const ;
};
#endif // TUTORIALALGORITHM_H
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
########################################################################
# $Id: DVTutorial_2.py,v 1.9 2009-06-11 16:22:28 rlambert Exp $
#
# Options for exercise 2
#
# @author Patrick Koppenburg
# @date 2008-06-02
#
########################################################################
from Gaudi.Configuration import *
MessageSvc().Format = "% F%60W%S%7W%R%T %0W%M"
#######################################################################
#
# 1) Let's define a sequence
#
from Configurables import GaudiSequencer
tutorialseq = GaudiSequencer("TutorialSeq")
#######################################################################
#
# 2) Add the Tutorial algorithm
#
from Configurables import TutorialAlgorithm
jpsi2mumu = TutorialAlgorithm("Jpsi2MuMu")
tutorialseq.Members += [ jpsi2mumu ]
jpsi2mumu.Inputs = [ "Phys/StdAllLooseMuons/Particles" ]
from GaudiKernel.SystemOfUnits import MeV
jpsi2mumu.MassWindow = 30*MeV
jpsi2mumu.MaxChi2 = 100
#######################################################################
#
# 3) Configure the application
#
from Configurables import DaVinci
DaVinci().HistogramFile = "DVHistos_2.root" # Histogram file
DaVinci().EvtMax = 10000 # Number of events
DaVinci().DataType = "2012" #
DaVinci().Simulation = True # When running on MC
#
# Add our own stuff
#
DaVinci().UserAlgorithms = [ tutorialseq ]
########################################################################
#
# To run in shell :
# gaudirun.py solutions/DaVinci1/DVTutorial_1.py options/Bs2JpsiPhi_Sim08a.py
#
########################################################################
/*****************************************************************************\
* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
TCanvas* c1 = new TCanvas("c1","DaVinci",600,600);
c1->SetLogy();
TFile* F = new TFile("DVHistos_2.root")
F->ls()
F->cd("Jpsi2MuMu")
F->ls()
TH1D* H1 = F->Get("Jpsi2MuMu/AllMuP")
TH1D* H2 = F->Get("Jpsi2MuMu/AllMuPt")
TH1D* H3 = F->Get("Jpsi2MuMu/AllMuIP")
TH1D* H4 = F->Get("Jpsi2MuMu/AllMuIPS")
TH1D* H5 = F->Get("Jpsi2MuMu/DiMuM")
TH1D* H6 = F->Get("Jpsi2MuMu/DiMuChi2")
TH1D* H7 = F->Get("Jpsi2MuMu/SelDiMuChi2")
TH1D* H8 = F->Get("Jpsi2MuMu/SelectedMuP")
TH1D* H9 = F->Get("Jpsi2MuMu/SelectedMuPt")
TH1D* H10 = F->Get("Jpsi2MuMu/SelectedMuIP")
TH1D* H11 = F->Get("Jpsi2MuMu/SelectedMuIPS")
H5->SetLineColor(2)
H5->SetLineWidth(3)
H5->Draw()
gPad->SaveAs("DV2_H5.eps");
H6->SetLineColor(2)
H6->SetLineWidth(3)
H6->Draw()
gPad->SaveAs("DV2_H6.eps");
H1->SetLineColor(2)
H1->SetLineWidth(3)
H1->Draw()
H8->SetLineColor(4)
H8->SetLineWidth(3)
H8->Draw("Same")
gPad->SaveAs("DV2_H8.eps");
H2->SetLineColor(2)
H2->SetLineWidth(3)
H2->Draw()
H9->SetLineColor(4)
H9->SetLineWidth(3)
H9->Draw("Same")
gPad->SaveAs("DV2_H9.eps");
H3->SetLineColor(2)
H3->SetLineWidth(3)
H3->Draw()
H10->SetLineColor(4)
H10->SetLineWidth(3)
H10->Draw("Same")
gPad->SaveAs("DV2_H10.eps");
H4->SetLineColor(2)
H4->SetLineWidth(3)
H4->Draw()
H11->SetLineColor(4)
H11->SetLineWidth(3)
H11->Draw("Same")
gPad->SaveAs("DV2_H11.eps");
/*****************************************************************************\
* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
// $Id: TutorialAlgorithm.cpp,v 1.15 2010-07-05 12:28:22 jhe Exp $
// Include files
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
// from Gaudi
#include "GaudiKernel/AlgFactory.h"
// from DaVinci
#include "Kernel/ParticleFilters.h"
// local
#include "TutorialAlgorithm.h"
using namespace Gaudi::Units ;
using namespace boost::lambda;
//-----------------------------------------------------------------------------
// Implementation file for class : TutorialAlgorithm
//
// 2006-05-24 : Patrick Koppenburg
//-----------------------------------------------------------------------------
// Declaration of the Algorithm Factory
DECLARE_ALGORITHM_FACTORY( TutorialAlgorithm );
//=============================================================================
// Standard constructor, initializes variables
//=============================================================================
TutorialAlgorithm::TutorialAlgorithm( const std::string& name,
ISvcLocator* pSvcLocator)
: DaVinciTupleAlgorithm ( name , pSvcLocator )
, m_jPsiID(0)
, m_jPsiMass(0.)
{
declareProperty("MassWindow", m_jPsiMassWin = 10.*GeV);
declareProperty("MaxChi2", m_jPsiChi2 = 1000.);
}
//=============================================================================
// Destructor
//=============================================================================
TutorialAlgorithm::~TutorialAlgorithm() {}
//=============================================================================
// Initialization
//=============================================================================
StatusCode TutorialAlgorithm::initialize() {
StatusCode sc = DaVinciTupleAlgorithm::initialize();
if ( sc.isFailure() ) return sc;
if (msgLevel(MSG::DEBUG)) debug() << "==> Initialize" << endmsg;
const LHCb::ParticleProperty* mother = ppSvc()->find( "J/psi(1S)" );
if ( !mother ) { //
err() << "Cannot find particle property for J/psi(1S)" << endmsg ;
return StatusCode::FAILURE;
}
m_jPsiID = LHCb::ParticleID(mother->pdgID());
m_jPsiMass = mother->mass();
info() << "Will reconstruct " << mother->particle() << " (ID=" << m_jPsiID.pid()
<< ") with mass " << m_jPsiMass << endmsg ;
info() << "Mass window is " << m_jPsiMassWin << " MeV" << endmsg ;
info() << "Max chi^2 is " << m_jPsiChi2 << endmsg ;
return StatusCode::SUCCESS;
}
//=============================================================================
// Main execution
//=============================================================================
StatusCode TutorialAlgorithm::execute() {
if (msgLevel(MSG::DEBUG)) debug() << "==> Execute" << endmsg;
StatusCode sc = StatusCode::SUCCESS ;
setFilterPassed(false); // Mandatory. Set to true if event is accepted.
counter("Events")++;
// code goes here
const LHCb::Particle::Range muons = this->particles(); // get particles
if (msgLevel(MSG::DEBUG)) debug() << "muon size:" << muons.size() << endmsg;
sc = loopOnMuons(muons);
if (!sc) return sc;
sc = makeJpsi(muons);
if (!sc) return sc;
return StatusCode::SUCCESS;
}
//=============================================================================
// makeJpsi
//=============================================================================
StatusCode TutorialAlgorithm::makeJpsi(const LHCb::Particle::Range& muons){
LHCb::Particle::ConstVector MuPlus, MuMinus;
size_t sc = DaVinci::filter(muons,
bind(&LHCb::Particle::charge,_1)<0,
MuMinus);
if (sc>0) {
sc = DaVinci::filter(muons,
bind(&LHCb::Particle::charge,_1)>0,
MuPlus);
} else {
Warning("Filtered no muons",StatusCode::SUCCESS,1);
return StatusCode::SUCCESS ;
}
for ( LHCb::Particle::ConstVector::const_iterator imp = MuPlus.begin() ;
imp != MuPlus.end() ; ++imp ){
for ( LHCb::Particle::ConstVector::const_iterator imm = MuMinus.begin() ;
imm != MuMinus.end() ; ++imm ){
// mass
Gaudi::LorentzVector twoMu = (*imp)->momentum() + (*imm)->momentum() ;
verbose() << "Two muon mass is " << twoMu.M()/GeV << endmsg ;
plot(twoMu.M(), "DiMuM", "DiMu mass",2.*GeV,4.*GeV);
if ( fabs ( twoMu.M() - m_jPsiMass ) > m_jPsiMassWin ) continue ; // mass cuts
// vertex
LHCb::Vertex MuMuVertex;
LHCb::Particle Jpsi(m_jPsiID);
StatusCode scFit = vertexFitter()->fit(*(*imp), *(*imm), MuMuVertex, Jpsi);
if (!scFit) {
Warning("Fit error").ignore();
continue;
}
if (msgLevel(MSG::DEBUG)) debug() << "Vertex fit at " << MuMuVertex.position()/cm
<< " with chi2 " << MuMuVertex.chi2() << endmsg;
plot(MuMuVertex.chi2(), "DiMuChi2", "DiMu Chi^2",0.,20.);
plot(Jpsi.measuredMass(), "Jpsi_MM", "Jpsi measured mass", 3.0*GeV, 3.2*GeV);
if ( MuMuVertex.chi2() > m_jPsiChi2 ) continue ; // chi2 cut
// happy -> keep
plot(twoMu.M(),"SelDiMuChi2", "Selected DiMu mass",m_jPsiMass-m_jPsiMassWin,m_jPsiMass+m_jPsiMassWin);
setFilterPassed(true); // Mandatory. Set to true if event is accepted.
this->markTree(&Jpsi);
plotMuon(*imp,"Selected").ignore();
plotMuon(*imm,"Selected").ignore();
counter("J/psi's")++ ;
}
}
return StatusCode::SUCCESS;
}
//=============================================================================
// loop on muons
//=============================================================================
StatusCode TutorialAlgorithm::loopOnMuons(const LHCb::Particle::Range& muons)const {
StatusCode sc = StatusCode::SUCCESS ;
for ( LHCb::Particle::Range::const_iterator im = muons.begin() ;
im != muons.end() ; ++im ){
sc = plotMuon(*im,"All");
if (!sc) return sc;
}
return StatusCode::SUCCESS;
}
//=============================================================================
// plot muons
//=============================================================================
StatusCode TutorialAlgorithm::plotMuon(const LHCb::Particle* mu, const std::string& head )const {
StatusCode sc = StatusCode::SUCCESS ;
plot(mu->p(), head+"MuP", head+" Muon P", 0., 50.*GeV); // momentum
plot(mu->pt(), head+"MuPt", head+" Muon Pt", 0., 5.*GeV ); // Pt
if (msgLevel(MSG::DEBUG)) debug() << mu->momentum() << endmsg ;
const LHCb::RecVertex::Range prims = this->primaryVertices() ;
for ( LHCb::RecVertex::Range::const_iterator ipv = prims.begin() ;
ipv != prims.end() ; ++ipv )
{
double IP, IPchi2;
if (msgLevel(MSG::DEBUG)) debug() << (*ipv)->position() << endmsg ;
sc = distanceCalculator()->distance(mu, (*ipv), IP, IPchi2);
if (sc){
plot(IP, head+"MuIP", head+" Muon IP", 0., 10.*mm);
if (IPchi2>0.) plot(IPchi2, head+"MuIPchi2", head+" Muon IP chi2", 0., 25.);
//====================================================================
//
//====================================================================
}
}
return StatusCode::SUCCESS;
}
//=============================================================================
// Finalize
//=============================================================================
StatusCode TutorialAlgorithm::finalize() {
if (msgLevel(MSG::DEBUG)) debug() << "==> Finalize" << endmsg;
return DaVinciTupleAlgorithm::finalize();
}
//=============================================================================
/*****************************************************************************\
* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
// $Id: TutorialAlgorithm.h,v 1.5 2010-05-27 15:02:30 jpalac Exp $
#ifndef TUTORIALALGORITHM_H
#define TUTORIALALGORITHM_H 1
// Include files
// from DaVinci, this is a specialized GaudiAlgorithm
#include "Kernel/DaVinciTupleAlgorithm.h"
/** @class TutorialAlgorithm TutorialAlgorithm.h
*
* Example of how to loop over particles to make a composite particle.
* Practically no-one ever does that. Use CombineParticles instead.
*
* https://twiki.cern.ch/twiki/bin/view/LHCb/DaVinciTutorial2
*
* \sa CombineParticles
*
* @author Patrick Koppenburg
* @date 2006-05-24
*/
class TutorialAlgorithm : public DaVinciTupleAlgorithm {
public:
/// Standard constructor
TutorialAlgorithm( const std::string& name, ISvcLocator* pSvcLocator );
virtual ~TutorialAlgorithm( ); ///< Destructor
virtual StatusCode initialize(); ///< Algorithm initialization
virtual StatusCode execute (); ///< Algorithm execution
virtual StatusCode finalize (); ///< Algorithm finalization
protected:
private:
/// Make a loop over muons
StatusCode loopOnMuons(const LHCb::Particle::Range&)const ;
/// Plot quantities for muon
StatusCode plotMuon(const LHCb::Particle*, const std::string& head)const ;
/// Build J/psi
StatusCode makeJpsi(const LHCb::Particle::Range&) ;
double m_jPsiMassWin ; ///< Mass window
double m_jPsiChi2 ; ///< Max J/psi chi^2
LHCb::ParticleID m_jPsiID ; ///< J/psi ID
double m_jPsiMass ; ///< J/psi mass
};
#endif // TUTORIALALGORITHM_H
###############################################################################
# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
########################################################################
# $Id: DVTutorial_3.py,v 1.9 2010-08-05 07:30:52 jpalac Exp $
#
# Options for exercise 3
#
# @author Patrick Koppenburg
# @date 2008-06-02
#
########################################################################
from Gaudi.Configuration import *
MessageSvc().Format = "% F%60W%S%7W%R%T %0W%M"
#######################################################################
#
# 1) Let's define a sequence
#
from Configurables import GaudiSequencer
tutorialseq = GaudiSequencer("TutorialSeq")
#######################################################################
#
# 2) Add the J/psi
#
from Configurables import TutorialAlgorithm
jpsi2mumu = TutorialAlgorithm("Jpsi2MuMu")
jpsi2mumu.Inputs = [ "Phys/StdAllLooseMuons/Particles" ]
from GaudiKernel.SystemOfUnits import MeV
jpsi2mumu.MassWindow = 30*MeV
jpsi2mumu.MaxChi2 = 100
jpsi2mumu.Particle = "J/psi(1S)"
tutorialseq.Members += [ jpsi2mumu ]
#######################################################################
#
# 2) Add the Phi
#
phi2kk = TutorialAlgorithm("Phi2KK");
phi2kk.Inputs = [ "Phys/StdAllLooseKaons/Particles" ]
phi2kk.MassWindow = 50*MeV
phi2kk.Particle = "phi(1020)"
phi2kk.MaxChi2 = 20
tutorialseq.Members += [ phi2kk ]
#######################################################################
#
# Say True to have all phis. False to be fast.
#
tutorialseq.IgnoreFilterPassed = True # get all phis
#######################################################################
#
# 3) Configure the application
#
from Configurables import DaVinci
DaVinci().HistogramFile = "DVHistos_3.root" # Histogram file
DaVinci().EvtMax = 10000 # Number of events
DaVinci().DataType = "2012" #
DaVinci().Simulation = True # When running on MC
#
# Add our own stuff
#
DaVinci().UserAlgorithms = [ tutorialseq ]
DaVinci().MainOptions = "" # None
########################################################################
#
# To run in shell :
# gaudirun.py solutions/DaVinci3/DVTutorial_3.py options/Bs2JpsiPhi_Sim08a.py
#
########################################################################
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment