5. Common Handler Parameters¶
This page covers parameters that are somewhat common for many handlers (including generic ones).
5.1. applyTo
– select a detector¶
Many handlers that deal with certain entities within event’s collections offer
an applyTo
parameter that expects a string argument – a special logical
expression that defines whether handler must be applied.
Considered collections are usually SADC or APV hits, clusters, track points,
etc. What collection is considered by handler is usually clear from handler’s
function (for instance, SADCSubtractPedestals
operates with collection of
SADCHit
).
A syntax of logical expression used is pretty close to C/C++: one may use
!=
, &&
, ||
, !
for logical expression, round brackets to
prioritize operations and exploit some “variables”:
kin
is set to current lement’s detector type (e.g.MM
,GM
,ECAL
,HCAL
, etc)number
is set to station number and may be compared with integer.
There are also variables that will be defined for elements of certain type:
projection
is defined for APV detectors only, when hits or clusters are considered. Can be compared withX
,Y
,U
,V
xIdx
,yIdx
are defined only for SADC hits.
There are also additional variables that rarely needed – you may list them
with -l,--list
option of na64sw-pipe
in “detector-id-definitions”
paragraph.
With this simplistic expressions one may gain surprisingly flexible functionality. For instance:
applyTo: kin == GM
will make handler to be applied only to GEMsapplyTo: kin == HCAL && number == 2
will apply handler to second HCAL moduleapplyTo: kin == MM && X == projection
will make handler to treat only X plane of all the micromegasapplyTo: GM == kin && (number == 3 || projection != Y)
will apply handler to all non-X GEMplanes except for 3rd station.
You may find a more complete reference on this domain specific language at the page dedicated to Detectors naming (advanced topic).
5.2. path
, histName
and variations¶
For most of the handlers that create objects in ROOT’s TFile
a following
set of parameters can be found usually:
An object path that defines where the object is created in the hierarchy of
TDirectory
’ies. It is often defined as a template string – with placeholders in curly brackets, like{kin}/{number}/{hstName}
The path usually refers to a
TObject
’s name created (so, the last token of this path is in fact aTObject
name). For plotting handlers this path sometimes contains a{hist}
that refers to auxiliaryhistName: ...
YAML parameter.desc: ...
YAML parameter is another string template commonly found forTObject
-creating handlers. This parameter is used to provide input todescription
string of various plots where one can specify the title and axes labels.
Full list of placeholders available for string interpolation
within path
/desc
parameters can be found in reference
of append_subst_dict_for()
.
5.3. Examples of common parameters usage¶
Following examples show various usage scenarios of the common parameters described above in different handlers. Some of these handlers we did not cover in this tutorial yet, but it shall be possible to get the grasp so far:
1D histogram applied to beam counters only (
S
orT
) depicting linear SADC waveform sum by path likesums/S2/linear-sum
- _type: Histogram1D applyTo: "kin == S || kin == T" value: sadcHits.rawData.sum histName: "linear-sum" histDescr: "Linear waveform sum, {TBName}; sum, sample no ; samples" path: "sums/{kin}{statNum}/{hist}" nBins: 100 range: [0, 25000]
Sometimes
applyTo: ...
is anticipated for various analytic handlers. For instance, size requirement for clustering procedure differs for X and Y planes of MMs because of different distance from the galvanic mesh within a detector station. This way one can specify same handler twice, independently for X and Y projections:- _type: APVFindClusters applyTo: "kin == MM && projection == X" minWidth: 3 minCharge: 100 sparseness: 0 - _type: APVFindClusters applyTo: "kin == MM && projection == Y" minWidth: 5 minCharge: 100 sparseness: 0
Cross-typed generic handlers, like
BiHitHistogr_Calo_Calo
requires hit-selection criterion to pick up certain hit(s) from the collections. For that purposeapplyTo: ...
can be used as well:- _type: BiHitHistogram_Calo_Calo histName: ECAL-vs-HCAL histDescr: "ECAL edep vs HCAL edep ; ECAL, GeV ; HCAL, GeV" applyToX: "kin == ECAL" valueX: eDep nBinsX: 150 rangeX: [0, 150] applyToY: "kin == HCAL" valueY: eDep nBinsY: 150 rangeY: [0, 150]
This handler produces famous NA64’s ECAL/HCAL biplot.
Starting from 2018, NA64 often uses fourth module of HCAL as veto hadronic calorimeter. The calorimeter hits (instances of
CaloHit
) are build up from set ofSADCHit
according to certain rules byMakeCaloHit
handler. One may restrict HCAL hit composition withapplyTo: ...
like follows:- _type: MakeCaloHit applyTo: "kin == HCAL && number < 3" detectors: [HCAL]