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