Belle II Software  release-05-02-19
CDCStateBasicVarSet.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Simon Kurz, Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/ckf/cdc/filters/states/CDCStateBasicVarSet.h>
11 
12 #include <tracking/ckf/cdc/entities/CDCCKFState.h>
13 
14 #include <tracking/dataobjects/RecoTrack.h>
15 
16 using namespace std;
17 using namespace Belle2;
18 
19 bool CDCStateBasicVarSet::extract(const BaseCDCStateFilter::Object* pair)
20 {
21  const auto& path = pair->first;
22  const auto& state = pair->second;
23  const auto& lastState = path->back();
24 
25  // check if hit belongs to same seed
26  const auto& seed = path->front();
27  const auto* seedRecoTrack = seed.getSeed();
28 
29  // general stuff
30  var<named("eventNumber")>() = m_eventMetaData->getEvent();
31 
32  // calculate the interesting quantities
33  var<named("firstHit")>() = lastState.isSeed();
34  var<named("i_hit")>() = path->size() - 1;
35 
36  var<named("iCLayer_lastState")>() = lastState.isSeed() ? -1 : lastState.getWireHit()->getWire().getICLayer();
37  var<named("iCLayer")>() = state->getWireHit()->getWire().getICLayer();
38  var<named("arcLength")>() = state->getArcLength() - lastState.getArcLength();
39  var<named("hitDistance")>() = state->getHitDistance();
40 
41  TrackFindingCDC::Vector3D wirePos = state->getWireHit()->getRefPos3D();
42  var<named("wire_r")>() = wirePos.cylindricalR();
43  var<named("wire_z")>() = wirePos.z();
44  var<named("wire_x")>() = wirePos.x();
45  var<named("wire_y")>() = wirePos.y();
46 
47  TVector3 seedPos = seedRecoTrack->getPositionSeed();
48  TVector3 seedMom = seedRecoTrack->getMomentumSeed();
49  var<named("seed_theta")>() = seedMom.Theta() * 180. / M_PI;
50  var<named("seed_r")>() = seedPos.Perp();
51  var<named("seed_z")>() = seedPos.Z();
52  var<named("seed_x")>() = seedPos.X();
53  var<named("seed_y")>() = seedPos.Y();
54  var<named("seed_p")>() = seedMom.Mag();
55  var<named("seed_pt")>() = seedMom.Perp();
56  var<named("seed_pz")>() = seedMom.Z();
57  var<named("seed_px")>() = seedMom.X();
58  var<named("seed_py")>() = seedMom.Y();
59  var<named("seed_charge")>() = seedRecoTrack->getChargeSeed();
60 
61  return true;
62 }
Belle2::TrackFindingCDC::Vector3D::x
double x() const
Getter for the x coordinate.
Definition: Vector3D.h:464
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::Vector3D
A three dimensional vector.
Definition: Vector3D.h:34
Belle2::TrackFindingCDC::Vector3D::y
double y() const
Getter for the y coordinate.
Definition: Vector3D.h:476
Belle2::TrackFindingCDC::Vector3D::z
double z() const
Getter for the z coordinate.
Definition: Vector3D.h:488
Belle2::TrackFindingCDC::Vector3D::cylindricalR
double cylindricalR() const
Getter for the cylindrical radius ( xy projected norm )
Definition: Vector3D.h:526
Belle2::TrackFindingCDC::Filter::Object
AObject Object
Type of the object to be analysed.
Definition: Filter.dcl.h:43