PyLamarr
Pythonizations for the ultra-fast simulation option for the LHCb experiment
 
Loading...
Searching...
No Matches
CovariancePostprocessing.py
1from typing import Tuple, Optional
2from dataclasses import dataclass
3from pydantic import validate_arguments
4from PyLamarr import RemoteResource
5from PyLamarr import Wrapper
6
7
8@validate_arguments
9@dataclass(frozen=True)
11 output_table: Optional[str] = "covariance"
12
13 output_columns: Optional[Tuple[str, ...]] = (
14 "mcparticle_id",
15 "cov00",
16 "cov01", "cov11",
17 "cov02", "cov12", "cov22",
18 "cov03", "cov13", "cov23", "cov33",
19 "cov04", "cov14", "cov24", "cov34", "cov44",
20 )
21
22 make_persistent: Optional[bool] = True
23
24 def query(self):
25 return """
26 WITH shortcut AS (
27 SELECT
28 mcparticle_id,
29 sqrt(exp(log_cov_ClosestToBeam_0_0)) AS sig0,
30 sqrt(exp(log_cov_ClosestToBeam_1_1)) AS sig1,
31 sqrt(exp(log_cov_ClosestToBeam_2_2)) AS sig2,
32 sqrt(exp(log_cov_ClosestToBeam_3_3)) AS sig3,
33 sqrt(exp(log_cov_ClosestToBeam_4_4)) AS sig4,
34 corr_ClosestToBeam_0_1 AS cor01,
35 corr_ClosestToBeam_0_2 AS cor02,
36 corr_ClosestToBeam_1_2 AS cor12,
37 corr_ClosestToBeam_0_3 AS cor03,
38 corr_ClosestToBeam_1_3 AS cor13,
39 corr_ClosestToBeam_2_3 AS cor23,
40 corr_ClosestToBeam_0_4 AS cor04,
41 corr_ClosestToBeam_1_4 AS cor14,
42 corr_ClosestToBeam_2_4 AS cor24,
43 corr_ClosestToBeam_3_4 AS cor34
44 FROM tmp_covariance_out
45 )
46 SELECT
47 mcparticle_id,
48 sig0 * sig0,
49 cor01 * sig0 * sig1,
50 sig1 * sig1,
51 cor02 * sig0 * sig2,
52 cor12 * sig1 * sig2,
53 sig2 * sig2,
54 cor03 * sig0 * sig3,
55 cor13 * sig1 * sig3,
56 cor23 * sig2 * sig3,
57 sig3 * sig3,
58 cor04 * sig0 * sig4,
59 cor14 * sig1 * sig4,
60 cor24 * sig2 * sig4,
61 cor34 * sig3 * sig4,
62 sig4 * sig4
63 FROM shortcut;
64 """
65
66 implements: str = "TemporaryTable"
67
68 @property
69 def config(self):
70 return dict(
71 output_table=self.output_table,
72 outputs=self.output_columns,
73 query=self.query(),
74 make_persistent=self.make_persistent,
75 )