ATLAS Offline Software
Loading...
Searching...
No Matches
main_output.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3 */
4
5#ifndef GLOBALSIM_MAINOUTPUTTYPE_H
6#define GLOBALSIM_MAINOUTPUTTYPE_H
7
8#include "BitSpec.h"
9#include "Object.h"
10
11namespace GlobalSim {
12 //This is a dumb name for something only used for jets...
13 class main_output_type : public BitSpec<main_output_type, 128> {
14
15 // Example of a custom encoding/decoding for one of the bitfields
16 static constexpr float s_ET_UNIT = 0.25f; // suppose 0.25 GeV per count
17 static std::bitset<13> et_encoder(float value) {
18 return static_cast<unsigned long long>(value / s_ET_UNIT);
19 }
20 static float et_decoder(std::bitset<13> bits) {
21 return (bits.to_ullong() * s_ET_UNIT);
22 }
23
24 public:
25 // syntax is:
26 // BitField<Lo,Hi, AuxType [, ValueType=AuxType]> name{"name","auxvar", "description" [, encoder, decoder]}
27 // auxvar can optionally include bitpacking-specifiers, in form of either auxvar[i] or auxvar[a:b]
28 // this will map the bitfield into subbits of the auxvar. AuxType will need to be an integral type,
29 // e.g. you cannot use bitpacking-specifiers on AuxType=float fields
30 static inline const BitField<0, 12, float> ptt{"ptt","et", "Transverse energy", et_encoder, et_decoder};
31 static inline const BitField<13, 22, float> eta{"eta","eta", "Eta coordinate"};
32 static inline const BitField<23, 31, float> phi{"phi","phi", "Phi coordinate"};
33 static inline const BitField<32, 32, uint8_t, bool> flag_et_overflow{"flag_et_overflow","flags[0]", "flag description placeholder"};
34 static inline const BitField<33, 33, uint8_t, bool> flag_error{"flag_error","flags[1]", "flag description placeholder"};
35 static inline const BitField<34, 34, uint8_t, bool> flag_next_tob_same_et{"flag_next_tob_same_et","flags[2]", "flag description placeholder"};
36 static inline const BitField<35, 35, uint8_t, bool> flag_truncate{"flag_truncate","flags[3]", "flag description"};
37 static inline const BitField<36, 38, uint8_t> ring_four_tobs{"ring_four_tobs","ring_four_tobs", "Number of TOBs in the fourth ring"};
38 static inline const BitField<39, 43, uint8_t> ring_three_tobs{"ring_three_tobs","ring_three_tobs", "Number of TOBs in the third ring"};
39 static inline const BitField<44, 48, uint8_t> ring_two_tobs{"ring_two_tobs","ring_two_tobs", "Number of TOBs in the second ring"};
40 static inline const BitField<49, 52, uint8_t> ring_one_tobs{"ring_one_tobs","ring_one_tobs", "Number of TOBs in the first ring"};
41 static inline const BitField<53, 58, uint8_t> total_tobs{"total_tobs","total_tobs", "Number of TOBs in the jet"};
42 static inline const BitField<59, 70, uint16_t> ring_four_ptt{"ring_four_ptt","ring_four_ptt", "Energy in the fourth ring"};
43 static inline const BitField<71, 85, uint16_t> ring_three_ptt{"ring_three_ptt","ring_three_ptt", "Energy in the third ring"};
44 static inline const BitField<86, 100, uint16_t> ring_two_ptt{"ring_two_ptt","ring_two_ptt", "Energy in the second ring"};
45 static inline const BitField<101, 115, uint16_t> ring_one_ptt{"ring_one_ptt","ring_one_ptt", "Energy in the first ring"};
46 static inline const BitField<116, 127, uint16_t> ring_zero_ptt{"ring_zero_ptt","ring_zero_ptt", "Energy in the zeroth ring"};
47
51
52 };
53
54}
55
56#endif
static std::bitset< 13 > et_encoder(float value)
Definition main_output.h:17
static const BitField< 0, 12, float > ptt
Definition main_output.h:30
static const BitField< 101, 115, uint16_t > ring_one_ptt
Definition main_output.h:45
static const BitField< 39, 43, uint8_t > ring_three_tobs
Definition main_output.h:38
static const BitField< 59, 70, uint16_t > ring_four_ptt
Definition main_output.h:42
static const BitField< 34, 34, uint8_t, bool > flag_next_tob_same_et
Definition main_output.h:35
static const BitField< 53, 58, uint8_t > total_tobs
Definition main_output.h:41
static const BitField< 33, 33, uint8_t, bool > flag_error
Definition main_output.h:34
DECLARE_FIELDS(ptt, eta, phi, flag_et_overflow, flag_error, flag_next_tob_same_et, flag_truncate, ring_four_tobs, ring_three_tobs, ring_two_tobs, ring_one_tobs, total_tobs, ring_four_ptt, ring_three_ptt, ring_two_ptt, ring_one_ptt, ring_zero_ptt)
static const BitField< 116, 127, uint16_t > ring_zero_ptt
Definition main_output.h:46
static const BitField< 13, 22, float > eta
Definition main_output.h:31
static constexpr float s_ET_UNIT
Definition main_output.h:16
static float et_decoder(std::bitset< 13 > bits)
Definition main_output.h:20
static const BitField< 44, 48, uint8_t > ring_two_tobs
Definition main_output.h:39
static const BitField< 71, 85, uint16_t > ring_three_ptt
Definition main_output.h:43
static const BitField< 49, 52, uint8_t > ring_one_tobs
Definition main_output.h:40
static const BitField< 36, 38, uint8_t > ring_four_tobs
Definition main_output.h:37
static const BitField< 32, 32, uint8_t, bool > flag_et_overflow
Definition main_output.h:33
static const BitField< 86, 100, uint16_t > ring_two_ptt
Definition main_output.h:44
static const BitField< 23, 31, float > phi
Definition main_output.h:32
static const BitField< 35, 35, uint8_t, bool > flag_truncate
Definition main_output.h:36
AlgTool to read in LArStripNeighborhoods, and run the BDT Algorithm.
Definition BitSpec.h:23