PyLamarr
Pythonizations for the ultra-fast simulation option for the LHCb experiment
 
Loading...
Searching...
No Matches
Covariance.py
1from typing import Tuple, Optional
2from dataclasses import dataclass
3from pydantic import validate_arguments
4from PyLamarr import RemoteResource
5
6from ._defaults import default_lib_field
7from PyLamarr import Wrapper
8
9
10@validate_arguments
11@dataclass(frozen=True)
13 library: RemoteResource = default_lib_field
14 symbol: Optional[str] = "covariance"
15 output_table: Optional[str] = "tmp_covariance_out"
16 output_columns: Optional[Tuple[str, ...]] = (
17 "log_cov_ClosestToBeam_0_0",
18 "log_cov_ClosestToBeam_1_1",
19 "log_cov_ClosestToBeam_2_2",
20 "log_cov_ClosestToBeam_3_3",
21 "log_cov_ClosestToBeam_4_4",
22 "corr_ClosestToBeam_0_1",
23 "corr_ClosestToBeam_0_2",
24 "corr_ClosestToBeam_1_2",
25 "corr_ClosestToBeam_0_3",
26 "corr_ClosestToBeam_1_3",
27 "corr_ClosestToBeam_2_3",
28 "corr_ClosestToBeam_0_4",
29 "corr_ClosestToBeam_1_4",
30 "corr_ClosestToBeam_2_4",
31 "corr_ClosestToBeam_3_4"
32 )
33 n_random: Optional[int] = 128
34 references: Optional[Tuple[str, ...]] = ("mcparticle_id",)
35
36 def query(self):
37 return """
38 SELECT
39 p.mcparticle_id AS mcparticle_id,
40 ctb.x AS mc_x,
41 ctb.y AS mc_y,
42 ctb.z AS mc_z,
43 p.px/p.pz AS mc_tx,
44 p.py/p.pz AS mc_ty,
45 log(norm2(p.px, p.py, p.pz))/log(10.) AS mc_log10_p,
46 tmpres.chi2PerDoF AS chi2PerDoF,
47 tmpres.nDoF_f AS nDoF_f,
48 tmpres.ghostProb AS ghostProb,
49 abs(p.pid) == 11 AS mc_is_e,
50 abs(p.pid) == 13 AS mc_is_mu,
51 (abs(p.pid) = 211 OR abs(p.pid) = 321 OR abs(p.pid) = 2212) AS is_h,
52 (recguess.track_type == 3) AS is_long,
53 (recguess.track_type == 4) AS is_upstream,
54 (recguess.track_type == 5) AS is_downstream
55 FROM MCParticles AS p
56 INNER JOIN MCVertices AS ov ON p.production_vertex = ov.mcvertex_id
57 INNER JOIN tmp_particles_recoed_as AS recguess
58 ON p.mcparticle_id = recguess.mcparticle_id
59 INNER JOIN tmp_resolution_out AS tmpres
60 ON p.mcparticle_id = tmpres.mcparticle_id
61 INNER JOIN tmp_closest_to_beam AS ctb
62 ON p.mcparticle_id = ctb.mcparticle_id
63 WHERE
64 recguess.track_type IN (3, 4, 5)
65 """
66
67 implements: str = "GenerativePlugin"
68
69 @property
70 def config(self):
71 return dict(
72 library_path=self.library,
73 function_name=self.symbol,
74 query=self.query(),
75 output_table=self.output_table,
76 outputs=self.output_columns,
77 nRandom=self.n_random,
78 references=self.references
79 )