ATLAS Offline Software
FPGATrackSimTypes.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGFPGATrackSimOBJECTS_FPGATrackSimTYPES_H
6 #define TRIGFPGATrackSimOBJECTS_FPGATrackSimTYPES_H
7 
8 #include <iostream>
9 #include <cmath>
10 #include <array>
11 #include <cstdint>
12 
13 #define MODULE_BADMODULE -1
14 #define SECTOR_NOTFOUND -1
15 #define FITTRACKS_OK 0
16 #define FITTRACKS_BAD -1
17 
18 
19 typedef int32_t pid_t; // pattern id
20 typedef int32_t module_t; // module id
21 typedef int32_t sector_t; // sector number
22 typedef uint32_t layer_bitmask_t; // bitmask that stores at least as many bits as layers
23 
24 //To label the origin of FPGATrackSimHits
26 
27 //The detector zone that the FPGATrackSimHit was in
29 
30 // Enum to hold the different types of hits in FPGATrackSimOfflineHit
32 
33 // An Enum to hold the stage of the track
34 enum class TrackStage { FIRST, SECOND };
35 
36 // Enum to hold the type of correction for hits on track
37 enum class TrackCorrType { None = 0, First = 1, Second = 2 };
38 
39 // Enum to hold type of sample (for truth cuts)
40 enum class SampleType { skipTruth, singleElectrons=11, singleMuons=13, singlePions=211, LLPs=1000 };
41 
42 std::ostream& operator<<(std::ostream& os, SiliconTech t);
43 std::ostream& operator<<(std::ostream& os, DetectorZone t);
44 
45 // Calculate euclidean norm
46 inline double eucnorm(double x, double y, double z)
47 {
48  return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
49 }
50 
51 // Calculate opening angle between two vectors in euclidean space
52 inline double eucangle(double x, double y, double z, double u, double v, double w)
53 {
54  return acos((x * u + y * v + z * w) / (eucnorm(x, y, z) * eucnorm(u, v, w)));
55 }
56 
57 
58 #endif
operator<<
std::ostream & operator<<(std::ostream &os, SiliconTech t)
Definition: FPGATrackSimTypes.cxx:6
OfflineHitType::Hole
@ Hole
pid_t
int32_t pid_t
Definition: FPGATrackSimTypes.h:19
SampleType::LLPs
@ LLPs
SiliconTech::strip
@ strip
OfflineHitType::InertMaterial
@ InertMaterial
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
DetectorZone::posEndcap
@ posEndcap
OfflineHitType::BremPoint
@ BremPoint
OfflineHitType::Other
@ Other
OfflineHitType::Measurement
@ Measurement
TrackCorrType::Second
@ Second
DetectorZone::nZones
@ nZones
SampleType::singleElectrons
@ singleElectrons
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
x
#define x
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
HitType::undefined
@ undefined
TrackStage
TrackStage
Definition: FPGATrackSimTypes.h:34
OfflineHitType::Perigee
@ Perigee
module_t
int32_t module_t
Definition: FPGATrackSimTypes.h:20
SiliconTech
SiliconTech
Definition: FPGATrackSimTypes.h:25
z
#define z
TrackStage::FIRST
@ FIRST
SiliconTech::nTechs
@ nTechs
TrackStage::SECOND
@ SECOND
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
sector_t
int32_t sector_t
Definition: FPGATrackSimTypes.h:21
SampleType::skipTruth
@ skipTruth
OfflineHitType
OfflineHitType
Definition: FPGATrackSimTypes.h:31
TrackCorrType::None
@ None
TrackCorrType::First
@ First
python.PyAthena.v
v
Definition: PyAthena.py:154
DetectorZone::negEndcap
@ negEndcap
DetectorZone
DetectorZone
Definition: FPGATrackSimTypes.h:28
y
#define y
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
DetectorZone::barrel
@ barrel
OfflineHitType::Scatterer
@ Scatterer
TrackCorrType
TrackCorrType
Definition: FPGATrackSimTypes.h:37
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
SampleType::singlePions
@ singlePions
OfflineHitType::Outlier
@ Outlier
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
SampleType::singleMuons
@ singleMuons
eucnorm
double eucnorm(double x, double y, double z)
Definition: FPGATrackSimTypes.h:46
SampleType
SampleType
Definition: FPGATrackSimTypes.h:40
SiliconTech::pixel
@ pixel
eucangle
double eucangle(double x, double y, double z, double u, double v, double w)
Definition: FPGATrackSimTypes.h:52