Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:11:02

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 {
0022 
0023 template <typename T>
0024 class SeedFilter;
0025 
0026 template <typename SpacePoint>
0027 struct SeedFinderGbtsConfig {
0028   // // how many sigmas of scattering angle should be considered?
0029   float sigmaScattering = 5;
0030 
0031   // Seed cut
0032   float minPt = 400. * Acts::UnitConstants::MeV;
0033 
0034   ///////////some declared not filled in by reco: //////
0035   std::shared_ptr<Acts::SeedFilter<SpacePoint>> seedFilter;
0036 
0037   //   //detector ROI
0038   //   // derived values, set on SeedFinder construction
0039   float highland = 0;
0040   float maxScatteringAngle2 = 0;
0041   //   bool isInInternalUnits = false;
0042   /// for load space points
0043   unsigned int maxSeedsPerSpM = 5;
0044 
0045   // Parameter which can loosen the tolerance of the track seed to form a
0046   // helix. This is useful for e.g. misaligned seeding.
0047   float helixCutTolerance = 1.;
0048 
0049   float m_phiSliceWidth{};    // initialised in loadSpacePoints function
0050   float m_nMaxPhiSlice = 53;  // used to calculate phi slices
0051   bool m_useClusterWidth =
0052       false;  // bool for use of cluster width in loadSpacePoints function
0053   std::string connector_input_file;  // input file for connector object
0054   std::vector<TrigInDetSiLayer> m_layerGeometry;
0055 
0056   // for runGbts_TrackFinder
0057   bool m_LRTmode = true;  // eventually want to set from full chain
0058   bool m_useEtaBinning =
0059       true;  // bool to use eta binning from geometry structure
0060   bool m_doubletFilterRZ = true;  // bool applies new Z cuts on doublets
0061   float m_minDeltaRadius = 2.0;   // min dr for doublet
0062   float m_tripletD0Max = 4.0;     // D0 cut for triplets
0063   unsigned int m_maxTripletBufferLength =
0064       3;                        // maximum number of space points per triplet
0065   int MaxEdges = 2000000;       // max number of Gbts edges/doublets
0066   float cut_dphi_max = 0.012;   // phi cut for triplets
0067   float cut_dcurv_max = 0.001;  // curv cut for triplets
0068   float cut_tau_ratio_max = 0.007;  // tau cut for doublets and triplets
0069   float maxOuterRadius = 550.0;     // used to calculate Z cut on doublets
0070   float m_PtMin = 1000.0;
0071   float m_tripletPtMinFrac = 0.3;
0072   float m_tripletPtMin = m_PtMin * m_tripletPtMinFrac;  // Limit on triplet pt
0073   double ptCoeff =
0074       0.29997 * 1.9972 / 2.0;  // ~0.3*B/2 - assumes nominal field of 2*T
0075 
0076   // ROI:
0077   bool containsPhi() {
0078     return false;
0079     // need to implement this function
0080   }
0081 
0082   ////
0083   // 2 member functions
0084   SeedFinderGbtsConfig calculateDerivedQuantities() const {
0085     // thorw statement if the isInternalUnits member is false, ie if dont call
0086     // this function
0087     SeedFinderGbtsConfig config = *this;
0088     // use a formula to calculate scattering
0089 
0090     return config;
0091   }
0092 
0093   SeedFinderGbtsConfig toInternalUnits() const {
0094     // throw statement if the isInternalUnits member is false, ie if dont call
0095     // this function
0096     SeedFinderGbtsConfig config = *this;
0097     // divides inputs by 1mm, all ones input
0098     // changes member inInInternalUnits to true
0099     return config;
0100   }
0101 
0102 };  // end of config struct
0103 
0104 }  // namespace Acts