Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SeedFinderOrthogonalConfig.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SeedFinderOrthogonalConfig.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2022 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
14 
15 #include <memory>
16 
17 namespace Acts {
18 // forward declaration to avoid cyclic dependence
19 template <typename T>
20 class SeedFilter;
21 
22 template <typename SpacePoint>
24  std::shared_ptr<Acts::SeedFilter<SpacePoint>> seedFilter;
25 
26  // Seed Cuts
27  // lower cutoff for seeds
29  // cot of maximum theta angle
30  // equivalent to 2.7 eta (pseudorapidity)
31  float cotThetaMax = 7.40627;
32  // minimum distance in r between middle and top SP in one seed
34  // maximum distance in r between middle and top SP in one seed
36  // minimum distance in r between middle and bottom SP in one seed
38  // maximum distance in r between middle and bottom SP in one seed
40 
41  // impact parameter
43 
44  // how many sigmas of scattering angle should be considered?
45  float sigmaScattering = 5;
46  // Upper pt limit for scattering calculation
48 
49  // for how many seeds can one SpacePoint be the middle SpacePoint?
50  unsigned int maxSeedsPerSpM = 5;
51 
52  // Geometry Settings
53  // Detector ROI
54  // limiting location of collision region in z
57  float phiMin = -M_PI;
58  float phiMax = M_PI;
59  // limiting location of measurements
60  float zMin = -2800 * Acts::UnitConstants::mm;
61  float zMax = 2800 * Acts::UnitConstants::mm;
63  // WARNING: if rMin is smaller than impactMax, the bin size will be 2*pi,
64  // which will make seeding very slow!
66 
67  // z of last layers to avoid iterations
68  std::pair<float, float> zOutermostLayers{-2700 * Acts::UnitConstants::mm,
70 
71  // radial range for middle SP
72  // variable range based on SP radius
76  // range defined in vector for each z region
77  std::vector<std::vector<float>> rRangeMiddleSP;
78  // range defined by rMinMiddle and rMaxMiddle
81 
82  float deltaPhiMax = 0.085;
83 
84  // cut to the maximum value of delta z between SPs
85  float deltaZMax =
86  std::numeric_limits<float>::infinity() * Acts::UnitConstants::mm;
87 
88  // enable cut on the compatibility between interaction point and SPs
89  bool interactionPointCut = false;
90 
91  // seed confirmation
92  bool seedConfirmation = false;
93  // parameters for central seed confirmation
95  // parameters for forward seed confirmation
97 
98  // average radiation lengths of material on the length of a seed. used for
99  // scattering.
100  // default is 5%
101  // TODO: necessary to make amount of material dependent on detector region?
102  float radLengthPerSeed = 0.05;
103 
104  // derived values, set on SeedFinder construction
105  float highland = 0;
107 
108  bool isInInternalUnits = false;
109 
111  if (not isInInternalUnits) {
112  throw std::runtime_error(
113  "SeedFinderOrthogonalConfig not in ACTS internal units in "
114  "calculateDerivedQuantities");
115  }
117  // calculation of scattering using the highland formula
118  // convert pT to p once theta angle is known
119  config.highland = 13.6 * std::sqrt(radLengthPerSeed) *
120  (1 + 0.038 * std::log(radLengthPerSeed));
121  config.maxScatteringAngle2 = std::pow(config.highland / config.minPt, 2);
122  return config;
123  }
124 
126  if (isInInternalUnits) {
127  throw std::runtime_error(
128  "SeedFinderOrthogonalConfig already in ACTS internal units in "
129  "toInternalUnits");
130  }
131  using namespace Acts::UnitLiterals;
133  config.isInInternalUnits = true;
134  config.minPt /= 1_MeV;
135  config.deltaRMinTopSP /= 1_mm;
136  config.deltaRMaxTopSP /= 1_mm;
137  config.deltaRMinBottomSP /= 1_mm;
138  config.deltaRMaxBottomSP /= 1_mm;
139  config.impactMax /= 1_mm;
140  config.maxPtScattering /= 1_MeV;
141  config.collisionRegionMin /= 1_mm;
142  config.collisionRegionMax /= 1_mm;
143  config.zMin /= 1_mm;
144  config.zMax /= 1_mm;
145  config.rMax /= 1_mm;
146  config.rMin /= 1_mm;
147 
148  return config;
149  }
150 };
151 
152 } // namespace Acts