LHADA studies: format, parsers, implementation examples
To move forward with the idea of an Analysis Description Accord as put forth in sections 16+17 of
arXiv:1605.02684
, we are in strong need of a proof of principle, that is a working example comprising an example analysis and a
parser that translates a LHADA file into code that can be run by an analysis framework, be it collaboration software or some of the public
RecastingTools.
People working on this
Sezen Sekmen, Daniel Schmeier, Nishita Desai, Suchita Kulkarni, Harrison Prosper, Gokhan Unel, Wolfgang Waltenberger
Please contact Sezen (
ssekmen@cernNOSPAMPLEASE.ch) if you are interested in joining the effort.
Working group meetings
Parser development
Developements will be available in the github repository
LHADAparser
.
A very preliminary version of a c++ parser prototype has been developed by G. Unel (to be uploaded to github soon). Work ongoing.
Object definition
An object (particle or jet) have a list a properties which can be used in the cut statement, additional properties can be defined in the LHADA file. In the LHADAPaticule class each property is accessible from a method named after the property, e.g. property
pt
will be accessed by the method
pt()
.
For functions provided in C++, Particle/Jet collections are passed to user function (see
apply
statement of
object
block) as
std::vector<LHAParticle*>
.
Standard properties
Definition of an extra property
In addition to the above standard properties, additional properties can be added to an object. It is defined in the LHADA
object
block with a statement starting with the
property
keyword followed by the property name.
Example:
object electron
take external
property isolation
In function codes, the property isolation will be accessed by
LHADAParticle::isolation()
.
Single object and collection
In addition to collection of objects, defined in the
object
block in the current format, single object, like missing E_T, and single scalar like H_T are typically needed in an analysis.
Proposal:
- The
object
block will corresponds to a single object
- Collection of objects are defined with a
collection
block (previously called object
)
- Single scalar are defined with a block called
variable
which includes a statement apply
to specify the function that calculates the variable. Example
variable HT
apply HT(jets=jets)
object ETMISS
take exernal
collection jets
take particles
apply antikt(dR=0.4, ptmin=20, etamax=2.5)
A variable can be a list of values instead of a single value. In such case the list of values is defined with the
attribute
keyword, one line per variable. The function specified in the
apply
statement must return a vector of values sorted in the order of the attribute lines.
Example:
variable Razor
attribute MR
attribute M2
apply function(...)
Note: an alternative proposal that has been discussed is to use the same keyword,
object
, for both collection of objects and single object. The two can be distinguished from the context: function of the
apply
statement returning either an object or a vector of objects and absence or presence of an index when the entity is used in the
cut
block (e.g.
jet[2].pt > 100 and etmis > 50
). This option will be reconsidered once we have more experience and feedback from the above option.
Object identification
Proposal: adding an uid line in the object block to identify the type of object.
object truth_e
take external
uid hepmc_id
object reco_e
take truth_e
apply reconstruct
uid recoelectrons_ATLAS8TEV
object signal_e_loose
take reco_e
apply looseid
uid ATLAS8TEV_loose
Example analysis
to be done
Further information
Those interested in developing the proposed LHADA format further will meet on 16-18 November 2016 at CERN. For details see:
https://indico.cern.ch/event/572170/overview
--
SuchitaKulkarni - 2016-09-26