PyLamarr
Pythonizations for the ultra-fast simulation option for the LHCb experiment
 
Loading...
Searching...
No Matches
Efficiency.py
1from typing import Tuple, Optional
2from dataclasses import dataclass
3from PyLamarr import RemoteResource, Wrapper
4
5from pydantic import validate_arguments
6
7from ._defaults import default_lib_field
8
9
10@validate_arguments
11@dataclass(frozen=True)
13 library: RemoteResource = default_lib_field
14 symbol: str = "efficiency"
15 output_table: str = "tmp_efficiency_out"
16 output_columns: Tuple[str, ...] = (
17 "not_recoed", "long", "upstream", "downstream"
18 )
19 references: Tuple[str, ...] = ("mcparticle_id",)
20
21 def query(self):
22 return """
23 SELECT
24 mcparticle_id,
25 ov.x AS mc_x,
26 ov.y AS mc_y,
27 ov.z AS mc_z,
28 log(norm2(p.px, p.py, p.pz))/log(10.) AS mc_log10_p,
29 p.px/p.pz AS mc_tx,
30 p.py/p.pz AS mc_ty,
31 pseudorapidity(p.px, p.py, p.pz) AS mc_eta,
32 azimuthal(p.px, p.py, p.pz) AS mc_phi,
33 abs(p.pid) == 11 AS mc_is_e,
34 abs(p.pid) == 13 AS mc_is_mu,
35 (
36 abs(p.pid) == 211 OR abs(p.pid) == 321 OR abs(p.pid) == 2212
37 ) AS mc_is_h,
38 propagation_charge(p.pid) AS mc_charge
39 FROM MCParticles AS p
40 INNER JOIN MCVertices AS ov ON p.production_vertex = ov.mcvertex_id
41 WHERE
42 p.pz > 1.
43 AND
44 propagation_charge(p.pid) <> 0.
45 """
46
47 implements: str = "Plugin"
48
49 @property
50 def config(self):
51 return dict(
52 library_path=self.library,
53 function_name=self.symbol,
54 query=self.query(),
55 output_table=self.output_table,
56 outputs=self.output_columns,
57 references=self.references,
58 )