PyLamarr
Pythonizations for the ultra-fast simulation option for the LHCb experiment
 
Loading...
Searching...
No Matches
IsMuonEfficiency.py
1from typing import Tuple, Optional, Union
2from dataclasses import dataclass
3
4from pydantic import validate_arguments, validator
5
6from PyLamarr import RemoteResource, Wrapper
7
8@validate_arguments
9@dataclass(frozen=True)
11 library: RemoteResource
12 symbol: str
13 output_table: str
14 abs_mcid: int
15 particle_table: Optional[str] = "MCParticles"
16 track_table: Optional[str] = "tmp_particles_recoed_as"
17 track_type: Optional[int] = 3
18 references: Optional[Tuple[str, ...]] = ( "mcparticle_id", )
19 output_columns: Optional[Tuple[str, ...]] = ( "IsMuonEff", )
20
21 def query(self):
22 return f"""
23 SELECT
24 p.mcparticle_id AS mcparticle_id,
25 norm2(p.px, p.py, p.pz) AS p,
26 pseudorapidity(p.px, p.py, p.pz) AS eta,
27 random_normal() * 10 + 100 as nTracks,
28 propagation_charge(p.pid) AS track_charge,
29 0 AS isMuon
30 FROM {self.particle_table} AS p
31 INNER JOIN {self.track_table} AS recguess
32 ON p.mcparticle_id = recguess.mcparticle_id
33 WHERE
34 recguess.track_type == {self.track_type}
35 AND
36 abs(p.pid) == {self.abs_mcid};
37 """
38
39 implements: str = "Plugin"
40 @property
41 def config(self):
42 return dict(
43 library_path=self.library,
44 function_name=self.symbol,
45 query=self.query(),
46 output_table=self.output_table,
47 outputs=self.output_columns,
48 references=self.references,
49 )
50
51
52
53