ATLAS Offline Software
Loading...
Searching...
No Matches
HitInfo.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRT_CALIBDATA__HITINFO_H
6#define TRT_CALIBDATA__HITINFO_H
7/********************************************************************
8
9NAME: TRT::Hit
10PACKAGE: TRT_AlignData
11
12AUTHORS: Jorgen Beck Hansen
13CREATED: December 2005
14
15PURPOSE: "messenger"-class for hit information used inside
16 TRT Alignment
17
18********************************************************************/
19
20// INCLUDES:
21
22#include <vector>
24#include "CLHEP/Matrix/SymMatrix.h"
25#include "CLHEP/Matrix/Vector.h"
26#include <CLHEP/Matrix/Matrix.h>
27
28namespace InDet
29{
31}
32
33namespace TRT{
34 namespace Hit {
35 // Declare indices
55 // Declare names
56 const std::string floatVariableName[TNOFV]={
57 "globalR",
58 "globalPhi",
59 "globalZ",
60 "signedDriftRadius",
61 "errorSignedDriftRadius",
62 "t0",
63 "driftTime",
64 "HTLevel",
65 "TimeoverThreshold",
66 "positionOnWire",
67 "errorPositionOnWire",
68 "trackDriftRadius",
69 "errorTrackDriftRadius",
70 "driftVelocity",
71 "trackDriftTime",
72 "trackT0"
73 };
74
75 // Declare indices
77 ident = 0,
85 TNOIV // always leave as last enum and DON*T change
86 };
87 // Declare names
88 const std::string intVariableName[TNOIV]={
89 "ident",
90 "detector",
91 "layer",
92 "phiModule",
93 "strawLayer",
94 "straw",
95 "side",
96 "driftTimeStatus"
97 };
98 }
99
100 class HitInfo {
101 public:
102 // Constructors
103 HitInfo() : m_Ints(Hit::TNOIV),m_Floats(Hit::TNOFV) {}
104 HitInfo(const HitInfo& orig)= default;
105 HitInfo(HitInfo&& orig) noexcept = default;
106 //assignment
107 HitInfo & operator=(const HitInfo & other)=default;
108 HitInfo & operator=(HitInfo && other) noexcept =default;
109 // Destructor
110 ~HitInfo()=default;
111 // Access
112 const int& operator[](const Hit::IntVariables& theIndex) const {return m_Ints[theIndex];}
113 const float& operator[](const Hit::FloatVariables& theIndex) const {return m_Floats[theIndex];}
114 // Set/modify
115 int& operator[](const Hit::IntVariables& theIndex) {return m_Ints[theIndex];}
116 float& operator[](const Hit::FloatVariables& theIndex) {return m_Floats[theIndex];}
117
118 // methods
120// float driftTime() const { return operator[](Hit::driftTime) - operator[](Hit::t0) - operator[](Hit::trackT0); }
122 float rawTime() const { return operator[](Hit::driftTime) ;}
123 float timeResidual() const { return driftTime() - trkDriftTime() ; }
125 float trkVariance() const { float tmp = operator[](Hit::errorTrackDriftRadius) ; return tmp*tmp ; }
126 float trkDistance() const { return operator[](Hit::trackDriftRadius) ; }
127 float trkDriftTime() const { return operator[](Hit::trackDriftTime) ; }
128 float trkT0() const { return operator[](Hit::trackT0) ; }
129 float driftVelocity() const { return operator[](Hit::driftVelocity) ; }
130 float residualVariance() const {
131 float tmp = operator[](Hit::errorSignedDriftRadius); return trkVariance() + tmp*tmp ; }
132 float residualPull() const { return residual()/sqrt(residualVariance()) ; }
133 float chiSquare() const { double tmp = residual() ; return tmp*tmp/residualVariance() ; }
134 float phiResidual() const { return residual()/operator[](Hit::globalR) ; }
135 float t0() const { return operator[](Hit::t0) ; }
136
137 Identifier strawId(const TRT_ID& trtid) const {
138 // this method should not be inligned because it introduces a dependency
139 return trtid.straw_id(operator[](TRT::Hit::detector), operator[](TRT::Hit::phiModule),
140 operator[](TRT::Hit::layer),operator[](TRT::Hit::strawLayer),operator[](TRT::Hit::straw)); }
141
142 Identifier moduleId(const TRT_ID& trtid) const {
143 // this method should not be inligned because it introduces a dependency
144 return trtid.module_id(operator[](TRT::Hit::detector), operator[](TRT::Hit::phiModule),operator[](TRT::Hit::layer)) ; }
145
146 Identifier ident() const { return Identifier(operator[](TRT::Hit::ident)) ; }
147
149 float HighLevelThreshold() const { return operator[](Hit::HTLevel) ; }
151 private:
152 std::vector<int> m_Ints;
153 std::vector<float> m_Floats;
154 };
155}
156
157#endif //TRT_CALIBDATA__HITINFO_H
This is an Identifier helper class for the TRT subdetector.
Represents 'corrected' measurements from the TRT (for example, corrected for wire sag).
float trkVariance() const
Definition HitInfo.h:125
float timeOverThreshold() const
Definition HitInfo.h:150
const int & operator[](const Hit::IntVariables &theIndex) const
Definition HitInfo.h:112
float HighLevelThreshold() const
Definition HitInfo.h:149
float trkDriftTime() const
Definition HitInfo.h:127
HitInfo(const HitInfo &orig)=default
float residual() const
Definition HitInfo.h:124
~HitInfo()=default
HitInfo & operator=(const HitInfo &other)=default
const float & operator[](const Hit::FloatVariables &theIndex) const
Definition HitInfo.h:113
HitInfo(HitInfo &&orig) noexcept=default
Identifier moduleId(const TRT_ID &trtid) const
Definition HitInfo.h:142
std::vector< float > m_Floats
Definition HitInfo.h:153
float & operator[](const Hit::FloatVariables &theIndex)
Definition HitInfo.h:116
Identifier ident() const
Definition HitInfo.h:146
float chiSquare() const
Definition HitInfo.h:133
std::vector< int > m_Ints
Definition HitInfo.h:152
float timeResidual() const
Definition HitInfo.h:123
bool hasValidDriftTime() const
Definition HitInfo.h:148
float trkT0() const
Definition HitInfo.h:128
float rawTime() const
Definition HitInfo.h:122
float phiResidual() const
Definition HitInfo.h:134
Identifier strawId(const TRT_ID &trtid) const
Definition HitInfo.h:137
float residualVariance() const
Definition HitInfo.h:130
float driftRadius() const
Definition HitInfo.h:121
float trkDistance() const
Definition HitInfo.h:126
int & operator[](const Hit::IntVariables &theIndex)
Definition HitInfo.h:115
float t0() const
Definition HitInfo.h:135
float residualPull() const
Definition HitInfo.h:132
HitInfo & operator=(HitInfo &&other) noexcept=default
float driftVelocity() const
Definition HitInfo.h:129
float driftTime() const
Definition HitInfo.h:119
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition TRT_ID.h:575
Identifier module_id(int barrel_ec, int phi_module, int layer_or_wheel) const
For an individual module phi sector.
Definition TRT_ID.h:442
Primary Vertex Finder.
IntVariables
Definition HitInfo.h:76
@ layer
Definition HitInfo.h:79
@ strawLayer
Definition HitInfo.h:81
@ phiModule
Definition HitInfo.h:80
@ ident
Definition HitInfo.h:77
@ driftTimeStatus
Definition HitInfo.h:84
@ straw
Definition HitInfo.h:82
@ detector
Definition HitInfo.h:78
@ TNOIV
Definition HitInfo.h:85
FloatVariables
Definition HitInfo.h:36
@ TimeoverThreshold
Definition HitInfo.h:44
@ driftVelocity
Definition HitInfo.h:50
@ trackT0
Definition HitInfo.h:52
@ driftTime
Definition HitInfo.h:43
@ signedDriftRadius
Definition HitInfo.h:40
@ errorTrackDriftRadius
Definition HitInfo.h:49
@ globalPhi
Definition HitInfo.h:38
@ errorPositionOnWire
Definition HitInfo.h:47
@ globalZ
Definition HitInfo.h:39
@ errorSignedDriftRadius
Definition HitInfo.h:41
@ TNOFV
Definition HitInfo.h:53
@ trackDriftRadius
Definition HitInfo.h:48
@ globalR
Definition HitInfo.h:37
@ HTLevel
Definition HitInfo.h:45
@ positionOnWire
Definition HitInfo.h:46
@ trackDriftTime
Definition HitInfo.h:51
const std::string intVariableName[TNOIV]
Definition HitInfo.h:88
const std::string floatVariableName[TNOFV]
Definition HitInfo.h:56
Definition HitInfo.h:33