Belle II Software  release-08-01-10
DATCONSVDClusterLoaderAndPreparer.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 #pragma once
9 
10 #include <tracking/trackFindingCDC/findlets/base/Findlet.h>
11 #include <framework/datastore/StoreArray.h>
12 
13 #include <string>
14 #include <vector>
15 
16 namespace Belle2 {
21  class ModuleParamList;
22  class SVDCluster;
23  class VxdID;
24 
31  TrackFindingCDC::Findlet<const SVDCluster, const SVDCluster, std::pair<VxdID, std::pair<long, long>>,
32  std::pair<VxdID, std::pair<long, long>>> {
35  std::pair<VxdID, std::pair<long, long>>>;
36 
37  public:
40 
42  void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) override;
43 
45  void initialize() override;
46 
49  void apply(const std::vector<SVDCluster>& uClusters, const std::vector<SVDCluster>& vClusters,
50  std::vector<std::pair<VxdID, std::pair<long, long>>>& uHits,
51  std::vector<std::pair<VxdID, std::pair<long, long>>>& vHits) override;
52 
53  private:
54  // Parameters
57 
59  std::array<uint, 8> m_nClusterPerLayer = {0};
60 
61  // ATTENTION: all the values below are hardcoded and taken from svd/data/SVD-Components.xml
63  const std::array<int, 4> m_const_SVDRadii = {38990, 80000, 104000, 135150};
65  const std::array<int, 4> m_const_RPhiShiftsOfLayers = { -4680, -10780, -11036, -19076};
67  const std::array<double, 4> m_const_InitialAngle = {(342.195 - 360.) / 180. * M_PI, 8. / 180. * M_PI, -8. / 180. * M_PI, -4. / 180. * M_PI};
69  const std::array<double, 4> m_const_AngleStep = {2. * M_PI / 7., M_PI / 5., M_PI / 6., M_PI / 8.};
71  const std::array<double, 4> m_const_CosSlantedAngles = {1, cos(0.207694180987), cos(0.279252680319), cos(0.368264472171)};
72 
74  const std::array<int, 2> m_const_ZShiftL3 = {92350, -32650};
76  const std::array<int, 3> m_const_ZShiftL4 = {149042, 24760, -100240};
78  const std::array<int, 4> m_const_ZShiftL5 = {233754, 110560, -14440, -139440};
80  const std::array<int, 5> m_const_ZShiftL6 = {303471, 182060, 57060, -67940, -192940};
81 
82  };
84 }
Findlet for loading SVDClusters that were created by the DATCONSVDClusterizer findlet and prepare the...
const std::array< int, 3 > m_const_ZShiftL4
shift along z of the L4 senosrs, in µn
uint m_param_maxClustersPerLayer
Cut value for aborting tracking if more than this number of clusters is found on one layer.
void initialize() override
Create the store arrays.
std::array< uint, 8 > m_nClusterPerLayer
array containing the number of clusters per layer. If this exceeds a cut value, tracking is aborted
const std::array< int, 2 > m_const_ZShiftL3
shift along z of the L3 senosrs, in µn
const std::array< double, 4 > m_const_AngleStep
angle difference between two consecutive ladders, in rad
void apply(const std::vector< SVDCluster > &uClusters, const std::vector< SVDCluster > &vClusters, std::vector< std::pair< VxdID, std::pair< long, long >>> &uHits, std::vector< std::pair< VxdID, std::pair< long, long >>> &vHits) override
Load the SVDClusters and create two vectors containing the hits prepared for intercept finding This f...
const std::array< int, 4 > m_const_RPhiShiftsOfLayers
shift in r-phi to create windmill structure, in µm
const std::array< double, 4 > m_const_InitialAngle
phi-value of the first ladder in each layer, i.e. sensors X.1.Y, in rad
const std::array< double, 4 > m_const_CosSlantedAngles
cosine values of the slanted sensors
DATCONSVDClusterLoaderAndPreparer()
Load clusters and prepare them for intercept finding.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the parameters of the sub findlets.
const std::array< int, 4 > m_const_ZShiftL5
shift along z of the L5 senosrs, in µn
const std::array< int, 5 > m_const_ZShiftL6
shift along z of the L6 senosrs, in µn
const std::array< int, 4 > m_const_SVDRadii
Radii of the SVD layers, in µm.
The Module parameter list class.
Interface for a minimal algorithm part that wants to expose some parameters to a module.
Definition: Findlet.h:26
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33
Abstract base class for different kinds of events.