1#[derive(Copy, Clone, Default, Eq, PartialEq, Hash, Debug)]
2#[allow(non_camel_case_types)]
3pub enum DetectorSystem {
4 #[default]
5 NULL,
6 CDC,
7 FDC,
8 BCAL,
9 TOF,
10 CHERENKOV,
11 FCAL,
12 UPV,
13 TAGM,
14 START,
15 DIRC,
16 CCAL,
17 CCAL_REF,
18 ECAL,
19 ECAL_REF,
20 TAGH,
21 RF,
22 PS,
23 PSC,
24 FMWPC,
25 TPOL,
26 TAC,
27 TRD,
28 CTOF,
29 HELI,
30 ECAL_FCAL,
31}
32
33impl std::fmt::Display for DetectorSystem {
34 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
35 write!(
36 f,
37 "{}",
38 match self {
39 Self::NULL => "NULL_DETECTOR",
40 Self::CDC => "CDC",
41 Self::FDC => "FDC",
42 Self::BCAL => "BCAL",
43 Self::TOF => "TOF",
44 Self::CHERENKOV => "Cherenkov",
45 Self::FCAL => "FCAL",
46 Self::UPV => "UPV",
47 Self::TAGM => "TAGM",
48 Self::START => "ST",
49 Self::DIRC => "DIRC",
50 Self::CCAL => "CCAL",
51 Self::CCAL_REF => "CCAL_REF",
52 Self::ECAL => "ECAL",
53 Self::ECAL_REF => "ECAL_REF",
54 Self::TAGH => "TAGH",
55 Self::RF => "RF",
56 Self::PS => "PS",
57 Self::PSC => "PSC",
58 Self::FMWPC => "FMWPC",
59 Self::TPOL => "TPOL",
60 Self::TAC => "TAC",
61 Self::TRD => "TRD",
62 Self::CTOF => "CTOF",
63 Self::HELI => "HELI",
64 Self::ECAL_FCAL => "ECAL+FCAL",
65 }
66 )
67 }
68}
69
70impl DetectorSystem {
71 #[allow(clippy::match_str_case_mismatch)]
72 pub fn from_string(s: &str) -> Self {
73 match s.to_uppercase().as_str() {
74 "CDC" => Self::CDC,
75 "FDC" => Self::FDC,
76 "BCAL" => Self::BCAL,
77 "TOF" => Self::TOF,
78 "Cherenkov" => Self::CHERENKOV,
79 "FCAL" => Self::FCAL,
80 "UPV" => Self::UPV,
81 "TAGM" => Self::TAGM,
82 "START" | "ST" | "SC" => Self::START,
83 "DIRC" => Self::DIRC,
84 "CCAL" => Self::CCAL,
85 "CCAL_REF" => Self::CCAL_REF,
86 "ECAL" => Self::ECAL,
87 "ECAL_REF" => Self::ECAL_REF,
88 "TAGH" => Self::TAGH,
89 "RF" => Self::RF,
90 "PS" => Self::PS,
91 "PSC" => Self::PSC,
92 "FMWPC" => Self::FMWPC,
93 "TPOL" => Self::TPOL,
94 "TAC" => Self::TAC,
95 "TRD" => Self::TRD,
96 "CTOF" => Self::CTOF,
97 "HELI" => Self::HELI,
98 "ECAL+FCAL" => Self::ECAL_FCAL,
99 _ => Self::NULL,
100 }
101 }
102}