Difference: LHCbStripping (1 vs. 118)

Revision 1162017-06-12 - StefanieReichert

Line: 1 to 1
 

LHCb Stripping page

Line: 116 to 115
 MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST

Stripping liaisons of WGs

Changed:
<
<
QCD, Electroweak and Exotica Chitsanu Khurewathanakul & Matthieu Mariangeli
B hadrons and Quarkonia Liupan An
Charm physics Maxime Schubiger & Jinlin Fu
Rare decays Guido Andreassi & Giulio Dujany
B decays to Charmonia Xuesong Liu
B decays to Open Charm Nicole Skidmore & Alison Tully
Charmless b-hadron decays Timothy Williams
Semileptonic B decays Iwan Smith
Calibration Michael Kolpin
Ions & fixed target Emilie Maurice
Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are also listed here.
>
>
Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are listed here.
 

Responsibilities of stripping liaisons of WGs

  • Put together the Stripping lines of your WG shortly after the deadline, so that we can fix the Stripping and launch the validation production as quickly as possible to spot out any problem.

Revision 1122017-05-10 - StefanieReichert

Line: 1 to 1
 

LHCb Stripping page

Line: 113 to 113
 BK Browsing Paths: MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
Changed:
<
<

Stripping coordinators of WGs

>
>

Stripping liaisons of WGs

 
QCD, Electroweak and Exotica Chitsanu Khurewathanakul & Matthieu Mariangeli
B hadrons and Quarkonia Liupan An
Charm physics Maxime Schubiger & Jinlin Fu
Line: 126 to 126
 
Ions & fixed target Emilie Maurice
Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are also listed here.
Changed:
<
<

Responsibilities of stripping coordinators of WGs

>
>

Responsibilities of stripping liaisons of WGs

 
  • Put together the Stripping lines of your WG shortly after the deadline, so that we can fix the Stripping and launch the validation production as quickly as possible to spot out any problem.
  • Make sure that all the stripping lines of your WG are included, i.e., by asking people to check once a draft of Stripping is announced.
  • Once the validation production data of Stripping is available (announced to the mailing list), have a look at them as quickly as possible. You should at least check one of the most interested channel (with high yield) of your WG for all the streams in which there are stripping lines from your WG. If everything is OK, e.g., no problem in running over the data, everything (e.g., luminosity) you need is there, give the green light; otherwise report immediately the problem.

Revision 1112017-04-18 - RicardoVazquezGomez

Line: 1 to 1
 

LHCb Stripping page

Line: 22 to 22
 The complete documentation of the stripping line cuts, prescales and streams definition is available at the Stripping Project page.

not listed on that page are future strippings and too-long-ago strippings:

Deleted:
<
<
  • Stripping 23: first 2015 stripping
  • Stripping 22: 2015 early measurements
 
  • Stripping 14: second 2010 reprocessing to fix broken lines (excluding the first bit)
  • Stripping 13: prompt 2011 stripping (verify?)
  • Stripping 12: 2010 reprocessing
Line: 40 to 38
 See StrippingStatistics page.

Status of stripping production

Added:
>
>
 

Revision 1092017-04-03 - StefanieReichert

Line: 1 to 1
 

LHCb Stripping page

Added:
>
>

Processing passes for all Stripping productions

An exhaustive list of the processing passes including database tags, DaVinci versions etc can be found here.

 

New StrippingSelections framework

Line: 77 to 80
 

What version of which application was run on

Changed:
<
<
You need the production ID. This is part of the LFN (a directory). In that case 5614. Now go to the Production monitor web page and search for production 5614. Click on a file and select "Show Details". This will give you the details of the whole production workflow. I read:
>
>
You can either look up the processing pass or get the production ID, which is part of the LFN (a directory). In that case 5614. Now go to the Production monitor web page and search for production 5614. Click on a file and select "Show Details". This will give you the details of the whole production workflow. I read:
 
Merge Production 5614 for event type 30000000 has following parameters:

Revision 1042016-09-12 - MichaelAlexander

Line: 1 to 1
 

LHCb Stripping page

Line: 113 to 113
 

Stripping coordinators of WGs

QCD, Electroweak and Exotica Chitsanu Khurewathanakul
Changed:
<
<
B hadrons and Quarkonia Liupan An & Roberta Cardinale
>
>
B hadrons and Quarkonia Liupan An
 
Charm physics Maxime Schubiger & Jinlin Fu
Rare decays Guido Andreassi
B decays to Charmonia Xuesong Liu
Line: 121 to 121
 
Charmless b-hadron decays Timothy Williams
Semileptonic B decays Gregory Max Ciezarek
Calibration Michael Kolpin
Changed:
<
<
Ions & fixed target Yanxi Zhang
>
>
Ions & fixed target Emilie Maurice
  Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are also listed here.

Revision 922015-11-01 - AndreaContu

Line: 1 to 1
 

LHCb Stripping page

Line: 109 to 109
 MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST

Stripping coordinators of WGs

Changed:
<
<
QCD, Electroweak and Exotica Ronan Wallace & Chitsanu Khurewathanakul
>
>
QCD, Electroweak and Exotica Chitsanu Khurewathanakul
 
B hadrons and Quarkonia Roberta Cardinale
Charm physics Eva Gersabeck & Jinlin Fu
Rare decays Pablo Ruiz Valls
B decays to Charmonia Carlos Vázquez Sierra
Changed:
<
<
B decays to Open Charm Wenbin Qian & Nicola Anne Skidmore
>
>
B decays to Open Charm Nicola Anne Skidmore
 
Charmless B decays Stefano Perazzini
Semileptonic B decays Gregory Max Ciezarek
Calibration Michael Kolpin

Revision 882015-06-03 - RicardoVazquezGomez

Line: 1 to 1
 

LHCb Stripping page

New StrippingSelections framework

Changed:
<
<
>
>
 
Changed:
<
<

EM Stripping

FAQ for Stripping21

>
>

EM Stripping

FAQ for Stripping21

 

Stripping Stream Definitions

Deleted:
<
<
 The complete documentation of the stripping line cuts, prescales and streams definition is available at the Stripping Project page.

not listed on that page are future strippings and too-long-ago strippings:

Line: 26 to 24
 

The configuration of Stripping21 and Stripping21r1 can be found here:

Changed:
<
<
>
>
 

Stripping Statistics

Line: 106 to 105
  ProductionID = 5600

BK Browsing Paths:

Changed:
<
<
MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
>
>
MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
 

Stripping coordinators of WGs

Changed:
<
<
QCD, Electroweak and Exotica Ronan Wallace & Chitsanu Khurewathanakul
B hadrons and Quarkonia Roberta Cardinale
Charm physics Eva Gersabeck & Jinlin Fu
Rare decays Pablo Ruiz Valls
B decays to Charmonia Carlos Vázquez Sierra
B decays to Open Charm Wenbin Qian & Nicola Anne Skidmore
Charmless B decays Stefano Perazzini
Semileptonic B decays Gregory Max Ciezarek
Calibration Michael Kolpin
>
>
QCD, Electroweak and Exotica Ronan Wallace & Chitsanu Khurewathanakul
B hadrons and Quarkonia Roberta Cardinale
Charm physics Eva Gersabeck & Jinlin Fu
Rare decays Pablo Ruiz Valls
B decays to Charmonia Carlos Vázquez Sierra
B decays to Open Charm Wenbin Qian & Nicola Anne Skidmore
Charmless B decays Stefano Perazzini
Semileptonic B decays Gregory Max Ciezarek
Calibration Michael Kolpin
 Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are also listed here.

Responsibilities of stripping coordinators of WGs

Line: 127 to 124
 
  • Make sure that all the stripping lines of your WG are included, i.e., by asking people to check once a draft of Stripping is announced.
  • Once the validation production data of Stripping is available (announced to the mailing list), have a look at them as quickly as possible. You should at least check one of the most interested channel (with high yield) of your WG for all the streams in which there are stripping lines from your WG. If everything is OK, e.g., no problem in running over the data, everything (e.g., luminosity) you need is there, give the green light; otherwise report immediately the problem.
  • Inform your WG if changes made/proposed to Stripping affect your WG.
Changed:
<
<
  • To be added.
>
>
 

Stripping coordinator's cheatsheet

Revision 862015-04-30 - PaulSeyfert

Line: 1 to 1
 

LHCb Stripping page

Line: 11 to 11
 

FAQ for Stripping21

Stripping Stream Definitions

Added:
>
>
 The complete documentation of the stripping line cuts, prescales and streams definition is available at the Stripping Project page.
Added:
>
>
not listed on that page are future strippings and too-long-ago strippings:
  • Stripping 23: first 2015 stripping
  • Stripping 22: 2015 early measurements
  • Stripping 14: second 2010 reprocessing to fix broken lines (excluding the first bit)
  • Stripping 13: prompt 2011 stripping (verify?)
  • Stripping 12: 2010 reprocessing
 The stream definitions for different strippings can be found here:

Revision 772014-09-12 - AndreaContu

Line: 1 to 1
 

LHCb Stripping page

Line: 95 to 95
 

Stripping coordinators of WGs

Changed:
<
<
QCD, Electroweak and Exotica Ronan Wallace & Will Barter
B hadrons and Quarkonia Jibo He & Lucio Anderlini
>
>
QCD, Electroweak and Exotica Ronan Wallace
B hadrons and Quarkonia Roberta Cardinale
 
Charm physics Andrea Contu & Eva Gersabeck
Rare decays Pablo Ruiz Valls
Changed:
<
<
B decays to Charmonia Francesca Dordei & Carlos Vázquez Sierra
>
>
B decays to Charmonia Carlos Vázquez Sierra
 
B decays to Open Charm Wenbin Qian
Charmless B decays Stefano Perazzini
Semileptonic B decays Mika Anton Vesterinen

Revision 722014-05-26 - StefanoPerazzini

Line: 1 to 1
 

LHCb Stripping page

Line: 92 to 92
 

Stripping coordinators of WGs

QCD, Electroweak and Exotica Ronan Wallace & Will Barter
B hadrons and Quarkonia Jibo He & Lucio Anderlini
Changed:
<
<
Charm physics Andrea Contu & Mat Charles
>
>
Charm physics Andrea Contu & Eva Gersabeck
 
Rare decays Pablo Ruiz Valls
B decays to Charmonia Francesca Dordei
B decays to Open Charm Wenbin Qian
Charmless B decays Stefano Perazzini
Semileptonic B decays Mika Anton Vesterinen
Changed:
<
<
Calibration Philip Hunt
>
>
Calibration Sneha Malde
  Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are also listed here.

Revision 652013-04-19 - AntonPoluektov

Line: 1 to 1
 

LHCb Stripping page

Line: 14 to 14
  See StrippingStatistics page.
Changed:
<
<

Stripping FAQ

>
>

Stripping Productions

 
Changed:
<
<
See StrippingFAQ page.
>
>
A list of past, present and future stripping production can be found at the StrippingProductions page.
 
Changed:
<
<

Disk Campaign

Missing variables on MicroDST

>
>

Stripping FAQ

 
Changed:
<
<
Please add your favorite variables to this Twiki page.
>
>
See StrippingFAQ page.
 

Common Particles Change

The proposed changes to Common Particles, to be discussed are presented on the CommonParticles page.

Deleted:
<
<

Default vertex fitter

Proposed to replace OfflineVertexFitter by LoKi::VertexFitter, to be discussed on the StrippingVertexFitter page.

Stripping Productions

A list of past, present and future stripping production can be found at the StrippingProductions page.

 

How to add a line

So far we have always included the head of the stripping selections in DaVinci. We cannot continue like that. Since the beginning of the year I have asked everyone to present their stripping selection at T&S meeting. One such talk is scheduled today. Now that we'll soon start stripping real data we also need to discuss any change to what we've been using. By default, what goes in the head of cvs will not be used in the stripping. Only what's blessed by the PPG and OPG will be used.

Line: 45 to 36
 
  1. Present it at T&S if it does not comply with the rate and cpu guidelines, of if asked to by the stripping coordinators.
  2. If agreed by the T&S meeting, the proposed change (practically, a bunch of changes) will make it to a production release. The green light has to be given by OPG and PPG to use this release in production.
Deleted:
<
<

Removed Stripping Selections

See StrippingSelectionsRemoved page for a list of the lines that were removed in July 2010.

Stripping Selections

See StrippingSelections page.

 

Stripping Settings and the Stripping Archive

See the StrippingSettings page.

Deleted:
<
<

Stripping Workflow

See StrippingWorkFlow page.

 

Stripping Framework

See StrippingLines page.

Line: 128 to 107
 
  • Inform your WG if changes made/proposed to Stripping affect your WG.
  • To be added.
Added:
>
>

Stripping coordinator's cheatsheet

See StrippingCoordinatorsCheatsheet

 

Correlations of Stripping and Hlt Lines

See HltCorrelations.
Added:
>
>

Outdated pages

The page OldStrippingStuff contains links to pages which are now outdated.
 -- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010 -- JuanPalacios - 13-Oct-2010 -- UlrikEgede - 12-Jan-2011

|*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="

"|

Revision 622012-12-17 - AntonPoluektov

Line: 1 to 1
 

LHCb Stripping page

Line: 35 to 41
  Practically, if you want to add a line, or change a line, you must
Changed:
<
<
  1. Get the change approved by your WG.
  2. Present it at T&S if it does not comply with the rate and cpu guidelines, of if asked to by the stripping coordinators.
  3. If agreed by the T&S meeting, the proposed change (practically, a bunch of changes) will make it to a production release. The green light has to be given by OPG and PPG to use this release in production.
>
>
  1. Get the change approved by your WG.
  2. Present it at T&S if it does not comply with the rate and cpu guidelines, of if asked to by the stripping coordinators.
  3. If agreed by the T&S meeting, the proposed change (practically, a bunch of changes) will make it to a production release. The green light has to be given by OPG and PPG to use this release in production.
 

Removed Stripping Selections

Added:
>
>
 See StrippingSelectionsRemoved page for a list of the lines that were removed in July 2010.

Stripping Selections

Line: 102 to 114
 
Charm physics Andrea Contu & Mat Charles
Rare decays Thomas Blake
B decays to Charmonia Francesca Dordei
Changed:
<
<
B decays to Open Charm Anton Poluektov
>
>
B decays to Open Charm Anton Poluektov, Ed Smith
 
Charmless B decays Stefano Perazzini
Semileptonic B decays Mika Anton Vesterinen
Calibration Andrew Powell

Revision 592012-10-16 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 29 to 28
  A list of past, present and future stripping production can be found at the StrippingProductions page.
Deleted:
<
<

Stripping TCK shell

Stripping TCK can be used to access configuration of stripping lines in various stripping productions. See StrippingTCK page.
 

How to add a line

So far we have always included the head of the stripping selections in DaVinci. We cannot continue like that. Since the beginning of the year I have asked everyone to present their stripping selection at T&S meeting. One such talk is scheduled today. Now that we'll soon start stripping real data we also need to discuss any change to what we've been using. By default, what goes in the head of cvs will not be used in the stripping. Only what's blessed by the PPG and OPG will be used.
Line: 99 to 95
 

Stripping coordinators of WGs

Changed:
<
<
QCD, Electroweak and Exotica Will Barter
>
>
QCD, Electroweak and Exotica Ronan Wallace & Will Barter
 
B hadrons and Quarkonia Jibo He & Lucio Anderlini
Charm physics Andrea Contu & Mat Charles
Rare decays Thomas Blake
Line: 109 to 105
 
Semileptonic B decays Mika Anton Vesterinen
Calibration Andrew Powell
Changed:
<
<
The WG contacts are also listed here.
>
>
Stripping liaisons mailing list is lhcb-stripping-liaisons@cernNOSPAMPLEASE.ch. The WG contacts are also listed here.
 

Responsibilities of stripping coordinators of WGs

  • Put together the Stripping lines of your WG shortly after the deadline, so that we can fix the Stripping and launch the validation production as quickly as possible to spot out any problem.

Revision 562012-06-19 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Deleted:
<
<

WG liaison people

The WG contacts are listed here. Please inform your WG liaison person about any change to stripping lines.
 

Stripping Stream Definitions

The stream definitions for different strippings can be found here:

Line: 112 to 109
 
Semileptonic B decays Mika Anton Vesterinen
Calibration Andrew Powell
Added:
>
>
The WG contacts are also listed here.
 

Responsibilities of stripping coordinators of WGs

  • Put together the Stripping lines of your WG shortly after the deadline, so that we can fix the Stripping and launch the validation production as quickly as possible to spot out any problem.
  • Make sure that all the stripping lines of your WG are included, i.e., by asking people to check once a draft of Stripping is announced.

Revision 492012-02-24 - He

Line: 1 to 1
 

LHCb Stripping page

Line: 108 to 108
 
Semileptonic B decays Mika Anton Vesterinen
Calibration Andrew Powell
Added:
>
>

Responsibilities of stripping coordinators of WGs

  • Put together the Stripping lines of your WG shortly after the deadline, so that we can fix the Stripping and launch the validation production as quickly as possible to spot out any problem.
  • Make sure that all the stripping lines of your WG are included, i.e., by asking people to check once a draft of Stripping is announced.
  • Once the validation production data of Stripping is available (announced to the mailing list), have a look at them as quickly as possible. You should at least check one of the most interested channel (with high yield) of your WG for all the streams in which there are stripping lines from your WG. If everything is OK, e.g., no problem in running over the data, everything (e.g., luminosity) you need is there, give the green light; otherwise report immediately the problem.
  • Inform your WG if changes made/proposed to Stripping affect your WG.
  • To be added.
  -- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010 -- JuanPalacios - 13-Oct-2010 -- UlrikEgede - 12-Jan-2011

Revision 472012-02-20 - He

Line: 1 to 1
 

LHCb Stripping page

Line: 93 to 93
 MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
Added:
>
>

Stripping coordinators of WGs

QCD, Electroweak and Exotica Will Barter
B hadrons and Quarkonia Jibo He
Charm physics Mat Charles
Rare decays Thomas Blake
B decays to Charmonia Greig Cowan
B decays to Open Charm Anton Poluektov
Charmless B decays Stefano Perazzini
Semileptonic B decays Mika Anton Vesterinen
Calibration Andrew Powell
 -- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010 -- JuanPalacios - 13-Oct-2010 -- UlrikEgede - 12-Jan-2011

|*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="

"|

Revision 412011-08-11 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Deleted:
<
<

What is run in production

See production page for full details on processing.

The table below provides an overview of the current processing. Users are strongly discouraged from using data that appears in the bookkeeping under Real Data + RecoX-StrippingY. This data is unmerged and will be deleted as soon as the merging is complete. For Reco04-Stripping07 please use data under Reco04-Stripping07 and for Reco05-Stripping09 the data under Reco05-Stripping09-Merged.

Production Runs Fills DaVinci version Description
<!-- -->
Sorted ascending
Prescales
Reco05-Stripping-09-Prescaled 77266-77623 1268-1287 v25r7 Same reconstruction pass and DaVinci version as Reco05-Stripping09, but with additional pre-scaled lines in Charm and Bhadron stream. Bhadron and Charm streams are not merged. See here
Reco07-Stripping11   1436-   Stripping for October 2010 ($\sim18pb^{-1}$). Stream definition in Phys/StrippingSettings/Stripping11. First stripping to include $\mu$-DST$% producton for inclusive-$J/psi$ and high rate Charm lines. Prescales appear in the line definitions
Reco06-Stripping10 79571- 1364-1435 v26r1 Stripping for September 2010. Stream definition moved to Phys/StrippingSettings/Sept2010 Prescales appear in line definitions
Reco08-Stripping12 < < v26r3p1 Stripping for Winter 2010 reprocessing. Prescales appear in line definitions
Reco05-Stripping09 <77226 <1268 v25r7 Stripping of the first $1pb^{-1}$, Bhadron and Charm streams merged into a single Hadronic stream. See here
Reco05-Stripping08 <77196 <1264 v25r5p2 Stripping version used for ICHEP processing. Pre-scales as appearing in line configuration except MicroBias which is pre-scaled by 0.01 See here
 

Stripping Stream Definitions

The stream definitions for different strippings can be found here:

Added:
>
>

Stripping Statistics

See StrippingStatistics page.
 

Common Particles Change

The proposed changes to Common Particles, to be discussed are presented on the CommonParticles page.
Line: 32 to 21
  A list of past, present and future stripping production can be found at the StrippingProductions page.
Deleted:
<
<

Stripping Statistics

See StrippingStatistics page.
 

Stripping TCK shell

Stripping TCK can be used to access configuration of stripping lines in various stripping productions. See StrippingTCK page.
Line: 44 to 30
 Practically, if you want to add a line, or change a line, you must

  1. Get the change approved by your WG.
Changed:
<
<
  1. Present it at T&S. Show what is does to rates and CPU, and explain the reason. This will become critical once we have sizeable rates flowing out of the detector. Then, make sure you run the stripping with and without your line on the available data (rDST) and present the results.
>
>
  1. Present it at T&S if it does not comply with the rate and cpu guidelines, of if asked to by the stripping coordinators.
 
  1. If agreed by the T&S meeting, the proposed change (practically, a bunch of changes) will make it to a production release. The green light has to be given by OPG and PPG to use this release in production.

Removed Stripping Selections

Line: 66 to 52
 

Stripping DST

The stripping DST contains the full DST, plus a MicroDST partition containing the full decay tree of the stripping line selected candidates. It also contains the necessary particle to primary vertex (PV) relations in order to guarantee that the same PV is used to apply further cuts and estimate PV-dependent quantities. If PV re-fitting has been used in the selection, the re-fitted PVs are also saved. The relations point to these.

Changed:
<
<

Writing

Writing of DSTs is performed using the DSTWriter pattern. It uses the Stripping Framework behind the scened, and the StrippingConf configurable to provide a list of StrippingStreams. These are passed onto a DSTWriter, which prepares a self-contained GaudiSequencer that can then be passed to DaVinci(). There is one DST per stream, and it contains all the candidates of all the lines composing that stream. By convention, the candidates are placed in a partition '/Event/' where is the name of your stream (was Strip in RecoStripping-03). It is possible to configure StrippingConf to run only one stream. It is also possible to use a sub-set of lines for each particular stream. This is achieved through the ActiveStreams and ActiveLines fields of StrippingConf respectively.
<!-- SyntaxHighlightingPlugin -->
from Configurables import SelDSTWriter, DaVinci
from StrippingConf.Configuration import StrippingConf

# import some official Stripping Selections
from StrippingSelections import StreamBmuon, StreamHadron, StreamJpsi, StreamDstar

sc = StrippingConf(Streams = [StreamBmuon.stream,
                  StreamHadron.stream,
                  StreamJpsi.stream,
                  StreamDstar.stream] )

dstWriter = SelDSTWriter("StripMC09DSTWriter",
                         SelectionSequences = sc.activeStreams(),
                         OutputFileSuffix = 'Test'
                         )
dv = DaVinci()
dv.DataType = "2010"
dv.UserAlgorithms = [ dstWriter.sequence() ]
<!-- end SyntaxHighlightingPlugin -->

This example will only run the 'JpsiInclusive' line of the 'Jpsi' stream. The result will be Test.Jpsi.dst. For more details, see the relevant Stripping Framework section

Reading

Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified to the relevant algorithms. However, since the stripping lines within a stream are run in OR mode, it is unavoidable that there will be events with no candidates in the desired location, or with no desired location at all. In most cases, this will apply to most events, meaning that you only care about a small percentage of the events in a stripped DST. Fortunately, it is possible to filter on the stripping decision report and limit your analysis to the events that passed the line or lines you require. This is the only robust way of performing an analysis on stripped DSTs. It is very easy to produce a filter that selects events that passed a given line:

<!-- SyntaxHighlightingPlugin -->
# Create a filter for events that passed the DY2MuMu2 stripping line
from Configurables import LoKi__HDRFilter   as StripFilter
filter = StripFilter( 'StripPassFilter', Code="HLT_PASS('StrippingDY2MuMu2Decision')", Location="/Event/Strip/Phys/DecReports" )
<!-- end SyntaxHighlightingPlugin -->

This filter can be places at the beginning of your analysis GaudiSequencer, or passed to DaVinci().EventPreFilters, if you want to completely skip events that did not pass the stripping line. This can save a large amount of time if your line has a small retention compared to the global retention rate of the stream. In any case, for robust analysis you have to use this filter, whether it is placed in front of your sequence or in the DaVinci().EventPreFilters:

<!-- SyntaxHighlightingPlugin -->
# put the filter in front of your analysis algorithm or sequence
# myAlg can be a simple algorithm or a GaudiSequencer containing all the algorithms that your analysis needs
myAlg = ...
mySeq = GaudiSequencer('MyAnalysisSequencer', Members = [filter, myAlg])
DaVinci().UserAlgorithms += [mySeq]
<!-- end SyntaxHighlightingPlugin -->

a similar effect can be achieved using the selection toolkit, in the case where myAlg is a DVAlgorithm,

<!-- SyntaxHighlightingPlugin -->
mySelSeq = SelectionSequence('MySelSeq', EventPreSelector = [filter], TopSelection = Selection('MySel', Algorithm = myAlg, RequiredSelections = [...])
DaVinci().UserAlgorithms += [mySelSeq.sequence()]
<!-- end SyntaxHighlightingPlugin -->

For maximum processing efficiency, add the filter to DaVinci().

<!-- SyntaxHighlightingPlugin -->
# job will only run over events passing the line.
DaVinci().EventPreFilters += [filter]
<!-- end SyntaxHighlightingPlugin -->

Note in the example above we only care about one line. If we care about more lines, of want more sophisticated filtering, we can use the handy module PhysConf.Filters by Vanya:

# what is is about ? Get the help printed out to the terminal python $PHYSCONFROOT/python/PhysConf/Filters.py

This is an example of a more sophisticated filter, using both stripping and HLT decision report information, and asking that the event contain less than three primary vertices, using some regexp:

<!-- SyntaxHighlightingPlugin -->
from PhysConf.Filters import LoKi_Filters
fltrs = LoKi_Filters (
# OR of two HLT decisions
HLT_Code = " HLT_PASS_RE ('Hlt1MBMicro.*Decision') | HLT_PASS_RE ('Hlt1.*Hadron.*Decision') " ,
## OR of two stripping lines
STRIP_Code = 
" HLT_PASS ( 'StrippingDs2piPhiLineDecision' ) |
HLT_PASS_RE ('StrippingStripD2K(KP|PP)_A_LoosePID_(Sig|Bkg).*Decision')
" ,
## select one or 2 vertices
VOID_Code = 
" CONTAINS ('/Event/Rec/Vertex/Primary') < 3"
)
from Configurables import DaVinci
DaVinci ( DataType = '2010' , EventPreFilters = fltrs.filters ('Filters'), ...)
<!-- end SyntaxHighlightingPlugin -->

Run a selection on top of the stripping candidates

In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream. For this, we use elements from the Particle Selection Framework to build SelectionSequence.
<!-- SyntaxHighlightingPlugin -->
# get classes to build the SelectionSequence
from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence
# Get the J/Psi candidates from the DST.
# Treat particles already on the DST as data-on-demand, but give the full path.
JpsiSel = AutomaticData(Location = "/Event/Dimuon/Phys/StrippingJpsiInclusiveCombine")
# Filter the J/Psi. Replace 'ALL' by some cuts.
from Configurables import FilterDesktop
_jpsiFilter = FilterDesktop('jpsiFilter', Code = 'ALL')

# make a Selection
JpsiFilterSel = Selection(name = 'JpsiFilterSel',
                          Algorithm = _jpsiFilter,
                          RequiredSelections = [JpsiSel] )

# build the SelectionSequence
JpsiSeq = SelectionSequence('SeqJpsi',
                            TopSelection = JpsiFilterSel)

# Configure DaVinci
dv=DaVinci()
dv.HistogramFile = "DVHistos_Strip.root"
dv.EvtMax=-1
dv.DataType="MC09"
dv.UserAlgorithms = [JpsiSeq.sequence()] # pass the GaudiSequencer to DaVinci()
dv.InputType='DST'
dv.Input   = ["DATAFILE='PFN:/castor/cern.ch/user/j/jpalac/StripDST/MC09/DaVinci_v24r3p1/Sel.Jpsi.dst'  TYP='POOL_ROOTTREE' OPT='READ'" ]
<!-- end SyntaxHighlightingPlugin -->
We can add some histograms, as shown in DaVinci Tutorial 4:
<!-- SyntaxHighlightingPlugin -->
from Configurables import LoKi__Hybrid__PlotTool as PlotTool

_jpsiFilter.HistoProduce = True
_jpsiFilter.addTool( PlotTool("InputPlots") )
_jpsiFilter.InputPlots.Histos = { "P/1000"  : ('momentum',0,150) ,
                                  "PT/1000" : ('pt_%1%',0,5,750) ,
                                  "M"       : ('mass in MeV_%1%_%2%_%3%',2.8*Uni
ts.GeV,3.2*Units.GeV) }
_jpsiFilter.addTool( PlotTool("OutputPlots") )
_jpsiFilter.OutputPlots.Histos = { "P/1000"  : ('momentum',0,150) ,
                                   "PT/1000" : ('pt_%1%',0,5,750) ,
                                   "M"       : ('mass in MeV_%1%_%2%_%3%',2.8*Un
its.GeV,3.2*Units.GeV) }
<!-- end SyntaxHighlightingPlugin -->

The selection part of the example could've been put in a python module to make a selection, as explained in the Particle Selection framework and DaVinci Tutorial 4 pages. This example will be available as DaVinci/options/DaVinci-ReadStripDST.py from DaVinci v24r4 onwards.

Make a DecayTreeTuple using the stripping candidates

<!-- SyntaxHighlightingPlugin -->
from Gaudi.Configuration import *
from Configurables import  DaVinci, DecayTreeTuple, TupleToolTrigger

importOptions('$HLTCONFROOT/options/HltInit.py')
from Configurables import HltDecReportsDecoder, HltSelReportsDecoder, HltVertexReportsDecoder
DataOnDemandSvc().AlgMap["Hlt/DecReports"] = HltDecReportsDecoder(OutputLevel = 4)
DataOnDemandSvc().AlgMap["Hlt/SelReports"] = HltSelReportsDecoder(OutputLevel = 4)
DataOnDemandSvc().AlgMap["Hlt/VertexReports"] = HltVertexReportsDecoder( OutputLevel = 4)

tuple = DecayTreeTuple('MyTuple')
tuple.InputLocations = [ "/Event/Semileptonic/Phys/Bd2DstarMu" ]
tuple.ToolList +=  [  "TupleToolGeometry"
                    , "TupleToolKinematic"
                    , "TupleToolPrimaries"
                    , "TupleToolEventInfo"
                    , "TupleToolTrackInfo"
                    , "TupleToolPid"
                    , "TupleToolTrigger"
                    ,"LoKi::Hybrid::TupleTool/LoKiTool"
                    ]
tuple.Decay = "[B~0 -> (^D*(2010)+ -> (^D0 -> ^K- ^pi+) ^pi+) ^mu-]cc"
tuple.Branches = {
     "muon"  : "[B~0]cc  -> [(D*(2010)+ -> (D0 -> K- pi+) pi+) ^mu-]cc" 
    ,"Dstar" : "[B~0]cc  -> [(^D*(2010)+ -> (D0 -> K- pi+)  pi+) mu-]cc" 
    ,"slpi"  : "[B~0]cc  -> [(D*(2010)+  -> (D0 -> K- pi+) ^pi+) mu-]cc" 
    ,"D0"    : "[B~0]cc  -> [(D*(2010)+  -> (^D0 -> K- pi+) pi+) mu-]cc" 
    ,"pion"  : "[B~0]cc  -> [(D*(2010)+  -> (D0 -> K- ^pi+) pi+) mu-]cc" 
    ,"kaon"  : "[B~0]cc  -> [(D*(2010)+  -> (D0 -> ^K- pi+) pi+) mu-]cc" 
    ,"Bd"    : "[B~0]cc : [B~0 -> (D*(2010)+ -> (D0 -> K- pi+) pi+)  mu-]cc" 
     }

tuple.addTool(TupleToolTrigger)
tuple.TupleToolTrigger.VerboseL0 = True
tuple.TupleToolTrigger.VerboseHlt1 = True
tuple.TupleToolTrigger.VerboseHlt2 = True
tuple.TupleToolTrigger.UseAutomaticTriggerList = True

# DaVinci settings
#
from Configurables import DaVinci
DaVinci().EvtMax = -1
DaVinci().PrintFreq = 100
DaVinci().DataType = "MC09"
DaVinci().UserAlgorithms = [ tuple ]
DaVinci().TupleFile = "StripTuple.root"
DaVinci().InputType='DST'
DaVinci().Input   = [ .... ]
<!-- end SyntaxHighlightingPlugin -->

Finding TES locations of stripping candidates

In the examples above, one has to know the location of the candidate particles in the DST. It is possible to query StrippingConf to get the locations for a given configuration. In standard python (UE, updated for Stripping12),

<!-- SyntaxHighlightingPlugin -->
from StrippingSettings.Stripping12 import streams
_streams = streams()

for stream in _streams:
    print stream.name(), "\t", stream.outputLocations()
    for line in stream.lines :
        print line.name(), "\t", line.outputLocation()
<!-- end SyntaxHighlightingPlugin -->

If we follow the convention that candidates are written to '/Event/' then we can see how to get the location for each line's candidates.

Finding the location of the candidates on a stripping DST

From RecoStripping04 onwards, the candidates are stores in "/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Leptonic stream to the DST locations of the candidates. Make sure you do that with the version of DaVinci used in the stripping.
<!-- SyntaxHighlightingPlugin -->
streamname = 'Leptonic'

from StrippingSettings.Stripping12 import streams
_streams = streams()
_streamnames=[s.name() for s in _streams]

# we will build a line name to location map
locations = {}
for line in _streams[_streamnames.index(streamname)].lines:
   locations[line.name()] = '/Event/' + streamname + '/' + line.outputLocation()
<!-- end SyntaxHighlightingPlugin -->
Then we can find the location if we know the line's name:
<!-- SyntaxHighlightingPlugin -->
myLine = 'StrippingMicroDSTDiMuonIncLine'
print myLine, 'DST location:', locations[myLine]
<!-- end SyntaxHighlightingPlugin -->
or just look at everything in there:
<!-- SyntaxHighlightingPlugin -->
for lineName, location in locations.iteritems() :
 print 'Line:', lineName, 'DST location:', location
<!-- end SyntaxHighlightingPlugin -->

And if there are no candidates?

This is the case of the Minimum Bias lines for instance. For all lines you can do
<!-- SyntaxHighlightingPlugin -->
from Configurables import LoKi__HDRFilter   as StripFilter
MySequencer = GaudiSequencer('Sequence')
MySequencer.Members += [ StripFilter( 'StripPassFilter', Code="HLT_PASS('StrippingBd2KstGammaDecision')", Location="/Event/Strip/Phys/DecReports" ) ]
<!-- end SyntaxHighlightingPlugin -->
Note the location, that is different from the default HLT location. This StripFilter would restrict the sequence only to events that have passed the K*Gamma selection.

MicroDST framework

Here is a complete example of reading a production micro DST and saving candidates in the DecayTreeTuple
<!-- SyntaxHighlightingPlugin -->
stream = 'Leptonic'
line = 'MicroDSTDiMuonIncLine'
inputType = 'MDST'

from Gaudi.Configuration import *
from Configurables import DaVinci

if inputType == 'MDST':

    # Make reading of trigger possible on MDST
    from Configurables import DataOnDemandSvc
    from Configurables import HltDecReportsDecoder, HltSelReportsDecoder
    decDecoder = HltDecReportsDecoder(InputRawEventLocation="/Event/"+stream+"/DAQ/RawEvent",
                                      OutputHltDecReportsLocation ="/Event/"+stream+"/Hlt/DecReports" )
    selDecoder = HltSelReportsDecoder(InputRawEventLocation="/Event/"+stream+"/DAQ/RawEvent",
                                      OutputHltSelReportsLocation ="/Event/"+stream+"/Hlt/SelReports" ,
                                      HltDecReportsLocation="Event/"+stream+"/Hlt/DecReports")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Hlt/SelReports"] = selDecoder
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Hlt/DecReports"] = decDecoder

    from Configurables import L0DecReportsMaker, L0SelReportsMaker
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/HltLikeL0/DecReports"]=L0DecReportsMaker(RootInTES = "/Event/"+stream+"/")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/HltLikeL0/SelReports"]=L0SelReportsMaker(RootInTES = "/Event/"+stream+"/")
    from Configurables import L0Conf
    L0Conf().FullL0MuonDecoding = True
    L0Conf().EnableL0DecodingOnDemand = True
    from Configurables import L0MuonCandidatesFromRaw, L0CaloCandidatesFromRaw, L0DUFromRawAlg
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Trig/L0/MuonBCSU"] = L0MuonCandidatesFromRaw("L0MuonFromRaw",RootInTES = "/Event/"+stream+"/")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Trig/L0/FullCalo"]= L0CaloCandidatesFromRaw("L0CaloFromRaw", RootInTES = "/Event/"+stream+"/")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Trig/L0/L0DUReport"]= L0DUFromRawAlg("L0DUFromRaw", RootInTES = "/Event/"+stream+"/" )

    from Configurables import ANNDispatchSvc
    ANNDispatchSvc().RawEventLocation = "/Event/" + stream + "/DAQ/RawEvent"
    ApplicationMgr().ExtSvc +=  [ DataOnDemandSvc(),ANNDispatchSvc() ] 


# Setup DecayTreeTuple
from Configurables import DecayTreeTuple
tuple = DecayTreeTuple()
if inputType == 'MDST':
    tuple.RootInTES = "/Event/"+stream+"/"

tuple.InputLocations = [line]
tuple.ToolList +=  [
                "TupleToolGeometry"
              , "TupleToolKinematic"
              , "TupleToolPropertime"
              , "TupleToolPrimaries"
              , "TupleToolPid"
              , "TupleToolEventInfo"
              , "TupleToolTrackInfo"
              , "TupleToolTrigger"
          ]
tuple.Decay = "[J/psi(1S) => ^mu+ ^mu-]cc"
tuple.Branches = {
    "MuPlus" : "J/psi(1S) -> ^mu+ mu-",
    "MuMinus" : "J/psi(1S) -> mu+ ^mu-",
    "Jpsi" : "J/psi(1S) : J/psi(1S) -> mu+ mu-"
    }


from Configurables import TupleToolTISTOS, TupleToolDecay
tuple.addTool( TupleToolDecay, name = "Jpsi" )
tuple.Jpsi.ToolList += [ "TupleToolTISTOS" ]
tuple.Jpsi.addTool( TupleToolTISTOS, name = "TupleToolTISTOS" )
tuple.Jpsi.TupleToolTISTOS.VerboseL0 = True
tuple.Jpsi.TupleToolTISTOS.TriggerList = [
    "L0MuonDecision",
    "L0HadronDecision"
    ]

if inputType == 'MDST':
    from Configurables import L0TriggerTisTos, TriggerTisTos
    tuple.Jpsi.TupleToolTISTOS.addTool( L0TriggerTisTos() )
    tuple.Jpsi.TupleToolTISTOS.addTool( TriggerTisTos() )
    tuple.Jpsi.TupleToolTISTOS.L0TriggerTisTos.UseParticle2LHCbIDsMap = 2
    tuple.Jpsi.TupleToolTISTOS.TriggerTisTos.UseParticle2LHCbIDsMap = 2

DaVinci().UserAlgorithms += [ tuple ]


DaVinci().EvtMax = -1
DaVinci().DataType = "2010"
DaVinci().InputType = inputType
DaVinci().Simulation   = False
DaVinci().TupleFile = "DVNtuples.root"
<!-- end SyntaxHighlightingPlugin -->

Particle Selections Framework

>
>
See the DaVinciTutorial for examples of how to run on a stripped DST.
 
Deleted:
<
<

Finding information in the bookkeeping

The situation is still not satisfactory. Some hooks are missing, but you can work your way through... Suppose you use the bookeeping GUI to look at the second stripping (MC09-Stripping01) that was run on the MB. You care about the JPSI.DST stream.
 

What version of which application was run on

You need the production ID. This is part of the LFN (a directory). In that case 5614. Now go to the Production monitor web page and search for production 5614. Click on a file and select "Show Details". This will give you the details of the whole production workflow. I read:

Revision 352011-05-25 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 29 to 29
 

Stripping Statistics

See StrippingStatistics page.
Added:
>
>

Stripping TCK shell

Stripping TCK can be used to access configuration of stripping lines in various stripping productions. See StrippingTCK page.
 

How to add a line

So far we have always included the head of the stripping selections in DaVinci. We cannot continue like that. Since the beginning of the year I have asked everyone to present their stripping selection at T&S meeting. One such talk is scheduled today. Now that we'll soon start stripping real data we also need to discuss any change to what we've been using. By default, what goes in the head of cvs will not be used in the stripping. Only what's blessed by the PPG and OPG will be used.

Revision 312011-03-07 - GreigCowan

Line: 1 to 1
 

LHCb Stripping page

Line: 17 to 17
 
Reco05-Stripping08 <77196 <1264 v25r5p2 Stripping version used for ICHEP processing. Pre-scales as appearing in line configuration except MicroBias which is pre-scaled by 0.01 See here
Added:
>
>

Stripping Productions

A list of past, present and future stripping production can be found at the StrippingProductions page.

 

Stripping Statistics

Changed:
<
<
See StrippingStatistics page
>
>
See StrippingStatistics page.
 

How to add a line

So far we have always included the head of the stripping selections in DaVinci. We cannot continue like that. Since the beginning of the year I have asked everyone to present their stripping selection at T&S meeting. One such talk is scheduled today. Now that we'll soon start stripping real data we also need to discuss any change to what we've been using. By default, what goes in the head of cvs will not be used in the stripping. Only what's blessed by the PPG and OPG will be used.

Revision 302011-01-14 - UlrikEgede

Line: 1 to 1
 

LHCb Stripping page

Line: 278 to 278
 Note the location, that is different from the default HLT location. This StripFilter would restrict the sequence only to events that have passed the K*Gamma selection.

MicroDST framework

Added:
>
>
Here is a complete example of reading a production micro DST and saving candidates in the DecayTreeTuple
<!-- SyntaxHighlightingPlugin -->
stream = 'Leptonic'
line = 'MicroDSTDiMuonIncLine'
inputType = 'MDST'

from Gaudi.Configuration import *
from Configurables import DaVinci

if inputType == 'MDST':

    # Make reading of trigger possible on MDST
    from Configurables import DataOnDemandSvc
    from Configurables import HltDecReportsDecoder, HltSelReportsDecoder
    decDecoder = HltDecReportsDecoder(InputRawEventLocation="/Event/"+stream+"/DAQ/RawEvent",
                                      OutputHltDecReportsLocation ="/Event/"+stream+"/Hlt/DecReports" )
    selDecoder = HltSelReportsDecoder(InputRawEventLocation="/Event/"+stream+"/DAQ/RawEvent",
                                      OutputHltSelReportsLocation ="/Event/"+stream+"/Hlt/SelReports" ,
                                      HltDecReportsLocation="Event/"+stream+"/Hlt/DecReports")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Hlt/SelReports"] = selDecoder
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Hlt/DecReports"] = decDecoder

    from Configurables import L0DecReportsMaker, L0SelReportsMaker
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/HltLikeL0/DecReports"]=L0DecReportsMaker(RootInTES = "/Event/"+stream+"/")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/HltLikeL0/SelReports"]=L0SelReportsMaker(RootInTES = "/Event/"+stream+"/")
    from Configurables import L0Conf
    L0Conf().FullL0MuonDecoding = True
    L0Conf().EnableL0DecodingOnDemand = True
    from Configurables import L0MuonCandidatesFromRaw, L0CaloCandidatesFromRaw, L0DUFromRawAlg
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Trig/L0/MuonBCSU"] = L0MuonCandidatesFromRaw("L0MuonFromRaw",RootInTES = "/Event/"+stream+"/")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Trig/L0/FullCalo"]= L0CaloCandidatesFromRaw("L0CaloFromRaw", RootInTES = "/Event/"+stream+"/")
    DataOnDemandSvc().AlgMap["/Event/"+stream+"/Trig/L0/L0DUReport"]= L0DUFromRawAlg("L0DUFromRaw", RootInTES = "/Event/"+stream+"/" )

    from Configurables import ANNDispatchSvc
    ANNDispatchSvc().RawEventLocation = "/Event/" + stream + "/DAQ/RawEvent"
    ApplicationMgr().ExtSvc +=  [ DataOnDemandSvc(),ANNDispatchSvc() ] 


# Setup DecayTreeTuple
from Configurables import DecayTreeTuple
tuple = DecayTreeTuple()
if inputType == 'MDST':
    tuple.RootInTES = "/Event/"+stream+"/"

tuple.InputLocations = [line]
tuple.ToolList +=  [
                "TupleToolGeometry"
              , "TupleToolKinematic"
              , "TupleToolPropertime"
              , "TupleToolPrimaries"
              , "TupleToolPid"
              , "TupleToolEventInfo"
              , "TupleToolTrackInfo"
              , "TupleToolTrigger"
          ]
tuple.Decay = "[J/psi(1S) => ^mu+ ^mu-]cc"
tuple.Branches = {
    "MuPlus" : "J/psi(1S) -> ^mu+ mu-",
    "MuMinus" : "J/psi(1S) -> mu+ ^mu-",
    "Jpsi" : "J/psi(1S) : J/psi(1S) -> mu+ mu-"
    }


from Configurables import TupleToolTISTOS, TupleToolDecay
tuple.addTool( TupleToolDecay, name = "Jpsi" )
tuple.Jpsi.ToolList += [ "TupleToolTISTOS" ]
tuple.Jpsi.addTool( TupleToolTISTOS, name = "TupleToolTISTOS" )
tuple.Jpsi.TupleToolTISTOS.VerboseL0 = True
tuple.Jpsi.TupleToolTISTOS.TriggerList = [
    "L0MuonDecision",
    "L0HadronDecision"
    ]

if inputType == 'MDST':
    from Configurables import L0TriggerTisTos, TriggerTisTos
    tuple.Jpsi.TupleToolTISTOS.addTool( L0TriggerTisTos() )
    tuple.Jpsi.TupleToolTISTOS.addTool( TriggerTisTos() )
    tuple.Jpsi.TupleToolTISTOS.L0TriggerTisTos.UseParticle2LHCbIDsMap = 2
    tuple.Jpsi.TupleToolTISTOS.TriggerTisTos.UseParticle2LHCbIDsMap = 2

DaVinci().UserAlgorithms += [ tuple ]


DaVinci().EvtMax = -1
DaVinci().DataType = "2010"
DaVinci().InputType = inputType
DaVinci().Simulation   = False
DaVinci().TupleFile = "DVNtuples.root"
<!-- end SyntaxHighlightingPlugin -->
 

Particle Selections Framework

Revision 292011-01-12 - UlrikEgede

Line: 1 to 1
 

LHCb Stripping page

Line: 229 to 229
 %ENDSYNTAX%

Finding TES locations of stripping candidates

Changed:
<
<
In the examples above, one has to know the location of the candidate particles in the DST. It is possible to query StrippingConf to get the locations for a given configuration. In standard python,
>
>
In the examples above, one has to know the location of the candidate particles in the DST. It is possible to query StrippingConf to get the locations for a given configuration. In standard python (UE, updated for Stripping12),
  %SYNTAX{syntax="python"}%
Changed:
<
<
from StrippingConf.Configuration import StrippingConf

# import some official Stripping Selections from StrippingSelections import StreamBmuon, StreamHadron, StreamJpsi, StreamDstar

sc = StrippingConf(Streams = [StreamBmuon.stream, StreamHadron.stream, StreamJpsi.stream, StreamDstar.stream] )

>
>
from StrippingSettings.Stripping12 import streams _streams = streams()
 
Changed:
<
<
streams = sc.activeStreams()

for stream in streams :

>
>
for stream in _streams:
  print stream.name(), "\t", stream.outputLocations() for line in stream.lines : print line.name(), "\t", line.outputLocation()
Line: 253 to 244
 If we follow the convention that candidates are written to '/Event/' then we can see how to get the location for each line's candidates.

Finding the location of the candidates on a stripping DST

Changed:
<
<
From RecoStripping04 onwards, the candidates are stores in "/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Dimuon stream to the DST locations of the candidates. Make sure you do that with the version of DaVinci used in the stripping.
>
>
From RecoStripping04 onwards, the candidates are stores in "/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Leptonic stream to the DST locations of the candidates. Make sure you do that with the version of DaVinci used in the stripping.
 %SYNTAX{syntax="python"}%
Changed:
<
<
from StrippingSelections import StreamDimuon
>
>
streamname = 'Leptonic'

from StrippingSettings.Stripping12 import streams _streams = streams() _streamnames=[s.name() for s in _streams]

 # we will build a line name to location map locations = {}
Changed:
<
<
for line in StreamDimuon.stream.lines : locations[line.name()] = '/Event/' + StreamDimuon.stream.name() + '/' + line.outputLocation()
>
>
for line in _streams[_streamnames.index(streamname)].lines: locations[line.name()] = '/Event/' + streamname + '/' + line.outputLocation()
 %ENDSYNTAX% Then we can find the location if we know the line's name: %SYNTAX{syntax = "python"}%
Changed:
<
<
myLine = 'StrippingBd2KstarLine'
>
>
myLine = 'StrippingMicroDSTDiMuonIncLine'
 print myLine, 'DST location:', locations[myLine] %ENDSYNTAX% or just look at everything in there:
Line: 323 to 319
 MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
Changed:
<
<
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010 -- JuanPalacios - 13-Oct-2010
>
>
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010 -- JuanPalacios - 13-Oct-2010 -- UlrikEgede - 12-Jan-2011
  |*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="
"|

Revision 282010-11-18 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 9 to 9
 The table below provides an overview of the current processing. Users are strongly discouraged from using data that appears in the bookkeeping under Real Data + RecoX-StrippingY. This data is unmerged and will be deleted as soon as the merging is complete. For Reco04-Stripping07 please use data under Reco04-Stripping07 and for Reco05-Stripping09 the data under Reco05-Stripping09-Merged.

Production Runs Fills DaVinci version Description Prescales
Changed:
<
<
Reco06-Stripping10 79571- 1364- v26r1 Stripping for September 2010. Stream definition moved to Phys/StrippingSettings/Sept2010 Prescales appear in line definitions
>
>
Reco08-Stripping12 < < v26r3p1 Stripping for Winter 2010 reprocessing. Prescales appear in line definitions
Reco07-Stripping11   1436-   Stripping for October 2010 ($\sim18pb^{-1}$). Stream definition in Phys/StrippingSettings/Stripping11. First stripping to include $\mu$-DST$% producton for inclusive-$J/psi$ and high rate Charm lines. Prescales appear in the line definitions
Reco06-Stripping10 79571- 1364-1435 v26r1 Stripping for September 2010. Stream definition moved to Phys/StrippingSettings/Sept2010 Prescales appear in line definitions
 
Reco05-Stripping09 <77226 <1268 v25r7 Stripping of the first $1pb^{-1}$, Bhadron and Charm streams merged into a single Hadronic stream. See here
Reco05-Stripping-09-Prescaled 77266-77623 1268-1287 v25r7 Same reconstruction pass and DaVinci version as Reco05-Stripping09, but with additional pre-scaled lines in Charm and Bhadron stream. Bhadron and Charm streams are not merged. See here
Reco05-Stripping08 <77196 <1264 v25r5p2 Stripping version used for ICHEP processing. Pre-scales as appearing in line configuration except MicroBias which is pre-scaled by 0.01 See here

Revision 262010-10-13 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 57 to 57
  dstWriter = SelDSTWriter("StripMC09DSTWriter", SelectionSequences = sc.activeStreams(),
Deleted:
<
<
OutputPrefix = 'Strip',
  OutputFileSuffix = 'Test' ) dv = DaVinci()
Changed:
<
<
dv.DataType = "MC09" # Default is "MC09"
>
>
dv.DataType = "2010"
 dv.UserAlgorithms = [ dstWriter.sequence() ] %ENDSYNTAX%

This example will only run the 'JpsiInclusive' line of the 'Jpsi' stream. The result will be Test.Jpsi.dst. For more details, see the relevant Stripping Framework section

Reading

Changed:
<
<
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. However, since the stripping lines within a stream are run in OR mode, it is unavoidable that there will be events with no candidates in the desired location, and no container of secondary vertices. This catches the PhysDesktop out, so to protect against these cases it is necessary to use DaVinci v24r4 or higher.
>
>
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified to the relevant algorithms. However, since the stripping lines within a stream are run in OR mode, it is unavoidable that there will be events with no candidates in the desired location, or with no desired location at all. In most cases, this will apply to most events, meaning that you only care about a small percentage of the events in a stripped DST. Fortunately, it is possible to filter on the stripping decision report and limit your analysis to the events that passed the line or lines you require. This is the only robust way of performing an analysis on stripped DSTs. It is very easy to produce a filter that selects events that passed a given line:

<!-- SyntaxHighlightingPlugin -->
# Create a filter for events that passed the DY2MuMu2 stripping line
from Configurables import LoKi__HDRFilter   as StripFilter
filter = StripFilter( 'StripPassFilter', Code="HLT_PASS('StrippingDY2MuMu2Decision')", Location="/Event/Strip/Phys/DecReports" )
<!-- end SyntaxHighlightingPlugin -->

This filter can be places at the beginning of your analysis GaudiSequencer, or passed to DaVinci().EventPreFilters, if you want to completely skip events that did not pass the stripping line. This can save a large amount of time if your line has a small retention compared to the global retention rate of the stream. In any case, for robust analysis you have to use this filter, whether it is placed in front of your sequence or in the DaVinci().EventPreFilters:

<!-- SyntaxHighlightingPlugin -->
# put the filter in front of your analysis algorithm or sequence
# myAlg can be a simple algorithm or a GaudiSequencer containing all the algorithms that your analysis needs
myAlg = ...
mySeq = GaudiSequencer('MyAnalysisSequencer', Members = [filter, myAlg])
DaVinci().UserAlgorithms += [mySeq]
<!-- end SyntaxHighlightingPlugin -->

a similar effect can be achieved using the selection toolkit, in the case where myAlg is a DVAlgorithm,

<!-- SyntaxHighlightingPlugin -->
mySelSeq = SelectionSequence('MySelSeq', EventPreSelector = [filter], TopSelection = Selection('MySel', Algorithm = myAlg, RequiredSelections = [...])
DaVinci().UserAlgorithms += [mySelSeq.sequence()]
<!-- end SyntaxHighlightingPlugin -->

For maximum processing efficiency, add the filter to DaVinci().

<!-- SyntaxHighlightingPlugin -->
# job will only run over events passing the line.
DaVinci().EventPreFilters += [filter]
<!-- end SyntaxHighlightingPlugin -->

Note in the example above we only care about one line. If we care about more lines, of want more sophisticated filtering, we can use the handy module PhysConf.Filters by Vanya:

# what is is about ? Get the help printed out to the terminal python $PHYSCONFROOT/python/PhysConf/Filters.py

This is an example of a more sophisticated filter, using both stripping and HLT decision report information, and asking that the event contain less than three primary vertices, using some regexp:

<!-- SyntaxHighlightingPlugin -->
from PhysConf.Filters import LoKi_Filters
fltrs = LoKi_Filters (
# OR of two HLT decisions
HLT_Code = " HLT_PASS_RE ('Hlt1MBMicro.*Decision') | HLT_PASS_RE ('Hlt1.*Hadron.*Decision') " ,
## OR of two stripping lines
STRIP_Code = 
" HLT_PASS ( 'StrippingDs2piPhiLineDecision' ) |
HLT_PASS_RE ('StrippingStripD2K(KP|PP)_A_LoosePID_(Sig|Bkg).*Decision')
" ,
## select one or 2 vertices
VOID_Code = 
" CONTAINS ('/Event/Rec/Vertex/Primary') < 3.1 )"
)
from Configurables import DaVinci
DaVinci ( DataType = '2010' , EventPreFilters = fltrs.filters ('Filters'), ...)
<!-- end SyntaxHighlightingPlugin -->
 

Run a selection on top of the stripping candidates

In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream. For this, we use elements from the Particle Selection Framework to build SelectionSequence.
Line: 265 to 321
 MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
Changed:
<
<
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010
>
>
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010 -- JuanPalacios - 13-Oct-2010
  |*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="
"|

Revision 252010-10-04 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 9 to 9
 The table below provides an overview of the current processing. Users are strongly discouraged from using data that appears in the bookkeeping under Real Data + RecoX-StrippingY. This data is unmerged and will be deleted as soon as the merging is complete. For Reco04-Stripping07 please use data under Reco04-Stripping07 and for Reco05-Stripping09 the data under Reco05-Stripping09-Merged.

Production Runs Fills DaVinci version Description Prescales
Added:
>
>
Reco06-Stripping10 79571- 1364- v26r1 Stripping for September 2010. Stream definition moved to Phys/StrippingSettings/Sept2010 Prescales appear in line definitions
 
Reco05-Stripping09 <77226 <1268 v25r7 Stripping of the first $1pb^{-1}$, Bhadron and Charm streams merged into a single Hadronic stream. See here
Changed:
<
<
Reco05-Stripping-09-Prescaled 77266+ 1268+ v25r7 Same reconstruction pass and DaVinci version as Reco05-Stripping09, but with additional pre-scaled lines in Charm and Bhadron stream. Bhadron and Charm streams are not merged. See here
>
>
Reco05-Stripping-09-Prescaled 77266-77623 1268-1287 v25r7 Same reconstruction pass and DaVinci version as Reco05-Stripping09, but with additional pre-scaled lines in Charm and Bhadron stream. Bhadron and Charm streams are not merged. See here
 
Reco05-Stripping08 <77196 <1264 v25r5p2 Stripping version used for ICHEP processing. Pre-scales as appearing in line configuration except MicroBias which is pre-scaled by 0.01 See here

Revision 242010-09-08 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 194 to 194
 If we follow the convention that candidates are written to '/Event/' then we can see how to get the location for each line's candidates.

Finding the location of the candidates on a stripping DST

Changed:
<
<
From RecoStripping04 onwards, the candidates are stores in =="/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Dimuon stream to the DST locations of the candidates. Make sure you do that with the version of DaVinci used in the stripping.
>
>
From RecoStripping04 onwards, the candidates are stores in "/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Dimuon stream to the DST locations of the candidates. Make sure you do that with the version of DaVinci used in the stripping.
 %SYNTAX{syntax="python"}% from StrippingSelections import StreamDimuon # we will build a line name to location map

Revision 232010-08-26 - unknown

Line: 1 to 1
 

LHCb Stripping page

What is run in production

Changed:
<
<
See here.
>
>
See production page for full details on processing.

The table below provides an overview of the current processing. Users are strongly discouraged from using data that appears in the bookkeeping under Real Data + RecoX-StrippingY. This data is unmerged and will be deleted as soon as the merging is complete. For Reco04-Stripping07 please use data under Reco04-Stripping07 and for Reco05-Stripping09 the data under Reco05-Stripping09-Merged.

Production Runs Fills DaVinci version Description Prescales
Reco05-Stripping09 <77226 <1268 v25r7 Stripping of the first $1pb^{-1}$, Bhadron and Charm streams merged into a single Hadronic stream. See here
Reco05-Stripping-09-Prescaled 77266+ 1268+ v25r7 Same reconstruction pass and DaVinci version as Reco05-Stripping09, but with additional pre-scaled lines in Charm and Bhadron stream. Bhadron and Charm streams are not merged. See here
Reco05-Stripping08 <77196 <1264 v25r5p2 Stripping version used for ICHEP processing. Pre-scales as appearing in line configuration except MicroBias which is pre-scaled by 0.01 See here
 

Stripping Statistics

See StrippingStatistics page

How to add a line

Revision 222010-08-24 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Line: 184 to 184
 If we follow the convention that candidates are written to '/Event/' then we can see how to get the location for each line's candidates.

Finding the location of the candidates on a stripping DST

Changed:
<
<
From RecoStripping04 onwards, the candidates are stores in =="/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Dimuon stream to the DST locations of the candidates.
>
>
From RecoStripping04 onwards, the candidates are stores in =="/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Dimuon stream to the DST locations of the candidates. Make sure you do that with the version of DaVinci used in the stripping.
 %SYNTAX{syntax="python"}% from StrippingSelections import StreamDimuon # we will build a line name to location map

Revision 202010-07-12 - GreigCowan

Line: 1 to 1
 

LHCb Stripping page

Line: 13 to 13
 
  1. Present it at T&S. Show what is does to rates and CPU, and explain the reason. This will become critical once we have sizeable rates flowing out of the detector. Then, make sure you run the stripping with and without your line on the available data (rDST) and present the results.
  2. If agreed by the T&S meeting, the proposed change (practically, a bunch of changes) will make it to a production release. The green light has to be given by OPG and PPG to use this release in production.
Added:
>
>

Removed Stripping Selections

See StrippingSelectionsRemoved page for a list of the lines that were removed in July 2010.
 

Stripping Selections

See StrippingSelections page.

Revision 192010-06-25 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 178 to 178
  If we follow the convention that candidates are written to '/Event/' then we can see how to get the location for each line's candidates.
Added:
>
>

Finding the location of the candidates on a stripping DST

From RecoStripping04 onwards, the candidates are stores in =="/Event//", where the TES location is obtained as above. One can obtain the locations for a given stream (or all streams) with some simple lines of python. Here, we make a dictionary mapping the names of the stripping line of the Dimuon stream to the DST locations of the candidates.
<!-- SyntaxHighlightingPlugin -->
from StrippingSelections import StreamDimuon
# we will build a line name to location map
locations = {}
for line in StreamDimuon.stream.lines :
   locations[line.name()] = '/Event/' + StreamDimuon.stream.name() + '/' + line.outputLocation()
<!-- end SyntaxHighlightingPlugin -->
Then we can find the location if we know the line's name:
<!-- SyntaxHighlightingPlugin -->
myLine = 'StrippingBd2KstarLine'
print myLine, 'DST location:', locations[myLine]
<!-- end SyntaxHighlightingPlugin -->
or just look at everything in there:
<!-- SyntaxHighlightingPlugin -->
for lineName, location in locations.iteritems() :
 print 'Line:', lineName, 'DST location:', location
<!-- end SyntaxHighlightingPlugin -->
 

And if there are no candidates?

This is the case of the Minimum Bias lines for instance. For all lines you can do %SYNTAX{syntax="python"}%
Line: 229 to 249
 MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
Changed:
<
<
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009
>
>
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009 -- JuanPalacios - 25-Jun-2010
  |*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="
"|

Revision 182010-06-08 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Line: 26 to 26
 The stripping DST contains the full DST, plus a MicroDST partition containing the full decay tree of the stripping line selected candidates. It also contains the necessary particle to primary vertex (PV) relations in order to guarantee that the same PV is used to apply further cuts and estimate PV-dependent quantities. If PV re-fitting has been used in the selection, the re-fitted PVs are also saved. The relations point to these.

Writing

Changed:
<
<
Writing of DSTs is performed using the DSTWriter pattern. It uses the Stripping Framework behind the scened, and the StrippingConf configurable to provide a list of StrippingStreams. These are passed onto a DSTWriter, which prepares a self-contained GaudiSequencer that can then be passed to DaVinci(). There is one DST per stream, and it contains all the candidates of all the lines composing that stream. By convention, the candidates are placed in a partition '/Event/Strip'. It is possible to configure StrippingConf to run only one stream. It is also possible to use a sub-set of lines for each particular stream. This is achieved through the ActiveStreams and ActiveLines fields of StrippingConf respectively.
>
>
Writing of DSTs is performed using the DSTWriter pattern. It uses the Stripping Framework behind the scened, and the StrippingConf configurable to provide a list of StrippingStreams. These are passed onto a DSTWriter, which prepares a self-contained GaudiSequencer that can then be passed to DaVinci(). There is one DST per stream, and it contains all the candidates of all the lines composing that stream. By convention, the candidates are placed in a partition '/Event/' where is the name of your stream (was Strip in RecoStripping-03). It is possible to configure StrippingConf to run only one stream. It is also possible to use a sub-set of lines for each particular stream. This is achieved through the ActiveStreams and ActiveLines fields of StrippingConf respectively.
 %SYNTAX{ syntax="python"}% from Configurables import SelDSTWriter, DaVinci from StrippingConf.Configuration import StrippingConf
Line: 61 to 61
 from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence # Get the J/Psi candidates from the DST. # Treat particles already on the DST as data-on-demand, but give the full path.
Changed:
<
<
JpsiSel = AutomaticData(Location = "/Event/Strip/Phys/StrippingJpsiInclusiveCombine")
>
>
JpsiSel = AutomaticData(Location = "/Event/Dimuon/Phys/StrippingJpsiInclusiveCombine")
 # Filter the J/Psi. Replace 'ALL' by some cuts. from Configurables import FilterDesktop _jpsiFilter = FilterDesktop('jpsiFilter', Code = 'ALL')
Line: 115 to 115
 DataOnDemandSvc().AlgMap["Hlt/VertexReports"] = HltVertexReportsDecoder( OutputLevel = 4)

tuple = DecayTreeTuple('MyTuple')

Changed:
<
<
tuple.InputLocations = [ "/Event/Strip/Phys/Bd2DstarMu" ]
>
>
tuple.InputLocations = [ "/Event/Semileptonic/Phys/Bd2DstarMu" ]
 tuple.ToolList += [ "TupleToolGeometry" , "TupleToolKinematic" , "TupleToolPrimaries"
Line: 176 to 176
  print line.name(), "\t", line.outputLocation() %ENDSYNTAX%
Changed:
<
<
If we follow the convention that candidates are written to '/Event/Strip' then we can see how to get the location for each line's candidates.
>
>
If we follow the convention that candidates are written to '/Event/' then we can see how to get the location for each line's candidates.
 

And if there are no candidates?

This is the case of the Minimum Bias lines for instance. For all lines you can do

Revision 172010-06-07 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Line: 82 to 82
 dv.DataType="MC09" dv.UserAlgorithms = [JpsiSeq.sequence()] # pass the GaudiSequencer to DaVinci() dv.InputType='DST'
Changed:
<
<
dv.Input = ["DATAFILE='PFN:/castor/cern.ch/user/j/jpalac/StripDST/MC09/DaVinci _v24r3p1/Sel.Jpsi.dst' TYP='POOL_ROOTTREE' OPT='READ'" ]
>
>
dv.Input = ["DATAFILE='PFN:/castor/cern.ch/user/j/jpalac/StripDST/MC09/DaVinci_v24r3p1/Sel.Jpsi.dst' TYP='POOL_ROOTTREE' OPT='READ'" ]
 %ENDSYNTAX% We can add some histograms, as shown in DaVinci Tutorial 4: %SYNTAX{ syntax="python"}%
Line: 141 to 140
 tuple.TupleToolTrigger.VerboseL0 = True tuple.TupleToolTrigger.VerboseHlt1 = True tuple.TupleToolTrigger.VerboseHlt2 = True
Added:
>
>
tuple.TupleToolTrigger.UseAutomaticTriggerList = True
  # DaVinci settings #
Line: 178 to 178
  If we follow the convention that candidates are written to '/Event/Strip' then we can see how to get the location for each line's candidates.
Added:
>
>

And if there are no candidates?

This is the case of the Minimum Bias lines for instance. For all lines you can do
<!-- SyntaxHighlightingPlugin -->
from Configurables import LoKi__HDRFilter   as StripFilter
MySequencer = GaudiSequencer('Sequence')
MySequencer.Members += [ StripFilter( 'StripPassFilter', Code="HLT_PASS('StrippingBd2KstGammaDecision')", Location="/Event/Strip/Phys/DecReports" ) ]
<!-- end SyntaxHighlightingPlugin -->
Note the location, that is different from the default HLT location. This StripFilter would restrict the sequence only to events that have passed the K*Gamma selection.
 

MicroDST framework

Particle Selections Framework

Revision 152010-05-15 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 52 to 52
 This example will only run the 'JpsiInclusive' line of the 'Jpsi' stream. The result will be Test.Jpsi.dst. For more details, see the relevant Stripping Framework section

Reading

Changed:
<
<
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. However, since the stripping lines within a stream are run in OR mode, it is unavoidable that there will be events with no candidates in the desired location, and no container of secondary vertices. This catches the PhysDesktop out, so to protect agains these cases it is necessary to use Phys/DaVinciTools v19r2p1. The problem will be fixed in the DaVinci v24r4 release.
>
>
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. However, since the stripping lines within a stream are run in OR mode, it is unavoidable that there will be events with no candidates in the desired location, and no container of secondary vertices. This catches the PhysDesktop out, so to protect against these cases it is necessary to use DaVinci v24r4 or higher.
 

Run a selection on top of the stripping candidates

In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream. For this, we use elements from the Particle Selection Framework to build SelectionSequence. %SYNTAX{ syntax="python"}% # get classes to build the SelectionSequence
Changed:
<
<
from PhysSelPython.Wrappers import DataOnDemand, Selection, SelectionSequence
>
>
from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence
 # Get the J/Psi candidates from the DST. # Treat particles already on the DST as data-on-demand, but give the full path.
Changed:
<
<
JpsiSel = DataOnDemand(name = 'DOD_Bs', Location = "/Event/Strip/Phys/StrippingJpsiInclusiveCombine")
>
>
JpsiSel = AutomaticData(Location = "/Event/Strip/Phys/StrippingJpsiInclusiveCombine")
 # Filter the J/Psi. Replace 'ALL' by some cuts. from Configurables import FilterDesktop _jpsiFilter = FilterDesktop('jpsiFilter', Code = 'ALL')

Revision 132010-04-19 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Added:
>
>

Stripping Statistics

See StrippingStatistics page
 

How to add a line

So far we have always included the head of the stripping selections in DaVinci. We cannot continue like that. Since the beginning of the year I have asked everyone to present their stripping selection at T&S meeting. One such talk is scheduled today. Now that we'll soon start stripping real data we also need to discuss any change to what we've been using. By default, what goes in the head of cvs will not be used in the stripping. Only what's blessed by the PPG and OPG will be used.

Revision 122010-03-22 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Added:
>
>

How to add a line

So far we have always included the head of the stripping selections in DaVinci. We cannot continue like that. Since the beginning of the year I have asked everyone to present their stripping selection at T&S meeting. One such talk is scheduled today. Now that we'll soon start stripping real data we also need to discuss any change to what we've been using. By default, what goes in the head of cvs will not be used in the stripping. Only what's blessed by the PPG and OPG will be used.

Practically, if you want to add a line, or change a line, you must

  1. Get the change approved by your WG.
  2. Present it at T&S. Show what is does to rates and CPU, and explain the reason. This will become critical once we have sizeable rates flowing out of the detector. Then, make sure you run the stripping with and without your line on the available data (rDST) and present the results.
  3. If agreed by the T&S meeting, the proposed change (practically, a bunch of changes) will make it to a production release. The green light has to be given by OPG and PPG to use this release in production.
 

Stripping Selections

See StrippingSelections page.

Revision 112009-12-08 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Added:
>
>

Stripping Selections

See StrippingSelections page.
 
Changed:
<
<

Stripping Workflow

>
>

Stripping Workflow

See StrippingWorkFlow page.
 
Changed:
<
<

Stripping framework

>
>

Stripping Framework

See StrippingLines page.
 

Stripping DST

The stripping DST contains the full DST, plus a MicroDST partition containing the full decay tree of the stripping line selected candidates. It also contains the necessary particle to primary vertex (PV) relations in order to guarantee that the same PV is used to apply further cuts and estimate PV-dependent quantities. If PV re-fitting has been used in the selection, the re-fitted PVs are also saved. The relations point to these.

Revision 102009-11-20 - PatrickSKoppenburg

Line: 1 to 1
 

LHCb Stripping page

Line: 168 to 168
 

Particle Selections Framework

Changed:
<
<

MC09 stripping status

>
>

Finding information in the bookkeeping

The situation is still not satisfactory. Some hooks are missing, but you can work your way through... Suppose you use the bookeeping GUI to look at the second stripping (MC09-Stripping01) that was run on the MB. You care about the JPSI.DST stream.

What version of which application was run on

You need the production ID. This is part of the LFN (a directory). In that case 5614. Now go to the Production monitor web page and search for production 5614. Click on a file and select "Show Details". This will give you the details of the whole production workflow. I read:
Merge Production 5614 for event type 30000000 has following parameters:

Production priority: 9
BK Config Name Version: MC MC09
BK Processing Pass Name: MC09-Stripping02
CondDB Tag: sim-20090402-vc-md100
DDDB Tag: MC09-20090602

====> DaVinci v24r4 Step0
  DaVinci Option Files:
    $APPCONFIGOPTS/DaVinci/DVStrippingETC-MC09-v24r4.py
  ExtraPackages: AppConfig.v3r20
====> Brunel v34r7 Step1
  Brunel Option Files:
    $APPCONFIGOPTS/Brunel/MC09-Stripping.py
  ExtraPackages: AppConfig.v2r9p1
====> DaVinci v24r4 Step2
  DaVinci Option Files:
    $APPCONFIGOPTS/DaVinci/DVStrippingDST-MC09-v24r4.py
  ExtraPackages: AppConfig.v3r20
====> LHCb v28r0 Step3
  LHCb Option Files:
    $STDOPTS/PoolCopy.opts
  ExtraPackages: 
BK Input Data Query:
    EventType = 30000000
    FileType = JPSI.DST
    ProductionID = 5600

BK Browsing Paths:
MC/MC09/Beam5TeV-VeloClosed-MagDown-Nu1/MC09-Stripping02/30000000/JPSI.DST
 
Changed:
<
<
The first Stripping of MC09 mbias data has been performed with the set of stripping selections included in Phys/StrippingSelections v1r6. This is what is included DaVinci v24r2p1.

-- JuanPalacios - 09-Oct-2009

>
>
-- JuanPalacios - 09-Oct-2009 -- PatrickSKoppenburg - 20-Nov-2009
  |*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="
"|

Revision 92009-11-20 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 13 to 13
 

Writing

Writing of DSTs is performed using the DSTWriter pattern. It uses the Stripping Framework behind the scened, and the StrippingConf configurable to provide a list of StrippingStreams. These are passed onto a DSTWriter, which prepares a self-contained GaudiSequencer that can then be passed to DaVinci(). There is one DST per stream, and it contains all the candidates of all the lines composing that stream. By convention, the candidates are placed in a partition '/Event/Strip'. It is possible to configure StrippingConf to run only one stream. It is also possible to use a sub-set of lines for each particular stream. This is achieved through the ActiveStreams and ActiveLines fields of StrippingConf respectively. %SYNTAX{ syntax="python"}%
Changed:
<
<
from Configurables import SelDSTWriter, StrippingConf, DaVinci
>
>
from Configurables import SelDSTWriter, DaVinci from StrippingConf.Configuration import StrippingConf

# import some official Stripping Selections from StrippingSelections import StreamBmuon, StreamHadron, StreamJpsi, StreamDstar

 
Changed:
<
<
sc = StrippingConf(ActiveStreams = ['Jpsi'], ActiveLines = ['JpsiInclusive'], OutputType = "DST")
>
>
sc = StrippingConf(Streams = [StreamBmuon.stream, StreamHadron.stream, StreamJpsi.stream, StreamDstar.stream] )
  dstWriter = SelDSTWriter("StripMC09DSTWriter", SelectionSequences = sc.activeStreams(),
Line: 138 to 145
  %SYNTAX{syntax="python"}% from StrippingConf.Configuration import StrippingConf
Changed:
<
<
sc = StrippingConf(ActiveStreams = [], ActiveLines = []) sc.__apply_configuration__()
>
>
# import some official Stripping Selections from StrippingSelections import StreamBmuon, StreamHadron, StreamJpsi, StreamDstar

sc = StrippingConf(Streams = [StreamBmuon.stream, StreamHadron.stream, StreamJpsi.stream, StreamDstar.stream] )

 streams = sc.activeStreams() lines = sc.activeLines() for stream in streams :
Line: 163 to 177
 

-- JuanPalacios - 09-Oct-2009

Added:
>
>
|*META PREFERENCE*|name="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" title="SYNTAXHIGHLIGHTINGPLUGIN_FORMAT_PREPEND" type="Set" value="
"|

Revision 62009-10-21 - GreigCowan

Line: 1 to 1
 

LHCb Stripping page

Line: 86 to 86
 

Make a DecayTreeTuple using the stripping candidates

%SYNTAX{syntax="python"}% from Gaudi.Configuration import *
Changed:
<
<
from Configurables import DaVinci, DecayTreeTuple
>
>
from Configurables import DaVinci, DecayTreeTuple, TupleToolTrigger

importOptions('$HLTCONFROOT/options/HltInit.py') from Configurables import HltDecReportsDecoder, HltSelReportsDecoder, HltVertexReportsDecoder DataOnDemandSvc().AlgMap["Hlt/DecReports"] = HltDecReportsDecoder(OutputLevel = 4) DataOnDemandSvc().AlgMap["Hlt/SelReports"] = HltSelReportsDecoder(OutputLevel = 4) DataOnDemandSvc().AlgMap["Hlt/VertexReports"] = HltVertexReportsDecoder( OutputLevel = 4)

 tuple = DecayTreeTuple('MyTuple') tuple.InputLocations = [ "/Event/Strip/Phys/Bd2DstarMu" ] tuple.ToolList += [ "TupleToolGeometry"
Line: 109 to 116
  ,"Bd" : "[B~0]cc : [B~0 -> (D*(2010)+ -> (D0 -> K- pi+) pi+) mu-]cc" }
Added:
>
>
tuple.addTool(TupleToolTrigger) tuple.TupleToolTrigger.VerboseL0 = True tuple.TupleToolTrigger.VerboseHlt1 = True tuple.TupleToolTrigger.VerboseHlt2 = True
 # DaVinci settings # from Configurables import DaVinci

Revision 52009-10-15 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 30 to 30
 This example will only run the 'JpsiInclusive' line of the 'Jpsi' stream. The result will be Test.Jpsi.dst. For more details, see the relevant Stripping Framework section

Reading

Changed:
<
<
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream. For this, we use elements from the Particle Selection Framework to build SelectionSequence.
>
>
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. However, since the stripping lines within a stream are run in OR mode, it is unavoidable that there will be events with no candidates in the desired location, and no container of secondary vertices. This catches the PhysDesktop out, so to protect agains these cases it is necessary to use Phys/DaVinciTools v19r2p1. The problem will be fixed in the DaVinci v24r4 release.

Run a selection on top of the stripping candidates

In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream. For this, we use elements from the Particle Selection Framework to build SelectionSequence.
 %SYNTAX{ syntax="python"}% # get classes to build the SelectionSequence from PhysSelPython.Wrappers import DataOnDemand, Selection, SelectionSequence
Line: 80 to 83
  The selection part of the example could've been put in a python module to make a selection, as explained in the Particle Selection framework and DaVinci Tutorial 4 pages. This example will be available as DaVinci/options/DaVinci-ReadStripDST.py from DaVinci v24r4 onwards.
Changed:
<
<
In the example above, one has to know the location of the candidate particles in the DST. It is possible to query StrippingConf to get the locations for a given configuration. In standard python,
>
>

Make a DecayTreeTuple using the stripping candidates

<!-- SyntaxHighlightingPlugin -->
from Gaudi.Configuration import *
from Configurables import  DaVinci, DecayTreeTuple
tuple = DecayTreeTuple('MyTuple')
tuple.InputLocations = [ "/Event/Strip/Phys/Bd2DstarMu" ]
tuple.ToolList +=  [  "TupleToolGeometry"
                    , "TupleToolKinematic"
                    , "TupleToolPrimaries"
                    , "TupleToolEventInfo"
                    , "TupleToolTrackInfo"
                    , "TupleToolPid"
                    , "TupleToolTrigger"
                    ,"LoKi::Hybrid::TupleTool/LoKiTool"
                    ]
tuple.Decay = "[B~0 -> (^D*(2010)+ -> (^D0 -> ^K- ^pi+) ^pi+) ^mu-]cc"
tuple.Branches = {
     "muon"  : "[B~0]cc  -> [(D*(2010)+ -> (D0 -> K- pi+) pi+) ^mu-]cc" 
    ,"Dstar" : "[B~0]cc  -> [(^D*(2010)+ -> (D0 -> K- pi+)  pi+) mu-]cc" 
    ,"slpi"  : "[B~0]cc  -> [(D*(2010)+  -> (D0 -> K- pi+) ^pi+) mu-]cc" 
    ,"D0"    : "[B~0]cc  -> [(D*(2010)+  -> (^D0 -> K- pi+) pi+) mu-]cc" 
    ,"pion"  : "[B~0]cc  -> [(D*(2010)+  -> (D0 -> K- ^pi+) pi+) mu-]cc" 
    ,"kaon"  : "[B~0]cc  -> [(D*(2010)+  -> (D0 -> ^K- pi+) pi+) mu-]cc" 
    ,"Bd"    : "[B~0]cc : [B~0 -> (D*(2010)+ -> (D0 -> K- pi+) pi+)  mu-]cc" 
     }

# DaVinci settings
#
from Configurables import DaVinci
DaVinci().EvtMax = -1
DaVinci().PrintFreq = 100
DaVinci().DataType = "MC09"
DaVinci().UserAlgorithms = [ tuple ]
DaVinci().TupleFile = "StripTuple.root"
DaVinci().InputType='DST'
DaVinci().Input   = [ .... ]
<!-- end SyntaxHighlightingPlugin -->

Finding TES locations of stripping candidates

In the examples above, one has to know the location of the candidate particles in the DST. It is possible to query StrippingConf to get the locations for a given configuration. In standard python,
  %SYNTAX{syntax="python"}% from StrippingConf.Configuration import StrippingConf

Revision 42009-10-15 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 30 to 30
 This example will only run the 'JpsiInclusive' line of the 'Jpsi' stream. The result will be Test.Jpsi.dst. For more details, see the relevant Stripping Framework section

Reading

Changed:
<
<
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream.
>
>
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream. For this, we use elements from the Particle Selection Framework to build SelectionSequence.
 %SYNTAX{ syntax="python"}%
Added:
>
>
# get classes to build the SelectionSequence from PhysSelPython.Wrappers import DataOnDemand, Selection, SelectionSequence
 # Get the J/Psi candidates from the DST. # Treat particles already on the DST as data-on-demand, but give the full path. JpsiSel = DataOnDemand(name = 'DOD_Bs',

Revision 32009-10-13 - unknown

Line: 1 to 1
 

LHCb Stripping page

Added:
>
>

Stripping Workflow

 

Stripping framework

Stripping DST

Line: 76 to 78
  The selection part of the example could've been put in a python module to make a selection, as explained in the Particle Selection framework and DaVinci Tutorial 4 pages. This example will be available as DaVinci/options/DaVinci-ReadStripDST.py from DaVinci v24r4 onwards.
Added:
>
>
In the example above, one has to know the location of the candidate particles in the DST. It is possible to query StrippingConf to get the locations for a given configuration. In standard python,

<!-- SyntaxHighlightingPlugin -->
from StrippingConf.Configuration import StrippingConf
sc = StrippingConf(ActiveStreams = [], ActiveLines = [])
sc.__apply_configuration__()
streams = sc.activeStreams()
lines = sc.activeLines()
for stream in streams :
   print stream.name(), "\t", stream.outputLocations()
for line in lines :
   print line.name(), "\t", line.outputLocation()
<!-- end SyntaxHighlightingPlugin -->

If we follow the convention that candidates are written to '/Event/Strip' then we can see how to get the location for each line's candidates.

 

MicroDST framework

Particle Selections Framework

Revision 22009-10-13 - unknown

Line: 1 to 1
 

LHCb Stripping page

Line: 6 to 6
 

Stripping framework

Stripping DST

Added:
>
>
The stripping DST contains the full DST, plus a MicroDST partition containing the full decay tree of the stripping line selected candidates. It also contains the necessary particle to primary vertex (PV) relations in order to guarantee that the same PV is used to apply further cuts and estimate PV-dependent quantities. If PV re-fitting has been used in the selection, the re-fitted PVs are also saved. The relations point to these.

 

Writing

Added:
>
>
Writing of DSTs is performed using the DSTWriter pattern. It uses the Stripping Framework behind the scened, and the StrippingConf configurable to provide a list of StrippingStreams. These are passed onto a DSTWriter, which prepares a self-contained GaudiSequencer that can then be passed to DaVinci(). There is one DST per stream, and it contains all the candidates of all the lines composing that stream. By convention, the candidates are placed in a partition '/Event/Strip'. It is possible to configure StrippingConf to run only one stream. It is also possible to use a sub-set of lines for each particular stream. This is achieved through the ActiveStreams and ActiveLines fields of StrippingConf respectively.
<!-- SyntaxHighlightingPlugin -->
from Configurables import SelDSTWriter, StrippingConf, DaVinci

sc = StrippingConf(ActiveStreams = ['Jpsi'], ActiveLines = ['JpsiInclusive'], OutputType = "DST")

dstWriter = SelDSTWriter("StripMC09DSTWriter",
                         SelectionSequences = sc.activeStreams(),
                         OutputPrefix = 'Strip',
                         OutputFileSuffix = 'Test'
                         )
dv = DaVinci()
dv.DataType = "MC09"                   # Default is "MC09"
dv.UserAlgorithms = [ dstWriter.sequence() ]
<!-- end SyntaxHighlightingPlugin -->

This example will only run the 'JpsiInclusive' line of the 'Jpsi' stream. The result will be Test.Jpsi.dst. For more details, see the relevant Stripping Framework section

 

Reading

Added:
>
>
Since the stripping DST contains a full DST as well as the candidate's full decay tree, it is very easy to run an analysis on top of it. All that is required is that the full TES location of the particles is specified t the relevant algorithms. In the example below, we run J/Psi filter on top of the candidates saved to a DST written using only the 'JpsiInclusive' line of the the 'Jpsi' stream.
<!-- SyntaxHighlightingPlugin -->
# Get the J/Psi candidates from the DST.
# Treat particles already on the DST as data-on-demand, but give the full path.
JpsiSel = DataOnDemand(name = 'DOD_Bs',
                       Location = "/Event/Strip/Phys/StrippingJpsiInclusiveCombine")
# Filter the J/Psi. Replace 'ALL' by some cuts.
from Configurables import FilterDesktop
_jpsiFilter = FilterDesktop('jpsiFilter', Code = 'ALL')

# make a Selection
JpsiFilterSel = Selection(name = 'JpsiFilterSel',
                          Algorithm = _jpsiFilter,
                          RequiredSelections = [JpsiSel] )

# build the SelectionSequence
JpsiSeq = SelectionSequence('SeqJpsi',
                            TopSelection = JpsiFilterSel)

# Configure DaVinci
dv=DaVinci()
dv.HistogramFile = "DVHistos_Strip.root"
dv.EvtMax=-1
dv.DataType="MC09"
dv.UserAlgorithms = [JpsiSeq.sequence()] # pass the GaudiSequencer to DaVinci()
dv.InputType='DST'
dv.Input   = ["DATAFILE='PFN:/castor/cern.ch/user/j/jpalac/StripDST/MC09/DaVinci
_v24r3p1/Sel.Jpsi.dst'  TYP='POOL_ROOTTREE' OPT='READ'" ]
<!-- end SyntaxHighlightingPlugin -->
We can add some histograms, as shown in DaVinci Tutorial 4:
<!-- SyntaxHighlightingPlugin -->
from Configurables import LoKi__Hybrid__PlotTool as PlotTool

_jpsiFilter.HistoProduce = True
_jpsiFilter.addTool( PlotTool("InputPlots") )
_jpsiFilter.InputPlots.Histos = { "P/1000"  : ('momentum',0,150) ,
                                  "PT/1000" : ('pt_%1%',0,5,750) ,
                                  "M"       : ('mass in MeV_%1%_%2%_%3%',2.8*Uni
ts.GeV,3.2*Units.GeV) }
_jpsiFilter.addTool( PlotTool("OutputPlots") )
_jpsiFilter.OutputPlots.Histos = { "P/1000"  : ('momentum',0,150) ,
                                   "PT/1000" : ('pt_%1%',0,5,750) ,
                                   "M"       : ('mass in MeV_%1%_%2%_%3%',2.8*Un
its.GeV,3.2*Units.GeV) }
<!-- end SyntaxHighlightingPlugin -->

The selection part of the example could've been put in a python module to make a selection, as explained in the Particle Selection framework and DaVinci Tutorial 4 pages. This example will be available as DaVinci/options/DaVinci-ReadStripDST.py from DaVinci v24r4 onwards.

 

MicroDST framework

 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback