Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-11 07:49:55

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 // TODO: update to C++17 style
0012 
0013 #include "Acts/Definitions/Algebra.hpp"
0014 #include "Acts/Definitions/Units.hpp"
0015 #include "Acts/Seeding/GbtsBase.hpp"  //definition of Trigsispacepoint base and trigtriplets
0016 #include "Acts/Seeding/SeedConfirmationRangeConfig.hpp"
0017 
0018 #include <memory>
0019 
0020 // core algorithm so in acts namespace
0021 namespace Acts::Experimental {
0022 
0023 template <typename SpacePoint>
0024 struct SeedFinderGbtsConfig {
0025   // // how many sigmas of scattering angle should be considered?
0026   float sigmaScattering = 5;
0027 
0028   // Seed cut
0029   float minPt = 400. * Acts::UnitConstants::MeV;
0030 
0031   //   //detector ROI
0032   //   // derived values, set on SeedFinder construction
0033   float highland = 0;
0034   float maxScatteringAngle2 = 0;
0035   /// for load space points
0036 
0037   // Parameter which can loosen the tolerance of the track seed to form a
0038   // helix. This is useful for e.g. misaligned seeding.
0039   float helixCutTolerance = 1.;
0040 
0041   float m_phiSliceWidth{};    // initialised in loadSpacePoints function
0042   float m_nMaxPhiSlice = 53;  // used to calculate phi slices
0043   bool m_useClusterWidth =
0044       false;  // bool for use of cluster width in loadSpacePoints function
0045   std::string ConnectorInputFile;  // Path to the connector configuration file
0046                                    // that defines the layer connections
0047   std::vector<TrigInDetSiLayer> m_layerGeometry;
0048 
0049   // for runGbts_TrackFinder
0050   bool m_useEtaBinning =
0051       true;  // bool to use eta binning from geometry structure
0052   bool m_doubletFilterRZ = true;  // bool applies new Z cuts on doublets
0053   float m_minDeltaRadius = 2.0;   // min dr for doublet
0054   float m_tripletD0Max = 4.0;     // D0 cut for triplets
0055   unsigned int m_maxTripletBufferLength =
0056       3;                        // maximum number of space points per triplet
0057   int MaxEdges = 2000000;       // max number of Gbts edges/doublets
0058   float cut_dphi_max = 0.012;   // phi cut for triplets
0059   float cut_dcurv_max = 0.001;  // curv cut for triplets
0060   float cut_tau_ratio_max = 0.007;  // tau cut for doublets and triplets
0061   float maxOuterRadius = 550.0;     // used to calculate Z cut on doublets
0062   float m_PtMin = 1000.0;
0063   float m_tripletPtMinFrac = 0.3;
0064   float m_tripletPtMin = m_PtMin * m_tripletPtMinFrac;  // Limit on triplet pt
0065   double ptCoeff =
0066       0.29997 * 1.9972 / 2.0;  // ~0.3*B/2 - assumes nominal field of 2*T
0067 
0068   // ROI:
0069   bool containsPhi() {
0070     return false;
0071     // need to implement this function
0072   }
0073 
0074   ////
0075   // 2 member functions
0076   SeedFinderGbtsConfig calculateDerivedQuantities() const {
0077     // thorw statement if the isInternalUnits member is false, ie if dont call
0078     // this function
0079     SeedFinderGbtsConfig config = *this;
0080     // use a formula to calculate scattering
0081 
0082     return config;
0083   }
0084 
0085   SeedFinderGbtsConfig toInternalUnits() const {
0086     // throw statement if the isInternalUnits member is false, ie if dont call
0087     // this function
0088     SeedFinderGbtsConfig config = *this;
0089     // divides inputs by 1mm, all ones input
0090     // changes member inInInternalUnits to true
0091     return config;
0092   }
0093 
0094 };  // end of config struct
0095 
0096 }  // namespace Acts::Experimental