Belle II Software  release-06-00-14
PXDClusterizerModule.h
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 
9 #pragma once
10 
11 #include <framework/core/Module.h>
12 #include <vxd/dataobjects/VxdID.h>
13 #include <pxd/reconstruction/ClusterCache.h>
14 #include <pxd/reconstruction/ClusterProjection.h>
15 #include <pxd/reconstruction/NoiseMap.h>
16 #include <string>
17 #include <memory>
18 
19 namespace Belle2 {
24  class RelationArray;
25  class RelationElement;
26 
27 
28  namespace PXD {
29 
43  class PXDClusterizerModule : public Module {
44 
45  public:
47  typedef std::vector<const RelationElement*> RelationLookup;
48 
51 
53  virtual void initialize() override;
55  virtual void event() override;
56 
57  private:
68  void createRelationLookup(const RelationArray& relation, RelationLookup& lookup, size_t digits);
69 
75  void fillRelationMap(const RelationLookup& lookup, std::map<unsigned int, float>& relation, unsigned int index);
76 
80  void writeClusters(VxdID sensorID);
81 
90  void calculatePositionError(const ClusterCandidate& cls, ClusterProjection& primary, const ClusterProjection& secondary,
91  double minPitch, double centerPitch, double maxPitch);
92 
94  double m_elNoise;
96  double m_cutSeed;
98  double m_cutAdjacent;
100  double m_cutCluster;
104  std::string m_storeDigitsName;
106  std::string m_storeClustersName;
108  std::string m_storeTrueHitsName;
121 
124 
128  std::unique_ptr<ClusterCache> m_cache;
131 
136 
137  };//end class declaration
138 
139 
140  } //end PXD namespace;
142 } // end namespace Belle2
143 
Base class for Modules.
Definition: Module.h:72
Class representing a possible cluster during clustering of the PXD It supports merging of different c...
Helper struct to collect information about the 1D projection of a Pixel cluster.
Base Class to represent pixel dependent Noise Map.
Definition: NoiseMap.h:25
NoiseMap m_noiseMap
Noise map for the currently active sensor.
int m_clusterCacheSize
Size of cluster Cache (0 = default)
double m_cutAdjacentSignal
Signal in ADU for Adjacent cut, basically m_elNoise*m_cutAdjacent.
virtual void initialize() override
Initialize the module.
std::string m_relDigitMCParticleName
Name of the relation between PXDDigits and MCParticles.
virtual void event() override
do the clustering
void calculatePositionError(const ClusterCandidate &cls, ClusterProjection &primary, const ClusterProjection &secondary, double minPitch, double centerPitch, double maxPitch)
Calculate position and error for a given cluster.
std::vector< const RelationElement * > RelationLookup
Container for a RelationArray Lookup table.
std::string m_relClusterDigitName
Name of the relation between PXDClusters and PXDDigits.
double m_cutCluster
Cluster cut in sigma.
std::string m_storeTrueHitsName
Name of the collection to use for the PXDTrueHits.
PXDClusterizerModule()
Constructor defining the parameters.
void fillRelationMap(const RelationLookup &lookup, std::map< unsigned int, float > &relation, unsigned int index)
Add the relation from a given PXDDigit index to a map.
std::string m_storeMCParticlesName
Name of the collection to use for the MCParticles.
RelationLookup m_trueRelation
Lookup table for PXDDigit->PXDTrueHit relation.
int m_sizeHeadTail
Size of the cluster at which we switch from Center of Gravity to Analog Head Tail.
std::string m_storeDigitsName
Name of the collection to use for the PXDDigits.
void createRelationLookup(const RelationArray &relation, RelationLookup &lookup, size_t digits)
Create lookup maps for Relations We do not use the RelationIndex as we know much more about the relat...
std::string m_storeClustersName
Name of the collection to use for the PXDClusters.
void writeClusters(VxdID sensorID)
Write clusters to collection.
double m_cutSeed
Seed cut in sigma.
std::string m_relDigitTrueHitName
Name of the relation between PXDDigits and PXDTrueHits.
std::string m_relClusterMCParticleName
Name of the relation between PXDClusters and MCParticles.
RelationLookup m_mcRelation
Lookup table for PXDDigit->MCParticle relation.
std::unique_ptr< ClusterCache > m_cache
cache of the last seen clusters to speed up clustering
double m_cutAdjacent
Noise cut in sigma.
std::string m_relClusterTrueHitName
Name of the relation between PXDClusters and PXDTrueHits.
Low-level class to create/modify relations between StoreArrays.
Definition: RelationArray.h:62
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33
Abstract base class for different kinds of events.