Belle II Software development
KinkVariables.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <analysis/VariableManager/Manager.h>
12#include <framework/gearbox/Const.h>
13#include <Math/Vector3D.h>
14#include <Math/Vector4D.h>
15
16namespace Belle2 {
21 class Particle;
22 class Kink;
23 class MCParticle;
24 class Helix;
25
26 namespace Variable {
27
28 //-----------------------------------------------
29 // Helper Functions
30
34 Helix kinkDaughterHelixAtKinkVertex(const Kink* kink);
35
39 ROOT::Math::XYZVector kinkDaughterMomentumAtKinkVertex(const Kink* kink);
40
44 Helix kinkMotherHelixAtKinkVertex(const Kink* kink);
45
49 ROOT::Math::XYZVector kinkMotherMomentumAtKinkVertex(const Kink* kink);
50
63 double kinkDaughterMomentumAndCosThetaInMotherRF(const Particle* part, Const::ChargedStable motherType,
64 Const::ChargedStable daughterType, bool returnCosTheta);
65
74 ROOT::Math::PxPyPzEVector kinkMotherMCP4AtDecayVertex(const MCParticle* p);
75
86 double kinkDaughterMCMomentumAndCosThetaInMotherRF(const Particle* part, bool returnCosTheta);
87
88 //-----------------------------------------------
89 // MEASURED VARIABLES
90 // Kink General Variables
91
95 double kinkVertexX(const Particle* part);
96
100 double kinkVertexY(const Particle* part);
101
105 double kinkVertexZ(const Particle* part);
106
110 double kinkFilterID(const Particle* part);
111
115 double kinkCombinedFitResultFlag(const Particle* part);
116
120 double kinkCombinedFitResultFlagBit1(const Particle* part);
121
125 double kinkCombinedFitResultFlagBit2(const Particle* part);
126
130 double kinkCombinedFitResultFlagBit3(const Particle* part);
131
135 double kinkCombinedFitResultFlagBit4(const Particle* part);
136
140 double kinkSplitTrackDistanceAtVertexFlag(const Particle* part);
141
145 double kinkNumberOfReassignedHits(const Particle* part);
146
150 double kinkIsSameCharge(const Particle* part);
151
152 // Kink Decay Kinematics
153
158 double kinkDaughterMomentumInMotherRF(const Particle* part);
159
164 double kinkDaughterCosThetaInMotherRF(const Particle* part);
165
169 double kinkDaughterMomentumInMotherRFKPi(const Particle* part);
170
175 double kinkDaughterCosThetaInMotherRFKPi(const Particle* part);
176
180 double kinkDaughterMomentumInMotherRFKMu(const Particle* part);
181
186 double kinkDaughterCosThetaInMotherRFKMu(const Particle* part);
187
191 double kinkDaughterMomentumInMotherRFPiMu(const Particle* part);
192
197 double kinkDaughterCosThetaInMotherRFPiMu(const Particle* part);
198
202 double kinkDaughterMomentumInMotherRFMuE(const Particle* part);
203
208 double kinkDaughterCosThetaInMotherRFMuE(const Particle* part);
209
210 // Kink Daughter Measured Track Parameters
211
215 Manager::FunctionPtr kinkDaughterTrack(const std::vector<std::string>& arguments);
216
220 Manager::FunctionPtr kinkDaughterInitTrack(const std::vector<std::string>& arguments);
221
225 double kinkDaughterTrackD0AtKinkVertex(const Particle* part);
226
230 double kinkDaughterTrackZ0AtKinkVertex(const Particle* part);
231
235 double kinkDaughterPtAtKinkVertex(const Particle* part);
236
240 double kinkDaughterPzAtKinkVertex(const Particle* part);
241
245 double kinkDaughterPAtKinkVertex(const Particle* part);
246
247 // Kink Mother Measured Track Parameters
248
252 Manager::FunctionPtr kinkMotherInitTrack(const std::vector<std::string>& arguments);
253
257 double kinkMotherTrackD0AtKinkVertex(const Particle* part);
258
262 double kinkMotherTrackZ0AtKinkVertex(const Particle* part);
263
267 double kinkMotherPtAtKinkVertex(const Particle* part);
268
272 double kinkMotherPzAtKinkVertex(const Particle* part);
273
277 double kinkMotherPAtKinkVertex(const Particle* part);
278
279 //-----------------------------------------------
280 // Check if the particle is a part of any Kink
281
285 double particleIsInKink(const Particle* part);
286
290 double particleIsMotherInKink(const Particle* part);
291
295 double particleIsDaughterInKink(const Particle* part);
296
300 double particleIsSplitKink(const Particle* part);
301
302 //-----------------------------------------------
303 // MC VARIABLES
304
305 // Kink from track pair MC variables
306
310 double kinkPairIsMCRelated(const Particle* part);
311
315 double kinkPairIsClone(const Particle* part);
316
320 double kinkPairIsReal(const Particle* part);
321
325 double kinkPairIsDecayInFlight(const Particle* part);
326
330 double kinkPairIsHadronScattering(const Particle* part);
331
332 // Kink from track pair MC kinematics
333
338 double kinkDaughterMomentumInMotherRFMC(const Particle* part);
339
345 double kinkDaughterCosThetaInMotherRFMC(const Particle* part);
346
347 // Kink from track pair daughter MC variables
348
352 Manager::FunctionPtr kinkPairDaughterMC(const std::vector<std::string>& arguments);
353
354 // Kink from track pair mother MC variables
355
360 const MCParticle* kinkPairMotherMCParticle(const Particle* part);
361
365 Manager::FunctionPtr kinkPairMotherMC(const std::vector<std::string>& arguments);
366
370 double kinkPairMotherMCPXAtDecayVertex(const Particle* part);
371
375 double kinkPairMotherMCPYAtDecayVertex(const Particle* part);
376
380 double kinkPairMotherMCPZAtDecayVertex(const Particle* part);
381
385 double kinkPairMotherMCPTAtDecayVertex(const Particle* part);
386
390 double kinkPairMotherMCPAtDecayVertex(const Particle* part);
391
395 double kinkPairMotherMCEAtDecayVertex(const Particle* part);
396
397 }
399} // Belle2 namespace
std::function< VarVariant(const Particle *)> FunctionPtr
functions stored take a const Particle* and return VarVariant.
Definition: Manager.h:112
Abstract base class for different kinds of events.