11#include <tracking/modules/vxdtfRedesign/SegmentNetworkAnalyzerModule.h>
12#include <tracking/spacePointCreation/SpacePoint.h>
13#include <tracking/spacePointCreation/PurityCalculatorTools.h>
29 std::string(
"SegmentNetworkAnalyzer_output.root"));
35 B2INFO(
"SegmentNetworkAnalyzer::initialize() ------------------------------");
41 m_treePtr =
new TTree(
"SegmentNetworkAnalyzer",
"segment network analysis output");
50 auto& hitNetwork =
m_network->accessHitNetwork();
51 auto& segmentNetwork =
m_network->accessSegmentNetwork();
55 for (
const auto& outerHit : hitNetwork.getNodes()) {
56 for (
const auto& centerHit : outerHit->getInnerNodes()) {
58 centerHit->getEntry().m_sector->getFullSecID(),
59 &outerHit->getEntry(),
60 ¢erHit->getEntry());
62 for (
const auto& innerHit : centerHit->getInnerNodes()) {
64 innerHit->getEntry().m_sector->getFullSecID(),
65 ¢erHit->getEntry(),
66 &innerHit->getEntry());
70 if (
auto outerNode = segmentNetwork.getNode(outerSegment.
getID())) {
71 for (
const auto& connectedNode : outerNode->getInnerNodes()) {
72 if (connectedNode->getEntry() == innerSegment) {
116 std::vector<const Belle2::SpacePoint*> combinationSPs;
117 combinationSPs.push_back(outer.
getOuterHit()->m_spacePoint);
118 combinationSPs.push_back(outer.
getInnerHit()->m_spacePoint);
119 combinationSPs.push_back(inner.
getInnerHit()->m_spacePoint);
122 auto mcId = purityInfo[0].getPurity();
123 bool signal = mcId.first >= 0 && mcId.second == 1;
140 const auto* spacePoint = inner.
getInnerHit()->m_spacePoint;
147 auto position = spacePoint->getPosition();
151 B2DEBUG(22,
"Collected combination with: phi " << position.Phi() <<
", theta " << position.Theta() <<
152 ", pdg " << pdg <<
", pT " << pT <<
", signal " << signal <<
", passed " << passed <<
", mcId " << mcId.first);
155template<
typename EntryType,
typename MetaInfoType >
159 for (
const auto& outerNodes : network) {
160 nLinks += outerNodes->getInnerNodes().size();
Network of directed nodes of the type EntryType.
A Class to store the Monte Carlo particle information.
int getPDG() const
Return PDG code of particle.
ROOT::Math::XYZVector getMomentum() const
Return momentum.
void setDescription(const std::string &description)
Sets the description of the module.
TTree * m_treePtr
ptr to TTree
std::string m_PARAMrootFileName
file name of the produced root file
TFile * m_rFilePtr
ptr to root file
void initialize() override
set up root file and check required Store Arrays
SegmentNetworkAnalyzerModule()
constructor
Belle2::StoreObjPtr< Belle2::DirectedNodeNetworkContainer > m_network
StoreObjPtr to the SegmentNetwork and TrackNode Network container.
RootVariables m_rootVariables
handle to collect all data for one event
void event() override
collect necessary data and put into TTree
std::string m_PARAMnetworkName
StoreArray name of the DirectedNodeNetworkContainer.
void terminate() override
write and close root file
Belle2::StoreArray< Belle2::MCParticle > m_mcParticles
MCParticles StoreArray for obtaining MC Information.
void analyzeCombination(const Belle2::Segment< Belle2::TrackNode > &outer, const Belle2::Segment< Belle2::TrackNode > &inner, bool passed)
get necessary data from three hit combination and put them into the root variables
static size_t getNConnections(Belle2::DirectedNodeNetwork< EntryType, MetaInfoType > &network)
get the number of connections between the nodes of a network
void makeBranches()
setup the Branches in the output TTree
The Segment class This class represents segments of track candidates needed for TrackFinderVXD-Module...
std::int64_t getID() const
************************* PUBLIC MEMBER FUNCTIONS *************************
const HitType * getOuterHit() const
returns outer hit of current Segment
const HitType * getInnerHit() const
returns inner hit of current Segment
Accessor to arrays stored in the data store.
@ VXD
Any type of VXD Sensor.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
static std::vector< Belle2::MCVXDPurityInfo > createPurityInfosVec(const std::vector< const Belle2::SpacePoint * > &spacePoints)
create a vector of MCVXDPurityInfos objects for a std::vector<Belle2::SpacePoints>.
Abstract base class for different kinds of events.
keep all the variables for rootoutput in one struct