Skip to content
Snippets Groups Projects
Select Git revision
  • 429452b9b8eb3580995f7605a5ada2f99d2c368b
  • master default protected
  • nightly_master
  • jul25_patches
  • cleanup_rich_v25a
  • jul24_patches
  • nov23_patches
  • DC_2404
  • nighly_master
  • DC_Jan24
  • DC_Nov23
  • DC_Oct23
  • feb23_patches
  • L1Algo-dev9
  • dec21_patches protected
  • apr21_patches protected
  • dev_2025_34
  • dev_2025_33
  • dev_2025_32
  • dev_2025_31
  • dev_2025_30
  • RC_jul25
  • dev_2025_29
  • dev_2025_28
  • dev_2025_27
  • dev_2025_26
  • dev_2025_25
  • dev_2025_24
  • dev_2025_23
  • dev_2025_22
  • dev_2025_21
  • dev_2025_20
  • dev_2025_19
  • dev_2025_18
  • dev_2025_17
  • dev_2025_16
36 results

CbmTrdTrackingInterface.cxx

Blame
  • CbmTrdTrackingInterface.cxx 6.71 KiB
    /* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
       SPDX-License-Identifier: GPL-3.0-only
       Authors: Sergey Gorbunov, Sergei Zharko [committer] */
    
    /***************************************************************************************************
     * @file   CbmTrdTrackingInterface.cxx
     * @brief  Input data and parameters interface from TRD subsystem used in L1 tracker (definition)
     * @since  31.05.2022
     * @author S.Zharko <s.zharko@gsi.de>
     ***************************************************************************************************/
    
    #include "CbmTrdTrackingInterface.h"
    
    #include "CbmTrdHit.h"
    #include "FairDetector.h"
    #include "FairRunAna.h"
    #include "TGeoManager.h"
    #include "TString.h"
    
    #include <Logger.h>
    
    #include <regex>
    
    ClassImp(CbmTrdTrackingInterface)
    
      // ---------------------------------------------------------------------------------------------------------------------
      //
      CbmTrdTrackingInterface::CbmTrdTrackingInterface()
      : FairTask("CbmTrdTrackingInterface")
    {
      if (!fpInstance) { fpInstance = this; }
    }
    
    // ---------------------------------------------------------------------------------------------------------------------
    //
    CbmTrdTrackingInterface::~CbmTrdTrackingInterface()
    {
      if (fpInstance == this) { fpInstance = nullptr; }
    }
    
    // ---------------------------------------------------------------------------------------------------------------------
    //
    std::tuple<double, double> CbmTrdTrackingInterface::GetStereoAnglesSensor(int address) const
    {
      const CbmTrdParModDigi* par = dynamic_cast<const CbmTrdParModDigi*>(fTrdDigiPar->GetModulePar(address));
      if (!par) {
        LOG(fatal) << "CbmTrdTrackingInterface::Init: error accessing the TRD module for address " << address
                   << " (failed dynamic cast to CbmTrdParModDigi)";
      }
      if ((par->GetOrientation() == 1) || (par->GetOrientation() == 3)) {
        // swap X & Y for orientations 1 or 3
        return std::tuple(TMath::Pi() / 2., 0.);
      }
      return std::tuple(0., TMath::Pi() / 2.);
    }
    
    // ---------------------------------------------------------------------------------------------------------------------
    //
    std::tuple<double, double, double> CbmTrdTrackingInterface::GetHitRanges(const CbmPixelHit& hit) const
    {
      const CbmTrdHit* trdHit = dynamic_cast<const CbmTrdHit*>(&hit);
      if (!trdHit) { LOG(fatal) << "CbmTrdTrackingInterface::GetHitRange: input hit is not of type CbmTrdHit"; }
      const CbmTrdParModDigi* par = dynamic_cast<const CbmTrdParModDigi*>(fTrdDigiPar->GetModulePar(trdHit->GetAddress()));
    
      auto [rangeX, rangeY, rangeT] = CbmTrackingDetectorInterfaceBase::GetHitRanges(hit);
    
      if (trdHit->GetClassType() == 1) {
        // TRD 2D hit
        // TODO: replace with more sophisticated values once the errors are correct
        rangeX = 1.7;