Belle II Software development
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#include <tracking/trackFindingCDC/topology/CDCWire.h>
15
16using namespace Belle2;
17
19{
20 const auto& path = pair->first;
21 const auto& state = pair->second;
22 const auto& lastState = path->back();
23
24 // check if hit belongs to same seed
25 const auto& seed = path->front();
26 const auto* seedRecoTrack = seed.getSeed();
27
28 // general stuff
29 var<named("eventNumber")>() = m_eventMetaData->getEvent();
30
31 // calculate the interesting quantities
32 var<named("firstHit")>() = lastState.isSeed();
33 var<named("i_hit")>() = path->size() - 1;
34
35 var<named("iCLayer_lastState")>() = lastState.isSeed() ? -1 : lastState.getWireHit()->getWire().getICLayer();
36 var<named("iCLayer")>() = state->getWireHit()->getWire().getICLayer();
37 var<named("arcLength")>() = state->getArcLength() - lastState.getArcLength();
38 var<named("hitDistance")>() = state->getHitDistance();
39
40 TrackFindingCDC::Vector3D wirePos = state->getWireHit()->getRefPos3D();
41 var<named("wire_r")>() = wirePos.cylindricalR();
42 var<named("wire_z")>() = wirePos.z();
43 var<named("wire_x")>() = wirePos.x();
44 var<named("wire_y")>() = wirePos.y();
45
46 ROOT::Math::XYZVector seedPos = seedRecoTrack->getPositionSeed();
47 ROOT::Math::XYZVector seedMom = seedRecoTrack->getMomentumSeed();
48 var<named("seed_theta")>() = seedMom.Theta() * 180. / M_PI;
49 var<named("seed_r")>() = seedPos.Rho();
50 var<named("seed_z")>() = seedPos.Z();
51 var<named("seed_x")>() = seedPos.X();
52 var<named("seed_y")>() = seedPos.Y();
53 var<named("seed_p")>() = seedMom.R();
54 var<named("seed_pt")>() = seedMom.Rho();
55 var<named("seed_pz")>() = seedMom.Z();
56 var<named("seed_px")>() = seedMom.X();
57 var<named("seed_py")>() = seedMom.Y();
58 var<named("seed_charge")>() = seedRecoTrack->getChargeSeed();
59
60 return true;
61}
virtual bool extract(const BaseCDCStateFilter::Object *result) override
Generate and assign the variables from the object.
StoreObjPtr< EventMetaData > m_eventMetaData
use this to get the eventNumber
static constexpr int named(const char *name)
Definition VarSet.h:78
A three dimensional vector.
Definition Vector3D.h:33
double cylindricalR() const
Getter for the cylindrical radius ( xy projected norm )
Definition Vector3D.h:534
double x() const
Getter for the x coordinate.
Definition Vector3D.h:472
double y() const
Getter for the y coordinate.
Definition Vector3D.h:484
double z() const
Getter for the z coordinate.
Definition Vector3D.h:496
STL class.
Abstract base class for different kinds of events.