Belle II Software  release-05-01-25
InvariantMassStandAlone.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2021 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Radek Zlebcik *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #include <vector>
13 #include <utility>
14 #include <tuple>
15 #include <TVector3.h>
16 #include <Eigen/Dense>
17 
18 //If compiled within BASF2
19 #ifdef _PACKAGE_
20 #include <tracking/calibration/Splitter.h>
21 #else
22 #include <Splitter.h>
23 #endif
24 
25 namespace Belle2 {
30  namespace InvariantMassCalib {
31 
32  static const double realNaN = std::numeric_limits<double>::quiet_NaN();
33  static const int intNaN = std::numeric_limits<int>::quiet_NaN();
34  static const TVector3 vecNaN(realNaN, realNaN, realNaN);
35 
37  struct Track {
38  TVector3 p = vecNaN;
39  double pid = realNaN;
40  };
41 
43  struct Event {
44  int exp = intNaN;
45  int run = intNaN;
46  int evtNo = intNaN;
47 
48 
49  Track mu0;
50  Track mu1;
51 
52  int nBootStrap = intNaN;
53  bool isSig = false;
54  double t = realNaN;
55 
56  };
57 
58 
59  std::vector<Event> getEvents(TTree* tr);
60 
66  std::tuple<std::vector<Eigen::VectorXd>, std::vector<Eigen::MatrixXd>, Eigen::MatrixXd> runInvariantMassAnalysis(
67  std::vector<Event> evts,
68  const std::vector<double>& splitPoints);
69 
70  }
72 }
Belle2::InvariantMassCalib::Track
track parameters (neglecting curvature)
Definition: InvariantMassStandAlone.h:45
Belle2::InvariantMassCalib::Track::p
TVector3 p
momentum vector of the track
Definition: InvariantMassStandAlone.h:46
Belle2::InvariantMassCalib::Event::evtNo
int evtNo
event number
Definition: InvariantMassStandAlone.h:54
Belle2::InvariantMassCalib::Track::pid
double pid
particle ID of mu/e separation
Definition: InvariantMassStandAlone.h:47
Belle2::InvariantMassCalib::Event::mu0
Track mu0
track in the event
Definition: InvariantMassStandAlone.h:57
Belle2::InvariantMassCalib::Event::run
int run
run number
Definition: InvariantMassStandAlone.h:53
Belle2::InvariantMassCalib::Event::exp
int exp
experiment number
Definition: InvariantMassStandAlone.h:52
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::InvariantMassCalib::Event::nBootStrap
int nBootStrap
random bootstrap weight (n=1 -> original sample)
Definition: InvariantMassStandAlone.h:60
Belle2::realNaN
static const double realNaN
shortcut for NaN of double type
Definition: TagVertexModule.cc:64
Belle2::InvariantMassCalib::Event::mu1
Track mu1
other track in the event
Definition: InvariantMassStandAlone.h:58
Belle2::vecNaN
static const TVector3 vecNaN(realNaN, realNaN, realNaN)
vector with NaN entries
Belle2::InvariantMassCalib::Event::t
double t
time of event [hours]
Definition: InvariantMassStandAlone.h:62
Belle2::InvariantMassCalib::Event::isSig
bool isSig
is not removed by quality cuts?
Definition: InvariantMassStandAlone.h:61