Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-03 08:34:46

0001 // Created by Dmitry Romanov
0002 // Subject to the terms in the LICENSE file found in the top-level directory.
0003 //
0004 
0005 #pragma once
0006 
0007 #include <cstddef>
0008 
0009 #include <Acts/Definitions/Units.hpp>
0010 
0011 namespace eicrecon {
0012 
0013 struct OrthogonalTrackSeedingConfig {
0014 
0015   //////////////////////////////////////////////////////////////////////////
0016   /// SEED FINDER GENERAL PARAMETERS
0017   float rMax = 440. * Acts::UnitConstants::mm;   // max r to look for hits to compose seeds
0018   float rMin = 33. * Acts::UnitConstants::mm;    // min r to look for hits to compose seeds
0019   float zMax = 1700. * Acts::UnitConstants::mm;  // max z to look for hits to compose seeds
0020   float zMin = -1500. * Acts::UnitConstants::mm; // min z to look for hits to compose seeds
0021   float deltaRMinTopSP =
0022       10. * Acts::UnitConstants::mm; // Min distance in r between middle and top SP in one seed
0023   float deltaRMaxTopSP =
0024       450. * Acts::UnitConstants::mm; // Max distance in r between middle and top SP in one seed
0025   float deltaRMinBottomSP =
0026       10. * Acts::UnitConstants::mm; // Min distance in r between middle and bottom SP in one seed
0027   float deltaRMaxBottomSP =
0028       200. * Acts::UnitConstants::mm; // Max distance in r between middle and bottom SP in one seed
0029   float collisionRegionMin = -250 * Acts::UnitConstants::mm; // Min z for primary vertex
0030   float collisionRegionMax = 250 * Acts::UnitConstants::mm;  // Max z for primary vertex
0031 
0032   unsigned int maxSeedsPerSpM = 0; // max number of seeds a single middle sp can belong to - 1
0033   float cotThetaMax =
0034       1.0 / tan(2. * atan(exp(-4.0))); // Cotangent of max theta angle (based on eta)
0035 
0036   float sigmaScattering  = 5;   // How many standard devs of scattering angles to consider
0037   float radLengthPerSeed = 0.1; // Average radiation lengths of material on the length of a seed
0038   float minPt            = (100. * Acts::UnitConstants::MeV) /
0039                 cotThetaMax; // MeV (in Acts units of GeV) - minimum transverse momentum
0040   float bFieldInZ =
0041       1.7 * Acts::UnitConstants::T; // T (in Acts units of GeV/[e*mm]) - Magnetic field strength
0042   float beamPosX  = 0;              // x offset for beam position
0043   float beamPosY  = 0;              // y offset for beam position
0044   float impactMax = 3. * Acts::UnitConstants::mm; // Maximum transverse PCA allowed
0045   float rMinMiddle =
0046       20. * Acts::UnitConstants::mm; // Middle spacepoint must fall between these two radii
0047   float rMaxMiddle = 400. * Acts::UnitConstants::mm;
0048 
0049   float deltaPhiMax = 0.085; // Max difference in phi between middle and either top or bottom sp
0050 
0051   //////////////////////////////////////////////////////////////////////////
0052   /// SEED FILTER GENERAL PARAMETERS
0053   /// The parameters below control the process of filtering out seeds before
0054   /// sending them off to track reconstruction. These parameters first correspond
0055   /// to global settings (more loose) followed by more strict cuts for the central
0056   /// and forward/backward regions separately.
0057 
0058   float maxSeedsPerSpM_filter = 0; // max number of seeds a single middle sp can belong to - 1
0059   float deltaRMin             = 5 * Acts::UnitConstants::mm;
0060   bool seedConfirmation       = false;
0061   float deltaInvHelixDiameter = 0.00003 * 1. / Acts::UnitConstants::mm;
0062   float impactWeightFactor    = 1.;
0063   float zOriginWeightFactor   = 1.;
0064   float compatSeedWeight      = 200.;
0065   std::size_t compatSeedLimit = 2;
0066   float seedWeightIncrement   = 0;
0067 
0068   ///////////////////////////////////////
0069   /// CENTRAL SEED FILTER PARAMETERS
0070   float zMinSeedConfCentral            = -250 * Acts::UnitConstants::mm;
0071   float zMaxSeedConfCentral            = 250 * Acts::UnitConstants::mm;
0072   float rMaxSeedConfCentral            = 140 * Acts::UnitConstants::mm;
0073   std::size_t nTopForLargeRCentral     = 1;
0074   std::size_t nTopForSmallRCentral     = 2;
0075   float seedConfMinBottomRadiusCentral = 60.0 * Acts::UnitConstants::mm;
0076   float seedConfMaxZOriginCentral      = 150.0 * Acts::UnitConstants::mm;
0077   float minImpactSeedConfCentral       = 1.0 * Acts::UnitConstants::mm;
0078 
0079   ///////////////////////////////////////
0080   /// FORWARD / BACKWARD SEED FILTER PARAMETERS
0081   float zMinSeedConfForward            = -3000 * Acts::UnitConstants::mm;
0082   float zMaxSeedConfForward            = 3000 * Acts::UnitConstants::mm;
0083   float rMaxSeedConfForward            = 140 * Acts::UnitConstants::mm;
0084   std::size_t nTopForLargeRForward     = 1;
0085   std::size_t nTopForSmallRForward     = 2;
0086   float seedConfMinBottomRadiusForward = 60.0 * Acts::UnitConstants::mm;
0087   float seedConfMaxZOriginForward      = 150.0 * Acts::UnitConstants::mm;
0088   float minImpactSeedConfForward       = 1.0 * Acts::UnitConstants::mm;
0089 
0090   //////////////////////////////////////
0091   ///Seed Covariance Error Matrix
0092   float locaError   = 1.5 * Acts::UnitConstants::mm;    //Error on Loc a
0093   float locbError   = 1.5 * Acts::UnitConstants::mm;    //Error on Loc b
0094   float phiError    = 0.02 * Acts::UnitConstants::rad;  //Error on phi
0095   float thetaError  = 0.002 * Acts::UnitConstants::rad; //Error on theta
0096   float qOverPError = 0.025 / Acts::UnitConstants::GeV; //Error on q over p
0097   float timeError   = 0.1 * Acts::UnitConstants::mm;    //Error on time
0098   // Note: Acts native time units are mm: https://acts.readthedocs.io/en/latest/core/definitions/units.html
0099 };
0100 } // namespace eicrecon