ROOT
master
Reference Guide
Loading...
Searching...
No Matches
REveVSDStructs.hxx
Go to the documentation of this file.
1
// @(#)root/eve7:$Id$
2
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007, 2018
3
4
/*************************************************************************
5
* Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
6
* All rights reserved. *
7
* *
8
* For the licensing terms see $ROOTSYS/LICENSE. *
9
* For the list of contributors see $ROOTSYS/README/CREDITS. *
10
*************************************************************************/
11
12
#ifndef ROOT7_REveVSDStructs
13
#define ROOT7_REveVSDStructs
14
15
#include "
TParticle.h
"
16
17
#include <
ROOT/REveVector.hxx
>
18
19
////////////////////////////////////////////////////////////////////////////////
20
/// VSD Structures
21
////////////////////////////////////////////////////////////////////////////////
22
23
// Basic structures for Reve VSD concept. Design criteria:
24
//
25
// * provide basic cross-referencing functionality;
26
//
27
// * small memory/disk footprint (floats / count on compression in
28
// split mode);
29
//
30
// * simple usage from tree selections;
31
//
32
// * placement in TClonesArray (composites are TObject derived);
33
//
34
// * minimal member-naming (impossible to make everybody happy).
35
//
36
37
namespace
ROOT
{
38
namespace
Experimental {
39
40
////////////////////////////////////////////////////////////////////////////////
41
/// REveMCTrack
42
////////////////////////////////////////////////////////////////////////////////
43
44
class
REveMCTrack
:
public
TParticle
// ?? Copy stuff over ??
45
{
46
public
:
47
Int_t
fLabel
{-1};
// Label of the track
48
Int_t
fIndex
{-1};
// Index of the track (in some source array)
49
Int_t
fEvaLabel
{-1};
// Label of primary particle
50
51
Bool_t
fDecayed
{
kFALSE
};
// True if decayed during tracking.
52
// ?? Perhaps end-of-tracking point/momentum would be better.
53
Float_t
fTDecay
{0};
// Decay time
54
REveVector
fVDecay
;
// Decay vertex
55
REveVector
fPDecay
;
// Decay momentum
56
57
REveMCTrack
() =
default
;
58
~REveMCTrack
()
override
{}
59
60
REveMCTrack
&
operator=
(
const
TParticle
&
p
)
61
{
62
*((
TParticle
*)
this
) =
p
;
63
return
*
this
;
64
}
65
66
void
ResetPdgCode
() {
fPdgCode
= 0; }
67
68
ClassDefOverride
(
REveMCTrack
, 1);
// Monte Carlo track (also used in VSD).
69
};
70
71
////////////////////////////////////////////////////////////////////////////////
72
/// REveHit
73
/// Monte Carlo hit (also used in VSD).
74
///
75
/// Representation of a hit.
76
/// Members det_id (and fSubdetId) serve for cross-referencing into
77
/// geometry. Hits should be stored in fDetId (+some label ordering) in
78
/// order to maximize branch compression.
79
////////////////////////////////////////////////////////////////////////////////
80
81
82
class
REveHit
83
{
84
public
:
85
UShort_t
fDetId
{0};
// Custom detector id.
86
UShort_t
fSubdetId
{0};
// Custom sub-detector id.
87
Int_t
fLabel
{0};
// Label of particle that produced the hit.
88
Int_t
fEvaLabel
{0};
// Label of primary particle, ancestor of label.
89
REveVector
fV
;
// Hit position.
90
91
// Float_t charge; probably specific.
92
93
REveHit
() =
default
;
94
virtual
~REveHit
() {}
95
};
96
97
////////////////////////////////////////////////////////////////////////////////
98
/// REveCluster
99
/// Reconstructed cluster (also used in VSD).
100
////////////////////////////////////////////////////////////////////////////////
101
102
// Base class for reconstructed clusters
103
104
// ?? Should REveHit and cluster have common base? No.
105
106
class
REveCluster
// : public TObject
107
{
108
public
:
109
UShort_t
fDetId
{0};
// Custom detector id.
110
UShort_t
fSubdetId
{0};
// Custom sub-detector id.
111
Int_t
fLabel
[3];
// Labels of particles that contributed hits.
112
113
// ?? Should include reconstructed track(s) using it? Rather not, separate.
114
115
REveVector
fV
;
// Vertex.
116
// REveVector fW; // Cluster widths.
117
// Coord system? Errors and/or widths Wz, Wy?
118
119
REveCluster
() {
fLabel
[0] =
fLabel
[1] =
fLabel
[2] = 0; }
120
virtual
~REveCluster
() {}
121
};
122
123
////////////////////////////////////////////////////////////////////////////////
124
/// REveRecTrack
125
/// Template for reconstructed track (also used in VSD).
126
////////////////////////////////////////////////////////////////////////////////
127
128
template
<
typename
TT>
129
class
REveRecTrackT
130
{
131
public
:
132
Int_t
fLabel
{-1};
// Label of the track.
133
Int_t
fIndex
{-1};
// Index of the track (in some source array).
134
Int_t
fStatus
{0};
// Status as exported from reconstruction.
135
Int_t
fSign
{0};
// Charge of the track.
136
REveVectorT<TT>
fV
;
// Start vertex from reconstruction.
137
REveVectorT<TT>
fP
;
// Reconstructed momentum at start vertex.
138
TT
fBeta
{0};
// Relativistic beta factor.
139
Double32_t
fDcaXY
{0};
// dca xy to the primary vertex
140
Double32_t
fDcaZ
{0};
// dca z to the primary vertex
141
Double32_t
fPVX
{0};
//
142
Double32_t
fPVY
{0};
//
143
Double32_t
fPVZ
{0};
//
144
// PID data missing
145
146
REveRecTrackT
() =
default
;
147
virtual
~REveRecTrackT
() {}
148
149
Float_t
Pt
() {
return
fP
.Perp(); }
150
};
151
152
typedef
REveRecTrackT<Float_t>
REveRecTrack
;
153
typedef
REveRecTrackT<Float_t>
REveRecTrackF
;
154
typedef
REveRecTrackT<Double_t>
REveRecTrackD
;
155
156
////////////////////////////////////////////////////////////////////////////////
157
/// REveRecKink
158
/// Reconstructed kink (also used in VSD).
159
////////////////////////////////////////////////////////////////////////////////
160
161
class
REveRecKink
// : public TObject
162
{
163
public
:
164
REveVector
fVKink
;
// Kink vertex: reconstructed position of the kink
165
REveVector
fPMother
;
// Momentum of the mother track
166
REveVector
fVMother
;
// Vertex of the mother track
167
REveVector
fPDaughter
;
// Momentum of the daughter track
168
REveVector
fVDaughter
;
// Vertex of the daughter track
169
Double32_t
fKinkAngle
[3];
// three angles
170
Int_t
fSign
{0};
// sign of the track
171
Int_t
fStatus
{0};
// Status as exported from reconstruction
172
173
// Data from simulation
174
Int_t
fKinkLabel
[2];
// Labels of the mother and daughter tracks
175
Int_t
fKinkIndex
[2];
// Indices of the mother and daughter tracks
176
Int_t
fKinkPdg
[2];
// PDG code of mother and daughter.
177
178
REveRecKink
()
179
{
180
fKinkAngle
[0] =
fKinkAngle
[1] =
fKinkAngle
[2] = 0;
181
fKinkLabel
[0] =
fKinkLabel
[1] = 0;
182
fKinkIndex
[0] =
fKinkIndex
[1] = 0;
183
fKinkPdg
[0] =
fKinkPdg
[1] = 0;
184
}
185
virtual
~REveRecKink
() {}
186
};
187
188
////////////////////////////////////////////////////////////////////////////////
189
/// REveRecV0
190
////////////////////////////////////////////////////////////////////////////////
191
192
class
REveRecV0
193
{
194
public
:
195
Int_t
fStatus
{0};
196
197
REveVector
fVNeg
;
// Vertex of negative track.
198
REveVector
fPNeg
;
// Momentum of negative track.
199
REveVector
fVPos
;
// Vertex of positive track.
200
REveVector
fPPos
;
// Momentum of positive track.
201
202
REveVector
fVCa
;
// Point of closest approach.
203
REveVector
fV0Birth
;
// Reconstructed birth point of neutral particle.
204
205
// ? Data from simulation.
206
Int_t
fLabel
{0};
// Neutral mother label read from kinematics.
207
Int_t
fPdg
{0};
// PDG code of mother.
208
Int_t
fDLabel
[2];
// Daughter labels.
209
210
REveRecV0
() {
fDLabel
[0] =
fDLabel
[1] = 0; }
211
virtual
~REveRecV0
() {}
212
};
213
214
////////////////////////////////////////////////////////////////////////////////
215
/// REveRecCascade
216
////////////////////////////////////////////////////////////////////////////////
217
218
class
REveRecCascade
219
{
220
public
:
221
Int_t
fStatus
{0};
222
223
REveVector
fVBac
;
// Vertex of bachelor track.
224
REveVector
fPBac
;
// Momentum of bachelor track.
225
226
REveVector
fCascadeVCa
;
// Point of closest approach for Cascade.
227
REveVector
fCascadeBirth
;
// Reconstructed birth point of cascade particle.
228
229
// ? Data from simulation.
230
Int_t
fLabel
{0};
// Cascade mother label read from kinematics.
231
Int_t
fPdg
{0};
// PDG code of mother.
232
Int_t
fDLabel
{0};
// Daughter label.
233
234
REveRecCascade
() =
default
;
235
virtual
~REveRecCascade
() {}
236
};
237
238
////////////////////////////////////////////////////////////////////////////////
239
/// REveMCRecCrossRef
240
/// Cross-reference of sim/rec data per particle (also used in VSD).
241
////////////////////////////////////////////////////////////////////////////////
242
243
class
REveMCRecCrossRef
{
244
public
:
245
Bool_t
fIsRec
{
kFALSE
};
// Is reconstructed.
246
Bool_t
fHasV0
{
kFALSE
};
247
Bool_t
fHasKink
{
kFALSE
};
248
Int_t
fLabel
{0};
249
Int_t
fNHits
{0};
250
Int_t
fNClus
{0};
251
252
REveMCRecCrossRef
() =
default
;
253
virtual
~REveMCRecCrossRef
() {}
254
};
255
256
////////////////////////////////////////////////////////////////////////////////
257
/// Missing primary vertex class.
258
////////////////////////////////////////////////////////////////////////////////
259
260
/******************************************************************************/
261
/******************************************************************************/
262
263
// This whole construction is somewhat doubtable. It requires
264
// shameless copying of experiment data. What is good about this
265
// scheme:
266
//
267
// 1) Filters can be applied at copy time so that only part of the
268
// data is copied over.
269
//
270
// 2) Once the data is extracted it can be used without experiment
271
// software. Thus, external service can provide this data and local
272
// client can be really thin.
273
//
274
// 3) Some pretty advanced visualization schemes/selections can be
275
// implemented in a general framework by providing data extractors
276
// only. This is also good for PR or VIP displays.
277
//
278
// 4) These classes can be extended by particular implementations. The
279
// container classes will use TClonesArray with user-specified element
280
// class.
281
282
// The common behaviour could be implemented entirely without usage of
283
// a common base classes, by just specifying names of members that
284
// retrieve specific data. This is fine as long as one only uses tree
285
// selections but becomes painful for extraction of data into local
286
// structures (could a) use interpreter but this is an overkill and
287
// would cause serious trouble for multi-threaded environment; b) use
288
// member offsets and data-types from the dictionary).
289
290
}
// namespace Experimental
291
}
// namespace ROOT
292
293
#endif
REveVector.hxx
UShort_t
unsigned short UShort_t
Definition
RtypesCore.h:40
Float_t
float Float_t
Definition
RtypesCore.h:57
kFALSE
constexpr Bool_t kFALSE
Definition
RtypesCore.h:94
p
winID h TVirtualViewer3D TVirtualGLPainter p
Definition
TGWin32VirtualGLProxy.cxx:51
TParticle.h
ROOT::Experimental::REveCluster
REveCluster Reconstructed cluster (also used in VSD).
Definition
REveVSDStructs.hxx:107
ROOT::Experimental::REveCluster::fV
REveVector fV
Definition
REveVSDStructs.hxx:115
ROOT::Experimental::REveCluster::fLabel
Int_t fLabel[3]
Definition
REveVSDStructs.hxx:111
ROOT::Experimental::REveCluster::fDetId
UShort_t fDetId
Definition
REveVSDStructs.hxx:109
ROOT::Experimental::REveCluster::~REveCluster
virtual ~REveCluster()
Definition
REveVSDStructs.hxx:120
ROOT::Experimental::REveCluster::REveCluster
REveCluster()
Definition
REveVSDStructs.hxx:119
ROOT::Experimental::REveCluster::fSubdetId
UShort_t fSubdetId
Definition
REveVSDStructs.hxx:110
ROOT::Experimental::REveHit
REveHit Monte Carlo hit (also used in VSD).
Definition
REveVSDStructs.hxx:83
ROOT::Experimental::REveHit::fEvaLabel
Int_t fEvaLabel
Definition
REveVSDStructs.hxx:88
ROOT::Experimental::REveHit::fDetId
UShort_t fDetId
Definition
REveVSDStructs.hxx:85
ROOT::Experimental::REveHit::fLabel
Int_t fLabel
Definition
REveVSDStructs.hxx:87
ROOT::Experimental::REveHit::fSubdetId
UShort_t fSubdetId
Definition
REveVSDStructs.hxx:86
ROOT::Experimental::REveHit::fV
REveVector fV
Definition
REveVSDStructs.hxx:89
ROOT::Experimental::REveHit::~REveHit
virtual ~REveHit()
Definition
REveVSDStructs.hxx:94
ROOT::Experimental::REveHit::REveHit
REveHit()=default
ROOT::Experimental::REveMCRecCrossRef
REveMCRecCrossRef Cross-reference of sim/rec data per particle (also used in VSD).
Definition
REveVSDStructs.hxx:243
ROOT::Experimental::REveMCRecCrossRef::fNClus
Int_t fNClus
Definition
REveVSDStructs.hxx:250
ROOT::Experimental::REveMCRecCrossRef::~REveMCRecCrossRef
virtual ~REveMCRecCrossRef()
Definition
REveVSDStructs.hxx:253
ROOT::Experimental::REveMCRecCrossRef::fIsRec
Bool_t fIsRec
Definition
REveVSDStructs.hxx:245
ROOT::Experimental::REveMCRecCrossRef::fHasKink
Bool_t fHasKink
Definition
REveVSDStructs.hxx:247
ROOT::Experimental::REveMCRecCrossRef::REveMCRecCrossRef
REveMCRecCrossRef()=default
ROOT::Experimental::REveMCRecCrossRef::fNHits
Int_t fNHits
Definition
REveVSDStructs.hxx:249
ROOT::Experimental::REveMCRecCrossRef::fHasV0
Bool_t fHasV0
Definition
REveVSDStructs.hxx:246
ROOT::Experimental::REveMCRecCrossRef::fLabel
Int_t fLabel
Definition
REveVSDStructs.hxx:248
ROOT::Experimental::REveMCTrack
REveMCTrack.
Definition
REveVSDStructs.hxx:45
ROOT::Experimental::REveMCTrack::ClassDefOverride
ClassDefOverride(REveMCTrack, 1)
ROOT::Experimental::REveMCTrack::fIndex
Int_t fIndex
Definition
REveVSDStructs.hxx:48
ROOT::Experimental::REveMCTrack::ResetPdgCode
void ResetPdgCode()
Definition
REveVSDStructs.hxx:66
ROOT::Experimental::REveMCTrack::fPDecay
REveVector fPDecay
Definition
REveVSDStructs.hxx:55
ROOT::Experimental::REveMCTrack::fEvaLabel
Int_t fEvaLabel
Definition
REveVSDStructs.hxx:49
ROOT::Experimental::REveMCTrack::~REveMCTrack
~REveMCTrack() override
Definition
REveVSDStructs.hxx:58
ROOT::Experimental::REveMCTrack::operator=
REveMCTrack & operator=(const TParticle &p)
Definition
REveVSDStructs.hxx:60
ROOT::Experimental::REveMCTrack::fTDecay
Float_t fTDecay
Definition
REveVSDStructs.hxx:53
ROOT::Experimental::REveMCTrack::fLabel
Int_t fLabel
Definition
REveVSDStructs.hxx:47
ROOT::Experimental::REveMCTrack::REveMCTrack
REveMCTrack()=default
ROOT::Experimental::REveMCTrack::fVDecay
REveVector fVDecay
Definition
REveVSDStructs.hxx:54
ROOT::Experimental::REveMCTrack::fDecayed
Bool_t fDecayed
Definition
REveVSDStructs.hxx:51
ROOT::Experimental::REveRecCascade
REveRecCascade.
Definition
REveVSDStructs.hxx:219
ROOT::Experimental::REveRecCascade::~REveRecCascade
virtual ~REveRecCascade()
Definition
REveVSDStructs.hxx:235
ROOT::Experimental::REveRecCascade::fPBac
REveVector fPBac
Definition
REveVSDStructs.hxx:224
ROOT::Experimental::REveRecCascade::fVBac
REveVector fVBac
Definition
REveVSDStructs.hxx:223
ROOT::Experimental::REveRecCascade::fLabel
Int_t fLabel
Definition
REveVSDStructs.hxx:230
ROOT::Experimental::REveRecCascade::fStatus
Int_t fStatus
Definition
REveVSDStructs.hxx:221
ROOT::Experimental::REveRecCascade::fCascadeVCa
REveVector fCascadeVCa
Definition
REveVSDStructs.hxx:226
ROOT::Experimental::REveRecCascade::fPdg
Int_t fPdg
Definition
REveVSDStructs.hxx:231
ROOT::Experimental::REveRecCascade::fDLabel
Int_t fDLabel
Definition
REveVSDStructs.hxx:232
ROOT::Experimental::REveRecCascade::REveRecCascade
REveRecCascade()=default
ROOT::Experimental::REveRecCascade::fCascadeBirth
REveVector fCascadeBirth
Definition
REveVSDStructs.hxx:227
ROOT::Experimental::REveRecKink
REveRecKink Reconstructed kink (also used in VSD).
Definition
REveVSDStructs.hxx:162
ROOT::Experimental::REveRecKink::fSign
Int_t fSign
Definition
REveVSDStructs.hxx:170
ROOT::Experimental::REveRecKink::fPMother
REveVector fPMother
Definition
REveVSDStructs.hxx:165
ROOT::Experimental::REveRecKink::REveRecKink
REveRecKink()
Definition
REveVSDStructs.hxx:178
ROOT::Experimental::REveRecKink::fStatus
Int_t fStatus
Definition
REveVSDStructs.hxx:171
ROOT::Experimental::REveRecKink::~REveRecKink
virtual ~REveRecKink()
Definition
REveVSDStructs.hxx:185
ROOT::Experimental::REveRecKink::fPDaughter
REveVector fPDaughter
Definition
REveVSDStructs.hxx:167
ROOT::Experimental::REveRecKink::fKinkAngle
Double32_t fKinkAngle[3]
Definition
REveVSDStructs.hxx:169
ROOT::Experimental::REveRecKink::fVMother
REveVector fVMother
Definition
REveVSDStructs.hxx:166
ROOT::Experimental::REveRecKink::fKinkLabel
Int_t fKinkLabel[2]
Definition
REveVSDStructs.hxx:174
ROOT::Experimental::REveRecKink::fKinkPdg
Int_t fKinkPdg[2]
Definition
REveVSDStructs.hxx:176
ROOT::Experimental::REveRecKink::fVDaughter
REveVector fVDaughter
Definition
REveVSDStructs.hxx:168
ROOT::Experimental::REveRecKink::fVKink
REveVector fVKink
Definition
REveVSDStructs.hxx:164
ROOT::Experimental::REveRecKink::fKinkIndex
Int_t fKinkIndex[2]
Definition
REveVSDStructs.hxx:175
ROOT::Experimental::REveRecTrackT
REveRecTrack Template for reconstructed track (also used in VSD).
Definition
REveVSDStructs.hxx:130
ROOT::Experimental::REveRecTrackT::fStatus
Int_t fStatus
Definition
REveVSDStructs.hxx:134
ROOT::Experimental::REveRecTrackT::fP
REveVectorT< TT > fP
Definition
REveVSDStructs.hxx:137
ROOT::Experimental::REveRecTrackT::fPVY
Double32_t fPVY
Definition
REveVSDStructs.hxx:142
ROOT::Experimental::REveRecTrackT::fLabel
Int_t fLabel
Definition
REveVSDStructs.hxx:132
ROOT::Experimental::REveRecTrackT::REveRecTrackT
REveRecTrackT()=default
ROOT::Experimental::REveRecTrackT::fV
REveVectorT< TT > fV
Definition
REveVSDStructs.hxx:136
ROOT::Experimental::REveRecTrackT::Pt
Float_t Pt()
Definition
REveVSDStructs.hxx:149
ROOT::Experimental::REveRecTrackT::fIndex
Int_t fIndex
Definition
REveVSDStructs.hxx:133
ROOT::Experimental::REveRecTrackT::fBeta
TT fBeta
Definition
REveVSDStructs.hxx:138
ROOT::Experimental::REveRecTrackT::fDcaXY
Double32_t fDcaXY
Definition
REveVSDStructs.hxx:139
ROOT::Experimental::REveRecTrackT::fDcaZ
Double32_t fDcaZ
Definition
REveVSDStructs.hxx:140
ROOT::Experimental::REveRecTrackT::fPVX
Double32_t fPVX
Definition
REveVSDStructs.hxx:141
ROOT::Experimental::REveRecTrackT::~REveRecTrackT
virtual ~REveRecTrackT()
Definition
REveVSDStructs.hxx:147
ROOT::Experimental::REveRecTrackT::fPVZ
Double32_t fPVZ
Definition
REveVSDStructs.hxx:143
ROOT::Experimental::REveRecTrackT::fSign
Int_t fSign
Definition
REveVSDStructs.hxx:135
ROOT::Experimental::REveRecV0
REveRecV0.
Definition
REveVSDStructs.hxx:193
ROOT::Experimental::REveRecV0::~REveRecV0
virtual ~REveRecV0()
Definition
REveVSDStructs.hxx:211
ROOT::Experimental::REveRecV0::fPdg
Int_t fPdg
Definition
REveVSDStructs.hxx:207
ROOT::Experimental::REveRecV0::fPPos
REveVector fPPos
Definition
REveVSDStructs.hxx:200
ROOT::Experimental::REveRecV0::fVNeg
REveVector fVNeg
Definition
REveVSDStructs.hxx:197
ROOT::Experimental::REveRecV0::fLabel
Int_t fLabel
Definition
REveVSDStructs.hxx:206
ROOT::Experimental::REveRecV0::fPNeg
REveVector fPNeg
Definition
REveVSDStructs.hxx:198
ROOT::Experimental::REveRecV0::fV0Birth
REveVector fV0Birth
Definition
REveVSDStructs.hxx:203
ROOT::Experimental::REveRecV0::fVPos
REveVector fVPos
Definition
REveVSDStructs.hxx:199
ROOT::Experimental::REveRecV0::fDLabel
Int_t fDLabel[2]
Definition
REveVSDStructs.hxx:208
ROOT::Experimental::REveRecV0::fVCa
REveVector fVCa
Definition
REveVSDStructs.hxx:202
ROOT::Experimental::REveRecV0::REveRecV0
REveRecV0()
Definition
REveVSDStructs.hxx:210
ROOT::Experimental::REveRecV0::fStatus
Int_t fStatus
Definition
REveVSDStructs.hxx:195
ROOT::Experimental::REveVectorT< Float_t >
TParticle
Description of the dynamic properties of a particle.
Definition
TParticle.h:26
TParticle::fPdgCode
Int_t fPdgCode
Definition
TParticle.h:31
bool
double
int
ROOT::Experimental::REveRecTrackF
REveRecTrackT< Float_t > REveRecTrackF
Definition
REveVSDStructs.hxx:153
ROOT::Experimental::REveRecTrackD
REveRecTrackT< Double_t > REveRecTrackD
Definition
REveVSDStructs.hxx:154
ROOT::Experimental::REveRecTrack
REveRecTrackT< Float_t > REveRecTrack
Definition
REveVSDStructs.hxx:152
ROOT
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition
EExecutionPolicy.hxx:4
graf3d
eve7
inc
ROOT
REveVSDStructs.hxx
ROOT master - Reference Guide Generated on Thu Dec 19 2024 09:45:53 (GVA Time) using Doxygen 1.9.8