PyLamarr
Pythonizations for the ultra-fast simulation option for the LHCb experiment
 
Loading...
Searching...
No Matches
Resolution.py
1from typing import Tuple, Optional
2from dataclasses import dataclass
3from pydantic import validate_arguments
4from PyLamarr import RemoteResource, Wrapper
5
6from ._defaults import default_lib_field
7
8
9@validate_arguments
10@dataclass(frozen=True)
12 library: RemoteResource = default_lib_field
13 symbol: Optional[str] = "resolution"
14 output_table: Optional[str] = "tmp_resolution_out"
15 output_columns: Optional[Tuple[str, ...]] = (
16 "dx", "dy", "dz", "dtx", "dty", "dp",
17 "chi2PerDoF", "nDoF_f", "ghostProb"
18 )
19 n_random: int = 128
20 references: Optional[Tuple[str, ...]] = ("mcparticle_id",)
21
22 def query(self):
23 return """
24 SELECT
25 p.mcparticle_id,
26 ctb.x AS mc_x,
27 ctb.y AS mc_y,
28 ctb.z AS mc_z,
29 p.px/p.pz AS mc_tx,
30 p.py/p.pz AS mc_ty,
31 log(norm2(p.px, p.py, p.pz))/log(10.) AS mc_log10_p,
32 abs(p.pid) == 11 AS mc_is_e,
33 abs(p.pid) == 13 AS mc_is_mu,
34 (abs(p.pid) = 211 OR abs(p.pid) = 321 OR abs(p.pid) = 2212) AS is_h,
35 (recguess.track_type == 3) AS is_long,
36 (recguess.track_type == 4) AS is_upstream,
37 (recguess.track_type == 5) AS is_downstream
38 FROM MCParticles AS p
39 INNER JOIN MCVertices AS ov ON p.production_vertex = ov.mcvertex_id
40 INNER JOIN tmp_particles_recoed_as AS recguess
41 ON p.mcparticle_id = recguess.mcparticle_id
42 INNER JOIN tmp_closest_to_beam AS ctb
43 ON p.mcparticle_id = ctb.mcparticle_id
44 WHERE
45 recguess.track_type IN (3, 4, 5);
46 """
47
48 implements: str = "GenerativePlugin"
49
50 @property
51 def config(self):
52 return dict(
53 library_path=self.library,
54 function_name=self.symbol,
55 query=self.query(),
56 output_table=self.output_table,
57 outputs=self.output_columns,
58 nRandom=self.n_random,
59 references=self.references,
60 )